📄 cc2420.lst
字号:
1 .file "cc2420.c"
2 .arch atmega128
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
119 .global frst
120 .data
123 frst:
124 0000 01 .byte 1
125 .global trd
126 .global trd
127 .section .bss
130 trd:
131 0000 00 .skip 1,0
132 .global scd
133 .global scd
136 scd:
137 0001 00 .skip 1,0
138 .global paktnum
139 .global paktnum
142 paktnum:
143 0002 0000 .skip 2,0
144 .text
146 .global cc2420_pin_init
148 cc2420_pin_init:
1:cc2420.c **** //----------------------------------------------------//
2:cc2420.c **** //-------Institute Of Computing Technology-----------//
3:cc2420.c **** //------------Chinese Academic Science---------------//
4:cc2420.c **** //-----中国科学院计算技术研究所先进测试技术实验室-----//
5:cc2420.c **** //----------------------------------------------------//
6:cc2420.c ****
7:cc2420.c **** /**
8:cc2420.c **** * www.wsn.net.cn
9:cc2420.c **** * @copyright:nbicc_lpp
10:cc2420.c **** * @data:2005.11.22
11:cc2420.c **** * @version:0.0.1
12:cc2420.c **** * @updata:$
13:cc2420.c **** *
14:cc2420.c **** */
15:cc2420.c **** #include "cc2420.h"
16:cc2420.c **** //send
17:cc2420.c **** uint16_t paktnum=0;
18:cc2420.c **** bool scd=0,trd=0,frst=1;
19:cc2420.c **** //------------------------------HPL----------------------------------------------------------------
20:cc2420.c **** inline uint8_t cc2420_pin_init(void)
21:cc2420.c **** {
150 .LM1:
151 /* prologue: frame size=0 */
152 /* prologue end (size=0) */
22:cc2420.c ****
23:cc2420.c **** cc2420_bramspi = TRUE;
154 .LM2:
155 0000 81E0 ldi r24,lo8(1)
156 0002 8093 0000 sts cc2420_bramspi,r24
24:cc2420.c **** OS_MAKE_MISO_INPUT();
158 .LM3:
159 0006 0E94 0000 call OS_MAKE_MISO_INPUT
25:cc2420.c **** OS_MAKE_MOSI_OUTPUT();
161 .LM4:
162 000a 0E94 0000 call OS_MAKE_MOSI_OUTPUT
26:cc2420.c **** OS_MAKE_SPI_SCK_OUTPUT();
164 .LM5:
165 000e 0E94 0000 call OS_MAKE_SPI_SCK_OUTPUT
27:cc2420.c **** OS_MAKE_CC_RSTN_OUTPUT();
167 .LM6:
168 0012 0E94 0000 call OS_MAKE_CC_RSTN_OUTPUT
28:cc2420.c **** OS_MAKE_CC_VREN_OUTPUT();
170 .LM7:
171 0016 0E94 0000 call OS_MAKE_CC_VREN_OUTPUT
29:cc2420.c **** OS_MAKE_CC_CS_OUTPUT();
173 .LM8:
174 001a 0E94 0000 call OS_MAKE_CC_CS_OUTPUT
30:cc2420.c **** OS_MAKE_CC_FIFOP1_INPUT();
176 .LM9:
177 001e 0E94 0000 call OS_MAKE_CC_FIFOP1_INPUT
31:cc2420.c **** OS_MAKE_CC_CCA_INPUT();
179 .LM10:
180 0022 0E94 0000 call OS_MAKE_CC_CCA_INPUT
32:cc2420.c **** OS_MAKE_CC_SFD_INPUT();
182 .LM11:
183 0026 0E94 0000 call OS_MAKE_CC_SFD_INPUT
33:cc2420.c **** OS_MAKE_CC_FIFO_INPUT();
185 .LM12:
186 002a 0E94 0000 call OS_MAKE_CC_FIFO_INPUT
34:cc2420.c ****
35:cc2420.c **** return SUCCESS;
36:cc2420.c **** }
188 .LM13:
189 002e 81E0 ldi r24,lo8(1)
190 0030 90E0 ldi r25,hi8(1)
191 /* epilogue: frame size=0 */
192 0032 0895 ret
193 /* epilogue end (size=1) */
194 /* function cc2420_pin_init size 26 (25) */
197 .global cc2420_reginit
199 cc2420_reginit:
37:cc2420.c ****
38:cc2420.c **** inline static uint8_t SPI_init(void)
39:cc2420.c **** {
40:cc2420.c **** { os_atomic_t _nesc_atomic = os_atomic_start();
41:cc2420.c **** {
42:cc2420.c **** OS_MAKE_SPI_SCK_OUTPUT();
43:cc2420.c **** OS_MAKE_MISO_INPUT();
44:cc2420.c **** OS_MAKE_MOSI_OUTPUT();
45:cc2420.c **** SPSR |= 1 << 0;//SPI STATE
46:cc2420.c **** SPCR |= 1 << 4;
47:cc2420.c **** SPCR &= ~(1 << 3);
48:cc2420.c **** SPCR &= ~(1 << 2);
49:cc2420.c **** SPCR &= ~(1 << 1);
50:cc2420.c **** SPCR &= ~(1 << 0);
51:cc2420.c **** SPCR |= 1 << 6;
52:cc2420.c **** }
53:cc2420.c **** os_atomic_end(_nesc_atomic); }
54:cc2420.c **** return SUCCESS;
55:cc2420.c **** }
56:cc2420.c ****
57:cc2420.c **** inline uint8_t cc2420_reginit(void)
58:cc2420.c **** {
201 .LM14:
202 /* prologue: frame size=0 */
203 /* prologue end (size=0) */
59:cc2420.c ****
60:cc2420.c **** // Set default parameters
61:cc2420.c **** cc2420_currentparameters[CP_MAIN] = 0xf800;
205 .LM15:
206 0034 80E0 ldi r24,lo8(-2048)
207 0036 98EF ldi r25,hi8(-2048)
208 0038 9093 0000 sts (cc2420_currentparameters)+1,r25
209 003c 8093 0000 sts cc2420_currentparameters,r24
62:cc2420.c **** cc2420_currentparameters[CP_MDMCTRL0] = ((0 << cc2420_MDMCTRL0_PANCRD) |(0 << cc2420_MDMCTRL0_ADR
211 .LM16:
212 0040 82EE ldi r24,lo8(738)
213 0042 92E0 ldi r25,hi8(738)
214 0044 9093 0000 sts (cc2420_currentparameters+2)+1,r25
215 0048 8093 0000 sts cc2420_currentparameters+2,r24
63:cc2420.c **** (2 << cc2420_MDMCTRL0_CCAHIST) | (3 << cc2420_MDMCTRL0_CCAMODE) | //cca mode is 3
64:cc2420.c **** (1 << cc2420_MDMCTRL0_AUTOCRC) | (2 << cc2420_MDMCTRL0_PREAMBL)); //auto crc is set
65:cc2420.c ****
66:cc2420.c **** cc2420_currentparameters[CP_MDMCTRL1] = 20 << cc2420_MDMCTRL1_CORRTHRESH;//default
217 .LM17:
218 004c 80E0 ldi r24,lo8(1280)
219 004e 95E0 ldi r25,hi8(1280)
220 0050 9093 0000 sts (cc2420_currentparameters+4)+1,r25
221 0054 8093 0000 sts cc2420_currentparameters+4,r24
67:cc2420.c **** cc2420_currentparameters[CP_RSSI] = 0xE080;//default
223 .LM18:
224 0058 80E8 ldi r24,lo8(-8064)
225 005a 90EE ldi r25,hi8(-8064)
226 005c 9093 0000 sts (cc2420_currentparameters+6)+1,r25
227 0060 8093 0000 sts cc2420_currentparameters+6,r24
68:cc2420.c **** cc2420_currentparameters[CP_SYNCWORD] = 0xA70F;
229 .LM19:
230 0064 8FE0 ldi r24,lo8(-22769)
231 0066 97EA ldi r25,hi8(-22769)
232 0068 9093 0000 sts (cc2420_currentparameters+8)+1,r25
233 006c 8093 0000 sts cc2420_currentparameters+8,r24
69:cc2420.c **** cc2420_currentparameters[CP_TXCTRL] = ((1 << cc2420_TXCTRL_BUFCUR) | //default is 2-1.16ma,now is
235 .LM20:
236 0070 8FEF ldi r24,lo8(24831)
237 0072 90E6 ldi r25,hi8(24831)
238 0074 9093 0000 sts (cc2420_currentparameters+10)+1,r25
239 0078 8093 0000 sts cc2420_currentparameters+10,r24
70:cc2420.c **** (1 << cc2420_TXCTRL_TURNARND) | (3 << cc2420_TXCTRL_PACUR) | //default ,turnaround time is 1
71:cc2420.c **** (1 << cc2420_TXCTRL_PADIFF) | (0x1f << cc2420_TXCTRL_PAPWR));//default
72:cc2420.c **** cc2420_currentparameters[CP_RXCTRL0] = ((1 << cc2420_RXCTRL0_BUFCUR) | //default is 980ua
241 .LM21:
242 007c 85EE ldi r24,lo8(4837)
243 007e 92E1 ldi r25,hi8(4837)
244 0080 9093 0000 sts (cc2420_currentparameters+12)+1,r25
245 0084 8093 0000 sts cc2420_currentparameters+12,r24
73:cc2420.c **** (2 << cc2420_RXCTRL0_MLNAG) | (3 << cc2420_RXCTRL0_LOLNAG) |
74:cc2420.c **** (2 << cc2420_RXCTRL0_HICUR) | (1 << cc2420_RXCTRL0_MCUR) |
75:cc2420.c **** (1 << cc2420_RXCTRL0_LOCUR));//default
76:cc2420.c **** cc2420_currentparameters[CP_RXCTRL1] = ((1 << cc2420_RXCTRL1_LOLOGAIN) | (1 << cc2420_RXCTRL1_H
247 .LM22:
248 0088 86E5 ldi r24,lo8(2646)
249 008a 9AE0 ldi r25,hi8(2646)
250 008c 9093 0000 sts (cc2420_currentparameters+14)+1,r25
251 0090 8093 0000 sts cc2420_currentparameters+14,r24
77:cc2420.c **** (1 << cc2420_RXCTRL1_LNACAP) | (1 << cc2420_RXCTRL1_RMIXT
78:cc2420.c **** (1 << cc2420_RXCTRL1_RMIXV) | (2 << cc2420_RXCTRL1_RMIXCUR ) );//default
79:cc2420.c ****
80:cc2420.c **** cc2420_currentparameters[CP_FSCTRL] = ((1 << cc2420_FSCTRL_LOCK) | ((357+5*(cc2420_DEF_CH
253 .LM23:
254 0094 85E6 ldi r24,lo8(16741)
255 0096 91E4 ldi r25,hi8(16741)
256 0098 9093 0000 sts (cc2420_currentparameters+16)+1,r25
257 009c 8093 0000 sts cc2420_currentparameters+16,r24
81:cc2420.c **** cc2420_currentparameters[CP_SECCTRL0] = ((0 << cc2420_SECCTRL0_PROTECT) |(1 << cc2420_SECCTRL0_CBC
259 .LM24:
260 00a0 84EC ldi r24,lo8(452)
261 00a2 91E0 ldi r25,hi8(452)
262 00a4 9093 0000 sts (cc2420_currentparameters+18)+1,r25
263 00a8 8093 0000 sts cc2420_currentparameters+18,r24
82:cc2420.c **** (1 << cc2420_SECCTRL0_SAKEYSEL) | (1 << cc2420_SECCTRL0_TXKEYS
83:cc2420.c **** (1 << cc2420_SECCTRL0_SECM ) );//disable the security
84:cc2420.c **** cc2420_currentparameters[CP_SECCTRL1] = 0;
265 .LM25:
266 00ac 1092 0000 sts (cc2420_currentparameters+20)+1,__zero_reg__
267 00b0 1092 0000 sts cc2420_currentparameters+20,__zero_reg__
85:cc2420.c **** cc2420_currentparameters[CP_BATTMON] = 0;//battery monitor is disable
269 .LM26:
270 00b4 1092 0000 sts (cc2420_currentparameters+22)+1,__zero_reg__
271 00b8 1092 0000 sts cc2420_currentparameters+22,__zero_reg__
86:cc2420.c **** //cc2420_currentparameters[CP_IOCFG0] = (((TOSH_DATA_LENGTH + 2) << cc2420_IOCFG0_FIFOTHR) |
87:cc2420.c **** //set fifop threshold to greater than size of msg, fifop goes active at end of msg
88:cc2420.c **** cc2420_currentparameters[CP_IOCFG0] = (((127) << cc2420_IOCFG0_FIFOTHR) | (1 <<cc2420_IOCFG0_FIF
273 .LM27:
274 00bc 8FE7 ldi r24,lo8(639)
275 00be 92E0 ldi r25,hi8(639)
276 00c0 9093 0000 sts (cc2420_currentparameters+24)+1,r25
277 00c4 8093 0000 sts cc2420_currentparameters+24,r24
89:cc2420.c **** cc2420_currentparameters[CP_IOCFG1] = 0;
279 .LM28:
280 00c8 1092 0000 sts (cc2420_currentparameters+26)+1,__zero_reg__
281 00cc 1092 0000 sts cc2420_currentparameters+26,__zero_reg__
90:cc2420.c **** return SUCCESS;
91:cc2420.c ****
92:cc2420.c **** }
283 .LM29:
284 00d0 81E0 ldi r24,lo8(1)
285 00d2 90E0 ldi r25,hi8(1)
286 /* epilogue: frame size=0 */
287 00d4 0895 ret
288 /* epilogue end (size=1) */
289 /* function cc2420_reginit size 81 (80) */
292 .global cc2420_enablefifop
294 cc2420_enablefifop:
93:cc2420.c ****
94:cc2420.c **** //---------------------------------------------------------设置cc2420寄存器的值
95:cc2420.c **** bool cc2420_setreg(void)
96:cc2420.c ****
97:cc2420.c **** {
98:cc2420.c **** uint16_t data;
99:cc2420.c ****
100:cc2420.c **** cc2420_writereg(cc2420_MAIN, cc2420_currentparameters[CP_MAIN]);
101:cc2420.c **** cc2420_writereg(cc2420_MDMCTRL0, cc2420_currentparameters[CP_MDMCTRL0]);
102:cc2420.c **** data = cc2420_readreg(cc2420_MDMCTRL0);
103:cc2420.c **** if (data != cc2420_currentparameters[CP_MDMCTRL0]) {
104:cc2420.c **** printf("reginit is unsuccess\n");
105:cc2420.c **** return FALSE;
106:cc2420.c **** }
107:cc2420.c **** cc2420_writereg(cc2420_MDMCTRL1, cc2420_currentparameters[CP_MDMCTRL1]);
108:cc2420.c **** cc2420_writereg(cc2420_RSSI, cc2420_currentparameters[CP_RSSI]);
109:cc2420.c **** cc2420_writereg(cc2420_SYNCWORD, cc2420_currentparameters[CP_SYNCWORD]);
110:cc2420.c **** cc2420_writereg(cc2420_TXCTRL, cc2420_currentparameters[CP_TXCTRL]);
111:cc2420.c **** cc2420_writereg(cc2420_RXCTRL0, cc2420_currentparameters[CP_RXCTRL0]);
112:cc2420.c **** cc2420_writereg(cc2420_RXCTRL1, cc2420_currentparameters[CP_RXCTRL1]);
113:cc2420.c **** cc2420_writereg(cc2420_FSCTRL, cc2420_currentparameters[CP_FSCTRL]);
114:cc2420.c ****
115:cc2420.c **** cc2420_writereg(cc2420_SECCTRL0, cc2420_currentparameters[CP_SECCTRL0]);
116:cc2420.c **** cc2420_writereg(cc2420_SECCTRL1, cc2420_currentparameters[CP_SECCTRL1]);
117:cc2420.c **** cc2420_writereg(cc2420_IOCFG0, cc2420_currentparameters[CP_IOCFG0]);
118:cc2420.c **** cc2420_writereg(cc2420_IOCFG1, cc2420_currentparameters[CP_IOCFG1]);
119:cc2420.c ****
120:cc2420.c **** cc2420_sendcmd(cc2420_SFLUSHTX);
121:cc2420.c **** cc2420_sendcmd(cc2420_SFLUSHRX);
122:cc2420.c **** printf("reginit is success\n");
123:cc2420.c **** return TRUE;
124:cc2420.c **** }
125:cc2420.c ****
126:cc2420.c **** //----------------------------------------------------------------FIFOP中断处理中转fifop的中断响应
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -