1,644 → 1,633 |
1 .file "Spektrum.c" |
2 .arch atmega644p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __CCP__ = 0x34 |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global SpektrumTimer |
11 .global SpektrumTimer |
12 .section .bss |
15 SpektrumTimer: |
16 0000 00 .skip 1,0 |
17 .text |
18 .global SpektrumUartInit |
20 SpektrumUartInit: |
21 /* prologue: frame size=0 */ |
22 /* prologue end (size=0) */ |
23 0000 4FB7 in r20,95-0x20 |
24 0002 24E1 ldi r18,lo8(20) |
25 0004 30E0 ldi r19,hi8(20) |
26 /* #APP */ |
27 0006 F894 cli |
28 /* #NOAPP */ |
29 0008 8091 C900 lds r24,201 |
30 000c 8F77 andi r24,lo8(127) |
31 000e 8093 C900 sts 201,r24 |
32 0012 8091 C900 lds r24,201 |
33 0016 8F7B andi r24,lo8(-65) |
34 0018 8093 C900 sts 201,r24 |
35 001c 8091 C900 lds r24,201 |
36 0020 8F7D andi r24,lo8(-33) |
37 0022 8093 C900 sts 201,r24 |
38 0026 5A9A sbi 43-0x20,2 |
39 0028 5298 cbi 42-0x20,2 |
40 002a 5B9A sbi 43-0x20,3 |
41 002c 539A sbi 42-0x20,3 |
42 002e 832F mov r24,r19 |
43 0030 9927 clr r25 |
44 0032 8093 CD00 sts 205,r24 |
45 0036 2093 CC00 sts 204,r18 |
46 003a 8091 C800 lds r24,200 |
47 003e 8260 ori r24,lo8(2) |
48 0040 8093 C800 sts 200,r24 |
49 0044 80E1 ldi r24,lo8(16) |
50 0046 8093 C900 sts 201,r24 |
51 004a 8091 CA00 lds r24,202 |
52 004e 8F77 andi r24,lo8(127) |
53 0050 8093 CA00 sts 202,r24 |
54 0054 8091 CA00 lds r24,202 |
55 0058 8F7B andi r24,lo8(-65) |
56 005a 8093 CA00 sts 202,r24 |
57 005e 8091 CA00 lds r24,202 |
58 0062 8F7D andi r24,lo8(-33) |
59 0064 8093 CA00 sts 202,r24 |
60 0068 8091 CA00 lds r24,202 |
61 006c 8F7E andi r24,lo8(-17) |
62 006e 8093 CA00 sts 202,r24 |
63 0072 8091 CA00 lds r24,202 |
64 0076 877F andi r24,lo8(-9) |
65 0078 8093 CA00 sts 202,r24 |
66 007c 8091 C900 lds r24,201 |
67 0080 8B7F andi r24,lo8(-5) |
68 0082 8093 C900 sts 201,r24 |
69 0086 8091 CA00 lds r24,202 |
70 008a 8460 ori r24,lo8(4) |
71 008c 8093 CA00 sts 202,r24 |
72 0090 8091 CA00 lds r24,202 |
73 0094 8260 ori r24,lo8(2) |
74 0096 8093 CA00 sts 202,r24 |
75 .L7: |
76 009a 8091 C800 lds r24,200 |
77 009e 87FF sbrs r24,7 |
78 00a0 03C0 rjmp .L6 |
79 00a2 8091 CE00 lds r24,206 |
80 00a6 F9CF rjmp .L7 |
81 .L6: |
82 00a8 8091 C900 lds r24,201 |
83 00ac 8068 ori r24,lo8(-128) |
84 00ae 8093 C900 sts 201,r24 |
85 00b2 4FBF out 95-0x20,r20 |
86 /* epilogue: frame size=0 */ |
87 00b4 0895 ret |
88 /* epilogue end (size=1) */ |
89 /* function SpektrumUartInit size 92 (91) */ |
91 .section .progmem.data,"a",@progbits |
94 __c.5: |
95 0000 0A0D 506C .string "\n\rPlease connect Spektrum receiver for binding NOW..." |
95 6561 7365 |
95 2063 6F6E |
95 6E65 6374 |
95 2053 7065 |
98 __c.6: |
99 0036 6F6B 2E0A .string "ok.\n\r" |
99 0D00 |
102 __c.7: |
103 003c 5469 6D65 .string "Timeout.\n\r" |
103 6F75 742E |
103 0A0D 00 |
104 .text |
105 .global SpektrumBinding |
107 SpektrumBinding: |
108 /* prologue: frame size=0 */ |
109 00b6 FF92 push r15 |
110 00b8 0F93 push r16 |
111 00ba 1F93 push r17 |
112 00bc CF93 push r28 |
113 00be DF93 push r29 |
114 /* prologue end (size=5) */ |
115 00c0 80E1 ldi r24,lo8(10000) |
116 00c2 97E2 ldi r25,hi8(10000) |
117 00c4 0E94 0000 call SetDelay |
118 00c8 EC01 movw r28,r24 |
119 00ca FF24 clr r15 |
120 00cc 8091 C900 lds r24,201 |
121 00d0 8F77 andi r24,lo8(127) |
122 00d2 8093 C900 sts 201,r24 |
123 00d6 8091 C900 lds r24,201 |
124 00da 8F7E andi r24,lo8(-17) |
125 00dc 8093 C900 sts 201,r24 |
126 00e0 5A98 cbi 43-0x20,2 |
127 00e2 80E0 ldi r24,lo8(__c.5) |
128 00e4 90E0 ldi r25,hi8(__c.5) |
129 00e6 9F93 push r25 |
130 00e8 8F93 push r24 |
131 00ea 00E0 ldi r16,lo8(pm(uart_putchar)) |
132 00ec 10E0 ldi r17,hi8(pm(uart_putchar)) |
133 00ee 1F93 push r17 |
134 00f0 0F93 push r16 |
135 00f2 E091 0000 lds r30,_printf_P |
136 00f6 F091 0000 lds r31,(_printf_P)+1 |
137 00fa 0995 icall |
138 00fc 0F90 pop __tmp_reg__ |
139 00fe 0F90 pop __tmp_reg__ |
140 0100 0F90 pop __tmp_reg__ |
141 0102 0F90 pop __tmp_reg__ |
142 0104 02C0 rjmp .L9 |
143 .L12: |
144 0106 4A99 sbic 41-0x20,2 |
145 0108 6CC0 rjmp .L96 |
146 .L9: |
147 010a CE01 movw r24,r28 |
148 010c 0E94 0000 call CheckDelay |
149 0110 8823 tst r24 |
150 0112 C9F3 breq .L12 |
151 .L10: |
152 0114 E091 0000 lds r30,_printf_P |
153 0118 F091 0000 lds r31,(_printf_P)+1 |
154 011c FF20 tst r15 |
155 011e 09F4 brne .+2 |
156 0120 68C0 rjmp .L13 |
157 0122 80E0 ldi r24,lo8(__c.6) |
158 0124 90E0 ldi r25,hi8(__c.6) |
159 0126 9F93 push r25 |
160 0128 8F93 push r24 |
161 012a 1F93 push r17 |
162 012c 0F93 push r16 |
163 012e 0995 icall |
164 0130 529A sbi 42-0x20,2 |
165 0132 0F90 pop __tmp_reg__ |
166 0134 0F90 pop __tmp_reg__ |
167 0136 0F90 pop __tmp_reg__ |
168 0138 0F90 pop __tmp_reg__ |
169 .L14: |
170 013a CE01 movw r24,r28 |
171 013c 0E94 0000 call CheckDelay |
172 0140 8823 tst r24 |
173 0142 D9F3 breq .L14 |
174 0144 83E6 ldi r24,lo8(99) |
175 0146 90E0 ldi r25,hi8(99) |
176 .L20: |
177 0148 5A9A sbi 43-0x20,2 |
178 014a 0197 sbiw r24,1 |
179 014c 97FF sbrs r25,7 |
180 014e FCCF rjmp .L20 |
181 0150 8FE8 ldi r24,lo8(399) |
182 0152 91E0 ldi r25,hi8(399) |
183 .L24: |
184 0154 5A98 cbi 43-0x20,2 |
185 0156 0197 sbiw r24,1 |
186 0158 97FF sbrs r25,7 |
187 015a FCCF rjmp .L24 |
188 015c 89E0 ldi r24,lo8(9) |
189 015e 90E0 ldi r25,hi8(9) |
190 .L28: |
191 0160 5A9A sbi 43-0x20,2 |
192 0162 0197 sbiw r24,1 |
193 0164 97FF sbrs r25,7 |
194 0166 FCCF rjmp .L28 |
195 0168 89E0 ldi r24,lo8(9) |
196 016a 90E0 ldi r25,hi8(9) |
197 .L32: |
198 016c 5A98 cbi 43-0x20,2 |
199 016e 0197 sbiw r24,1 |
200 0170 97FF sbrs r25,7 |
201 0172 FCCF rjmp .L32 |
202 0174 8FE8 ldi r24,lo8(399) |
203 0176 91E0 ldi r25,hi8(399) |
204 .L36: |
205 0178 5A9A sbi 43-0x20,2 |
206 017a 0197 sbiw r24,1 |
207 017c 97FF sbrs r25,7 |
208 017e FCCF rjmp .L36 |
209 0180 8FE8 ldi r24,lo8(399) |
210 0182 91E0 ldi r25,hi8(399) |
211 .L40: |
212 0184 5A98 cbi 43-0x20,2 |
213 0186 0197 sbiw r24,1 |
214 0188 97FF sbrs r25,7 |
215 018a FCCF rjmp .L40 |
216 018c 89E0 ldi r24,lo8(9) |
217 018e 90E0 ldi r25,hi8(9) |
218 .L44: |
219 0190 5A9A sbi 43-0x20,2 |
220 0192 0197 sbiw r24,1 |
221 0194 97FF sbrs r25,7 |
222 0196 FCCF rjmp .L44 |
223 0198 89E0 ldi r24,lo8(9) |
224 019a 90E0 ldi r25,hi8(9) |
225 .L48: |
226 019c 5A98 cbi 43-0x20,2 |
227 019e 0197 sbiw r24,1 |
228 01a0 97FF sbrs r25,7 |
229 01a2 FCCF rjmp .L48 |
230 01a4 8FE8 ldi r24,lo8(399) |
231 01a6 91E0 ldi r25,hi8(399) |
232 .L52: |
233 01a8 5A9A sbi 43-0x20,2 |
234 01aa 0197 sbiw r24,1 |
235 01ac 97FF sbrs r25,7 |
236 01ae FCCF rjmp .L52 |
237 01b0 8FE8 ldi r24,lo8(399) |
238 01b2 91E0 ldi r25,hi8(399) |
239 .L56: |
240 01b4 5A98 cbi 43-0x20,2 |
241 01b6 0197 sbiw r24,1 |
242 01b8 97FF sbrs r25,7 |
243 01ba FCCF rjmp .L56 |
244 01bc 89E0 ldi r24,lo8(9) |
245 01be 90E0 ldi r25,hi8(9) |
246 .L60: |
247 01c0 5A9A sbi 43-0x20,2 |
248 01c2 0197 sbiw r24,1 |
249 01c4 97FF sbrs r25,7 |
250 01c6 FCCF rjmp .L60 |
251 01c8 89E0 ldi r24,lo8(9) |
252 01ca 90E0 ldi r25,hi8(9) |
253 .L64: |
254 01cc 5A98 cbi 43-0x20,2 |
255 01ce 0197 sbiw r24,1 |
256 01d0 97FF sbrs r25,7 |
257 01d2 FCCF rjmp .L64 |
258 01d4 8FE8 ldi r24,lo8(399) |
259 01d6 91E0 ldi r25,hi8(399) |
260 .L68: |
261 01d8 5A9A sbi 43-0x20,2 |
262 01da 0197 sbiw r24,1 |
263 01dc 97FF sbrs r25,7 |
264 01de FCCF rjmp .L68 |
265 01e0 13C0 rjmp .L69 |
266 .L96: |
267 01e2 8AE5 ldi r24,lo8(90) |
268 01e4 90E0 ldi r25,hi8(90) |
269 01e6 0E94 0000 call SetDelay |
270 01ea EC01 movw r28,r24 |
271 01ec 91E0 ldi r25,lo8(1) |
272 01ee F92E mov r15,r25 |
273 01f0 91CF rjmp .L10 |
274 .L13: |
275 01f2 80E0 ldi r24,lo8(__c.7) |
276 01f4 90E0 ldi r25,hi8(__c.7) |
277 01f6 9F93 push r25 |
278 01f8 8F93 push r24 |
279 01fa 1F93 push r17 |
280 01fc 0F93 push r16 |
281 01fe 0995 icall |
282 0200 0F90 pop __tmp_reg__ |
283 0202 0F90 pop __tmp_reg__ |
284 0204 0F90 pop __tmp_reg__ |
285 0206 0F90 pop __tmp_reg__ |
286 .L69: |
287 0208 5298 cbi 42-0x20,2 |
288 020a 5A98 cbi 43-0x20,2 |
289 020c 0E94 0000 call SpektrumUartInit |
290 /* epilogue: frame size=0 */ |
291 0210 E5E0 ldi r30,5 |
292 0212 CDB7 in r28,__SP_L__ |
293 0214 DEB7 in r29,__SP_H__ |
294 0216 0C94 0000 jmp __epilogue_restores__+26 |
295 /* epilogue end (size=5) */ |
296 /* function SpektrumBinding size 178 (168) */ |
298 .lcomm Sync.0,1 |
299 .lcomm FrameCnt.1,1 |
300 .lcomm ByteHigh.2,1 |
301 .data |
304 ReSync.3: |
305 0000 01 .byte 1 |
306 .lcomm Frame2.4,1 |
307 .text |
308 .global SpektrumParser |
310 SpektrumParser: |
311 /* prologue: frame size=0 */ |
312 021a EF92 push r14 |
313 021c FF92 push r15 |
314 021e 0F93 push r16 |
315 0220 1F93 push r17 |
316 0222 CF93 push r28 |
317 0224 DF93 push r29 |
318 /* prologue end (size=6) */ |
319 0226 482F mov r20,r24 |
320 0228 00E0 ldi r16,lo8(0) |
321 022a 10E0 ldi r17,hi8(0) |
322 022c 8091 0000 lds r24,ReSync.3 |
323 0230 8130 cpi r24,lo8(1) |
324 0232 61F4 brne .L98 |
325 0234 1092 0000 sts ReSync.3,__zero_reg__ |
326 0238 84E4 ldi r24,lo8(68) |
327 023a 8093 0000 sts SpektrumTimer,r24 |
328 023e 1092 0000 sts FrameCnt.1,__zero_reg__ |
329 0242 1092 0000 sts Sync.0,__zero_reg__ |
330 0246 1092 0000 sts ByteHigh.2,__zero_reg__ |
331 024a 2BC1 rjmp .L97 |
332 .L98: |
333 024c 8091 0000 lds r24,SpektrumTimer |
334 0250 8823 tst r24 |
335 0252 19F4 brne .L100 |
336 0254 21E0 ldi r18,lo8(1) |
337 0256 30E0 ldi r19,hi8(1) |
338 0258 01C0 rjmp .L101 |
339 .L100: |
340 025a 9801 movw r18,r16 |
341 .L101: |
342 025c 9091 0000 lds r25,Sync.0 |
343 0260 9923 tst r25 |
344 0262 71F4 brne .L102 |
345 0264 232B or r18,r19 |
346 0266 11F0 breq .L103 |
347 0268 81E0 ldi r24,lo8(1) |
348 026a 10C0 rjmp .L138 |
349 .L103: |
350 026c 84E4 ldi r24,lo8(68) |
351 026e 8093 0000 sts SpektrumTimer,r24 |
352 0272 9093 0000 sts FrameCnt.1,r25 |
353 0276 9093 0000 sts Sync.0,r25 |
354 027a 9093 0000 sts ByteHigh.2,r25 |
355 027e FAC0 rjmp .L105 |
356 .L102: |
357 0280 9130 cpi r25,lo8(1) |
358 0282 69F4 brne .L106 |
359 0284 232B or r18,r19 |
360 0286 09F0 breq .+2 |
361 0288 EBC0 rjmp .L112 |
362 028a 82E0 ldi r24,lo8(2) |
363 .L138: |
364 028c 8093 0000 sts Sync.0,r24 |
365 0290 8091 0000 lds r24,FrameCnt.1 |
366 0294 8F5F subi r24,lo8(-(1)) |
367 0296 8093 0000 sts FrameCnt.1,r24 |
368 029a 83E0 ldi r24,lo8(3) |
369 029c E9C0 rjmp .L136 |
370 .L106: |
371 029e 9230 cpi r25,lo8(2) |
372 02a0 D1F4 brne .L108 |
373 02a2 232B or r18,r19 |
374 02a4 09F0 breq .+2 |
375 02a6 DCC0 rjmp .L112 |
376 02a8 83E0 ldi r24,lo8(3) |
377 02aa 8093 0000 sts SpektrumTimer,r24 |
378 02ae 4093 0000 sts ByteHigh.2,r20 |
379 02b2 9091 0000 lds r25,FrameCnt.1 |
380 02b6 9230 cpi r25,lo8(2) |
381 02b8 39F4 brne .L109 |
382 02ba 1092 0000 sts Frame2.4,__zero_reg__ |
383 02be 47FF sbrs r20,7 |
384 02c0 03C0 rjmp .L109 |
385 02c2 81E0 ldi r24,lo8(1) |
386 02c4 8093 0000 sts Frame2.4,r24 |
387 .L109: |
388 02c8 83E0 ldi r24,lo8(3) |
389 02ca 8093 0000 sts Sync.0,r24 |
390 02ce 9F5F subi r25,lo8(-(1)) |
391 02d0 9093 0000 sts FrameCnt.1,r25 |
392 02d4 CFC0 rjmp .L105 |
393 .L108: |
394 02d6 9330 cpi r25,lo8(3) |
395 02d8 09F0 breq .+2 |
396 02da C2C0 rjmp .L112 |
397 02dc 232B or r18,r19 |
398 02de 09F0 breq .+2 |
399 02e0 BFC0 rjmp .L112 |
400 02e2 9093 0000 sts SpektrumTimer,r25 |
401 02e6 82E0 ldi r24,lo8(2) |
402 02e8 8093 0000 sts Sync.0,r24 |
403 02ec 8091 0000 lds r24,FrameCnt.1 |
404 02f0 8F5F subi r24,lo8(-(1)) |
405 02f2 8093 0000 sts FrameCnt.1,r24 |
406 02f6 2091 0000 lds r18,ByteHigh.2 |
407 02fa 822F mov r24,r18 |
408 02fc 9927 clr r25 |
409 02fe 782F mov r23,r24 |
410 0300 6627 clr r22 |
411 0302 842F mov r24,r20 |
412 0304 9927 clr r25 |
413 0306 682B or r22,r24 |
414 0308 792B or r23,r25 |
415 030a 8091 0000 lds r24,EE_Parameter+39 |
416 030e 8130 cpi r24,lo8(1) |
417 0310 49F4 brne .L113 |
418 0312 7370 andi r23,hi8(1023) |
419 0314 CB01 movw r24,r22 |
420 0316 8050 subi r24,lo8(-(-512)) |
421 0318 9240 sbci r25,hi8(-(-512)) |
422 031a 63E0 ldi r22,lo8(3) |
423 031c 70E0 ldi r23,hi8(3) |
424 031e 0E94 0000 call __divmodhi4 |
425 0322 17C0 rjmp .L137 |
426 .L113: |
427 0324 8230 cpi r24,lo8(2) |
428 0326 61F4 brne .L115 |
429 0328 7770 andi r23,hi8(2047) |
430 032a CB01 movw r24,r22 |
431 032c 8050 subi r24,lo8(-(-1024)) |
432 032e 9440 sbci r25,hi8(-(-1024)) |
433 0330 66E0 ldi r22,lo8(6) |
434 0332 70E0 ldi r23,hi8(6) |
435 0334 0E94 0000 call __divmodhi4 |
436 0338 2695 lsr r18 |
437 033a 2695 lsr r18 |
438 033c 2695 lsr r18 |
439 033e 0BC0 rjmp .L135 |
440 .L115: |
441 0340 7370 andi r23,hi8(1023) |
442 0342 6856 subi r22,lo8(-(-360)) |
443 0344 7140 sbci r23,hi8(-(-360)) |
444 0346 CB01 movw r24,r22 |
445 0348 77FD sbrc r23,7 |
446 034a 0196 adiw r24,1 |
447 .L117: |
448 034c BC01 movw r22,r24 |
449 034e 7595 asr r23 |
450 0350 6795 ror r22 |
451 .L137: |
452 0352 2695 lsr r18 |
453 0354 2695 lsr r18 |
454 .L135: |
455 0356 022F mov r16,r18 |
456 0358 1127 clr r17 |
457 035a 0F70 andi r16,lo8(15) |
458 035c 1070 andi r17,hi8(15) |
459 035e 0F5F subi r16,lo8(-(1)) |
460 0360 1F4F sbci r17,hi8(-(1)) |
461 0362 0D30 cpi r16,13 |
462 0364 1105 cpc r17,__zero_reg__ |
463 0366 08F0 brlo .+2 |
464 0368 74C0 rjmp .L118 |
465 036a 7801 movw r14,r16 |
466 036c E00E add r14,r16 |
467 036e F11E adc r15,r17 |
468 0370 F701 movw r30,r14 |
469 0372 E050 subi r30,lo8(-(PPM_in)) |
470 0374 F040 sbci r31,hi8(-(PPM_in)) |
471 0376 8081 ld r24,Z |
472 0378 9181 ldd r25,Z+1 |
473 037a 9B01 movw r18,r22 |
474 037c 281B sub r18,r24 |
475 037e 390B sbc r19,r25 |
476 0380 C901 movw r24,r18 |
477 0382 37FF sbrs r19,7 |
478 0384 03C0 rjmp .L120 |
479 0386 9095 com r25 |
480 0388 8195 neg r24 |
481 038a 9F4F sbci r25,lo8(-1) |
482 .L120: |
483 038c 0697 sbiw r24,6 |
484 038e 94F4 brge .L119 |
485 0390 8091 0000 lds r24,SenderOkay |
486 0394 883C cpi r24,lo8(-56) |
487 0396 30F4 brsh .L121 |
488 0398 8091 0000 lds r24,SenderOkay |
489 039c 865F subi r24,lo8(-(10)) |
490 039e 8093 0000 sts SenderOkay,r24 |
491 03a2 08C0 rjmp .L119 |
492 .L121: |
493 03a4 88EC ldi r24,lo8(-56) |
494 03a6 8093 0000 sts SenderOkay,r24 |
495 03aa 8091 6F00 lds r24,111 |
496 03ae 8F7D andi r24,lo8(-33) |
497 03b0 8093 6F00 sts 111,r24 |
498 .L119: |
499 03b4 F701 movw r30,r14 |
500 03b6 E050 subi r30,lo8(-(PPM_in)) |
501 03b8 F040 sbci r31,hi8(-(PPM_in)) |
502 03ba 8081 ld r24,Z |
503 03bc 9181 ldd r25,Z+1 |
504 03be 9C01 movw r18,r24 |
505 03c0 220F lsl r18 |
506 03c2 331F rol r19 |
507 03c4 280F add r18,r24 |
508 03c6 391F adc r19,r25 |
509 03c8 260F add r18,r22 |
510 03ca 371F adc r19,r23 |
511 03cc 37FF sbrs r19,7 |
512 03ce 02C0 rjmp .L123 |
513 03d0 2D5F subi r18,lo8(-(3)) |
514 03d2 3F4F sbci r19,hi8(-(3)) |
515 .L123: |
516 03d4 E901 movw r28,r18 |
517 03d6 D595 asr r29 |
518 03d8 C795 ror r28 |
519 03da D595 asr r29 |
520 03dc C795 ror r28 |
521 03de CB01 movw r24,r22 |
522 03e0 0196 adiw r24,1 |
523 03e2 8C17 cp r24,r28 |
524 03e4 9D07 cpc r25,r29 |
525 03e6 14F4 brge .L124 |
526 03e8 2197 sbiw r28,1 |
527 03ea 06C0 rjmp .L125 |
528 .L124: |
529 03ec 6150 subi r22,lo8(-(-1)) |
530 03ee 7040 sbci r23,hi8(-(-1)) |
531 03f0 C617 cp r28,r22 |
532 03f2 D707 cpc r29,r23 |
533 03f4 0CF4 brge .L125 |
534 03f6 2196 adiw r28,1 |
535 .L125: |
536 03f8 8091 0000 lds r24,SenderOkay |
537 03fc 843B cpi r24,lo8(-76) |
538 03fe D0F0 brlo .L127 |
539 0400 F701 movw r30,r14 |
540 0402 E050 subi r30,lo8(-(PPM_in)) |
541 0404 F040 sbci r31,hi8(-(PPM_in)) |
542 0406 8081 ld r24,Z |
543 0408 9181 ldd r25,Z+1 |
544 040a FE01 movw r30,r28 |
545 040c E81B sub r30,r24 |
546 040e F90B sbc r31,r25 |
547 0410 CF01 movw r24,r30 |
548 0412 63E0 ldi r22,lo8(3) |
549 0414 70E0 ldi r23,hi8(3) |
550 0416 0E94 0000 call __divmodhi4 |
551 041a CB01 movw r24,r22 |
552 041c 880F lsl r24 |
553 041e 991F rol r25 |
554 0420 860F add r24,r22 |
555 0422 971F adc r25,r23 |
556 0424 20E0 ldi r18,lo8(PPM_diff) |
557 0426 30E0 ldi r19,hi8(PPM_diff) |
558 0428 E20E add r14,r18 |
559 042a F31E adc r15,r19 |
560 042c F701 movw r30,r14 |
561 042e 9183 std Z+1,r25 |
562 0430 8083 st Z,r24 |
563 0432 07C0 rjmp .L128 |
564 .L127: |
565 0434 20E0 ldi r18,lo8(PPM_diff) |
566 0436 30E0 ldi r19,hi8(PPM_diff) |
567 0438 E20E add r14,r18 |
568 043a F31E adc r15,r19 |
569 043c F701 movw r30,r14 |
570 043e 1182 std Z+1,__zero_reg__ |
571 0440 1082 st Z,__zero_reg__ |
572 .L128: |
573 0442 000F add r16,r16 |
574 0444 111F adc r17,r17 |
575 0446 0050 subi r16,lo8(-(PPM_in)) |
576 0448 1040 sbci r17,hi8(-(PPM_in)) |
577 044a F801 movw r30,r16 |
578 044c D183 std Z+1,r29 |
579 044e C083 st Z,r28 |
580 0450 11C0 rjmp .L105 |
581 .L118: |
582 0452 0231 cpi r16,18 |
583 0454 1105 cpc r17,__zero_reg__ |
584 0456 70F0 brlo .L105 |
585 0458 81E0 ldi r24,lo8(1) |
586 045a 8093 0000 sts ReSync.3,r24 |
587 045e 0AC0 rjmp .L105 |
588 .L112: |
589 0460 81E0 ldi r24,lo8(1) |
590 0462 8093 0000 sts ReSync.3,r24 |
591 0466 1092 0000 sts FrameCnt.1,__zero_reg__ |
592 046a 1092 0000 sts Frame2.4,__zero_reg__ |
593 046e 84E4 ldi r24,lo8(68) |
594 .L136: |
595 0470 8093 0000 sts SpektrumTimer,r24 |
596 .L105: |
597 0474 8091 0000 lds r24,FrameCnt.1 |
598 0478 8031 cpi r24,lo8(16) |
599 047a 98F0 brlo .L97 |
600 047c 8091 0000 lds r24,Frame2.4 |
601 0480 8823 tst r24 |
602 0482 31F4 brne .L133 |
603 0484 8091 0000 lds r24,ReSync.3 |
604 0488 8823 tst r24 |
605 048a 11F4 brne .L133 |
606 048c 8093 0000 sts NewPpmData,r24 |
607 .L133: |
608 0490 1092 0000 sts FrameCnt.1,__zero_reg__ |
609 0494 1092 0000 sts Frame2.4,__zero_reg__ |
610 0498 1092 0000 sts Sync.0,__zero_reg__ |
611 049c 84E4 ldi r24,lo8(68) |
612 049e 8093 0000 sts SpektrumTimer,r24 |
613 .L97: |
614 /* epilogue: frame size=0 */ |
615 04a2 E6E0 ldi r30,6 |
616 04a4 CDB7 in r28,__SP_L__ |
617 04a6 DEB7 in r29,__SP_H__ |
618 04a8 0C94 0000 jmp __epilogue_restores__+24 |
619 /* epilogue end (size=5) */ |
620 /* function SpektrumParser size 334 (323) */ |
622 /* File "Spektrum.c": code 604 = 0x025c ( 582), prologues 11, epilogues 11 */ |
8 .text |
9 .global SpektrumUartInit |
11 SpektrumUartInit: |
12 /* prologue: function */ |
13 /* frame size = 0 */ |
14 0000 9FB7 in r25,__SREG__ |
15 /* #APP */ |
16 ; 84 "Spektrum.c" 1 |
17 0002 F894 cli |
18 ; 0 "" 2 |
19 /* #NOAPP */ |
20 0004 8091 C900 lds r24,201 |
21 0008 8F77 andi r24,lo8(127) |
22 000a 8093 C900 sts 201,r24 |
23 000e 8091 C900 lds r24,201 |
24 0012 8F7B andi r24,lo8(-65) |
25 0014 8093 C900 sts 201,r24 |
26 0018 8091 C900 lds r24,201 |
27 001c 8F7D andi r24,lo8(-33) |
28 001e 8093 C900 sts 201,r24 |
29 0022 5A9A sbi 43-32,2 |
30 0024 5298 cbi 42-32,2 |
31 0026 5B9A sbi 43-32,3 |
32 0028 539A sbi 42-32,3 |
33 002a 1092 CD00 sts 205,__zero_reg__ |
34 002e 84E1 ldi r24,lo8(20) |
35 0030 8093 CC00 sts 204,r24 |
36 0034 8091 C800 lds r24,200 |
37 0038 8260 ori r24,lo8(2) |
38 003a 8093 C800 sts 200,r24 |
39 003e 80E1 ldi r24,lo8(16) |
40 0040 8093 C900 sts 201,r24 |
41 0044 8091 CA00 lds r24,202 |
42 0048 8F77 andi r24,lo8(127) |
43 004a 8093 CA00 sts 202,r24 |
44 004e 8091 CA00 lds r24,202 |
45 0052 8F7B andi r24,lo8(-65) |
46 0054 8093 CA00 sts 202,r24 |
47 0058 8091 CA00 lds r24,202 |
48 005c 8F7D andi r24,lo8(-33) |
49 005e 8093 CA00 sts 202,r24 |
50 0062 8091 CA00 lds r24,202 |
51 0066 8F7E andi r24,lo8(-17) |
52 0068 8093 CA00 sts 202,r24 |
53 006c 8091 CA00 lds r24,202 |
54 0070 877F andi r24,lo8(-9) |
55 0072 8093 CA00 sts 202,r24 |
56 0076 8091 C900 lds r24,201 |
57 007a 8B7F andi r24,lo8(-5) |
58 007c 8093 C900 sts 201,r24 |
59 0080 8091 CA00 lds r24,202 |
60 0084 8460 ori r24,lo8(4) |
61 0086 8093 CA00 sts 202,r24 |
62 008a 8091 CA00 lds r24,202 |
63 008e 8260 ori r24,lo8(2) |
64 0090 8093 CA00 sts 202,r24 |
65 0094 00C0 rjmp .L2 |
66 .L3: |
67 0096 8091 CE00 lds r24,206 |
68 .L2: |
69 009a 8091 C800 lds r24,200 |
70 009e 87FD sbrc r24,7 |
71 00a0 00C0 rjmp .L3 |
72 00a2 8091 C900 lds r24,201 |
73 00a6 8068 ori r24,lo8(-128) |
74 00a8 8093 C900 sts 201,r24 |
75 00ac 9FBF out __SREG__,r25 |
76 /* epilogue start */ |
77 00ae 0895 ret |
79 .global SpektrumParser |
81 SpektrumParser: |
82 00b0 0F93 push r16 |
83 00b2 1F93 push r17 |
84 00b4 CF93 push r28 |
85 00b6 DF93 push r29 |
86 /* prologue: function */ |
87 /* frame size = 0 */ |
88 00b8 982F mov r25,r24 |
89 00ba 8091 0000 lds r24,ReSync.2382 |
90 00be 8130 cpi r24,lo8(1) |
91 00c0 01F4 brne .L6 |
92 00c2 1092 0000 sts ReSync.2382,__zero_reg__ |
93 00c6 84E4 ldi r24,lo8(68) |
94 00c8 8093 0000 sts SpektrumTimer,r24 |
95 00cc 1092 0000 sts FrameCnt.2380,__zero_reg__ |
96 00d0 1092 0000 sts Sync.2379,__zero_reg__ |
97 00d4 1092 0000 sts ByteHigh.2381,__zero_reg__ |
98 00d8 00C0 rjmp .L27 |
99 .L6: |
100 00da 20E0 ldi r18,lo8(0) |
101 00dc 30E0 ldi r19,hi8(0) |
102 00de 8091 0000 lds r24,SpektrumTimer |
103 00e2 8823 tst r24 |
104 00e4 01F4 brne .L8 |
105 00e6 21E0 ldi r18,lo8(1) |
106 00e8 30E0 ldi r19,hi8(1) |
107 .L8: |
108 00ea 8091 0000 lds r24,Sync.2379 |
109 00ee 8823 tst r24 |
110 00f0 01F4 brne .L9 |
111 00f2 232B or r18,r19 |
112 00f4 01F0 breq .L10 |
113 00f6 81E0 ldi r24,lo8(1) |
114 00f8 00C0 rjmp .L31 |
115 .L10: |
116 00fa 84E4 ldi r24,lo8(68) |
117 00fc 8093 0000 sts SpektrumTimer,r24 |
118 0100 1092 0000 sts FrameCnt.2380,__zero_reg__ |
119 0104 1092 0000 sts Sync.2379,__zero_reg__ |
120 0108 1092 0000 sts ByteHigh.2381,__zero_reg__ |
121 010c 00C0 rjmp .L11 |
122 .L9: |
123 010e 8130 cpi r24,lo8(1) |
124 0110 01F4 brne .L12 |
125 0112 232B or r18,r19 |
126 0114 01F0 breq .+2 |
127 0116 00C0 rjmp .L15 |
128 0118 82E0 ldi r24,lo8(2) |
129 .L31: |
130 011a 8093 0000 sts Sync.2379,r24 |
131 011e 8091 0000 lds r24,FrameCnt.2380 |
132 0122 8F5F subi r24,lo8(-(1)) |
133 0124 8093 0000 sts FrameCnt.2380,r24 |
134 0128 83E0 ldi r24,lo8(3) |
135 012a 00C0 rjmp .L30 |
136 .L12: |
137 012c 8230 cpi r24,lo8(2) |
138 012e 01F4 brne .L13 |
139 0130 232B or r18,r19 |
140 0132 01F0 breq .+2 |
141 0134 00C0 rjmp .L15 |
142 0136 83E0 ldi r24,lo8(3) |
143 0138 8093 0000 sts SpektrumTimer,r24 |
144 013c 9093 0000 sts ByteHigh.2381,r25 |
145 0140 2091 0000 lds r18,FrameCnt.2380 |
146 0144 2230 cpi r18,lo8(2) |
147 0146 01F4 brne .L14 |
148 0148 1092 0000 sts Frame2.2383,__zero_reg__ |
149 014c 97FF sbrs r25,7 |
150 014e 00C0 rjmp .L14 |
151 0150 81E0 ldi r24,lo8(1) |
152 0152 8093 0000 sts Frame2.2383,r24 |
153 .L14: |
154 0156 83E0 ldi r24,lo8(3) |
155 0158 8093 0000 sts Sync.2379,r24 |
156 015c 2F5F subi r18,lo8(-(1)) |
157 015e 2093 0000 sts FrameCnt.2380,r18 |
158 0162 00C0 rjmp .L11 |
159 .L13: |
160 0164 8330 cpi r24,lo8(3) |
161 0166 01F0 breq .+2 |
162 0168 00C0 rjmp .L15 |
163 016a 232B or r18,r19 |
164 016c 01F0 breq .+2 |
165 016e 00C0 rjmp .L15 |
166 0170 8093 0000 sts SpektrumTimer,r24 |
167 0174 82E0 ldi r24,lo8(2) |
168 0176 8093 0000 sts Sync.2379,r24 |
169 017a 8091 0000 lds r24,FrameCnt.2380 |
170 017e 8F5F subi r24,lo8(-(1)) |
171 0180 8093 0000 sts FrameCnt.2380,r24 |
172 0184 4091 0000 lds r20,ByteHigh.2381 |
173 0188 292F mov r18,r25 |
174 018a 30E0 ldi r19,lo8(0) |
175 018c 942F mov r25,r20 |
176 018e 80E0 ldi r24,lo8(0) |
177 0190 282B or r18,r24 |
178 0192 392B or r19,r25 |
179 0194 8091 0000 lds r24,EE_Parameter+39 |
180 0198 8130 cpi r24,lo8(1) |
181 019a 01F4 brne .L16 |
182 019c 3370 andi r19,hi8(1023) |
183 019e C901 movw r24,r18 |
184 01a0 8050 subi r24,lo8(-(-512)) |
185 01a2 9240 sbci r25,hi8(-(-512)) |
186 01a4 63E0 ldi r22,lo8(3) |
187 01a6 70E0 ldi r23,hi8(3) |
188 01a8 00C0 rjmp .L28 |
189 .L16: |
190 01aa 8230 cpi r24,lo8(2) |
191 01ac 01F4 brne .L18 |
192 01ae 3770 andi r19,hi8(2047) |
193 01b0 C901 movw r24,r18 |
194 01b2 8050 subi r24,lo8(-(-1024)) |
195 01b4 9440 sbci r25,hi8(-(-1024)) |
196 01b6 66E0 ldi r22,lo8(6) |
197 01b8 70E0 ldi r23,hi8(6) |
198 01ba 0E94 0000 call __divmodhi4 |
199 01be EB01 movw r28,r22 |
200 01c0 4695 lsr r20 |
201 01c2 4695 lsr r20 |
202 01c4 4695 lsr r20 |
203 01c6 00C0 rjmp .L29 |
204 .L18: |
205 01c8 3370 andi r19,hi8(1023) |
206 01ca C901 movw r24,r18 |
207 01cc 8856 subi r24,lo8(-(-360)) |
208 01ce 9140 sbci r25,hi8(-(-360)) |
209 01d0 62E0 ldi r22,lo8(2) |
210 01d2 70E0 ldi r23,hi8(2) |
211 .L28: |
212 01d4 0E94 0000 call __divmodhi4 |
213 01d8 EB01 movw r28,r22 |
214 01da 4695 lsr r20 |
215 01dc 4695 lsr r20 |
216 .L29: |
217 01de 842F mov r24,r20 |
218 01e0 90E0 ldi r25,lo8(0) |
219 01e2 8F70 andi r24,lo8(15) |
220 01e4 9070 andi r25,hi8(15) |
221 01e6 8C01 movw r16,r24 |
222 01e8 0F5F subi r16,lo8(-(1)) |
223 01ea 1F4F sbci r17,hi8(-(1)) |
224 01ec 0D30 cpi r16,13 |
225 01ee 1105 cpc r17,__zero_reg__ |
226 01f0 00F0 brlo .+2 |
227 01f2 00C0 rjmp .L11 |
228 01f4 F801 movw r30,r16 |
229 01f6 EE0F lsl r30 |
230 01f8 FF1F rol r31 |
231 01fa E050 subi r30,lo8(-(PPM_in)) |
232 01fc F040 sbci r31,hi8(-(PPM_in)) |
233 01fe 8081 ld r24,Z |
234 0200 9181 ldd r25,Z+1 |
235 0202 9E01 movw r18,r28 |
236 0204 281B sub r18,r24 |
237 0206 390B sbc r19,r25 |
238 0208 C901 movw r24,r18 |
239 020a 37FF sbrs r19,7 |
240 020c 00C0 rjmp .L20 |
241 020e 9095 com r25 |
242 0210 8195 neg r24 |
243 0212 9F4F sbci r25,lo8(-1) |
244 .L20: |
245 0214 0697 sbiw r24,6 |
246 0216 04F4 brge .L19 |
247 0218 8091 0000 lds r24,SenderOkay |
248 021c 883C cpi r24,lo8(-56) |
249 021e 00F4 brsh .L21 |
250 0220 8091 0000 lds r24,SenderOkay |
251 0224 865F subi r24,lo8(-(10)) |
252 0226 8093 0000 sts SenderOkay,r24 |
253 022a 00C0 rjmp .L19 |
254 .L21: |
255 022c 88EC ldi r24,lo8(-56) |
256 022e 8093 0000 sts SenderOkay,r24 |
257 0232 8091 6F00 lds r24,111 |
258 0236 8F7D andi r24,lo8(-33) |
259 0238 8093 6F00 sts 111,r24 |
260 .L19: |
261 023c F801 movw r30,r16 |
262 023e EE0F lsl r30 |
263 0240 FF1F rol r31 |
264 0242 E050 subi r30,lo8(-(PPM_in)) |
265 0244 F040 sbci r31,hi8(-(PPM_in)) |
266 0246 2081 ld r18,Z |
267 0248 3181 ldd r19,Z+1 |
268 024a C901 movw r24,r18 |
269 024c 880F lsl r24 |
270 024e 991F rol r25 |
271 0250 820F add r24,r18 |
272 0252 931F adc r25,r19 |
273 0254 8C0F add r24,r28 |
274 0256 9D1F adc r25,r29 |
275 0258 64E0 ldi r22,lo8(4) |
276 025a 70E0 ldi r23,hi8(4) |
277 025c 0E94 0000 call __divmodhi4 |
278 0260 9B01 movw r18,r22 |
279 0262 CE01 movw r24,r28 |
280 0264 0196 adiw r24,1 |
281 0266 8617 cp r24,r22 |
282 0268 9707 cpc r25,r23 |
283 026a 04F4 brge .L22 |
284 026c 2150 subi r18,lo8(-(-1)) |
285 026e 3040 sbci r19,hi8(-(-1)) |
286 0270 00C0 rjmp .L23 |
287 .L22: |
288 0272 2197 sbiw r28,1 |
289 0274 6C17 cp r22,r28 |
290 0276 7D07 cpc r23,r29 |
291 0278 04F4 brge .L23 |
292 027a 2F5F subi r18,lo8(-(1)) |
293 027c 3F4F sbci r19,hi8(-(1)) |
294 .L23: |
295 027e 8091 0000 lds r24,SenderOkay |
296 0282 E801 movw r28,r16 |
297 0284 CC0F lsl r28 |
298 0286 DD1F rol r29 |
299 0288 843B cpi r24,lo8(-76) |
300 028a 00F0 brlo .L24 |
301 028c FE01 movw r30,r28 |
302 028e E050 subi r30,lo8(-(PPM_in)) |
303 0290 F040 sbci r31,hi8(-(PPM_in)) |
304 0292 8081 ld r24,Z |
305 0294 9181 ldd r25,Z+1 |
306 0296 A901 movw r20,r18 |
307 0298 481B sub r20,r24 |
308 029a 590B sbc r21,r25 |
309 029c CA01 movw r24,r20 |
310 029e 63E0 ldi r22,lo8(3) |
311 02a0 70E0 ldi r23,hi8(3) |
312 02a2 0E94 0000 call __divmodhi4 |
313 02a6 CB01 movw r24,r22 |
314 02a8 880F lsl r24 |
315 02aa 991F rol r25 |
316 02ac 860F add r24,r22 |
317 02ae 971F adc r25,r23 |
318 02b0 C050 subi r28,lo8(-(PPM_diff)) |
319 02b2 D040 sbci r29,hi8(-(PPM_diff)) |
320 02b4 9983 std Y+1,r25 |
321 02b6 8883 st Y,r24 |
322 02b8 00C0 rjmp .L25 |
323 .L24: |
324 02ba C050 subi r28,lo8(-(PPM_diff)) |
325 02bc D040 sbci r29,hi8(-(PPM_diff)) |
326 02be 1982 std Y+1,__zero_reg__ |
327 02c0 1882 st Y,__zero_reg__ |
328 .L25: |
329 02c2 000F lsl r16 |
330 02c4 111F rol r17 |
331 02c6 0050 subi r16,lo8(-(PPM_in)) |
332 02c8 1040 sbci r17,hi8(-(PPM_in)) |
333 02ca F801 movw r30,r16 |
334 02cc 3183 std Z+1,r19 |
335 02ce 2083 st Z,r18 |
336 02d0 00C0 rjmp .L11 |
337 .L15: |
338 02d2 81E0 ldi r24,lo8(1) |
339 02d4 8093 0000 sts ReSync.2382,r24 |
340 02d8 1092 0000 sts FrameCnt.2380,__zero_reg__ |
341 02dc 1092 0000 sts Frame2.2383,__zero_reg__ |
342 02e0 84E4 ldi r24,lo8(68) |
343 .L30: |
344 02e2 8093 0000 sts SpektrumTimer,r24 |
345 .L11: |
346 02e6 8091 0000 lds r24,FrameCnt.2380 |
347 02ea 8031 cpi r24,lo8(16) |
348 02ec 00F0 brlo .L27 |
349 02ee 8091 0000 lds r24,Frame2.2383 |
350 02f2 8823 tst r24 |
351 02f4 01F4 brne .L26 |
352 02f6 8091 0000 lds r24,ReSync.2382 |
353 02fa 8823 tst r24 |
354 02fc 01F4 brne .L26 |
355 02fe 1092 0000 sts NewPpmData,__zero_reg__ |
356 .L26: |
357 0302 1092 0000 sts FrameCnt.2380,__zero_reg__ |
358 0306 1092 0000 sts Frame2.2383,__zero_reg__ |
359 030a 1092 0000 sts Sync.2379,__zero_reg__ |
360 030e 84E4 ldi r24,lo8(68) |
361 0310 8093 0000 sts SpektrumTimer,r24 |
362 .L27: |
363 /* epilogue start */ |
364 0314 DF91 pop r29 |
365 0316 CF91 pop r28 |
366 0318 1F91 pop r17 |
367 031a 0F91 pop r16 |
368 031c 0895 ret |
370 .global SpektrumBinding |
372 SpektrumBinding: |
373 031e CF93 push r28 |
374 0320 DF93 push r29 |
375 /* prologue: function */ |
376 /* frame size = 0 */ |
377 0322 80E1 ldi r24,lo8(10000) |
378 0324 97E2 ldi r25,hi8(10000) |
379 0326 0E94 0000 call SetDelay |
380 032a EC01 movw r28,r24 |
381 032c 8091 C900 lds r24,201 |
382 0330 8F77 andi r24,lo8(127) |
383 0332 8093 C900 sts 201,r24 |
384 0336 8091 C900 lds r24,201 |
385 033a 8F7E andi r24,lo8(-17) |
386 033c 8093 C900 sts 201,r24 |
387 0340 5A98 cbi 43-32,2 |
388 0342 00D0 rcall . |
389 0344 00D0 rcall . |
390 0346 80E0 ldi r24,lo8(gs(uart_putchar)) |
391 0348 90E0 ldi r25,hi8(gs(uart_putchar)) |
392 034a EDB7 in r30,__SP_L__ |
393 034c FEB7 in r31,__SP_H__ |
394 034e 9283 std Z+2,r25 |
395 0350 8183 std Z+1,r24 |
396 0352 80E0 ldi r24,lo8(__c.2218) |
397 0354 90E0 ldi r25,hi8(__c.2218) |
398 0356 9483 std Z+4,r25 |
399 0358 8383 std Z+3,r24 |
400 035a E091 0000 lds r30,_printf_P |
401 035e F091 0000 lds r31,(_printf_P)+1 |
402 0362 0995 icall |
403 0364 0F90 pop __tmp_reg__ |
404 0366 0F90 pop __tmp_reg__ |
405 0368 0F90 pop __tmp_reg__ |
406 036a 0F90 pop __tmp_reg__ |
407 036c 00C0 rjmp .L33 |
408 .L35: |
409 036e 4A9B sbis 41-32,2 |
410 0370 00C0 rjmp .L33 |
411 0372 8AE5 ldi r24,lo8(90) |
412 0374 90E0 ldi r25,hi8(90) |
413 0376 0E94 0000 call SetDelay |
414 037a EC01 movw r28,r24 |
415 037c 00D0 rcall . |
416 037e 00D0 rcall . |
417 0380 80E0 ldi r24,lo8(gs(uart_putchar)) |
418 0382 90E0 ldi r25,hi8(gs(uart_putchar)) |
419 0384 EDB7 in r30,__SP_L__ |
420 0386 FEB7 in r31,__SP_H__ |
421 0388 9283 std Z+2,r25 |
422 038a 8183 std Z+1,r24 |
423 038c 80E0 ldi r24,lo8(__c.2223) |
424 038e 90E0 ldi r25,hi8(__c.2223) |
425 0390 9483 std Z+4,r25 |
426 0392 8383 std Z+3,r24 |
427 0394 E091 0000 lds r30,_printf_P |
428 0398 F091 0000 lds r31,(_printf_P)+1 |
429 039c 0995 icall |
430 039e 529A sbi 42-32,2 |
431 03a0 0F90 pop __tmp_reg__ |
432 03a2 0F90 pop __tmp_reg__ |
433 03a4 0F90 pop __tmp_reg__ |
434 03a6 0F90 pop __tmp_reg__ |
435 03a8 00C0 rjmp .L34 |
436 .L33: |
437 03aa CE01 movw r24,r28 |
438 03ac 0E94 0000 call CheckDelay |
439 03b0 8823 tst r24 |
440 03b2 01F0 breq .L35 |
441 03b4 00C0 rjmp .L68 |
442 .L34: |
443 03b6 CE01 movw r24,r28 |
444 03b8 0E94 0000 call CheckDelay |
445 03bc 8823 tst r24 |
446 03be 01F0 breq .L34 |
447 03c0 80E0 ldi r24,lo8(0) |
448 03c2 90E0 ldi r25,hi8(0) |
449 .L37: |
450 03c4 5A9A sbi 43-32,2 |
451 03c6 0196 adiw r24,1 |
452 03c8 8436 cpi r24,100 |
453 03ca 9105 cpc r25,__zero_reg__ |
454 03cc 01F4 brne .L37 |
455 03ce 80E0 ldi r24,lo8(0) |
456 03d0 90E0 ldi r25,hi8(0) |
457 .L38: |
458 03d2 5A98 cbi 43-32,2 |
459 03d4 0196 adiw r24,1 |
460 03d6 F1E0 ldi r31,hi8(400) |
461 03d8 8039 cpi r24,lo8(400) |
462 03da 9F07 cpc r25,r31 |
463 03dc 01F4 brne .L38 |
464 03de 80E0 ldi r24,lo8(0) |
465 03e0 90E0 ldi r25,hi8(0) |
466 .L39: |
467 03e2 5A9A sbi 43-32,2 |
468 03e4 0196 adiw r24,1 |
469 03e6 8A30 cpi r24,10 |
470 03e8 9105 cpc r25,__zero_reg__ |
471 03ea 01F4 brne .L39 |
472 03ec 80E0 ldi r24,lo8(0) |
473 03ee 90E0 ldi r25,hi8(0) |
474 .L40: |
475 03f0 5A98 cbi 43-32,2 |
476 03f2 0196 adiw r24,1 |
477 03f4 8A30 cpi r24,10 |
478 03f6 9105 cpc r25,__zero_reg__ |
479 03f8 01F4 brne .L40 |
480 03fa 80E0 ldi r24,lo8(0) |
481 03fc 90E0 ldi r25,hi8(0) |
482 .L41: |
483 03fe 5A9A sbi 43-32,2 |
484 0400 0196 adiw r24,1 |
485 0402 21E0 ldi r18,hi8(400) |
486 0404 8039 cpi r24,lo8(400) |
487 0406 9207 cpc r25,r18 |
488 0408 01F4 brne .L41 |
489 040a 80E0 ldi r24,lo8(0) |
490 040c 90E0 ldi r25,hi8(0) |
491 .L42: |
492 040e 5A98 cbi 43-32,2 |
493 0410 0196 adiw r24,1 |
494 0412 E1E0 ldi r30,hi8(400) |
495 0414 8039 cpi r24,lo8(400) |
496 0416 9E07 cpc r25,r30 |
497 0418 01F4 brne .L42 |
498 041a 80E0 ldi r24,lo8(0) |
499 041c 90E0 ldi r25,hi8(0) |
500 .L43: |
501 041e 5A9A sbi 43-32,2 |
502 0420 0196 adiw r24,1 |
503 0422 8A30 cpi r24,10 |
504 0424 9105 cpc r25,__zero_reg__ |
505 0426 01F4 brne .L43 |
506 0428 80E0 ldi r24,lo8(0) |
507 042a 90E0 ldi r25,hi8(0) |
508 .L44: |
509 042c 5A98 cbi 43-32,2 |
510 042e 0196 adiw r24,1 |
511 0430 8A30 cpi r24,10 |
512 0432 9105 cpc r25,__zero_reg__ |
513 0434 01F4 brne .L44 |
514 0436 80E0 ldi r24,lo8(0) |
515 0438 90E0 ldi r25,hi8(0) |
516 .L45: |
517 043a 5A9A sbi 43-32,2 |
518 043c 0196 adiw r24,1 |
519 043e F1E0 ldi r31,hi8(400) |
520 0440 8039 cpi r24,lo8(400) |
521 0442 9F07 cpc r25,r31 |
522 0444 01F4 brne .L45 |
523 0446 80E0 ldi r24,lo8(0) |
524 0448 90E0 ldi r25,hi8(0) |
525 .L46: |
526 044a 5A98 cbi 43-32,2 |
527 044c 0196 adiw r24,1 |
528 044e 21E0 ldi r18,hi8(400) |
529 0450 8039 cpi r24,lo8(400) |
530 0452 9207 cpc r25,r18 |
531 0454 01F4 brne .L46 |
532 0456 80E0 ldi r24,lo8(0) |
533 0458 90E0 ldi r25,hi8(0) |
534 .L47: |
535 045a 5A9A sbi 43-32,2 |
536 045c 0196 adiw r24,1 |
537 045e 8A30 cpi r24,10 |
538 0460 9105 cpc r25,__zero_reg__ |
539 0462 01F4 brne .L47 |
540 0464 80E0 ldi r24,lo8(0) |
541 0466 90E0 ldi r25,hi8(0) |
542 .L48: |
543 0468 5A98 cbi 43-32,2 |
544 046a 0196 adiw r24,1 |
545 046c 8A30 cpi r24,10 |
546 046e 9105 cpc r25,__zero_reg__ |
547 0470 01F4 brne .L48 |
548 0472 80E0 ldi r24,lo8(0) |
549 0474 90E0 ldi r25,hi8(0) |
550 .L49: |
551 0476 5A9A sbi 43-32,2 |
552 0478 0196 adiw r24,1 |
553 047a E1E0 ldi r30,hi8(400) |
554 047c 8039 cpi r24,lo8(400) |
555 047e 9E07 cpc r25,r30 |
556 0480 01F4 brne .L49 |
557 .L50: |
558 0482 5298 cbi 42-32,2 |
559 0484 5A98 cbi 43-32,2 |
560 0486 0E94 0000 call SpektrumUartInit |
561 /* epilogue start */ |
562 048a DF91 pop r29 |
563 048c CF91 pop r28 |
564 048e 0895 ret |
565 .L68: |
566 0490 00D0 rcall . |
567 0492 00D0 rcall . |
568 0494 80E0 ldi r24,lo8(gs(uart_putchar)) |
569 0496 90E0 ldi r25,hi8(gs(uart_putchar)) |
570 0498 EDB7 in r30,__SP_L__ |
571 049a FEB7 in r31,__SP_H__ |
572 049c 9283 std Z+2,r25 |
573 049e 8183 std Z+1,r24 |
574 04a0 80E0 ldi r24,lo8(__c.2267) |
575 04a2 90E0 ldi r25,hi8(__c.2267) |
576 04a4 9483 std Z+4,r25 |
577 04a6 8383 std Z+3,r24 |
578 04a8 E091 0000 lds r30,_printf_P |
579 04ac F091 0000 lds r31,(_printf_P)+1 |
580 04b0 0995 icall |
581 04b2 0F90 pop __tmp_reg__ |
582 04b4 0F90 pop __tmp_reg__ |
583 04b6 0F90 pop __tmp_reg__ |
584 04b8 0F90 pop __tmp_reg__ |
585 04ba 00C0 rjmp .L50 |
587 .global SpektrumTimer |
588 .global SpektrumTimer |
589 .section .bss |
592 SpektrumTimer: |
593 0000 00 .skip 1,0 |
594 .lcomm Frame2.2383,1 |
595 .data |
598 ReSync.2382: |
599 0000 01 .byte 1 |
600 .lcomm ByteHigh.2381,1 |
601 .lcomm FrameCnt.2380,1 |
602 .lcomm Sync.2379,1 |
603 .section .progmem.data,"a",@progbits |
606 __c.2267: |
607 0000 5469 6D65 .string "Timeout.\n\r" |
607 6F75 742E |
607 0A0D 00 |
610 __c.2223: |
611 000b 6F6B 2E0A .string "ok.\n\r" |
611 0D00 |
614 __c.2218: |
615 0011 0A0D 506C .string "\n\rPlease connect Spektrum receiver for binding NOW..." |
615 6561 7365 |
615 2063 6F6E |
615 6E65 6374 |
615 2053 7065 |
616 .global __do_copy_data |
617 .global __do_clear_bss |
DEFINED SYMBOLS |
*ABS*:00000000 Spektrum.c |
C:\Users\Arthur-P\AppData\Local\Temp/ccIfbaaa.s:3 *ABS*:0000003f __SREG__ |
C:\Users\Arthur-P\AppData\Local\Temp/ccIfbaaa.s:4 *ABS*:0000003e __SP_H__ |
C:\Users\Arthur-P\AppData\Local\Temp/ccIfbaaa.s:5 *ABS*:0000003d __SP_L__ |
C:\Users\Arthur-P\AppData\Local\Temp/ccIfbaaa.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Users\Arthur-P\AppData\Local\Temp/ccIfbaaa.s:7 *ABS*:00000001 __zero_reg__ |
C:\Users\Arthur-P\AppData\Local\Temp/ccIfbaaa.s:15 .bss:00000000 SpektrumTimer |
C:\Users\Arthur-P\AppData\Local\Temp/ccIfbaaa.s:20 .text:00000000 SpektrumUartInit |
C:\Users\Arthur-P\AppData\Local\Temp/ccIfbaaa.s:94 .progmem.data:00000000 __c.5 |
C:\Users\Arthur-P\AppData\Local\Temp/ccIfbaaa.s:98 .progmem.data:00000036 __c.6 |
C:\Users\Arthur-P\AppData\Local\Temp/ccIfbaaa.s:102 .progmem.data:0000003c __c.7 |
C:\Users\Arthur-P\AppData\Local\Temp/ccIfbaaa.s:107 .text:000000b6 SpektrumBinding |
.bss:00000001 Sync.0 |
C:\Users\Arthur-P\AppData\Local\Temp/ccIfbaaa.s:298 .bss:00000002 FrameCnt.1 |
C:\Users\Arthur-P\AppData\Local\Temp/ccIfbaaa.s:299 .bss:00000003 ByteHigh.2 |
C:\Users\Arthur-P\AppData\Local\Temp/ccIfbaaa.s:304 .data:00000000 ReSync.3 |
C:\Users\Arthur-P\AppData\Local\Temp/ccIfbaaa.s:300 .bss:00000004 Frame2.4 |
C:\Users\Arthur-P\AppData\Local\Temp/ccIfbaaa.s:310 .text:0000021a SpektrumParser |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:2 *ABS*:0000003f __SREG__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:3 *ABS*:0000003e __SP_H__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:4 *ABS*:0000003d __SP_L__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:5 *ABS*:00000034 __CCP__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:11 .text:00000000 SpektrumUartInit |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:81 .text:000000b0 SpektrumParser |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:598 .data:00000000 ReSync.2382 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:592 .bss:00000000 SpektrumTimer |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:600 .bss:00000003 FrameCnt.2380 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:601 .bss:00000004 Sync.2379 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:594 .bss:00000002 ByteHigh.2381 |
.bss:00000001 Frame2.2383 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:372 .text:0000031e SpektrumBinding |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:614 .progmem.data:00000011 __c.2218 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:610 .progmem.data:0000000b __c.2223 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccUjdFTS.s:606 .progmem.data:00000000 __c.2267 |
|
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
SetDelay |
uart_putchar |
_printf_P |
CheckDelay |
__epilogue_restores__ |
EE_Parameter |
__divmodhi4 |
PPM_in |
645,3 → 634,9 |
SenderOkay |
PPM_diff |
NewPpmData |
SetDelay |
uart_putchar |
_printf_P |
CheckDelay |
__do_copy_data |
__do_clear_bss |