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 |