Go to most recent revision | Blame | Last modification | View Log | RSS feed
1 .file "spi.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __CCP__ = 0x34
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .text
9 .global SPI_MasterInit
11 SPI_MasterInit:
12 /* prologue: function */
13 /* frame size = 0 */
14 0000 84B1 in r24,36-32
15 0002 806A ori r24,lo8(-96)
16 0004 84B9 out 36-32,r24
17 0006 3D9A sbi 39-32,5
18 0008 82E5 ldi r24,lo8(82)
19 000a 8CBD out 76-32,r24
20 000c 1DBC out 77-32,__zero_reg__
21 000e 459A sbi 40-32,5
22 0010 80E0 ldi r24,lo8(ToNaviCtrl)
23 0012 90E0 ldi r25,hi8(ToNaviCtrl)
24 0014 9093 0000 sts (SPI_TxBuffer)+1,r25
25 0018 8093 0000 sts SPI_TxBuffer,r24
26 001c 81E0 ldi r24,lo8(1)
27 001e 8093 0000 sts SPITransferCompleted,r24
28 0022 8AEA ldi r24,lo8(-86)
29 0024 8093 0000 sts ToNaviCtrl,r24
30 0028 83E8 ldi r24,lo8(-125)
31 002a 8093 0000 sts ToNaviCtrl+1,r24
32 002e 9AE0 ldi r25,lo8(10)
33 0030 9093 0000 sts ToNaviCtrl+2,r25
34 0034 1092 0000 sts (ToNaviCtrl+3)+1,__zero_reg__
35 0038 1092 0000 sts ToNaviCtrl+3,__zero_reg__
36 003c 1092 0000 sts (ToNaviCtrl+5)+1,__zero_reg__
37 0040 1092 0000 sts ToNaviCtrl+5,__zero_reg__
38 0044 1092 0000 sts NCSerialDataOkay,__zero_reg__
39 0048 1092 0000 sts NCDataOkay,__zero_reg__
40 004c 1092 0000 sts SPI_RxDataValid,__zero_reg__
41 0050 1092 0000 sts SPI_VersionInfo,__zero_reg__
42 0054 8CE4 ldi r24,lo8(76)
43 0056 8093 0000 sts SPI_VersionInfo+1,r24
44 005a 86E0 ldi r24,lo8(6)
45 005c 8093 0000 sts SPI_VersionInfo+2,r24
46 0060 9093 0000 sts SPI_VersionInfo+3,r25
47 /* epilogue start */
48 0064 0895 ret
50 .global SPI_TransmitByte
52 SPI_TransmitByte:
53 /* prologue: function */
54 /* frame size = 0 */
55 0066 8091 0000 lds r24,SPITransferCompleted
56 006a 8823 tst r24
57 006c 01F4 brne .L15
58 006e 0DB4 in __tmp_reg__,77-32
59 0070 07FE sbrs __tmp_reg__,7
60 .L15:
61 0072 0895 ret
62 .L18:
63 0074 84E0 ldi r24,lo8(4)
64 0076 8093 0000 sts SendSPI,r24
65 007a 459A sbi 40-32,5
66 007c 9EB5 in r25,78-32
67 007e 8091 0000 lds r24,SPI_RXState.2020
68 0082 8130 cpi r24,lo8(1)
69 0084 01F4 brne .+2
70 0086 00C0 rjmp .L7
71 0088 8130 cpi r24,lo8(1)
72 008a 00F0 brlo .+2
73 008c 00C0 rjmp .L19
74 008e 1092 0000 sts SPI_RxBufferIndex,__zero_reg__
75 0092 9093 0000 sts rxchksum.2022,r25
76 0096 9138 cpi r25,lo8(-127)
77 0098 01F4 brne .+2
78 009a 00C0 rjmp .L20
79 .L5:
80 009c 2091 0000 lds r18,SPI_TxBufferIndex
81 00a0 2032 cpi r18,lo8(32)
82 00a2 00F0 brlo .L21
83 00a4 81E0 ldi r24,lo8(1)
84 00a6 8093 0000 sts SPITransferCompleted,r24
85 00aa 0895 ret
86 .L21:
87 00ac 4598 cbi 40-32,5
88 /* #APP */
89 ; 460 "spi.c" 1
90 00ae 0000 nop
91 ; 0 "" 2
92 ; 460 "spi.c" 1
93 00b0 0000 nop
94 ; 0 "" 2
95 ; 460 "spi.c" 1
96 00b2 0000 nop
97 ; 0 "" 2
98 ; 460 "spi.c" 1
99 00b4 0000 nop
100 ; 0 "" 2
101 ; 460 "spi.c" 1
102 00b6 0000 nop
103 ; 0 "" 2
104 ; 460 "spi.c" 1
105 00b8 0000 nop
106 ; 0 "" 2
107 ; 460 "spi.c" 1
108 00ba 0000 nop
109 ; 0 "" 2
110 ; 460 "spi.c" 1
111 00bc 0000 nop
112 ; 0 "" 2
113 ; 461 "spi.c" 1
114 00be 0000 nop
115 ; 0 "" 2
116 ; 461 "spi.c" 1
117 00c0 0000 nop
118 ; 0 "" 2
119 ; 461 "spi.c" 1
120 00c2 0000 nop
121 ; 0 "" 2
122 ; 461 "spi.c" 1
123 00c4 0000 nop
124 ; 0 "" 2
125 ; 461 "spi.c" 1
126 00c6 0000 nop
127 ; 0 "" 2
128 ; 461 "spi.c" 1
129 00c8 0000 nop
130 ; 0 "" 2
131 ; 461 "spi.c" 1
132 00ca 0000 nop
133 ; 0 "" 2
134 ; 461 "spi.c" 1
135 00cc 0000 nop
136 ; 0 "" 2
137 ; 462 "spi.c" 1
138 00ce 0000 nop
139 ; 0 "" 2
140 ; 462 "spi.c" 1
141 00d0 0000 nop
142 ; 0 "" 2
143 ; 462 "spi.c" 1
144 00d2 0000 nop
145 ; 0 "" 2
146 ; 462 "spi.c" 1
147 00d4 0000 nop
148 ; 0 "" 2
149 ; 462 "spi.c" 1
150 00d6 0000 nop
151 ; 0 "" 2
152 ; 462 "spi.c" 1
153 00d8 0000 nop
154 ; 0 "" 2
155 ; 462 "spi.c" 1
156 00da 0000 nop
157 ; 0 "" 2
158 ; 462 "spi.c" 1
159 00dc 0000 nop
160 ; 0 "" 2
161 /* #NOAPP */
162 00de E091 0000 lds r30,SPI_TxBuffer
163 00e2 F091 0000 lds r31,(SPI_TxBuffer)+1
164 00e6 E20F add r30,r18
165 00e8 F11D adc r31,__zero_reg__
166 00ea 8081 ld r24,Z
167 00ec 8EBD out 78-32,r24
168 00ee 9091 0000 lds r25,ToNaviCtrl+31
169 00f2 890F add r24,r25
170 00f4 8093 0000 sts ToNaviCtrl+31,r24
171 00f8 2F5F subi r18,lo8(-(1))
172 00fa 2093 0000 sts SPI_TxBufferIndex,r18
173 00fe 0895 ret
174 .L19:
175 0100 8230 cpi r24,lo8(2)
176 0102 01F0 breq .+2
177 0104 00C0 rjmp .L5
178 0106 8091 0000 lds r24,SPI_RxBufferIndex
179 010a E82F mov r30,r24
180 010c F0E0 ldi r31,lo8(0)
181 010e E050 subi r30,lo8(-(SPI_RxBuffer))
182 0110 F040 sbci r31,hi8(-(SPI_RxBuffer))
183 0112 9083 st Z,r25
184 0114 8F5F subi r24,lo8(-(1))
185 0116 8093 0000 sts SPI_RxBufferIndex,r24
186 011a 8A31 cpi r24,lo8(26)
187 011c 00F0 brlo .L10
188 011e 8091 0000 lds r24,rxchksum.2022
189 0122 9817 cp r25,r24
190 0124 01F0 breq .L22
191 0126 1092 0000 sts SPI_RxDataValid,__zero_reg__
192 .L13:
193 012a 1092 0000 sts SPI_RXState.2020,__zero_reg__
194 012e 00C0 rjmp .L5
195 .L20:
196 0130 81E0 ldi r24,lo8(1)
197 0132 8093 0000 sts SPI_RXState.2020,r24
198 0136 00C0 rjmp .L5
199 .L7:
200 0138 9535 cpi r25,lo8(85)
201 013a 01F4 brne .L13
202 013c 8091 0000 lds r24,rxchksum.2022
203 0140 8B5A subi r24,lo8(-(85))
204 0142 8093 0000 sts rxchksum.2022,r24
205 0146 82E0 ldi r24,lo8(2)
206 0148 8093 0000 sts SPI_RXState.2020,r24
207 014c 00C0 rjmp .L5
208 .L10:
209 014e 8091 0000 lds r24,rxchksum.2022
210 0152 890F add r24,r25
211 0154 8093 0000 sts rxchksum.2022,r24
212 0158 00C0 rjmp .L5
213 .L22:
214 /* #APP */
215 ; 436 "spi.c" 1
216 015a F894 cli
217 ; 0 "" 2
218 /* #NOAPP */
219 015c A0E0 ldi r26,lo8(FromNaviCtrl)
220 015e B0E0 ldi r27,hi8(FromNaviCtrl)
221 0160 E0E0 ldi r30,lo8(SPI_RxBuffer)
222 0162 F0E0 ldi r31,hi8(SPI_RxBuffer)
223 0164 8AE1 ldi r24,lo8(26)
224 .L12:
225 0166 0190 ld r0,Z+
226 0168 0D92 st X+,r0
227 016a 8150 subi r24,lo8(-(-1))
228 016c 01F4 brne .L12
229 /* #APP */
230 ; 438 "spi.c" 1
231 016e 7894 sei
232 ; 0 "" 2
233 /* #NOAPP */
234 0170 81E0 ldi r24,lo8(1)
235 0172 8093 0000 sts SPI_RxDataValid,r24
236 0176 00C0 rjmp .L13
238 .global UpdateSPI_Buffer
240 UpdateSPI_Buffer:
241 0178 EF92 push r14
242 017a FF92 push r15
243 017c 0F93 push r16
244 017e 1F93 push r17
245 /* prologue: function */
246 /* frame size = 0 */
247 0180 E090 0000 lds r14,ParamSet+23
248 0184 8AE2 ldi r24,lo8(42)
249 0186 E89E mul r14,r24
250 0188 7001 movw r14,r0
251 018a 1124 clr r1
252 018c 0027 clr r16
253 018e F7FC sbrc r15,7
254 0190 0095 com r16
255 0192 102F mov r17,r16
256 0194 6091 0000 lds r22,IntegralGyroNick
257 0198 7091 0000 lds r23,(IntegralGyroNick)+1
258 019c 8091 0000 lds r24,(IntegralGyroNick)+2
259 01a0 9091 0000 lds r25,(IntegralGyroNick)+3
260 01a4 2AE0 ldi r18,lo8(10)
261 01a6 30E0 ldi r19,hi8(10)
262 01a8 40E0 ldi r20,hlo8(10)
263 01aa 50E0 ldi r21,hhi8(10)
264 01ac 0E94 0000 call __mulsi3
265 01b0 A801 movw r20,r16
266 01b2 9701 movw r18,r14
267 01b4 0E94 0000 call __divmodsi4
268 01b8 3093 0000 sts (ToNaviCtrl+3)+1,r19
269 01bc 2093 0000 sts ToNaviCtrl+3,r18
270 01c0 6091 0000 lds r22,IntegralGyroRoll
271 01c4 7091 0000 lds r23,(IntegralGyroRoll)+1
272 01c8 8091 0000 lds r24,(IntegralGyroRoll)+2
273 01cc 9091 0000 lds r25,(IntegralGyroRoll)+3
274 01d0 2AE0 ldi r18,lo8(10)
275 01d2 30E0 ldi r19,hi8(10)
276 01d4 40E0 ldi r20,hlo8(10)
277 01d6 50E0 ldi r21,hhi8(10)
278 01d8 0E94 0000 call __mulsi3
279 01dc A801 movw r20,r16
280 01de 9701 movw r18,r14
281 01e0 0E94 0000 call __divmodsi4
282 01e4 3093 0000 sts (ToNaviCtrl+5)+1,r19
283 01e8 2093 0000 sts ToNaviCtrl+5,r18
284 01ec 6091 0000 lds r22,YawGyroHeading
285 01f0 7091 0000 lds r23,(YawGyroHeading)+1
286 01f4 8091 0000 lds r24,(YawGyroHeading)+2
287 01f8 9091 0000 lds r25,(YawGyroHeading)+3
288 01fc 2AE0 ldi r18,lo8(10)
289 01fe 30E0 ldi r19,hi8(10)
290 0200 40E0 ldi r20,hlo8(10)
291 0202 50E0 ldi r21,hhi8(10)
292 0204 0E94 0000 call __mulsi3
293 0208 A801 movw r20,r16
294 020a 9701 movw r18,r14
295 020c 0E94 0000 call __divmodsi4
296 0210 3093 0000 sts (ToNaviCtrl+11)+1,r19
297 0214 2093 0000 sts ToNaviCtrl+11,r18
298 0218 8091 0000 lds r24,GyroNick
299 021c 9091 0000 lds r25,(GyroNick)+1
300 0220 9093 0000 sts (ToNaviCtrl+13)+1,r25
301 0224 8093 0000 sts ToNaviCtrl+13,r24
302 0228 8091 0000 lds r24,GyroRoll
303 022c 9091 0000 lds r25,(GyroRoll)+1
304 0230 9093 0000 sts (ToNaviCtrl+15)+1,r25
305 0234 8093 0000 sts ToNaviCtrl+15,r24
306 0238 8091 0000 lds r24,GyroYaw
307 023c 9091 0000 lds r25,(GyroYaw)+1
308 0240 9093 0000 sts (ToNaviCtrl+17)+1,r25
309 0244 8093 0000 sts ToNaviCtrl+17,r24
310 0248 E091 0000 lds r30,NaviCntAcc
311 024c F091 0000 lds r31,(NaviCntAcc)+1
312 0250 8091 0000 lds r24,NaviAccNick
313 0254 9091 0000 lds r25,(NaviAccNick)+1
314 0258 BF01 movw r22,r30
315 025a 0E94 0000 call __divmodhi4
316 025e 2CE3 ldi r18,lo8(60)
317 0260 30E0 ldi r19,hi8(60)
318 0262 629F mul r22,r18
319 0264 C001 movw r24,r0
320 0266 639F mul r22,r19
321 0268 900D add r25,r0
322 026a 729F mul r23,r18
323 026c 900D add r25,r0
324 026e 1124 clr r1
325 0270 6AE2 ldi r22,lo8(42)
326 0272 70E0 ldi r23,hi8(42)
327 0274 0E94 0000 call __divmodhi4
328 0278 7093 0000 sts (ToNaviCtrl+7)+1,r23
329 027c 6093 0000 sts ToNaviCtrl+7,r22
330 0280 8091 0000 lds r24,NaviAccRoll
331 0284 9091 0000 lds r25,(NaviAccRoll)+1
332 0288 BF01 movw r22,r30
333 028a 0E94 0000 call __divmodhi4
334 028e 629F mul r22,r18
335 0290 C001 movw r24,r0
336 0292 639F mul r22,r19
337 0294 900D add r25,r0
338 0296 729F mul r23,r18
339 0298 900D add r25,r0
340 029a 1124 clr r1
341 029c 6AE2 ldi r22,lo8(42)
342 029e 70E0 ldi r23,hi8(42)
343 02a0 0E94 0000 call __divmodhi4
344 02a4 7093 0000 sts (ToNaviCtrl+9)+1,r23
345 02a8 6093 0000 sts ToNaviCtrl+9,r22
346 02ac 1092 0000 sts (NaviCntAcc)+1,__zero_reg__
347 02b0 1092 0000 sts NaviCntAcc,__zero_reg__
348 02b4 1092 0000 sts (NaviAccNick)+1,__zero_reg__
349 02b8 1092 0000 sts NaviAccNick,__zero_reg__
350 02bc 1092 0000 sts (NaviAccRoll)+1,__zero_reg__
351 02c0 1092 0000 sts NaviAccRoll,__zero_reg__
352 02c4 8091 0000 lds r24,ToNaviCtrl+2
353 02c8 8C30 cpi r24,lo8(12)
354 02ca 01F4 brne .+2
355 02cc 00C0 rjmp .L27
356 02ce 8D30 cpi r24,lo8(13)
357 02d0 00F4 brsh .+2
358 02d2 00C0 rjmp .L50
359 02d4 8E30 cpi r24,lo8(14)
360 02d6 01F4 brne .+2
361 02d8 00C0 rjmp .L29
362 02da 8E30 cpi r24,lo8(14)
363 02dc 00F0 brlo .+2
364 02de 00C0 rjmp .L51
365 02e0 8091 0000 lds r24,ParamSet+69
366 02e4 8093 0000 sts ToNaviCtrl+19,r24
367 02e8 8091 0000 lds r24,ParamSet+70
368 02ec 8093 0000 sts ToNaviCtrl+20,r24
369 02f0 8091 0000 lds r24,ParamSet+71
370 02f4 8093 0000 sts ToNaviCtrl+21,r24
371 02f8 8091 0000 lds r24,ParamSet+72
372 02fc 8093 0000 sts ToNaviCtrl+22,r24
373 0300 8091 0000 lds r24,ParamSet+73
374 0304 8093 0000 sts ToNaviCtrl+23,r24
375 0308 8091 0000 lds r24,ParamSet+77
376 030c 8093 0000 sts ToNaviCtrl+24,r24
377 0310 8091 0000 lds r24,ParamSet+78
378 0314 8093 0000 sts ToNaviCtrl+25,r24
379 0318 8091 0000 lds r24,ParamSet+79
380 031c 8093 0000 sts ToNaviCtrl+26,r24
381 0320 8091 0000 lds r24,ParamSet+82
382 0324 8093 0000 sts ToNaviCtrl+27,r24
383 0328 8091 0000 lds r24,ParamSet+80
384 032c 8093 0000 sts ToNaviCtrl+28,r24
385 0330 8091 0000 lds r24,ParamSet+81
386 0334 8093 0000 sts ToNaviCtrl+29,r24
387 0338 8091 0000 lds r24,ParamSet+83
388 033c 8093 0000 sts ToNaviCtrl+30,r24
389 .L24:
390 0340 8091 0000 lds r24,SPI_RxDataValid
391 0344 8823 tst r24
392 0346 01F4 brne .+2
393 0348 00C0 rjmp .L41
394 .L55:
395 034a 2091 0000 lds r18,FromNaviCtrl+1
396 034e 3091 0000 lds r19,(FromNaviCtrl+1)+1
397 0352 C901 movw r24,r18
398 0354 8150 subi r24,lo8(-(511))
399 0356 9E4F sbci r25,hi8(-(511))
400 0358 8F5F subi r24,lo8(1023)
401 035a 9340 sbci r25,hi8(1023)
402 035c 00F4 brsh .L42
403 035e 4091 0000 lds r20,FromNaviCtrl+3
404 0362 5091 0000 lds r21,(FromNaviCtrl+3)+1
405 0366 CA01 movw r24,r20
406 0368 8150 subi r24,lo8(-(511))
407 036a 9E4F sbci r25,hi8(-(511))
408 036c 8F5F subi r24,lo8(1023)
409 036e 9340 sbci r25,hi8(1023)
410 0370 00F4 brsh .+2
411 0372 00C0 rjmp .L52
412 .L42:
413 0374 8091 0000 lds r24,FromNaviCtrl+7
414 0378 9091 0000 lds r25,(FromNaviCtrl+7)+1
415 037c 21E0 ldi r18,hi8(361)
416 037e 8936 cpi r24,lo8(361)
417 0380 9207 cpc r25,r18
418 0382 04F4 brge .L43
419 0384 9093 0000 sts (CompassHeading)+1,r25
420 0388 8093 0000 sts CompassHeading,r24
421 .L43:
422 038c 2091 0000 lds r18,CompassHeading
423 0390 3091 0000 lds r19,(CompassHeading)+1
424 0394 37FD sbrc r19,7
425 0396 00C0 rjmp .L53
426 0398 245E subi r18,lo8(-(540))
427 039a 3D4F sbci r19,hi8(-(540))
428 039c 8091 0000 lds r24,CompassCourse
429 03a0 9091 0000 lds r25,(CompassCourse)+1
430 03a4 A901 movw r20,r18
431 03a6 481B sub r20,r24
432 03a8 590B sbc r21,r25
433 03aa CA01 movw r24,r20
434 03ac 68E6 ldi r22,lo8(360)
435 03ae 71E0 ldi r23,hi8(360)
436 03b0 0E94 0000 call __divmodhi4
437 03b4 845B subi r24,lo8(-(-180))
438 03b6 9040 sbci r25,hi8(-(-180))
439 03b8 9093 0000 sts (CompassOffCourse)+1,r25
440 03bc 8093 0000 sts CompassOffCourse,r24
441 .L45:
442 03c0 2091 0000 lds r18,FromNaviCtrl+11
443 03c4 3091 0000 lds r19,(FromNaviCtrl+11)+1
444 03c8 8091 0000 lds r24,BeepTime
445 03cc 9091 0000 lds r25,(BeepTime)+1
446 03d0 8217 cp r24,r18
447 03d2 9307 cpc r25,r19
448 03d4 00F4 brsh .L46
449 03d6 8091 0000 lds r24,CompassCalState
450 03da 8823 tst r24
451 03dc 01F4 brne .+2
452 03de 00C0 rjmp .L54
453 .L46:
454 03e0 8091 0000 lds r24,FromNaviCtrl
455 03e4 8736 cpi r24,lo8(103)
456 03e6 01F4 brne .L49
457 03e8 8091 0000 lds r24,FromNaviCtrl+13
458 03ec 8093 0000 sts FCParam+31,r24
459 03f0 8091 0000 lds r24,FromNaviCtrl+14
460 03f4 8093 0000 sts FCParam+33,r24
461 03f8 8091 0000 lds r24,FromNaviCtrl+15
462 03fc 8093 0000 sts FCParam+32,r24
463 0400 8091 0000 lds r24,FromNaviCtrl+16
464 0404 8093 0000 sts NCSerialDataOkay,r24
465 0408 8091 0000 lds r24,FromNaviCtrl+17
466 040c 8093 0000 sts NCGpsZ,r24
467 .L49:
468 /* epilogue start */
469 0410 1F91 pop r17
470 0412 0F91 pop r16
471 0414 FF90 pop r15
472 0416 EF90 pop r14
473 0418 0895 ret
474 .L50:
475 041a 8A30 cpi r24,lo8(10)
476 041c 01F4 brne .+2
477 041e 00C0 rjmp .L25
478 0420 8B30 cpi r24,lo8(11)
479 0422 01F0 breq .+2
480 0424 00C0 rjmp .L24
481 /* #APP */
482 ; 251 "spi.c" 1
483 0426 F894 cli
484 ; 0 "" 2
485 /* #NOAPP */
486 0428 E091 0000 lds r30,ParamSet+2
487 042c F0E0 ldi r31,lo8(0)
488 042e EE0F lsl r30
489 0430 FF1F rol r31
490 0432 E050 subi r30,lo8(-(PPM_in))
491 0434 F040 sbci r31,hi8(-(PPM_in))
492 0436 0190 ld __tmp_reg__,Z+
493 0438 F081 ld r31,Z
494 043a E02D mov r30,__tmp_reg__
495 043c 2FEF ldi r18,hi8(-128)
496 043e E038 cpi r30,lo8(-128)
497 0440 F207 cpc r31,r18
498 0442 04F4 brge .L32
499 0444 E0E8 ldi r30,lo8(-128)
500 0446 FFEF ldi r31,hi8(-128)
501 .L32:
502 0448 E038 cpi r30,128
503 044a F105 cpc r31,__zero_reg__
504 044c 04F0 brlt .L33
505 044e EFE7 ldi r30,lo8(127)
506 0450 F0E0 ldi r31,hi8(127)
507 .L33:
508 0452 E093 0000 sts ToNaviCtrl+19,r30
509 0456 E091 0000 lds r30,ParamSet+3
510 045a F0E0 ldi r31,lo8(0)
511 045c EE0F lsl r30
512 045e FF1F rol r31
513 0460 E050 subi r30,lo8(-(PPM_in))
514 0462 F040 sbci r31,hi8(-(PPM_in))
515 0464 0190 ld __tmp_reg__,Z+
516 0466 F081 ld r31,Z
517 0468 E02D mov r30,__tmp_reg__
518 046a 4FEF ldi r20,hi8(-128)
519 046c E038 cpi r30,lo8(-128)
520 046e F407 cpc r31,r20
521 0470 04F4 brge .L34
522 0472 E0E8 ldi r30,lo8(-128)
523 0474 FFEF ldi r31,hi8(-128)
524 .L34:
525 0476 E038 cpi r30,128
526 0478 F105 cpc r31,__zero_reg__
527 047a 04F0 brlt .L35
528 047c EFE7 ldi r30,lo8(127)
529 047e F0E0 ldi r31,hi8(127)
530 .L35:
531 0480 E093 0000 sts ToNaviCtrl+20,r30
532 0484 E091 0000 lds r30,ParamSet+1
533 0488 F0E0 ldi r31,lo8(0)
534 048a EE0F lsl r30
535 048c FF1F rol r31
536 048e E050 subi r30,lo8(-(PPM_in))
537 0490 F040 sbci r31,hi8(-(PPM_in))
538 0492 0190 ld __tmp_reg__,Z+
539 0494 F081 ld r31,Z
540 0496 E02D mov r30,__tmp_reg__
541 0498 5FEF ldi r21,hi8(-128)
542 049a E038 cpi r30,lo8(-128)
543 049c F507 cpc r31,r21
544 049e 04F4 brge .L36
545 04a0 E0E8 ldi r30,lo8(-128)
546 04a2 FFEF ldi r31,hi8(-128)
547 .L36:
548 04a4 E038 cpi r30,128
549 04a6 F105 cpc r31,__zero_reg__
550 04a8 04F0 brlt .L37
551 04aa EFE7 ldi r30,lo8(127)
552 04ac F0E0 ldi r31,hi8(127)
553 .L37:
554 04ae E093 0000 sts ToNaviCtrl+21,r30
555 04b2 E091 0000 lds r30,ParamSet
556 04b6 F0E0 ldi r31,lo8(0)
557 04b8 EE0F lsl r30
558 04ba FF1F rol r31
559 04bc E050 subi r30,lo8(-(PPM_in))
560 04be F040 sbci r31,hi8(-(PPM_in))
561 04c0 0190 ld __tmp_reg__,Z+
562 04c2 F081 ld r31,Z
563 04c4 E02D mov r30,__tmp_reg__
564 04c6 6FEF ldi r22,hi8(-128)
565 04c8 E038 cpi r30,lo8(-128)
566 04ca F607 cpc r31,r22
567 04cc 04F4 brge .L38
568 04ce E0E8 ldi r30,lo8(-128)
569 04d0 FFEF ldi r31,hi8(-128)
570 .L38:
571 04d2 E038 cpi r30,128
572 04d4 F105 cpc r31,__zero_reg__
573 04d6 04F0 brlt .L39
574 04d8 EFE7 ldi r30,lo8(127)
575 04da F0E0 ldi r31,hi8(127)
576 .L39:
577 04dc E093 0000 sts ToNaviCtrl+22,r30
578 /* #APP */
579 ; 260 "spi.c" 1
580 04e0 7894 sei
581 ; 0 "" 2
582 /* #NOAPP */
583 04e2 8091 0000 lds r24,Poti1
584 04e6 8093 0000 sts ToNaviCtrl+23,r24
585 04ea 8091 0000 lds r24,Poti2
586 04ee 8093 0000 sts ToNaviCtrl+24,r24
587 04f2 8091 0000 lds r24,Poti3
588 04f6 8093 0000 sts ToNaviCtrl+25,r24
589 04fa 8091 0000 lds r24,Poti4
590 04fe 8093 0000 sts ToNaviCtrl+26,r24
591 0502 8091 0000 lds r24,RC_Quality
592 0506 8093 0000 sts ToNaviCtrl+27,r24
593 050a 8091 0000 lds r24,RC_RSSI
594 050e 8093 0000 sts ToNaviCtrl+28,r24
595 0512 8091 0000 lds r24,DebugOut+16
596 0516 9091 0000 lds r25,(DebugOut+16)+1
597 051a 9695 lsr r25
598 051c 8795 ror r24
599 051e 9695 lsr r25
600 0520 8795 ror r24
601 0522 8093 0000 sts ToNaviCtrl+29,r24
602 0526 8091 0000 lds r24,SPI_RxDataValid
603 052a 8823 tst r24
604 052c 01F0 breq .+2
605 052e 00C0 rjmp .L55
606 .L41:
607 0530 1092 0000 sts (GPSStickNick)+1,__zero_reg__
608 0534 1092 0000 sts GPSStickNick,__zero_reg__
609 0538 1092 0000 sts (GPSStickRoll)+1,__zero_reg__
610 053c 1092 0000 sts GPSStickRoll,__zero_reg__
611 0540 1092 0000 sts NCGpsZ,__zero_reg__
612 0544 1F91 pop r17
613 0546 0F91 pop r16
614 0548 FF90 pop r15
615 054a EF90 pop r14
616 054c 0895 ret
617 .L51:
618 054e 8F30 cpi r24,lo8(15)
619 0550 01F0 breq .+2
620 0552 00C0 rjmp .L24
621 0554 8091 0000 lds r24,ParamSet+47
622 0558 8093 0000 sts ToNaviCtrl+19,r24
623 055c 8091 0000 lds r24,ParamSet+87
624 0560 8093 0000 sts ToNaviCtrl+20,r24
625 0564 8091 0000 lds r24,FCParam+21
626 0568 8093 0000 sts ToNaviCtrl+21,r24
627 056c 8091 0000 lds r24,ParamSet+40
628 0570 8093 0000 sts ToNaviCtrl+22,r24
629 0574 8091 0000 lds r24,ParamSet+41
630 0578 8093 0000 sts ToNaviCtrl+23,r24
631 057c 8091 0000 lds r24,ParamSet+42
632 0580 8093 0000 sts ToNaviCtrl+24,r24
633 0584 8091 0000 lds r24,FCParam+22
634 0588 8093 0000 sts ToNaviCtrl+25,r24
635 058c 8091 0000 lds r24,ParamSet+44
636 0590 8093 0000 sts ToNaviCtrl+26,r24
637 0594 8091 0000 lds r24,ParamSet+45
638 0598 8093 0000 sts ToNaviCtrl+27,r24
639 059c 8091 0000 lds r24,ParamSet+46
640 05a0 8093 0000 sts ToNaviCtrl+28,r24
641 05a4 00C0 rjmp .L24
642 .L52:
643 05a6 8091 0000 lds r24,ParamSet+8
644 05aa 85FF sbrs r24,5
645 05ac 00C0 rjmp .L42
646 05ae 3093 0000 sts (GPSStickNick)+1,r19
647 05b2 2093 0000 sts GPSStickNick,r18
648 05b6 5093 0000 sts (GPSStickRoll)+1,r21
649 05ba 4093 0000 sts GPSStickRoll,r20
650 05be 8AEF ldi r24,lo8(-6)
651 05c0 8093 0000 sts NCDataOkay,r24
652 05c4 00C0 rjmp .L42
653 .L54:
654 05c6 3093 0000 sts (BeepTime)+1,r19
655 05ca 2093 0000 sts BeepTime,r18
656 05ce 00C0 rjmp .L46
657 .L53:
658 05d0 1092 0000 sts (CompassOffCourse)+1,__zero_reg__
659 05d4 1092 0000 sts CompassOffCourse,__zero_reg__
660 05d8 00C0 rjmp .L45
661 .L29:
662 05da 8091 0000 lds r24,SPI_VersionInfo
663 05de 8093 0000 sts ToNaviCtrl+19,r24
664 05e2 8091 0000 lds r24,SPI_VersionInfo+1
665 05e6 8093 0000 sts ToNaviCtrl+20,r24
666 05ea 8091 0000 lds r24,SPI_VersionInfo+2
667 05ee 8093 0000 sts ToNaviCtrl+21,r24
668 05f2 8091 0000 lds r24,SPI_VersionInfo+3
669 05f6 8093 0000 sts ToNaviCtrl+22,r24
670 05fa 8091 0000 lds r24,BoardRelease
671 05fe 8093 0000 sts ToNaviCtrl+23,r24
672 0602 00C0 rjmp .L24
673 .L25:
674 0604 8091 0000 lds r24,FCParam+13
675 0608 8093 0000 sts ToNaviCtrl+19,r24
676 060c 8091 0000 lds r24,FCParam+14
677 0610 8093 0000 sts ToNaviCtrl+20,r24
678 0614 8091 0000 lds r24,FCParam+15
679 0618 8093 0000 sts ToNaviCtrl+21,r24
680 061c 8091 0000 lds r24,FCParam+16
681 0620 8093 0000 sts ToNaviCtrl+22,r24
682 0624 8091 0000 lds r24,FCParam+17
683 0628 8093 0000 sts ToNaviCtrl+23,r24
684 062c 8091 0000 lds r24,FCParam+18
685 0630 8093 0000 sts ToNaviCtrl+24,r24
686 0634 8091 0000 lds r24,FCParam+19
687 0638 8093 0000 sts ToNaviCtrl+25,r24
688 063c 8091 0000 lds r24,FCParam+20
689 0640 8093 0000 sts ToNaviCtrl+26,r24
690 0644 8091 0000 lds r24,MKFlags
691 0648 8093 0000 sts ToNaviCtrl+27,r24
692 064c 8091 0000 lds r24,MKFlags
693 0650 837F andi r24,lo8(-13)
694 0652 8093 0000 sts MKFlags,r24
695 0656 8091 0000 lds r24,UBat
696 065a 9091 0000 lds r25,(UBat)+1
697 065e 8093 0000 sts ToNaviCtrl+28,r24
698 0662 8091 0000 lds r24,LowVoltageWarning
699 0666 8093 0000 sts ToNaviCtrl+29,r24
700 066a 0E94 0000 call GetActiveParamSet
701 066e 8093 0000 sts ToNaviCtrl+30,r24
702 0672 00C0 rjmp .L24
703 .L27:
704 0674 8091 0000 lds r24,CompassCalState
705 0678 8093 0000 sts ToNaviCtrl+19,r24
706 067c 8530 cpi r24,lo8(5)
707 067e 00F0 brlo .L40
708 0680 1092 0000 sts CompassCalState,__zero_reg__
709 .L40:
710 0684 8091 0000 lds r24,ParamSet+84
711 0688 8093 0000 sts ToNaviCtrl+20,r24
712 068c 6091 0000 lds r22,ReadingHeight
713 0690 7091 0000 lds r23,(ReadingHeight)+1
714 0694 8091 0000 lds r24,(ReadingHeight)+2
715 0698 9091 0000 lds r25,(ReadingHeight)+3
716 069c 25E0 ldi r18,lo8(5)
717 069e 30E0 ldi r19,hi8(5)
718 06a0 40E0 ldi r20,hlo8(5)
719 06a2 50E0 ldi r21,hhi8(5)
720 06a4 0E94 0000 call __divmodsi4
721 06a8 3093 0000 sts (ToNaviCtrl+21)+1,r19
722 06ac 2093 0000 sts ToNaviCtrl+21,r18
723 06b0 6091 0000 lds r22,SetPointHeight
724 06b4 7091 0000 lds r23,(SetPointHeight)+1
725 06b8 8091 0000 lds r24,(SetPointHeight)+2
726 06bc 9091 0000 lds r25,(SetPointHeight)+3
727 06c0 25E0 ldi r18,lo8(5)
728 06c2 30E0 ldi r19,hi8(5)
729 06c4 40E0 ldi r20,hlo8(5)
730 06c6 50E0 ldi r21,hhi8(5)
731 06c8 0E94 0000 call __divmodsi4
732 06cc 3093 0000 sts (ToNaviCtrl+23)+1,r19
733 06d0 2093 0000 sts ToNaviCtrl+23,r18
734 06d4 8091 0000 lds r24,ParamSet+74
735 06d8 8093 0000 sts ToNaviCtrl+25,r24
736 06dc 8091 0000 lds r24,ParamSet+75
737 06e0 8093 0000 sts ToNaviCtrl+26,r24
738 06e4 8091 0000 lds r24,ParamSet+76
739 06e8 8093 0000 sts ToNaviCtrl+27,r24
740 06ec 00C0 rjmp .L24
742 .global SPI_StartTransmitPacket
744 SPI_StartTransmitPacket:
745 /* prologue: function */
746 /* frame size = 0 */
747 06ee 8091 0000 lds r24,SPITransferCompleted
748 06f2 8823 tst r24
749 06f4 01F4 brne .+2
750 06f6 00C0 rjmp .L59
751 06f8 4598 cbi 40-32,5
752 06fa 8091 0000 lds r24,SPI_CommandCounter
753 06fe E82F mov r30,r24
754 0700 F0E0 ldi r31,lo8(0)
755 0702 E050 subi r30,lo8(-(SPI_CommandSequence))
756 0704 F040 sbci r31,hi8(-(SPI_CommandSequence))
757 0706 9081 ld r25,Z
758 0708 9093 0000 sts ToNaviCtrl+2,r25
759 070c 8F5F subi r24,lo8(-(1))
760 070e 8093 0000 sts SPI_CommandCounter,r24
761 0712 8730 cpi r24,lo8(7)
762 0714 00F0 brlo .L58
763 0716 1092 0000 sts SPI_CommandCounter,__zero_reg__
764 .L58:
765 071a 1092 0000 sts SPITransferCompleted,__zero_reg__
766 071e 0E94 0000 call UpdateSPI_Buffer
767 0722 81E0 ldi r24,lo8(1)
768 0724 8093 0000 sts SPI_TxBufferIndex,r24
769 /* #APP */
770 ; 377 "spi.c" 1
771 0728 0000 nop
772 ; 0 "" 2
773 ; 377 "spi.c" 1
774 072a 0000 nop
775 ; 0 "" 2
776 ; 377 "spi.c" 1
777 072c 0000 nop
778 ; 0 "" 2
779 ; 377 "spi.c" 1
780 072e 0000 nop
781 ; 0 "" 2
782 ; 377 "spi.c" 1
783 0730 0000 nop
784 ; 0 "" 2
785 ; 377 "spi.c" 1
786 0732 0000 nop
787 ; 0 "" 2
788 ; 377 "spi.c" 1
789 0734 0000 nop
790 ; 0 "" 2
791 ; 377 "spi.c" 1
792 0736 0000 nop
793 ; 0 "" 2
794 ; 378 "spi.c" 1
795 0738 0000 nop
796 ; 0 "" 2
797 ; 378 "spi.c" 1
798 073a 0000 nop
799 ; 0 "" 2
800 ; 378 "spi.c" 1
801 073c 0000 nop
802 ; 0 "" 2
803 ; 378 "spi.c" 1
804 073e 0000 nop
805 ; 0 "" 2
806 ; 378 "spi.c" 1
807 0740 0000 nop
808 ; 0 "" 2
809 ; 378 "spi.c" 1
810 0742 0000 nop
811 ; 0 "" 2
812 ; 378 "spi.c" 1
813 0744 0000 nop
814 ; 0 "" 2
815 ; 378 "spi.c" 1
816 0746 0000 nop
817 ; 0 "" 2
818 ; 379 "spi.c" 1
819 0748 0000 nop
820 ; 0 "" 2
821 ; 379 "spi.c" 1
822 074a 0000 nop
823 ; 0 "" 2
824 ; 379 "spi.c" 1
825 074c 0000 nop
826 ; 0 "" 2
827 ; 379 "spi.c" 1
828 074e 0000 nop
829 ; 0 "" 2
830 ; 379 "spi.c" 1
831 0750 0000 nop
832 ; 0 "" 2
833 ; 379 "spi.c" 1
834 0752 0000 nop
835 ; 0 "" 2
836 ; 379 "spi.c" 1
837 0754 0000 nop
838 ; 0 "" 2
839 ; 379 "spi.c" 1
840 0756 0000 nop
841 ; 0 "" 2
842 /* #NOAPP */
843 0758 8091 0000 lds r24,ToNaviCtrl
844 075c 8093 0000 sts ToNaviCtrl+31,r24
845 0760 8EBD out 78-32,r24
846 .L59:
847 0762 0895 ret
849 .global SPI_RxBufferIndex
850 .global SPI_RxBufferIndex
851 .section .bss
854 SPI_RxBufferIndex:
855 0000 00 .skip 1,0
856 .global SPI_RxBuffer_Request
857 .global SPI_RxBuffer_Request
860 SPI_RxBuffer_Request:
861 0001 00 .skip 1,0
862 .global SPI_TxBufferIndex
863 .global SPI_TxBufferIndex
866 SPI_TxBufferIndex:
867 0002 00 .skip 1,0
868 .global SPI_RxDataValid
869 .global SPI_RxDataValid
872 SPI_RxDataValid:
873 0003 00 .skip 1,0
874 .global NCDataOkay
875 .global NCDataOkay
878 NCDataOkay:
879 0004 00 .skip 1,0
880 .global NCSerialDataOkay
881 .global NCSerialDataOkay
884 NCSerialDataOkay:
885 0005 00 .skip 1,0
886 .global NCGpsZ
887 .global NCGpsZ
890 NCGpsZ:
891 0006 00 .skip 1,0
892 .global SPI_CommandSequence
893 .data
896 SPI_CommandSequence:
897 0000 0A .byte 10
898 0001 0B .byte 11
899 0002 0D .byte 13
900 0003 0B .byte 11
901 0004 0C .byte 12
902 0005 0E .byte 14
903 0006 0F .byte 15
904 .global SPI_CommandCounter
905 .global SPI_CommandCounter
906 .section .bss
909 SPI_CommandCounter:
910 0007 00 .skip 1,0
911 .lcomm rxchksum.2022,1
912 .lcomm SPI_RXState.2020,1
913 .comm ToNaviCtrl,32,1
914 .comm FromNaviCtrl,26,1
915 .comm SPI_VersionInfo,4,1
916 .comm SPI_RxBuffer,26,1
917 .comm SPI_TxBuffer,2,1
918 .comm SPITransferCompleted,1,1
919 .comm SPI_ChkSum,1,1
920 .global __do_copy_data
921 .global __do_clear_bss
DEFINED SYMBOLS
*ABS*:00000000 spi.c
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:2 *ABS*:0000003f __SREG__
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:3 *ABS*:0000003e __SP_H__
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:4 *ABS*:0000003d __SP_L__
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:5 *ABS*:00000034 __CCP__
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:6 *ABS*:00000000 __tmp_reg__
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:7 *ABS*:00000001 __zero_reg__
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:11 .text:00000000 SPI_MasterInit
*COM*:00000020 ToNaviCtrl
*COM*:00000002 SPI_TxBuffer
*COM*:00000001 SPITransferCompleted
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:884 .bss:00000005 NCSerialDataOkay
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:878 .bss:00000004 NCDataOkay
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:872 .bss:00000003 SPI_RxDataValid
*COM*:00000004 SPI_VersionInfo
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:52 .text:00000066 SPI_TransmitByte
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:911 .bss:00000009 SPI_RXState.2020
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:854 .bss:00000000 SPI_RxBufferIndex
.bss:00000008 rxchksum.2022
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:866 .bss:00000002 SPI_TxBufferIndex
*COM*:0000001a SPI_RxBuffer
*COM*:0000001a FromNaviCtrl
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:240 .text:00000178 UpdateSPI_Buffer
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:890 .bss:00000006 NCGpsZ
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:744 .text:000006ee SPI_StartTransmitPacket
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:909 .bss:00000007 SPI_CommandCounter
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:896 .data:00000000 SPI_CommandSequence
C:\DOKUME~1\LUKEPA~1\LOKALE~1\Temp/ccXYPMr9.s:860 .bss:00000001 SPI_RxBuffer_Request
*COM*:00000001 SPI_ChkSum
UNDEFINED SYMBOLS
SendSPI
ParamSet
IntegralGyroNick
__mulsi3
__divmodsi4
IntegralGyroRoll
YawGyroHeading
GyroNick
GyroRoll
GyroYaw
NaviCntAcc
NaviAccNick
__divmodhi4
NaviAccRoll
CompassHeading
CompassCourse
CompassOffCourse
BeepTime
CompassCalState
FCParam
PPM_in
Poti1
Poti2
Poti3
Poti4
RC_Quality
RC_RSSI
DebugOut
GPSStickNick
GPSStickRoll
BoardRelease
MKFlags
UBat
LowVoltageWarning
GetActiveParamSet
ReadingHeight
SetPointHeight
__do_copy_data
__do_clear_bss