Go to most recent revision | Blame | Last modification | View Log | RSS feed
1 .file "Spektrum.c"
2 .arch atmega644p
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
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 .lcomm Sync.0,1
92 .lcomm FrameCnt.1,1
93 .lcomm ByteHigh.2,1
94 .data
97 ReSync.3:
98 0000 01 .byte 1
99 .lcomm Frame2.4,1
100 .text
101 .global SpektrumParser
103 SpektrumParser:
104 /* prologue: frame size=0 */
105 00b6 EF92 push r14
106 00b8 FF92 push r15
107 00ba 0F93 push r16
108 00bc 1F93 push r17
109 00be CF93 push r28
110 00c0 DF93 push r29
111 /* prologue end (size=6) */
112 00c2 482F mov r20,r24
113 00c4 00E0 ldi r16,lo8(0)
114 00c6 10E0 ldi r17,hi8(0)
115 00c8 8091 0000 lds r24,ReSync.3
116 00cc 8130 cpi r24,lo8(1)
117 00ce 61F4 brne .L9
118 00d0 1092 0000 sts ReSync.3,__zero_reg__
119 00d4 84E4 ldi r24,lo8(68)
120 00d6 8093 0000 sts SpektrumTimer,r24
121 00da 1092 0000 sts FrameCnt.1,__zero_reg__
122 00de 1092 0000 sts Sync.0,__zero_reg__
123 00e2 1092 0000 sts ByteHigh.2,__zero_reg__
124 00e6 2BC1 rjmp .L8
125 .L9:
126 00e8 8091 0000 lds r24,SpektrumTimer
127 00ec 8823 tst r24
128 00ee 19F4 brne .L11
129 00f0 21E0 ldi r18,lo8(1)
130 00f2 30E0 ldi r19,hi8(1)
131 00f4 01C0 rjmp .L12
132 .L11:
133 00f6 9801 movw r18,r16
134 .L12:
135 00f8 9091 0000 lds r25,Sync.0
136 00fc 9923 tst r25
137 00fe 71F4 brne .L13
138 0100 232B or r18,r19
139 0102 11F0 breq .L14
140 0104 81E0 ldi r24,lo8(1)
141 0106 10C0 rjmp .L49
142 .L14:
143 0108 84E4 ldi r24,lo8(68)
144 010a 8093 0000 sts SpektrumTimer,r24
145 010e 9093 0000 sts FrameCnt.1,r25
146 0112 9093 0000 sts Sync.0,r25
147 0116 9093 0000 sts ByteHigh.2,r25
148 011a FAC0 rjmp .L16
149 .L13:
150 011c 9130 cpi r25,lo8(1)
151 011e 69F4 brne .L17
152 0120 232B or r18,r19
153 0122 09F0 breq .+2
154 0124 EBC0 rjmp .L23
155 0126 82E0 ldi r24,lo8(2)
156 .L49:
157 0128 8093 0000 sts Sync.0,r24
158 012c 8091 0000 lds r24,FrameCnt.1
159 0130 8F5F subi r24,lo8(-(1))
160 0132 8093 0000 sts FrameCnt.1,r24
161 0136 83E0 ldi r24,lo8(3)
162 0138 E9C0 rjmp .L47
163 .L17:
164 013a 9230 cpi r25,lo8(2)
165 013c D1F4 brne .L19
166 013e 232B or r18,r19
167 0140 09F0 breq .+2
168 0142 DCC0 rjmp .L23
169 0144 83E0 ldi r24,lo8(3)
170 0146 8093 0000 sts SpektrumTimer,r24
171 014a 4093 0000 sts ByteHigh.2,r20
172 014e 9091 0000 lds r25,FrameCnt.1
173 0152 9230 cpi r25,lo8(2)
174 0154 39F4 brne .L20
175 0156 1092 0000 sts Frame2.4,__zero_reg__
176 015a 47FF sbrs r20,7
177 015c 03C0 rjmp .L20
178 015e 81E0 ldi r24,lo8(1)
179 0160 8093 0000 sts Frame2.4,r24
180 .L20:
181 0164 83E0 ldi r24,lo8(3)
182 0166 8093 0000 sts Sync.0,r24
183 016a 9F5F subi r25,lo8(-(1))
184 016c 9093 0000 sts FrameCnt.1,r25
185 0170 CFC0 rjmp .L16
186 .L19:
187 0172 9330 cpi r25,lo8(3)
188 0174 09F0 breq .+2
189 0176 C2C0 rjmp .L23
190 0178 232B or r18,r19
191 017a 09F0 breq .+2
192 017c BFC0 rjmp .L23
193 017e 9093 0000 sts SpektrumTimer,r25
194 0182 82E0 ldi r24,lo8(2)
195 0184 8093 0000 sts Sync.0,r24
196 0188 8091 0000 lds r24,FrameCnt.1
197 018c 8F5F subi r24,lo8(-(1))
198 018e 8093 0000 sts FrameCnt.1,r24
199 0192 2091 0000 lds r18,ByteHigh.2
200 0196 822F mov r24,r18
201 0198 9927 clr r25
202 019a 782F mov r23,r24
203 019c 6627 clr r22
204 019e 842F mov r24,r20
205 01a0 9927 clr r25
206 01a2 682B or r22,r24
207 01a4 792B or r23,r25
208 01a6 8091 0000 lds r24,EE_Parameter+39
209 01aa 8130 cpi r24,lo8(1)
210 01ac 49F4 brne .L24
211 01ae 7370 andi r23,hi8(1023)
212 01b0 CB01 movw r24,r22
213 01b2 8050 subi r24,lo8(-(-512))
214 01b4 9240 sbci r25,hi8(-(-512))
215 01b6 63E0 ldi r22,lo8(3)
216 01b8 70E0 ldi r23,hi8(3)
217 01ba 0E94 0000 call __divmodhi4
218 01be 17C0 rjmp .L48
219 .L24:
220 01c0 8230 cpi r24,lo8(2)
221 01c2 61F4 brne .L26
222 01c4 7770 andi r23,hi8(2047)
223 01c6 CB01 movw r24,r22
224 01c8 8050 subi r24,lo8(-(-1024))
225 01ca 9440 sbci r25,hi8(-(-1024))
226 01cc 66E0 ldi r22,lo8(6)
227 01ce 70E0 ldi r23,hi8(6)
228 01d0 0E94 0000 call __divmodhi4
229 01d4 2695 lsr r18
230 01d6 2695 lsr r18
231 01d8 2695 lsr r18
232 01da 0BC0 rjmp .L46
233 .L26:
234 01dc 7370 andi r23,hi8(1023)
235 01de 6856 subi r22,lo8(-(-360))
236 01e0 7140 sbci r23,hi8(-(-360))
237 01e2 CB01 movw r24,r22
238 01e4 77FD sbrc r23,7
239 01e6 0196 adiw r24,1
240 .L28:
241 01e8 BC01 movw r22,r24
242 01ea 7595 asr r23
243 01ec 6795 ror r22
244 .L48:
245 01ee 2695 lsr r18
246 01f0 2695 lsr r18
247 .L46:
248 01f2 022F mov r16,r18
249 01f4 1127 clr r17
250 01f6 0F70 andi r16,lo8(15)
251 01f8 1070 andi r17,hi8(15)
252 01fa 0F5F subi r16,lo8(-(1))
253 01fc 1F4F sbci r17,hi8(-(1))
254 01fe 0D30 cpi r16,13
255 0200 1105 cpc r17,__zero_reg__
256 0202 08F0 brlo .+2
257 0204 74C0 rjmp .L29
258 0206 7801 movw r14,r16
259 0208 E00E add r14,r16
260 020a F11E adc r15,r17
261 020c F701 movw r30,r14
262 020e E050 subi r30,lo8(-(PPM_in))
263 0210 F040 sbci r31,hi8(-(PPM_in))
264 0212 8081 ld r24,Z
265 0214 9181 ldd r25,Z+1
266 0216 9B01 movw r18,r22
267 0218 281B sub r18,r24
268 021a 390B sbc r19,r25
269 021c C901 movw r24,r18
270 021e 37FF sbrs r19,7
271 0220 03C0 rjmp .L31
272 0222 9095 com r25
273 0224 8195 neg r24
274 0226 9F4F sbci r25,lo8(-1)
275 .L31:
276 0228 0697 sbiw r24,6
277 022a 94F4 brge .L30
278 022c 8091 0000 lds r24,SenderOkay
279 0230 883C cpi r24,lo8(-56)
280 0232 30F4 brsh .L32
281 0234 8091 0000 lds r24,SenderOkay
282 0238 865F subi r24,lo8(-(10))
283 023a 8093 0000 sts SenderOkay,r24
284 023e 08C0 rjmp .L30
285 .L32:
286 0240 88EC ldi r24,lo8(-56)
287 0242 8093 0000 sts SenderOkay,r24
288 0246 8091 6F00 lds r24,111
289 024a 8F7D andi r24,lo8(-33)
290 024c 8093 6F00 sts 111,r24
291 .L30:
292 0250 F701 movw r30,r14
293 0252 E050 subi r30,lo8(-(PPM_in))
294 0254 F040 sbci r31,hi8(-(PPM_in))
295 0256 8081 ld r24,Z
296 0258 9181 ldd r25,Z+1
297 025a 9C01 movw r18,r24
298 025c 220F lsl r18
299 025e 331F rol r19
300 0260 280F add r18,r24
301 0262 391F adc r19,r25
302 0264 260F add r18,r22
303 0266 371F adc r19,r23
304 0268 37FF sbrs r19,7
305 026a 02C0 rjmp .L34
306 026c 2D5F subi r18,lo8(-(3))
307 026e 3F4F sbci r19,hi8(-(3))
308 .L34:
309 0270 E901 movw r28,r18
310 0272 D595 asr r29
311 0274 C795 ror r28
312 0276 D595 asr r29
313 0278 C795 ror r28
314 027a CB01 movw r24,r22
315 027c 0196 adiw r24,1
316 027e 8C17 cp r24,r28
317 0280 9D07 cpc r25,r29
318 0282 14F4 brge .L35
319 0284 2197 sbiw r28,1
320 0286 06C0 rjmp .L36
321 .L35:
322 0288 6150 subi r22,lo8(-(-1))
323 028a 7040 sbci r23,hi8(-(-1))
324 028c C617 cp r28,r22
325 028e D707 cpc r29,r23
326 0290 0CF4 brge .L36
327 0292 2196 adiw r28,1
328 .L36:
329 0294 8091 0000 lds r24,SenderOkay
330 0298 843B cpi r24,lo8(-76)
331 029a D0F0 brlo .L38
332 029c F701 movw r30,r14
333 029e E050 subi r30,lo8(-(PPM_in))
334 02a0 F040 sbci r31,hi8(-(PPM_in))
335 02a2 8081 ld r24,Z
336 02a4 9181 ldd r25,Z+1
337 02a6 FE01 movw r30,r28
338 02a8 E81B sub r30,r24
339 02aa F90B sbc r31,r25
340 02ac CF01 movw r24,r30
341 02ae 63E0 ldi r22,lo8(3)
342 02b0 70E0 ldi r23,hi8(3)
343 02b2 0E94 0000 call __divmodhi4
344 02b6 CB01 movw r24,r22
345 02b8 880F lsl r24
346 02ba 991F rol r25
347 02bc 860F add r24,r22
348 02be 971F adc r25,r23
349 02c0 20E0 ldi r18,lo8(PPM_diff)
350 02c2 30E0 ldi r19,hi8(PPM_diff)
351 02c4 E20E add r14,r18
352 02c6 F31E adc r15,r19
353 02c8 F701 movw r30,r14
354 02ca 9183 std Z+1,r25
355 02cc 8083 st Z,r24
356 02ce 07C0 rjmp .L39
357 .L38:
358 02d0 20E0 ldi r18,lo8(PPM_diff)
359 02d2 30E0 ldi r19,hi8(PPM_diff)
360 02d4 E20E add r14,r18
361 02d6 F31E adc r15,r19
362 02d8 F701 movw r30,r14
363 02da 1182 std Z+1,__zero_reg__
364 02dc 1082 st Z,__zero_reg__
365 .L39:
366 02de 000F add r16,r16
367 02e0 111F adc r17,r17
368 02e2 0050 subi r16,lo8(-(PPM_in))
369 02e4 1040 sbci r17,hi8(-(PPM_in))
370 02e6 F801 movw r30,r16
371 02e8 D183 std Z+1,r29
372 02ea C083 st Z,r28
373 02ec 11C0 rjmp .L16
374 .L29:
375 02ee 0231 cpi r16,18
376 02f0 1105 cpc r17,__zero_reg__
377 02f2 70F0 brlo .L16
378 02f4 81E0 ldi r24,lo8(1)
379 02f6 8093 0000 sts ReSync.3,r24
380 02fa 0AC0 rjmp .L16
381 .L23:
382 02fc 81E0 ldi r24,lo8(1)
383 02fe 8093 0000 sts ReSync.3,r24
384 0302 1092 0000 sts FrameCnt.1,__zero_reg__
385 0306 1092 0000 sts Frame2.4,__zero_reg__
386 030a 84E4 ldi r24,lo8(68)
387 .L47:
388 030c 8093 0000 sts SpektrumTimer,r24
389 .L16:
390 0310 8091 0000 lds r24,FrameCnt.1
391 0314 8031 cpi r24,lo8(16)
392 0316 98F0 brlo .L8
393 0318 8091 0000 lds r24,Frame2.4
394 031c 8823 tst r24
395 031e 31F4 brne .L44
396 0320 8091 0000 lds r24,ReSync.3
397 0324 8823 tst r24
398 0326 11F4 brne .L44
399 0328 8093 0000 sts NewPpmData,r24
400 .L44:
401 032c 1092 0000 sts FrameCnt.1,__zero_reg__
402 0330 1092 0000 sts Frame2.4,__zero_reg__
403 0334 1092 0000 sts Sync.0,__zero_reg__
404 0338 84E4 ldi r24,lo8(68)
405 033a 8093 0000 sts SpektrumTimer,r24
406 .L8:
407 /* epilogue: frame size=0 */
408 033e E6E0 ldi r30,6
409 0340 CDB7 in r28,__SP_L__
410 0342 DEB7 in r29,__SP_H__
411 0344 0C94 0000 jmp __epilogue_restores__+24
412 /* epilogue end (size=5) */
413 /* function SpektrumParser size 334 (323) */
415 /* File "Spektrum.c": code 426 = 0x01aa ( 414), prologues 6, epilogues 6 */
DEFINED SYMBOLS
*ABS*:00000000 Spektrum.c
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:15 .bss:00000000 SpektrumTimer
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:20 .text:00000000 SpektrumUartInit
.bss:00000001 Sync.0
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:91 .bss:00000002 FrameCnt.1
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:92 .bss:00000003 ByteHigh.2
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:97 .data:00000000 ReSync.3
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:93 .bss:00000004 Frame2.4
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:103 .text:000000b6 SpektrumParser
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
EE_Parameter
__divmodhi4
PPM_in
SenderOkay
PPM_diff
NewPpmData
__epilogue_restores__