/branches/thjac/V1_10/altcon.lst |
---|
0,0 → 1,425 |
1 .file "altcon.c" |
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 .text |
11 .global altcon_init |
13 altcon_init: |
14 /* prologue: function */ |
15 /* frame size = 0 */ |
16 0000 1092 0000 sts enabled,__zero_reg__ |
17 0004 84EF ldi r24,lo8(500) |
18 0006 91E0 ldi r25,hi8(500) |
19 0008 9093 0000 sts (beeptime)+1,r25 |
20 000c 8093 0000 sts beeptime,r24 |
21 /* epilogue start */ |
22 0010 0895 ret |
24 .global altcon_lock |
26 altcon_lock: |
27 /* prologue: function */ |
28 /* frame size = 0 */ |
29 0012 8091 0000 lds r24,airPressure |
30 0016 9091 0000 lds r25,(airPressure)+1 |
31 001a 9093 0000 sts (pressureOffset)+1,r25 |
32 001e 8093 0000 sts pressureOffset,r24 |
33 /* epilogue start */ |
34 0022 0895 ret |
36 .global altcon_start |
38 altcon_start: |
39 /* prologue: function */ |
40 /* frame size = 0 */ |
41 0024 6091 0000 lds r22,Mess_Integral_Hoch |
42 0028 7091 0000 lds r23,(Mess_Integral_Hoch)+1 |
43 002c 8091 0000 lds r24,(Mess_Integral_Hoch)+2 |
44 0030 9091 0000 lds r25,(Mess_Integral_Hoch)+3 |
45 0034 20E8 ldi r18,lo8(128) |
46 0036 30E0 ldi r19,hi8(128) |
47 0038 40E0 ldi r20,hlo8(128) |
48 003a 50E0 ldi r21,hhi8(128) |
49 003c 0E94 0000 call __divmodsi4 |
50 0040 3093 0000 sts (accZOffset)+1,r19 |
51 0044 2093 0000 sts accZOffset,r18 |
52 0048 1092 0000 sts (lastError)+1,__zero_reg__ |
53 004c 1092 0000 sts lastError,__zero_reg__ |
54 0050 1092 0000 sts (lastN)+1,__zero_reg__ |
55 0054 1092 0000 sts lastN,__zero_reg__ |
56 0058 1092 0000 sts (averageN)+1,__zero_reg__ |
57 005c 1092 0000 sts averageN,__zero_reg__ |
58 0060 1092 0000 sts altIntegral,__zero_reg__ |
59 0064 1092 0000 sts (altIntegral)+1,__zero_reg__ |
60 0068 1092 0000 sts (altIntegral)+2,__zero_reg__ |
61 006c 1092 0000 sts (altIntegral)+3,__zero_reg__ |
62 0070 84EF ldi r24,lo8(500) |
63 0072 91E0 ldi r25,hi8(500) |
64 0074 9093 0000 sts (beeptime)+1,r25 |
65 0078 8093 0000 sts beeptime,r24 |
66 /* epilogue start */ |
67 007c 0895 ret |
69 .global altcon_stop |
71 altcon_stop: |
72 /* prologue: function */ |
73 /* frame size = 0 */ |
74 007e 1092 0000 sts enabled,__zero_reg__ |
75 0082 84EF ldi r24,lo8(500) |
76 0084 91E0 ldi r25,hi8(500) |
77 0086 9093 0000 sts (beeptime)+1,r25 |
78 008a 8093 0000 sts beeptime,r24 |
79 /* epilogue start */ |
80 008e 0895 ret |
82 .global altcon_error |
84 altcon_error: |
85 0090 9F92 push r9 |
86 0092 AF92 push r10 |
87 0094 BF92 push r11 |
88 0096 CF92 push r12 |
89 0098 DF92 push r13 |
90 009a EF92 push r14 |
91 009c FF92 push r15 |
92 009e 0F93 push r16 |
93 00a0 1F93 push r17 |
94 00a2 CF93 push r28 |
95 00a4 DF93 push r29 |
96 /* prologue: function */ |
97 /* frame size = 0 */ |
98 00a6 8091 0000 lds r24,enabled |
99 00aa 8823 tst r24 |
100 00ac 01F4 brne .+2 |
101 00ae 00C0 rjmp .L10 |
102 00b0 8091 0000 lds r24,Notlandung |
103 00b4 8823 tst r24 |
104 00b6 01F0 breq .+2 |
105 00b8 00C0 rjmp .L10 |
106 00ba E090 0000 lds r14,airPressure |
107 00be F090 0000 lds r15,(airPressure)+1 |
108 00c2 8091 0000 lds r24,pressureOffset |
109 00c6 9091 0000 lds r25,(pressureOffset)+1 |
110 00ca E81A sub r14,r24 |
111 00cc F90A sbc r15,r25 |
112 00ce 0091 0000 lds r16,Parameter_Hoehe_P |
113 00d2 8091 0000 lds r24,EE_Parameter+31 |
114 00d6 90E0 ldi r25,lo8(0) |
115 00d8 9C01 movw r18,r24 |
116 00da 2E9D mul r18,r14 |
117 00dc C001 movw r24,r0 |
118 00de 2F9D mul r18,r15 |
119 00e0 900D add r25,r0 |
120 00e2 3E9D mul r19,r14 |
121 00e4 900D add r25,r0 |
122 00e6 1124 clr r1 |
123 00e8 64E0 ldi r22,lo8(4) |
124 00ea 70E0 ldi r23,hi8(4) |
125 00ec 0E94 0000 call __divmodhi4 |
126 00f0 9B01 movw r18,r22 |
127 00f2 4427 clr r20 |
128 00f4 37FD sbrc r19,7 |
129 00f6 4095 com r20 |
130 00f8 542F mov r21,r20 |
131 00fa 8091 0000 lds r24,altIntegral |
132 00fe 9091 0000 lds r25,(altIntegral)+1 |
133 0102 A091 0000 lds r26,(altIntegral)+2 |
134 0106 B091 0000 lds r27,(altIntegral)+3 |
135 010a 280F add r18,r24 |
136 010c 391F adc r19,r25 |
137 010e 4A1F adc r20,r26 |
138 0110 5B1F adc r21,r27 |
139 0112 2093 0000 sts altIntegral,r18 |
140 0116 3093 0000 sts (altIntegral)+1,r19 |
141 011a 4093 0000 sts (altIntegral)+2,r20 |
142 011e 5093 0000 sts (altIntegral)+3,r21 |
143 0122 2134 cpi r18,lo8(1000001) |
144 0124 62E4 ldi r22,hi8(1000001) |
145 0126 3607 cpc r19,r22 |
146 0128 6FE0 ldi r22,hlo8(1000001) |
147 012a 4607 cpc r20,r22 |
148 012c 60E0 ldi r22,hhi8(1000001) |
149 012e 5607 cpc r21,r22 |
150 0130 04F0 brlt .L11 |
151 0132 80E4 ldi r24,lo8(1000000) |
152 0134 92E4 ldi r25,hi8(1000000) |
153 0136 AFE0 ldi r26,hlo8(1000000) |
154 0138 B0E0 ldi r27,hhi8(1000000) |
155 013a 00C0 rjmp .L20 |
156 .L11: |
157 013c 205C subi r18,lo8(-1000000) |
158 013e 3D4B sbci r19,hi8(-1000000) |
159 0140 404F sbci r20,hlo8(-1000000) |
160 0142 5F4F sbci r21,hhi8(-1000000) |
161 0144 04F4 brge .L12 |
162 0146 80EC ldi r24,lo8(-1000000) |
163 0148 9DEB ldi r25,hi8(-1000000) |
164 014a A0EF ldi r26,hlo8(-1000000) |
165 014c BFEF ldi r27,hhi8(-1000000) |
166 .L20: |
167 014e 8093 0000 sts altIntegral,r24 |
168 0152 9093 0000 sts (altIntegral)+1,r25 |
169 0156 A093 0000 sts (altIntegral)+2,r26 |
170 015a B093 0000 sts (altIntegral)+3,r27 |
171 .L12: |
172 015e A090 0000 lds r10,altIntegral |
173 0162 B090 0000 lds r11,(altIntegral)+1 |
174 0166 C090 0000 lds r12,(altIntegral)+2 |
175 016a D090 0000 lds r13,(altIntegral)+3 |
176 016e 9090 0000 lds r9,Parameter_Luftdruck_D |
177 0172 C091 0000 lds r28,lastError |
178 0176 D091 0000 lds r29,(lastError)+1 |
179 017a 6091 0000 lds r22,Mess_Integral_Hoch |
180 017e 7091 0000 lds r23,(Mess_Integral_Hoch)+1 |
181 0182 8091 0000 lds r24,(Mess_Integral_Hoch)+2 |
182 0186 9091 0000 lds r25,(Mess_Integral_Hoch)+3 |
183 018a 20E8 ldi r18,lo8(128) |
184 018c 30E0 ldi r19,hi8(128) |
185 018e 40E0 ldi r20,hlo8(128) |
186 0190 50E0 ldi r21,hhi8(128) |
187 0192 0E94 0000 call __divmodsi4 |
188 0196 CA01 movw r24,r20 |
189 0198 B901 movw r22,r18 |
190 019a 2091 0000 lds r18,accZOffset |
191 019e 3091 0000 lds r19,(accZOffset)+1 |
192 01a2 4427 clr r20 |
193 01a4 37FD sbrc r19,7 |
194 01a6 4095 com r20 |
195 01a8 542F mov r21,r20 |
196 01aa 621B sub r22,r18 |
197 01ac 730B sbc r23,r19 |
198 01ae 840B sbc r24,r20 |
199 01b0 950B sbc r25,r21 |
200 01b2 2091 0000 lds r18,Parameter_Hoehe_ACC_Wirkung |
201 01b6 30E0 ldi r19,lo8(0) |
202 01b8 40E0 ldi r20,lo8(0) |
203 01ba 50E0 ldi r21,hi8(0) |
204 01bc 0E94 0000 call __mulsi3 |
205 01c0 20E2 ldi r18,lo8(32) |
206 01c2 30E0 ldi r19,hi8(32) |
207 01c4 40E0 ldi r20,hlo8(32) |
208 01c6 50E0 ldi r21,hhi8(32) |
209 01c8 0E94 0000 call __divmodsi4 |
210 01cc C901 movw r24,r18 |
211 01ce 3093 0000 sts (temp)+1,r19 |
212 01d2 2093 0000 sts temp,r18 |
213 01d6 21E0 ldi r18,hi8(281) |
214 01d8 8931 cpi r24,lo8(281) |
215 01da 9207 cpc r25,r18 |
216 01dc 04F0 brlt .L13 |
217 01de 88E1 ldi r24,lo8(280) |
218 01e0 91E0 ldi r25,hi8(280) |
219 01e2 00C0 rjmp .L21 |
220 .L13: |
221 01e4 885E subi r24,lo8(-280) |
222 01e6 9E4F sbci r25,hi8(-280) |
223 01e8 04F4 brge .L14 |
224 01ea 88EE ldi r24,lo8(-280) |
225 01ec 9EEF ldi r25,hi8(-280) |
226 .L21: |
227 01ee 9093 0000 sts (temp)+1,r25 |
228 01f2 8093 0000 sts temp,r24 |
229 .L14: |
230 01f6 802F mov r24,r16 |
231 01f8 90E0 ldi r25,lo8(0) |
232 01fa AC01 movw r20,r24 |
233 01fc 4E9D mul r20,r14 |
234 01fe C001 movw r24,r0 |
235 0200 4F9D mul r20,r15 |
236 0202 900D add r25,r0 |
237 0204 5E9D mul r21,r14 |
238 0206 900D add r25,r0 |
239 0208 1124 clr r1 |
240 020a 64E0 ldi r22,lo8(4) |
241 020c 70E0 ldi r23,hi8(4) |
242 020e 0E94 0000 call __divmodhi4 |
243 0212 8B01 movw r16,r22 |
244 0214 C601 movw r24,r12 |
245 0216 B501 movw r22,r10 |
246 0218 20EA ldi r18,lo8(4000) |
247 021a 3FE0 ldi r19,hi8(4000) |
248 021c 40E0 ldi r20,hlo8(4000) |
249 021e 50E0 ldi r21,hhi8(4000) |
250 0220 0E94 0000 call __divmodsi4 |
251 0224 020F add r16,r18 |
252 0226 131F adc r17,r19 |
253 0228 9701 movw r18,r14 |
254 022a 2C1B sub r18,r28 |
255 022c 3D0B sbc r19,r29 |
256 022e 892D mov r24,r9 |
257 0230 90E0 ldi r25,lo8(0) |
258 0232 BC01 movw r22,r24 |
259 0234 269F mul r18,r22 |
260 0236 C001 movw r24,r0 |
261 0238 279F mul r18,r23 |
262 023a 900D add r25,r0 |
263 023c 369F mul r19,r22 |
264 023e 900D add r25,r0 |
265 0240 1124 clr r1 |
266 0242 62E0 ldi r22,lo8(2) |
267 0244 70E0 ldi r23,hi8(2) |
268 0246 0E94 0000 call __divmodhi4 |
269 024a 8091 0000 lds r24,temp |
270 024e 9091 0000 lds r25,(temp)+1 |
271 0252 680F add r22,r24 |
272 0254 791F adc r23,r25 |
273 0256 600F add r22,r16 |
274 0258 711F adc r23,r17 |
275 025a 8091 0000 lds r24,EE_Parameter+13 |
276 025e 90E0 ldi r25,lo8(0) |
277 0260 9C01 movw r18,r24 |
278 0262 629F mul r22,r18 |
279 0264 C001 movw r24,r0 |
280 0266 639F mul r22,r19 |
281 0268 900D add r25,r0 |
282 026a 729F mul r23,r18 |
283 026c 900D add r25,r0 |
284 026e 1124 clr r1 |
285 0270 6AE0 ldi r22,lo8(10) |
286 0272 70E0 ldi r23,hi8(10) |
287 0274 0E94 0000 call __divmodhi4 |
288 0278 8091 0000 lds r24,EE_Parameter+11 |
289 027c 90E0 ldi r25,lo8(0) |
290 027e 880F lsl r24 |
291 0280 991F rol r25 |
292 0282 880F lsl r24 |
293 0284 991F rol r25 |
294 0286 8617 cp r24,r22 |
295 0288 9707 cpc r25,r23 |
296 028a 04F4 brge .L15 |
297 028c EC01 movw r28,r24 |
298 028e 00C0 rjmp .L16 |
299 .L15: |
300 0290 2227 clr r18 |
301 0292 3327 clr r19 |
302 0294 281B sub r18,r24 |
303 0296 390B sbc r19,r25 |
304 0298 EB01 movw r28,r22 |
305 029a 6217 cp r22,r18 |
306 029c 7307 cpc r23,r19 |
307 029e 04F4 brge .L16 |
308 02a0 E901 movw r28,r18 |
309 .L16: |
310 02a2 D093 0000 sts (lastN)+1,r29 |
311 02a6 C093 0000 sts lastN,r28 |
312 02aa F092 0000 sts (lastError)+1,r15 |
313 02ae E092 0000 sts lastError,r14 |
314 02b2 2091 0000 lds r18,averageN |
315 02b6 3091 0000 lds r19,(averageN)+1 |
316 02ba AE01 movw r20,r28 |
317 02bc 421B sub r20,r18 |
318 02be 530B sbc r21,r19 |
319 02c0 8091 0000 lds r24,EE_Parameter+32 |
320 02c4 90E0 ldi r25,lo8(0) |
321 02c6 BC01 movw r22,r24 |
322 02c8 469F mul r20,r22 |
323 02ca C001 movw r24,r0 |
324 02cc 479F mul r20,r23 |
325 02ce 900D add r25,r0 |
326 02d0 569F mul r21,r22 |
327 02d2 900D add r25,r0 |
328 02d4 1124 clr r1 |
329 02d6 64E6 ldi r22,lo8(100) |
330 02d8 70E0 ldi r23,hi8(100) |
331 02da 0E94 0000 call __divmodhi4 |
332 02de 260F add r18,r22 |
333 02e0 371F adc r19,r23 |
334 02e2 3093 0000 sts (averageN)+1,r19 |
335 02e6 2093 0000 sts averageN,r18 |
336 02ea 00C0 rjmp .L18 |
337 .L10: |
338 02ec C0E0 ldi r28,lo8(0) |
339 02ee D0E0 ldi r29,hi8(0) |
340 .L18: |
341 02f0 6091 0000 lds r22,altIntegral |
342 02f4 7091 0000 lds r23,(altIntegral)+1 |
343 02f8 8091 0000 lds r24,(altIntegral)+2 |
344 02fc 9091 0000 lds r25,(altIntegral)+3 |
345 0300 20EA ldi r18,lo8(4000) |
346 0302 3FE0 ldi r19,hi8(4000) |
347 0304 40E0 ldi r20,hlo8(4000) |
348 0306 50E0 ldi r21,hhi8(4000) |
349 0308 0E94 0000 call __divmodsi4 |
350 030c 3093 0000 sts (DebugOut+62)+1,r19 |
351 0310 2093 0000 sts DebugOut+62,r18 |
352 0314 D093 0000 sts (DebugOut+56)+1,r29 |
353 0318 C093 0000 sts DebugOut+56,r28 |
354 031c CE01 movw r24,r28 |
355 /* epilogue start */ |
356 031e DF91 pop r29 |
357 0320 CF91 pop r28 |
358 0322 1F91 pop r17 |
359 0324 0F91 pop r16 |
360 0326 FF90 pop r15 |
361 0328 EF90 pop r14 |
362 032a DF90 pop r13 |
363 032c CF90 pop r12 |
364 032e BF90 pop r11 |
365 0330 AF90 pop r10 |
366 0332 9F90 pop r9 |
367 0334 0895 ret |
369 .global enabled |
370 .global enabled |
371 .section .bss |
374 enabled: |
375 0000 00 .skip 1,0 |
376 .global pressureOffset |
377 .global pressureOffset |
380 pressureOffset: |
381 0001 0000 .skip 2,0 |
382 .global accZOffset |
383 .global accZOffset |
386 accZOffset: |
387 0003 0000 .skip 2,0 |
388 .global lastError |
389 .global lastError |
392 lastError: |
393 0005 0000 .skip 2,0 |
394 .global lastN |
395 .global lastN |
398 lastN: |
399 0007 0000 .skip 2,0 |
400 .global averageN |
401 .global averageN |
404 averageN: |
405 0009 0000 .skip 2,0 |
406 .global altIntegral |
407 .global altIntegral |
410 altIntegral: |
411 000b 0000 0000 .skip 4,0 |
412 .comm temp,2,1 |
DEFINED SYMBOLS |
*ABS*:00000000 altcon.c |
c:\TEMP/cc6NfIds.s:2 *ABS*:0000003f __SREG__ |
c:\TEMP/cc6NfIds.s:3 *ABS*:0000003e __SP_H__ |
c:\TEMP/cc6NfIds.s:4 *ABS*:0000003d __SP_L__ |
c:\TEMP/cc6NfIds.s:5 *ABS*:00000034 __CCP__ |
c:\TEMP/cc6NfIds.s:6 *ABS*:00000000 __tmp_reg__ |
c:\TEMP/cc6NfIds.s:7 *ABS*:00000001 __zero_reg__ |
c:\TEMP/cc6NfIds.s:13 .text:00000000 altcon_init |
c:\TEMP/cc6NfIds.s:374 .bss:00000000 enabled |
c:\TEMP/cc6NfIds.s:26 .text:00000012 altcon_lock |
c:\TEMP/cc6NfIds.s:380 .bss:00000001 pressureOffset |
c:\TEMP/cc6NfIds.s:38 .text:00000024 altcon_start |
c:\TEMP/cc6NfIds.s:386 .bss:00000003 accZOffset |
c:\TEMP/cc6NfIds.s:392 .bss:00000005 lastError |
c:\TEMP/cc6NfIds.s:398 .bss:00000007 lastN |
c:\TEMP/cc6NfIds.s:404 .bss:00000009 averageN |
c:\TEMP/cc6NfIds.s:410 .bss:0000000b altIntegral |
c:\TEMP/cc6NfIds.s:71 .text:0000007e altcon_stop |
c:\TEMP/cc6NfIds.s:84 .text:00000090 altcon_error |
*COM*:00000002 temp |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
beeptime |
airPressure |
Mess_Integral_Hoch |
__divmodsi4 |
Notlandung |
Parameter_Hoehe_P |
EE_Parameter |
__divmodhi4 |
Parameter_Luftdruck_D |
Parameter_Hoehe_ACC_Wirkung |
__mulsi3 |
DebugOut |
/branches/thjac/V1_10/fc.c |
---|
707,14 → 707,13 |
StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
// Gaswert übernehmen |
if (pitchNeutral()) { |
StickGas = pitch(); |
} else { |
// Warum 120? Gas= 0 ist -125 |
// StickGas = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
StickGas = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 125; |
} |
StickGas = pitch_value(); |
// Warum 120? Gas= 0 ist -125 |
// StickGas = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
//StickGas = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 125; |
GyroFaktor = ((float) Parameter_Gyro_P + 10.0) / (256 / STICK_GAIN); |
IntegralFaktor = ((float) Parameter_Gyro_I) / (44000 / STICK_GAIN); |
/branches/thjac/V1_10/led.c |
---|
10,7 → 10,6 |
static unsigned char pwmtable[32] ={0, 1, 2, 2, 2, 3, 3, 4, 5, 6, 7, 8, 10, 11, |
13, 16, 19, 23, 27, 32, 38, 45, 54, 64, 76, |
91, 108, 128, 152, 181, 215, 250}; |
unsigned char J16 = 0, J17 = 0; |
unsigned char lightsEnabled = 0, lightsOn = 0; |
/branches/thjac/V1_10/parameter.h |
---|
30,23 → 30,6 |
#define PARAM_PITCH_MIN2 EE_Parameter.UserParam2 // Minimalgas |
#define PITCH_ALT_THRESHOLD PITCH_MIN2 // Schwellwert für Höhenregelung |
/* Setzt den zu verwendenden Pitch-Modus |
*/ |
#define PARAM_PITCH_MODE ( ( EE_Parameter.UserParam8 & 0x0C ) >> 2 ) // Pitch-Mode 0-3 |
#define PARAM_PITCH_MODE_NORMAL 0x00 |
#define PARAM_PITCH_MODE_NEUTRAL 0x01 |
#define PARAM_PITCH_MODE_MD 0x02 |
/* Wenn gesetzt, wird nach ca. 2s andauernder Stick-Stellung auf Minimum |
* ein Reset der Pitch-Regelung durchgeführt, so daß der MK ohne Aus- und |
* Einschalten der Motoren wieder starten kann. Die Pitch-Regelung |
* schaltet auf Leerlaufgas zurück und der Stick kann losgelassen werden, |
* ohne das Gas gegeben wird. |
*/ |
#define PARAM_PITCH_RESTART_ENABLED ( EE_Parameter.UserParam8 & 0x10 ) // 0=deaktiviert 1=aktiviert |
/****************************************************************************************** |
* Parameter für Neutral-Pitch-Steuerung |
*/ |
106,12 → 89,18 |
#define PARAM_LED_STICK_ENABLED ( EE_Parameter.UserParam7 & 0x40 ) // 0=deaktiviert 1=aktiviert, wird durch Motorkopplung übersteuert |
/* Dieser Parameter legt fest, ob in '+'-Formation (normal) oder 'X'-Formation |
* geflogen werden soll. Zur Umschaltung reicht das Setzen des Parameters. Ein |
* Umbau der FC oder Einstellungen am Sender sind nicht notwendig. |
*/ |
#define PARAM_X_FORMATION ( EE_Parameter.UserParam8 & 0x01 ) // 0=+, 1=X |
/* Steuert, ob beim bzw. vor dem Start der Motoren eine Kalibrierung erfolgen |
* soll. |
*/ |
#define PARAM_CAL_ON_START ( EE_Parameter.UserParam8 & 0x02 ) // 0=deaktiviert 1=aktiviert |
/* Pitch Mode |
/* Setzt den zu verwendenden Pitch-Modus |
*/ |
#define PARAM_PITCH_MODE (( EE_Parameter.UserParam8 & 0x0C ) >> 2 ) // Pitch-Mode 0-3 |
125,12 → 114,13 |
* schaltet auf Leerlaufgas zurück und der Stick kann losgelassen werden, |
* ohne das Gas gegeben wird. |
*/ |
#define PARAM_PITCH_RESTART_ENABLED ( EE_Parameter.UserParam8 & 0x08 ) // 0=deaktiviert 1=aktiviert |
#define PARAM_PITCH_RESTART_ENABLED ( EE_Parameter.UserParam8 & 0x10 ) // 0=deaktiviert 1=aktiviert |
/* Die Motoren können über diesen Parameter aktiviert werden. Ein Wert von 0 |
* deaktiviert die Motoren und kann zum Testen verwendet werden. |
*/ |
#define PARAM_ENGINE_ENABLED ( EE_Parameter.UserParam8 & 0x10 ) // 0=deaktiviert 1=aktiviert |
#define PARAM_ENGINE_ENABLED ( EE_Parameter.UserParam8 & 0x20 ) // 0=deaktiviert 1=aktiviert |
/* Skalierung des Gasinkrements (Default 15) |
*/ |
/branches/thjac/V1_10/pitch_md.d |
---|
0,0 → 1,3 |
pitch_md.o pitch_md.d : pitch_md.c main.h old_macros.h _Settings.h printf_P.h \ |
timer0.h uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h spi.h led.h \ |
parameter.h pitch.h altcon.h |
/branches/thjac/V1_10/pitch_md.lst |
---|
0,0 → 1,458 |
1 .file "pitch_md.c" |
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 .text |
11 .global pitch_md_value |
13 pitch_md_value: |
14 0000 0F93 push r16 |
15 0002 1F93 push r17 |
16 0004 CF93 push r28 |
17 0006 DF93 push r29 |
18 /* prologue: function */ |
19 /* frame size = 0 */ |
20 0008 8091 0000 lds r24,EE_Parameter+2 |
21 000c C82F mov r28,r24 |
22 000e D0E0 ldi r29,lo8(0) |
23 0010 FE01 movw r30,r28 |
24 0012 EE0F lsl r30 |
25 0014 FF1F rol r31 |
26 0016 E050 subi r30,lo8(-(PPM_in)) |
27 0018 F040 sbci r31,hi8(-(PPM_in)) |
28 001a 0190 ld __tmp_reg__,Z+ |
29 001c F081 ld r31,Z |
30 001e E02D mov r30,__tmp_reg__ |
31 0020 8091 0000 lds r24,MotorenEin |
32 0024 8823 tst r24 |
33 0026 01F4 brne .+2 |
34 0028 00C0 rjmp .L2 |
35 002a 0091 0000 lds r16,stickValue |
36 002e 1091 0000 lds r17,(stickValue)+1 |
37 0032 1093 0000 sts (lastStickValue)+1,r17 |
38 0036 0093 0000 sts lastStickValue,r16 |
39 003a EE9F mul r30,r30 |
40 003c C001 movw r24,r0 |
41 003e EF9F mul r30,r31 |
42 0040 900D add r25,r0 |
43 0042 FE9F mul r31,r30 |
44 0044 900D add r25,r0 |
45 0046 1124 clr r1 |
46 0048 1E16 cp __zero_reg__,r30 |
47 004a 1F06 cpc __zero_reg__,r31 |
48 004c 04F4 brge .L3 |
49 004e 66E9 ldi r22,lo8(150) |
50 0050 70E0 ldi r23,hi8(150) |
51 0052 00C0 rjmp .L32 |
52 .L3: |
53 0054 6AE6 ldi r22,lo8(-150) |
54 0056 7FEF ldi r23,hi8(-150) |
55 .L32: |
56 0058 0E94 0000 call __divmodhi4 |
57 005c 6E0F add r22,r30 |
58 005e 7F1F adc r23,r31 |
59 0060 7093 0000 sts (temp)+1,r23 |
60 0064 6093 0000 sts temp,r22 |
61 0068 4091 0000 lds r20,temp |
62 006c 5091 0000 lds r21,(temp)+1 |
63 0070 5093 0000 sts (stickValue)+1,r21 |
64 0074 4093 0000 sts stickValue,r20 |
65 0078 6091 0000 lds r22,pitchOffset |
66 007c 7091 0000 lds r23,(pitchOffset)+1 |
67 0080 9B01 movw r18,r22 |
68 0082 240F add r18,r20 |
69 0084 351F adc r19,r21 |
70 0086 3093 0000 sts (targetPitchCount)+1,r19 |
71 008a 2093 0000 sts targetPitchCount,r18 |
72 008e 8091 0000 lds r24,state |
73 0092 8430 cpi r24,lo8(4) |
74 0094 01F4 brne .+2 |
75 0096 00C0 rjmp .L9 |
76 0098 8530 cpi r24,lo8(5) |
77 009a 00F4 brsh .L14 |
78 009c 8230 cpi r24,lo8(2) |
79 009e 01F0 breq .L7 |
80 00a0 8330 cpi r24,lo8(3) |
81 00a2 00F0 brlo .+2 |
82 00a4 00C0 rjmp .L8 |
83 00a6 8130 cpi r24,lo8(1) |
84 00a8 01F0 breq .+2 |
85 00aa 00C0 rjmp .L5 |
86 00ac 00C0 rjmp .L35 |
87 .L14: |
88 00ae 8630 cpi r24,lo8(6) |
89 00b0 01F4 brne .+2 |
90 00b2 00C0 rjmp .L11 |
91 00b4 8630 cpi r24,lo8(6) |
92 00b6 00F4 brsh .+2 |
93 00b8 00C0 rjmp .L10 |
94 00ba 8730 cpi r24,lo8(7) |
95 00bc 01F4 brne .+2 |
96 00be 00C0 rjmp .L12 |
97 00c0 8830 cpi r24,lo8(8) |
98 00c2 01F0 breq .+2 |
99 00c4 00C0 rjmp .L5 |
100 00c6 00C0 rjmp .L36 |
101 .L35: |
102 00c8 E091 0000 lds r30,EE_Parameter+1 |
103 00cc F0E0 ldi r31,lo8(0) |
104 00ce EE0F lsl r30 |
105 00d0 FF1F rol r31 |
106 00d2 E050 subi r30,lo8(-(PPM_in)) |
107 00d4 F040 sbci r31,hi8(-(PPM_in)) |
108 00d6 0190 ld __tmp_reg__,Z+ |
109 00d8 F081 ld r31,Z |
110 00da E02D mov r30,__tmp_reg__ |
111 00dc F7FF sbrs r31,7 |
112 00de 00C0 rjmp .L16 |
113 00e0 F095 com r31 |
114 00e2 E195 neg r30 |
115 00e4 FF4F sbci r31,lo8(-1) |
116 .L16: |
117 00e6 E734 cpi r30,71 |
118 00e8 F105 cpc r31,__zero_reg__ |
119 00ea 04F0 brlt .L15 |
120 00ec 82E0 ldi r24,lo8(2) |
121 00ee 00C0 rjmp .L33 |
122 .L15: |
123 00f0 83E0 ldi r24,lo8(3) |
124 00f2 00C0 rjmp .L33 |
125 .L7: |
126 00f4 3093 0000 sts (actualPitchCount)+1,r19 |
127 00f8 2093 0000 sts actualPitchCount,r18 |
128 00fc 7497 sbiw r30,20 |
129 00fe 04F0 brlt .L17 |
130 0100 4017 cp r20,r16 |
131 0102 5107 cpc r21,r17 |
132 0104 01F0 breq .L18 |
133 .L17: |
134 0106 84E6 ldi r24,lo8(100) |
135 0108 90E0 ldi r25,hi8(100) |
136 010a 9093 0000 sts (timer)+1,r25 |
137 010e 8093 0000 sts timer,r24 |
138 0112 00C0 rjmp .L5 |
139 .L18: |
140 0114 8091 0000 lds r24,timer |
141 0118 9091 0000 lds r25,(timer)+1 |
142 011c 0197 sbiw r24,1 |
143 011e 9093 0000 sts (timer)+1,r25 |
144 0122 8093 0000 sts timer,r24 |
145 0126 892B or r24,r25 |
146 0128 01F0 breq .+2 |
147 012a 00C0 rjmp .L5 |
148 012c 8091 0000 lds r24,EE_Parameter+29 |
149 0130 90E0 ldi r25,lo8(0) |
150 0132 8217 cp r24,r18 |
151 0134 9307 cpc r25,r19 |
152 0136 01F4 brne .+2 |
153 0138 00C0 rjmp .L5 |
154 013a 2093 0000 sts EE_Parameter+29,r18 |
155 013e 0E94 0000 call GetActiveParamSetNumber |
156 0142 60E0 ldi r22,lo8(EE_Parameter) |
157 0144 70E0 ldi r23,hi8(EE_Parameter) |
158 0146 46E5 ldi r20,lo8(86) |
159 0148 0E94 0000 call WriteParameterSet |
160 014c 84EF ldi r24,lo8(500) |
161 014e 91E0 ldi r25,hi8(500) |
162 0150 9093 0000 sts (beeptime)+1,r25 |
163 0154 8093 0000 sts beeptime,r24 |
164 0158 00C0 rjmp .L5 |
165 .L8: |
166 015a 85E0 ldi r24,lo8(5) |
167 015c 90E0 ldi r25,hi8(5) |
168 015e 9093 0000 sts (delay)+1,r25 |
169 0162 8093 0000 sts delay,r24 |
170 0166 3697 sbiw r30,6 |
171 0168 04F0 brlt .L19 |
172 016a 8091 0000 lds r24,EE_Parameter+29 |
173 016e 8093 0000 sts pitchOffset,r24 |
174 0172 1092 0000 sts pitchOffset+1,__zero_reg__ |
175 0176 00C0 rjmp .L5 |
176 .L19: |
177 0178 8091 0000 lds r24,EE_Parameter+29 |
178 017c 90E0 ldi r25,lo8(0) |
179 017e 6817 cp r22,r24 |
180 0180 7907 cpc r23,r25 |
181 0182 01F0 breq .+2 |
182 0184 00C0 rjmp .L5 |
183 0186 84E0 ldi r24,lo8(4) |
184 0188 00C0 rjmp .L33 |
185 .L9: |
186 018a CF01 movw r24,r30 |
187 018c F7FF sbrs r31,7 |
188 018e 00C0 rjmp .L20 |
189 0190 8827 clr r24 |
190 0192 9927 clr r25 |
191 0194 8E1B sub r24,r30 |
192 0196 9F0B sbc r25,r31 |
193 .L20: |
194 0198 0B97 sbiw r24,11 |
195 019a 04F4 brge .+2 |
196 019c 00C0 rjmp .L5 |
197 019e 1092 0000 sts (delay)+1,__zero_reg__ |
198 01a2 1092 0000 sts delay,__zero_reg__ |
199 01a6 1E16 cp __zero_reg__,r30 |
200 01a8 1F06 cpc __zero_reg__,r31 |
201 01aa 04F4 brge .+2 |
202 01ac 00C0 rjmp .L34 |
203 01ae 00C0 rjmp .L5 |
204 .L10: |
205 01b0 8091 0000 lds r24,EE_Parameter+51 |
206 01b4 84FF sbrs r24,4 |
207 01b6 00C0 rjmp .L21 |
208 01b8 CC0F lsl r28 |
209 01ba DD1F rol r29 |
210 01bc C050 subi r28,lo8(-(PPM_in)) |
211 01be D040 sbci r29,hi8(-(PPM_in)) |
212 01c0 8881 ld r24,Y |
213 01c2 9981 ldd r25,Y+1 |
214 01c4 8C5A subi r24,lo8(-84) |
215 01c6 9F4F sbci r25,hi8(-84) |
216 01c8 04F0 brlt .L22 |
217 01ca 84E6 ldi r24,lo8(100) |
218 01cc 90E0 ldi r25,hi8(100) |
219 01ce 9093 0000 sts (timer)+1,r25 |
220 01d2 8093 0000 sts timer,r24 |
221 01d6 00C0 rjmp .L21 |
222 .L22: |
223 01d8 8091 0000 lds r24,timer |
224 01dc 9091 0000 lds r25,(timer)+1 |
225 01e0 0197 sbiw r24,1 |
226 01e2 9093 0000 sts (timer)+1,r25 |
227 01e6 8093 0000 sts timer,r24 |
228 01ea 892B or r24,r25 |
229 01ec 01F4 brne .L21 |
230 01ee 83E0 ldi r24,lo8(3) |
231 01f0 8093 0000 sts state,r24 |
232 01f4 1092 0000 sts (pitchOffset)+1,__zero_reg__ |
233 01f8 1092 0000 sts pitchOffset,__zero_reg__ |
234 01fc 1092 0000 sts (targetPitchCount)+1,__zero_reg__ |
235 0200 1092 0000 sts targetPitchCount,__zero_reg__ |
236 0204 1092 0000 sts (actualPitchCount)+1,__zero_reg__ |
237 0208 1092 0000 sts actualPitchCount,__zero_reg__ |
238 020c 84EF ldi r24,lo8(500) |
239 020e 91E0 ldi r25,hi8(500) |
240 0210 9093 0000 sts (beeptime)+1,r25 |
241 0214 8093 0000 sts beeptime,r24 |
242 .L21: |
243 0218 8091 0000 lds r24,EE_Parameter+30 |
244 021c 282F mov r18,r24 |
245 021e 30E0 ldi r19,lo8(0) |
246 0220 8091 0000 lds r24,targetPitchCount |
247 0224 9091 0000 lds r25,(targetPitchCount)+1 |
248 0228 8217 cp r24,r18 |
249 022a 9307 cpc r25,r19 |
250 022c 04F4 brge .L23 |
251 022e 3093 0000 sts (targetPitchCount)+1,r19 |
252 0232 2093 0000 sts targetPitchCount,r18 |
253 .L23: |
254 0236 4C5F subi r20,lo8(-(4)) |
255 0238 5F4F sbci r21,hi8(-(4)) |
256 023a 4930 cpi r20,9 |
257 023c 5105 cpc r21,__zero_reg__ |
258 023e 00F0 brlo .+2 |
259 0240 00C0 rjmp .L5 |
260 0242 0E94 0000 call altcon_lock |
261 0246 89E1 ldi r24,lo8(25) |
262 0248 90E0 ldi r25,hi8(25) |
263 024a 9093 0000 sts (timer)+1,r25 |
264 024e 8093 0000 sts timer,r24 |
265 0252 86E0 ldi r24,lo8(6) |
266 0254 00C0 rjmp .L33 |
267 .L11: |
268 0256 3496 adiw r30,4 |
269 0258 3997 sbiw r30,9 |
270 025a 00F4 brsh .L34 |
271 025c 0417 cp r16,r20 |
272 025e 1507 cpc r17,r21 |
273 0260 01F4 brne .L34 |
274 0262 8091 0000 lds r24,timer |
275 0266 9091 0000 lds r25,(timer)+1 |
276 026a 0197 sbiw r24,1 |
277 026c 9093 0000 sts (timer)+1,r25 |
278 0270 8093 0000 sts timer,r24 |
279 0274 892B or r24,r25 |
280 0276 01F0 breq .+2 |
281 0278 00C0 rjmp .L5 |
282 027a 87E0 ldi r24,lo8(7) |
283 027c 00C0 rjmp .L33 |
284 .L12: |
285 027e 0E94 0000 call altcon_start |
286 0282 88E0 ldi r24,lo8(8) |
287 0284 00C0 rjmp .L33 |
288 .L36: |
289 0286 F7FF sbrs r31,7 |
290 0288 00C0 rjmp .L25 |
291 028a F095 com r31 |
292 028c E195 neg r30 |
293 028e FF4F sbci r31,lo8(-1) |
294 .L25: |
295 0290 3697 sbiw r30,6 |
296 0292 04F0 brlt .L5 |
297 0294 0E94 0000 call altcon_stop |
298 0298 8091 0000 lds r24,averageN |
299 029c 9091 0000 lds r25,(averageN)+1 |
300 02a0 64E0 ldi r22,lo8(4) |
301 02a2 70E0 ldi r23,hi8(4) |
302 02a4 0E94 0000 call __divmodhi4 |
303 02a8 8091 0000 lds r24,pitchOffset |
304 02ac 9091 0000 lds r25,(pitchOffset)+1 |
305 02b0 861B sub r24,r22 |
306 02b2 970B sbc r25,r23 |
307 02b4 9093 0000 sts (pitchOffset)+1,r25 |
308 02b8 8093 0000 sts pitchOffset,r24 |
309 02bc 2091 0000 lds r18,stickValue |
310 02c0 3091 0000 lds r19,(stickValue)+1 |
311 02c4 820F add r24,r18 |
312 02c6 931F adc r25,r19 |
313 02c8 9093 0000 sts (targetPitchCount)+1,r25 |
314 02cc 8093 0000 sts targetPitchCount,r24 |
315 .L34: |
316 02d0 85E0 ldi r24,lo8(5) |
317 02d2 00C0 rjmp .L33 |
318 .L2: |
319 02d4 1092 0000 sts (actualPitchCount)+1,__zero_reg__ |
320 02d8 1092 0000 sts actualPitchCount,__zero_reg__ |
321 02dc 1092 0000 sts (targetPitchCount)+1,__zero_reg__ |
322 02e0 1092 0000 sts targetPitchCount,__zero_reg__ |
323 02e4 1092 0000 sts (pitchOffset)+1,__zero_reg__ |
324 02e8 1092 0000 sts pitchOffset,__zero_reg__ |
325 02ec 1092 0000 sts (stickValue)+1,__zero_reg__ |
326 02f0 1092 0000 sts stickValue,__zero_reg__ |
327 02f4 81E0 ldi r24,lo8(1) |
328 .L33: |
329 02f6 8093 0000 sts state,r24 |
330 .L5: |
331 02fa 8091 0000 lds r24,pitchOffset |
332 02fe 9091 0000 lds r25,(pitchOffset)+1 |
333 0302 97FF sbrs r25,7 |
334 0304 00C0 rjmp .L26 |
335 0306 1092 0000 sts (pitchOffset)+1,__zero_reg__ |
336 030a 1092 0000 sts pitchOffset,__zero_reg__ |
337 .L26: |
338 030e 8091 0000 lds r24,delayCounter |
339 0312 9091 0000 lds r25,(delayCounter)+1 |
340 0316 892B or r24,r25 |
341 0318 01F4 brne .L27 |
342 031a 2091 0000 lds r18,actualPitchCount |
343 031e 3091 0000 lds r19,(actualPitchCount)+1 |
344 0322 8091 0000 lds r24,targetPitchCount |
345 0326 9091 0000 lds r25,(targetPitchCount)+1 |
346 032a 821B sub r24,r18 |
347 032c 930B sbc r25,r19 |
348 032e 8430 cpi r24,4 |
349 0330 9105 cpc r25,__zero_reg__ |
350 0332 04F0 brlt .L28 |
351 0334 83E0 ldi r24,lo8(3) |
352 0336 90E0 ldi r25,hi8(3) |
353 0338 00C0 rjmp .L29 |
354 .L28: |
355 033a 4FEF ldi r20,hi8(-3) |
356 033c 8D3F cpi r24,lo8(-3) |
357 033e 9407 cpc r25,r20 |
358 0340 04F4 brge .L29 |
359 0342 8DEF ldi r24,lo8(-3) |
360 0344 9FEF ldi r25,hi8(-3) |
361 .L29: |
362 0346 820F add r24,r18 |
363 0348 931F adc r25,r19 |
364 034a 9093 0000 sts (actualPitchCount)+1,r25 |
365 034e 8093 0000 sts actualPitchCount,r24 |
366 0352 8091 0000 lds r24,delay |
367 0356 9091 0000 lds r25,(delay)+1 |
368 035a 0196 adiw r24,1 |
369 035c 9093 0000 sts (delayCounter)+1,r25 |
370 0360 8093 0000 sts delayCounter,r24 |
371 .L27: |
372 0364 8091 0000 lds r24,delayCounter |
373 0368 9091 0000 lds r25,(delayCounter)+1 |
374 036c 0197 sbiw r24,1 |
375 036e 9093 0000 sts (delayCounter)+1,r25 |
376 0372 8093 0000 sts delayCounter,r24 |
377 0376 8091 0000 lds r24,actualPitchCount |
378 037a 9091 0000 lds r25,(actualPitchCount)+1 |
379 037e 97FF sbrs r25,7 |
380 0380 00C0 rjmp .L30 |
381 0382 1092 0000 sts (actualPitchCount)+1,__zero_reg__ |
382 0386 1092 0000 sts actualPitchCount,__zero_reg__ |
383 .L30: |
384 038a 8091 0000 lds r24,stickValue |
385 038e 9091 0000 lds r25,(stickValue)+1 |
386 0392 9093 0000 sts (DebugOut+54)+1,r25 |
387 0396 8093 0000 sts DebugOut+54,r24 |
388 039a 8091 0000 lds r24,actualPitchCount |
389 039e 9091 0000 lds r25,actualPitchCount+1 |
390 03a2 8093 0000 sts DebugOut+58,r24 |
391 03a6 9093 0000 sts DebugOut+59,r25 |
392 03aa 2091 0000 lds r18,pitchOffset |
393 03ae 3091 0000 lds r19,(pitchOffset)+1 |
394 03b2 3093 0000 sts (DebugOut+60)+1,r19 |
395 03b6 2093 0000 sts DebugOut+60,r18 |
396 /* epilogue start */ |
397 03ba DF91 pop r29 |
398 03bc CF91 pop r28 |
399 03be 1F91 pop r17 |
400 03c0 0F91 pop r16 |
401 03c2 0895 ret |
403 .global stickValue |
404 .global stickValue |
405 .section .bss |
408 stickValue: |
409 0000 0000 .skip 2,0 |
410 .global lastStickValue |
411 .global lastStickValue |
414 lastStickValue: |
415 0002 0000 .skip 2,0 |
416 .global delay |
417 .global delay |
420 delay: |
421 0004 0000 .skip 2,0 |
422 .global delayCounter |
423 .global delayCounter |
426 delayCounter: |
427 0006 0000 .skip 2,0 |
428 .comm actualPitchCount,2,1 |
429 .comm targetPitchCount,2,1 |
430 .comm pitchOffset,2,1 |
431 .comm state,1,1 |
432 .comm timer,2,1 |
433 .comm temp,2,1 |
DEFINED SYMBOLS |
*ABS*:00000000 pitch_md.c |
c:\TEMP/ccyyuOZC.s:2 *ABS*:0000003f __SREG__ |
c:\TEMP/ccyyuOZC.s:3 *ABS*:0000003e __SP_H__ |
c:\TEMP/ccyyuOZC.s:4 *ABS*:0000003d __SP_L__ |
c:\TEMP/ccyyuOZC.s:5 *ABS*:00000034 __CCP__ |
c:\TEMP/ccyyuOZC.s:6 *ABS*:00000000 __tmp_reg__ |
c:\TEMP/ccyyuOZC.s:7 *ABS*:00000001 __zero_reg__ |
c:\TEMP/ccyyuOZC.s:13 .text:00000000 pitch_md_value |
c:\TEMP/ccyyuOZC.s:408 .bss:00000000 stickValue |
c:\TEMP/ccyyuOZC.s:414 .bss:00000002 lastStickValue |
*COM*:00000002 temp |
*COM*:00000002 pitchOffset |
*COM*:00000002 targetPitchCount |
*COM*:00000001 state |
*COM*:00000002 actualPitchCount |
*COM*:00000002 timer |
c:\TEMP/ccyyuOZC.s:420 .bss:00000004 delay |
c:\TEMP/ccyyuOZC.s:426 .bss:00000006 delayCounter |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
EE_Parameter |
PPM_in |
MotorenEin |
__divmodhi4 |
GetActiveParamSetNumber |
WriteParameterSet |
beeptime |
altcon_lock |
altcon_start |
altcon_stop |
averageN |
DebugOut |
/branches/thjac/V1_10/pitch_neutral.d |
---|
0,0 → 1,3 |
pitch_neutral.o pitch_neutral.d : pitch_neutral.c main.h old_macros.h _Settings.h \ |
printf_P.h timer0.h uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h \ |
spi.h led.h parameter.h altcon.h pitch.h pitch_neutral.h |
/branches/thjac/V1_10/pitch_neutral.lst |
---|
0,0 → 1,362 |
1 .file "pitch_neutral.c" |
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 .text |
11 .global pitch_neutral_value |
13 pitch_neutral_value: |
14 0000 CF92 push r12 |
15 0002 DF92 push r13 |
16 0004 EF92 push r14 |
17 0006 FF92 push r15 |
18 0008 0F93 push r16 |
19 000a 1F93 push r17 |
20 000c CF93 push r28 |
21 000e DF93 push r29 |
22 /* prologue: function */ |
23 /* frame size = 0 */ |
24 0010 8091 0000 lds r24,MotorenEin |
25 0014 8823 tst r24 |
26 0016 01F4 brne .+2 |
27 0018 00C0 rjmp .L2 |
28 001a C090 0000 lds r12,stickValue |
29 001e D090 0000 lds r13,(stickValue)+1 |
30 0022 D092 0000 sts (lastStickValue)+1,r13 |
31 0026 C092 0000 sts lastStickValue,r12 |
32 002a 8091 0000 lds r24,EE_Parameter+2 |
33 002e 082F mov r16,r24 |
34 0030 10E0 ldi r17,lo8(0) |
35 0032 F801 movw r30,r16 |
36 0034 EE0F lsl r30 |
37 0036 FF1F rol r31 |
38 0038 E050 subi r30,lo8(-(PPM_in)) |
39 003a F040 sbci r31,hi8(-(PPM_in)) |
40 003c 0190 ld __tmp_reg__,Z+ |
41 003e F081 ld r31,Z |
42 0040 E02D mov r30,__tmp_reg__ |
43 0042 EE9F mul r30,r30 |
44 0044 C001 movw r24,r0 |
45 0046 EF9F mul r30,r31 |
46 0048 900D add r25,r0 |
47 004a FE9F mul r31,r30 |
48 004c 900D add r25,r0 |
49 004e 1124 clr r1 |
50 0050 1E16 cp __zero_reg__,r30 |
51 0052 1F06 cpc __zero_reg__,r31 |
52 0054 04F4 brge .L3 |
53 0056 66E9 ldi r22,lo8(150) |
54 0058 70E0 ldi r23,hi8(150) |
55 005a 00C0 rjmp .L25 |
56 .L3: |
57 005c 6AE6 ldi r22,lo8(-150) |
58 005e 7FEF ldi r23,hi8(-150) |
59 .L25: |
60 0060 0E94 0000 call __divmodhi4 |
61 0064 E60F add r30,r22 |
62 0066 F71F adc r31,r23 |
63 0068 F093 0000 sts (temp)+1,r31 |
64 006c E093 0000 sts temp,r30 |
65 0070 C601 movw r24,r12 |
66 0072 880F lsl r24 |
67 0074 991F rol r25 |
68 0076 2091 0000 lds r18,temp |
69 007a 3091 0000 lds r19,(temp)+1 |
70 007e 820F add r24,r18 |
71 0080 931F adc r25,r19 |
72 0082 63E0 ldi r22,lo8(3) |
73 0084 70E0 ldi r23,hi8(3) |
74 0086 0E94 0000 call __divmodhi4 |
75 008a 9B01 movw r18,r22 |
76 008c 7093 0000 sts (stickValue)+1,r23 |
77 0090 6093 0000 sts stickValue,r22 |
78 0094 C091 0000 lds r28,pitchOffset |
79 0098 D091 0000 lds r29,(pitchOffset)+1 |
80 009c 7B01 movw r14,r22 |
81 009e EC0E add r14,r28 |
82 00a0 FD1E adc r15,r29 |
83 00a2 8091 0000 lds r24,state |
84 00a6 8530 cpi r24,lo8(5) |
85 00a8 01F4 brne .+2 |
86 00aa 00C0 rjmp .L9 |
87 00ac 8630 cpi r24,lo8(6) |
88 00ae 00F4 brsh .L13 |
89 00b0 8330 cpi r24,lo8(3) |
90 00b2 01F0 breq .L7 |
91 00b4 8430 cpi r24,lo8(4) |
92 00b6 00F0 brlo .+2 |
93 00b8 00C0 rjmp .L8 |
94 00ba 8230 cpi r24,lo8(2) |
95 00bc 01F0 breq .+2 |
96 00be 00C0 rjmp .L5 |
97 00c0 00C0 rjmp .L28 |
98 .L13: |
99 00c2 8730 cpi r24,lo8(7) |
100 00c4 01F4 brne .+2 |
101 00c6 00C0 rjmp .L11 |
102 00c8 8730 cpi r24,lo8(7) |
103 00ca 00F4 brsh .+2 |
104 00cc 00C0 rjmp .L10 |
105 00ce 8830 cpi r24,lo8(8) |
106 00d0 01F0 breq .+2 |
107 00d2 00C0 rjmp .L5 |
108 00d4 00C0 rjmp .L29 |
109 .L28: |
110 00d6 46E0 ldi r20,lo8(6) |
111 00d8 C416 cp r12,r20 |
112 00da D104 cpc r13,__zero_reg__ |
113 00dc 04F4 brge .+2 |
114 00de 00C0 rjmp .L5 |
115 00e0 C601 movw r24,r12 |
116 00e2 861B sub r24,r22 |
117 00e4 970B sbc r25,r23 |
118 00e6 9C01 movw r18,r24 |
119 00e8 8091 0000 lds r24,EE_Parameter+29 |
120 00ec 90E0 ldi r25,lo8(0) |
121 00ee 2817 cp r18,r24 |
122 00f0 3907 cpc r19,r25 |
123 00f2 04F4 brge .+2 |
124 00f4 00C0 rjmp .L5 |
125 00f6 D092 0000 sts (pitchOffset)+1,r13 |
126 00fa C092 0000 sts pitchOffset,r12 |
127 00fe 83E0 ldi r24,lo8(3) |
128 0100 8093 0000 sts state,r24 |
129 0104 89E1 ldi r24,lo8(25) |
130 0106 90E0 ldi r25,hi8(25) |
131 0108 9093 0000 sts (pitchNeutralTimer)+1,r25 |
132 010c 8093 0000 sts pitchNeutralTimer,r24 |
133 0110 00C0 rjmp .L5 |
134 .L7: |
135 0112 8091 0000 lds r24,pitchNeutralTimer |
136 0116 9091 0000 lds r25,(pitchNeutralTimer)+1 |
137 011a 0197 sbiw r24,1 |
138 011c 9093 0000 sts (pitchNeutralTimer)+1,r25 |
139 0120 8093 0000 sts pitchNeutralTimer,r24 |
140 0124 892B or r24,r25 |
141 0126 01F4 brne .L15 |
142 0128 1092 0000 sts (pitchOffset)+1,__zero_reg__ |
143 012c 1092 0000 sts pitchOffset,__zero_reg__ |
144 0130 82E0 ldi r24,lo8(2) |
145 0132 8093 0000 sts state,r24 |
146 .L15: |
147 0136 2B5F subi r18,lo8(-(5)) |
148 0138 3F4F sbci r19,hi8(-(5)) |
149 013a 2B30 cpi r18,11 |
150 013c 3105 cpc r19,__zero_reg__ |
151 013e 00F0 brlo .+2 |
152 0140 00C0 rjmp .L14 |
153 0142 8091 0000 lds r24,EE_Parameter+8 |
154 0146 80FF sbrs r24,0 |
155 0148 00C0 rjmp .L16 |
156 014a 87E0 ldi r24,lo8(7) |
157 014c 00C0 rjmp .L26 |
158 .L16: |
159 014e 84E0 ldi r24,lo8(4) |
160 0150 00C0 rjmp .L26 |
161 .L8: |
162 0152 8091 0000 lds r24,EE_Parameter+30 |
163 0156 C82F mov r28,r24 |
164 0158 D0E0 ldi r29,lo8(0) |
165 015a EC16 cp r14,r28 |
166 015c FD06 cpc r15,r29 |
167 015e 04F4 brge .+2 |
168 0160 00C0 rjmp .L14 |
169 0162 00C0 rjmp .L5 |
170 .L9: |
171 0164 8091 0000 lds r24,EE_Parameter+51 |
172 0168 84FF sbrs r24,4 |
173 016a 00C0 rjmp .L17 |
174 016c 000F lsl r16 |
175 016e 111F rol r17 |
176 0170 0050 subi r16,lo8(-(PPM_in)) |
177 0172 1040 sbci r17,hi8(-(PPM_in)) |
178 0174 F801 movw r30,r16 |
179 0176 8081 ld r24,Z |
180 0178 9181 ldd r25,Z+1 |
181 017a 8C5A subi r24,lo8(-84) |
182 017c 9F4F sbci r25,hi8(-84) |
183 017e 04F0 brlt .L18 |
184 0180 84E6 ldi r24,lo8(100) |
185 0182 90E0 ldi r25,hi8(100) |
186 0184 9093 0000 sts (pitchNeutralTimer)+1,r25 |
187 0188 8093 0000 sts pitchNeutralTimer,r24 |
188 018c 00C0 rjmp .L17 |
189 .L18: |
190 018e 8091 0000 lds r24,pitchNeutralTimer |
191 0192 9091 0000 lds r25,(pitchNeutralTimer)+1 |
192 0196 0197 sbiw r24,1 |
193 0198 9093 0000 sts (pitchNeutralTimer)+1,r25 |
194 019c 8093 0000 sts pitchNeutralTimer,r24 |
195 01a0 892B or r24,r25 |
196 01a2 01F4 brne .L17 |
197 01a4 82E0 ldi r24,lo8(2) |
198 01a6 8093 0000 sts state,r24 |
199 01aa 1092 0000 sts (pitchOffset)+1,__zero_reg__ |
200 01ae 1092 0000 sts pitchOffset,__zero_reg__ |
201 01b2 84EF ldi r24,lo8(500) |
202 01b4 91E0 ldi r25,hi8(500) |
203 01b6 9093 0000 sts (beeptime)+1,r25 |
204 01ba 8093 0000 sts beeptime,r24 |
205 .L17: |
206 01be 8091 0000 lds r24,EE_Parameter+30 |
207 01c2 90E0 ldi r25,lo8(0) |
208 01c4 E701 movw r28,r14 |
209 01c6 E816 cp r14,r24 |
210 01c8 F906 cpc r15,r25 |
211 01ca 04F4 brge .L19 |
212 01cc EC01 movw r28,r24 |
213 .L19: |
214 01ce 2C5F subi r18,lo8(-(4)) |
215 01d0 3F4F sbci r19,hi8(-(4)) |
216 01d2 2930 cpi r18,9 |
217 01d4 3105 cpc r19,__zero_reg__ |
218 01d6 00F0 brlo .+2 |
219 01d8 00C0 rjmp .L14 |
220 01da 89E1 ldi r24,lo8(25) |
221 01dc 90E0 ldi r25,hi8(25) |
222 01de 9093 0000 sts (pitchNeutralTimer)+1,r25 |
223 01e2 8093 0000 sts pitchNeutralTimer,r24 |
224 01e6 86E0 ldi r24,lo8(6) |
225 01e8 00C0 rjmp .L26 |
226 .L10: |
227 01ea CB01 movw r24,r22 |
228 01ec 0496 adiw r24,4 |
229 01ee 0997 sbiw r24,9 |
230 01f0 00F4 brsh .L20 |
231 01f2 C616 cp r12,r22 |
232 01f4 D706 cpc r13,r23 |
233 01f6 01F4 brne .L20 |
234 01f8 8091 0000 lds r24,pitchNeutralTimer |
235 01fc 9091 0000 lds r25,(pitchNeutralTimer)+1 |
236 0200 0197 sbiw r24,1 |
237 0202 9093 0000 sts (pitchNeutralTimer)+1,r25 |
238 0206 8093 0000 sts pitchNeutralTimer,r24 |
239 020a 892B or r24,r25 |
240 020c 01F4 brne .L5 |
241 020e 87E0 ldi r24,lo8(7) |
242 0210 00C0 rjmp .L27 |
243 .L20: |
244 0212 85E0 ldi r24,lo8(5) |
245 .L27: |
246 0214 8093 0000 sts state,r24 |
247 0218 00C0 rjmp .L5 |
248 .L11: |
249 021a 0E94 0000 call altcon_start |
250 021e 88E0 ldi r24,lo8(8) |
251 0220 00C0 rjmp .L27 |
252 .L29: |
253 0222 CB01 movw r24,r22 |
254 0224 77FF sbrs r23,7 |
255 0226 00C0 rjmp .L21 |
256 0228 8827 clr r24 |
257 022a 9927 clr r25 |
258 022c 861B sub r24,r22 |
259 022e 970B sbc r25,r23 |
260 .L21: |
261 0230 0697 sbiw r24,6 |
262 0232 04F0 brlt .L5 |
263 0234 8091 0000 lds r24,averageN |
264 0238 9091 0000 lds r25,(averageN)+1 |
265 023c 64E0 ldi r22,lo8(4) |
266 023e 70E0 ldi r23,hi8(4) |
267 0240 0E94 0000 call __divmodhi4 |
268 0244 CE01 movw r24,r28 |
269 0246 861B sub r24,r22 |
270 0248 970B sbc r25,r23 |
271 024a 9093 0000 sts (pitchOffset)+1,r25 |
272 024e 8093 0000 sts pitchOffset,r24 |
273 0252 E901 movw r28,r18 |
274 0254 C80F add r28,r24 |
275 0256 D91F adc r29,r25 |
276 0258 0E94 0000 call altcon_stop |
277 025c 85E0 ldi r24,lo8(5) |
278 .L26: |
279 025e 8093 0000 sts state,r24 |
280 0262 00C0 rjmp .L14 |
281 .L2: |
282 0264 1092 0000 sts (pitchOffset)+1,__zero_reg__ |
283 0268 1092 0000 sts pitchOffset,__zero_reg__ |
284 026c 1092 0000 sts (stickValue)+1,__zero_reg__ |
285 0270 1092 0000 sts stickValue,__zero_reg__ |
286 0274 82E0 ldi r24,lo8(2) |
287 0276 8093 0000 sts state,r24 |
288 027a C0E0 ldi r28,lo8(0) |
289 027c D0E0 ldi r29,hi8(0) |
290 027e 00C0 rjmp .L14 |
291 .L5: |
292 0280 E701 movw r28,r14 |
293 .L14: |
294 0282 8091 0000 lds r24,pitchOffset |
295 0286 9091 0000 lds r25,(pitchOffset)+1 |
296 028a 97FF sbrs r25,7 |
297 028c 00C0 rjmp .L22 |
298 028e 1092 0000 sts (pitchOffset)+1,__zero_reg__ |
299 0292 1092 0000 sts pitchOffset,__zero_reg__ |
300 .L22: |
301 0296 9E01 movw r18,r28 |
302 0298 D7FF sbrs r29,7 |
303 029a 00C0 rjmp .L23 |
304 029c 20E0 ldi r18,lo8(0) |
305 029e 30E0 ldi r19,hi8(0) |
306 .L23: |
307 02a0 8091 0000 lds r24,stickValue |
308 02a4 9091 0000 lds r25,(stickValue)+1 |
309 02a8 9093 0000 sts (DebugOut+54)+1,r25 |
310 02ac 8093 0000 sts DebugOut+54,r24 |
311 02b0 3093 0000 sts (DebugOut+58)+1,r19 |
312 02b4 2093 0000 sts DebugOut+58,r18 |
313 02b8 8091 0000 lds r24,pitchOffset |
314 02bc 9091 0000 lds r25,(pitchOffset)+1 |
315 02c0 9093 0000 sts (DebugOut+60)+1,r25 |
316 02c4 8093 0000 sts DebugOut+60,r24 |
317 02c8 C901 movw r24,r18 |
318 /* epilogue start */ |
319 02ca DF91 pop r29 |
320 02cc CF91 pop r28 |
321 02ce 1F91 pop r17 |
322 02d0 0F91 pop r16 |
323 02d2 FF90 pop r15 |
324 02d4 EF90 pop r14 |
325 02d6 DF90 pop r13 |
326 02d8 CF90 pop r12 |
327 02da 0895 ret |
329 .lcomm stickValue,2 |
330 .lcomm lastStickValue,2 |
331 .lcomm pitchOffset,2 |
332 .lcomm state,1 |
333 .data |
336 pitchNeutralTimer: |
337 0000 1900 .word 25 |
338 .lcomm temp,2 |
DEFINED SYMBOLS |
*ABS*:00000000 pitch_neutral.c |
c:\TEMP/ccEXHUa7.s:2 *ABS*:0000003f __SREG__ |
c:\TEMP/ccEXHUa7.s:3 *ABS*:0000003e __SP_H__ |
c:\TEMP/ccEXHUa7.s:4 *ABS*:0000003d __SP_L__ |
c:\TEMP/ccEXHUa7.s:5 *ABS*:00000034 __CCP__ |
c:\TEMP/ccEXHUa7.s:6 *ABS*:00000000 __tmp_reg__ |
c:\TEMP/ccEXHUa7.s:7 *ABS*:00000001 __zero_reg__ |
c:\TEMP/ccEXHUa7.s:13 .text:00000000 pitch_neutral_value |
.bss:00000000 stickValue |
c:\TEMP/ccEXHUa7.s:329 .bss:00000002 lastStickValue |
c:\TEMP/ccEXHUa7.s:332 .bss:00000007 temp |
c:\TEMP/ccEXHUa7.s:330 .bss:00000004 pitchOffset |
c:\TEMP/ccEXHUa7.s:331 .bss:00000006 state |
c:\TEMP/ccEXHUa7.s:336 .data:00000000 pitchNeutralTimer |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
MotorenEin |
EE_Parameter |
PPM_in |
__divmodhi4 |
beeptime |
altcon_start |
averageN |
altcon_stop |
DebugOut |