0,0 → 1,367 |
1 .file "PPM_Decode.c" |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __tmp_reg__ = 0 |
6 __zero_reg__ = 1 |
7 .global __do_copy_data |
8 .global __do_clear_bss |
11 .text |
12 .Ltext0: |
100 .global InitPPM |
102 InitPPM: |
103 .stabd 46,0,0 |
1:src/PPM_Decode.c **** /*############################################################################ |
2:src/PPM_Decode.c **** + Regler für Brushless-Motoren |
3:src/PPM_Decode.c **** + ATMEGA8 mit 8MHz |
4:src/PPM_Decode.c **** + (c) 01.2007 Holger Buss |
5:src/PPM_Decode.c **** + Nur für den privaten Gebrauch |
6:src/PPM_Decode.c **** + Keine Garantie auf Fehlerfreiheit |
7:src/PPM_Decode.c **** + Kommerzielle Nutzung nur mit meiner Zustimmung |
8:src/PPM_Decode.c **** + Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
9:src/PPM_Decode.c **** + www.mikrocontroller.com |
10:src/PPM_Decode.c **** ############################################################################*/ |
11:src/PPM_Decode.c **** #include "main.h" |
12:src/PPM_Decode.c **** volatile unsigned int PPM_Signal = 0; |
13:src/PPM_Decode.c **** volatile unsigned char Timer1Overflow = 0; |
14:src/PPM_Decode.c **** volatile unsigned char PPM_Timeout = 0, anz_ppm_werte = 0; // Ungültig, wenn Null |
15:src/PPM_Decode.c **** |
16:src/PPM_Decode.c **** //############################################################################ |
17:src/PPM_Decode.c **** // |
18:src/PPM_Decode.c **** void InitPPM(void) |
19:src/PPM_Decode.c **** //############################################################################ |
20:src/PPM_Decode.c **** { |
105 .LM0: |
106 .LFBB1: |
107 /* prologue: frame size=0 */ |
108 /* prologue end (size=0) */ |
21:src/PPM_Decode.c **** TCCR1B |= (1<<ICES1)|(1<<ICNC1); |
110 .LM1: |
111 0000 8EB5 in r24,78-0x20 |
112 0002 806C ori r24,lo8(-64) |
113 0004 8EBD out 78-0x20,r24 |
22:src/PPM_Decode.c **** ICP_POS_FLANKE; |
115 .LM2: |
116 0006 8EB5 in r24,78-0x20 |
117 0008 8064 ori r24,lo8(64) |
118 000a 8EBD out 78-0x20,r24 |
23:src/PPM_Decode.c **** ICP_INT_ENABLE; |
120 .LM3: |
121 000c 89B7 in r24,89-0x20 |
122 000e 8062 ori r24,lo8(32) |
123 0010 89BF out 89-0x20,r24 |
24:src/PPM_Decode.c **** TIMER1_INT_ENABLE; |
125 .LM4: |
126 0012 89B7 in r24,89-0x20 |
127 0014 8460 ori r24,lo8(4) |
128 0016 89BF out 89-0x20,r24 |
129 /* epilogue: frame size=0 */ |
130 0018 0895 ret |
131 /* epilogue end (size=1) */ |
132 /* function InitPPM size 13 (12) */ |
134 .Lscope1: |
136 .stabd 78,0,0 |
138 .global __vector_8 |
140 __vector_8: |
141 .stabd 46,0,0 |
25:src/PPM_Decode.c **** } |
26:src/PPM_Decode.c **** |
27:src/PPM_Decode.c **** //############################################################################ |
28:src/PPM_Decode.c **** // |
29:src/PPM_Decode.c **** SIGNAL(SIG_OVERFLOW1) |
30:src/PPM_Decode.c **** //############################################################################ |
31:src/PPM_Decode.c **** { |
143 .LM5: |
144 .LFBB2: |
145 /* prologue: frame size=0 */ |
146 001a 1F92 push __zero_reg__ |
147 001c 0F92 push __tmp_reg__ |
148 001e 0FB6 in __tmp_reg__,__SREG__ |
149 0020 0F92 push __tmp_reg__ |
150 0022 1124 clr __zero_reg__ |
151 0024 8F93 push r24 |
152 /* prologue end (size=6) */ |
32:src/PPM_Decode.c **** Timer1Overflow++; |
154 .LM6: |
155 0026 8091 0000 lds r24,Timer1Overflow |
156 002a 8F5F subi r24,lo8(-(1)) |
157 002c 8093 0000 sts Timer1Overflow,r24 |
158 /* epilogue: frame size=0 */ |
159 0030 8F91 pop r24 |
160 0032 0F90 pop __tmp_reg__ |
161 0034 0FBE out __SREG__,__tmp_reg__ |
162 0036 0F90 pop __tmp_reg__ |
163 0038 1F90 pop __zero_reg__ |
164 003a 1895 reti |
165 /* epilogue end (size=6) */ |
166 /* function __vector_8 size 17 (5) */ |
168 .Lscope2: |
170 .stabd 78,0,0 |
172 .global __vector_5 |
174 __vector_5: |
175 .stabd 46,0,0 |
33:src/PPM_Decode.c **** } |
34:src/PPM_Decode.c **** |
35:src/PPM_Decode.c **** //############################################################################ |
36:src/PPM_Decode.c **** // |
37:src/PPM_Decode.c **** SIGNAL(SIG_INPUT_CAPTURE1) |
38:src/PPM_Decode.c **** //############################################################################ |
39:src/PPM_Decode.c **** { |
177 .LM7: |
178 .LFBB3: |
179 /* prologue: frame size=0 */ |
180 003c 1F92 push __zero_reg__ |
181 003e 0F92 push __tmp_reg__ |
182 0040 0FB6 in __tmp_reg__,__SREG__ |
183 0042 0F92 push __tmp_reg__ |
184 0044 1124 clr __zero_reg__ |
185 0046 2F93 push r18 |
186 0048 3F93 push r19 |
187 004a 4F93 push r20 |
188 004c 5F93 push r21 |
189 004e 8F93 push r24 |
190 0050 9F93 push r25 |
191 /* prologue end (size=11) */ |
40:src/PPM_Decode.c **** static unsigned int tim_alt; |
41:src/PPM_Decode.c **** static unsigned int ppm; |
42:src/PPM_Decode.c **** if(TCCR1B & (1<<ICES1)) // Positive Flanke |
193 .LM8: |
194 0052 0EB4 in __tmp_reg__,78-0x20 |
195 0054 06FE sbrs __tmp_reg__,6 |
196 0056 00C0 rjmp .L6 |
43:src/PPM_Decode.c **** { |
44:src/PPM_Decode.c **** Timer1Overflow = 0; |
198 .LM9: |
199 0058 1092 0000 sts Timer1Overflow,__zero_reg__ |
45:src/PPM_Decode.c **** tim_alt = ICR1; |
201 .LM10: |
202 005c 86B5 in r24,70-0x20 |
203 005e 97B5 in r25,(70)+1-0x20 |
204 0060 9093 0000 sts (tim_alt.2079)+1,r25 |
205 0064 8093 0000 sts tim_alt.2079,r24 |
46:src/PPM_Decode.c **** ICP_NEG_FLANKE; |
207 .LM11: |
208 0068 8EB5 in r24,78-0x20 |
209 006a 8F7B andi r24,lo8(-65) |
210 006c 8EBD out 78-0x20,r24 |
47:src/PPM_Decode.c **** PPM_Timeout = 100; |
212 .LM12: |
213 006e 84E6 ldi r24,lo8(100) |
214 0070 8093 0000 sts PPM_Timeout,r24 |
215 0074 00C0 rjmp .L17 |
216 .L6: |
48:src/PPM_Decode.c **** } |
49:src/PPM_Decode.c **** else // Negative Flanke |
50:src/PPM_Decode.c **** { |
51:src/PPM_Decode.c **** ICP_POS_FLANKE; |
218 .LM13: |
219 0076 8EB5 in r24,78-0x20 |
220 0078 8064 ori r24,lo8(64) |
221 007a 8EBD out 78-0x20,r24 |
52:src/PPM_Decode.c **** #ifdef _32KHZ |
53:src/PPM_Decode.c **** ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 32; |
54:src/PPM_Decode.c **** #endif |
55:src/PPM_Decode.c **** #ifdef _16KHZ |
56:src/PPM_Decode.c **** ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 32; |
223 .LM14: |
224 007c 86B5 in r24,70-0x20 |
225 007e 97B5 in r25,(70)+1-0x20 |
226 0080 2091 0000 lds r18,Timer1Overflow |
227 0084 4091 0000 lds r20,tim_alt.2079 |
228 0088 5091 0000 lds r21,(tim_alt.2079)+1 |
229 008c 841B sub r24,r20 |
230 008e 950B sbc r25,r21 |
231 0090 3327 clr r19 |
232 0092 322F mov r19,r18 |
233 0094 2227 clr r18 |
234 0096 330F lsl r19 |
235 0098 820F add r24,r18 |
236 009a 931F adc r25,r19 |
237 009c 6894 set |
238 009e 14F8 bld __zero_reg__,5-1 |
239 00a0 9695 1: lsr r25 |
240 00a2 8795 ror r24 |
241 00a4 1694 lsr __zero_reg__ |
242 00a6 01F4 brne 1b |
243 00a8 9093 0000 sts (ppm.2080)+1,r25 |
244 00ac 8093 0000 sts ppm.2080,r24 |
57:src/PPM_Decode.c **** #endif |
58:src/PPM_Decode.c **** if(ppm < 280) ppm = 280; |
246 .LM15: |
247 00b0 8851 subi r24,lo8(280) |
248 00b2 9140 sbci r25,hi8(280) |
249 00b4 00F4 brsh .L9 |
250 00b6 88E1 ldi r24,lo8(280) |
251 00b8 91E0 ldi r25,hi8(280) |
252 00ba 9093 0000 sts (ppm.2080)+1,r25 |
253 00be 8093 0000 sts ppm.2080,r24 |
254 .L9: |
59:src/PPM_Decode.c **** ppm -= 280; |
256 .LM16: |
257 00c2 4091 0000 lds r20,ppm.2080 |
258 00c6 5091 0000 lds r21,(ppm.2080)+1 |
259 00ca 4851 subi r20,lo8(-(-280)) |
260 00cc 5140 sbci r21,hi8(-(-280)) |
60:src/PPM_Decode.c **** if(PPM_Signal < ppm) PPM_Signal++; |
262 .LM17: |
263 00ce 8091 0000 lds r24,PPM_Signal |
264 00d2 9091 0000 lds r25,(PPM_Signal)+1 |
265 00d6 8417 cp r24,r20 |
266 00d8 9507 cpc r25,r21 |
267 00da 00F4 brsh .L11 |
268 00dc 8091 0000 lds r24,PPM_Signal |
269 00e0 9091 0000 lds r25,(PPM_Signal)+1 |
270 00e4 0196 adiw r24,1 |
271 00e6 00C0 rjmp .L18 |
272 .L11: |
61:src/PPM_Decode.c **** else if(PPM_Signal > ppm) PPM_Signal--; |
274 .LM18: |
275 00e8 8091 0000 lds r24,PPM_Signal |
276 00ec 9091 0000 lds r25,(PPM_Signal)+1 |
277 00f0 4817 cp r20,r24 |
278 00f2 5907 cpc r21,r25 |
279 00f4 00F4 brsh .L13 |
280 00f6 8091 0000 lds r24,PPM_Signal |
281 00fa 9091 0000 lds r25,(PPM_Signal)+1 |
282 00fe 0197 sbiw r24,1 |
283 .L18: |
284 0100 9093 0000 sts (PPM_Signal)+1,r25 |
285 0104 8093 0000 sts PPM_Signal,r24 |
286 .L13: |
62:src/PPM_Decode.c **** if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern |
288 .LM19: |
289 0108 8091 0000 lds r24,PPM_Signal |
290 010c 9091 0000 lds r25,(PPM_Signal)+1 |
291 0110 9C01 movw r18,r24 |
292 0112 220F lsl r18 |
293 0114 331F rol r19 |
294 0116 220F lsl r18 |
295 0118 331F rol r19 |
296 011a 220F lsl r18 |
297 011c 331F rol r19 |
298 011e 281B sub r18,r24 |
299 0120 390B sbc r19,r25 |
300 0122 240F add r18,r20 |
301 0124 351F adc r19,r21 |
302 0126 83E0 ldi r24,3 |
303 0128 3695 1: lsr r19 |
304 012a 2795 ror r18 |
305 012c 8A95 dec r24 |
306 012e 01F4 brne 1b |
307 0130 3093 0000 sts (ppm.2080)+1,r19 |
308 0134 2093 0000 sts ppm.2080,r18 |
63:src/PPM_Decode.c **** PPM_Signal = ppm; |
310 .LM20: |
311 0138 3093 0000 sts (PPM_Signal)+1,r19 |
312 013c 2093 0000 sts PPM_Signal,r18 |
64:src/PPM_Decode.c **** if(anz_ppm_werte < 255) anz_ppm_werte++; |
314 .LM21: |
315 0140 8091 0000 lds r24,anz_ppm_werte |
316 0144 8F3F cpi r24,lo8(-1) |
317 0146 01F0 breq .L15 |
318 0148 8091 0000 lds r24,anz_ppm_werte |
319 014c 8F5F subi r24,lo8(-(1)) |
320 014e 8093 0000 sts anz_ppm_werte,r24 |
321 .L15: |
65:src/PPM_Decode.c **** ZeitZumAdWandeln = 1; |
323 .LM22: |
324 0152 81E0 ldi r24,lo8(1) |
325 0154 8093 0000 sts ZeitZumAdWandeln,r24 |
326 .L17: |
327 /* epilogue: frame size=0 */ |
328 0158 9F91 pop r25 |
329 015a 8F91 pop r24 |
330 015c 5F91 pop r21 |
331 015e 4F91 pop r20 |
332 0160 3F91 pop r19 |
333 0162 2F91 pop r18 |
334 0164 0F90 pop __tmp_reg__ |
335 0166 0FBE out __SREG__,__tmp_reg__ |
336 0168 0F90 pop __tmp_reg__ |
337 016a 1F90 pop __zero_reg__ |
338 016c 1895 reti |
339 /* epilogue end (size=11) */ |
340 /* function __vector_5 size 154 (132) */ |
346 .Lscope3: |
348 .stabd 78,0,0 |
350 .global __vector_1 |
352 __vector_1: |
353 .stabd 46,0,0 |
66:src/PPM_Decode.c **** } |
67:src/PPM_Decode.c **** } |
68:src/PPM_Decode.c **** |
69:src/PPM_Decode.c **** //############################################################################ |
70:src/PPM_Decode.c **** // |
71:src/PPM_Decode.c **** SIGNAL(SIG_INTERRUPT0) |
72:src/PPM_Decode.c **** //############################################################################ |
73:src/PPM_Decode.c **** { |
355 .LM23: |
356 .LFBB4: |
357 /* prologue: frame size=0 */ |
358 016e 1F92 push __zero_reg__ |
359 0170 0F92 push __tmp_reg__ |
360 0172 0FB6 in __tmp_reg__,__SREG__ |
361 0174 0F92 push __tmp_reg__ |
362 0176 1124 clr __zero_reg__ |
363 0178 8F93 push r24 |
364 /* prologue end (size=6) */ |
74:src/PPM_Decode.c **** CLR_INT0_FLAG; // IntFlag Loeschen |
366 .LM24: |
367 017a 8AB7 in r24,90-0x20 |
368 017c 8F7B andi r24,lo8(-65) |
369 017e 8ABF out 90-0x20,r24 |
370 /* epilogue: frame size=0 */ |
371 0180 8F91 pop r24 |
372 0182 0F90 pop __tmp_reg__ |
373 0184 0FBE out __SREG__,__tmp_reg__ |
374 0186 0F90 pop __tmp_reg__ |
375 0188 1F90 pop __zero_reg__ |
376 018a 1895 reti |
377 /* epilogue end (size=6) */ |
378 /* function __vector_1 size 15 (3) */ |
380 .Lscope4: |
382 .stabd 78,0,0 |
383 .global PPM_Signal |
384 .global PPM_Signal |
385 .section .bss |
388 PPM_Signal: |
389 0000 0000 .skip 2,0 |
390 .global Timer1Overflow |
391 .global Timer1Overflow |
394 Timer1Overflow: |
395 0002 00 .skip 1,0 |
396 .global PPM_Timeout |
397 .global PPM_Timeout |
400 PPM_Timeout: |
401 0003 00 .skip 1,0 |
402 .global anz_ppm_werte |
403 .global anz_ppm_werte |
406 anz_ppm_werte: |
407 0004 00 .skip 1,0 |
408 .lcomm ppm.2080,2 |
409 .lcomm tim_alt.2079,2 |
416 .text |
418 .Letext0: |
419 /* File "src/PPM_Decode.c": code 199 = 0x00c7 ( 152), prologues 23, epilogues 24 */ |
DEFINED SYMBOLS |
*ABS*:00000000 PPM_Decode.c |
/tmp/cc2IZgCl.s:2 *ABS*:0000003f __SREG__ |
/tmp/cc2IZgCl.s:3 *ABS*:0000003e __SP_H__ |
/tmp/cc2IZgCl.s:4 *ABS*:0000003d __SP_L__ |
/tmp/cc2IZgCl.s:5 *ABS*:00000000 __tmp_reg__ |
/tmp/cc2IZgCl.s:6 *ABS*:00000001 __zero_reg__ |
/tmp/cc2IZgCl.s:102 .text:00000000 InitPPM |
/tmp/cc2IZgCl.s:140 .text:0000001a __vector_8 |
/tmp/cc2IZgCl.s:394 .bss:00000002 Timer1Overflow |
/tmp/cc2IZgCl.s:174 .text:0000003c __vector_5 |
/tmp/cc2IZgCl.s:408 .bss:00000007 tim_alt.2079 |
/tmp/cc2IZgCl.s:400 .bss:00000003 PPM_Timeout |
.bss:00000005 ppm.2080 |
/tmp/cc2IZgCl.s:388 .bss:00000000 PPM_Signal |
/tmp/cc2IZgCl.s:406 .bss:00000004 anz_ppm_werte |
/tmp/cc2IZgCl.s:352 .text:0000016e __vector_1 |
|
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
ZeitZumAdWandeln |