/branches/V0.41-Hexa/BLMC.lst |
---|
0,0 → 1,532 |
1 .file "BLMC.c" |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __CCP__ = 0x34 |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
15 .Ltext0: |
16 .global __vector_4 |
18 __vector_4: |
19 .LFB3: |
20 .LM1: |
21 0000 1F92 push __zero_reg__ |
22 0002 0F92 push r0 |
23 0004 0FB6 in r0,__SREG__ |
24 0006 0F92 push r0 |
25 0008 1124 clr __zero_reg__ |
26 /* prologue: Signal */ |
27 /* frame size = 0 */ |
28 /* epilogue start */ |
29 .LM2: |
30 000a 0F90 pop r0 |
31 000c 0FBE out __SREG__,r0 |
32 000e 0F90 pop r0 |
33 0010 1F90 pop __zero_reg__ |
34 0012 1895 reti |
35 .LFE3: |
37 .global Manuell |
39 Manuell: |
40 .LFB5: |
41 .LM3: |
42 /* prologue: function */ |
43 /* frame size = 0 */ |
44 .LM4: |
45 0014 8091 0000 lds r24,Phase |
46 0018 8230 cpi r24,lo8(2) |
47 001a 01F0 breq .L7 |
48 001c 8330 cpi r24,lo8(3) |
49 001e 00F4 brsh .L11 |
50 0020 8823 tst r24 |
51 0022 01F0 breq .L5 |
52 0024 8130 cpi r24,lo8(1) |
53 0026 01F0 breq .+2 |
54 0028 00C0 rjmp .L12 |
55 002a 00C0 rjmp .L15 |
56 .L11: |
57 002c 8430 cpi r24,lo8(4) |
58 002e 01F4 brne .+2 |
59 0030 00C0 rjmp .L9 |
60 0032 8430 cpi r24,lo8(4) |
61 0034 00F0 brlo .L8 |
62 0036 8530 cpi r24,lo8(5) |
63 0038 01F0 breq .+2 |
64 003a 00C0 rjmp .L12 |
65 003c 00C0 rjmp .L16 |
66 .L5: |
67 .LM5: |
68 003e 81EA ldi r24,lo8(-95) |
69 0040 8FBD out 79-32,r24 |
70 0042 81E6 ldi r24,lo8(97) |
71 0044 85BD out 69-32,r24 |
72 0046 88E0 ldi r24,lo8(8) |
73 0048 87BB out 55-32,r24 |
74 .LM6: |
75 004a 82B3 in r24,50-32 |
76 004c 877D andi r24,lo8(-41) |
77 004e 82BB out 50-32,r24 |
78 0050 949A sbi 50-32,4 |
79 .LM7: |
80 0052 8091 0000 lds r24,IntRef |
81 0056 8260 ori r24,lo8(2) |
82 0058 00C0 rjmp .L13 |
83 .L15: |
84 .LM8: |
85 005a 81EA ldi r24,lo8(-95) |
86 005c 8FBD out 79-32,r24 |
87 005e 81E6 ldi r24,lo8(97) |
88 0060 85BD out 69-32,r24 |
89 0062 88E0 ldi r24,lo8(8) |
90 0064 87BB out 55-32,r24 |
91 .LM9: |
92 0066 82B3 in r24,50-32 |
93 0068 877E andi r24,lo8(-25) |
94 006a 82BB out 50-32,r24 |
95 006c 959A sbi 50-32,5 |
96 .LM10: |
97 006e 8091 0000 lds r24,IntRef |
98 0072 8160 ori r24,lo8(1) |
99 0074 00C0 rjmp .L14 |
100 .L7: |
101 .LM11: |
102 0076 81EA ldi r24,lo8(-95) |
103 0078 8FBD out 79-32,r24 |
104 007a 81E6 ldi r24,lo8(97) |
105 007c 85BD out 69-32,r24 |
106 007e 84E0 ldi r24,lo8(4) |
107 0080 87BB out 55-32,r24 |
108 .LM12: |
109 0082 82B3 in r24,50-32 |
110 0084 877E andi r24,lo8(-25) |
111 0086 82BB out 50-32,r24 |
112 0088 959A sbi 50-32,5 |
113 .LM13: |
114 008a 8091 0000 lds r24,IntRef |
115 008e 00C0 rjmp .L13 |
116 .L8: |
117 .LM14: |
118 0090 81EA ldi r24,lo8(-95) |
119 0092 8FBD out 79-32,r24 |
120 0094 81E6 ldi r24,lo8(97) |
121 0096 85BD out 69-32,r24 |
122 0098 84E0 ldi r24,lo8(4) |
123 009a 87BB out 55-32,r24 |
124 .LM15: |
125 009c 82B3 in r24,50-32 |
126 009e 8F7C andi r24,lo8(-49) |
127 00a0 82BB out 50-32,r24 |
128 00a2 939A sbi 50-32,3 |
129 .LM16: |
130 00a4 8091 0000 lds r24,IntRef |
131 00a8 8260 ori r24,lo8(2) |
132 .L14: |
133 00aa 87B9 out 39-32,r24 |
134 .LM17: |
135 00ac 4098 cbi 40-32,0 |
136 00ae 0895 ret |
137 .L9: |
138 .LM18: |
139 00b0 81EA ldi r24,lo8(-95) |
140 00b2 8FBD out 79-32,r24 |
141 00b4 81E6 ldi r24,lo8(97) |
142 00b6 85BD out 69-32,r24 |
143 00b8 82E0 ldi r24,lo8(2) |
144 00ba 87BB out 55-32,r24 |
145 .LM19: |
146 00bc 82B3 in r24,50-32 |
147 00be 8F7C andi r24,lo8(-49) |
148 00c0 82BB out 50-32,r24 |
149 00c2 939A sbi 50-32,3 |
150 .LM20: |
151 00c4 8091 0000 lds r24,IntRef |
152 00c8 8160 ori r24,lo8(1) |
153 .L13: |
154 00ca 87B9 out 39-32,r24 |
155 .LM21: |
156 00cc 88B1 in r24,40-32 |
157 00ce 8360 ori r24,lo8(3) |
158 00d0 88B9 out 40-32,r24 |
159 00d2 0895 ret |
160 .L16: |
161 .LM22: |
162 00d4 81EA ldi r24,lo8(-95) |
163 00d6 8FBD out 79-32,r24 |
164 00d8 81E6 ldi r24,lo8(97) |
165 00da 85BD out 69-32,r24 |
166 00dc 82E0 ldi r24,lo8(2) |
167 00de 87BB out 55-32,r24 |
168 .LM23: |
169 00e0 82B3 in r24,50-32 |
170 00e2 877D andi r24,lo8(-41) |
171 00e4 82BB out 50-32,r24 |
172 00e6 949A sbi 50-32,4 |
173 .LM24: |
174 00e8 8091 0000 lds r24,IntRef |
175 00ec 87B9 out 39-32,r24 |
176 .LM25: |
177 00ee 4098 cbi 40-32,0 |
178 .L12: |
179 00f0 0895 ret |
180 .LFE5: |
182 .global __vector_16 |
184 __vector_16: |
185 .LFB4: |
186 .LM26: |
187 00f2 1F92 push __zero_reg__ |
188 00f4 0F92 push r0 |
189 00f6 0FB6 in r0,__SREG__ |
190 00f8 0F92 push r0 |
191 00fa 1124 clr __zero_reg__ |
192 00fc CF92 push r12 |
193 00fe DF92 push r13 |
194 0100 EF92 push r14 |
195 0102 FF92 push r15 |
196 0104 0F93 push r16 |
197 0106 1F93 push r17 |
198 0108 2F93 push r18 |
199 010a 3F93 push r19 |
200 010c 4F93 push r20 |
201 010e 5F93 push r21 |
202 0110 6F93 push r22 |
203 0112 7F93 push r23 |
204 0114 8F93 push r24 |
205 0116 9F93 push r25 |
206 0118 AF93 push r26 |
207 011a BF93 push r27 |
208 011c EF93 push r30 |
209 011e FF93 push r31 |
210 /* prologue: Signal */ |
211 /* frame size = 0 */ |
212 .LM27: |
213 0120 61EA ldi r22,lo8(-95) |
214 0122 F62E mov r15,r22 |
215 0124 01E6 ldi r16,lo8(97) |
216 0126 52E0 ldi r21,lo8(2) |
217 0128 C52E mov r12,r21 |
218 .LM28: |
219 012a 44E0 ldi r20,lo8(4) |
220 012c D42E mov r13,r20 |
221 .LM29: |
222 012e 38E0 ldi r19,lo8(8) |
223 0130 E32E mov r14,r19 |
224 .LVL0: |
225 .L44: |
226 .LM30: |
227 0132 88B1 in r24,40-32 |
228 0134 90E0 ldi r25,lo8(0) |
229 0136 25E0 ldi r18,5 |
230 0138 9695 1: lsr r25 |
231 013a 8795 ror r24 |
232 013c 2A95 dec r18 |
233 013e 01F4 brne 1b |
234 0140 182F mov r17,r24 |
235 0142 1170 andi r17,lo8(1) |
236 .LM31: |
237 0144 8091 0000 lds r24,Phase |
238 0148 8230 cpi r24,lo8(2) |
239 014a 01F4 brne .+2 |
240 014c 00C0 rjmp .L21 |
241 014e 8330 cpi r24,lo8(3) |
242 0150 00F4 brsh .L25 |
243 0152 8823 tst r24 |
244 0154 01F0 breq .L19 |
245 0156 8130 cpi r24,lo8(1) |
246 0158 01F0 breq .+2 |
247 015a 00C0 rjmp .L18 |
248 015c 00C0 rjmp .L49 |
249 .L25: |
250 015e 8430 cpi r24,lo8(4) |
251 0160 01F4 brne .+2 |
252 0162 00C0 rjmp .L23 |
253 0164 8430 cpi r24,lo8(4) |
254 0166 00F4 brsh .+2 |
255 0168 00C0 rjmp .L22 |
256 016a 8530 cpi r24,lo8(5) |
257 016c 01F0 breq .+2 |
258 016e 00C0 rjmp .L18 |
259 0170 00C0 rjmp .L50 |
260 .L19: |
261 .LM32: |
262 0172 FFBC out 79-32,r15 |
263 0174 05BD out 69-32,r16 |
264 0176 E7BA out 55-32,r14 |
265 .LM33: |
266 0178 1123 tst r17 |
267 017a 01F0 breq .L26 |
268 .LM34: |
269 017c 82B3 in r24,50-32 |
270 017e 877E andi r24,lo8(-25) |
271 0180 82BB out 50-32,r24 |
272 0182 959A sbi 50-32,5 |
273 .LM35: |
274 0184 8091 0000 lds r24,ZeitZumAdWandeln |
275 0188 8111 cpse r24,__zero_reg__ |
276 018a 00D0 rcall AdConvert |
277 .L27: |
278 .LM36: |
279 018c 4098 cbi 40-32,0 |
280 .LM37: |
281 018e 8091 0000 lds r24,IntRef |
282 0192 8160 ori r24,lo8(1) |
283 0194 87B9 out 39-32,r24 |
284 0196 00C0 rjmp .L45 |
285 .L26: |
286 .LM38: |
287 0198 82B3 in r24,50-32 |
288 019a 877D andi r24,lo8(-41) |
289 019c 82BB out 50-32,r24 |
290 019e 949A sbi 50-32,4 |
291 01a0 00C0 rjmp .L18 |
292 .L49: |
293 .LM39: |
294 01a2 82B3 in r24,50-32 |
295 01a4 877E andi r24,lo8(-25) |
296 01a6 82BB out 50-32,r24 |
297 01a8 959A sbi 50-32,5 |
298 .LM40: |
299 01aa 1123 tst r17 |
300 01ac 01F4 brne .L28 |
301 .LM41: |
302 01ae FFBC out 79-32,r15 |
303 01b0 05BD out 69-32,r16 |
304 01b2 D7BA out 55-32,r13 |
305 .LM42: |
306 01b4 8091 0000 lds r24,ZeitZumAdWandeln |
307 01b8 8111 cpse r24,__zero_reg__ |
308 01ba 00D0 rcall AdConvert |
309 .L29: |
310 .LM43: |
311 01bc 8091 0000 lds r24,IntRef |
312 .L48: |
313 01c0 87B9 out 39-32,r24 |
314 .LM44: |
315 01c2 88B1 in r24,40-32 |
316 01c4 8360 ori r24,lo8(3) |
317 01c6 88B9 out 40-32,r24 |
318 .L45: |
319 .LM45: |
320 01c8 8091 0000 lds r24,Phase |
321 01cc 8F5F subi r24,lo8(-(1)) |
322 01ce 8093 0000 sts Phase,r24 |
323 .L46: |
324 .LM46: |
325 01d2 8091 0000 lds r24,CntKommutierungen |
326 01d6 9091 0000 lds r25,(CntKommutierungen)+1 |
327 01da 0196 adiw r24,1 |
328 01dc 9093 0000 sts (CntKommutierungen)+1,r25 |
329 01e0 8093 0000 sts CntKommutierungen,r24 |
330 01e4 00C0 rjmp .L18 |
331 .L28: |
332 .LM47: |
333 01e6 FFBC out 79-32,r15 |
334 01e8 05BD out 69-32,r16 |
335 01ea E7BA out 55-32,r14 |
336 01ec 00C0 rjmp .L18 |
337 .L21: |
338 .LM48: |
339 01ee FFBC out 79-32,r15 |
340 01f0 05BD out 69-32,r16 |
341 01f2 D7BA out 55-32,r13 |
342 .LM49: |
343 01f4 1123 tst r17 |
344 01f6 01F0 breq .L30 |
345 .LM50: |
346 01f8 82B3 in r24,50-32 |
347 01fa 8F7C andi r24,lo8(-49) |
348 01fc 82BB out 50-32,r24 |
349 01fe 939A sbi 50-32,3 |
350 .LM51: |
351 0200 8091 0000 lds r24,ZeitZumAdWandeln |
352 0204 8111 cpse r24,__zero_reg__ |
353 0206 00D0 rcall AdConvert |
354 .L31: |
355 .LM52: |
356 0208 8091 0000 lds r24,IntRef |
357 020c 8260 ori r24,lo8(2) |
358 020e 00C0 rjmp .L47 |
359 .L30: |
360 .LM53: |
361 0210 82B3 in r24,50-32 |
362 0212 877E andi r24,lo8(-25) |
363 0214 82BB out 50-32,r24 |
364 0216 959A sbi 50-32,5 |
365 0218 00C0 rjmp .L18 |
366 .L22: |
367 .LM54: |
368 021a 82B3 in r24,50-32 |
369 021c 8F7C andi r24,lo8(-49) |
370 021e 82BB out 50-32,r24 |
371 0220 939A sbi 50-32,3 |
372 .LM55: |
373 0222 1123 tst r17 |
374 0224 01F4 brne .L32 |
375 .LM56: |
376 0226 FFBC out 79-32,r15 |
377 0228 05BD out 69-32,r16 |
378 022a C7BA out 55-32,r12 |
379 .LM57: |
380 022c 8091 0000 lds r24,ZeitZumAdWandeln |
381 0230 8111 cpse r24,__zero_reg__ |
382 0232 00D0 rcall AdConvert |
383 .L33: |
384 .LM58: |
385 0234 8091 0000 lds r24,IntRef |
386 0238 8160 ori r24,lo8(1) |
387 023a 00C0 rjmp .L48 |
388 .L32: |
389 .LM59: |
390 023c FFBC out 79-32,r15 |
391 023e 05BD out 69-32,r16 |
392 0240 D7BA out 55-32,r13 |
393 0242 00C0 rjmp .L18 |
394 .L23: |
395 .LM60: |
396 0244 FFBC out 79-32,r15 |
397 0246 05BD out 69-32,r16 |
398 0248 C7BA out 55-32,r12 |
399 .LM61: |
400 024a 1123 tst r17 |
401 024c 01F0 breq .L34 |
402 .LM62: |
403 024e 82B3 in r24,50-32 |
404 0250 877D andi r24,lo8(-41) |
405 0252 82BB out 50-32,r24 |
406 0254 949A sbi 50-32,4 |
407 .LM63: |
408 0256 8091 0000 lds r24,ZeitZumAdWandeln |
409 025a 8111 cpse r24,__zero_reg__ |
410 025c 00D0 rcall AdConvert |
411 .L35: |
412 .LM64: |
413 025e 8091 0000 lds r24,IntRef |
414 .L47: |
415 0262 87B9 out 39-32,r24 |
416 .LM65: |
417 0264 4098 cbi 40-32,0 |
418 0266 00C0 rjmp .L45 |
419 .L34: |
420 .LM66: |
421 0268 82B3 in r24,50-32 |
422 026a 8F7C andi r24,lo8(-49) |
423 026c 82BB out 50-32,r24 |
424 026e 939A sbi 50-32,3 |
425 0270 00C0 rjmp .L18 |
426 .L50: |
427 .LM67: |
428 0272 82B3 in r24,50-32 |
429 0274 877D andi r24,lo8(-41) |
430 0276 82BB out 50-32,r24 |
431 0278 949A sbi 50-32,4 |
432 .LM68: |
433 027a 1123 tst r17 |
434 027c 01F4 brne .L36 |
435 .LM69: |
436 027e FFBC out 79-32,r15 |
437 0280 05BD out 69-32,r16 |
438 0282 E7BA out 55-32,r14 |
439 .LM70: |
440 0284 8091 0000 lds r24,ZeitZumAdWandeln |
441 0288 8111 cpse r24,__zero_reg__ |
442 028a 00D0 rcall AdConvert |
443 .L37: |
444 .LM71: |
445 028c 8091 0000 lds r24,IntRef |
446 0290 8260 ori r24,lo8(2) |
447 0292 87B9 out 39-32,r24 |
448 .LM72: |
449 0294 88B1 in r24,40-32 |
450 0296 8360 ori r24,lo8(3) |
451 0298 88B9 out 40-32,r24 |
452 .LM73: |
453 029a 1092 0000 sts Phase,__zero_reg__ |
454 029e 00C0 rjmp .L46 |
455 .L36: |
456 .LM74: |
457 02a0 FFBC out 79-32,r15 |
458 02a2 05BD out 69-32,r16 |
459 02a4 C7BA out 55-32,r12 |
460 .L18: |
461 .LM75: |
462 02a6 4599 sbic 40-32,5 |
463 02a8 00C0 rjmp .L38 |
464 02aa 1123 tst r17 |
465 02ac 01F0 breq .+2 |
466 02ae 00C0 rjmp .L44 |
467 .L38: |
468 02b0 459B sbis 40-32,5 |
469 02b2 00C0 rjmp .L40 |
470 02b4 1123 tst r17 |
471 02b6 01F4 brne .+2 |
472 02b8 00C0 rjmp .L44 |
473 .L40: |
474 .LM76: |
475 02ba 1092 0000 sts ZeitZumAdWandeln,__zero_reg__ |
476 /* epilogue start */ |
477 .LM77: |
478 02be FF91 pop r31 |
479 02c0 EF91 pop r30 |
480 02c2 BF91 pop r27 |
481 02c4 AF91 pop r26 |
482 02c6 9F91 pop r25 |
483 02c8 8F91 pop r24 |
484 02ca 7F91 pop r23 |
485 02cc 6F91 pop r22 |
486 02ce 5F91 pop r21 |
487 02d0 4F91 pop r20 |
488 02d2 3F91 pop r19 |
489 02d4 2F91 pop r18 |
490 02d6 1F91 pop r17 |
491 .LVL1: |
492 02d8 0F91 pop r16 |
493 02da FF90 pop r15 |
494 02dc EF90 pop r14 |
495 02de DF90 pop r13 |
496 02e0 CF90 pop r12 |
497 02e2 0F90 pop r0 |
498 02e4 0FBE out __SREG__,r0 |
499 02e6 0F90 pop r0 |
500 02e8 1F90 pop __zero_reg__ |
501 02ea 1895 reti |
502 .LFE4: |
504 .global Phase |
505 .global Phase |
506 .section .bss |
509 Phase: |
510 0000 00 .skip 1,0 |
511 .global ShadowTCCR1A |
512 .global ShadowTCCR1A |
515 ShadowTCCR1A: |
516 0001 00 .skip 1,0 |
517 .global CompFreigabeTimer |
518 .data |
521 CompFreigabeTimer: |
522 0000 64 .byte 100 |
523 .global CompInterruptFreigabe |
524 .global CompInterruptFreigabe |
525 .section .bss |
528 CompInterruptFreigabe: |
529 0002 00 .skip 1,0 |
570 .Letext0: |
DEFINED SYMBOLS |
*ABS*:00000000 BLMC.c |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:2 *ABS*:0000003f __SREG__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:3 *ABS*:0000003e __SP_H__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:4 *ABS*:0000003d __SP_L__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:5 *ABS*:00000034 __CCP__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:18 .text:00000000 __vector_4 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:39 .text:00000014 Manuell |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:509 .bss:00000000 Phase |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:184 .text:000000f2 __vector_16 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:515 .bss:00000001 ShadowTCCR1A |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:521 .data:00000000 CompFreigabeTimer |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:528 .bss:00000002 CompInterruptFreigabe |
UNDEFINED SYMBOLS |
IntRef |
ZeitZumAdWandeln |
AdConvert |
CntKommutierungen |
__do_copy_data |
__do_clear_bss |
/branches/V0.41-Hexa/BrushLess-Ctrl_V0_41_10A.eep |
---|
0,0 → 1,0 |
:00000001FF |
/branches/V0.41-Hexa/BrushLess-Ctrl_V0_41_10A.elf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/V0.41-Hexa/BrushLess-Ctrl_V0_41_10A.hex |
---|
0,0 → 1,448 |
:1000000012C050CA2BC02AC0B5CAB5C927C026C065 |
:10001000A1C9A9C823C065C721C03AC61FC01EC058 |
:1000200022CB57CA1BC011241FBECFE5D4E0DEBFD0 |
:10003000CDBF10E0A0E6B0E0EAECFBE102C0059025 |
:100040000D92A837B107D9F713E0A8E7B0E001C0D7 |
:100050001D92A03AB107E1F746D4B5CDD1CF40917A |
:10006000780080916400841710F4AB9A482F209197 |
:100070007A0030917B00293C3105C8F01BBC1ABCCA |
:1000800019BC18BC13BC82B3877C82BBAB9A80912D |
:100090009003909191030196909391038093900324 |
:1000A0002150304030937B0020937A000895842FB4 |
:1000B00090E09BBD8ABD99BD88BD43BD0895E4E82D |
:1000C000F3E080917A0090917B0090938503809378 |
:1000D000840380917D0080938603138280918B003E |
:1000E00090918C0090938903809388038091A50060 |
:1000F0009091A60090938B0380938A0383B580939D |
:100100008C03118608951BBC1ABC19BC18BC13BC07 |
:1001100091E09FBD81E485BD8EE087BB88B3817F80 |
:1001200088BB9EBD089592B7980F82B7891B87FD43 |
:10013000FCCF089501C001970097E9F780E008958A |
:100140008091800090918100892B09F059C08091A5 |
:10015000820090918300892B99F0909190008FEF0D |
:10016000989FC001112468EC70E086DB70938F00CB |
:1001700060938E001092670089B78F7D89BF31C070 |
:100180008091A900853178F181E08093670020910A |
:10019000A5003091A60041E02D32340730F4293C0F |
:1001A000310540F42B30310538F410928F00109255 |
:1001B0008E0017C028EC30E08CEF90E0AC01249F5B |
:1001C000C001259F900D349F900D1124885D9940AA |
:1001D00064EB70E051DB6D5F7F4F70938F00609335 |
:1001E0008E00AB9819C080918E0090918F0000977F |
:1001F00029F0019790938F0080938E00AB9A0CC0EA |
:100200008091950380938E0010928F00109267006A |
:10021000AB9889B78F7D89BF80918E0090918F00B8 |
:100220008F3F910539F030F08FEF90E090938F0081 |
:1002300080938E0080918E000895CF93DF93EC0120 |
:1002400017C05FD821978091B5029091B602885867 |
:100250009F4F20917A0030917B008217930740F4E2 |
:1002600082B3877C82BB88B3817F88BB81E003C077 |
:10027000209739F780E0DF91CF9108951F93182FD1 |
:10028000789409C0AB9A8CE291E0D2D7AB988CE21B |
:1002900091E0CED711501123A9F788EE93E0C8D78B |
:1002A0001F910895AF92BF92DF92EF92FF920F934A |
:1002B0001F93DF93CF93CDB7DEB727970FB6F89490 |
:1002C000DEBF0FBECDBFDE011196E8E6F0E087E0AD |
:1002D00001900D928150E1F7AB9880916600FE018C |
:1002E000E80FF11D818190E02CE231E0AC01429FEA |
:1002F000C001439F900D529F900D112499D71092E9 |
:10030000B1004398F8948AE0DFD582B3877C82BB42 |
:100310001BBC1ABC19BC18BC13BC81E08FBD81E4A6 |
:1003200085BD8EE087BB88B3817F88BB10927C003F |
:1003300082E390E082DF80917C008093B50210928E |
:10034000B60210927B0010927A008CB1803231F0AC |
:1003500038EEE32E33E0F32E82E306C08FE5B4D50A |
:10036000EE24EA94FE2C88E210927B0010927A0030 |
:1003700000E010E0A82EBB24939A81E090E05DDFBE |
:1003800082B3877C82BB88B3817F88BBC39A81E0BC |
:1003900090E053DF82B3877C82BB88B3817F88BBC8 |
:1003A0008091B5029091B6028A0D9B1D20917A0032 |
:1003B00030917B008217930738F00F5F1F4F0E15A7 |
:1003C0001F05D0F2DD240AC084E37ED582B3877C8A |
:1003D00082BB88B3817F88BB24E0D22E80E197E284 |
:1003E00000C001975FEF8F3F9507D9F710927B0010 |
:1003F00010927A0000E010E0949A81E090E01DDF16 |
:1004000082B3877C82BB88B3817F88BBC29A81E03C |
:1004100090E013DF82B3877C82BB88B3817F88BB87 |
:100420008091B5029091B6028A0D9B1D20917A00B1 |
:1004300030917B008217930730F00F5F1F4F0E152E |
:100440001F05D0F20AC085E33FD582B3877C82BB0B |
:1004500088B3817F88BB95E0D92E10927B001092E3 |
:100460007A0080E197E200C001972FEF8F3F92075B |
:10047000D9F700E010E0959A81E090E0DEDE82B3EB |
:10048000877C82BB88B3817F88BBC19A81E090E082 |
:10049000D4DE82B3877C82BB88B3817F88BB8091A6 |
:1004A000B5029091B6028A0D9B1D20917A00309181 |
:1004B0007B008217930730F00F5F1F4F0E151F054B |
:1004C000D0F20BC086E300D582B3877C82BB88B3B1 |
:1004D000817F88BB86E0D82E02C0DD2019F08D2DEB |
:1004E000CDDEFDCF80918D0087B982B3877C82BB42 |
:1004F00088B3817F88BB949A959A10927B00109262 |
:100500007A0000E010E0FF24C39A80E0E5D6C397AC |
:1005100018F041E0F42A02C05EEFF52218BA8CE22E |
:1005200091E000C001972FEF8F3F9207D9F70F5F3F |
:100530001F4F0937110541F782B3877C82BB88B30F |
:10054000817F88BB939A959A00E010E0C29A81E07F |
:10055000C3D6C39718F042E0F42A02C05DEFF5223B |
:1005600018BA8CE291E000C001972FEF8F3F9207FD |
:10057000D9F70F5F1F4F0538110541F782B3877C0C |
:1005800082BB88B3817F88BB939A949A00E010E085 |
:10059000C19A82E0A1D6C39718F044E0F42A02C0C1 |
:1005A0005BEFF52218BA8AE491E000C001972FEFC3 |
:1005B0008F3F9207D9F70F5F1F4F0F36110541F795 |
:1005C00082B3877C82BB88B3817F88BB939A00E02B |
:1005D00010E0C29A80E080D68138910518F047EF8C |
:1005E000F42202C058E0F52A18BA8AE491E000C06B |
:1005F00001972FEF8F3F9207D9F70F5F1F4F0937F2 |
:10060000110539F7959A00E010E0C29A82E064D6AD |
:100610008138910518F04FEDF42202C050E2F52A1E |
:1006200018BA88E691E000C001972FEF8F3F92073C |
:10063000D9F70F5F1F4F0538110539F782B3877C53 |
:1006400082BB88B3817F88BB82B3877C82BB88B33F |
:10065000817F88BB949A00E010E0C19A81E03CD68B |
:100660008138910518F04FEEF42202C050E1F52ACE |
:1006700018BA88E691E000C001972FEF8F3F9207EC |
:10068000D9F70F5F1F4F0F36110539F782B3877CFB |
:1006900082BB88B3817F88BB789480916600FE011D |
:1006A000E80FF11D218183E090E0821B91092CE28B |
:1006B00031E0AC01429FC001439F900D529F900DCD |
:1006C0001124B6D5F0FC04C081E48CB911E01DC042 |
:1006D000F1FC04C082E48CB912E017C0F2FC04C043 |
:1006E00083E48CB913E011C0F3FC04C081E68CB93B |
:1006F00014E00BC0F4FC04C082E68CB915E005C020 |
:10070000F5FC06C083E68CB916E0812FB7DDFDCF7E |
:1007100080E0B4DD8EE2D8D327960FB6F894DEBF22 |
:100720000FBECDBFCF91DF911F910F91FF90EF9042 |
:10073000DF90BF90AF9008956F927F929F92AF929B |
:10074000BF92CF92DF92EF92FF920F931F93CF93BE |
:10075000DF93982E1092B100439885E090E090933B |
:100760007900809378007BDC0FD78CE291E04CD548 |
:100770009093B4028093B30209C0C3D580917A00EC |
:1007800090917B008937910508F05CC08091B3029D |
:100790009091B40243D5882381F39092780010920F |
:1007A00079005CE2A52E51E0B52EC12CD12CC6E813 |
:1007B000D3E046E0642E712C6C0E7D1EEE24FF24E7 |
:1007C000870180916F00882311F46CD201C06ED430 |
:1007D00082B78C59982F82B7891B87FDFCCF08946C |
:1007E000E11CF11C011D111DEA14FB040C051D0583 |
:1007F00040F380917A0090917B00909385038093E1 |
:10080000840380917D0080938603198280918B0000 |
:1008100090918C0090938903809388038091A50028 |
:100820009091A60090938B0380938A0383B5809365 |
:100830008C03F301118265D580917A0090917B0041 |
:10084000CD97A8F082B3877C82BB1BBC1ABC19BCB5 |
:1008500018BC13BC81E08FBD81E485BD8EE087BBF1 |
:1008600088B3817F88BB8AE009DD80E02EC0C601A5 |
:10087000B5012FE030E040E050E012D820953095EF |
:1008800040955095A20EB31EC41ED51EF9E1AF16B9 |
:10089000B104C104D104C0F077D68091AF008F5F5E |
:1008A0008093AF008091AF0066E0DAD79093AF00FD |
:1008B000DCD49092780010927900D1DB449B7ECFFB |
:1008C00082B3805882BB7ACF81E0DF91CF911F91B4 |
:1008D0000F91FF90EF90DF90CF90BF90AF909F90DF |
:1008E0007F906F9008955F926F927F928F929F9208 |
:1008F000AF92BF92CF92DF92EF92FF920F931F932E |
:10090000CF93DF9388E084BB85BB8AE381BB12BAB7 |
:100910008EE087BB81E388BB88B3806C88BBB69BC5 |
:1009200006C0B79B02C081E007C082E005C0B79B4C |
:1009300002C083E001C084E0809366008BE0809376 |
:10094000B200879B06C08CE08093B20080EC80935D |
:100950008D008AEB81BBC4D34ED47894D4DB80E580 |
:10096000B0D5EBD485E690E04FD486E690E04CD449 |
:1009700087E690E049D49093B4028093B3028EEF5F |
:1009800090E042D46C018DEE93E03ED4EC018EEE0B |
:1009900093E03AD403C0D4DB882339F48091B302C6 |
:1009A0009091B4023BD48823B1F38091B2008C3093 |
:1009B00010F4979A01C097981092790010927800DD |
:1009C0004EDB88E080BF81E087B98AE090E01CD4EC |
:1009D0009093B4028093B30281E090E090938703F8 |
:1009E000809386031092A6001092A500A9DB8823AD |
:1009F00009F458DC81E388BB10E0FF24F394F1E4B0 |
:100A0000EF2EEEE05E2E71E0672E712C6FE0862EE9 |
:100A1000912C01C0102F94DB809378001092790004 |
:100A20000091AF00011769F010926300109262000C |
:100A30008AEF90E0E9D39093B4028093B3020091DF |
:100A4000AF008091780090917900892BE1F41092A9 |
:100A5000880010926200C501E1D38823F1F0109262 |
:100A6000B1004398F092630082B3877C82BB1BBCC9 |
:100A70001ABC19BC18BC13BCFFBCE5BC57BA88B380 |
:100A8000817F88BB0AC080916300882311F0F092B7 |
:100A900088008CED95E0B8D35C01809163008823D9 |
:100AA00021F01092790010927800D9DA80916200DA |
:100AB0008F5F80936200815009F0ACCF809163001A |
:100AC000882341F08091B2008C3010F4979A01C0D5 |
:100AD000979817D4C601A2D38823A9F182E390E0A6 |
:100AE00093D36C0180917D00482F50E020917A00D3 |
:100AF00030917B004217530710F48F5F04C0241716 |
:100B0000350718F4815080937D00293C310548F069 |
:100B100080916400982F929596959770891B809389 |
:100B2000640080917D0090916400893738F09923AA |
:100B300019F0915090936400AB9A05C09F3F19F053 |
:100B40009F5F90936400CE0169D3882391F08AE07F |
:100B500090E05AD3EC018091890090918A009093A3 |
:100B60008C0080938B0010928A0010928900F09282 |
:100B700065008091B3029091B40250D3882331F084 |
:100B800080918B0090918C00892B29F080918800B6 |
:100B9000882309F43FCFF09263001092B10043988C |
:100BA00084E690E031D39093B4028093B3028091B5 |
:100BB0008800882309F42ECFAB9810927C00109205 |
:100BC00088008AE0B9DD882309F45BC08091B20017 |
:100BD0008C3010F4979A01C097981092630080911E |
:100BE000AF0081508093AF007092790060927800DE |
:100BF00036DA88B18C7F88B9F092B10088B18A600A |
:100C000088B984E190E000D39093B4028093B3025A |
:100C10008091B3029091B40201D38823C9F39092DA |
:100C20007900809278001BDA8CE291E0EDD290930B |
:100C3000B4028093B30218C080917A0090917B0037 |
:100C4000CD9790F082B3877C82BB1BBC1ABC19BCC9 |
:100C500018BC13BCFFBCE5BC57BA88B3817F88BB06 |
:100C60008AE00CDBF09288008091B3029091B4028C |
:100C7000D5D2882309F382E390E0C6D2EC0107E0E5 |
:100C8000C9CE5EDA882309F4C5CEF0928800C2CEC0 |
:100C90001F920F920FB60F9211240F900FBE0F905C |
:100CA0001F9018955E9B24C080916F008823E1F40B |
:100CB0008091A0009091A10001969093A100809353 |
:100CC000A000FC01E854FD4FE081ED3019F08436BE |
:100CD000910539F41092A1001092A00081E0809358 |
:100CE0006F00589AECB908951092A1001092A000DC |
:100CF00008951F93CF93DF93EC0170E0A22FB0E033 |
:100D0000119748C0E42FF0E0E25EFC4F30814F5F66 |
:100D1000E42FF0E0E25EFC4F50814F5FE42FF0E003 |
:100D2000E25EFC4F10814F5FE42FF0E0E25EFC4F8B |
:100D300020814F5F842F90E08A179B0774F55D53E5 |
:100D4000FE01E70FF11D852F82958F703D53330F04 |
:100D5000330F382B3083613001F1912F9D537F5F2A |
:100D6000FE01E70FF11D71505295507F892F869536 |
:100D70008695582B5083623081F063507E5FFE0170 |
:100D8000E70FF11D9295990F990F907C2D53922B9F |
:100D900090837F5F662309F0B5CFDF91CF911F91DC |
:100DA0000895DC0120E030E040E050E008C0FA01A6 |
:100DB000E854FD4F8081280F311D4F5F5F4F4A1768 |
:100DC0005B07A8F33F70C90136E0969587953A9581 |
:100DD000E1F7835CFD01E854FD4F808311962F738A |
:100DE000235CFD01E854FD4F2083A754BD4F8DE0E7 |
:100DF0008C9310926F008091B8028CB90895CF93B4 |
:100E0000DF93EA01B22F93E29093B8026093B902A4 |
:100E10008093BA0263E070E0A0E04EC0FE01EA0FEA |
:100E2000F11D9081AF5FB15019F430E040E00FC088 |
:100E3000FE01EA0FF11D4081AF5FB15011F430E0C7 |
:100E400006C0FE01EA0FF11D3081AF5FB150892F5E |
:100E500086958695835CFB01E854FD4F8083242FA3 |
:100E600022952F70892F90E08370907054E0880F46 |
:100E7000991F5A95E1F7282B235CFB01E754FD4F9E |
:100E80002083842F90E08F709070880F991F880FB7 |
:100E9000991F232F2295269526952370282B235CB6 |
:100EA000FB01E654FD4F20833F73335CFB01E554A7 |
:100EB000FD4F30836C5F7F4FBB2309F0AFCFCB0179 |
:100EC00070DFDF91CF9108951F93182F8A3011F4AE |
:100ED0008DE0FADF5D9BFECF1CB980E090E01F91B2 |
:100EE00008951F920F920FB60F9211242F933F93E4 |
:100EF0004F935F936F937F938F939F93AF93BF9322 |
:100F0000CF93DF93EF93FF938CB180939100409147 |
:100F10009B00443610F010929A00509191005D3081 |
:100F200009F064C080919A00823009F05FC010928D |
:100F30009A00A42FB0E0FD01E45EFC4F3081ED018A |
:100F4000C35EDC4F288180919E0090919F00831B9F |
:100F50009109821B91099F7090939F0080939E003E |
:100F60009C0166E0369527956A95E1F7235C20930E |
:100F70009D00982F9F73935C90939C00808128170D |
:100F800009F080C08881981709F07CC040939900CF |
:100F9000A25EBC4F5C9380912003823549F42CE023 |
:100FA00088E190E00FB6F894A89581BD0FBE21BDF1 |
:100FB0008091200389DF80912003843709F062C08B |
:100FC0002091990083E990E066E043E092DEE091B1 |
:100FD0006600F0E0EE56FF4F80818093900084EF32 |
:100FE00091E090938300809382004CC080919A009E |
:100FF0008130F9F0813020F0823009F041C024C006 |
:1010000080919100833239F480919200882319F401 |
:1010100081E080939A008091910080931E0381E08B |
:1010200080939B008091910080939E0010929F007E |
:1010300029C082E080939A00E42FF0E08091910033 |
:10104000E25EFC4F808309C0E42FF0E080919100C4 |
:10105000E25EFC4F8083443620F44F5F40939B0058 |
:1010600002C010929A002091910080919E00909170 |
:101070009F00820F911D90939F0080939E0002C05D |
:1010800010929A00FF91EF91DF91CF91BF91AF91B4 |
:101090009F918F917F916F915F914F913F912F9190 |
:1010A0000F900FBE0F901F901895089580911C030C |
:1010B00090911D03B3D0882391F080916F00882315 |
:1010C00071F084E46091B70242E853E022E197DED8 |
:1010D00082E390E099D090931D0380931C030895C0 |
:1010E00088E18AB9599A579A80E189B984E697E0EC |
:1010F00060E070E0F7D388EC90E086D090931D0319 |
:1011000080931C038AE0E0DE82E4DEDE8CE4DCDE39 |
:101110008AE3DADE86E5D8DE80E3D6DE8EE2D4DE50 |
:1011200084E3D2DE81E3D0DE8AE0CEDE88E4CCDE6A |
:1011300087E5CADE8AE3C8DE81E3C6DE8EE2C4DE6E |
:101140008091B2008A5DC0DE8AE0BEDE81E4BCDE52 |
:1011500084E4BADE82E5B8DE8AE3B6DE809166001A |
:10116000805DB2DE08951F920F920FB60F92112488 |
:101170008F939F93809194038F5F809394038091CA |
:10118000A40081508093A4008F5F71F583E0809369 |
:10119000A4008091A2009091A30001969093A300D7 |
:1011A0008093A2008091800090918100009729F0A7 |
:1011B000019790938100809380008091A8008823FC |
:1011C00031F08091A80081508093A80002C0109255 |
:1011D000A9008091820090918300009729F00197E7 |
:1011E00090938300809382009F918F910F900FBE08 |
:1011F0000F901F90189582E083BF89B7816089BFE7 |
:1012000089B7806489BF08952091A2003091A3001E |
:1012100021503040280F391FC90108952091A200A4 |
:101220003091A300821B930B80709078892F0895D2 |
:101230002091A2003091A30021503040280F391F87 |
:101240008091A2009091A300A901481B590BCA01EB |
:10125000807090789923A1F3089586EA86B98091E9 |
:101260008D00876087B9369A089527B190918D00D7 |
:10127000966097B910BE83ED86B9349A97B9369ABD |
:10128000349BFECF27B984B195B120917A0030917B |
:101290007B00A90163E0440F551F6A95E1F7421BEB |
:1012A000530B880F991F880F991F480F591F83E010 |
:1012B000569547958A95E1F750937B0040937A00C5 |
:1012C00080917C0090E08417950710F440937C0097 |
:1012D00016B888E080BF089527B190918D00982BB3 |
:1012E00097B910BE83ED86B9349A97B9369A349B74 |
:1012F000FECF27B916B888E080BF24B135B1C90147 |
:10130000089586E0E9DF9C01220F331F220F331F6F |
:10131000293C310510F028EC30E030937B0020931D |
:101320007A0080917C0090E08217930710F420935C |
:101330007C0016B888E080BF08958EB5806C8EBDA5 |
:101340008EB580648EBD89B7806289BF89B784609D |
:1013500089BF08951F920F920FB60F9211248F9399 |
:101360008091A7008F5F8093A7008F910F900FBE91 |
:101370000F901F9018951F920F920FB60F92112485 |
:101380002F933F934F935F938F939F930EB406FEDB |
:101390000FC01092A70086B597B59093AD008093CB |
:1013A000AC008EB58F7B8EBD84E68093A8006FC0A5 |
:1013B0008EB580648EBD26B537B54091A70080916B |
:1013C000AC009091AD00281B390B942F990F80E051 |
:1013D000280F391F85E0369527958A95E1F73093D8 |
:1013E000AB002093AA002851314030F488E191E00D |
:1013F0009093AB008093AA004091AA005091AB005B |
:10140000485151408091A5009091A60084179507FE |
:1014100030F48091A5009091A60001960CC08091B7 |
:10142000A5009091A6004817590748F48091A5009F |
:101430009091A60001979093A6008093A5008091BB |
:10144000A5009091A6009C01220F331F220F331F8D |
:10145000220F331F281B390B240F351F83E03695CD |
:1014600027958A95E1F73093AB002093AA0030933B |
:10147000A6002093A5008091A9008F3F29F08091BC |
:10148000A9008F5F8093A90081E0809365009F9100 |
:101490008F915F914F913F912F910F900FBE0F90C1 |
:1014A0001F9018951F920F920FB60F9211248F93D1 |
:1014B0008AB78F7B8ABF8F910F900FBE0F901F90BE |
:1014C000189590916600990F980F92B985EC86BF98 |
:1014D00008951F920F920FB60F9211248F939F932E |
:1014E00081B190E0887F907080389105C9F0813893 |
:1014F000910534F4009791F18036910591F50AC079 |
:10150000883B9105B9F0883F910529F1883A91050A |
:1015100041F510C086B7806886BF1092AE0023C028 |
:1015200083B18093950384EF91E090938100809341 |
:1015300080000EC08091AE00882339F480917D0038 |
:1015400083B981E08093AE0003C08091640083B9C9 |
:1015500086B7806807C086B7806986BF86B780690E |
:1015600086BF85EC86BF9F918F910F900FBE0F9025 |
:101570001F9018951F920F920FB60F9211240F9083 |
:101580000FBE0F901F9018958091AF00823069F1C7 |
:10159000833030F4882369F0813009F063C017C0CC |
:1015A000843009F43FC0843068F1853009F05AC0B6 |
:1015B0004BC081EA8FBD81E685BD88E087BB82B3E1 |
:1015C000877D82BB949A80918D00826038C081EAC9 |
:1015D0008FBD81E685BD88E087BB82B3877E82BBF5 |
:1015E000959A80918D0081601AC081EA8FBD81E655 |
:1015F00085BD84E087BB82B3877E82BB959A80914C |
:101600008D001DC081EA8FBD81E685BD84E087BB6A |
:1016100082B38F7C82BB939A80918D00826087B960 |
:101620004098089581EA8FBD81E685BD82E087BB41 |
:1016300082B38F7C82BB939A80918D00816087B941 |
:1016400088B1836088B9089581EA8FBD81E685BD40 |
:1016500082E087BB82B3877D82BB949A80918D00A4 |
:1016600087B9409808951F920F920FB60F921124D8 |
:10167000CF92DF92EF92FF920F931F932F933F939E |
:101680004F935F936F937F938F939F93AF93BF938A |
:10169000EF93FF9361EAF62E01E652E0C52E44E097 |
:1016A000D42E38E0E32E88B190E025E0969587951A |
:1016B0002A95E1F7182F11708091AF00823009F45C |
:1016C00050C0833030F4882371F0813009F0A5C018 |
:1016D00022C0843009F470C0843008F458C08530CA |
:1016E00009F09BC080C0FFBC05BDE7BA112371F0B3 |
:1016F00082B3877E82BB959A809165008111B5DDAA |
:10170000409880918D00816087B918C082B3877D31 |
:1017100082BB949A82C082B3877E82BB959A112342 |
:10172000E1F4FFBC05BDD7BA8091650081119DDD54 |
:1017300080918D0087B988B1836088B98091AF00AE |
:101740008F5F8093AF008091890090918A0001960D |
:1017500090938A008093890060C0FFBC05BDE7BA02 |
:101760005CC0FFBC05BDD7BA112361F082B38F7C8A |
:1017700082BB939A80916500811177DD80918D0005 |
:10178000826029C082B3877E82BB959A46C082B3AD |
:101790008F7C82BB939A112359F4FFBC05BDC7BA55 |
:1017A00080916500811161DD80918D008160C2CFE3 |
:1017B000FFBC05BDD7BA31C0FFBC05BDC7BA1123F8 |
:1017C00069F082B3877D82BB949A80916500811114 |
:1017D0004CDD80918D0087B94098B0CF82B38F7C6B |
:1017E00082BB939A1AC082B3877D82BB949A1123DD |
:1017F00089F4FFBC05BDE7BA80916500811135DD34 |
:1018000080918D00826087B988B1836088B9109219 |
:10181000AF0099CFFFBC05BDC7BA459903C01123DE |
:1018200009F041CF459B03C0112309F43CCF10922E |
:101830006500FF91EF91BF91AF919F918F917F9143 |
:101840006F915F914F913F912F911F910F91FF9059 |
:10185000EF90DF90CF900F900FBE0F901F901895D4 |
:10186000991B79E004C0991F961708F0961B881FF2 |
:101870007A95C9F780950895AA1BBB1B51E107C053 |
:10188000AA1FBB1FA617B70710F0A61BB70B881F10 |
:10189000991F5A95A9F780959095BC01CD0108959F |
:1018A000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F64 |
:1018B000EE1FFF1FA217B307E407F50720F0A21BD6 |
:1018C000B30BE40BF50B661F771F881F991F1A9443 |
:1018D00069F760957095809590959B01AC01BD016D |
:1018E000CF0108950F931F93CF93DF938C01EB01EA |
:1018F000009731F46115710519F420E030E037C02C |
:1019000081E090E06EE070E038D0FC019C0100972F |
:1019100071F180E88383209771F0D387C28781E8D3 |
:1019200083838091960390919703892B21F4F09300 |
:101930009703E093960301151105C9F011870087FD |
:101940008381826083838091980390919903892B8E |
:1019500071F4F0939903E093980380919A03909126 |
:101960009B03892B21F4F0939B03E0939A03C90115 |
:10197000DF91CF911F910F9108950F931F93CF93F4 |
:10198000DF93689F8001699F100D789F100D1124CF |
:10199000C8010DD0EC01009721F060E070E0A801D3 |
:1019A0000BD1CE01DF91CF911F910F910895CF936D |
:1019B000DF93BC018230910510F462E070E0A091E9 |
:1019C0009E03B0919F03ED01E0E0F0E040E050E0C5 |
:1019D00021C0888199818617970769F48A819B8144 |
:1019E000309719F09383828304C090939F03809370 |
:1019F0009E03FE0134C06817790738F4411551057C |
:101A000019F08417950708F4AC01FE018A819B81C7 |
:101A10009C01E9012097E9F641155105A9F1CA0198 |
:101A2000861B970B049708F4BA01E0E0F0E02AC0A7 |
:101A30008D919C91119784179507F9F46417750798 |
:101A400081F412968D919C911397309719F093839E |
:101A5000828304C090939F0380939E03FD0132967E |
:101A60004FC0CA01861B970BFD01E80FF91F619358 |
:101A7000719302978D939C9343C0FD018281938162 |
:101A80009C01D9011097A1F680919C0390919D0330 |
:101A9000892B41F4809173009091740090939D0381 |
:101AA00080939C034091750050917600411551053B |
:101AB00041F44DB75EB78091710090917200481B60 |
:101AC000590B20919C0330919D0324173507B0F4E6 |
:101AD000CA01821B930B8617970780F0AB014E5FFC |
:101AE0005F4F8417950750F0420F531F50939D038B |
:101AF00040939C03F9016193719302C0E0E0F0E030 |
:101B0000CF01DF91CF910895CF93DF93009709F430 |
:101B100050C0EC0122971B821A82A0919E03B091C3 |
:101B20009F03109709F140E050E0AC17BD0708F1A2 |
:101B3000BB83AA83FE0121913191E20FF31FAE17FF |
:101B4000BF0779F48D919C911197280F391F2E5F53 |
:101B50003F4F3983288312968D919C9113979B83D5 |
:101B60008A834115510571F4D0939F03C0939E035E |
:101B700020C012968D919C911397AD01009711F0A2 |
:101B8000DC01D3CFFA01D383C28321913191E20FDB |
:101B9000F31FCE17DF0769F488819981280F391F59 |
:101BA0002E5F3F4FFA01318320838A819B8193838B |
:101BB0008283DF91CF910895DC0101C06D93415084 |
:0A1BC0005040E0F70895F894FFCFBD |
:101BCA000A000101FF0101010000000101020201F6 |
:081BDA00642000A003000000DC |
:00000001FF |
/branches/V0.41-Hexa/BrushLess-Ctrl_V0_41_10A.lss |
---|
0,0 → 1,4807 |
BrushLess-Ctrl_V0_41_10A.elf: file format elf32-avr |
Sections: |
Idx Name Size VMA LMA File off Algn |
0 .text 00001bca 00000000 00000000 00000094 2**1 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
1 .data 00000018 00800060 00001bca 00001c5e 2**0 |
CONTENTS, ALLOC, LOAD, DATA |
2 .bss 00000328 00800078 00800078 00001c76 2**0 |
ALLOC |
3 .debug_aranges 000000e0 00000000 00000000 00001c76 2**0 |
CONTENTS, READONLY, DEBUGGING |
4 .debug_pubnames 000005da 00000000 00000000 00001d56 2**0 |
CONTENTS, READONLY, DEBUGGING |
5 .debug_info 00001379 00000000 00000000 00002330 2**0 |
CONTENTS, READONLY, DEBUGGING |
6 .debug_abbrev 0000077a 00000000 00000000 000036a9 2**0 |
CONTENTS, READONLY, DEBUGGING |
7 .debug_line 00001739 00000000 00000000 00003e23 2**0 |
CONTENTS, READONLY, DEBUGGING |
8 .debug_frame 000002e0 00000000 00000000 0000555c 2**2 |
CONTENTS, READONLY, DEBUGGING |
9 .debug_str 000005bf 00000000 00000000 0000583c 2**0 |
CONTENTS, READONLY, DEBUGGING |
10 .debug_loc 0000073a 00000000 00000000 00005dfb 2**0 |
CONTENTS, READONLY, DEBUGGING |
11 .debug_ranges 00000018 00000000 00000000 00006535 2**0 |
CONTENTS, READONLY, DEBUGGING |
Disassembly of section .text: |
00000000 <__vectors>: |
0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end> |
2: 50 ca rjmp .-2912 ; 0xfffff4a4 <__eeprom_end+0xff7ef4a4> |
4: 2b c0 rjmp .+86 ; 0x5c <__bad_interrupt> |
6: 2a c0 rjmp .+84 ; 0x5c <__bad_interrupt> |
8: b5 ca rjmp .-2710 ; 0xfffff574 <__eeprom_end+0xff7ef574> |
a: b5 c9 rjmp .-3222 ; 0xfffff376 <__eeprom_end+0xff7ef376> |
c: 27 c0 rjmp .+78 ; 0x5c <__bad_interrupt> |
e: 26 c0 rjmp .+76 ; 0x5c <__bad_interrupt> |
10: a1 c9 rjmp .-3262 ; 0xfffff354 <__eeprom_end+0xff7ef354> |
12: a9 c8 rjmp .-3758 ; 0xfffff166 <__eeprom_end+0xff7ef166> |
14: 23 c0 rjmp .+70 ; 0x5c <__bad_interrupt> |
16: 65 c7 rjmp .+3786 ; 0xee2 <__vector_11> |
18: 21 c0 rjmp .+66 ; 0x5c <__bad_interrupt> |
1a: 3a c6 rjmp .+3188 ; 0xc90 <__vector_13> |
1c: 1f c0 rjmp .+62 ; 0x5c <__bad_interrupt> |
1e: 1e c0 rjmp .+60 ; 0x5c <__bad_interrupt> |
20: 22 cb rjmp .-2492 ; 0xfffff666 <__eeprom_end+0xff7ef666> |
22: 57 ca rjmp .-2898 ; 0xfffff4d2 <__eeprom_end+0xff7ef4d2> |
24: 1b c0 rjmp .+54 ; 0x5c <__bad_interrupt> |
00000026 <__ctors_end>: |
26: 11 24 eor r1, r1 |
28: 1f be out 0x3f, r1 ; 63 |
2a: cf e5 ldi r28, 0x5F ; 95 |
2c: d4 e0 ldi r29, 0x04 ; 4 |
2e: de bf out 0x3e, r29 ; 62 |
30: cd bf out 0x3d, r28 ; 61 |
00000032 <__do_copy_data>: |
32: 10 e0 ldi r17, 0x00 ; 0 |
34: a0 e6 ldi r26, 0x60 ; 96 |
36: b0 e0 ldi r27, 0x00 ; 0 |
38: ea ec ldi r30, 0xCA ; 202 |
3a: fb e1 ldi r31, 0x1B ; 27 |
3c: 02 c0 rjmp .+4 ; 0x42 <.do_copy_data_start> |
0000003e <.do_copy_data_loop>: |
3e: 05 90 lpm r0, Z+ |
40: 0d 92 st X+, r0 |
00000042 <.do_copy_data_start>: |
42: a8 37 cpi r26, 0x78 ; 120 |
44: b1 07 cpc r27, r17 |
46: d9 f7 brne .-10 ; 0x3e <.do_copy_data_loop> |
00000048 <__do_clear_bss>: |
48: 13 e0 ldi r17, 0x03 ; 3 |
4a: a8 e7 ldi r26, 0x78 ; 120 |
4c: b0 e0 ldi r27, 0x00 ; 0 |
4e: 01 c0 rjmp .+2 ; 0x52 <.do_clear_bss_start> |
00000050 <.do_clear_bss_loop>: |
50: 1d 92 st X+, r1 |
00000052 <.do_clear_bss_start>: |
52: a0 3a cpi r26, 0xA0 ; 160 |
54: b1 07 cpc r27, r17 |
56: e1 f7 brne .-8 ; 0x50 <.do_clear_bss_loop> |
58: 46 d4 rcall .+2188 ; 0x8e6 <main> |
5a: b5 cd rjmp .-1174 ; 0xfffffbc6 <__eeprom_end+0xff7efbc6> |
0000005c <__bad_interrupt>: |
5c: d1 cf rjmp .-94 ; 0x0 <__vectors> |
0000005e <SetPWM>: |
// |
void SetPWM(void) |
//############################################################################ |
{ |
unsigned char tmp_pwm; |
tmp_pwm = PWM; |
5e: 40 91 78 00 lds r20, 0x0078 |
if(tmp_pwm > MaxPWM) // Strombegrenzung |
62: 80 91 64 00 lds r24, 0x0064 |
66: 84 17 cp r24, r20 |
68: 10 f4 brcc .+4 ; 0x6e <SetPWM+0x10> |
{ |
tmp_pwm = MaxPWM; |
PORTC |= ROT; |
6a: ab 9a sbi 0x15, 3 ; 21 |
6c: 48 2f mov r20, r24 |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
6e: 20 91 7a 00 lds r18, 0x007A |
72: 30 91 7b 00 lds r19, 0x007B |
76: 29 3c cpi r18, 0xC9 ; 201 |
78: 31 05 cpc r19, r1 |
7a: c8 f0 brcs .+50 ; 0xae <SetPWM+0x50> |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
7c: 1b bc out 0x2b, r1 ; 43 |
7e: 1a bc out 0x2a, r1 ; 42 |
80: 19 bc out 0x29, r1 ; 41 |
82: 18 bc out 0x28, r1 ; 40 |
84: 13 bc out 0x23, r1 ; 35 |
PORTD &= ~0x38; |
86: 82 b3 in r24, 0x12 ; 18 |
88: 87 7c andi r24, 0xC7 ; 199 |
8a: 82 bb out 0x12, r24 ; 18 |
PORTC |= ROT; |
8c: ab 9a sbi 0x15, 3 ; 21 |
DebugOut.Analog[6]++; |
8e: 80 91 90 03 lds r24, 0x0390 |
92: 90 91 91 03 lds r25, 0x0391 |
96: 01 96 adiw r24, 0x01 ; 1 |
98: 90 93 91 03 sts 0x0391, r25 |
9c: 80 93 90 03 sts 0x0390, r24 |
Strom--; |
a0: 21 50 subi r18, 0x01 ; 1 |
a2: 30 40 sbci r19, 0x00 ; 0 |
a4: 30 93 7b 00 sts 0x007B, r19 |
a8: 20 93 7a 00 sts 0x007A, r18 |
ac: 08 95 ret |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
#ifdef _16KHZ |
//OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
ae: 84 2f mov r24, r20 |
b0: 90 e0 ldi r25, 0x00 ; 0 |
b2: 9b bd out 0x2b, r25 ; 43 |
b4: 8a bd out 0x2a, r24 ; 42 |
b6: 99 bd out 0x29, r25 ; 41 |
b8: 88 bd out 0x28, r24 ; 40 |
ba: 43 bd out 0x23, r20 ; 35 |
bc: 08 95 ret |
000000be <DebugAusgaben>: |
} |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
be: e4 e8 ldi r30, 0x84 ; 132 |
c0: f3 e0 ldi r31, 0x03 ; 3 |
c2: 80 91 7a 00 lds r24, 0x007A |
c6: 90 91 7b 00 lds r25, 0x007B |
ca: 90 93 85 03 sts 0x0385, r25 |
ce: 80 93 84 03 sts 0x0384, r24 |
DebugOut.Analog[1] = Mittelstrom; |
d2: 80 91 7d 00 lds r24, 0x007D |
d6: 80 93 86 03 sts 0x0386, r24 |
da: 13 82 std Z+3, r1 ; 0x03 |
DebugOut.Analog[2] = SIO_Drehzahl; |
dc: 80 91 8b 00 lds r24, 0x008B |
e0: 90 91 8c 00 lds r25, 0x008C |
e4: 90 93 89 03 sts 0x0389, r25 |
e8: 80 93 88 03 sts 0x0388, r24 |
DebugOut.Analog[3] = PPM_Signal; |
ec: 80 91 a5 00 lds r24, 0x00A5 |
f0: 90 91 a6 00 lds r25, 0x00A6 |
f4: 90 93 8b 03 sts 0x038B, r25 |
f8: 80 93 8a 03 sts 0x038A, r24 |
DebugOut.Analog[4] = OCR2; |
fc: 83 b5 in r24, 0x23 ; 35 |
fe: 80 93 8c 03 sts 0x038C, r24 |
102: 11 86 std Z+9, r1 ; 0x09 |
// DebugOut.Analog[5] = PWM; |
} |
104: 08 95 ret |
00000106 <PWM_Init>: |
//############################################################################ |
// |
void PWM_Init(void) |
//############################################################################ |
{ |
PWM_OFF; |
106: 1b bc out 0x2b, r1 ; 43 |
108: 1a bc out 0x2a, r1 ; 42 |
10a: 19 bc out 0x29, r1 ; 41 |
10c: 18 bc out 0x28, r1 ; 40 |
10e: 13 bc out 0x23, r1 ; 35 |
110: 91 e0 ldi r25, 0x01 ; 1 |
112: 9f bd out 0x2f, r25 ; 47 |
114: 81 e4 ldi r24, 0x41 ; 65 |
116: 85 bd out 0x25, r24 ; 37 |
118: 8e e0 ldi r24, 0x0E ; 14 |
11a: 87 bb out 0x17, r24 ; 23 |
11c: 88 b3 in r24, 0x18 ; 24 |
11e: 81 7f andi r24, 0xF1 ; 241 |
120: 88 bb out 0x18, r24 ; 24 |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) | |
122: 9e bd out 0x2e, r25 ; 46 |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
/* TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
*/ |
} |
124: 08 95 ret |
00000126 <Wait>: |
//############################################################################ |
// |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
126: 92 b7 in r25, 0x32 ; 50 |
128: 98 0f add r25, r24 |
while((TCNT0 - dauer) & 0x80); |
12a: 82 b7 in r24, 0x32 ; 50 |
12c: 89 1b sub r24, r25 |
12e: 87 fd sbrc r24, 7 |
130: fc cf rjmp .-8 ; 0x12a <Wait+0x4> |
} |
132: 08 95 ret |
00000134 <Delay>: |
} |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
134: 01 c0 rjmp .+2 ; 0x138 <Delay+0x4> |
while(timer--) |
{ |
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
asm volatile(""); |
136: 01 97 sbiw r24, 0x01 ; 1 |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
138: 00 97 sbiw r24, 0x00 ; 0 |
13a: e9 f7 brne .-6 ; 0x136 <Delay+0x2> |
{ |
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
asm volatile(""); |
} |
return(0); |
} |
13c: 80 e0 ldi r24, 0x00 ; 0 |
13e: 08 95 ret |
00000140 <SollwertErmittlung>: |
unsigned char SollwertErmittlung(void) |
//############################################################################ |
{ |
static unsigned int sollwert = 0; |
unsigned int ppm; |
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig |
140: 80 91 80 00 lds r24, 0x0080 |
144: 90 91 81 00 lds r25, 0x0081 |
148: 89 2b or r24, r25 |
14a: 09 f0 breq .+2 ; 0x14e <SollwertErmittlung+0xe> |
14c: 59 c0 rjmp .+178 ; 0x200 <SollwertErmittlung+0xc0> |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
14e: 80 91 82 00 lds r24, 0x0082 |
152: 90 91 83 00 lds r25, 0x0083 |
156: 89 2b or r24, r25 |
158: 99 f0 breq .+38 ; 0x180 <SollwertErmittlung+0x40> |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
15a: 90 91 90 00 lds r25, 0x0090 |
15e: 8f ef ldi r24, 0xFF ; 255 |
160: 98 9f mul r25, r24 |
162: c0 01 movw r24, r0 |
164: 11 24 eor r1, r1 |
166: 68 ec ldi r22, 0xC8 ; 200 |
168: 70 e0 ldi r23, 0x00 ; 0 |
16a: 86 db rcall .-2292 ; 0xfffff878 <__eeprom_end+0xff7ef878> |
16c: 70 93 8f 00 sts 0x008F, r23 |
170: 60 93 8e 00 sts 0x008E, r22 |
PPM_Betrieb = 0; |
174: 10 92 67 00 sts 0x0067, r1 |
ICP_INT_DISABLE; |
178: 89 b7 in r24, 0x39 ; 57 |
17a: 8f 7d andi r24, 0xDF ; 223 |
17c: 89 bf out 0x39, r24 ; 57 |
17e: 31 c0 rjmp .+98 ; 0x1e2 <SollwertErmittlung+0xa2> |
PORTC &= ~ROT; |
} |
else |
if(anz_ppm_werte > 20) // es gibt gültige PPM-Daten |
180: 80 91 a9 00 lds r24, 0x00A9 |
184: 85 31 cpi r24, 0x15 ; 21 |
186: 78 f1 brcs .+94 ; 0x1e6 <SollwertErmittlung+0xa6> |
{ |
PPM_Betrieb = 1; |
188: 81 e0 ldi r24, 0x01 ; 1 |
18a: 80 93 67 00 sts 0x0067, r24 |
ppm = PPM_Signal; |
18e: 20 91 a5 00 lds r18, 0x00A5 |
192: 30 91 a6 00 lds r19, 0x00A6 |
if(ppm > 300) ppm = 0; // ungültiges Signal |
196: 41 e0 ldi r20, 0x01 ; 1 |
198: 2d 32 cpi r18, 0x2D ; 45 |
19a: 34 07 cpc r19, r20 |
19c: 30 f4 brcc .+12 ; 0x1aa <SollwertErmittlung+0x6a> |
if(ppm > 200) ppm = 200; |
19e: 29 3c cpi r18, 0xC9 ; 201 |
1a0: 31 05 cpc r19, r1 |
1a2: 40 f4 brcc .+16 ; 0x1b4 <SollwertErmittlung+0x74> |
if(ppm <= MIN_PPM) sollwert = 0; |
1a4: 2b 30 cpi r18, 0x0B ; 11 |
1a6: 31 05 cpc r19, r1 |
1a8: 38 f4 brcc .+14 ; 0x1b8 <SollwertErmittlung+0x78> |
1aa: 10 92 8f 00 sts 0x008F, r1 |
1ae: 10 92 8e 00 sts 0x008E, r1 |
1b2: 17 c0 rjmp .+46 ; 0x1e2 <SollwertErmittlung+0xa2> |
1b4: 28 ec ldi r18, 0xC8 ; 200 |
1b6: 30 e0 ldi r19, 0x00 ; 0 |
else |
{ |
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM); |
1b8: 8c ef ldi r24, 0xFC ; 252 |
1ba: 90 e0 ldi r25, 0x00 ; 0 |
1bc: ac 01 movw r20, r24 |
1be: 24 9f mul r18, r20 |
1c0: c0 01 movw r24, r0 |
1c2: 25 9f mul r18, r21 |
1c4: 90 0d add r25, r0 |
1c6: 34 9f mul r19, r20 |
1c8: 90 0d add r25, r0 |
1ca: 11 24 eor r1, r1 |
1cc: 88 5d subi r24, 0xD8 ; 216 |
1ce: 99 40 sbci r25, 0x09 ; 9 |
1d0: 64 eb ldi r22, 0xB4 ; 180 |
1d2: 70 e0 ldi r23, 0x00 ; 0 |
1d4: 51 db rcall .-2398 ; 0xfffff878 <__eeprom_end+0xff7ef878> |
1d6: 6d 5f subi r22, 0xFD ; 253 |
1d8: 7f 4f sbci r23, 0xFF ; 255 |
1da: 70 93 8f 00 sts 0x008F, r23 |
1de: 60 93 8e 00 sts 0x008E, r22 |
} |
PORTC &= ~ROT; |
1e2: ab 98 cbi 0x15, 3 ; 21 |
1e4: 19 c0 rjmp .+50 ; 0x218 <SollwertErmittlung+0xd8> |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
1e6: 80 91 8e 00 lds r24, 0x008E |
1ea: 90 91 8f 00 lds r25, 0x008F |
1ee: 00 97 sbiw r24, 0x00 ; 0 |
1f0: 29 f0 breq .+10 ; 0x1fc <SollwertErmittlung+0xbc> |
1f2: 01 97 sbiw r24, 0x01 ; 1 |
1f4: 90 93 8f 00 sts 0x008F, r25 |
1f8: 80 93 8e 00 sts 0x008E, r24 |
PORTC |= ROT; |
1fc: ab 9a sbi 0x15, 3 ; 21 |
1fe: 0c c0 rjmp .+24 ; 0x218 <SollwertErmittlung+0xd8> |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
200: 80 91 95 03 lds r24, 0x0395 |
204: 80 93 8e 00 sts 0x008E, r24 |
208: 10 92 8f 00 sts 0x008F, r1 |
PPM_Betrieb = 0; |
20c: 10 92 67 00 sts 0x0067, r1 |
PORTC &= ~ROT; |
210: ab 98 cbi 0x15, 3 ; 21 |
ICP_INT_DISABLE; |
212: 89 b7 in r24, 0x39 ; 57 |
214: 8f 7d andi r24, 0xDF ; 223 |
216: 89 bf out 0x39, r24 ; 57 |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
218: 80 91 8e 00 lds r24, 0x008E |
21c: 90 91 8f 00 lds r25, 0x008F |
220: 8f 3f cpi r24, 0xFF ; 255 |
222: 91 05 cpc r25, r1 |
224: 39 f0 breq .+14 ; 0x234 <SollwertErmittlung+0xf4> |
226: 30 f0 brcs .+12 ; 0x234 <SollwertErmittlung+0xf4> |
228: 8f ef ldi r24, 0xFF ; 255 |
22a: 90 e0 ldi r25, 0x00 ; 0 |
22c: 90 93 8f 00 sts 0x008F, r25 |
230: 80 93 8e 00 sts 0x008E, r24 |
return(sollwert); |
} |
234: 80 91 8e 00 lds r24, 0x008E |
238: 08 95 ret |
0000023a <DelayM>: |
*/ |
#define TEST_STROMGRENZE 120 |
unsigned char DelayM(unsigned int timer) |
{ |
23a: cf 93 push r28 |
23c: df 93 push r29 |
23e: ec 01 movw r28, r24 |
240: 17 c0 rjmp .+46 ; 0x270 <DelayM+0x36> |
while(timer--) |
{ |
FastADConvert(); |
242: 5f d8 rcall .-3906 ; 0xfffff302 <__eeprom_end+0xff7ef302> |
244: 21 97 sbiw r28, 0x01 ; 1 |
if(Strom > (TEST_STROMGRENZE + RuheStrom)) |
246: 80 91 b5 02 lds r24, 0x02B5 |
24a: 90 91 b6 02 lds r25, 0x02B6 |
24e: 88 58 subi r24, 0x88 ; 136 |
250: 9f 4f sbci r25, 0xFF ; 255 |
252: 20 91 7a 00 lds r18, 0x007A |
256: 30 91 7b 00 lds r19, 0x007B |
25a: 82 17 cp r24, r18 |
25c: 93 07 cpc r25, r19 |
25e: 40 f4 brcc .+16 ; 0x270 <DelayM+0x36> |
{ |
FETS_OFF; |
260: 82 b3 in r24, 0x12 ; 18 |
262: 87 7c andi r24, 0xC7 ; 199 |
264: 82 bb out 0x12, r24 ; 18 |
266: 88 b3 in r24, 0x18 ; 24 |
268: 81 7f andi r24, 0xF1 ; 241 |
26a: 88 bb out 0x18, r24 ; 24 |
26c: 81 e0 ldi r24, 0x01 ; 1 |
26e: 03 c0 rjmp .+6 ; 0x276 <DelayM+0x3c> |
#define TEST_STROMGRENZE 120 |
unsigned char DelayM(unsigned int timer) |
{ |
while(timer--) |
270: 20 97 sbiw r28, 0x00 ; 0 |
272: 39 f7 brne .-50 ; 0x242 <DelayM+0x8> |
274: 80 e0 ldi r24, 0x00 ; 0 |
FETS_OFF; |
return(1); |
} |
} |
return(0); |
} |
276: df 91 pop r29 |
278: cf 91 pop r28 |
27a: 08 95 ret |
0000027c <RotBlink>: |
dauer = (unsigned char)TCNT0 + dauer; |
while((TCNT0 - dauer) & 0x80); |
} |
void RotBlink(unsigned char anz) |
{ |
27c: 1f 93 push r17 |
27e: 18 2f mov r17, r24 |
sei(); // Interrupts ein |
280: 78 94 sei |
282: 09 c0 rjmp .+18 ; 0x296 <RotBlink+0x1a> |
while(anz--) |
{ |
PORTC |= ROT; |
284: ab 9a sbi 0x15, 3 ; 21 |
Delay_ms(300); |
286: 8c e2 ldi r24, 0x2C ; 44 |
288: 91 e0 ldi r25, 0x01 ; 1 |
28a: d2 d7 rcall .+4004 ; 0x1230 <Delay_ms> |
PORTC &= ~ROT; |
28c: ab 98 cbi 0x15, 3 ; 21 |
Delay_ms(300); |
28e: 8c e2 ldi r24, 0x2C ; 44 |
290: 91 e0 ldi r25, 0x01 ; 1 |
292: ce d7 rcall .+3996 ; 0x1230 <Delay_ms> |
294: 11 50 subi r17, 0x01 ; 1 |
} |
void RotBlink(unsigned char anz) |
{ |
sei(); // Interrupts ein |
while(anz--) |
296: 11 23 and r17, r17 |
298: a9 f7 brne .-22 ; 0x284 <RotBlink+0x8> |
PORTC |= ROT; |
Delay_ms(300); |
PORTC &= ~ROT; |
Delay_ms(300); |
} |
Delay_ms(1000); |
29a: 88 ee ldi r24, 0xE8 ; 232 |
29c: 93 e0 ldi r25, 0x03 ; 3 |
29e: c8 d7 rcall .+3984 ; 0x1230 <Delay_ms> |
} |
2a0: 1f 91 pop r17 |
2a2: 08 95 ret |
000002a4 <MotorTon>: |
#define LOW_B_EIN PORTD |= 0x10 |
#define LOW_C_EIN PORTD |= 0x20 |
void MotorTon(void) |
//############################################################################ |
{ |
2a4: af 92 push r10 |
2a6: bf 92 push r11 |
2a8: df 92 push r13 |
2aa: ef 92 push r14 |
2ac: ff 92 push r15 |
2ae: 0f 93 push r16 |
2b0: 1f 93 push r17 |
2b2: df 93 push r29 |
2b4: cf 93 push r28 |
2b6: cd b7 in r28, 0x3d ; 61 |
2b8: de b7 in r29, 0x3e ; 62 |
2ba: 27 97 sbiw r28, 0x07 ; 7 |
2bc: 0f b6 in r0, 0x3f ; 63 |
2be: f8 94 cli |
2c0: de bf out 0x3e, r29 ; 62 |
2c2: 0f be out 0x3f, r0 ; 63 |
2c4: cd bf out 0x3d, r28 ; 61 |
unsigned char ADR_TAB[7] = {0,0,0,1,1,2,2}; |
2c6: de 01 movw r26, r28 |
2c8: 11 96 adiw r26, 0x01 ; 1 |
2ca: e8 e6 ldi r30, 0x68 ; 104 |
2cc: f0 e0 ldi r31, 0x00 ; 0 |
2ce: 87 e0 ldi r24, 0x07 ; 7 |
2d0: 01 90 ld r0, Z+ |
2d2: 0d 92 st X+, r0 |
2d4: 81 50 subi r24, 0x01 ; 1 |
2d6: e1 f7 brne .-8 ; 0x2d0 <MotorTon+0x2c> |
unsigned int timer = 300,i; |
unsigned int t = 0; |
unsigned char anz = 0,MosfetOkay = 0, grenze = 50; |
PORTC &= ~ROT; |
2d8: ab 98 cbi 0x15, 3 ; 21 |
Delay_ms(300 * ADR_TAB[MotorAdresse]); |
2da: 80 91 66 00 lds r24, 0x0066 |
2de: fe 01 movw r30, r28 |
2e0: e8 0f add r30, r24 |
2e2: f1 1d adc r31, r1 |
2e4: 81 81 ldd r24, Z+1 ; 0x01 |
2e6: 90 e0 ldi r25, 0x00 ; 0 |
2e8: 2c e2 ldi r18, 0x2C ; 44 |
2ea: 31 e0 ldi r19, 0x01 ; 1 |
2ec: ac 01 movw r20, r24 |
2ee: 42 9f mul r20, r18 |
2f0: c0 01 movw r24, r0 |
2f2: 43 9f mul r20, r19 |
2f4: 90 0d add r25, r0 |
2f6: 52 9f mul r21, r18 |
2f8: 90 0d add r25, r0 |
2fa: 11 24 eor r1, r1 |
2fc: 99 d7 rcall .+3890 ; 0x1230 <Delay_ms> |
DISABLE_SENSE_INT; |
2fe: 10 92 b1 00 sts 0x00B1, r1 |
302: 43 98 cbi 0x08, 3 ; 8 |
cli();//Globale Interrupts Ausschalten |
304: f8 94 cli |
uart_putchar('\n'); |
306: 8a e0 ldi r24, 0x0A ; 10 |
308: df d5 rcall .+3006 ; 0xec8 <uart_putchar> |
STEUER_OFF; |
30a: 82 b3 in r24, 0x12 ; 18 |
30c: 87 7c andi r24, 0xC7 ; 199 |
30e: 82 bb out 0x12, r24 ; 18 |
310: 1b bc out 0x2b, r1 ; 43 |
312: 1a bc out 0x2a, r1 ; 42 |
314: 19 bc out 0x29, r1 ; 41 |
316: 18 bc out 0x28, r1 ; 40 |
318: 13 bc out 0x23, r1 ; 35 |
31a: 81 e0 ldi r24, 0x01 ; 1 |
31c: 8f bd out 0x2f, r24 ; 47 |
31e: 81 e4 ldi r24, 0x41 ; 65 |
320: 85 bd out 0x25, r24 ; 37 |
322: 8e e0 ldi r24, 0x0E ; 14 |
324: 87 bb out 0x17, r24 ; 23 |
326: 88 b3 in r24, 0x18 ; 24 |
328: 81 7f andi r24, 0xF1 ; 241 |
32a: 88 bb out 0x18, r24 ; 24 |
Strom_max = 0; |
32c: 10 92 7c 00 sts 0x007C, r1 |
DelayM(50); |
330: 82 e3 ldi r24, 0x32 ; 50 |
332: 90 e0 ldi r25, 0x00 ; 0 |
334: 82 df rcall .-252 ; 0x23a <DelayM> |
RuheStrom = Strom_max; |
336: 80 91 7c 00 lds r24, 0x007C |
33a: 80 93 b5 02 sts 0x02B5, r24 |
33e: 10 92 b6 02 sts 0x02B6, r1 |
// uart_putchar(RuheStrom + 'A'); |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Strom = 0; |
342: 10 92 7b 00 sts 0x007B, r1 |
346: 10 92 7a 00 sts 0x007A, r1 |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
*/ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ LOW-Mosfets auf Schalten und Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
34a: 8c b1 in r24, 0x0c ; 12 |
34c: 80 32 cpi r24, 0x20 ; 32 |
34e: 31 f0 breq .+12 ; 0x35c <MotorTon+0xb8> |
350: 38 ee ldi r19, 0xE8 ; 232 |
352: e3 2e mov r14, r19 |
354: 33 e0 ldi r19, 0x03 ; 3 |
356: f3 2e mov r15, r19 |
358: 82 e3 ldi r24, 0x32 ; 50 |
35a: 06 c0 rjmp .+12 ; 0x368 <MotorTon+0xc4> |
35c: 8f e5 ldi r24, 0x5F ; 95 |
35e: b4 d5 rcall .+2920 ; 0xec8 <uart_putchar> |
360: ee 24 eor r14, r14 |
362: ea 94 dec r14 |
364: fe 2c mov r15, r14 |
366: 88 e2 ldi r24, 0x28 ; 40 |
Strom = 0; |
368: 10 92 7b 00 sts 0x007B, r1 |
36c: 10 92 7a 00 sts 0x007A, r1 |
370: 00 e0 ldi r16, 0x00 ; 0 |
372: 10 e0 ldi r17, 0x00 ; 0 |
FETS_OFF; |
Delay(5); |
HIGH_A_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;} |
374: a8 2e mov r10, r24 |
376: bb 24 eor r11, r11 |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_A_EIN; |
378: 93 9a sbi 0x12, 3 ; 18 |
DelayM(1); |
37a: 81 e0 ldi r24, 0x01 ; 1 |
37c: 90 e0 ldi r25, 0x00 ; 0 |
37e: 5d df rcall .-326 ; 0x23a <DelayM> |
FETS_OFF; |
380: 82 b3 in r24, 0x12 ; 18 |
382: 87 7c andi r24, 0xC7 ; 199 |
384: 82 bb out 0x12, r24 ; 18 |
386: 88 b3 in r24, 0x18 ; 24 |
388: 81 7f andi r24, 0xF1 ; 241 |
38a: 88 bb out 0x18, r24 ; 24 |
Delay(5); |
HIGH_A_EIN; |
38c: c3 9a sbi 0x18, 3 ; 24 |
DelayM(1); |
38e: 81 e0 ldi r24, 0x01 ; 1 |
390: 90 e0 ldi r25, 0x00 ; 0 |
392: 53 df rcall .-346 ; 0x23a <DelayM> |
FETS_OFF; |
394: 82 b3 in r24, 0x12 ; 18 |
396: 87 7c andi r24, 0xC7 ; 199 |
398: 82 bb out 0x12, r24 ; 18 |
39a: 88 b3 in r24, 0x18 ; 24 |
39c: 81 7f andi r24, 0xF1 ; 241 |
39e: 88 bb out 0x18, r24 ; 24 |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;} |
3a0: 80 91 b5 02 lds r24, 0x02B5 |
3a4: 90 91 b6 02 lds r25, 0x02B6 |
3a8: 8a 0d add r24, r10 |
3aa: 9b 1d adc r25, r11 |
3ac: 20 91 7a 00 lds r18, 0x007A |
3b0: 30 91 7b 00 lds r19, 0x007B |
3b4: 82 17 cp r24, r18 |
3b6: 93 07 cpc r25, r19 |
3b8: 38 f0 brcs .+14 ; 0x3c8 <MotorTon+0x124> |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ LOW-Mosfets auf Schalten und Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
Strom = 0; |
for(i=0;i<t;i++) |
3ba: 0f 5f subi r16, 0xFF ; 255 |
3bc: 1f 4f sbci r17, 0xFF ; 255 |
3be: 0e 15 cp r16, r14 |
3c0: 1f 05 cpc r17, r15 |
3c2: d0 f2 brcs .-76 ; 0x378 <MotorTon+0xd4> |
3c4: dd 24 eor r13, r13 |
3c6: 0a c0 rjmp .+20 ; 0x3dc <MotorTon+0x138> |
FETS_OFF; |
Delay(5); |
HIGH_A_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;} |
3c8: 84 e3 ldi r24, 0x34 ; 52 |
3ca: 7e d5 rcall .+2812 ; 0xec8 <uart_putchar> |
3cc: 82 b3 in r24, 0x12 ; 18 |
3ce: 87 7c andi r24, 0xC7 ; 199 |
3d0: 82 bb out 0x12, r24 ; 18 |
3d2: 88 b3 in r24, 0x18 ; 24 |
3d4: 81 7f andi r24, 0xF1 ; 241 |
3d6: 88 bb out 0x18, r24 ; 24 |
3d8: 24 e0 ldi r18, 0x04 ; 4 |
3da: d2 2e mov r13, r18 |
3dc: 80 e1 ldi r24, 0x10 ; 16 |
3de: 97 e2 ldi r25, 0x27 ; 39 |
3e0: 00 c0 rjmp .+0 ; 0x3e2 <MotorTon+0x13e> |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
3e2: 01 97 sbiw r24, 0x01 ; 1 |
3e4: 5f ef ldi r21, 0xFF ; 255 |
3e6: 8f 3f cpi r24, 0xFF ; 255 |
3e8: 95 07 cpc r25, r21 |
3ea: d9 f7 brne .-10 ; 0x3e2 <MotorTon+0x13e> |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;} |
Delay(5); |
} |
Delay(10000); |
Strom = 0; |
3ec: 10 92 7b 00 sts 0x007B, r1 |
3f0: 10 92 7a 00 sts 0x007A, r1 |
3f4: 00 e0 ldi r16, 0x00 ; 0 |
3f6: 10 e0 ldi r17, 0x00 ; 0 |
for(i=0;i<t;i++) |
{ |
LOW_B_EIN; |
3f8: 94 9a sbi 0x12, 4 ; 18 |
DelayM(1); |
3fa: 81 e0 ldi r24, 0x01 ; 1 |
3fc: 90 e0 ldi r25, 0x00 ; 0 |
3fe: 1d df rcall .-454 ; 0x23a <DelayM> |
FETS_OFF; |
400: 82 b3 in r24, 0x12 ; 18 |
402: 87 7c andi r24, 0xC7 ; 199 |
404: 82 bb out 0x12, r24 ; 18 |
406: 88 b3 in r24, 0x18 ; 24 |
408: 81 7f andi r24, 0xF1 ; 241 |
40a: 88 bb out 0x18, r24 ; 24 |
Delay(5); |
HIGH_B_EIN; |
40c: c2 9a sbi 0x18, 2 ; 24 |
DelayM(1); |
40e: 81 e0 ldi r24, 0x01 ; 1 |
410: 90 e0 ldi r25, 0x00 ; 0 |
412: 13 df rcall .-474 ; 0x23a <DelayM> |
FETS_OFF; |
414: 82 b3 in r24, 0x12 ; 18 |
416: 87 7c andi r24, 0xC7 ; 199 |
418: 82 bb out 0x12, r24 ; 18 |
41a: 88 b3 in r24, 0x18 ; 24 |
41c: 81 7f andi r24, 0xF1 ; 241 |
41e: 88 bb out 0x18, r24 ; 24 |
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); FETS_OFF;break;} |
420: 80 91 b5 02 lds r24, 0x02B5 |
424: 90 91 b6 02 lds r25, 0x02B6 |
428: 8a 0d add r24, r10 |
42a: 9b 1d adc r25, r11 |
42c: 20 91 7a 00 lds r18, 0x007A |
430: 30 91 7b 00 lds r19, 0x007B |
434: 82 17 cp r24, r18 |
436: 93 07 cpc r25, r19 |
438: 30 f0 brcs .+12 ; 0x446 <MotorTon+0x1a2> |
Delay(5); |
} |
Delay(10000); |
Strom = 0; |
for(i=0;i<t;i++) |
43a: 0f 5f subi r16, 0xFF ; 255 |
43c: 1f 4f sbci r17, 0xFF ; 255 |
43e: 0e 15 cp r16, r14 |
440: 1f 05 cpc r17, r15 |
442: d0 f2 brcs .-76 ; 0x3f8 <MotorTon+0x154> |
444: 0a c0 rjmp .+20 ; 0x45a <MotorTon+0x1b6> |
FETS_OFF; |
Delay(5); |
HIGH_B_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); FETS_OFF;break;} |
446: 85 e3 ldi r24, 0x35 ; 53 |
448: 3f d5 rcall .+2686 ; 0xec8 <uart_putchar> |
44a: 82 b3 in r24, 0x12 ; 18 |
44c: 87 7c andi r24, 0xC7 ; 199 |
44e: 82 bb out 0x12, r24 ; 18 |
450: 88 b3 in r24, 0x18 ; 24 |
452: 81 7f andi r24, 0xF1 ; 241 |
454: 88 bb out 0x18, r24 ; 24 |
456: 95 e0 ldi r25, 0x05 ; 5 |
458: d9 2e mov r13, r25 |
Delay(5); |
} |
Strom = 0; |
45a: 10 92 7b 00 sts 0x007B, r1 |
45e: 10 92 7a 00 sts 0x007A, r1 |
462: 80 e1 ldi r24, 0x10 ; 16 |
464: 97 e2 ldi r25, 0x27 ; 39 |
466: 00 c0 rjmp .+0 ; 0x468 <__stack+0x9> |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
468: 01 97 sbiw r24, 0x01 ; 1 |
46a: 2f ef ldi r18, 0xFF ; 255 |
46c: 8f 3f cpi r24, 0xFF ; 255 |
46e: 92 07 cpc r25, r18 |
470: d9 f7 brne .-10 ; 0x468 <__stack+0x9> |
472: 00 e0 ldi r16, 0x00 ; 0 |
474: 10 e0 ldi r17, 0x00 ; 0 |
Strom = 0; |
Delay(10000); |
for(i=0;i<t;i++) |
{ |
LOW_C_EIN; |
476: 95 9a sbi 0x12, 5 ; 18 |
DelayM(1); |
478: 81 e0 ldi r24, 0x01 ; 1 |
47a: 90 e0 ldi r25, 0x00 ; 0 |
47c: de de rcall .-580 ; 0x23a <DelayM> |
FETS_OFF; |
47e: 82 b3 in r24, 0x12 ; 18 |
480: 87 7c andi r24, 0xC7 ; 199 |
482: 82 bb out 0x12, r24 ; 18 |
484: 88 b3 in r24, 0x18 ; 24 |
486: 81 7f andi r24, 0xF1 ; 241 |
488: 88 bb out 0x18, r24 ; 24 |
Delay(5); |
HIGH_C_EIN; |
48a: c1 9a sbi 0x18, 1 ; 24 |
DelayM(1); |
48c: 81 e0 ldi r24, 0x01 ; 1 |
48e: 90 e0 ldi r25, 0x00 ; 0 |
490: d4 de rcall .-600 ; 0x23a <DelayM> |
FETS_OFF; |
492: 82 b3 in r24, 0x12 ; 18 |
494: 87 7c andi r24, 0xC7 ; 199 |
496: 82 bb out 0x12, r24 ; 18 |
498: 88 b3 in r24, 0x18 ; 24 |
49a: 81 7f andi r24, 0xF1 ; 241 |
49c: 88 bb out 0x18, r24 ; 24 |
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); FETS_OFF; break;} |
49e: 80 91 b5 02 lds r24, 0x02B5 |
4a2: 90 91 b6 02 lds r25, 0x02B6 |
4a6: 8a 0d add r24, r10 |
4a8: 9b 1d adc r25, r11 |
4aa: 20 91 7a 00 lds r18, 0x007A |
4ae: 30 91 7b 00 lds r19, 0x007B |
4b2: 82 17 cp r24, r18 |
4b4: 93 07 cpc r25, r19 |
4b6: 30 f0 brcs .+12 ; 0x4c4 <__stack+0x65> |
} |
Strom = 0; |
Delay(10000); |
for(i=0;i<t;i++) |
4b8: 0f 5f subi r16, 0xFF ; 255 |
4ba: 1f 4f sbci r17, 0xFF ; 255 |
4bc: 0e 15 cp r16, r14 |
4be: 1f 05 cpc r17, r15 |
4c0: d0 f2 brcs .-76 ; 0x476 <__stack+0x17> |
4c2: 0b c0 rjmp .+22 ; 0x4da <__stack+0x7b> |
FETS_OFF; |
Delay(5); |
HIGH_C_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); FETS_OFF; break;} |
4c4: 86 e3 ldi r24, 0x36 ; 54 |
4c6: 00 d5 rcall .+2560 ; 0xec8 <uart_putchar> |
4c8: 82 b3 in r24, 0x12 ; 18 |
4ca: 87 7c andi r24, 0xC7 ; 199 |
4cc: 82 bb out 0x12, r24 ; 18 |
4ce: 88 b3 in r24, 0x18 ; 24 |
4d0: 81 7f andi r24, 0xF1 ; 241 |
4d2: 88 bb out 0x18, r24 ; 24 |
4d4: 86 e0 ldi r24, 0x06 ; 6 |
4d6: d8 2e mov r13, r24 |
4d8: 02 c0 rjmp .+4 ; 0x4de <__stack+0x7f> |
Delay(5); |
} |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
4da: dd 20 and r13, r13 |
4dc: 19 f0 breq .+6 ; 0x4e4 <__stack+0x85> |
4de: 8d 2d mov r24, r13 |
4e0: cd de rcall .-614 ; 0x27c <RotBlink> |
4e2: fd cf rjmp .-6 ; 0x4de <__stack+0x7f> |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_A; |
4e4: 80 91 8d 00 lds r24, 0x008D |
4e8: 87 b9 out 0x07, r24 ; 7 |
FETS_OFF; |
4ea: 82 b3 in r24, 0x12 ; 18 |
4ec: 87 7c andi r24, 0xC7 ; 199 |
4ee: 82 bb out 0x12, r24 ; 18 |
4f0: 88 b3 in r24, 0x18 ; 24 |
4f2: 81 7f andi r24, 0xF1 ; 241 |
4f4: 88 bb out 0x18, r24 ; 24 |
LOW_B_EIN; // Low B ein |
4f6: 94 9a sbi 0x12, 4 ; 18 |
LOW_C_EIN; // Low C ein |
4f8: 95 9a sbi 0x12, 5 ; 18 |
Strom = 0; |
4fa: 10 92 7b 00 sts 0x007B, r1 |
4fe: 10 92 7a 00 sts 0x007A, r1 |
502: 00 e0 ldi r16, 0x00 ; 0 |
504: 10 e0 ldi r17, 0x00 ; 0 |
506: ff 24 eor r15, r15 |
#define SOUND2_A 330 |
#define SOUND3_A 360 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_A_EIN; // Test A |
508: c3 9a sbi 0x18, 3 ; 24 |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;}; |
50a: 80 e0 ldi r24, 0x00 ; 0 |
50c: e5 d6 rcall .+3530 ; 0x12d8 <MessAD> |
50e: c3 97 sbiw r24, 0x33 ; 51 |
510: 18 f0 brcs .+6 ; 0x518 <__stack+0xb9> |
512: 41 e0 ldi r20, 0x01 ; 1 |
514: f4 2a or r15, r20 |
516: 02 c0 rjmp .+4 ; 0x51c <__stack+0xbd> |
518: 5e ef ldi r21, 0xFE ; 254 |
51a: f5 22 and r15, r21 |
PORTB = 0; |
51c: 18 ba out 0x18, r1 ; 24 |
51e: 8c e2 ldi r24, 0x2C ; 44 |
520: 91 e0 ldi r25, 0x01 ; 1 |
522: 00 c0 rjmp .+0 ; 0x524 <__stack+0xc5> |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
524: 01 97 sbiw r24, 0x01 ; 1 |
526: 2f ef ldi r18, 0xFF ; 255 |
528: 8f 3f cpi r24, 0xFF ; 255 |
52a: 92 07 cpc r25, r18 |
52c: d9 f7 brne .-10 ; 0x524 <__stack+0xc5> |
#define SOUND_E 1 // 1 |
#define SOUND1_A 300 |
#define SOUND2_A 330 |
#define SOUND3_A 360 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
52e: 0f 5f subi r16, 0xFF ; 255 |
530: 1f 4f sbci r17, 0xFF ; 255 |
532: 09 37 cpi r16, 0x79 ; 121 |
534: 11 05 cpc r17, r1 |
536: 41 f7 brne .-48 ; 0x508 <__stack+0xa9> |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
538: 82 b3 in r24, 0x12 ; 18 |
53a: 87 7c andi r24, 0xC7 ; 199 |
53c: 82 bb out 0x12, r24 ; 18 |
53e: 88 b3 in r24, 0x18 ; 24 |
540: 81 7f andi r24, 0xF1 ; 241 |
542: 88 bb out 0x18, r24 ; 24 |
LOW_A_EIN; // Low A ein |
544: 93 9a sbi 0x12, 3 ; 18 |
LOW_C_EIN; // Low C ein |
546: 95 9a sbi 0x12, 5 ; 18 |
548: 00 e0 ldi r16, 0x00 ; 0 |
54a: 10 e0 ldi r17, 0x00 ; 0 |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
54c: c2 9a sbi 0x18, 2 ; 24 |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;}; |
54e: 81 e0 ldi r24, 0x01 ; 1 |
550: c3 d6 rcall .+3462 ; 0x12d8 <MessAD> |
552: c3 97 sbiw r24, 0x33 ; 51 |
554: 18 f0 brcs .+6 ; 0x55c <__stack+0xfd> |
556: 42 e0 ldi r20, 0x02 ; 2 |
558: f4 2a or r15, r20 |
55a: 02 c0 rjmp .+4 ; 0x560 <__stack+0x101> |
55c: 5d ef ldi r21, 0xFD ; 253 |
55e: f5 22 and r15, r21 |
PORTB = 0; |
560: 18 ba out 0x18, r1 ; 24 |
562: 8c e2 ldi r24, 0x2C ; 44 |
564: 91 e0 ldi r25, 0x01 ; 1 |
566: 00 c0 rjmp .+0 ; 0x568 <__stack+0x109> |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
568: 01 97 sbiw r24, 0x01 ; 1 |
56a: 2f ef ldi r18, 0xFF ; 255 |
56c: 8f 3f cpi r24, 0xFF ; 255 |
56e: 92 07 cpc r25, r18 |
570: d9 f7 brne .-10 ; 0x568 <__stack+0x109> |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
572: 0f 5f subi r16, 0xFF ; 255 |
574: 1f 4f sbci r17, 0xFF ; 255 |
576: 05 38 cpi r16, 0x85 ; 133 |
578: 11 05 cpc r17, r1 |
57a: 41 f7 brne .-48 ; 0x54c <__stack+0xed> |
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
57c: 82 b3 in r24, 0x12 ; 18 |
57e: 87 7c andi r24, 0xC7 ; 199 |
580: 82 bb out 0x12, r24 ; 18 |
582: 88 b3 in r24, 0x18 ; 24 |
584: 81 7f andi r24, 0xF1 ; 241 |
586: 88 bb out 0x18, r24 ; 24 |
LOW_A_EIN; // Low A ein |
588: 93 9a sbi 0x12, 3 ; 18 |
LOW_B_EIN; // Low B ein |
58a: 94 9a sbi 0x12, 4 ; 18 |
58c: 00 e0 ldi r16, 0x00 ; 0 |
58e: 10 e0 ldi r17, 0x00 ; 0 |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
590: c1 9a sbi 0x18, 1 ; 24 |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;}; |
592: 82 e0 ldi r24, 0x02 ; 2 |
594: a1 d6 rcall .+3394 ; 0x12d8 <MessAD> |
596: c3 97 sbiw r24, 0x33 ; 51 |
598: 18 f0 brcs .+6 ; 0x5a0 <__stack+0x141> |
59a: 44 e0 ldi r20, 0x04 ; 4 |
59c: f4 2a or r15, r20 |
59e: 02 c0 rjmp .+4 ; 0x5a4 <__stack+0x145> |
5a0: 5b ef ldi r21, 0xFB ; 251 |
5a2: f5 22 and r15, r21 |
PORTB = 0; |
5a4: 18 ba out 0x18, r1 ; 24 |
5a6: 8a e4 ldi r24, 0x4A ; 74 |
5a8: 91 e0 ldi r25, 0x01 ; 1 |
5aa: 00 c0 rjmp .+0 ; 0x5ac <__stack+0x14d> |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
5ac: 01 97 sbiw r24, 0x01 ; 1 |
5ae: 2f ef ldi r18, 0xFF ; 255 |
5b0: 8f 3f cpi r24, 0xFF ; 255 |
5b2: 92 07 cpc r25, r18 |
5b4: d9 f7 brne .-10 ; 0x5ac <__stack+0x14d> |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
5b6: 0f 5f subi r16, 0xFF ; 255 |
5b8: 1f 4f sbci r17, 0xFF ; 255 |
5ba: 0f 36 cpi r16, 0x6F ; 111 |
5bc: 11 05 cpc r17, r1 |
5be: 41 f7 brne .-48 ; 0x590 <__stack+0x131> |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
FETS_OFF; |
5c0: 82 b3 in r24, 0x12 ; 18 |
5c2: 87 7c andi r24, 0xC7 ; 199 |
5c4: 82 bb out 0x12, r24 ; 18 |
5c6: 88 b3 in r24, 0x18 ; 24 |
5c8: 81 7f andi r24, 0xF1 ; 241 |
5ca: 88 bb out 0x18, r24 ; 24 |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Low-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// SENSE_B; |
LOW_A_EIN; // Low A ein |
5cc: 93 9a sbi 0x12, 3 ; 18 |
5ce: 00 e0 ldi r16, 0x00 ; 0 |
5d0: 10 e0 ldi r17, 0x00 ; 0 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_B_EIN; // Test B |
5d2: c2 9a sbi 0x18, 2 ; 24 |
Delay(SOUND_E); |
if(MessAD(0) > 128) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;}; |
5d4: 80 e0 ldi r24, 0x00 ; 0 |
5d6: 80 d6 rcall .+3328 ; 0x12d8 <MessAD> |
5d8: 81 38 cpi r24, 0x81 ; 129 |
5da: 91 05 cpc r25, r1 |
5dc: 18 f0 brcs .+6 ; 0x5e4 <__stack+0x185> |
5de: 47 ef ldi r20, 0xF7 ; 247 |
5e0: f4 22 and r15, r20 |
5e2: 02 c0 rjmp .+4 ; 0x5e8 <__stack+0x189> |
5e4: 58 e0 ldi r21, 0x08 ; 8 |
5e6: f5 2a or r15, r21 |
PORTB = 0; |
5e8: 18 ba out 0x18, r1 ; 24 |
5ea: 8a e4 ldi r24, 0x4A ; 74 |
5ec: 91 e0 ldi r25, 0x01 ; 1 |
5ee: 00 c0 rjmp .+0 ; 0x5f0 <__stack+0x191> |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
5f0: 01 97 sbiw r24, 0x01 ; 1 |
5f2: 2f ef ldi r18, 0xFF ; 255 |
5f4: 8f 3f cpi r24, 0xFF ; 255 |
5f6: 92 07 cpc r25, r18 |
5f8: d9 f7 brne .-10 ; 0x5f0 <__stack+0x191> |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Low-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// SENSE_B; |
LOW_A_EIN; // Low A ein |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
5fa: 0f 5f subi r16, 0xFF ; 255 |
5fc: 1f 4f sbci r17, 0xFF ; 255 |
5fe: 09 37 cpi r16, 0x79 ; 121 |
600: 11 05 cpc r17, r1 |
602: 39 f7 brne .-50 ; 0x5d2 <__stack+0x173> |
PORTB = 0; |
Delay(SOUND2_A); |
} |
//++++++++++++++++++++++++++++++++++++ |
LOW_C_EIN; // Low C ein |
604: 95 9a sbi 0x12, 5 ; 18 |
606: 00 e0 ldi r16, 0x00 ; 0 |
608: 10 e0 ldi r17, 0x00 ; 0 |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
60a: c2 9a sbi 0x18, 2 ; 24 |
Delay(SOUND_E); |
if(MessAD(2) > 128) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;}; |
60c: 82 e0 ldi r24, 0x02 ; 2 |
60e: 64 d6 rcall .+3272 ; 0x12d8 <MessAD> |
610: 81 38 cpi r24, 0x81 ; 129 |
612: 91 05 cpc r25, r1 |
614: 18 f0 brcs .+6 ; 0x61c <__stack+0x1bd> |
616: 4f ed ldi r20, 0xDF ; 223 |
618: f4 22 and r15, r20 |
61a: 02 c0 rjmp .+4 ; 0x620 <__stack+0x1c1> |
61c: 50 e2 ldi r21, 0x20 ; 32 |
61e: f5 2a or r15, r21 |
PORTB = 0; |
620: 18 ba out 0x18, r1 ; 24 |
622: 88 e6 ldi r24, 0x68 ; 104 |
624: 91 e0 ldi r25, 0x01 ; 1 |
626: 00 c0 rjmp .+0 ; 0x628 <__stack+0x1c9> |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
628: 01 97 sbiw r24, 0x01 ; 1 |
62a: 2f ef ldi r18, 0xFF ; 255 |
62c: 8f 3f cpi r24, 0xFF ; 255 |
62e: 92 07 cpc r25, r18 |
630: d9 f7 brne .-10 ; 0x628 <__stack+0x1c9> |
Delay(SOUND2_A); |
} |
//++++++++++++++++++++++++++++++++++++ |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
632: 0f 5f subi r16, 0xFF ; 255 |
634: 1f 4f sbci r17, 0xFF ; 255 |
636: 05 38 cpi r16, 0x85 ; 133 |
638: 11 05 cpc r17, r1 |
63a: 39 f7 brne .-50 ; 0x60a <__stack+0x1ab> |
Delay(SOUND_E); |
if(MessAD(2) > 128) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
63c: 82 b3 in r24, 0x12 ; 18 |
63e: 87 7c andi r24, 0xC7 ; 199 |
640: 82 bb out 0x12, r24 ; 18 |
642: 88 b3 in r24, 0x18 ; 24 |
644: 81 7f andi r24, 0xF1 ; 241 |
646: 88 bb out 0x18, r24 ; 24 |
//++++++++++++++++++++++++++++++++++++ |
FETS_OFF; |
648: 82 b3 in r24, 0x12 ; 18 |
64a: 87 7c andi r24, 0xC7 ; 199 |
64c: 82 bb out 0x12, r24 ; 18 |
64e: 88 b3 in r24, 0x18 ; 24 |
650: 81 7f andi r24, 0xF1 ; 241 |
652: 88 bb out 0x18, r24 ; 24 |
LOW_B_EIN; // Low B ein |
654: 94 9a sbi 0x12, 4 ; 18 |
656: 00 e0 ldi r16, 0x00 ; 0 |
658: 10 e0 ldi r17, 0x00 ; 0 |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
65a: c1 9a sbi 0x18, 1 ; 24 |
Delay(SOUND_E); |
if(MessAD(1) > 128) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;}; |
65c: 81 e0 ldi r24, 0x01 ; 1 |
65e: 3c d6 rcall .+3192 ; 0x12d8 <MessAD> |
660: 81 38 cpi r24, 0x81 ; 129 |
662: 91 05 cpc r25, r1 |
664: 18 f0 brcs .+6 ; 0x66c <__stack+0x20d> |
666: 4f ee ldi r20, 0xEF ; 239 |
668: f4 22 and r15, r20 |
66a: 02 c0 rjmp .+4 ; 0x670 <__stack+0x211> |
66c: 50 e1 ldi r21, 0x10 ; 16 |
66e: f5 2a or r15, r21 |
PORTB = 0; |
670: 18 ba out 0x18, r1 ; 24 |
672: 88 e6 ldi r24, 0x68 ; 104 |
674: 91 e0 ldi r25, 0x01 ; 1 |
676: 00 c0 rjmp .+0 ; 0x678 <__stack+0x219> |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
678: 01 97 sbiw r24, 0x01 ; 1 |
67a: 2f ef ldi r18, 0xFF ; 255 |
67c: 8f 3f cpi r24, 0xFF ; 255 |
67e: 92 07 cpc r25, r18 |
680: d9 f7 brne .-10 ; 0x678 <__stack+0x219> |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
682: 0f 5f subi r16, 0xFF ; 255 |
684: 1f 4f sbci r17, 0xFF ; 255 |
686: 0f 36 cpi r16, 0x6F ; 111 |
688: 11 05 cpc r17, r1 |
68a: 39 f7 brne .-50 ; 0x65a <__stack+0x1fb> |
Delay(SOUND_E); |
if(MessAD(1) > 128) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
68c: 82 b3 in r24, 0x12 ; 18 |
68e: 87 7c andi r24, 0xC7 ; 199 |
690: 82 bb out 0x12, r24 ; 18 |
692: 88 b3 in r24, 0x18 ; 24 |
694: 81 7f andi r24, 0xF1 ; 241 |
696: 88 bb out 0x18, r24 ; 24 |
//++++++++++++++++++++++++++++++++++++ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
sei();//Globale Interrupts Einschalten |
698: 78 94 sei |
Delay(SOUND_E); |
PORTB = 0; |
Delay(SOUND8_A); |
} |
*/ |
Delay_ms(300 * (3-ADR_TAB[MotorAdresse])); |
69a: 80 91 66 00 lds r24, 0x0066 |
69e: fe 01 movw r30, r28 |
6a0: e8 0f add r30, r24 |
6a2: f1 1d adc r31, r1 |
6a4: 21 81 ldd r18, Z+1 ; 0x01 |
6a6: 83 e0 ldi r24, 0x03 ; 3 |
6a8: 90 e0 ldi r25, 0x00 ; 0 |
6aa: 82 1b sub r24, r18 |
6ac: 91 09 sbc r25, r1 |
6ae: 2c e2 ldi r18, 0x2C ; 44 |
6b0: 31 e0 ldi r19, 0x01 ; 1 |
6b2: ac 01 movw r20, r24 |
6b4: 42 9f mul r20, r18 |
6b6: c0 01 movw r24, r0 |
6b8: 43 9f mul r20, r19 |
6ba: 90 0d add r25, r0 |
6bc: 52 9f mul r21, r18 |
6be: 90 0d add r25, r0 |
6c0: 11 24 eor r1, r1 |
6c2: b6 d5 rcall .+2924 ; 0x1230 <Delay_ms> |
if(!(MosfetOkay & 0x01)) { anz = 1; UDR='A'; } else |
6c4: f0 fc sbrc r15, 0 |
6c6: 04 c0 rjmp .+8 ; 0x6d0 <__stack+0x271> |
6c8: 81 e4 ldi r24, 0x41 ; 65 |
6ca: 8c b9 out 0x0c, r24 ; 12 |
6cc: 11 e0 ldi r17, 0x01 ; 1 |
6ce: 1d c0 rjmp .+58 ; 0x70a <__stack+0x2ab> |
if(!(MosfetOkay & 0x02)) { anz = 2; UDR='B'; } else |
6d0: f1 fc sbrc r15, 1 |
6d2: 04 c0 rjmp .+8 ; 0x6dc <__stack+0x27d> |
6d4: 82 e4 ldi r24, 0x42 ; 66 |
6d6: 8c b9 out 0x0c, r24 ; 12 |
6d8: 12 e0 ldi r17, 0x02 ; 2 |
6da: 17 c0 rjmp .+46 ; 0x70a <__stack+0x2ab> |
if(!(MosfetOkay & 0x04)) { anz = 3; UDR='C'; } else |
6dc: f2 fc sbrc r15, 2 |
6de: 04 c0 rjmp .+8 ; 0x6e8 <__stack+0x289> |
6e0: 83 e4 ldi r24, 0x43 ; 67 |
6e2: 8c b9 out 0x0c, r24 ; 12 |
6e4: 13 e0 ldi r17, 0x03 ; 3 |
6e6: 11 c0 rjmp .+34 ; 0x70a <__stack+0x2ab> |
if(!(MosfetOkay & 0x08)) { anz = 4; UDR='a'; } else |
6e8: f3 fc sbrc r15, 3 |
6ea: 04 c0 rjmp .+8 ; 0x6f4 <__stack+0x295> |
6ec: 81 e6 ldi r24, 0x61 ; 97 |
6ee: 8c b9 out 0x0c, r24 ; 12 |
6f0: 14 e0 ldi r17, 0x04 ; 4 |
6f2: 0b c0 rjmp .+22 ; 0x70a <__stack+0x2ab> |
if(!(MosfetOkay & 0x10)) { anz = 5; UDR='b'; } else |
6f4: f4 fc sbrc r15, 4 |
6f6: 04 c0 rjmp .+8 ; 0x700 <__stack+0x2a1> |
6f8: 82 e6 ldi r24, 0x62 ; 98 |
6fa: 8c b9 out 0x0c, r24 ; 12 |
6fc: 15 e0 ldi r17, 0x05 ; 5 |
6fe: 05 c0 rjmp .+10 ; 0x70a <__stack+0x2ab> |
if(!(MosfetOkay & 0x20)) { anz = 6; UDR='c'; } |
700: f5 fc sbrc r15, 5 |
702: 06 c0 rjmp .+12 ; 0x710 <__stack+0x2b1> |
704: 83 e6 ldi r24, 0x63 ; 99 |
706: 8c b9 out 0x0c, r24 ; 12 |
708: 16 e0 ldi r17, 0x06 ; 6 |
// if(anz) Delay_ms(1000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
70a: 81 2f mov r24, r17 |
70c: b7 dd rcall .-1170 ; 0x27c <RotBlink> |
70e: fd cf rjmp .-6 ; 0x70a <__stack+0x2ab> |
RotBlink(anz); |
710: 80 e0 ldi r24, 0x00 ; 0 |
712: b4 dd rcall .-1176 ; 0x27c <RotBlink> |
uart_putchar('.'); |
714: 8e e2 ldi r24, 0x2E ; 46 |
716: d8 d3 rcall .+1968 ; 0xec8 <uart_putchar> |
} |
718: 27 96 adiw r28, 0x07 ; 7 |
71a: 0f b6 in r0, 0x3f ; 63 |
71c: f8 94 cli |
71e: de bf out 0x3e, r29 ; 62 |
720: 0f be out 0x3f, r0 ; 63 |
722: cd bf out 0x3d, r28 ; 61 |
724: cf 91 pop r28 |
726: df 91 pop r29 |
728: 1f 91 pop r17 |
72a: 0f 91 pop r16 |
72c: ff 90 pop r15 |
72e: ef 90 pop r14 |
730: df 90 pop r13 |
732: bf 90 pop r11 |
734: af 90 pop r10 |
736: 08 95 ret |
00000738 <Anwerfen>: |
//############################################################################ |
// |
char Anwerfen(unsigned char pwm) |
//############################################################################ |
{ |
738: 6f 92 push r6 |
73a: 7f 92 push r7 |
73c: 9f 92 push r9 |
73e: af 92 push r10 |
740: bf 92 push r11 |
742: cf 92 push r12 |
744: df 92 push r13 |
746: ef 92 push r14 |
748: ff 92 push r15 |
74a: 0f 93 push r16 |
74c: 1f 93 push r17 |
74e: cf 93 push r28 |
750: df 93 push r29 |
752: 98 2e mov r9, r24 |
unsigned long timer = 300,i; |
DISABLE_SENSE_INT; |
754: 10 92 b1 00 sts 0x00B1, r1 |
758: 43 98 cbi 0x08, 3 ; 8 |
PWM = 5; |
75a: 85 e0 ldi r24, 0x05 ; 5 |
75c: 90 e0 ldi r25, 0x00 ; 0 |
75e: 90 93 79 00 sts 0x0079, r25 |
762: 80 93 78 00 sts 0x0078, r24 |
SetPWM(); |
766: 7b dc rcall .-1802 ; 0x5e <SetPWM> |
Manuell(); |
768: 0f d7 rcall .+3614 ; 0x1588 <Manuell> |
// Delay_ms(200); |
MinUpmPulse = SetDelay(300); |
76a: 8c e2 ldi r24, 0x2C ; 44 |
76c: 91 e0 ldi r25, 0x01 ; 1 |
76e: 4c d5 rcall .+2712 ; 0x1208 <SetDelay> |
770: 90 93 b4 02 sts 0x02B4, r25 |
774: 80 93 b3 02 sts 0x02B3, r24 |
778: 09 c0 rjmp .+18 ; 0x78c <Anwerfen+0x54> |
while(!CheckDelay(MinUpmPulse)) |
{ |
FastADConvert(); |
77a: c3 d5 rcall .+2950 ; 0x1302 <FastADConvert> |
if(Strom > 120) |
77c: 80 91 7a 00 lds r24, 0x007A |
780: 90 91 7b 00 lds r25, 0x007B |
784: 89 37 cpi r24, 0x79 ; 121 |
786: 91 05 cpc r25, r1 |
788: 08 f0 brcs .+2 ; 0x78c <Anwerfen+0x54> |
78a: 5c c0 rjmp .+184 ; 0x844 <Anwerfen+0x10c> |
PWM = 5; |
SetPWM(); |
Manuell(); |
// Delay_ms(200); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) |
78c: 80 91 b3 02 lds r24, 0x02B3 |
790: 90 91 b4 02 lds r25, 0x02B4 |
794: 43 d5 rcall .+2694 ; 0x121c <CheckDelay> |
796: 88 23 and r24, r24 |
798: 81 f3 breq .-32 ; 0x77a <Anwerfen+0x42> |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
} |
PWM = pwm; |
79a: 90 92 78 00 sts 0x0078, r9 |
79e: 10 92 79 00 sts 0x0079, r1 |
7a2: 5c e2 ldi r21, 0x2C ; 44 |
7a4: a5 2e mov r10, r21 |
7a6: 51 e0 ldi r21, 0x01 ; 1 |
7a8: b5 2e mov r11, r21 |
7aa: c1 2c mov r12, r1 |
7ac: d1 2c mov r13, r1 |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
7ae: c6 e8 ldi r28, 0x86 ; 134 |
7b0: d3 e0 ldi r29, 0x03 ; 3 |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
DebugOut.Analog[4] = OCR2; |
7b2: 46 e0 ldi r20, 0x06 ; 6 |
7b4: 64 2e mov r6, r20 |
7b6: 71 2c mov r7, r1 |
7b8: 6c 0e add r6, r28 |
7ba: 7d 1e adc r7, r29 |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
} |
PWM = pwm; |
7bc: ee 24 eor r14, r14 |
7be: ff 24 eor r15, r15 |
7c0: 87 01 movw r16, r14 |
while(1) |
{ |
for(i=0;i<timer; i++) |
{ |
if(!UebertragungAbgeschlossen) SendUart(); |
7c2: 80 91 6f 00 lds r24, 0x006F |
7c6: 88 23 and r24, r24 |
7c8: 11 f4 brne .+4 ; 0x7ce <Anwerfen+0x96> |
7ca: 6c d2 rcall .+1240 ; 0xca4 <SendUart> |
7cc: 01 c0 rjmp .+2 ; 0x7d0 <Anwerfen+0x98> |
else DatenUebertragung(); |
7ce: 6e d4 rcall .+2268 ; 0x10ac <DatenUebertragung> |
//############################################################################ |
// |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
7d0: 82 b7 in r24, 0x32 ; 50 |
7d2: 8c 59 subi r24, 0x9C ; 156 |
while((TCNT0 - dauer) & 0x80); |
7d4: 98 2f mov r25, r24 |
7d6: 82 b7 in r24, 0x32 ; 50 |
7d8: 89 1b sub r24, r25 |
7da: 87 fd sbrc r24, 7 |
7dc: fc cf rjmp .-8 ; 0x7d6 <Anwerfen+0x9e> |
} |
} |
PWM = pwm; |
while(1) |
{ |
for(i=0;i<timer; i++) |
7de: 08 94 sec |
7e0: e1 1c adc r14, r1 |
7e2: f1 1c adc r15, r1 |
7e4: 01 1d adc r16, r1 |
7e6: 11 1d adc r17, r1 |
7e8: ea 14 cp r14, r10 |
7ea: fb 04 cpc r15, r11 |
7ec: 0c 05 cpc r16, r12 |
7ee: 1d 05 cpc r17, r13 |
7f0: 40 f3 brcs .-48 ; 0x7c2 <Anwerfen+0x8a> |
} |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
7f2: 80 91 7a 00 lds r24, 0x007A |
7f6: 90 91 7b 00 lds r25, 0x007B |
7fa: 90 93 85 03 sts 0x0385, r25 |
7fe: 80 93 84 03 sts 0x0384, r24 |
DebugOut.Analog[1] = Mittelstrom; |
802: 80 91 7d 00 lds r24, 0x007D |
806: 80 93 86 03 sts 0x0386, r24 |
80a: 19 82 std Y+1, r1 ; 0x01 |
DebugOut.Analog[2] = SIO_Drehzahl; |
80c: 80 91 8b 00 lds r24, 0x008B |
810: 90 91 8c 00 lds r25, 0x008C |
814: 90 93 89 03 sts 0x0389, r25 |
818: 80 93 88 03 sts 0x0388, r24 |
DebugOut.Analog[3] = PPM_Signal; |
81c: 80 91 a5 00 lds r24, 0x00A5 |
820: 90 91 a6 00 lds r25, 0x00A6 |
824: 90 93 8b 03 sts 0x038B, r25 |
828: 80 93 8a 03 sts 0x038A, r24 |
DebugOut.Analog[4] = OCR2; |
82c: 83 b5 in r24, 0x23 ; 35 |
82e: 80 93 8c 03 sts 0x038C, r24 |
832: f3 01 movw r30, r6 |
834: 11 82 std Z+1, r1 ; 0x01 |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
Wait(100); // warten |
} |
DebugAusgaben(); |
FastADConvert(); |
836: 65 d5 rcall .+2762 ; 0x1302 <FastADConvert> |
if(Strom > 60) |
838: 80 91 7a 00 lds r24, 0x007A |
83c: 90 91 7b 00 lds r25, 0x007B |
840: cd 97 sbiw r24, 0x3d ; 61 |
842: a8 f0 brcs .+42 ; 0x86e <Anwerfen+0x136> |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
844: 82 b3 in r24, 0x12 ; 18 |
846: 87 7c andi r24, 0xC7 ; 199 |
848: 82 bb out 0x12, r24 ; 18 |
84a: 1b bc out 0x2b, r1 ; 43 |
84c: 1a bc out 0x2a, r1 ; 42 |
84e: 19 bc out 0x29, r1 ; 41 |
850: 18 bc out 0x28, r1 ; 40 |
852: 13 bc out 0x23, r1 ; 35 |
854: 81 e0 ldi r24, 0x01 ; 1 |
856: 8f bd out 0x2f, r24 ; 47 |
858: 81 e4 ldi r24, 0x41 ; 65 |
85a: 85 bd out 0x25, r24 ; 37 |
85c: 8e e0 ldi r24, 0x0E ; 14 |
85e: 87 bb out 0x17, r24 ; 23 |
860: 88 b3 in r24, 0x18 ; 24 |
862: 81 7f andi r24, 0xF1 ; 241 |
864: 88 bb out 0x18, r24 ; 24 |
RotBlink(10); |
866: 8a e0 ldi r24, 0x0A ; 10 |
868: 09 dd rcall .-1518 ; 0x27c <RotBlink> |
86a: 80 e0 ldi r24, 0x00 ; 0 |
86c: 2e c0 rjmp .+92 ; 0x8ca <Anwerfen+0x192> |
return(0); |
} |
timer-= timer/15+1; |
86e: c6 01 movw r24, r12 |
870: b5 01 movw r22, r10 |
872: 2f e0 ldi r18, 0x0F ; 15 |
874: 30 e0 ldi r19, 0x00 ; 0 |
876: 40 e0 ldi r20, 0x00 ; 0 |
878: 50 e0 ldi r21, 0x00 ; 0 |
87a: 12 d8 rcall .-4060 ; 0xfffff8a0 <__eeprom_end+0xff7ef8a0> |
87c: 20 95 com r18 |
87e: 30 95 com r19 |
880: 40 95 com r20 |
882: 50 95 com r21 |
884: a2 0e add r10, r18 |
886: b3 1e adc r11, r19 |
888: c4 1e adc r12, r20 |
88a: d5 1e adc r13, r21 |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return(1); } |
88c: f9 e1 ldi r31, 0x19 ; 25 |
88e: af 16 cp r10, r31 |
890: b1 04 cpc r11, r1 |
892: c1 04 cpc r12, r1 |
894: d1 04 cpc r13, r1 |
896: c0 f0 brcs .+48 ; 0x8c8 <Anwerfen+0x190> |
Manuell(); |
898: 77 d6 rcall .+3310 ; 0x1588 <Manuell> |
Phase++; |
89a: 80 91 af 00 lds r24, 0x00AF |
89e: 8f 5f subi r24, 0xFF ; 255 |
8a0: 80 93 af 00 sts 0x00AF, r24 |
Phase %= 6; |
8a4: 80 91 af 00 lds r24, 0x00AF |
8a8: 66 e0 ldi r22, 0x06 ; 6 |
8aa: da d7 rcall .+4020 ; 0x1860 <__udivmodqi4> |
8ac: 90 93 af 00 sts 0x00AF, r25 |
AdConvert(); |
8b0: dc d4 rcall .+2488 ; 0x126a <AdConvert> |
PWM = pwm; |
8b2: 90 92 78 00 sts 0x0078, r9 |
8b6: 10 92 79 00 sts 0x0079, r1 |
SetPWM(); |
8ba: d1 db rcall .-2142 ; 0x5e <SetPWM> |
if(SENSE) |
8bc: 44 9b sbis 0x08, 4 ; 8 |
8be: 7e cf rjmp .-260 ; 0x7bc <Anwerfen+0x84> |
{ |
PORTD ^= GRUEN; |
8c0: 82 b3 in r24, 0x12 ; 18 |
8c2: 80 58 subi r24, 0x80 ; 128 |
8c4: 82 bb out 0x12, r24 ; 18 |
8c6: 7a cf rjmp .-268 ; 0x7bc <Anwerfen+0x84> |
8c8: 81 e0 ldi r24, 0x01 ; 1 |
} |
} |
} |
8ca: df 91 pop r29 |
8cc: cf 91 pop r28 |
8ce: 1f 91 pop r17 |
8d0: 0f 91 pop r16 |
8d2: ff 90 pop r15 |
8d4: ef 90 pop r14 |
8d6: df 90 pop r13 |
8d8: cf 90 pop r12 |
8da: bf 90 pop r11 |
8dc: af 90 pop r10 |
8de: 9f 90 pop r9 |
8e0: 7f 90 pop r7 |
8e2: 6f 90 pop r6 |
8e4: 08 95 ret |
000008e6 <main>: |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
8e6: 5f 92 push r5 |
8e8: 6f 92 push r6 |
8ea: 7f 92 push r7 |
8ec: 8f 92 push r8 |
8ee: 9f 92 push r9 |
8f0: af 92 push r10 |
8f2: bf 92 push r11 |
8f4: cf 92 push r12 |
8f6: df 92 push r13 |
8f8: ef 92 push r14 |
8fa: ff 92 push r15 |
8fc: 0f 93 push r16 |
8fe: 1f 93 push r17 |
900: cf 93 push r28 |
902: df 93 push r29 |
char altPhase = 0; |
int test = 0; |
unsigned int Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
DDRC = 0x08; |
904: 88 e0 ldi r24, 0x08 ; 8 |
906: 84 bb out 0x14, r24 ; 20 |
PORTC = 0x08; |
908: 85 bb out 0x15, r24 ; 21 |
DDRD = 0x3A; |
90a: 8a e3 ldi r24, 0x3A ; 58 |
90c: 81 bb out 0x11, r24 ; 17 |
PORTD = 0x00; |
90e: 12 ba out 0x12, r1 ; 18 |
DDRB = 0x0E; |
910: 8e e0 ldi r24, 0x0E ; 14 |
912: 87 bb out 0x17, r24 ; 23 |
PORTB = 0x31; |
914: 81 e3 ldi r24, 0x31 ; 49 |
916: 88 bb out 0x18, r24 ; 24 |
#if (MOTORADRESSE == 0) |
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl |
918: 88 b3 in r24, 0x18 ; 24 |
91a: 80 6c ori r24, 0xC0 ; 192 |
91c: 88 bb out 0x18, r24 ; 24 |
for(test=0;test<500;test++); |
if(PINB & ADR1) |
91e: b6 9b sbis 0x16, 6 ; 22 |
920: 06 c0 rjmp .+12 ; 0x92e <main+0x48> |
{ |
if (PINB & ADR2) MotorAdresse = 1; |
922: b7 9b sbis 0x16, 7 ; 22 |
924: 02 c0 rjmp .+4 ; 0x92a <main+0x44> |
926: 81 e0 ldi r24, 0x01 ; 1 |
928: 07 c0 rjmp .+14 ; 0x938 <main+0x52> |
else MotorAdresse = 2; |
92a: 82 e0 ldi r24, 0x02 ; 2 |
92c: 05 c0 rjmp .+10 ; 0x938 <main+0x52> |
} |
else |
{ |
if (PINB & ADR2) MotorAdresse = 3; |
92e: b7 9b sbis 0x16, 7 ; 22 |
930: 02 c0 rjmp .+4 ; 0x936 <main+0x50> |
932: 83 e0 ldi r24, 0x03 ; 3 |
934: 01 c0 rjmp .+2 ; 0x938 <main+0x52> |
else MotorAdresse = 4; |
936: 84 e0 ldi r24, 0x04 ; 4 |
938: 80 93 66 00 sts 0x0066, r24 |
} |
HwVersion = 11; |
93c: 8b e0 ldi r24, 0x0B ; 11 |
93e: 80 93 b2 00 sts 0x00B2, r24 |
#else |
MotorAdresse = MOTORADRESSE; |
HwVersion = 10; |
#endif |
if(PIND & 0x80) {HwVersion = 12; IntRef = 0xc0;} |
942: 87 9b sbis 0x10, 7 ; 16 |
944: 06 c0 rjmp .+12 ; 0x952 <main+0x6c> |
946: 8c e0 ldi r24, 0x0C ; 12 |
948: 80 93 b2 00 sts 0x00B2, r24 |
94c: 80 ec ldi r24, 0xC0 ; 192 |
94e: 80 93 8d 00 sts 0x008D, r24 |
DDRD = 0xBA; |
952: 8a eb ldi r24, 0xBA ; 186 |
954: 81 bb out 0x11, r24 ; 17 |
UART_Init(); |
956: c4 d3 rcall .+1928 ; 0x10e0 <UART_Init> |
Timer0_Init(); |
958: 4e d4 rcall .+2204 ; 0x11f6 <Timer0_Init> |
sei();//Globale Interrupts Einschalten |
95a: 78 94 sei |
} |
Delay_ms(500); |
*/ |
// UART_Init(); // war doppelt |
PWM_Init(); |
95c: d4 db rcall .-2136 ; 0x106 <PWM_Init> |
InitIC2_Slave(0x50); |
95e: 80 e5 ldi r24, 0x50 ; 80 |
960: b0 d5 rcall .+2912 ; 0x14c2 <InitIC2_Slave> |
InitPPM(); |
962: eb d4 rcall .+2518 ; 0x133a <InitPPM> |
Blink = SetDelay(101); |
964: 85 e6 ldi r24, 0x65 ; 101 |
966: 90 e0 ldi r25, 0x00 ; 0 |
968: 4f d4 rcall .+2206 ; 0x1208 <SetDelay> |
Blink2 = SetDelay(102); |
96a: 86 e6 ldi r24, 0x66 ; 102 |
96c: 90 e0 ldi r25, 0x00 ; 0 |
96e: 4c d4 rcall .+2200 ; 0x1208 <SetDelay> |
MinUpmPulse = SetDelay(103); |
970: 87 e6 ldi r24, 0x67 ; 103 |
972: 90 e0 ldi r25, 0x00 ; 0 |
974: 49 d4 rcall .+2194 ; 0x1208 <SetDelay> |
976: 90 93 b4 02 sts 0x02B4, r25 |
97a: 80 93 b3 02 sts 0x02B3, r24 |
MittelstromTimer = SetDelay(254); |
97e: 8e ef ldi r24, 0xFE ; 254 |
980: 90 e0 ldi r25, 0x00 ; 0 |
982: 42 d4 rcall .+2180 ; 0x1208 <SetDelay> |
984: 6c 01 movw r12, r24 |
DrehzahlMessTimer = SetDelay(1005); |
986: 8d ee ldi r24, 0xED ; 237 |
988: 93 e0 ldi r25, 0x03 ; 3 |
98a: 3e d4 rcall .+2172 ; 0x1208 <SetDelay> |
98c: ec 01 movw r28, r24 |
TestschubTimer = SetDelay(1006); |
98e: 8e ee ldi r24, 0xEE ; 238 |
990: 93 e0 ldi r25, 0x03 ; 3 |
992: 3a d4 rcall .+2164 ; 0x1208 <SetDelay> |
994: 03 c0 rjmp .+6 ; 0x99c <main+0xb6> |
while(!CheckDelay(MinUpmPulse)) |
{ |
if(SollwertErmittlung()) break; |
996: d4 db rcall .-2136 ; 0x140 <SollwertErmittlung> |
998: 88 23 and r24, r24 |
99a: 39 f4 brne .+14 ; 0x9aa <main+0xc4> |
Blink2 = SetDelay(102); |
MinUpmPulse = SetDelay(103); |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)) |
99c: 80 91 b3 02 lds r24, 0x02B3 |
9a0: 90 91 b4 02 lds r25, 0x02B4 |
9a4: 3b d4 rcall .+2166 ; 0x121c <CheckDelay> |
9a6: 88 23 and r24, r24 |
9a8: b1 f3 breq .-20 ; 0x996 <main+0xb0> |
{ |
if(SollwertErmittlung()) break; |
} |
GRN_ON; |
9aa: 80 91 b2 00 lds r24, 0x00B2 |
9ae: 8c 30 cpi r24, 0x0C ; 12 |
9b0: 10 f4 brcc .+4 ; 0x9b6 <main+0xd0> |
9b2: 97 9a sbi 0x12, 7 ; 18 |
9b4: 01 c0 rjmp .+2 ; 0x9b8 <main+0xd2> |
9b6: 97 98 cbi 0x12, 7 ; 18 |
PWM = 0; |
9b8: 10 92 79 00 sts 0x0079, r1 |
9bc: 10 92 78 00 sts 0x0078, r1 |
SetPWM(); |
9c0: 4e db rcall .-2404 ; 0x5e <SetPWM> |
SFIOR = 0x08; // Analog Comperator ein |
9c2: 88 e0 ldi r24, 0x08 ; 8 |
9c4: 80 bf out 0x30, r24 ; 48 |
ADMUX = 1; |
9c6: 81 e0 ldi r24, 0x01 ; 1 |
9c8: 87 b9 out 0x07, r24 ; 7 |
MinUpmPulse = SetDelay(10); |
9ca: 8a e0 ldi r24, 0x0A ; 10 |
9cc: 90 e0 ldi r25, 0x00 ; 0 |
9ce: 1c d4 rcall .+2104 ; 0x1208 <SetDelay> |
9d0: 90 93 b4 02 sts 0x02B4, r25 |
9d4: 80 93 b3 02 sts 0x02B3, r24 |
DebugOut.Analog[1] = 1; |
9d8: 81 e0 ldi r24, 0x01 ; 1 |
9da: 90 e0 ldi r25, 0x00 ; 0 |
9dc: 90 93 87 03 sts 0x0387, r25 |
9e0: 80 93 86 03 sts 0x0386, r24 |
PPM_Signal = 0; |
9e4: 10 92 a6 00 sts 0x00A6, r1 |
9e8: 10 92 a5 00 sts 0x00A5, r1 |
if(!SollwertErmittlung()) MotorTon(); |
9ec: a9 db rcall .-2222 ; 0x140 <SollwertErmittlung> |
9ee: 88 23 and r24, r24 |
9f0: 09 f4 brne .+2 ; 0x9f4 <main+0x10e> |
9f2: 58 dc rcall .-1872 ; 0x2a4 <MotorTon> |
//MotorTon(); |
PORTB = 0x31; // Pullups wieder einschalten |
9f4: 81 e3 ldi r24, 0x31 ; 49 |
9f6: 88 bb out 0x18, r24 ; 24 |
9f8: 10 e0 ldi r17, 0x00 ; 0 |
STEUER_OFF; |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
9fa: ff 24 eor r15, r15 |
9fc: f3 94 inc r15 |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(MotorGestopptTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
STEUER_OFF; |
9fe: f1 e4 ldi r31, 0x41 ; 65 |
a00: ef 2e mov r14, r31 |
a02: ee e0 ldi r30, 0x0E ; 14 |
a04: 5e 2e mov r5, r30 |
if(Anwerfen(10)) |
{ |
GRN_ON; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
a06: 71 e0 ldi r23, 0x01 ; 1 |
a08: 67 2e mov r6, r23 |
a0a: 71 2c mov r7, r1 |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(20); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 15; |
a0c: 6f e0 ldi r22, 0x0F ; 15 |
a0e: 86 2e mov r8, r22 |
a10: 91 2c mov r9, r1 |
a12: 01 c0 rjmp .+2 ; 0xa16 <main+0x130> |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
if(!SollwertErmittlung()) MotorTon(); |
//MotorTon(); |
PORTB = 0x31; // Pullups wieder einschalten |
a14: 10 2f mov r17, r16 |
while (1) |
{ |
//ShowSense(); |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
a16: 94 db rcall .-2264 ; 0x140 <SollwertErmittlung> |
a18: 80 93 78 00 sts 0x0078, r24 |
a1c: 10 92 79 00 sts 0x0079, r1 |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt |
a20: 00 91 af 00 lds r16, 0x00AF |
a24: 01 17 cp r16, r17 |
a26: 69 f0 breq .+26 ; 0xa42 <main+0x15c> |
{ |
MotorGestoppt = 0; |
a28: 10 92 63 00 sts 0x0063, r1 |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
a2c: 10 92 62 00 sts 0x0062, r1 |
MinUpmPulse = SetDelay(250); // Timeout, falls ein Motor stehen bleibt |
a30: 8a ef ldi r24, 0xFA ; 250 |
a32: 90 e0 ldi r25, 0x00 ; 0 |
a34: e9 d3 rcall .+2002 ; 0x1208 <SetDelay> |
a36: 90 93 b4 02 sts 0x02B4, r25 |
a3a: 80 93 b3 02 sts 0x02B3, r24 |
altPhase = Phase; |
a3e: 00 91 af 00 lds r16, 0x00AF |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!PWM) // Sollwert == 0 |
a42: 80 91 78 00 lds r24, 0x0078 |
a46: 90 91 79 00 lds r25, 0x0079 |
a4a: 89 2b or r24, r25 |
a4c: e1 f4 brne .+56 ; 0xa86 <main+0x1a0> |
{ |
MotorAnwerfen = 0; // kein Startversuch |
a4e: 10 92 88 00 sts 0x0088, r1 |
ZeitFuerBerechnungen = 0; |
a52: 10 92 62 00 sts 0x0062, r1 |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(MotorGestopptTimer)) |
a56: c5 01 movw r24, r10 |
a58: e1 d3 rcall .+1986 ; 0x121c <CheckDelay> |
a5a: 88 23 and r24, r24 |
a5c: f1 f0 breq .+60 ; 0xa9a <main+0x1b4> |
{ |
DISABLE_SENSE_INT; |
a5e: 10 92 b1 00 sts 0x00B1, r1 |
a62: 43 98 cbi 0x08, 3 ; 8 |
MotorGestoppt = 1; |
a64: f0 92 63 00 sts 0x0063, r15 |
STEUER_OFF; |
a68: 82 b3 in r24, 0x12 ; 18 |
a6a: 87 7c andi r24, 0xC7 ; 199 |
a6c: 82 bb out 0x12, r24 ; 18 |
a6e: 1b bc out 0x2b, r1 ; 43 |
a70: 1a bc out 0x2a, r1 ; 42 |
a72: 19 bc out 0x29, r1 ; 41 |
a74: 18 bc out 0x28, r1 ; 40 |
a76: 13 bc out 0x23, r1 ; 35 |
a78: ff bc out 0x2f, r15 ; 47 |
a7a: e5 bc out 0x25, r14 ; 37 |
a7c: 57 ba out 0x17, r5 ; 23 |
a7e: 88 b3 in r24, 0x18 ; 24 |
a80: 81 7f andi r24, 0xF1 ; 241 |
a82: 88 bb out 0x18, r24 ; 24 |
a84: 0a c0 rjmp .+20 ; 0xa9a <main+0x1b4> |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
a86: 80 91 63 00 lds r24, 0x0063 |
a8a: 88 23 and r24, r24 |
a8c: 11 f0 breq .+4 ; 0xa92 <main+0x1ac> |
a8e: f0 92 88 00 sts 0x0088, r15 |
MotorGestopptTimer = SetDelay(1500); |
a92: 8c ed ldi r24, 0xDC ; 220 |
a94: 95 e0 ldi r25, 0x05 ; 5 |
a96: b8 d3 rcall .+1904 ; 0x1208 <SetDelay> |
a98: 5c 01 movw r10, r24 |
} |
if(MotorGestoppt && !TEST_SCHUB) PWM = 0; |
a9a: 80 91 63 00 lds r24, 0x0063 |
a9e: 88 23 and r24, r24 |
aa0: 21 f0 breq .+8 ; 0xaaa <main+0x1c4> |
aa2: 10 92 79 00 sts 0x0079, r1 |
aa6: 10 92 78 00 sts 0x0078, r1 |
SetPWM(); |
aaa: d9 da rcall .-2638 ; 0x5e <SetPWM> |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
aac: 80 91 62 00 lds r24, 0x0062 |
ab0: 8f 5f subi r24, 0xFF ; 255 |
ab2: 80 93 62 00 sts 0x0062, r24 |
ab6: 81 50 subi r24, 0x01 ; 1 |
ab8: 09 f0 breq .+2 ; 0xabc <main+0x1d6> |
aba: ac cf rjmp .-168 ; 0xa14 <main+0x12e> |
{ |
if(MotorGestoppt) |
abc: 80 91 63 00 lds r24, 0x0063 |
ac0: 88 23 and r24, r24 |
ac2: 41 f0 breq .+16 ; 0xad4 <main+0x1ee> |
{ |
GRN_ON; |
ac4: 80 91 b2 00 lds r24, 0x00B2 |
ac8: 8c 30 cpi r24, 0x0C ; 12 |
aca: 10 f4 brcc .+4 ; 0xad0 <main+0x1ea> |
acc: 97 9a sbi 0x12, 7 ; 18 |
ace: 01 c0 rjmp .+2 ; 0xad2 <main+0x1ec> |
ad0: 97 98 cbi 0x12, 7 ; 18 |
FastADConvert(); |
ad2: 17 d4 rcall .+2094 ; 0x1302 <FastADConvert> |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
} |
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung |
if(CheckDelay(MittelstromTimer)) |
ad4: c6 01 movw r24, r12 |
ad6: a2 d3 rcall .+1860 ; 0x121c <CheckDelay> |
ad8: 88 23 and r24, r24 |
ada: a9 f1 breq .+106 ; 0xb46 <main+0x260> |
{ |
MittelstromTimer = SetDelay(50); // alle 50ms |
adc: 82 e3 ldi r24, 0x32 ; 50 |
ade: 90 e0 ldi r25, 0x00 ; 0 |
ae0: 93 d3 rcall .+1830 ; 0x1208 <SetDelay> |
ae2: 6c 01 movw r12, r24 |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
ae4: 80 91 7d 00 lds r24, 0x007D |
ae8: 48 2f mov r20, r24 |
aea: 50 e0 ldi r21, 0x00 ; 0 |
aec: 20 91 7a 00 lds r18, 0x007A |
af0: 30 91 7b 00 lds r19, 0x007B |
af4: 42 17 cp r20, r18 |
af6: 53 07 cpc r21, r19 |
af8: 10 f4 brcc .+4 ; 0xafe <main+0x218> |
afa: 8f 5f subi r24, 0xFF ; 255 |
afc: 04 c0 rjmp .+8 ; 0xb06 <main+0x220> |
else if(Mittelstrom > Strom) Mittelstrom--; |
afe: 24 17 cp r18, r20 |
b00: 35 07 cpc r19, r21 |
b02: 18 f4 brcc .+6 ; 0xb0a <main+0x224> |
b04: 81 50 subi r24, 0x01 ; 1 |
b06: 80 93 7d 00 sts 0x007D, r24 |
if(Strom > MAX_STROM) MaxPWM -= MaxPWM / 32; |
b0a: 29 3c cpi r18, 0xC9 ; 201 |
b0c: 31 05 cpc r19, r1 |
b0e: 48 f0 brcs .+18 ; 0xb22 <main+0x23c> |
b10: 80 91 64 00 lds r24, 0x0064 |
b14: 98 2f mov r25, r24 |
b16: 92 95 swap r25 |
b18: 96 95 lsr r25 |
b1a: 97 70 andi r25, 0x07 ; 7 |
b1c: 89 1b sub r24, r25 |
b1e: 80 93 64 00 sts 0x0064, r24 |
if((Mittelstrom > LIMIT_STROM))// Strom am Limit? |
b22: 80 91 7d 00 lds r24, 0x007D |
b26: 90 91 64 00 lds r25, 0x0064 |
b2a: 89 37 cpi r24, 0x79 ; 121 |
b2c: 38 f0 brcs .+14 ; 0xb3c <main+0x256> |
{ |
if(MaxPWM) MaxPWM--;// dann die Maximale PWM herunterfahren |
b2e: 99 23 and r25, r25 |
b30: 19 f0 breq .+6 ; 0xb38 <main+0x252> |
b32: 91 50 subi r25, 0x01 ; 1 |
b34: 90 93 64 00 sts 0x0064, r25 |
PORTC |= ROT; |
b38: ab 9a sbi 0x15, 3 ; 21 |
b3a: 05 c0 rjmp .+10 ; 0xb46 <main+0x260> |
} |
else |
{ |
if(MaxPWM < MAX_PWM) MaxPWM++; |
b3c: 9f 3f cpi r25, 0xFF ; 255 |
b3e: 19 f0 breq .+6 ; 0xb46 <main+0x260> |
b40: 9f 5f subi r25, 0xFF ; 255 |
b42: 90 93 64 00 sts 0x0064, r25 |
} |
} |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
b46: ce 01 movw r24, r28 |
b48: 69 d3 rcall .+1746 ; 0x121c <CheckDelay> |
b4a: 88 23 and r24, r24 |
b4c: 91 f0 breq .+36 ; 0xb72 <main+0x28c> |
{ |
DrehzahlMessTimer = SetDelay(10); |
b4e: 8a e0 ldi r24, 0x0A ; 10 |
b50: 90 e0 ldi r25, 0x00 ; 0 |
b52: 5a d3 rcall .+1716 ; 0x1208 <SetDelay> |
b54: ec 01 movw r28, r24 |
SIO_Drehzahl = CntKommutierungen;//(6 * CntKommutierungen) / (POLANZAHL / 2); |
b56: 80 91 89 00 lds r24, 0x0089 |
b5a: 90 91 8a 00 lds r25, 0x008A |
b5e: 90 93 8c 00 sts 0x008C, r25 |
b62: 80 93 8b 00 sts 0x008B, r24 |
CntKommutierungen = 0; |
b66: 10 92 8a 00 sts 0x008A, r1 |
b6a: 10 92 89 00 sts 0x0089, r1 |
// if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
b6e: f0 92 65 00 sts 0x0065, r15 |
} |
} |
} |
#endif |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
b72: 80 91 b3 02 lds r24, 0x02B3 |
b76: 90 91 b4 02 lds r25, 0x02B4 |
b7a: 50 d3 rcall .+1696 ; 0x121c <CheckDelay> |
b7c: 88 23 and r24, r24 |
b7e: 31 f0 breq .+12 ; 0xb8c <main+0x2a6> |
b80: 80 91 8b 00 lds r24, 0x008B |
b84: 90 91 8c 00 lds r25, 0x008C |
b88: 89 2b or r24, r25 |
b8a: 29 f0 breq .+10 ; 0xb96 <main+0x2b0> |
b8c: 80 91 88 00 lds r24, 0x0088 |
b90: 88 23 and r24, r24 |
b92: 09 f4 brne .+2 ; 0xb96 <main+0x2b0> |
b94: 3f cf rjmp .-386 ; 0xa14 <main+0x12e> |
{ |
MotorGestoppt = 1; |
b96: f0 92 63 00 sts 0x0063, r15 |
DISABLE_SENSE_INT; |
b9a: 10 92 b1 00 sts 0x00B1, r1 |
b9e: 43 98 cbi 0x08, 3 ; 8 |
MinUpmPulse = SetDelay(100); |
ba0: 84 e6 ldi r24, 0x64 ; 100 |
ba2: 90 e0 ldi r25, 0x00 ; 0 |
ba4: 31 d3 rcall .+1634 ; 0x1208 <SetDelay> |
ba6: 90 93 b4 02 sts 0x02B4, r25 |
baa: 80 93 b3 02 sts 0x02B3, r24 |
if(MotorAnwerfen) |
bae: 80 91 88 00 lds r24, 0x0088 |
bb2: 88 23 and r24, r24 |
bb4: 09 f4 brne .+2 ; 0xbb8 <main+0x2d2> |
bb6: 2e cf rjmp .-420 ; 0xa14 <main+0x12e> |
{ |
PORTC &= ~ROT; |
bb8: ab 98 cbi 0x15, 3 ; 21 |
Strom_max = 0; |
bba: 10 92 7c 00 sts 0x007C, r1 |
MotorAnwerfen = 0; |
bbe: 10 92 88 00 sts 0x0088, r1 |
if(Anwerfen(10)) |
bc2: 8a e0 ldi r24, 0x0A ; 10 |
bc4: b9 dd rcall .-1166 ; 0x738 <Anwerfen> |
bc6: 88 23 and r24, r24 |
bc8: 09 f4 brne .+2 ; 0xbcc <main+0x2e6> |
bca: 5b c0 rjmp .+182 ; 0xc82 <main+0x39c> |
{ |
GRN_ON; |
bcc: 80 91 b2 00 lds r24, 0x00B2 |
bd0: 8c 30 cpi r24, 0x0C ; 12 |
bd2: 10 f4 brcc .+4 ; 0xbd8 <main+0x2f2> |
bd4: 97 9a sbi 0x12, 7 ; 18 |
bd6: 01 c0 rjmp .+2 ; 0xbda <main+0x2f4> |
bd8: 97 98 cbi 0x12, 7 ; 18 |
MotorGestoppt = 0; |
bda: 10 92 63 00 sts 0x0063, r1 |
Phase--; |
bde: 80 91 af 00 lds r24, 0x00AF |
be2: 81 50 subi r24, 0x01 ; 1 |
be4: 80 93 af 00 sts 0x00AF, r24 |
PWM = 1; |
be8: 70 92 79 00 sts 0x0079, r7 |
bec: 60 92 78 00 sts 0x0078, r6 |
SetPWM(); |
bf0: 36 da rcall .-2964 ; 0x5e <SetPWM> |
SENSE_TOGGLE_INT; |
bf2: 88 b1 in r24, 0x08 ; 8 |
bf4: 8c 7f andi r24, 0xFC ; 252 |
bf6: 88 b9 out 0x08, r24 ; 8 |
ENABLE_SENSE_INT; |
bf8: f0 92 b1 00 sts 0x00B1, r15 |
bfc: 88 b1 in r24, 0x08 ; 8 |
bfe: 8a 60 ori r24, 0x0A ; 10 |
c00: 88 b9 out 0x08, r24 ; 8 |
MinUpmPulse = SetDelay(20); |
c02: 84 e1 ldi r24, 0x14 ; 20 |
c04: 90 e0 ldi r25, 0x00 ; 0 |
c06: 00 d3 rcall .+1536 ; 0x1208 <SetDelay> |
c08: 90 93 b4 02 sts 0x02B4, r25 |
c0c: 80 93 b3 02 sts 0x02B3, r24 |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
c10: 80 91 b3 02 lds r24, 0x02B3 |
c14: 90 91 b4 02 lds r25, 0x02B4 |
c18: 01 d3 rcall .+1538 ; 0x121c <CheckDelay> |
c1a: 88 23 and r24, r24 |
c1c: c9 f3 breq .-14 ; 0xc10 <main+0x32a> |
PWM = 15; |
c1e: 90 92 79 00 sts 0x0079, r9 |
c22: 80 92 78 00 sts 0x0078, r8 |
SetPWM(); |
c26: 1b da rcall .-3018 ; 0x5e <SetPWM> |
MinUpmPulse = SetDelay(300); |
c28: 8c e2 ldi r24, 0x2C ; 44 |
c2a: 91 e0 ldi r25, 0x01 ; 1 |
c2c: ed d2 rcall .+1498 ; 0x1208 <SetDelay> |
c2e: 90 93 b4 02 sts 0x02B4, r25 |
c32: 80 93 b3 02 sts 0x02B3, r24 |
c36: 18 c0 rjmp .+48 ; 0xc68 <main+0x382> |
while(!CheckDelay(MinUpmPulse)) // kurz Durchstarten |
{ |
if(Strom > LIMIT_STROM/2) |
c38: 80 91 7a 00 lds r24, 0x007A |
c3c: 90 91 7b 00 lds r25, 0x007B |
c40: cd 97 sbiw r24, 0x3d ; 61 |
c42: 90 f0 brcs .+36 ; 0xc68 <main+0x382> |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
c44: 82 b3 in r24, 0x12 ; 18 |
c46: 87 7c andi r24, 0xC7 ; 199 |
c48: 82 bb out 0x12, r24 ; 18 |
c4a: 1b bc out 0x2b, r1 ; 43 |
c4c: 1a bc out 0x2a, r1 ; 42 |
c4e: 19 bc out 0x29, r1 ; 41 |
c50: 18 bc out 0x28, r1 ; 40 |
c52: 13 bc out 0x23, r1 ; 35 |
c54: ff bc out 0x2f, r15 ; 47 |
c56: e5 bc out 0x25, r14 ; 37 |
c58: 57 ba out 0x17, r5 ; 23 |
c5a: 88 b3 in r24, 0x18 ; 24 |
c5c: 81 7f andi r24, 0xF1 ; 241 |
c5e: 88 bb out 0x18, r24 ; 24 |
RotBlink(10); |
c60: 8a e0 ldi r24, 0x0A ; 10 |
c62: 0c db rcall .-2536 ; 0x27c <RotBlink> |
MotorAnwerfen = 1; |
c64: f0 92 88 00 sts 0x0088, r15 |
MinUpmPulse = SetDelay(20); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 15; |
SetPWM(); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) // kurz Durchstarten |
c68: 80 91 b3 02 lds r24, 0x02B3 |
c6c: 90 91 b4 02 lds r25, 0x02B4 |
c70: d5 d2 rcall .+1450 ; 0x121c <CheckDelay> |
c72: 88 23 and r24, r24 |
c74: 09 f3 breq .-62 ; 0xc38 <main+0x352> |
RotBlink(10); |
MotorAnwerfen = 1; |
} |
} |
// Drehzahlmessung wieder aufsetzen |
DrehzahlMessTimer = SetDelay(50); |
c76: 82 e3 ldi r24, 0x32 ; 50 |
c78: 90 e0 ldi r25, 0x00 ; 0 |
c7a: c6 d2 rcall .+1420 ; 0x1208 <SetDelay> |
c7c: ec 01 movw r28, r24 |
c7e: 07 e0 ldi r16, 0x07 ; 7 |
c80: c9 ce rjmp .-622 ; 0xa14 <main+0x12e> |
altPhase = 7; |
} |
else if(SollwertErmittlung()) MotorAnwerfen = 1; |
c82: 5e da rcall .-2884 ; 0x140 <SollwertErmittlung> |
c84: 88 23 and r24, r24 |
c86: 09 f4 brne .+2 ; 0xc8a <main+0x3a4> |
c88: c5 ce rjmp .-630 ; 0xa14 <main+0x12e> |
c8a: f0 92 88 00 sts 0x0088, r15 |
c8e: c2 ce rjmp .-636 ; 0xa14 <main+0x12e> |
00000c90 <__vector_13>: |
int Debug_Timer; |
SIGNAL(INT_VEC_TX) |
{ |
c90: 1f 92 push r1 |
c92: 0f 92 push r0 |
c94: 0f b6 in r0, 0x3f ; 63 |
c96: 0f 92 push r0 |
c98: 11 24 eor r1, r1 |
} |
c9a: 0f 90 pop r0 |
c9c: 0f be out 0x3f, r0 ; 63 |
c9e: 0f 90 pop r0 |
ca0: 1f 90 pop r1 |
ca2: 18 95 reti |
00000ca4 <SendUart>: |
void SendUart(void) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!(UCSRA & 0x40)) return; |
ca4: 5e 9b sbis 0x0b, 6 ; 11 |
ca6: 24 c0 rjmp .+72 ; 0xcf0 <SendUart+0x4c> |
if(!UebertragungAbgeschlossen) |
ca8: 80 91 6f 00 lds r24, 0x006F |
cac: 88 23 and r24, r24 |
cae: e1 f4 brne .+56 ; 0xce8 <SendUart+0x44> |
{ |
ptr++; // die [0] wurde schon gesendet |
cb0: 80 91 a0 00 lds r24, 0x00A0 |
cb4: 90 91 a1 00 lds r25, 0x00A1 |
cb8: 01 96 adiw r24, 0x01 ; 1 |
cba: 90 93 a1 00 sts 0x00A1, r25 |
cbe: 80 93 a0 00 sts 0x00A0, r24 |
tmp_tx = SendeBuffer[ptr]; |
cc2: fc 01 movw r30, r24 |
cc4: e8 54 subi r30, 0x48 ; 72 |
cc6: fd 4f sbci r31, 0xFD ; 253 |
cc8: e0 81 ld r30, Z |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
cca: ed 30 cpi r30, 0x0D ; 13 |
ccc: 19 f0 breq .+6 ; 0xcd4 <SendUart+0x30> |
cce: 84 36 cpi r24, 0x64 ; 100 |
cd0: 91 05 cpc r25, r1 |
cd2: 39 f4 brne .+14 ; 0xce2 <SendUart+0x3e> |
{ |
ptr = 0; |
cd4: 10 92 a1 00 sts 0x00A1, r1 |
cd8: 10 92 a0 00 sts 0x00A0, r1 |
UebertragungAbgeschlossen = 1; |
cdc: 81 e0 ldi r24, 0x01 ; 1 |
cde: 80 93 6f 00 sts 0x006F, r24 |
} |
USR |= (1<TXC); |
ce2: 58 9a sbi 0x0b, 0 ; 11 |
UDR = tmp_tx; |
ce4: ec b9 out 0x0c, r30 ; 12 |
ce6: 08 95 ret |
} |
else ptr = 0; |
ce8: 10 92 a1 00 sts 0x00A1, r1 |
cec: 10 92 a0 00 sts 0x00A0, r1 |
cf0: 08 95 ret |
00000cf2 <Decode64>: |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
cf2: 1f 93 push r17 |
cf4: cf 93 push r28 |
cf6: df 93 push r29 |
cf8: ec 01 movw r28, r24 |
cfa: 70 e0 ldi r23, 0x00 ; 0 |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
cfc: a2 2f mov r26, r18 |
cfe: b0 e0 ldi r27, 0x00 ; 0 |
d00: 11 97 sbiw r26, 0x01 ; 1 |
d02: 48 c0 rjmp .+144 ; 0xd94 <Decode64+0xa2> |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
d04: e4 2f mov r30, r20 |
d06: f0 e0 ldi r31, 0x00 ; 0 |
d08: e2 5e subi r30, 0xE2 ; 226 |
d0a: fc 4f sbci r31, 0xFC ; 252 |
d0c: 30 81 ld r19, Z |
b = RxdBuffer[ptrIn++] - '='; |
d0e: 4f 5f subi r20, 0xFF ; 255 |
d10: e4 2f mov r30, r20 |
d12: f0 e0 ldi r31, 0x00 ; 0 |
d14: e2 5e subi r30, 0xE2 ; 226 |
d16: fc 4f sbci r31, 0xFC ; 252 |
d18: 50 81 ld r21, Z |
c = RxdBuffer[ptrIn++] - '='; |
d1a: 4f 5f subi r20, 0xFF ; 255 |
d1c: e4 2f mov r30, r20 |
d1e: f0 e0 ldi r31, 0x00 ; 0 |
d20: e2 5e subi r30, 0xE2 ; 226 |
d22: fc 4f sbci r31, 0xFC ; 252 |
d24: 10 81 ld r17, Z |
d = RxdBuffer[ptrIn++] - '='; |
d26: 4f 5f subi r20, 0xFF ; 255 |
d28: e4 2f mov r30, r20 |
d2a: f0 e0 ldi r31, 0x00 ; 0 |
d2c: e2 5e subi r30, 0xE2 ; 226 |
d2e: fc 4f sbci r31, 0xFC ; 252 |
d30: 20 81 ld r18, Z |
d32: 4f 5f subi r20, 0xFF ; 255 |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
d34: 84 2f mov r24, r20 |
d36: 90 e0 ldi r25, 0x00 ; 0 |
d38: 8a 17 cp r24, r26 |
d3a: 9b 07 cpc r25, r27 |
d3c: 74 f5 brge .+92 ; 0xd9a <Decode64+0xa8> |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
d3e: 5d 53 subi r21, 0x3D ; 61 |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
d40: fe 01 movw r30, r28 |
d42: e7 0f add r30, r23 |
d44: f1 1d adc r31, r1 |
d46: 85 2f mov r24, r21 |
d48: 82 95 swap r24 |
d4a: 8f 70 andi r24, 0x0F ; 15 |
d4c: 3d 53 subi r19, 0x3D ; 61 |
d4e: 33 0f add r19, r19 |
d50: 33 0f add r19, r19 |
d52: 38 2b or r19, r24 |
d54: 30 83 st Z, r19 |
if(len--) ptrOut[ptr++] = y; else break; |
d56: 61 30 cpi r22, 0x01 ; 1 |
d58: 01 f1 breq .+64 ; 0xd9a <Decode64+0xa8> |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d5a: 91 2f mov r25, r17 |
d5c: 9d 53 subi r25, 0x3D ; 61 |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
d5e: 7f 5f subi r23, 0xFF ; 255 |
d60: fe 01 movw r30, r28 |
d62: e7 0f add r30, r23 |
d64: f1 1d adc r31, r1 |
d66: 71 50 subi r23, 0x01 ; 1 |
d68: 52 95 swap r21 |
d6a: 50 7f andi r21, 0xF0 ; 240 |
d6c: 89 2f mov r24, r25 |
d6e: 86 95 lsr r24 |
d70: 86 95 lsr r24 |
d72: 58 2b or r21, r24 |
d74: 50 83 st Z, r21 |
if(len--) ptrOut[ptr++] = z; else break; |
d76: 62 30 cpi r22, 0x02 ; 2 |
d78: 81 f0 breq .+32 ; 0xd9a <Decode64+0xa8> |
d7a: 63 50 subi r22, 0x03 ; 3 |
d7c: 7e 5f subi r23, 0xFE ; 254 |
d7e: fe 01 movw r30, r28 |
d80: e7 0f add r30, r23 |
d82: f1 1d adc r31, r1 |
d84: 92 95 swap r25 |
d86: 99 0f add r25, r25 |
d88: 99 0f add r25, r25 |
d8a: 90 7c andi r25, 0xC0 ; 192 |
d8c: 2d 53 subi r18, 0x3D ; 61 |
d8e: 92 2b or r25, r18 |
d90: 90 83 st Z, r25 |
d92: 7f 5f subi r23, 0xFF ; 255 |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
d94: 66 23 and r22, r22 |
d96: 09 f0 breq .+2 ; 0xd9a <Decode64+0xa8> |
d98: b5 cf rjmp .-150 ; 0xd04 <Decode64+0x12> |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
d9a: df 91 pop r29 |
d9c: cf 91 pop r28 |
d9e: 1f 91 pop r17 |
da0: 08 95 ret |
00000da2 <AddCRC>: |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
da2: dc 01 movw r26, r24 |
da4: 20 e0 ldi r18, 0x00 ; 0 |
da6: 30 e0 ldi r19, 0x00 ; 0 |
da8: 40 e0 ldi r20, 0x00 ; 0 |
daa: 50 e0 ldi r21, 0x00 ; 0 |
dac: 08 c0 rjmp .+16 ; 0xdbe <AddCRC+0x1c> |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
dae: fa 01 movw r30, r20 |
db0: e8 54 subi r30, 0x48 ; 72 |
db2: fd 4f sbci r31, 0xFD ; 253 |
db4: 80 81 ld r24, Z |
db6: 28 0f add r18, r24 |
db8: 31 1d adc r19, r1 |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
dba: 4f 5f subi r20, 0xFF ; 255 |
dbc: 5f 4f sbci r21, 0xFF ; 255 |
dbe: 4a 17 cp r20, r26 |
dc0: 5b 07 cpc r21, r27 |
dc2: a8 f3 brcs .-22 ; 0xdae <AddCRC+0xc> |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
dc4: 3f 70 andi r19, 0x0F ; 15 |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
dc6: c9 01 movw r24, r18 |
dc8: 36 e0 ldi r19, 0x06 ; 6 |
dca: 96 95 lsr r25 |
dcc: 87 95 ror r24 |
dce: 3a 95 dec r19 |
dd0: e1 f7 brne .-8 ; 0xdca <AddCRC+0x28> |
dd2: 83 5c subi r24, 0xC3 ; 195 |
dd4: fd 01 movw r30, r26 |
dd6: e8 54 subi r30, 0x48 ; 72 |
dd8: fd 4f sbci r31, 0xFD ; 253 |
dda: 80 83 st Z, r24 |
ddc: 11 96 adiw r26, 0x01 ; 1 |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
dde: 2f 73 andi r18, 0x3F ; 63 |
de0: 23 5c subi r18, 0xC3 ; 195 |
de2: fd 01 movw r30, r26 |
de4: e8 54 subi r30, 0x48 ; 72 |
de6: fd 4f sbci r31, 0xFD ; 253 |
de8: 20 83 st Z, r18 |
SendeBuffer[i++] = '\r'; |
dea: a7 54 subi r26, 0x47 ; 71 |
dec: bd 4f sbci r27, 0xFD ; 253 |
dee: 8d e0 ldi r24, 0x0D ; 13 |
df0: 8c 93 st X, r24 |
UebertragungAbgeschlossen = 0; |
df2: 10 92 6f 00 sts 0x006F, r1 |
UDR = SendeBuffer[0]; |
df6: 80 91 b8 02 lds r24, 0x02B8 |
dfa: 8c b9 out 0x0c, r24 ; 12 |
} |
dfc: 08 95 ret |
00000dfe <SendOutData>: |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
dfe: cf 93 push r28 |
e00: df 93 push r29 |
e02: ea 01 movw r28, r20 |
e04: b2 2f mov r27, r18 |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
e06: 93 e2 ldi r25, 0x23 ; 35 |
e08: 90 93 b8 02 sts 0x02B8, r25 |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
e0c: 60 93 b9 02 sts 0x02B9, r22 |
SendeBuffer[pt++] = cmd; // Commando |
e10: 80 93 ba 02 sts 0x02BA, r24 |
e14: 63 e0 ldi r22, 0x03 ; 3 |
e16: 70 e0 ldi r23, 0x00 ; 0 |
e18: a0 e0 ldi r26, 0x00 ; 0 |
e1a: 4e c0 rjmp .+156 ; 0xeb8 <SendOutData+0xba> |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
e1c: fe 01 movw r30, r28 |
e1e: ea 0f add r30, r26 |
e20: f1 1d adc r31, r1 |
e22: 90 81 ld r25, Z |
e24: af 5f subi r26, 0xFF ; 255 |
e26: b1 50 subi r27, 0x01 ; 1 |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
e28: 19 f4 brne .+6 ; 0xe30 <SendOutData+0x32> |
e2a: 30 e0 ldi r19, 0x00 ; 0 |
e2c: 40 e0 ldi r20, 0x00 ; 0 |
e2e: 0f c0 rjmp .+30 ; 0xe4e <SendOutData+0x50> |
e30: fe 01 movw r30, r28 |
e32: ea 0f add r30, r26 |
e34: f1 1d adc r31, r1 |
e36: 40 81 ld r20, Z |
e38: af 5f subi r26, 0xFF ; 255 |
e3a: b1 50 subi r27, 0x01 ; 1 |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
e3c: 11 f4 brne .+4 ; 0xe42 <SendOutData+0x44> |
e3e: 30 e0 ldi r19, 0x00 ; 0 |
e40: 06 c0 rjmp .+12 ; 0xe4e <SendOutData+0x50> |
e42: fe 01 movw r30, r28 |
e44: ea 0f add r30, r26 |
e46: f1 1d adc r31, r1 |
e48: 30 81 ld r19, Z |
e4a: af 5f subi r26, 0xFF ; 255 |
e4c: b1 50 subi r27, 0x01 ; 1 |
SendeBuffer[pt++] = '=' + (a >> 2); |
e4e: 89 2f mov r24, r25 |
e50: 86 95 lsr r24 |
e52: 86 95 lsr r24 |
e54: 83 5c subi r24, 0xC3 ; 195 |
e56: fb 01 movw r30, r22 |
e58: e8 54 subi r30, 0x48 ; 72 |
e5a: fd 4f sbci r31, 0xFD ; 253 |
e5c: 80 83 st Z, r24 |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
e5e: 24 2f mov r18, r20 |
e60: 22 95 swap r18 |
e62: 2f 70 andi r18, 0x0F ; 15 |
e64: 89 2f mov r24, r25 |
e66: 90 e0 ldi r25, 0x00 ; 0 |
e68: 83 70 andi r24, 0x03 ; 3 |
e6a: 90 70 andi r25, 0x00 ; 0 |
e6c: 54 e0 ldi r21, 0x04 ; 4 |
e6e: 88 0f add r24, r24 |
e70: 99 1f adc r25, r25 |
e72: 5a 95 dec r21 |
e74: e1 f7 brne .-8 ; 0xe6e <SendOutData+0x70> |
e76: 28 2b or r18, r24 |
e78: 23 5c subi r18, 0xC3 ; 195 |
e7a: fb 01 movw r30, r22 |
e7c: e7 54 subi r30, 0x47 ; 71 |
e7e: fd 4f sbci r31, 0xFD ; 253 |
e80: 20 83 st Z, r18 |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
e82: 84 2f mov r24, r20 |
e84: 90 e0 ldi r25, 0x00 ; 0 |
e86: 8f 70 andi r24, 0x0F ; 15 |
e88: 90 70 andi r25, 0x00 ; 0 |
e8a: 88 0f add r24, r24 |
e8c: 99 1f adc r25, r25 |
e8e: 88 0f add r24, r24 |
e90: 99 1f adc r25, r25 |
e92: 23 2f mov r18, r19 |
e94: 22 95 swap r18 |
e96: 26 95 lsr r18 |
e98: 26 95 lsr r18 |
e9a: 23 70 andi r18, 0x03 ; 3 |
e9c: 28 2b or r18, r24 |
e9e: 23 5c subi r18, 0xC3 ; 195 |
ea0: fb 01 movw r30, r22 |
ea2: e6 54 subi r30, 0x46 ; 70 |
ea4: fd 4f sbci r31, 0xFD ; 253 |
ea6: 20 83 st Z, r18 |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
ea8: 3f 73 andi r19, 0x3F ; 63 |
eaa: 33 5c subi r19, 0xC3 ; 195 |
eac: fb 01 movw r30, r22 |
eae: e5 54 subi r30, 0x45 ; 69 |
eb0: fd 4f sbci r31, 0xFD ; 253 |
eb2: 30 83 st Z, r19 |
eb4: 6c 5f subi r22, 0xFC ; 252 |
eb6: 7f 4f sbci r23, 0xFF ; 255 |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
eb8: bb 23 and r27, r27 |
eba: 09 f0 breq .+2 ; 0xebe <SendOutData+0xc0> |
ebc: af cf rjmp .-162 ; 0xe1c <SendOutData+0x1e> |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
ebe: cb 01 movw r24, r22 |
ec0: 70 df rcall .-288 ; 0xda2 <AddCRC> |
} |
ec2: df 91 pop r29 |
ec4: cf 91 pop r28 |
ec6: 08 95 ret |
00000ec8 <uart_putchar>: |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
ec8: 1f 93 push r17 |
eca: 18 2f mov r17, r24 |
if (c == '\n') |
ecc: 8a 30 cpi r24, 0x0A ; 10 |
ece: 11 f4 brne .+4 ; 0xed4 <uart_putchar+0xc> |
uart_putchar('\r'); |
ed0: 8d e0 ldi r24, 0x0D ; 13 |
ed2: fa df rcall .-12 ; 0xec8 <uart_putchar> |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
ed4: 5d 9b sbis 0x0b, 5 ; 11 |
ed6: fe cf rjmp .-4 ; 0xed4 <uart_putchar+0xc> |
//Ausgabe des Zeichens |
UDR = c; |
ed8: 1c b9 out 0x0c, r17 ; 12 |
return (0); |
} |
eda: 80 e0 ldi r24, 0x00 ; 0 |
edc: 90 e0 ldi r25, 0x00 ; 0 |
ede: 1f 91 pop r17 |
ee0: 08 95 ret |
00000ee2 <__vector_11>: |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
ee2: 1f 92 push r1 |
ee4: 0f 92 push r0 |
ee6: 0f b6 in r0, 0x3f ; 63 |
ee8: 0f 92 push r0 |
eea: 11 24 eor r1, r1 |
eec: 2f 93 push r18 |
eee: 3f 93 push r19 |
ef0: 4f 93 push r20 |
ef2: 5f 93 push r21 |
ef4: 6f 93 push r22 |
ef6: 7f 93 push r23 |
ef8: 8f 93 push r24 |
efa: 9f 93 push r25 |
efc: af 93 push r26 |
efe: bf 93 push r27 |
f00: cf 93 push r28 |
f02: df 93 push r29 |
f04: ef 93 push r30 |
f06: ff 93 push r31 |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
f08: 8c b1 in r24, 0x0c ; 12 |
f0a: 80 93 91 00 sts 0x0091, r24 |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
f0e: 40 91 9b 00 lds r20, 0x009B |
f12: 44 36 cpi r20, 0x64 ; 100 |
f14: 10 f0 brcs .+4 ; 0xf1a <__vector_11+0x38> |
f16: 10 92 9a 00 sts 0x009A, r1 |
if(SioTmp == '\r' && UartState == 2) |
f1a: 50 91 91 00 lds r21, 0x0091 |
f1e: 5d 30 cpi r21, 0x0D ; 13 |
f20: 09 f0 breq .+2 ; 0xf24 <__vector_11+0x42> |
f22: 64 c0 rjmp .+200 ; 0xfec <__vector_11+0x10a> |
f24: 80 91 9a 00 lds r24, 0x009A |
f28: 82 30 cpi r24, 0x02 ; 2 |
f2a: 09 f0 breq .+2 ; 0xf2e <__vector_11+0x4c> |
f2c: 5f c0 rjmp .+190 ; 0xfec <__vector_11+0x10a> |
{ |
UartState = 0; |
f2e: 10 92 9a 00 sts 0x009A, r1 |
crc -= RxdBuffer[buf_ptr-2]; |
f32: a4 2f mov r26, r20 |
f34: b0 e0 ldi r27, 0x00 ; 0 |
f36: fd 01 movw r30, r26 |
f38: e4 5e subi r30, 0xE4 ; 228 |
f3a: fc 4f sbci r31, 0xFC ; 252 |
f3c: 30 81 ld r19, Z |
crc -= RxdBuffer[buf_ptr-1]; |
f3e: ed 01 movw r28, r26 |
f40: c3 5e subi r28, 0xE3 ; 227 |
f42: dc 4f sbci r29, 0xFC ; 252 |
f44: 28 81 ld r18, Y |
crc %= 4096; |
f46: 80 91 9e 00 lds r24, 0x009E |
f4a: 90 91 9f 00 lds r25, 0x009F |
f4e: 83 1b sub r24, r19 |
f50: 91 09 sbc r25, r1 |
f52: 82 1b sub r24, r18 |
f54: 91 09 sbc r25, r1 |
f56: 9f 70 andi r25, 0x0F ; 15 |
f58: 90 93 9f 00 sts 0x009F, r25 |
f5c: 80 93 9e 00 sts 0x009E, r24 |
crc1 = '=' + crc / 64; |
f60: 9c 01 movw r18, r24 |
f62: 66 e0 ldi r22, 0x06 ; 6 |
f64: 36 95 lsr r19 |
f66: 27 95 ror r18 |
f68: 6a 95 dec r22 |
f6a: e1 f7 brne .-8 ; 0xf64 <__vector_11+0x82> |
f6c: 23 5c subi r18, 0xC3 ; 195 |
f6e: 20 93 9d 00 sts 0x009D, r18 |
crc2 = '=' + crc % 64; |
f72: 98 2f mov r25, r24 |
f74: 9f 73 andi r25, 0x3F ; 63 |
f76: 93 5c subi r25, 0xC3 ; 195 |
f78: 90 93 9c 00 sts 0x009C, r25 |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; }; |
f7c: 80 81 ld r24, Z |
f7e: 28 17 cp r18, r24 |
f80: 09 f0 breq .+2 ; 0xf84 <__vector_11+0xa2> |
f82: 80 c0 rjmp .+256 ; 0x1084 <__vector_11+0x1a2> |
f84: 88 81 ld r24, Y |
f86: 98 17 cp r25, r24 |
f88: 09 f0 breq .+2 ; 0xf8c <__vector_11+0xaa> |
f8a: 7c c0 rjmp .+248 ; 0x1084 <__vector_11+0x1a2> |
if(CrcOkay) // Datensatz schon verarbeitet |
{ |
//NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
f8c: 40 93 99 00 sts 0x0099, r20 |
RxdBuffer[buf_ptr] = '\r'; |
f90: a2 5e subi r26, 0xE2 ; 226 |
f92: bc 4f sbci r27, 0xFC ; 252 |
f94: 5c 93 st X, r21 |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
f96: 80 91 20 03 lds r24, 0x0320 |
f9a: 82 35 cpi r24, 0x52 ; 82 |
f9c: 49 f4 brne .+18 ; 0xfb0 <__vector_11+0xce> |
f9e: 2c e0 ldi r18, 0x0C ; 12 |
fa0: 88 e1 ldi r24, 0x18 ; 24 |
fa2: 90 e0 ldi r25, 0x00 ; 0 |
fa4: 0f b6 in r0, 0x3f ; 63 |
fa6: f8 94 cli |
fa8: a8 95 wdr |
faa: 81 bd out 0x21, r24 ; 33 |
fac: 0f be out 0x3f, r0 ; 63 |
fae: 21 bd out 0x21, r18 ; 33 |
uart_putchar(RxdBuffer[2]); |
fb0: 80 91 20 03 lds r24, 0x0320 |
fb4: 89 df rcall .-238 ; 0xec8 <uart_putchar> |
if (RxdBuffer[2] == 't') // Motortest |
fb6: 80 91 20 03 lds r24, 0x0320 |
fba: 84 37 cpi r24, 0x74 ; 116 |
fbc: 09 f0 breq .+2 ; 0xfc0 <__vector_11+0xde> |
fbe: 62 c0 rjmp .+196 ; 0x1084 <__vector_11+0x1a2> |
{ Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
fc0: 20 91 99 00 lds r18, 0x0099 |
fc4: 83 e9 ldi r24, 0x93 ; 147 |
fc6: 90 e0 ldi r25, 0x00 ; 0 |
fc8: 66 e0 ldi r22, 0x06 ; 6 |
fca: 43 e0 ldi r20, 0x03 ; 3 |
fcc: 92 de rcall .-732 ; 0xcf2 <Decode64> |
SIO_Sollwert = MotorTest[MotorAdresse - 1]; |
fce: e0 91 66 00 lds r30, 0x0066 |
fd2: f0 e0 ldi r31, 0x00 ; 0 |
fd4: ee 56 subi r30, 0x6E ; 110 |
fd6: ff 4f sbci r31, 0xFF ; 255 |
fd8: 80 81 ld r24, Z |
fda: 80 93 90 00 sts 0x0090, r24 |
SIO_Timeout = 500; // werte für 500ms gültig |
fde: 84 ef ldi r24, 0xF4 ; 244 |
fe0: 91 e0 ldi r25, 0x01 ; 1 |
fe2: 90 93 83 00 sts 0x0083, r25 |
fe6: 80 93 82 00 sts 0x0082, r24 |
fea: 4c c0 rjmp .+152 ; 0x1084 <__vector_11+0x1a2> |
} |
} |
} |
else |
switch(UartState) |
fec: 80 91 9a 00 lds r24, 0x009A |
ff0: 81 30 cpi r24, 0x01 ; 1 |
ff2: f9 f0 breq .+62 ; 0x1032 <__vector_11+0x150> |
ff4: 81 30 cpi r24, 0x01 ; 1 |
ff6: 20 f0 brcs .+8 ; 0x1000 <__vector_11+0x11e> |
ff8: 82 30 cpi r24, 0x02 ; 2 |
ffa: 09 f0 breq .+2 ; 0xffe <__vector_11+0x11c> |
ffc: 41 c0 rjmp .+130 ; 0x1080 <__vector_11+0x19e> |
ffe: 24 c0 rjmp .+72 ; 0x1048 <__vector_11+0x166> |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
1000: 80 91 91 00 lds r24, 0x0091 |
1004: 83 32 cpi r24, 0x23 ; 35 |
1006: 39 f4 brne .+14 ; 0x1016 <__vector_11+0x134> |
1008: 80 91 92 00 lds r24, 0x0092 |
100c: 88 23 and r24, r24 |
100e: 19 f4 brne .+6 ; 0x1016 <__vector_11+0x134> |
1010: 81 e0 ldi r24, 0x01 ; 1 |
1012: 80 93 9a 00 sts 0x009A, r24 |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
1016: 80 91 91 00 lds r24, 0x0091 |
101a: 80 93 1e 03 sts 0x031E, r24 |
101e: 81 e0 ldi r24, 0x01 ; 1 |
1020: 80 93 9b 00 sts 0x009B, r24 |
crc = SioTmp; |
1024: 80 91 91 00 lds r24, 0x0091 |
1028: 80 93 9e 00 sts 0x009E, r24 |
102c: 10 92 9f 00 sts 0x009F, r1 |
1030: 29 c0 rjmp .+82 ; 0x1084 <__vector_11+0x1a2> |
break; |
case 1: // Adresse auswerten |
UartState++; |
1032: 82 e0 ldi r24, 0x02 ; 2 |
1034: 80 93 9a 00 sts 0x009A, r24 |
RxdBuffer[buf_ptr++] = SioTmp; |
1038: e4 2f mov r30, r20 |
103a: f0 e0 ldi r31, 0x00 ; 0 |
103c: 80 91 91 00 lds r24, 0x0091 |
1040: e2 5e subi r30, 0xE2 ; 226 |
1042: fc 4f sbci r31, 0xFC ; 252 |
1044: 80 83 st Z, r24 |
1046: 09 c0 rjmp .+18 ; 0x105a <__vector_11+0x178> |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
1048: e4 2f mov r30, r20 |
104a: f0 e0 ldi r31, 0x00 ; 0 |
104c: 80 91 91 00 lds r24, 0x0091 |
1050: e2 5e subi r30, 0xE2 ; 226 |
1052: fc 4f sbci r31, 0xFC ; 252 |
1054: 80 83 st Z, r24 |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
1056: 44 36 cpi r20, 0x64 ; 100 |
1058: 20 f4 brcc .+8 ; 0x1062 <__vector_11+0x180> |
105a: 4f 5f subi r20, 0xFF ; 255 |
105c: 40 93 9b 00 sts 0x009B, r20 |
1060: 02 c0 rjmp .+4 ; 0x1066 <__vector_11+0x184> |
else UartState = 0; |
1062: 10 92 9a 00 sts 0x009A, r1 |
crc += SioTmp; |
1066: 20 91 91 00 lds r18, 0x0091 |
106a: 80 91 9e 00 lds r24, 0x009E |
106e: 90 91 9f 00 lds r25, 0x009F |
1072: 82 0f add r24, r18 |
1074: 91 1d adc r25, r1 |
1076: 90 93 9f 00 sts 0x009F, r25 |
107a: 80 93 9e 00 sts 0x009E, r24 |
107e: 02 c0 rjmp .+4 ; 0x1084 <__vector_11+0x1a2> |
break; |
default: |
UartState = 0; |
1080: 10 92 9a 00 sts 0x009A, r1 |
break; |
} |
#endif |
}; |
1084: ff 91 pop r31 |
1086: ef 91 pop r30 |
1088: df 91 pop r29 |
108a: cf 91 pop r28 |
108c: bf 91 pop r27 |
108e: af 91 pop r26 |
1090: 9f 91 pop r25 |
1092: 8f 91 pop r24 |
1094: 7f 91 pop r23 |
1096: 6f 91 pop r22 |
1098: 5f 91 pop r21 |
109a: 4f 91 pop r20 |
109c: 3f 91 pop r19 |
109e: 2f 91 pop r18 |
10a0: 0f 90 pop r0 |
10a2: 0f be out 0x3f, r0 ; 63 |
10a4: 0f 90 pop r0 |
10a6: 1f 90 pop r1 |
10a8: 18 95 reti |
000010aa <WriteProgramData>: |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
} |
10aa: 08 95 ret |
000010ac <DatenUebertragung>: |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen)) // im Singlestep-Betrieb in jedem Schtitt senden |
10ac: 80 91 1c 03 lds r24, 0x031C |
10b0: 90 91 1d 03 lds r25, 0x031D |
10b4: b3 d0 rcall .+358 ; 0x121c <CheckDelay> |
10b6: 88 23 and r24, r24 |
10b8: 91 f0 breq .+36 ; 0x10de <DatenUebertragung+0x32> |
10ba: 80 91 6f 00 lds r24, 0x006F |
10be: 88 23 and r24, r24 |
10c0: 71 f0 breq .+28 ; 0x10de <DatenUebertragung+0x32> |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
10c2: 84 e4 ldi r24, 0x44 ; 68 |
10c4: 60 91 b7 02 lds r22, 0x02B7 |
10c8: 42 e8 ldi r20, 0x82 ; 130 |
10ca: 53 e0 ldi r21, 0x03 ; 3 |
10cc: 22 e1 ldi r18, 0x12 ; 18 |
10ce: 97 de rcall .-722 ; 0xdfe <SendOutData> |
Debug_Timer = SetDelay(50); // Sendeintervall |
10d0: 82 e3 ldi r24, 0x32 ; 50 |
10d2: 90 e0 ldi r25, 0x00 ; 0 |
10d4: 99 d0 rcall .+306 ; 0x1208 <SetDelay> |
10d6: 90 93 1d 03 sts 0x031D, r25 |
10da: 80 93 1c 03 sts 0x031C, r24 |
10de: 08 95 ret |
000010e0 <UART_Init>: |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
10e0: 88 e1 ldi r24, 0x18 ; 24 |
10e2: 8a b9 out 0x0a, r24 ; 10 |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
10e4: 59 9a sbi 0x0b, 1 ; 11 |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); // serieller Empfangsinterrupt |
10e6: 57 9a sbi 0x0a, 7 ; 10 |
// TX-Interrupt Freigabe |
// UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR= (SYSCLK / (BAUD_RATE * 8L) -1 ); |
10e8: 80 e1 ldi r24, 0x10 ; 16 |
10ea: 89 b9 out 0x09, r24 ; 9 |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
10ec: 84 e6 ldi r24, 0x64 ; 100 |
10ee: 97 e0 ldi r25, 0x07 ; 7 |
10f0: 60 e0 ldi r22, 0x00 ; 0 |
10f2: 70 e0 ldi r23, 0x00 ; 0 |
10f4: f7 d3 rcall .+2030 ; 0x18e4 <fdevopen> |
Debug_Timer = SetDelay(200); |
10f6: 88 ec ldi r24, 0xC8 ; 200 |
10f8: 90 e0 ldi r25, 0x00 ; 0 |
10fa: 86 d0 rcall .+268 ; 0x1208 <SetDelay> |
10fc: 90 93 1d 03 sts 0x031D, r25 |
1100: 80 93 1c 03 sts 0x031C, r24 |
// Version beim Start ausgeben (nicht schön, aber geht... ) |
uart_putchar ('\n');uart_putchar ('B');uart_putchar ('L');uart_putchar (':'); |
1104: 8a e0 ldi r24, 0x0A ; 10 |
1106: e0 de rcall .-576 ; 0xec8 <uart_putchar> |
1108: 82 e4 ldi r24, 0x42 ; 66 |
110a: de de rcall .-580 ; 0xec8 <uart_putchar> |
110c: 8c e4 ldi r24, 0x4C ; 76 |
110e: dc de rcall .-584 ; 0xec8 <uart_putchar> |
1110: 8a e3 ldi r24, 0x3A ; 58 |
1112: da de rcall .-588 ; 0xec8 <uart_putchar> |
uart_putchar ('V');uart_putchar (0x30 + VERSION_HAUPTVERSION);uart_putchar ('.');uart_putchar (0x30 + VERSION_NEBENVERSION/10); uart_putchar (0x30 + VERSION_NEBENVERSION%10); |
1114: 86 e5 ldi r24, 0x56 ; 86 |
1116: d8 de rcall .-592 ; 0xec8 <uart_putchar> |
1118: 80 e3 ldi r24, 0x30 ; 48 |
111a: d6 de rcall .-596 ; 0xec8 <uart_putchar> |
111c: 8e e2 ldi r24, 0x2E ; 46 |
111e: d4 de rcall .-600 ; 0xec8 <uart_putchar> |
1120: 84 e3 ldi r24, 0x34 ; 52 |
1122: d2 de rcall .-604 ; 0xec8 <uart_putchar> |
1124: 81 e3 ldi r24, 0x31 ; 49 |
1126: d0 de rcall .-608 ; 0xec8 <uart_putchar> |
uart_putchar ('\n');uart_putchar('H');uart_putchar('W');uart_putchar (':');uart_putchar('1');uart_putchar('.');uart_putchar ((0x30-10) + HwVersion); |
1128: 8a e0 ldi r24, 0x0A ; 10 |
112a: ce de rcall .-612 ; 0xec8 <uart_putchar> |
112c: 88 e4 ldi r24, 0x48 ; 72 |
112e: cc de rcall .-616 ; 0xec8 <uart_putchar> |
1130: 87 e5 ldi r24, 0x57 ; 87 |
1132: ca de rcall .-620 ; 0xec8 <uart_putchar> |
1134: 8a e3 ldi r24, 0x3A ; 58 |
1136: c8 de rcall .-624 ; 0xec8 <uart_putchar> |
1138: 81 e3 ldi r24, 0x31 ; 49 |
113a: c6 de rcall .-628 ; 0xec8 <uart_putchar> |
113c: 8e e2 ldi r24, 0x2E ; 46 |
113e: c4 de rcall .-632 ; 0xec8 <uart_putchar> |
1140: 80 91 b2 00 lds r24, 0x00B2 |
1144: 8a 5d subi r24, 0xDA ; 218 |
1146: c0 de rcall .-640 ; 0xec8 <uart_putchar> |
uart_putchar ('\n');uart_putchar ('A');uart_putchar ('D');uart_putchar ('R'); uart_putchar (':'); uart_putchar (0x30 + MotorAdresse); |
1148: 8a e0 ldi r24, 0x0A ; 10 |
114a: be de rcall .-644 ; 0xec8 <uart_putchar> |
114c: 81 e4 ldi r24, 0x41 ; 65 |
114e: bc de rcall .-648 ; 0xec8 <uart_putchar> |
1150: 84 e4 ldi r24, 0x44 ; 68 |
1152: ba de rcall .-652 ; 0xec8 <uart_putchar> |
1154: 82 e5 ldi r24, 0x52 ; 82 |
1156: b8 de rcall .-656 ; 0xec8 <uart_putchar> |
1158: 8a e3 ldi r24, 0x3A ; 58 |
115a: b6 de rcall .-660 ; 0xec8 <uart_putchar> |
115c: 80 91 66 00 lds r24, 0x0066 |
1160: 80 5d subi r24, 0xD0 ; 208 |
1162: b2 de rcall .-668 ; 0xec8 <uart_putchar> |
} |
1164: 08 95 ret |
00001166 <__vector_9>: |
T0_RISING_EDGE = 7 |
}; |
SIGNAL(SIG_OVERFLOW0) |
{ |
1166: 1f 92 push r1 |
1168: 0f 92 push r0 |
116a: 0f b6 in r0, 0x3f ; 63 |
116c: 0f 92 push r0 |
116e: 11 24 eor r1, r1 |
1170: 8f 93 push r24 |
1172: 9f 93 push r25 |
static unsigned char cnt; |
Timer0Overflow++; |
1174: 80 91 94 03 lds r24, 0x0394 |
1178: 8f 5f subi r24, 0xFF ; 255 |
117a: 80 93 94 03 sts 0x0394, r24 |
if(!cnt--) |
117e: 80 91 a4 00 lds r24, 0x00A4 |
1182: 81 50 subi r24, 0x01 ; 1 |
1184: 80 93 a4 00 sts 0x00A4, r24 |
1188: 8f 5f subi r24, 0xFF ; 255 |
118a: 71 f5 brne .+92 ; 0x11e8 <__vector_9+0x82> |
{ |
cnt = 3; |
118c: 83 e0 ldi r24, 0x03 ; 3 |
118e: 80 93 a4 00 sts 0x00A4, r24 |
CountMilliseconds += 1; |
1192: 80 91 a2 00 lds r24, 0x00A2 |
1196: 90 91 a3 00 lds r25, 0x00A3 |
119a: 01 96 adiw r24, 0x01 ; 1 |
119c: 90 93 a3 00 sts 0x00A3, r25 |
11a0: 80 93 a2 00 sts 0x00A2, r24 |
if(I2C_Timeout) I2C_Timeout--; |
11a4: 80 91 80 00 lds r24, 0x0080 |
11a8: 90 91 81 00 lds r25, 0x0081 |
11ac: 00 97 sbiw r24, 0x00 ; 0 |
11ae: 29 f0 breq .+10 ; 0x11ba <__vector_9+0x54> |
11b0: 01 97 sbiw r24, 0x01 ; 1 |
11b2: 90 93 81 00 sts 0x0081, r25 |
11b6: 80 93 80 00 sts 0x0080, r24 |
if(PPM_Timeout) PPM_Timeout--; else anz_ppm_werte = 0; |
11ba: 80 91 a8 00 lds r24, 0x00A8 |
11be: 88 23 and r24, r24 |
11c0: 31 f0 breq .+12 ; 0x11ce <__vector_9+0x68> |
11c2: 80 91 a8 00 lds r24, 0x00A8 |
11c6: 81 50 subi r24, 0x01 ; 1 |
11c8: 80 93 a8 00 sts 0x00A8, r24 |
11cc: 02 c0 rjmp .+4 ; 0x11d2 <__vector_9+0x6c> |
11ce: 10 92 a9 00 sts 0x00A9, r1 |
if(SIO_Timeout) SIO_Timeout--; |
11d2: 80 91 82 00 lds r24, 0x0082 |
11d6: 90 91 83 00 lds r25, 0x0083 |
11da: 00 97 sbiw r24, 0x00 ; 0 |
11dc: 29 f0 breq .+10 ; 0x11e8 <__vector_9+0x82> |
11de: 01 97 sbiw r24, 0x01 ; 1 |
11e0: 90 93 83 00 sts 0x0083, r25 |
11e4: 80 93 82 00 sts 0x0082, r24 |
} |
} |
11e8: 9f 91 pop r25 |
11ea: 8f 91 pop r24 |
11ec: 0f 90 pop r0 |
11ee: 0f be out 0x3f, r0 ; 63 |
11f0: 0f 90 pop r0 |
11f2: 1f 90 pop r1 |
11f4: 18 95 reti |
000011f6 <Timer0_Init>: |
void Timer0_Init(void) |
{ |
TCCR0 = TIMER_TEILER; |
11f6: 82 e0 ldi r24, 0x02 ; 2 |
11f8: 83 bf out 0x33, r24 ; 51 |
// TCNT0 = -TIMER_RELOAD_VALUE; // reload |
TIM0_START; |
11fa: 89 b7 in r24, 0x39 ; 57 |
11fc: 81 60 ori r24, 0x01 ; 1 |
11fe: 89 bf out 0x39, r24 ; 57 |
TIMER2_INT_ENABLE; |
1200: 89 b7 in r24, 0x39 ; 57 |
1202: 80 64 ori r24, 0x40 ; 64 |
1204: 89 bf out 0x39, r24 ; 57 |
} |
1206: 08 95 ret |
00001208 <SetDelay>: |
unsigned int SetDelay(unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
1208: 20 91 a2 00 lds r18, 0x00A2 |
120c: 30 91 a3 00 lds r19, 0x00A3 |
1210: 21 50 subi r18, 0x01 ; 1 |
1212: 30 40 sbci r19, 0x00 ; 0 |
1214: 28 0f add r18, r24 |
1216: 39 1f adc r19, r25 |
} |
1218: c9 01 movw r24, r18 |
121a: 08 95 ret |
0000121c <CheckDelay>: |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
121c: 20 91 a2 00 lds r18, 0x00A2 |
1220: 30 91 a3 00 lds r19, 0x00A3 |
1224: 82 1b sub r24, r18 |
1226: 93 0b sbc r25, r19 |
1228: 80 70 andi r24, 0x00 ; 0 |
122a: 90 78 andi r25, 0x80 ; 128 |
} |
122c: 89 2f mov r24, r25 |
122e: 08 95 ret |
00001230 <Delay_ms>: |
} |
unsigned int SetDelay(unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
1230: 20 91 a2 00 lds r18, 0x00A2 |
1234: 30 91 a3 00 lds r19, 0x00A3 |
1238: 21 50 subi r18, 0x01 ; 1 |
123a: 30 40 sbci r19, 0x00 ; 0 |
123c: 28 0f add r18, r24 |
123e: 39 1f adc r19, r25 |
} |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
1240: 80 91 a2 00 lds r24, 0x00A2 |
1244: 90 91 a3 00 lds r25, 0x00A3 |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
1248: a9 01 movw r20, r18 |
124a: 48 1b sub r20, r24 |
124c: 59 0b sbc r21, r25 |
124e: ca 01 movw r24, r20 |
1250: 80 70 andi r24, 0x00 ; 0 |
1252: 90 78 andi r25, 0x80 ; 128 |
1254: 99 23 and r25, r25 |
1256: a1 f3 breq .-24 ; 0x1240 <Delay_ms+0x10> |
} |
1258: 08 95 ret |
0000125a <ADC_Init>: |
//############################################################################ |
//Init ADC |
void ADC_Init(void) |
//############################################################################ |
{ |
ADCSRA = 0xA6; // Free Run & 1MHZ |
125a: 86 ea ldi r24, 0xA6 ; 166 |
125c: 86 b9 out 0x06, r24 ; 6 |
ADMUX = 7 | IntRef; // Kanal 7 |
125e: 80 91 8d 00 lds r24, 0x008D |
1262: 87 60 ori r24, 0x07 ; 7 |
1264: 87 b9 out 0x07, r24 ; 7 |
ADCSRA |= 0x40; // Start |
1266: 36 9a sbi 0x06, 6 ; 6 |
} |
1268: 08 95 ret |
0000126a <AdConvert>: |
void AdConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
126a: 27 b1 in r18, 0x07 ; 7 |
ADMUX = 0x06 | IntRef; // Kanal 6 |
126c: 90 91 8d 00 lds r25, 0x008D |
1270: 96 60 ori r25, 0x06 ; 6 |
1272: 97 b9 out 0x07, r25 ; 7 |
SFIOR = 0x00; // Analog Comperator aus |
1274: 10 be out 0x30, r1 ; 48 |
ADCSRA = 0xD3; // Converter ein, single |
1276: 83 ed ldi r24, 0xD3 ; 211 |
1278: 86 b9 out 0x06, r24 ; 6 |
ADCSRA |= 0x10; // Ready löschen |
127a: 34 9a sbi 0x06, 4 ; 6 |
ADMUX = 0x06 | IntRef; // Kanal 6 |
127c: 97 b9 out 0x07, r25 ; 7 |
ADCSRA |= 0x40; // Start |
127e: 36 9a sbi 0x06, 6 ; 6 |
while (((ADCSRA & 0x10) == 0)); |
1280: 34 9b sbis 0x06, 4 ; 6 |
1282: fe cf rjmp .-4 ; 0x1280 <AdConvert+0x16> |
ADMUX = sense; // zurück auf den Sense-Kanal |
1284: 27 b9 out 0x07, r18 ; 7 |
i = ADCW * 4; |
1286: 84 b1 in r24, 0x04 ; 4 |
1288: 95 b1 in r25, 0x05 ; 5 |
// if(i > 300) i = 300; |
Strom = (i + Strom * 7) / 8; |
128a: 20 91 7a 00 lds r18, 0x007A |
128e: 30 91 7b 00 lds r19, 0x007B |
1292: a9 01 movw r20, r18 |
1294: 63 e0 ldi r22, 0x03 ; 3 |
1296: 44 0f add r20, r20 |
1298: 55 1f adc r21, r21 |
129a: 6a 95 dec r22 |
129c: e1 f7 brne .-8 ; 0x1296 <AdConvert+0x2c> |
129e: 42 1b sub r20, r18 |
12a0: 53 0b sbc r21, r19 |
12a2: 88 0f add r24, r24 |
12a4: 99 1f adc r25, r25 |
12a6: 88 0f add r24, r24 |
12a8: 99 1f adc r25, r25 |
12aa: 48 0f add r20, r24 |
12ac: 59 1f adc r21, r25 |
12ae: 83 e0 ldi r24, 0x03 ; 3 |
12b0: 56 95 lsr r21 |
12b2: 47 95 ror r20 |
12b4: 8a 95 dec r24 |
12b6: e1 f7 brne .-8 ; 0x12b0 <AdConvert+0x46> |
12b8: 50 93 7b 00 sts 0x007B, r21 |
12bc: 40 93 7a 00 sts 0x007A, r20 |
if (Strom_max < Strom) Strom_max = Strom; |
12c0: 80 91 7c 00 lds r24, 0x007C |
12c4: 90 e0 ldi r25, 0x00 ; 0 |
12c6: 84 17 cp r24, r20 |
12c8: 95 07 cpc r25, r21 |
12ca: 10 f4 brcc .+4 ; 0x12d0 <AdConvert+0x66> |
12cc: 40 93 7c 00 sts 0x007C, r20 |
ADCSRA = 0x00; |
12d0: 16 b8 out 0x06, r1 ; 6 |
SFIOR = 0x08; // Analog Comperator ein |
12d2: 88 e0 ldi r24, 0x08 ; 8 |
12d4: 80 bf out 0x30, r24 ; 48 |
} |
12d6: 08 95 ret |
000012d8 <MessAD>: |
//Strom Analogwerte lesen |
unsigned int MessAD(unsigned char channel) |
//############################################################################ |
{ |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
12d8: 27 b1 in r18, 0x07 ; 7 |
channel |= IntRef; |
12da: 90 91 8d 00 lds r25, 0x008D |
12de: 98 2b or r25, r24 |
ADMUX = channel; // Kanal 6 |
12e0: 97 b9 out 0x07, r25 ; 7 |
SFIOR = 0x00; // Analog Comperator aus |
12e2: 10 be out 0x30, r1 ; 48 |
ADCSRA = 0xD3; // Converter ein, single |
12e4: 83 ed ldi r24, 0xD3 ; 211 |
12e6: 86 b9 out 0x06, r24 ; 6 |
ADCSRA |= 0x10; // Ready löschen |
12e8: 34 9a sbi 0x06, 4 ; 6 |
ADMUX = channel; // Kanal 6 |
12ea: 97 b9 out 0x07, r25 ; 7 |
ADCSRA |= 0x40; // Start |
12ec: 36 9a sbi 0x06, 6 ; 6 |
while (((ADCSRA & 0x10) == 0)); |
12ee: 34 9b sbis 0x06, 4 ; 6 |
12f0: fe cf rjmp .-4 ; 0x12ee <MessAD+0x16> |
ADMUX = sense; // zurück auf den Sense-Kanal |
12f2: 27 b9 out 0x07, r18 ; 7 |
ADCSRA = 0x00; |
12f4: 16 b8 out 0x06, r1 ; 6 |
SFIOR = 0x08; // Analog Comperator ein |
12f6: 88 e0 ldi r24, 0x08 ; 8 |
12f8: 80 bf out 0x30, r24 ; 48 |
return(ADCW); |
12fa: 24 b1 in r18, 0x04 ; 4 |
12fc: 35 b1 in r19, 0x05 ; 5 |
} |
12fe: c9 01 movw r24, r18 |
1300: 08 95 ret |
00001302 <FastADConvert>: |
//Strom Analogwerte lesen |
void FastADConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
i = MessAD(6) * 4; |
1302: 86 e0 ldi r24, 0x06 ; 6 |
1304: e9 df rcall .-46 ; 0x12d8 <MessAD> |
1306: 9c 01 movw r18, r24 |
1308: 22 0f add r18, r18 |
130a: 33 1f adc r19, r19 |
130c: 22 0f add r18, r18 |
130e: 33 1f adc r19, r19 |
1310: 29 3c cpi r18, 0xC9 ; 201 |
1312: 31 05 cpc r19, r1 |
1314: 10 f0 brcs .+4 ; 0x131a <FastADConvert+0x18> |
1316: 28 ec ldi r18, 0xC8 ; 200 |
1318: 30 e0 ldi r19, 0x00 ; 0 |
// i = ADCW * 4; |
if(i > 200) i = 200; |
Strom = i;//(i + Strom * 1) / 2; |
131a: 30 93 7b 00 sts 0x007B, r19 |
131e: 20 93 7a 00 sts 0x007A, r18 |
if (Strom_max < Strom) Strom_max = Strom; |
1322: 80 91 7c 00 lds r24, 0x007C |
1326: 90 e0 ldi r25, 0x00 ; 0 |
1328: 82 17 cp r24, r18 |
132a: 93 07 cpc r25, r19 |
132c: 10 f4 brcc .+4 ; 0x1332 <FastADConvert+0x30> |
132e: 20 93 7c 00 sts 0x007C, r18 |
ADCSRA = 0x00; |
1332: 16 b8 out 0x06, r1 ; 6 |
SFIOR = 0x08; // Analog Comperator ein |
1334: 88 e0 ldi r24, 0x08 ; 8 |
1336: 80 bf out 0x30, r24 ; 48 |
} |
1338: 08 95 ret |
0000133a <InitPPM>: |
//############################################################################ |
// |
void InitPPM(void) |
//############################################################################ |
{ |
TCCR1B |= (1<<ICES1)|(1<<ICNC1); |
133a: 8e b5 in r24, 0x2e ; 46 |
133c: 80 6c ori r24, 0xC0 ; 192 |
133e: 8e bd out 0x2e, r24 ; 46 |
ICP_POS_FLANKE; |
1340: 8e b5 in r24, 0x2e ; 46 |
1342: 80 64 ori r24, 0x40 ; 64 |
1344: 8e bd out 0x2e, r24 ; 46 |
ICP_INT_ENABLE; |
1346: 89 b7 in r24, 0x39 ; 57 |
1348: 80 62 ori r24, 0x20 ; 32 |
134a: 89 bf out 0x39, r24 ; 57 |
TIMER1_INT_ENABLE; |
134c: 89 b7 in r24, 0x39 ; 57 |
134e: 84 60 ori r24, 0x04 ; 4 |
1350: 89 bf out 0x39, r24 ; 57 |
} |
1352: 08 95 ret |
00001354 <__vector_8>: |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW1) |
//############################################################################ |
{ |
1354: 1f 92 push r1 |
1356: 0f 92 push r0 |
1358: 0f b6 in r0, 0x3f ; 63 |
135a: 0f 92 push r0 |
135c: 11 24 eor r1, r1 |
135e: 8f 93 push r24 |
Timer1Overflow++; |
1360: 80 91 a7 00 lds r24, 0x00A7 |
1364: 8f 5f subi r24, 0xFF ; 255 |
1366: 80 93 a7 00 sts 0x00A7, r24 |
} |
136a: 8f 91 pop r24 |
136c: 0f 90 pop r0 |
136e: 0f be out 0x3f, r0 ; 63 |
1370: 0f 90 pop r0 |
1372: 1f 90 pop r1 |
1374: 18 95 reti |
00001376 <__vector_5>: |
//############################################################################ |
// |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
1376: 1f 92 push r1 |
1378: 0f 92 push r0 |
137a: 0f b6 in r0, 0x3f ; 63 |
137c: 0f 92 push r0 |
137e: 11 24 eor r1, r1 |
1380: 2f 93 push r18 |
1382: 3f 93 push r19 |
1384: 4f 93 push r20 |
1386: 5f 93 push r21 |
1388: 8f 93 push r24 |
138a: 9f 93 push r25 |
static unsigned int tim_alt; |
static unsigned int ppm; |
if(TCCR1B & (1<<ICES1)) // Positive Flanke |
138c: 0e b4 in r0, 0x2e ; 46 |
138e: 06 fe sbrs r0, 6 |
1390: 0f c0 rjmp .+30 ; 0x13b0 <__vector_5+0x3a> |
{ |
Timer1Overflow = 0; |
1392: 10 92 a7 00 sts 0x00A7, r1 |
tim_alt = ICR1; |
1396: 86 b5 in r24, 0x26 ; 38 |
1398: 97 b5 in r25, 0x27 ; 39 |
139a: 90 93 ad 00 sts 0x00AD, r25 |
139e: 80 93 ac 00 sts 0x00AC, r24 |
ICP_NEG_FLANKE; |
13a2: 8e b5 in r24, 0x2e ; 46 |
13a4: 8f 7b andi r24, 0xBF ; 191 |
13a6: 8e bd out 0x2e, r24 ; 46 |
PPM_Timeout = 100; |
13a8: 84 e6 ldi r24, 0x64 ; 100 |
13aa: 80 93 a8 00 sts 0x00A8, r24 |
13ae: 6f c0 rjmp .+222 ; 0x148e <__vector_5+0x118> |
} |
else // Negative Flanke |
{ |
ICP_POS_FLANKE; |
13b0: 8e b5 in r24, 0x2e ; 46 |
13b2: 80 64 ori r24, 0x40 ; 64 |
13b4: 8e bd out 0x2e, r24 ; 46 |
#ifdef _32KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 32; |
#endif |
#ifdef _16KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 32; |
13b6: 26 b5 in r18, 0x26 ; 38 |
13b8: 37 b5 in r19, 0x27 ; 39 |
13ba: 40 91 a7 00 lds r20, 0x00A7 |
13be: 80 91 ac 00 lds r24, 0x00AC |
13c2: 90 91 ad 00 lds r25, 0x00AD |
13c6: 28 1b sub r18, r24 |
13c8: 39 0b sbc r19, r25 |
13ca: 94 2f mov r25, r20 |
13cc: 99 0f add r25, r25 |
13ce: 80 e0 ldi r24, 0x00 ; 0 |
13d0: 28 0f add r18, r24 |
13d2: 39 1f adc r19, r25 |
13d4: 85 e0 ldi r24, 0x05 ; 5 |
13d6: 36 95 lsr r19 |
13d8: 27 95 ror r18 |
13da: 8a 95 dec r24 |
13dc: e1 f7 brne .-8 ; 0x13d6 <__vector_5+0x60> |
13de: 30 93 ab 00 sts 0x00AB, r19 |
13e2: 20 93 aa 00 sts 0x00AA, r18 |
#endif |
if(ppm < 280) ppm = 280; |
13e6: 28 51 subi r18, 0x18 ; 24 |
13e8: 31 40 sbci r19, 0x01 ; 1 |
13ea: 30 f4 brcc .+12 ; 0x13f8 <__vector_5+0x82> |
13ec: 88 e1 ldi r24, 0x18 ; 24 |
13ee: 91 e0 ldi r25, 0x01 ; 1 |
13f0: 90 93 ab 00 sts 0x00AB, r25 |
13f4: 80 93 aa 00 sts 0x00AA, r24 |
ppm -= 280; |
13f8: 40 91 aa 00 lds r20, 0x00AA |
13fc: 50 91 ab 00 lds r21, 0x00AB |
1400: 48 51 subi r20, 0x18 ; 24 |
1402: 51 40 sbci r21, 0x01 ; 1 |
if(PPM_Signal < ppm) PPM_Signal++; |
1404: 80 91 a5 00 lds r24, 0x00A5 |
1408: 90 91 a6 00 lds r25, 0x00A6 |
140c: 84 17 cp r24, r20 |
140e: 95 07 cpc r25, r21 |
1410: 30 f4 brcc .+12 ; 0x141e <__vector_5+0xa8> |
1412: 80 91 a5 00 lds r24, 0x00A5 |
1416: 90 91 a6 00 lds r25, 0x00A6 |
141a: 01 96 adiw r24, 0x01 ; 1 |
141c: 0c c0 rjmp .+24 ; 0x1436 <__vector_5+0xc0> |
else if(PPM_Signal > ppm) PPM_Signal--; |
141e: 80 91 a5 00 lds r24, 0x00A5 |
1422: 90 91 a6 00 lds r25, 0x00A6 |
1426: 48 17 cp r20, r24 |
1428: 59 07 cpc r21, r25 |
142a: 48 f4 brcc .+18 ; 0x143e <__vector_5+0xc8> |
142c: 80 91 a5 00 lds r24, 0x00A5 |
1430: 90 91 a6 00 lds r25, 0x00A6 |
1434: 01 97 sbiw r24, 0x01 ; 1 |
1436: 90 93 a6 00 sts 0x00A6, r25 |
143a: 80 93 a5 00 sts 0x00A5, r24 |
if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern |
143e: 80 91 a5 00 lds r24, 0x00A5 |
1442: 90 91 a6 00 lds r25, 0x00A6 |
1446: 9c 01 movw r18, r24 |
1448: 22 0f add r18, r18 |
144a: 33 1f adc r19, r19 |
144c: 22 0f add r18, r18 |
144e: 33 1f adc r19, r19 |
1450: 22 0f add r18, r18 |
1452: 33 1f adc r19, r19 |
1454: 28 1b sub r18, r24 |
1456: 39 0b sbc r19, r25 |
1458: 24 0f add r18, r20 |
145a: 35 1f adc r19, r21 |
145c: 83 e0 ldi r24, 0x03 ; 3 |
145e: 36 95 lsr r19 |
1460: 27 95 ror r18 |
1462: 8a 95 dec r24 |
1464: e1 f7 brne .-8 ; 0x145e <__vector_5+0xe8> |
1466: 30 93 ab 00 sts 0x00AB, r19 |
146a: 20 93 aa 00 sts 0x00AA, r18 |
PPM_Signal = ppm; |
146e: 30 93 a6 00 sts 0x00A6, r19 |
1472: 20 93 a5 00 sts 0x00A5, r18 |
if(anz_ppm_werte < 255) anz_ppm_werte++; |
1476: 80 91 a9 00 lds r24, 0x00A9 |
147a: 8f 3f cpi r24, 0xFF ; 255 |
147c: 29 f0 breq .+10 ; 0x1488 <__vector_5+0x112> |
147e: 80 91 a9 00 lds r24, 0x00A9 |
1482: 8f 5f subi r24, 0xFF ; 255 |
1484: 80 93 a9 00 sts 0x00A9, r24 |
ZeitZumAdWandeln = 1; |
1488: 81 e0 ldi r24, 0x01 ; 1 |
148a: 80 93 65 00 sts 0x0065, r24 |
} |
} |
148e: 9f 91 pop r25 |
1490: 8f 91 pop r24 |
1492: 5f 91 pop r21 |
1494: 4f 91 pop r20 |
1496: 3f 91 pop r19 |
1498: 2f 91 pop r18 |
149a: 0f 90 pop r0 |
149c: 0f be out 0x3f, r0 ; 63 |
149e: 0f 90 pop r0 |
14a0: 1f 90 pop r1 |
14a2: 18 95 reti |
000014a4 <__vector_1>: |
//############################################################################ |
// |
SIGNAL(SIG_INTERRUPT0) |
//############################################################################ |
{ |
14a4: 1f 92 push r1 |
14a6: 0f 92 push r0 |
14a8: 0f b6 in r0, 0x3f ; 63 |
14aa: 0f 92 push r0 |
14ac: 11 24 eor r1, r1 |
14ae: 8f 93 push r24 |
CLR_INT0_FLAG; // IntFlag Loeschen |
14b0: 8a b7 in r24, 0x3a ; 58 |
14b2: 8f 7b andi r24, 0xBF ; 191 |
14b4: 8a bf out 0x3a, r24 ; 58 |
} |
14b6: 8f 91 pop r24 |
14b8: 0f 90 pop r0 |
14ba: 0f be out 0x3f, r0 ; 63 |
14bc: 0f 90 pop r0 |
14be: 1f 90 pop r1 |
14c0: 18 95 reti |
000014c2 <InitIC2_Slave>: |
//############################################################################ |
//I2C (TWI) Interface Init |
void InitIC2_Slave(uint8_t adr) |
//############################################################################ |
{ |
TWAR = adr + (2*MotorAdresse); // Eigene Adresse setzen |
14c2: 90 91 66 00 lds r25, 0x0066 |
14c6: 99 0f add r25, r25 |
14c8: 98 0f add r25, r24 |
14ca: 92 b9 out 0x02, r25 ; 2 |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
14cc: 85 ec ldi r24, 0xC5 ; 197 |
14ce: 86 bf out 0x36, r24 ; 54 |
} |
14d0: 08 95 ret |
000014d2 <__vector_17>: |
//############################################################################ |
//ISR, die bei einem Ereignis auf dem Bus ausgelöst wird. Im Register TWSR befindet |
//sich dann ein Statuscode, anhand dessen die Situation festgestellt werden kann. |
ISR (TWI_vect) |
//############################################################################ |
{ |
14d2: 1f 92 push r1 |
14d4: 0f 92 push r0 |
14d6: 0f b6 in r0, 0x3f ; 63 |
14d8: 0f 92 push r0 |
14da: 11 24 eor r1, r1 |
14dc: 8f 93 push r24 |
14de: 9f 93 push r25 |
switch (TWSR & 0xF8) |
14e0: 81 b1 in r24, 0x01 ; 1 |
14e2: 90 e0 ldi r25, 0x00 ; 0 |
14e4: 88 7f andi r24, 0xF8 ; 248 |
14e6: 90 70 andi r25, 0x00 ; 0 |
14e8: 80 38 cpi r24, 0x80 ; 128 |
14ea: 91 05 cpc r25, r1 |
14ec: c9 f0 breq .+50 ; 0x1520 <__vector_17+0x4e> |
14ee: 81 38 cpi r24, 0x81 ; 129 |
14f0: 91 05 cpc r25, r1 |
14f2: 34 f4 brge .+12 ; 0x1500 <__vector_17+0x2e> |
14f4: 00 97 sbiw r24, 0x00 ; 0 |
14f6: 91 f1 breq .+100 ; 0x155c <__vector_17+0x8a> |
14f8: 80 36 cpi r24, 0x60 ; 96 |
14fa: 91 05 cpc r25, r1 |
14fc: 91 f5 brne .+100 ; 0x1562 <__vector_17+0x90> |
14fe: 0a c0 rjmp .+20 ; 0x1514 <__vector_17+0x42> |
1500: 88 3b cpi r24, 0xB8 ; 184 |
1502: 91 05 cpc r25, r1 |
1504: b9 f0 breq .+46 ; 0x1534 <__vector_17+0x62> |
1506: 88 3f cpi r24, 0xF8 ; 248 |
1508: 91 05 cpc r25, r1 |
150a: 29 f1 breq .+74 ; 0x1556 <__vector_17+0x84> |
150c: 88 3a cpi r24, 0xA8 ; 168 |
150e: 91 05 cpc r25, r1 |
1510: 41 f5 brne .+80 ; 0x1562 <__vector_17+0x90> |
1512: 10 c0 rjmp .+32 ; 0x1534 <__vector_17+0x62> |
{ |
case SR_SLA_ACK: |
TWCR |= (1<<TWINT); |
1514: 86 b7 in r24, 0x36 ; 54 |
1516: 80 68 ori r24, 0x80 ; 128 |
1518: 86 bf out 0x36, r24 ; 54 |
Byte_Counter=0; |
151a: 10 92 ae 00 sts 0x00AE, r1 |
151e: 23 c0 rjmp .+70 ; 0x1566 <__vector_17+0x94> |
return; |
// Daten Empfangen |
case SR_PREV_ACK: |
I2C_RXBuffer = TWDR; |
1520: 83 b1 in r24, 0x03 ; 3 |
1522: 80 93 95 03 sts 0x0395, r24 |
I2C_Timeout = 500; |
1526: 84 ef ldi r24, 0xF4 ; 244 |
1528: 91 e0 ldi r25, 0x01 ; 1 |
152a: 90 93 81 00 sts 0x0081, r25 |
152e: 80 93 80 00 sts 0x0080, r24 |
1532: 0e c0 rjmp .+28 ; 0x1550 <__vector_17+0x7e> |
} |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_DATA_ACK: |
if (Byte_Counter==0) |
1534: 80 91 ae 00 lds r24, 0x00AE |
1538: 88 23 and r24, r24 |
153a: 39 f4 brne .+14 ; 0x154a <__vector_17+0x78> |
{ |
TWDR = Mittelstrom; |
153c: 80 91 7d 00 lds r24, 0x007D |
1540: 83 b9 out 0x03, r24 ; 3 |
Byte_Counter++; |
1542: 81 e0 ldi r24, 0x01 ; 1 |
1544: 80 93 ae 00 sts 0x00AE, r24 |
1548: 03 c0 rjmp .+6 ; 0x1550 <__vector_17+0x7e> |
} |
else |
{ |
TWDR = MaxPWM; |
154a: 80 91 64 00 lds r24, 0x0064 |
154e: 83 b9 out 0x03, r24 ; 3 |
} |
TWCR |= (1<<TWINT); |
1550: 86 b7 in r24, 0x36 ; 54 |
1552: 80 68 ori r24, 0x80 ; 128 |
1554: 07 c0 rjmp .+14 ; 0x1564 <__vector_17+0x92> |
return; |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_2: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
1556: 86 b7 in r24, 0x36 ; 54 |
1558: 80 69 ori r24, 0x90 ; 144 |
155a: 86 bf out 0x36, r24 ; 54 |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_1: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
155c: 86 b7 in r24, 0x36 ; 54 |
155e: 80 69 ori r24, 0x90 ; 144 |
1560: 86 bf out 0x36, r24 ; 54 |
} |
TWCR =(1<<TWEA) | (1<<TWINT) | (1<<TWEN) | (1<<TWIE); // TWI Reset |
1562: 85 ec ldi r24, 0xC5 ; 197 |
1564: 86 bf out 0x36, r24 ; 54 |
} |
1566: 9f 91 pop r25 |
1568: 8f 91 pop r24 |
156a: 0f 90 pop r0 |
156c: 0f be out 0x3f, r0 ; 63 |
156e: 0f 90 pop r0 |
1570: 1f 90 pop r1 |
1572: 18 95 reti |
00001574 <__vector_4>: |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW2) |
//############################################################################ |
{ |
1574: 1f 92 push r1 |
1576: 0f 92 push r0 |
1578: 0f b6 in r0, 0x3f ; 63 |
157a: 0f 92 push r0 |
157c: 11 24 eor r1, r1 |
} |
157e: 0f 90 pop r0 |
1580: 0f be out 0x3f, r0 ; 63 |
1582: 0f 90 pop r0 |
1584: 1f 90 pop r1 |
1586: 18 95 reti |
00001588 <Manuell>: |
//############################################################################ |
// |
void Manuell(void) |
//############################################################################ |
{ |
switch(Phase) |
1588: 80 91 af 00 lds r24, 0x00AF |
158c: 82 30 cpi r24, 0x02 ; 2 |
158e: 69 f1 breq .+90 ; 0x15ea <Manuell+0x62> |
1590: 83 30 cpi r24, 0x03 ; 3 |
1592: 30 f4 brcc .+12 ; 0x15a0 <Manuell+0x18> |
1594: 88 23 and r24, r24 |
1596: 69 f0 breq .+26 ; 0x15b2 <Manuell+0x2a> |
1598: 81 30 cpi r24, 0x01 ; 1 |
159a: 09 f0 breq .+2 ; 0x159e <Manuell+0x16> |
159c: 63 c0 rjmp .+198 ; 0x1664 <Manuell+0xdc> |
159e: 17 c0 rjmp .+46 ; 0x15ce <Manuell+0x46> |
15a0: 84 30 cpi r24, 0x04 ; 4 |
15a2: 09 f4 brne .+2 ; 0x15a6 <Manuell+0x1e> |
15a4: 3f c0 rjmp .+126 ; 0x1624 <Manuell+0x9c> |
15a6: 84 30 cpi r24, 0x04 ; 4 |
15a8: 68 f1 brcs .+90 ; 0x1604 <Manuell+0x7c> |
15aa: 85 30 cpi r24, 0x05 ; 5 |
15ac: 09 f0 breq .+2 ; 0x15b0 <Manuell+0x28> |
15ae: 5a c0 rjmp .+180 ; 0x1664 <Manuell+0xdc> |
15b0: 4b c0 rjmp .+150 ; 0x1648 <Manuell+0xc0> |
{ |
case 0: |
STEUER_A_H; |
15b2: 81 ea ldi r24, 0xA1 ; 161 |
15b4: 8f bd out 0x2f, r24 ; 47 |
15b6: 81 e6 ldi r24, 0x61 ; 97 |
15b8: 85 bd out 0x25, r24 ; 37 |
15ba: 88 e0 ldi r24, 0x08 ; 8 |
15bc: 87 bb out 0x17, r24 ; 23 |
STEUER_B_L; |
15be: 82 b3 in r24, 0x12 ; 18 |
15c0: 87 7d andi r24, 0xD7 ; 215 |
15c2: 82 bb out 0x12, r24 ; 18 |
15c4: 94 9a sbi 0x12, 4 ; 18 |
SENSE_C; |
15c6: 80 91 8d 00 lds r24, 0x008D |
15ca: 82 60 ori r24, 0x02 ; 2 |
15cc: 38 c0 rjmp .+112 ; 0x163e <Manuell+0xb6> |
SENSE_RISING_INT; |
break; |
case 1: |
STEUER_A_H; |
15ce: 81 ea ldi r24, 0xA1 ; 161 |
15d0: 8f bd out 0x2f, r24 ; 47 |
15d2: 81 e6 ldi r24, 0x61 ; 97 |
15d4: 85 bd out 0x25, r24 ; 37 |
15d6: 88 e0 ldi r24, 0x08 ; 8 |
15d8: 87 bb out 0x17, r24 ; 23 |
STEUER_C_L; |
15da: 82 b3 in r24, 0x12 ; 18 |
15dc: 87 7e andi r24, 0xE7 ; 231 |
15de: 82 bb out 0x12, r24 ; 18 |
15e0: 95 9a sbi 0x12, 5 ; 18 |
SENSE_B; |
15e2: 80 91 8d 00 lds r24, 0x008D |
15e6: 81 60 ori r24, 0x01 ; 1 |
15e8: 1a c0 rjmp .+52 ; 0x161e <Manuell+0x96> |
SENSE_FALLING_INT; |
break; |
case 2: |
STEUER_B_H; |
15ea: 81 ea ldi r24, 0xA1 ; 161 |
15ec: 8f bd out 0x2f, r24 ; 47 |
15ee: 81 e6 ldi r24, 0x61 ; 97 |
15f0: 85 bd out 0x25, r24 ; 37 |
15f2: 84 e0 ldi r24, 0x04 ; 4 |
15f4: 87 bb out 0x17, r24 ; 23 |
STEUER_C_L; |
15f6: 82 b3 in r24, 0x12 ; 18 |
15f8: 87 7e andi r24, 0xE7 ; 231 |
15fa: 82 bb out 0x12, r24 ; 18 |
15fc: 95 9a sbi 0x12, 5 ; 18 |
SENSE_A; |
15fe: 80 91 8d 00 lds r24, 0x008D |
1602: 1d c0 rjmp .+58 ; 0x163e <Manuell+0xb6> |
SENSE_RISING_INT; |
break; |
case 3: |
STEUER_B_H; |
1604: 81 ea ldi r24, 0xA1 ; 161 |
1606: 8f bd out 0x2f, r24 ; 47 |
1608: 81 e6 ldi r24, 0x61 ; 97 |
160a: 85 bd out 0x25, r24 ; 37 |
160c: 84 e0 ldi r24, 0x04 ; 4 |
160e: 87 bb out 0x17, r24 ; 23 |
STEUER_A_L; |
1610: 82 b3 in r24, 0x12 ; 18 |
1612: 8f 7c andi r24, 0xCF ; 207 |
1614: 82 bb out 0x12, r24 ; 18 |
1616: 93 9a sbi 0x12, 3 ; 18 |
SENSE_C; |
1618: 80 91 8d 00 lds r24, 0x008D |
161c: 82 60 ori r24, 0x02 ; 2 |
161e: 87 b9 out 0x07, r24 ; 7 |
SENSE_FALLING_INT; |
1620: 40 98 cbi 0x08, 0 ; 8 |
1622: 08 95 ret |
break; |
case 4: |
STEUER_C_H; |
1624: 81 ea ldi r24, 0xA1 ; 161 |
1626: 8f bd out 0x2f, r24 ; 47 |
1628: 81 e6 ldi r24, 0x61 ; 97 |
162a: 85 bd out 0x25, r24 ; 37 |
162c: 82 e0 ldi r24, 0x02 ; 2 |
162e: 87 bb out 0x17, r24 ; 23 |
STEUER_A_L; |
1630: 82 b3 in r24, 0x12 ; 18 |
1632: 8f 7c andi r24, 0xCF ; 207 |
1634: 82 bb out 0x12, r24 ; 18 |
1636: 93 9a sbi 0x12, 3 ; 18 |
SENSE_B; |
1638: 80 91 8d 00 lds r24, 0x008D |
163c: 81 60 ori r24, 0x01 ; 1 |
163e: 87 b9 out 0x07, r24 ; 7 |
SENSE_RISING_INT; |
1640: 88 b1 in r24, 0x08 ; 8 |
1642: 83 60 ori r24, 0x03 ; 3 |
1644: 88 b9 out 0x08, r24 ; 8 |
1646: 08 95 ret |
break; |
case 5: |
STEUER_C_H; |
1648: 81 ea ldi r24, 0xA1 ; 161 |
164a: 8f bd out 0x2f, r24 ; 47 |
164c: 81 e6 ldi r24, 0x61 ; 97 |
164e: 85 bd out 0x25, r24 ; 37 |
1650: 82 e0 ldi r24, 0x02 ; 2 |
1652: 87 bb out 0x17, r24 ; 23 |
STEUER_B_L; |
1654: 82 b3 in r24, 0x12 ; 18 |
1656: 87 7d andi r24, 0xD7 ; 215 |
1658: 82 bb out 0x12, r24 ; 18 |
165a: 94 9a sbi 0x12, 4 ; 18 |
SENSE_A; |
165c: 80 91 8d 00 lds r24, 0x008D |
1660: 87 b9 out 0x07, r24 ; 7 |
SENSE_FALLING_INT; |
1662: 40 98 cbi 0x08, 0 ; 8 |
1664: 08 95 ret |
00001666 <__vector_16>: |
// + Interruptroutine |
// + Wird durch den Analogkomperator ausgelöst |
// + Dadurch wird das Kommutieren erzeugt |
SIGNAL(SIG_COMPARATOR) |
//############################################################################ |
{ |
1666: 1f 92 push r1 |
1668: 0f 92 push r0 |
166a: 0f b6 in r0, 0x3f ; 63 |
166c: 0f 92 push r0 |
166e: 11 24 eor r1, r1 |
1670: cf 92 push r12 |
1672: df 92 push r13 |
1674: ef 92 push r14 |
1676: ff 92 push r15 |
1678: 0f 93 push r16 |
167a: 1f 93 push r17 |
167c: 2f 93 push r18 |
167e: 3f 93 push r19 |
1680: 4f 93 push r20 |
1682: 5f 93 push r21 |
1684: 6f 93 push r22 |
1686: 7f 93 push r23 |
1688: 8f 93 push r24 |
168a: 9f 93 push r25 |
168c: af 93 push r26 |
168e: bf 93 push r27 |
1690: ef 93 push r30 |
1692: ff 93 push r31 |
} |
break; |
case 4: |
STEUER_C_H; |
1694: 61 ea ldi r22, 0xA1 ; 161 |
1696: f6 2e mov r15, r22 |
1698: 01 e6 ldi r16, 0x61 ; 97 |
169a: 52 e0 ldi r21, 0x02 ; 2 |
169c: c5 2e mov r12, r21 |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_H; |
169e: 44 e0 ldi r20, 0x04 ; 4 |
16a0: d4 2e mov r13, r20 |
break; |
case 5: |
STEUER_B_L; |
if(!sense) |
{ |
STEUER_A_H; |
16a2: 38 e0 ldi r19, 0x08 ; 8 |
16a4: e3 2e mov r14, r19 |
//############################################################################ |
{ |
unsigned char sense = 0; |
do |
{ |
if(SENSE_H) sense = 1; else sense = 0; |
16a6: 88 b1 in r24, 0x08 ; 8 |
16a8: 90 e0 ldi r25, 0x00 ; 0 |
16aa: 25 e0 ldi r18, 0x05 ; 5 |
16ac: 96 95 lsr r25 |
16ae: 87 95 ror r24 |
16b0: 2a 95 dec r18 |
16b2: e1 f7 brne .-8 ; 0x16ac <__vector_16+0x46> |
16b4: 18 2f mov r17, r24 |
16b6: 11 70 andi r17, 0x01 ; 1 |
switch(Phase) |
16b8: 80 91 af 00 lds r24, 0x00AF |
16bc: 82 30 cpi r24, 0x02 ; 2 |
16be: 09 f4 brne .+2 ; 0x16c2 <__vector_16+0x5c> |
16c0: 50 c0 rjmp .+160 ; 0x1762 <__vector_16+0xfc> |
16c2: 83 30 cpi r24, 0x03 ; 3 |
16c4: 30 f4 brcc .+12 ; 0x16d2 <__vector_16+0x6c> |
16c6: 88 23 and r24, r24 |
16c8: 71 f0 breq .+28 ; 0x16e6 <__vector_16+0x80> |
16ca: 81 30 cpi r24, 0x01 ; 1 |
16cc: 09 f0 breq .+2 ; 0x16d0 <__vector_16+0x6a> |
16ce: a5 c0 rjmp .+330 ; 0x181a <__vector_16+0x1b4> |
16d0: 22 c0 rjmp .+68 ; 0x1716 <__vector_16+0xb0> |
16d2: 84 30 cpi r24, 0x04 ; 4 |
16d4: 09 f4 brne .+2 ; 0x16d8 <__vector_16+0x72> |
16d6: 70 c0 rjmp .+224 ; 0x17b8 <__vector_16+0x152> |
16d8: 84 30 cpi r24, 0x04 ; 4 |
16da: 08 f4 brcc .+2 ; 0x16de <__vector_16+0x78> |
16dc: 58 c0 rjmp .+176 ; 0x178e <__vector_16+0x128> |
16de: 85 30 cpi r24, 0x05 ; 5 |
16e0: 09 f0 breq .+2 ; 0x16e4 <__vector_16+0x7e> |
16e2: 9b c0 rjmp .+310 ; 0x181a <__vector_16+0x1b4> |
16e4: 80 c0 rjmp .+256 ; 0x17e6 <__vector_16+0x180> |
{ |
case 0: |
STEUER_A_H; |
16e6: ff bc out 0x2f, r15 ; 47 |
16e8: 05 bd out 0x25, r16 ; 37 |
16ea: e7 ba out 0x17, r14 ; 23 |
if(sense) |
16ec: 11 23 and r17, r17 |
16ee: 71 f0 breq .+28 ; 0x170c <__vector_16+0xa6> |
{ |
STEUER_C_L; |
16f0: 82 b3 in r24, 0x12 ; 18 |
16f2: 87 7e andi r24, 0xE7 ; 231 |
16f4: 82 bb out 0x12, r24 ; 18 |
16f6: 95 9a sbi 0x12, 5 ; 18 |
if(ZeitZumAdWandeln) AdConvert(); |
16f8: 80 91 65 00 lds r24, 0x0065 |
16fc: 81 11 cpse r24, r1 |
16fe: b5 dd rcall .-1174 ; 0x126a <AdConvert> |
SENSE_FALLING_INT; |
1700: 40 98 cbi 0x08, 0 ; 8 |
SENSE_B; |
1702: 80 91 8d 00 lds r24, 0x008D |
1706: 81 60 ori r24, 0x01 ; 1 |
1708: 87 b9 out 0x07, r24 ; 7 |
170a: 18 c0 rjmp .+48 ; 0x173c <__vector_16+0xd6> |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_L; |
170c: 82 b3 in r24, 0x12 ; 18 |
170e: 87 7d andi r24, 0xD7 ; 215 |
1710: 82 bb out 0x12, r24 ; 18 |
1712: 94 9a sbi 0x12, 4 ; 18 |
1714: 82 c0 rjmp .+260 ; 0x181a <__vector_16+0x1b4> |
} |
break; |
case 1: |
STEUER_C_L; |
1716: 82 b3 in r24, 0x12 ; 18 |
1718: 87 7e andi r24, 0xE7 ; 231 |
171a: 82 bb out 0x12, r24 ; 18 |
171c: 95 9a sbi 0x12, 5 ; 18 |
if(!sense) |
171e: 11 23 and r17, r17 |
1720: e1 f4 brne .+56 ; 0x175a <__vector_16+0xf4> |
{ |
STEUER_B_H; |
1722: ff bc out 0x2f, r15 ; 47 |
1724: 05 bd out 0x25, r16 ; 37 |
1726: d7 ba out 0x17, r13 ; 23 |
if(ZeitZumAdWandeln) AdConvert(); |
1728: 80 91 65 00 lds r24, 0x0065 |
172c: 81 11 cpse r24, r1 |
172e: 9d dd rcall .-1222 ; 0x126a <AdConvert> |
SENSE_A; |
1730: 80 91 8d 00 lds r24, 0x008D |
1734: 87 b9 out 0x07, r24 ; 7 |
SENSE_RISING_INT; |
1736: 88 b1 in r24, 0x08 ; 8 |
1738: 83 60 ori r24, 0x03 ; 3 |
173a: 88 b9 out 0x08, r24 ; 8 |
Phase++; |
173c: 80 91 af 00 lds r24, 0x00AF |
1740: 8f 5f subi r24, 0xFF ; 255 |
1742: 80 93 af 00 sts 0x00AF, r24 |
CntKommutierungen++; |
1746: 80 91 89 00 lds r24, 0x0089 |
174a: 90 91 8a 00 lds r25, 0x008A |
174e: 01 96 adiw r24, 0x01 ; 1 |
1750: 90 93 8a 00 sts 0x008A, r25 |
1754: 80 93 89 00 sts 0x0089, r24 |
1758: 60 c0 rjmp .+192 ; 0x181a <__vector_16+0x1b4> |
} |
else |
{ |
STEUER_A_H; |
175a: ff bc out 0x2f, r15 ; 47 |
175c: 05 bd out 0x25, r16 ; 37 |
175e: e7 ba out 0x17, r14 ; 23 |
1760: 5c c0 rjmp .+184 ; 0x181a <__vector_16+0x1b4> |
} |
break; |
case 2: |
STEUER_B_H; |
1762: ff bc out 0x2f, r15 ; 47 |
1764: 05 bd out 0x25, r16 ; 37 |
1766: d7 ba out 0x17, r13 ; 23 |
if(sense) |
1768: 11 23 and r17, r17 |
176a: 61 f0 breq .+24 ; 0x1784 <__vector_16+0x11e> |
{ |
STEUER_A_L; |
176c: 82 b3 in r24, 0x12 ; 18 |
176e: 8f 7c andi r24, 0xCF ; 207 |
1770: 82 bb out 0x12, r24 ; 18 |
1772: 93 9a sbi 0x12, 3 ; 18 |
if(ZeitZumAdWandeln) AdConvert(); |
1774: 80 91 65 00 lds r24, 0x0065 |
1778: 81 11 cpse r24, r1 |
177a: 77 dd rcall .-1298 ; 0x126a <AdConvert> |
SENSE_C; |
177c: 80 91 8d 00 lds r24, 0x008D |
1780: 82 60 ori r24, 0x02 ; 2 |
1782: 29 c0 rjmp .+82 ; 0x17d6 <__vector_16+0x170> |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_L; |
1784: 82 b3 in r24, 0x12 ; 18 |
1786: 87 7e andi r24, 0xE7 ; 231 |
1788: 82 bb out 0x12, r24 ; 18 |
178a: 95 9a sbi 0x12, 5 ; 18 |
178c: 46 c0 rjmp .+140 ; 0x181a <__vector_16+0x1b4> |
} |
break; |
case 3: |
STEUER_A_L; |
178e: 82 b3 in r24, 0x12 ; 18 |
1790: 8f 7c andi r24, 0xCF ; 207 |
1792: 82 bb out 0x12, r24 ; 18 |
1794: 93 9a sbi 0x12, 3 ; 18 |
if(!sense) |
1796: 11 23 and r17, r17 |
1798: 59 f4 brne .+22 ; 0x17b0 <__vector_16+0x14a> |
{ |
STEUER_C_H; |
179a: ff bc out 0x2f, r15 ; 47 |
179c: 05 bd out 0x25, r16 ; 37 |
179e: c7 ba out 0x17, r12 ; 23 |
if(ZeitZumAdWandeln) AdConvert(); |
17a0: 80 91 65 00 lds r24, 0x0065 |
17a4: 81 11 cpse r24, r1 |
17a6: 61 dd rcall .-1342 ; 0x126a <AdConvert> |
SENSE_B; |
17a8: 80 91 8d 00 lds r24, 0x008D |
17ac: 81 60 ori r24, 0x01 ; 1 |
17ae: c2 cf rjmp .-124 ; 0x1734 <__vector_16+0xce> |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_H; |
17b0: ff bc out 0x2f, r15 ; 47 |
17b2: 05 bd out 0x25, r16 ; 37 |
17b4: d7 ba out 0x17, r13 ; 23 |
17b6: 31 c0 rjmp .+98 ; 0x181a <__vector_16+0x1b4> |
} |
break; |
case 4: |
STEUER_C_H; |
17b8: ff bc out 0x2f, r15 ; 47 |
17ba: 05 bd out 0x25, r16 ; 37 |
17bc: c7 ba out 0x17, r12 ; 23 |
if(sense) |
17be: 11 23 and r17, r17 |
17c0: 69 f0 breq .+26 ; 0x17dc <__vector_16+0x176> |
{ |
STEUER_B_L; |
17c2: 82 b3 in r24, 0x12 ; 18 |
17c4: 87 7d andi r24, 0xD7 ; 215 |
17c6: 82 bb out 0x12, r24 ; 18 |
17c8: 94 9a sbi 0x12, 4 ; 18 |
if(ZeitZumAdWandeln) AdConvert(); |
17ca: 80 91 65 00 lds r24, 0x0065 |
17ce: 81 11 cpse r24, r1 |
17d0: 4c dd rcall .-1384 ; 0x126a <AdConvert> |
SENSE_A; |
17d2: 80 91 8d 00 lds r24, 0x008D |
17d6: 87 b9 out 0x07, r24 ; 7 |
SENSE_FALLING_INT; |
17d8: 40 98 cbi 0x08, 0 ; 8 |
17da: b0 cf rjmp .-160 ; 0x173c <__vector_16+0xd6> |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_L; |
17dc: 82 b3 in r24, 0x12 ; 18 |
17de: 8f 7c andi r24, 0xCF ; 207 |
17e0: 82 bb out 0x12, r24 ; 18 |
17e2: 93 9a sbi 0x12, 3 ; 18 |
17e4: 1a c0 rjmp .+52 ; 0x181a <__vector_16+0x1b4> |
} |
break; |
case 5: |
STEUER_B_L; |
17e6: 82 b3 in r24, 0x12 ; 18 |
17e8: 87 7d andi r24, 0xD7 ; 215 |
17ea: 82 bb out 0x12, r24 ; 18 |
17ec: 94 9a sbi 0x12, 4 ; 18 |
if(!sense) |
17ee: 11 23 and r17, r17 |
17f0: 89 f4 brne .+34 ; 0x1814 <__vector_16+0x1ae> |
{ |
STEUER_A_H; |
17f2: ff bc out 0x2f, r15 ; 47 |
17f4: 05 bd out 0x25, r16 ; 37 |
17f6: e7 ba out 0x17, r14 ; 23 |
if(ZeitZumAdWandeln) AdConvert(); |
17f8: 80 91 65 00 lds r24, 0x0065 |
17fc: 81 11 cpse r24, r1 |
17fe: 35 dd rcall .-1430 ; 0x126a <AdConvert> |
SENSE_C; |
1800: 80 91 8d 00 lds r24, 0x008D |
1804: 82 60 ori r24, 0x02 ; 2 |
1806: 87 b9 out 0x07, r24 ; 7 |
SENSE_RISING_INT; |
1808: 88 b1 in r24, 0x08 ; 8 |
180a: 83 60 ori r24, 0x03 ; 3 |
180c: 88 b9 out 0x08, r24 ; 8 |
Phase = 0; |
180e: 10 92 af 00 sts 0x00AF, r1 |
1812: 99 cf rjmp .-206 ; 0x1746 <__vector_16+0xe0> |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_H; |
1814: ff bc out 0x2f, r15 ; 47 |
1816: 05 bd out 0x25, r16 ; 37 |
1818: c7 ba out 0x17, r12 ; 23 |
} |
break; |
} |
} |
while((SENSE_L && sense) || (SENSE_H && !sense)); |
181a: 45 99 sbic 0x08, 5 ; 8 |
181c: 03 c0 rjmp .+6 ; 0x1824 <__vector_16+0x1be> |
181e: 11 23 and r17, r17 |
1820: 09 f0 breq .+2 ; 0x1824 <__vector_16+0x1be> |
1822: 41 cf rjmp .-382 ; 0x16a6 <__vector_16+0x40> |
1824: 45 9b sbis 0x08, 5 ; 8 |
1826: 03 c0 rjmp .+6 ; 0x182e <__vector_16+0x1c8> |
1828: 11 23 and r17, r17 |
182a: 09 f4 brne .+2 ; 0x182e <__vector_16+0x1c8> |
182c: 3c cf rjmp .-392 ; 0x16a6 <__vector_16+0x40> |
ZeitZumAdWandeln = 0; |
182e: 10 92 65 00 sts 0x0065, r1 |
} |
1832: ff 91 pop r31 |
1834: ef 91 pop r30 |
1836: bf 91 pop r27 |
1838: af 91 pop r26 |
183a: 9f 91 pop r25 |
183c: 8f 91 pop r24 |
183e: 7f 91 pop r23 |
1840: 6f 91 pop r22 |
1842: 5f 91 pop r21 |
1844: 4f 91 pop r20 |
1846: 3f 91 pop r19 |
1848: 2f 91 pop r18 |
184a: 1f 91 pop r17 |
184c: 0f 91 pop r16 |
184e: ff 90 pop r15 |
1850: ef 90 pop r14 |
1852: df 90 pop r13 |
1854: cf 90 pop r12 |
1856: 0f 90 pop r0 |
1858: 0f be out 0x3f, r0 ; 63 |
185a: 0f 90 pop r0 |
185c: 1f 90 pop r1 |
185e: 18 95 reti |
00001860 <__udivmodqi4>: |
1860: 99 1b sub r25, r25 |
1862: 79 e0 ldi r23, 0x09 ; 9 |
1864: 04 c0 rjmp .+8 ; 0x186e <__udivmodqi4_ep> |
00001866 <__udivmodqi4_loop>: |
1866: 99 1f adc r25, r25 |
1868: 96 17 cp r25, r22 |
186a: 08 f0 brcs .+2 ; 0x186e <__udivmodqi4_ep> |
186c: 96 1b sub r25, r22 |
0000186e <__udivmodqi4_ep>: |
186e: 88 1f adc r24, r24 |
1870: 7a 95 dec r23 |
1872: c9 f7 brne .-14 ; 0x1866 <__udivmodqi4_loop> |
1874: 80 95 com r24 |
1876: 08 95 ret |
00001878 <__udivmodhi4>: |
1878: aa 1b sub r26, r26 |
187a: bb 1b sub r27, r27 |
187c: 51 e1 ldi r21, 0x11 ; 17 |
187e: 07 c0 rjmp .+14 ; 0x188e <__udivmodhi4_ep> |
00001880 <__udivmodhi4_loop>: |
1880: aa 1f adc r26, r26 |
1882: bb 1f adc r27, r27 |
1884: a6 17 cp r26, r22 |
1886: b7 07 cpc r27, r23 |
1888: 10 f0 brcs .+4 ; 0x188e <__udivmodhi4_ep> |
188a: a6 1b sub r26, r22 |
188c: b7 0b sbc r27, r23 |
0000188e <__udivmodhi4_ep>: |
188e: 88 1f adc r24, r24 |
1890: 99 1f adc r25, r25 |
1892: 5a 95 dec r21 |
1894: a9 f7 brne .-22 ; 0x1880 <__udivmodhi4_loop> |
1896: 80 95 com r24 |
1898: 90 95 com r25 |
189a: bc 01 movw r22, r24 |
189c: cd 01 movw r24, r26 |
189e: 08 95 ret |
000018a0 <__udivmodsi4>: |
18a0: a1 e2 ldi r26, 0x21 ; 33 |
18a2: 1a 2e mov r1, r26 |
18a4: aa 1b sub r26, r26 |
18a6: bb 1b sub r27, r27 |
18a8: fd 01 movw r30, r26 |
18aa: 0d c0 rjmp .+26 ; 0x18c6 <__udivmodsi4_ep> |
000018ac <__udivmodsi4_loop>: |
18ac: aa 1f adc r26, r26 |
18ae: bb 1f adc r27, r27 |
18b0: ee 1f adc r30, r30 |
18b2: ff 1f adc r31, r31 |
18b4: a2 17 cp r26, r18 |
18b6: b3 07 cpc r27, r19 |
18b8: e4 07 cpc r30, r20 |
18ba: f5 07 cpc r31, r21 |
18bc: 20 f0 brcs .+8 ; 0x18c6 <__udivmodsi4_ep> |
18be: a2 1b sub r26, r18 |
18c0: b3 0b sbc r27, r19 |
18c2: e4 0b sbc r30, r20 |
18c4: f5 0b sbc r31, r21 |
000018c6 <__udivmodsi4_ep>: |
18c6: 66 1f adc r22, r22 |
18c8: 77 1f adc r23, r23 |
18ca: 88 1f adc r24, r24 |
18cc: 99 1f adc r25, r25 |
18ce: 1a 94 dec r1 |
18d0: 69 f7 brne .-38 ; 0x18ac <__udivmodsi4_loop> |
18d2: 60 95 com r22 |
18d4: 70 95 com r23 |
18d6: 80 95 com r24 |
18d8: 90 95 com r25 |
18da: 9b 01 movw r18, r22 |
18dc: ac 01 movw r20, r24 |
18de: bd 01 movw r22, r26 |
18e0: cf 01 movw r24, r30 |
18e2: 08 95 ret |
000018e4 <fdevopen>: |
18e4: 0f 93 push r16 |
18e6: 1f 93 push r17 |
18e8: cf 93 push r28 |
18ea: df 93 push r29 |
18ec: 8c 01 movw r16, r24 |
18ee: eb 01 movw r28, r22 |
18f0: 00 97 sbiw r24, 0x00 ; 0 |
18f2: 31 f4 brne .+12 ; 0x1900 <fdevopen+0x1c> |
18f4: 61 15 cp r22, r1 |
18f6: 71 05 cpc r23, r1 |
18f8: 19 f4 brne .+6 ; 0x1900 <fdevopen+0x1c> |
18fa: 20 e0 ldi r18, 0x00 ; 0 |
18fc: 30 e0 ldi r19, 0x00 ; 0 |
18fe: 37 c0 rjmp .+110 ; 0x196e <fdevopen+0x8a> |
1900: 81 e0 ldi r24, 0x01 ; 1 |
1902: 90 e0 ldi r25, 0x00 ; 0 |
1904: 6e e0 ldi r22, 0x0E ; 14 |
1906: 70 e0 ldi r23, 0x00 ; 0 |
1908: 38 d0 rcall .+112 ; 0x197a <calloc> |
190a: fc 01 movw r30, r24 |
190c: 9c 01 movw r18, r24 |
190e: 00 97 sbiw r24, 0x00 ; 0 |
1910: 71 f1 breq .+92 ; 0x196e <fdevopen+0x8a> |
1912: 80 e8 ldi r24, 0x80 ; 128 |
1914: 83 83 std Z+3, r24 ; 0x03 |
1916: 20 97 sbiw r28, 0x00 ; 0 |
1918: 71 f0 breq .+28 ; 0x1936 <fdevopen+0x52> |
191a: d3 87 std Z+11, r29 ; 0x0b |
191c: c2 87 std Z+10, r28 ; 0x0a |
191e: 81 e8 ldi r24, 0x81 ; 129 |
1920: 83 83 std Z+3, r24 ; 0x03 |
1922: 80 91 96 03 lds r24, 0x0396 |
1926: 90 91 97 03 lds r25, 0x0397 |
192a: 89 2b or r24, r25 |
192c: 21 f4 brne .+8 ; 0x1936 <fdevopen+0x52> |
192e: f0 93 97 03 sts 0x0397, r31 |
1932: e0 93 96 03 sts 0x0396, r30 |
1936: 01 15 cp r16, r1 |
1938: 11 05 cpc r17, r1 |
193a: c9 f0 breq .+50 ; 0x196e <fdevopen+0x8a> |
193c: 11 87 std Z+9, r17 ; 0x09 |
193e: 00 87 std Z+8, r16 ; 0x08 |
1940: 83 81 ldd r24, Z+3 ; 0x03 |
1942: 82 60 ori r24, 0x02 ; 2 |
1944: 83 83 std Z+3, r24 ; 0x03 |
1946: 80 91 98 03 lds r24, 0x0398 |
194a: 90 91 99 03 lds r25, 0x0399 |
194e: 89 2b or r24, r25 |
1950: 71 f4 brne .+28 ; 0x196e <fdevopen+0x8a> |
1952: f0 93 99 03 sts 0x0399, r31 |
1956: e0 93 98 03 sts 0x0398, r30 |
195a: 80 91 9a 03 lds r24, 0x039A |
195e: 90 91 9b 03 lds r25, 0x039B |
1962: 89 2b or r24, r25 |
1964: 21 f4 brne .+8 ; 0x196e <fdevopen+0x8a> |
1966: f0 93 9b 03 sts 0x039B, r31 |
196a: e0 93 9a 03 sts 0x039A, r30 |
196e: c9 01 movw r24, r18 |
1970: df 91 pop r29 |
1972: cf 91 pop r28 |
1974: 1f 91 pop r17 |
1976: 0f 91 pop r16 |
1978: 08 95 ret |
0000197a <calloc>: |
197a: 0f 93 push r16 |
197c: 1f 93 push r17 |
197e: cf 93 push r28 |
1980: df 93 push r29 |
1982: 68 9f mul r22, r24 |
1984: 80 01 movw r16, r0 |
1986: 69 9f mul r22, r25 |
1988: 10 0d add r17, r0 |
198a: 78 9f mul r23, r24 |
198c: 10 0d add r17, r0 |
198e: 11 24 eor r1, r1 |
1990: c8 01 movw r24, r16 |
1992: 0d d0 rcall .+26 ; 0x19ae <malloc> |
1994: ec 01 movw r28, r24 |
1996: 00 97 sbiw r24, 0x00 ; 0 |
1998: 21 f0 breq .+8 ; 0x19a2 <calloc+0x28> |
199a: 60 e0 ldi r22, 0x00 ; 0 |
199c: 70 e0 ldi r23, 0x00 ; 0 |
199e: a8 01 movw r20, r16 |
19a0: 0b d1 rcall .+534 ; 0x1bb8 <memset> |
19a2: ce 01 movw r24, r28 |
19a4: df 91 pop r29 |
19a6: cf 91 pop r28 |
19a8: 1f 91 pop r17 |
19aa: 0f 91 pop r16 |
19ac: 08 95 ret |
000019ae <malloc>: |
19ae: cf 93 push r28 |
19b0: df 93 push r29 |
19b2: bc 01 movw r22, r24 |
19b4: 82 30 cpi r24, 0x02 ; 2 |
19b6: 91 05 cpc r25, r1 |
19b8: 10 f4 brcc .+4 ; 0x19be <malloc+0x10> |
19ba: 62 e0 ldi r22, 0x02 ; 2 |
19bc: 70 e0 ldi r23, 0x00 ; 0 |
19be: a0 91 9e 03 lds r26, 0x039E |
19c2: b0 91 9f 03 lds r27, 0x039F |
19c6: ed 01 movw r28, r26 |
19c8: e0 e0 ldi r30, 0x00 ; 0 |
19ca: f0 e0 ldi r31, 0x00 ; 0 |
19cc: 40 e0 ldi r20, 0x00 ; 0 |
19ce: 50 e0 ldi r21, 0x00 ; 0 |
19d0: 21 c0 rjmp .+66 ; 0x1a14 <malloc+0x66> |
19d2: 88 81 ld r24, Y |
19d4: 99 81 ldd r25, Y+1 ; 0x01 |
19d6: 86 17 cp r24, r22 |
19d8: 97 07 cpc r25, r23 |
19da: 69 f4 brne .+26 ; 0x19f6 <malloc+0x48> |
19dc: 8a 81 ldd r24, Y+2 ; 0x02 |
19de: 9b 81 ldd r25, Y+3 ; 0x03 |
19e0: 30 97 sbiw r30, 0x00 ; 0 |
19e2: 19 f0 breq .+6 ; 0x19ea <malloc+0x3c> |
19e4: 93 83 std Z+3, r25 ; 0x03 |
19e6: 82 83 std Z+2, r24 ; 0x02 |
19e8: 04 c0 rjmp .+8 ; 0x19f2 <malloc+0x44> |
19ea: 90 93 9f 03 sts 0x039F, r25 |
19ee: 80 93 9e 03 sts 0x039E, r24 |
19f2: fe 01 movw r30, r28 |
19f4: 34 c0 rjmp .+104 ; 0x1a5e <malloc+0xb0> |
19f6: 68 17 cp r22, r24 |
19f8: 79 07 cpc r23, r25 |
19fa: 38 f4 brcc .+14 ; 0x1a0a <malloc+0x5c> |
19fc: 41 15 cp r20, r1 |
19fe: 51 05 cpc r21, r1 |
1a00: 19 f0 breq .+6 ; 0x1a08 <malloc+0x5a> |
1a02: 84 17 cp r24, r20 |
1a04: 95 07 cpc r25, r21 |
1a06: 08 f4 brcc .+2 ; 0x1a0a <malloc+0x5c> |
1a08: ac 01 movw r20, r24 |
1a0a: fe 01 movw r30, r28 |
1a0c: 8a 81 ldd r24, Y+2 ; 0x02 |
1a0e: 9b 81 ldd r25, Y+3 ; 0x03 |
1a10: 9c 01 movw r18, r24 |
1a12: e9 01 movw r28, r18 |
1a14: 20 97 sbiw r28, 0x00 ; 0 |
1a16: e9 f6 brne .-70 ; 0x19d2 <malloc+0x24> |
1a18: 41 15 cp r20, r1 |
1a1a: 51 05 cpc r21, r1 |
1a1c: a9 f1 breq .+106 ; 0x1a88 <malloc+0xda> |
1a1e: ca 01 movw r24, r20 |
1a20: 86 1b sub r24, r22 |
1a22: 97 0b sbc r25, r23 |
1a24: 04 97 sbiw r24, 0x04 ; 4 |
1a26: 08 f4 brcc .+2 ; 0x1a2a <malloc+0x7c> |
1a28: ba 01 movw r22, r20 |
1a2a: e0 e0 ldi r30, 0x00 ; 0 |
1a2c: f0 e0 ldi r31, 0x00 ; 0 |
1a2e: 2a c0 rjmp .+84 ; 0x1a84 <malloc+0xd6> |
1a30: 8d 91 ld r24, X+ |
1a32: 9c 91 ld r25, X |
1a34: 11 97 sbiw r26, 0x01 ; 1 |
1a36: 84 17 cp r24, r20 |
1a38: 95 07 cpc r25, r21 |
1a3a: f9 f4 brne .+62 ; 0x1a7a <malloc+0xcc> |
1a3c: 64 17 cp r22, r20 |
1a3e: 75 07 cpc r23, r21 |
1a40: 81 f4 brne .+32 ; 0x1a62 <malloc+0xb4> |
1a42: 12 96 adiw r26, 0x02 ; 2 |
1a44: 8d 91 ld r24, X+ |
1a46: 9c 91 ld r25, X |
1a48: 13 97 sbiw r26, 0x03 ; 3 |
1a4a: 30 97 sbiw r30, 0x00 ; 0 |
1a4c: 19 f0 breq .+6 ; 0x1a54 <malloc+0xa6> |
1a4e: 93 83 std Z+3, r25 ; 0x03 |
1a50: 82 83 std Z+2, r24 ; 0x02 |
1a52: 04 c0 rjmp .+8 ; 0x1a5c <malloc+0xae> |
1a54: 90 93 9f 03 sts 0x039F, r25 |
1a58: 80 93 9e 03 sts 0x039E, r24 |
1a5c: fd 01 movw r30, r26 |
1a5e: 32 96 adiw r30, 0x02 ; 2 |
1a60: 4f c0 rjmp .+158 ; 0x1b00 <malloc+0x152> |
1a62: ca 01 movw r24, r20 |
1a64: 86 1b sub r24, r22 |
1a66: 97 0b sbc r25, r23 |
1a68: fd 01 movw r30, r26 |
1a6a: e8 0f add r30, r24 |
1a6c: f9 1f adc r31, r25 |
1a6e: 61 93 st Z+, r22 |
1a70: 71 93 st Z+, r23 |
1a72: 02 97 sbiw r24, 0x02 ; 2 |
1a74: 8d 93 st X+, r24 |
1a76: 9c 93 st X, r25 |
1a78: 43 c0 rjmp .+134 ; 0x1b00 <malloc+0x152> |
1a7a: fd 01 movw r30, r26 |
1a7c: 82 81 ldd r24, Z+2 ; 0x02 |
1a7e: 93 81 ldd r25, Z+3 ; 0x03 |
1a80: 9c 01 movw r18, r24 |
1a82: d9 01 movw r26, r18 |
1a84: 10 97 sbiw r26, 0x00 ; 0 |
1a86: a1 f6 brne .-88 ; 0x1a30 <malloc+0x82> |
1a88: 80 91 9c 03 lds r24, 0x039C |
1a8c: 90 91 9d 03 lds r25, 0x039D |
1a90: 89 2b or r24, r25 |
1a92: 41 f4 brne .+16 ; 0x1aa4 <malloc+0xf6> |
1a94: 80 91 73 00 lds r24, 0x0073 |
1a98: 90 91 74 00 lds r25, 0x0074 |
1a9c: 90 93 9d 03 sts 0x039D, r25 |
1aa0: 80 93 9c 03 sts 0x039C, r24 |
1aa4: 40 91 75 00 lds r20, 0x0075 |
1aa8: 50 91 76 00 lds r21, 0x0076 |
1aac: 41 15 cp r20, r1 |
1aae: 51 05 cpc r21, r1 |
1ab0: 41 f4 brne .+16 ; 0x1ac2 <malloc+0x114> |
1ab2: 4d b7 in r20, 0x3d ; 61 |
1ab4: 5e b7 in r21, 0x3e ; 62 |
1ab6: 80 91 71 00 lds r24, 0x0071 |
1aba: 90 91 72 00 lds r25, 0x0072 |
1abe: 48 1b sub r20, r24 |
1ac0: 59 0b sbc r21, r25 |
1ac2: 20 91 9c 03 lds r18, 0x039C |
1ac6: 30 91 9d 03 lds r19, 0x039D |
1aca: 24 17 cp r18, r20 |
1acc: 35 07 cpc r19, r21 |
1ace: b0 f4 brcc .+44 ; 0x1afc <malloc+0x14e> |
1ad0: ca 01 movw r24, r20 |
1ad2: 82 1b sub r24, r18 |
1ad4: 93 0b sbc r25, r19 |
1ad6: 86 17 cp r24, r22 |
1ad8: 97 07 cpc r25, r23 |
1ada: 80 f0 brcs .+32 ; 0x1afc <malloc+0x14e> |
1adc: ab 01 movw r20, r22 |
1ade: 4e 5f subi r20, 0xFE ; 254 |
1ae0: 5f 4f sbci r21, 0xFF ; 255 |
1ae2: 84 17 cp r24, r20 |
1ae4: 95 07 cpc r25, r21 |
1ae6: 50 f0 brcs .+20 ; 0x1afc <malloc+0x14e> |
1ae8: 42 0f add r20, r18 |
1aea: 53 1f adc r21, r19 |
1aec: 50 93 9d 03 sts 0x039D, r21 |
1af0: 40 93 9c 03 sts 0x039C, r20 |
1af4: f9 01 movw r30, r18 |
1af6: 61 93 st Z+, r22 |
1af8: 71 93 st Z+, r23 |
1afa: 02 c0 rjmp .+4 ; 0x1b00 <malloc+0x152> |
1afc: e0 e0 ldi r30, 0x00 ; 0 |
1afe: f0 e0 ldi r31, 0x00 ; 0 |
1b00: cf 01 movw r24, r30 |
1b02: df 91 pop r29 |
1b04: cf 91 pop r28 |
1b06: 08 95 ret |
00001b08 <free>: |
1b08: cf 93 push r28 |
1b0a: df 93 push r29 |
1b0c: 00 97 sbiw r24, 0x00 ; 0 |
1b0e: 09 f4 brne .+2 ; 0x1b12 <free+0xa> |
1b10: 50 c0 rjmp .+160 ; 0x1bb2 <free+0xaa> |
1b12: ec 01 movw r28, r24 |
1b14: 22 97 sbiw r28, 0x02 ; 2 |
1b16: 1b 82 std Y+3, r1 ; 0x03 |
1b18: 1a 82 std Y+2, r1 ; 0x02 |
1b1a: a0 91 9e 03 lds r26, 0x039E |
1b1e: b0 91 9f 03 lds r27, 0x039F |
1b22: 10 97 sbiw r26, 0x00 ; 0 |
1b24: 09 f1 breq .+66 ; 0x1b68 <free+0x60> |
1b26: 40 e0 ldi r20, 0x00 ; 0 |
1b28: 50 e0 ldi r21, 0x00 ; 0 |
1b2a: ac 17 cp r26, r28 |
1b2c: bd 07 cpc r27, r29 |
1b2e: 08 f1 brcs .+66 ; 0x1b72 <free+0x6a> |
1b30: bb 83 std Y+3, r27 ; 0x03 |
1b32: aa 83 std Y+2, r26 ; 0x02 |
1b34: fe 01 movw r30, r28 |
1b36: 21 91 ld r18, Z+ |
1b38: 31 91 ld r19, Z+ |
1b3a: e2 0f add r30, r18 |
1b3c: f3 1f adc r31, r19 |
1b3e: ae 17 cp r26, r30 |
1b40: bf 07 cpc r27, r31 |
1b42: 79 f4 brne .+30 ; 0x1b62 <free+0x5a> |
1b44: 8d 91 ld r24, X+ |
1b46: 9c 91 ld r25, X |
1b48: 11 97 sbiw r26, 0x01 ; 1 |
1b4a: 28 0f add r18, r24 |
1b4c: 39 1f adc r19, r25 |
1b4e: 2e 5f subi r18, 0xFE ; 254 |
1b50: 3f 4f sbci r19, 0xFF ; 255 |
1b52: 39 83 std Y+1, r19 ; 0x01 |
1b54: 28 83 st Y, r18 |
1b56: 12 96 adiw r26, 0x02 ; 2 |
1b58: 8d 91 ld r24, X+ |
1b5a: 9c 91 ld r25, X |
1b5c: 13 97 sbiw r26, 0x03 ; 3 |
1b5e: 9b 83 std Y+3, r25 ; 0x03 |
1b60: 8a 83 std Y+2, r24 ; 0x02 |
1b62: 41 15 cp r20, r1 |
1b64: 51 05 cpc r21, r1 |
1b66: 71 f4 brne .+28 ; 0x1b84 <free+0x7c> |
1b68: d0 93 9f 03 sts 0x039F, r29 |
1b6c: c0 93 9e 03 sts 0x039E, r28 |
1b70: 20 c0 rjmp .+64 ; 0x1bb2 <free+0xaa> |
1b72: 12 96 adiw r26, 0x02 ; 2 |
1b74: 8d 91 ld r24, X+ |
1b76: 9c 91 ld r25, X |
1b78: 13 97 sbiw r26, 0x03 ; 3 |
1b7a: ad 01 movw r20, r26 |
1b7c: 00 97 sbiw r24, 0x00 ; 0 |
1b7e: 11 f0 breq .+4 ; 0x1b84 <free+0x7c> |
1b80: dc 01 movw r26, r24 |
1b82: d3 cf rjmp .-90 ; 0x1b2a <free+0x22> |
1b84: fa 01 movw r30, r20 |
1b86: d3 83 std Z+3, r29 ; 0x03 |
1b88: c2 83 std Z+2, r28 ; 0x02 |
1b8a: 21 91 ld r18, Z+ |
1b8c: 31 91 ld r19, Z+ |
1b8e: e2 0f add r30, r18 |
1b90: f3 1f adc r31, r19 |
1b92: ce 17 cp r28, r30 |
1b94: df 07 cpc r29, r31 |
1b96: 69 f4 brne .+26 ; 0x1bb2 <free+0xaa> |
1b98: 88 81 ld r24, Y |
1b9a: 99 81 ldd r25, Y+1 ; 0x01 |
1b9c: 28 0f add r18, r24 |
1b9e: 39 1f adc r19, r25 |
1ba0: 2e 5f subi r18, 0xFE ; 254 |
1ba2: 3f 4f sbci r19, 0xFF ; 255 |
1ba4: fa 01 movw r30, r20 |
1ba6: 31 83 std Z+1, r19 ; 0x01 |
1ba8: 20 83 st Z, r18 |
1baa: 8a 81 ldd r24, Y+2 ; 0x02 |
1bac: 9b 81 ldd r25, Y+3 ; 0x03 |
1bae: 93 83 std Z+3, r25 ; 0x03 |
1bb0: 82 83 std Z+2, r24 ; 0x02 |
1bb2: df 91 pop r29 |
1bb4: cf 91 pop r28 |
1bb6: 08 95 ret |
00001bb8 <memset>: |
1bb8: dc 01 movw r26, r24 |
1bba: 01 c0 rjmp .+2 ; 0x1bbe <memset+0x6> |
1bbc: 6d 93 st X+, r22 |
1bbe: 41 50 subi r20, 0x01 ; 1 |
1bc0: 50 40 sbci r21, 0x00 ; 0 |
1bc2: e0 f7 brcc .-8 ; 0x1bbc <memset+0x4> |
1bc4: 08 95 ret |
00001bc6 <_exit>: |
1bc6: f8 94 cli |
00001bc8 <__stop_program>: |
1bc8: ff cf rjmp .-2 ; 0x1bc8 <__stop_program> |
/branches/V0.41-Hexa/BrushLess-Ctrl_V0_41_10A.sym |
---|
0,0 → 1,224 |
00000000 W __heap_end |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 W __vector_default |
00000000 T __vectors |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000026 T __ctors_end |
00000026 T __ctors_start |
00000026 T __dtors_end |
00000026 T __dtors_start |
00000026 W __init |
00000026 T __trampolines_end |
00000026 T __trampolines_start |
00000032 T __do_copy_data |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003e t .do_copy_data_loop |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
00000042 t .do_copy_data_start |
00000048 T __do_clear_bss |
00000050 t .do_clear_bss_loop |
00000052 t .do_clear_bss_start |
0000005c T __bad_interrupt |
0000005c W __vector_10 |
0000005c W __vector_12 |
0000005c W __vector_14 |
0000005c W __vector_15 |
0000005c W __vector_18 |
0000005c W __vector_2 |
0000005c W __vector_3 |
0000005c W __vector_6 |
0000005c W __vector_7 |
0000005e T SetPWM |
000000be T DebugAusgaben |
00000106 T PWM_Init |
00000126 T Wait |
00000134 T Delay |
00000140 T SollwertErmittlung |
0000023a T DelayM |
0000027c T RotBlink |
000002a4 T MotorTon |
0000045f W __stack |
00000738 T Anwerfen |
000008e6 T main |
00000c90 T __vector_13 |
00000ca4 T SendUart |
00000cf2 T Decode64 |
00000da2 T AddCRC |
00000dfe T SendOutData |
00000ec8 T uart_putchar |
00000ee2 T __vector_11 |
000010aa T WriteProgramData |
000010ac T DatenUebertragung |
000010e0 T UART_Init |
00001166 T __vector_9 |
000011f6 T Timer0_Init |
00001208 T SetDelay |
0000121c T CheckDelay |
00001230 T Delay_ms |
0000125a T ADC_Init |
0000126a T AdConvert |
000012d8 T MessAD |
00001302 T FastADConvert |
0000133a T InitPPM |
00001354 T __vector_8 |
00001376 T __vector_5 |
000014a4 T __vector_1 |
000014c2 T InitIC2_Slave |
000014d2 T __vector_17 |
00001574 T __vector_4 |
00001588 T Manuell |
00001666 T __vector_16 |
00001860 T __udivmodqi4 |
00001866 t __udivmodqi4_loop |
0000186e t __udivmodqi4_ep |
00001878 T __udivmodhi4 |
00001880 t __udivmodhi4_loop |
0000188e t __udivmodhi4_ep |
000018a0 T __udivmodsi4 |
000018ac t __udivmodsi4_loop |
000018c6 t __udivmodsi4_ep |
000018e4 T fdevopen |
0000197a T calloc |
000019ae T malloc |
00001b08 T free |
00001bb8 T memset |
00001bc6 T _exit |
00001bc6 W exit |
00001bc8 t __stop_program |
00001bca A __data_load_start |
00001bca T _etext |
00001be2 A __data_load_end |
00800060 D KommutierDelay |
00800060 D __data_start |
00800062 D ZeitFuerBerechnungen |
00800063 D MotorGestoppt |
00800064 D MaxPWM |
00800065 D ZeitZumAdWandeln |
00800066 D MotorAdresse |
00800067 D PPM_Betrieb |
00800068 d C.19.2035 |
0080006f D UebertragungAbgeschlossen |
00800070 D CompFreigabeTimer |
00800071 D __malloc_margin |
00800073 D __malloc_heap_start |
00800075 D __malloc_heap_end |
00800078 B PWM |
00800078 B __bss_start |
00800078 D __data_end |
00800078 D _edata |
0080007a B Strom |
0080007c B Strom_max |
0080007d B Mittelstrom |
0080007e B Drehzahl |
00800080 B I2C_Timeout |
00800082 B SIO_Timeout |
00800084 B SollDrehzahl |
00800086 B IstDrehzahl |
00800088 B MotorAnwerfen |
00800089 B CntKommutierungen |
0080008b B SIO_Drehzahl |
0080008d B IntRef |
0080008e b sollwert.2195 |
00800090 B SIO_Sollwert |
00800091 B SioTmp |
00800092 B NeuerDatensatzEmpfangen |
00800093 B MotorTest |
00800099 B AnzahlEmpfangsBytes |
0080009a b UartState.1915 |
0080009b b buf_ptr.1914 |
0080009c b crc2.1913 |
0080009d b crc1.1912 |
0080009e b crc.1911 |
008000a0 b ptr.1846 |
008000a2 B CountMilliseconds |
008000a4 b cnt.1843 |
008000a5 B PPM_Signal |
008000a7 B Timer1Overflow |
008000a8 B PPM_Timeout |
008000a9 B anz_ppm_werte |
008000aa b ppm.1857 |
008000ac b tim_alt.1856 |
008000ae B Byte_Counter |
008000af B Phase |
008000b0 B ShadowTCCR1A |
008000b1 B CompInterruptFreigabe |
008000b2 B HwVersion |
008000b3 B DrehZahlTabelle |
008002b3 B MinUpmPulse |
008002b5 B RuheStrom |
008002b7 B MeineSlaveAdresse |
008002b8 B SendeBuffer |
0080031c B Debug_Timer |
0080031e B RxdBuffer |
00800382 B DebugOut |
00800394 B Timer0Overflow |
00800395 B I2C_RXBuffer |
00800396 B __iob |
0080039c B __brkval |
0080039e B __flp |
008003a0 B __bss_end |
008003a0 N __heap_start |
008003a0 N _end |
00810000 N __eeprom_end |
/branches/V0.41-Hexa/PPM_Decode.lst |
---|
0,0 → 1,275 |
1 .file "PPM_Decode.c" |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __CCP__ = 0x34 |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
15 .Ltext0: |
16 .global InitPPM |
18 InitPPM: |
19 .LFB3: |
20 .LM1: |
21 /* prologue: function */ |
22 /* frame size = 0 */ |
23 .LM2: |
24 0000 8EB5 in r24,78-32 |
25 0002 806C ori r24,lo8(-64) |
26 0004 8EBD out 78-32,r24 |
27 .LM3: |
28 0006 8EB5 in r24,78-32 |
29 0008 8064 ori r24,lo8(64) |
30 000a 8EBD out 78-32,r24 |
31 .LM4: |
32 000c 89B7 in r24,89-32 |
33 000e 8062 ori r24,lo8(32) |
34 0010 89BF out 89-32,r24 |
35 .LM5: |
36 0012 89B7 in r24,89-32 |
37 0014 8460 ori r24,lo8(4) |
38 0016 89BF out 89-32,r24 |
39 /* epilogue start */ |
40 .LM6: |
41 0018 0895 ret |
42 .LFE3: |
44 .global __vector_8 |
46 __vector_8: |
47 .LFB4: |
48 .LM7: |
49 001a 1F92 push __zero_reg__ |
50 001c 0F92 push r0 |
51 001e 0FB6 in r0,__SREG__ |
52 0020 0F92 push r0 |
53 0022 1124 clr __zero_reg__ |
54 0024 8F93 push r24 |
55 /* prologue: Signal */ |
56 /* frame size = 0 */ |
57 .LM8: |
58 0026 8091 0000 lds r24,Timer1Overflow |
59 002a 8F5F subi r24,lo8(-(1)) |
60 002c 8093 0000 sts Timer1Overflow,r24 |
61 /* epilogue start */ |
62 .LM9: |
63 0030 8F91 pop r24 |
64 0032 0F90 pop r0 |
65 0034 0FBE out __SREG__,r0 |
66 0036 0F90 pop r0 |
67 0038 1F90 pop __zero_reg__ |
68 003a 1895 reti |
69 .LFE4: |
71 .global __vector_5 |
73 __vector_5: |
74 .LFB5: |
75 .LM10: |
76 003c 1F92 push __zero_reg__ |
77 003e 0F92 push r0 |
78 0040 0FB6 in r0,__SREG__ |
79 0042 0F92 push r0 |
80 0044 1124 clr __zero_reg__ |
81 0046 2F93 push r18 |
82 0048 3F93 push r19 |
83 004a 4F93 push r20 |
84 004c 5F93 push r21 |
85 004e 8F93 push r24 |
86 0050 9F93 push r25 |
87 /* prologue: Signal */ |
88 /* frame size = 0 */ |
89 .LM11: |
90 0052 0EB4 in __tmp_reg__,78-32 |
91 0054 06FE sbrs __tmp_reg__,6 |
92 0056 00C0 rjmp .L6 |
93 .LM12: |
94 0058 1092 0000 sts Timer1Overflow,__zero_reg__ |
95 .LM13: |
96 005c 86B5 in r24,70-32 |
97 005e 97B5 in r25,(70)+1-32 |
98 0060 9093 0000 sts (tim_alt.1856)+1,r25 |
99 0064 8093 0000 sts tim_alt.1856,r24 |
100 .LM14: |
101 0068 8EB5 in r24,78-32 |
102 006a 8F7B andi r24,lo8(-65) |
103 006c 8EBD out 78-32,r24 |
104 .LM15: |
105 006e 84E6 ldi r24,lo8(100) |
106 0070 8093 0000 sts PPM_Timeout,r24 |
107 0074 00C0 rjmp .L12 |
108 .L6: |
109 .LM16: |
110 0076 8EB5 in r24,78-32 |
111 0078 8064 ori r24,lo8(64) |
112 007a 8EBD out 78-32,r24 |
113 .LM17: |
114 007c 26B5 in r18,70-32 |
115 007e 37B5 in r19,(70)+1-32 |
116 0080 4091 0000 lds r20,Timer1Overflow |
117 0084 8091 0000 lds r24,tim_alt.1856 |
118 0088 9091 0000 lds r25,(tim_alt.1856)+1 |
119 008c 281B sub r18,r24 |
120 008e 390B sbc r19,r25 |
121 0090 942F mov r25,r20 |
122 0092 990F lsl r25 |
123 0094 80E0 ldi r24,lo8(0) |
124 0096 280F add r18,r24 |
125 0098 391F adc r19,r25 |
126 009a 85E0 ldi r24,5 |
127 009c 3695 1: lsr r19 |
128 009e 2795 ror r18 |
129 00a0 8A95 dec r24 |
130 00a2 01F4 brne 1b |
131 00a4 3093 0000 sts (ppm.1857)+1,r19 |
132 00a8 2093 0000 sts ppm.1857,r18 |
133 .LM18: |
134 00ac 2851 subi r18,lo8(280) |
135 00ae 3140 sbci r19,hi8(280) |
136 00b0 00F4 brsh .L8 |
137 00b2 88E1 ldi r24,lo8(280) |
138 00b4 91E0 ldi r25,hi8(280) |
139 00b6 9093 0000 sts (ppm.1857)+1,r25 |
140 00ba 8093 0000 sts ppm.1857,r24 |
141 .L8: |
142 .LM19: |
143 00be 4091 0000 lds r20,ppm.1857 |
144 00c2 5091 0000 lds r21,(ppm.1857)+1 |
145 00c6 4851 subi r20,lo8(-(-280)) |
146 00c8 5140 sbci r21,hi8(-(-280)) |
147 .LM20: |
148 00ca 8091 0000 lds r24,PPM_Signal |
149 00ce 9091 0000 lds r25,(PPM_Signal)+1 |
150 00d2 8417 cp r24,r20 |
151 00d4 9507 cpc r25,r21 |
152 00d6 00F4 brsh .L9 |
153 00d8 8091 0000 lds r24,PPM_Signal |
154 00dc 9091 0000 lds r25,(PPM_Signal)+1 |
155 00e0 0196 adiw r24,1 |
156 00e2 00C0 rjmp .L13 |
157 .L9: |
158 .LM21: |
159 00e4 8091 0000 lds r24,PPM_Signal |
160 00e8 9091 0000 lds r25,(PPM_Signal)+1 |
161 00ec 4817 cp r20,r24 |
162 00ee 5907 cpc r21,r25 |
163 00f0 00F4 brsh .L10 |
164 00f2 8091 0000 lds r24,PPM_Signal |
165 00f6 9091 0000 lds r25,(PPM_Signal)+1 |
166 00fa 0197 sbiw r24,1 |
167 .L13: |
168 00fc 9093 0000 sts (PPM_Signal)+1,r25 |
169 0100 8093 0000 sts PPM_Signal,r24 |
170 .L10: |
171 .LM22: |
172 0104 8091 0000 lds r24,PPM_Signal |
173 0108 9091 0000 lds r25,(PPM_Signal)+1 |
174 010c 9C01 movw r18,r24 |
175 010e 220F lsl r18 |
176 0110 331F rol r19 |
177 0112 220F lsl r18 |
178 0114 331F rol r19 |
179 0116 220F lsl r18 |
180 0118 331F rol r19 |
181 011a 281B sub r18,r24 |
182 011c 390B sbc r19,r25 |
183 011e 240F add r18,r20 |
184 0120 351F adc r19,r21 |
185 0122 83E0 ldi r24,3 |
186 0124 3695 1: lsr r19 |
187 0126 2795 ror r18 |
188 0128 8A95 dec r24 |
189 012a 01F4 brne 1b |
190 012c 3093 0000 sts (ppm.1857)+1,r19 |
191 0130 2093 0000 sts ppm.1857,r18 |
192 .LM23: |
193 0134 3093 0000 sts (PPM_Signal)+1,r19 |
194 0138 2093 0000 sts PPM_Signal,r18 |
195 .LM24: |
196 013c 8091 0000 lds r24,anz_ppm_werte |
197 0140 8F3F cpi r24,lo8(-1) |
198 0142 01F0 breq .L11 |
199 0144 8091 0000 lds r24,anz_ppm_werte |
200 0148 8F5F subi r24,lo8(-(1)) |
201 014a 8093 0000 sts anz_ppm_werte,r24 |
202 .L11: |
203 .LM25: |
204 014e 81E0 ldi r24,lo8(1) |
205 0150 8093 0000 sts ZeitZumAdWandeln,r24 |
206 .L12: |
207 /* epilogue start */ |
208 .LM26: |
209 0154 9F91 pop r25 |
210 0156 8F91 pop r24 |
211 0158 5F91 pop r21 |
212 015a 4F91 pop r20 |
213 015c 3F91 pop r19 |
214 015e 2F91 pop r18 |
215 0160 0F90 pop r0 |
216 0162 0FBE out __SREG__,r0 |
217 0164 0F90 pop r0 |
218 0166 1F90 pop __zero_reg__ |
219 0168 1895 reti |
220 .LFE5: |
222 .global __vector_1 |
224 __vector_1: |
225 .LFB6: |
226 .LM27: |
227 016a 1F92 push __zero_reg__ |
228 016c 0F92 push r0 |
229 016e 0FB6 in r0,__SREG__ |
230 0170 0F92 push r0 |
231 0172 1124 clr __zero_reg__ |
232 0174 8F93 push r24 |
233 /* prologue: Signal */ |
234 /* frame size = 0 */ |
235 .LM28: |
236 0176 8AB7 in r24,90-32 |
237 0178 8F7B andi r24,lo8(-65) |
238 017a 8ABF out 90-32,r24 |
239 /* epilogue start */ |
240 .LM29: |
241 017c 8F91 pop r24 |
242 017e 0F90 pop r0 |
243 0180 0FBE out __SREG__,r0 |
244 0182 0F90 pop r0 |
245 0184 1F90 pop __zero_reg__ |
246 0186 1895 reti |
247 .LFE6: |
249 .global PPM_Signal |
250 .global PPM_Signal |
251 .section .bss |
254 PPM_Signal: |
255 0000 0000 .skip 2,0 |
256 .global Timer1Overflow |
257 .global Timer1Overflow |
260 Timer1Overflow: |
261 0002 00 .skip 1,0 |
262 .global PPM_Timeout |
263 .global PPM_Timeout |
266 PPM_Timeout: |
267 0003 00 .skip 1,0 |
268 .global anz_ppm_werte |
269 .global anz_ppm_werte |
272 anz_ppm_werte: |
273 0004 00 .skip 1,0 |
274 .lcomm ppm.1857,2 |
275 .lcomm tim_alt.1856,2 |
324 .Letext0: |
DEFINED SYMBOLS |
*ABS*:00000000 PPM_Decode.c |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:2 *ABS*:0000003f __SREG__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:3 *ABS*:0000003e __SP_H__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:4 *ABS*:0000003d __SP_L__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:5 *ABS*:00000034 __CCP__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:18 .text:00000000 InitPPM |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:46 .text:0000001a __vector_8 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:260 .bss:00000002 Timer1Overflow |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:73 .text:0000003c __vector_5 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:274 .bss:00000007 tim_alt.1856 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:266 .bss:00000003 PPM_Timeout |
.bss:00000005 ppm.1857 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:254 .bss:00000000 PPM_Signal |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:272 .bss:00000004 anz_ppm_werte |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:224 .text:0000016a __vector_1 |
UNDEFINED SYMBOLS |
ZeitZumAdWandeln |
__do_clear_bss |
/branches/V0.41-Hexa/analog.lst |
---|
0,0 → 1,209 |
1 .file "analog.c" |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __CCP__ = 0x34 |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
15 .Ltext0: |
16 .global ADC_Init |
18 ADC_Init: |
19 .LFB3: |
20 .LM1: |
21 /* prologue: function */ |
22 /* frame size = 0 */ |
23 .LM2: |
24 0000 86EA ldi r24,lo8(-90) |
25 0002 86B9 out 38-32,r24 |
26 .LM3: |
27 0004 8091 0000 lds r24,IntRef |
28 0008 8760 ori r24,lo8(7) |
29 000a 87B9 out 39-32,r24 |
30 .LM4: |
31 000c 369A sbi 38-32,6 |
32 /* epilogue start */ |
33 .LM5: |
34 000e 0895 ret |
35 .LFE3: |
37 .global AdConvert |
39 AdConvert: |
40 .LFB4: |
41 .LM6: |
42 /* prologue: function */ |
43 /* frame size = 0 */ |
44 .LM7: |
45 0010 27B1 in r18,39-32 |
46 .LVL0: |
47 .LM8: |
48 0012 9091 0000 lds r25,IntRef |
49 0016 9660 ori r25,lo8(6) |
50 0018 97B9 out 39-32,r25 |
51 .LM9: |
52 001a 10BE out 80-32,__zero_reg__ |
53 .LM10: |
54 001c 83ED ldi r24,lo8(-45) |
55 001e 86B9 out 38-32,r24 |
56 .LM11: |
57 0020 349A sbi 38-32,4 |
58 .LM12: |
59 0022 97B9 out 39-32,r25 |
60 .LM13: |
61 0024 369A sbi 38-32,6 |
62 .L4: |
63 .LM14: |
64 0026 349B sbis 38-32,4 |
65 0028 00C0 rjmp .L4 |
66 .LM15: |
67 002a 27B9 out 39-32,r18 |
68 .LM16: |
69 002c 84B1 in r24,36-32 |
70 002e 95B1 in r25,(36)+1-32 |
71 .LM17: |
72 0030 2091 0000 lds r18,Strom |
73 0034 3091 0000 lds r19,(Strom)+1 |
74 .LVL1: |
75 0038 A901 movw r20,r18 |
76 .LVL2: |
77 003a 63E0 ldi r22,3 |
78 003c 440F 1: lsl r20 |
79 003e 551F rol r21 |
80 0040 6A95 dec r22 |
81 0042 01F4 brne 1b |
82 0044 421B sub r20,r18 |
83 0046 530B sbc r21,r19 |
84 0048 880F lsl r24 |
85 004a 991F rol r25 |
86 004c 880F lsl r24 |
87 004e 991F rol r25 |
88 0050 480F add r20,r24 |
89 0052 591F adc r21,r25 |
90 0054 83E0 ldi r24,3 |
91 0056 5695 1: lsr r21 |
92 0058 4795 ror r20 |
93 005a 8A95 dec r24 |
94 005c 01F4 brne 1b |
95 005e 5093 0000 sts (Strom)+1,r21 |
96 0062 4093 0000 sts Strom,r20 |
97 .LM18: |
98 0066 8091 0000 lds r24,Strom_max |
99 006a 90E0 ldi r25,lo8(0) |
100 006c 8417 cp r24,r20 |
101 006e 9507 cpc r25,r21 |
102 0070 00F4 brsh .L5 |
103 0072 4093 0000 sts Strom_max,r20 |
104 .L5: |
105 .LM19: |
106 0076 16B8 out 38-32,__zero_reg__ |
107 .LM20: |
108 0078 88E0 ldi r24,lo8(8) |
109 007a 80BF out 80-32,r24 |
110 /* epilogue start */ |
111 .LM21: |
112 007c 0895 ret |
113 .LFE4: |
115 .global MessAD |
117 MessAD: |
118 .LFB5: |
119 .LM22: |
120 .LVL3: |
121 /* prologue: function */ |
122 /* frame size = 0 */ |
123 .LM23: |
124 007e 27B1 in r18,39-32 |
125 .LVL4: |
126 .LM24: |
127 0080 9091 0000 lds r25,IntRef |
128 .LVL5: |
129 0084 982B or r25,r24 |
130 .LM25: |
131 0086 97B9 out 39-32,r25 |
132 .LM26: |
133 0088 10BE out 80-32,__zero_reg__ |
134 .LM27: |
135 008a 83ED ldi r24,lo8(-45) |
136 008c 86B9 out 38-32,r24 |
137 .LM28: |
138 008e 349A sbi 38-32,4 |
139 .LM29: |
140 0090 97B9 out 39-32,r25 |
141 .LM30: |
142 0092 369A sbi 38-32,6 |
143 .L9: |
144 .LM31: |
145 0094 349B sbis 38-32,4 |
146 0096 00C0 rjmp .L9 |
147 .LM32: |
148 0098 27B9 out 39-32,r18 |
149 .LM33: |
150 009a 16B8 out 38-32,__zero_reg__ |
151 .LM34: |
152 009c 88E0 ldi r24,lo8(8) |
153 009e 80BF out 80-32,r24 |
154 .LM35: |
155 00a0 24B1 in r18,36-32 |
156 00a2 35B1 in r19,(36)+1-32 |
157 .LVL6: |
158 .LM36: |
159 00a4 C901 movw r24,r18 |
160 /* epilogue start */ |
161 00a6 0895 ret |
162 .LFE5: |
164 .global FastADConvert |
166 FastADConvert: |
167 .LFB6: |
168 .LM37: |
169 /* prologue: function */ |
170 /* frame size = 0 */ |
171 .LM38: |
172 00a8 86E0 ldi r24,lo8(6) |
173 00aa 00D0 rcall MessAD |
174 00ac 9C01 movw r18,r24 |
175 .LVL7: |
176 00ae 220F lsl r18 |
177 00b0 331F rol r19 |
178 00b2 220F lsl r18 |
179 00b4 331F rol r19 |
180 00b6 293C cpi r18,201 |
181 00b8 3105 cpc r19,__zero_reg__ |
182 00ba 00F0 brlo .L13 |
183 00bc 28EC ldi r18,lo8(200) |
184 00be 30E0 ldi r19,hi8(200) |
185 .L13: |
186 .LM39: |
187 00c0 3093 0000 sts (Strom)+1,r19 |
188 00c4 2093 0000 sts Strom,r18 |
189 .LM40: |
190 00c8 8091 0000 lds r24,Strom_max |
191 00cc 90E0 ldi r25,lo8(0) |
192 00ce 8217 cp r24,r18 |
193 00d0 9307 cpc r25,r19 |
194 00d2 00F4 brsh .L14 |
195 00d4 2093 0000 sts Strom_max,r18 |
196 .L14: |
197 .LM41: |
198 00d8 16B8 out 38-32,__zero_reg__ |
199 .LM42: |
200 00da 88E0 ldi r24,lo8(8) |
201 00dc 80BF out 80-32,r24 |
202 /* epilogue start */ |
203 .LM43: |
204 00de 0895 ret |
205 .LFE6: |
255 .Letext0: |
DEFINED SYMBOLS |
*ABS*:00000000 analog.c |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:2 *ABS*:0000003f __SREG__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:3 *ABS*:0000003e __SP_H__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:4 *ABS*:0000003d __SP_L__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:5 *ABS*:00000034 __CCP__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:18 .text:00000000 ADC_Init |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:39 .text:00000010 AdConvert |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:117 .text:0000007e MessAD |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:166 .text:000000a8 FastADConvert |
UNDEFINED SYMBOLS |
IntRef |
Strom |
Strom_max |
/branches/V0.41-Hexa/edit/edit/edit.vcproj |
---|
0,0 → 1,180 |
<?xml version="1.0" encoding="gb2312"?> |
<VisualStudioProject |
ProjectType="Visual C++" |
Version="9.00" |
Name="edit" |
ProjectGUID="{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}" |
RootNamespace="edit" |
TargetFrameworkVersion="196613" |
> |
<Platforms> |
<Platform |
Name="Win32" |
/> |
</Platforms> |
<ToolFiles> |
</ToolFiles> |
<Configurations> |
<Configuration |
Name="Debug|Win32" |
OutputDirectory="$(SolutionDir)$(ConfigurationName)" |
IntermediateDirectory="$(ConfigurationName)" |
ConfigurationType="1" |
CharacterSet="2" |
> |
<Tool |
Name="VCPreBuildEventTool" |
/> |
<Tool |
Name="VCCustomBuildTool" |
/> |
<Tool |
Name="VCXMLDataGeneratorTool" |
/> |
<Tool |
Name="VCWebServiceProxyGeneratorTool" |
/> |
<Tool |
Name="VCMIDLTool" |
/> |
<Tool |
Name="VCCLCompilerTool" |
Optimization="0" |
MinimalRebuild="true" |
BasicRuntimeChecks="3" |
RuntimeLibrary="3" |
WarningLevel="3" |
DebugInformationFormat="4" |
/> |
<Tool |
Name="VCManagedResourceCompilerTool" |
/> |
<Tool |
Name="VCResourceCompilerTool" |
/> |
<Tool |
Name="VCPreLinkEventTool" |
/> |
<Tool |
Name="VCLinkerTool" |
GenerateDebugInformation="true" |
TargetMachine="1" |
/> |
<Tool |
Name="VCALinkTool" |
/> |
<Tool |
Name="VCManifestTool" |
/> |
<Tool |
Name="VCXDCMakeTool" |
/> |
<Tool |
Name="VCBscMakeTool" |
/> |
<Tool |
Name="VCFxCopTool" |
/> |
<Tool |
Name="VCAppVerifierTool" |
/> |
<Tool |
Name="VCPostBuildEventTool" |
/> |
</Configuration> |
<Configuration |
Name="Release|Win32" |
OutputDirectory="$(SolutionDir)$(ConfigurationName)" |
IntermediateDirectory="$(ConfigurationName)" |
ConfigurationType="1" |
CharacterSet="2" |
WholeProgramOptimization="1" |
> |
<Tool |
Name="VCPreBuildEventTool" |
/> |
<Tool |
Name="VCCustomBuildTool" |
/> |
<Tool |
Name="VCXMLDataGeneratorTool" |
/> |
<Tool |
Name="VCWebServiceProxyGeneratorTool" |
/> |
<Tool |
Name="VCMIDLTool" |
/> |
<Tool |
Name="VCCLCompilerTool" |
Optimization="2" |
EnableIntrinsicFunctions="true" |
RuntimeLibrary="2" |
EnableFunctionLevelLinking="true" |
WarningLevel="3" |
DebugInformationFormat="3" |
/> |
<Tool |
Name="VCManagedResourceCompilerTool" |
/> |
<Tool |
Name="VCResourceCompilerTool" |
/> |
<Tool |
Name="VCPreLinkEventTool" |
/> |
<Tool |
Name="VCLinkerTool" |
GenerateDebugInformation="true" |
OptimizeReferences="2" |
EnableCOMDATFolding="2" |
TargetMachine="1" |
/> |
<Tool |
Name="VCALinkTool" |
/> |
<Tool |
Name="VCManifestTool" |
/> |
<Tool |
Name="VCXDCMakeTool" |
/> |
<Tool |
Name="VCBscMakeTool" |
/> |
<Tool |
Name="VCFxCopTool" |
/> |
<Tool |
Name="VCAppVerifierTool" |
/> |
<Tool |
Name="VCPostBuildEventTool" |
/> |
</Configuration> |
</Configurations> |
<References> |
</References> |
<Files> |
<Filter |
Name="Ô´Îļþ" |
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" |
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" |
> |
</Filter> |
<Filter |
Name="Í·Îļþ" |
Filter="h;hpp;hxx;hm;inl;inc;xsd" |
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" |
> |
</Filter> |
<Filter |
Name="×ÊÔ´Îļþ" |
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" |
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" |
> |
</Filter> |
</Files> |
<Globals> |
</Globals> |
</VisualStudioProject> |
/branches/V0.41-Hexa/edit/edit.sln |
---|
0,0 → 1,20 |
|
Microsoft Visual Studio Solution File, Format Version 10.00 |
# Visual Studio 2008 |
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "edit", "edit\edit.vcproj", "{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}" |
EndProject |
Global |
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
Debug|Win32 = Debug|Win32 |
Release|Win32 = Release|Win32 |
EndGlobalSection |
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}.Debug|Win32.ActiveCfg = Debug|Win32 |
{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}.Debug|Win32.Build.0 = Debug|Win32 |
{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}.Release|Win32.ActiveCfg = Release|Win32 |
{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}.Release|Win32.Build.0 = Release|Win32 |
EndGlobalSection |
GlobalSection(SolutionProperties) = preSolution |
HideSolutionNode = FALSE |
EndGlobalSection |
EndGlobal |
/branches/V0.41-Hexa/main.c |
---|
84,42 → 84,42 |
void SetPWM(void) |
//############################################################################ |
{ |
unsigned char tmp_pwm; |
tmp_pwm = PWM; |
if(tmp_pwm > MaxPWM) // Strombegrenzung |
{ |
tmp_pwm = MaxPWM; |
PORTC |= ROT; |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
PORTD &= ~0x38; |
PORTC |= ROT; |
DebugOut.Analog[6]++; |
Strom--; |
} |
else |
{ |
#ifdef _32KHZ |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
unsigned char tmp_pwm; |
tmp_pwm = PWM; |
if(tmp_pwm > MaxPWM) // Strombegrenzung |
{ |
tmp_pwm = MaxPWM; |
PORTC |= ROT; |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
PORTD &= ~0x38; |
PORTC |= ROT; |
DebugOut.Analog[6]++; |
Strom--; |
} |
else |
{ |
#ifdef _32KHZ |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
#ifdef _16KHZ |
//OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
} |
#ifdef _16KHZ |
//OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
} |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
DebugOut.Analog[4] = OCR2; |
// DebugOut.Analog[5] = PWM; |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
DebugOut.Analog[4] = OCR2; |
// DebugOut.Analog[5] = PWM; |
} |
//############################################################################ |
127,12 → 127,12 |
void PWM_Init(void) |
//############################################################################ |
{ |
PWM_OFF; |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
/* TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
*/ |
PWM_OFF; |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
/* TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
*/ |
} |
//############################################################################ |
140,21 → 140,21 |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
while((TCNT0 - dauer) & 0x80); |
dauer = (unsigned char)TCNT0 + dauer; |
while((TCNT0 - dauer) & 0x80); |
} |
void RotBlink(unsigned char anz) |
{ |
sei(); // Interrupts ein |
while(anz--) |
{ |
PORTC |= ROT; |
Delay_ms(300); |
PORTC &= ~ROT; |
Delay_ms(300); |
} |
Delay_ms(1000); |
sei(); // Interrupts ein |
while(anz--) |
{ |
PORTC |= ROT; |
Delay_ms(300); |
PORTC &= ~ROT; |
Delay_ms(300); |
} |
Delay_ms(1000); |
} |
//############################################################################ |
162,54 → 162,54 |
char Anwerfen(unsigned char pwm) |
//############################################################################ |
{ |
unsigned long timer = 300,i; |
DISABLE_SENSE_INT; |
PWM = 5; |
SetPWM(); |
Manuell(); |
// Delay_ms(200); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) |
{ |
FastADConvert(); |
if(Strom > 120) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
} |
PWM = pwm; |
while(1) |
{ |
for(i=0;i<timer; i++) |
{ |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
Wait(100); // warten |
} |
DebugAusgaben(); |
FastADConvert(); |
if(Strom > 60) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
timer-= timer/15+1; |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return(1); } |
Manuell(); |
Phase++; |
Phase %= 6; |
AdConvert(); |
PWM = pwm; |
SetPWM(); |
if(SENSE) |
{ |
PORTD ^= GRUEN; |
} |
} |
unsigned long timer = 300,i; |
DISABLE_SENSE_INT; |
PWM = 5; |
SetPWM(); |
Manuell(); |
// Delay_ms(200); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) |
{ |
FastADConvert(); |
if(Strom > 120) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
} |
PWM = pwm; |
while(1) |
{ |
for(i=0;i<timer; i++) |
{ |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
Wait(100); // warten |
} |
DebugAusgaben(); |
FastADConvert(); |
if(Strom > 60) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
timer-= timer/15+1; |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return(1); } |
Manuell(); |
Phase++; |
Phase %= 6; |
AdConvert(); |
PWM = pwm; |
SetPWM(); |
if(SENSE) |
{ |
PORTD ^= GRUEN; |
} |
} |
} |
/* |
227,32 → 227,32 |
#define TEST_STROMGRENZE 120 |
unsigned char DelayM(unsigned int timer) |
{ |
while(timer--) |
{ |
FastADConvert(); |
if(Strom > (TEST_STROMGRENZE + RuheStrom)) |
{ |
FETS_OFF; |
return(1); |
} |
} |
return(0); |
while(timer--) |
{ |
FastADConvert(); |
if(Strom > (TEST_STROMGRENZE + RuheStrom)) |
{ |
FETS_OFF; |
return(1); |
} |
} |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
{ |
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
asm volatile(""); |
} |
return(0); |
while(timer--) |
{ |
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
asm volatile(""); |
} |
return(0); |
} |
/* |
void ShowSense(void) |
{ |
if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
*/ |
266,126 → 266,126 |
void MotorTon(void) |
//############################################################################ |
{ |
unsigned char ADR_TAB[7] = {0,0,0,1,1,2,2}; |
unsigned int timer = 300,i; |
unsigned int t = 0; |
unsigned char anz = 0,MosfetOkay = 0, grenze = 50; |
unsigned char ADR_TAB[7] = {0,0,0,1,1,2,2}; |
unsigned int timer = 300,i; |
unsigned int t = 0; |
unsigned char anz = 0,MosfetOkay = 0, grenze = 50; |
PORTC &= ~ROT; |
Delay_ms(300 * ADR_TAB[MotorAdresse]); |
DISABLE_SENSE_INT; |
cli();//Globale Interrupts Ausschalten |
uart_putchar('\n'); |
STEUER_OFF; |
Strom_max = 0; |
DelayM(50); |
RuheStrom = Strom_max; |
// uart_putchar(RuheStrom + 'A'); |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Strom = 0; |
/* |
LOW_B_EIN; |
HIGH_A_EIN; |
if(DelayM(3)) |
{ |
anz = 1; |
uart_putchar('1'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_A_EIN; |
HIGH_B_EIN; |
if(DelayM(3)) |
{ |
anz = 2; |
uart_putchar('2'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_B_EIN; // Low C ein |
HIGH_C_EIN; // High B ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('3'); |
} |
FETS_OFF; |
Delay(1000); |
LOW_A_EIN; // Low A ein; und A gegen C |
HIGH_C_EIN; // High C ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('7'); |
} |
FETS_OFF; |
DelayM(10000); |
PORTC &= ~ROT; |
Delay_ms(300 * ADR_TAB[MotorAdresse]); |
DISABLE_SENSE_INT; |
cli();//Globale Interrupts Ausschalten |
uart_putchar('\n'); |
STEUER_OFF; |
Strom_max = 0; |
DelayM(50); |
RuheStrom = Strom_max; |
// uart_putchar(RuheStrom + 'A'); |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Strom = 0; |
/* |
LOW_B_EIN; |
HIGH_A_EIN; |
if(DelayM(3)) |
{ |
anz = 1; |
uart_putchar('1'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_A_EIN; |
HIGH_B_EIN; |
if(DelayM(3)) |
{ |
anz = 2; |
uart_putchar('2'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_B_EIN; // Low C ein |
HIGH_C_EIN; // High B ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('3'); |
} |
FETS_OFF; |
Delay(1000); |
LOW_A_EIN; // Low A ein; und A gegen C |
HIGH_C_EIN; // High C ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('7'); |
} |
FETS_OFF; |
DelayM(10000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
*/ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ LOW-Mosfets auf Schalten und Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_A_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_A_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;} |
Delay(5); |
} |
Delay(10000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
*/ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ LOW-Mosfets auf Schalten und Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_A_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_A_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;} |
Delay(5); |
} |
Delay(10000); |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_B_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_B_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); FETS_OFF;break;} |
Delay(5); |
} |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_B_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_B_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); FETS_OFF;break;} |
Delay(5); |
} |
Strom = 0; |
Delay(10000); |
Strom = 0; |
Delay(10000); |
for(i=0;i<t;i++) |
{ |
LOW_C_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_C_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); FETS_OFF; break;} |
Delay(5); |
} |
for(i=0;i<t;i++) |
{ |
LOW_C_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_C_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); FETS_OFF; break;} |
Delay(5); |
} |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_A; |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
LOW_C_EIN; // Low C ein |
Strom = 0; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_A; |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
LOW_C_EIN; // Low C ein |
Strom = 0; |
#define TONDAUER 40000 |
#define SOUND_E 1 // 1 |
#define SOUND1_A 300 |
392,104 → 392,104 |
#define SOUND2_A 330 |
#define SOUND3_A 360 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_A_EIN; // Test A |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_A_EIN; // Test A |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
LOW_A_EIN; // Low A ein |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
FETS_OFF; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Low-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// SENSE_B; |
LOW_A_EIN; // Low A ein |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(0) > 128) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
FETS_OFF; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Low-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// SENSE_B; |
LOW_A_EIN; // Low A ein |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(0) > 128) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
//++++++++++++++++++++++++++++++++++++ |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(2) > 128) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(1) > 128) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
//++++++++++++++++++++++++++++++++++++ |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(2) > 128) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(1) > 128) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
sei();//Globale Interrupts Einschalten |
// Delay_ms(250 * MotorAdresse); |
/* |
LOW_A_EIN; // Low B ein |
#define SOUND8_A 650 |
for(i=0; i<(TONDAUER / SOUND8_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
PORTB = 0; |
Delay(SOUND8_A); |
} |
*/ |
Delay_ms(300 * (3-ADR_TAB[MotorAdresse])); |
if(!(MosfetOkay & 0x01)) { anz = 1; UDR='A'; } else |
if(!(MosfetOkay & 0x02)) { anz = 2; UDR='B'; } else |
if(!(MosfetOkay & 0x04)) { anz = 3; UDR='C'; } else |
if(!(MosfetOkay & 0x08)) { anz = 4; UDR='a'; } else |
if(!(MosfetOkay & 0x10)) { anz = 5; UDR='b'; } else |
if(!(MosfetOkay & 0x20)) { anz = 6; UDR='c'; } |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
sei();//Globale Interrupts Einschalten |
// Delay_ms(250 * MotorAdresse); |
/* |
LOW_A_EIN; // Low B ein |
#define SOUND8_A 650 |
for(i=0; i<(TONDAUER / SOUND8_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
PORTB = 0; |
Delay(SOUND8_A); |
} |
*/ |
Delay_ms(300 * (3-ADR_TAB[MotorAdresse])); |
if(!(MosfetOkay & 0x01)) { anz = 1; UDR='A'; } else |
if(!(MosfetOkay & 0x02)) { anz = 2; UDR='B'; } else |
if(!(MosfetOkay & 0x04)) { anz = 3; UDR='C'; } else |
if(!(MosfetOkay & 0x08)) { anz = 4; UDR='a'; } else |
if(!(MosfetOkay & 0x10)) { anz = 5; UDR='b'; } else |
if(!(MosfetOkay & 0x20)) { anz = 6; UDR='c'; } |
// if(anz) Delay_ms(1000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
RotBlink(anz); |
uart_putchar('.'); |
// if(anz) Delay_ms(1000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
RotBlink(anz); |
uart_putchar('.'); |
} |
//############################################################################ |
497,46 → 497,46 |
unsigned char SollwertErmittlung(void) |
//############################################################################ |
{ |
static unsigned int sollwert = 0; |
unsigned int ppm; |
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
PPM_Betrieb = 0; |
ICP_INT_DISABLE; |
PORTC &= ~ROT; |
} |
else |
if(anz_ppm_werte > 20) // es gibt gültige PPM-Daten |
{ |
PPM_Betrieb = 1; |
ppm = PPM_Signal; |
if(ppm > 300) ppm = 0; // ungültiges Signal |
if(ppm > 200) ppm = 200; |
if(ppm <= MIN_PPM) sollwert = 0; |
else |
{ |
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM); |
} |
PORTC &= ~ROT; |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
PORTC |= ROT; |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
PPM_Betrieb = 0; |
PORTC &= ~ROT; |
ICP_INT_DISABLE; |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
return(sollwert); |
static unsigned int sollwert = 0; |
unsigned int ppm; |
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
PPM_Betrieb = 0; |
ICP_INT_DISABLE; |
PORTC &= ~ROT; |
} |
else |
if(anz_ppm_werte > 20) // es gibt gültige PPM-Daten |
{ |
PPM_Betrieb = 1; |
ppm = PPM_Signal; |
if(ppm > 300) ppm = 0; // ungültiges Signal |
if(ppm > 200) ppm = 200; |
if(ppm <= MIN_PPM) sollwert = 0; |
else |
{ |
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM); |
} |
PORTC &= ~ROT; |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
PORTC |= ROT; |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
PPM_Betrieb = 0; |
PORTC &= ~ROT; |
ICP_INT_DISABLE; |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
return(sollwert); |
} |
546,227 → 546,227 |
int main (void) |
//############################################################################ |
{ |
char altPhase = 0; |
int test = 0; |
unsigned int Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
char altPhase = 0; |
int test = 0; |
unsigned int Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
DDRC = 0x08; |
PORTC = 0x08; |
DDRD = 0x3A; |
PORTD = 0x00; |
DDRB = 0x0E; |
PORTB = 0x31; |
DDRC = 0x08; |
PORTC = 0x08; |
DDRD = 0x3A; |
PORTD = 0x00; |
DDRB = 0x0E; |
PORTB = 0x31; |
#if (MOTORADRESSE == 0) |
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl |
for(test=0;test<500;test++); |
if(PINB & ADR1) |
{ |
if (PINB & ADR2) MotorAdresse = 1; |
else MotorAdresse = 2; |
} |
else |
{ |
if (PINB & ADR2) MotorAdresse = 3; |
else MotorAdresse = 4; |
} |
HwVersion = 11; |
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl |
for(test=0;test<500;test++); |
if(PINB & ADR1) |
{ |
if (PINB & ADR2) MotorAdresse = 1; |
else MotorAdresse = 2; |
} |
else |
{ |
if (PINB & ADR2) MotorAdresse = 3; |
else MotorAdresse = 4; |
} |
HwVersion = 11; |
#else |
MotorAdresse = MOTORADRESSE; |
HwVersion = 10; |
MotorAdresse = MOTORADRESSE; |
HwVersion = 10; |
#endif |
if(PIND & 0x80) {HwVersion = 12; IntRef = 0xc0;} |
DDRD = 0xBA; |
UART_Init(); |
Timer0_Init(); |
sei();//Globale Interrupts Einschalten |
// Am Blinken erkennt man die richtige Motoradresse |
/* |
for(test=0;test<5;test++) |
{ |
if(test == MotorAdresse) PORTD |= GRUEN; |
Delay_ms(150); |
PORTD &= ~GRUEN; |
Delay_ms(250); |
} |
if(PIND & 0x80) {HwVersion = 12; IntRef = 0xc0;} |
DDRD = 0xBA; |
UART_Init(); |
Timer0_Init(); |
sei();//Globale Interrupts Einschalten |
Delay_ms(500); |
*/ |
// UART_Init(); // war doppelt |
PWM_Init(); |
// Am Blinken erkennt man die richtige Motoradresse |
/* |
for(test=0;test<5;test++) |
{ |
if(test == MotorAdresse) PORTD |= GRUEN; |
Delay_ms(150); |
PORTD &= ~GRUEN; |
Delay_ms(250); |
} |
InitIC2_Slave(0x50); |
InitPPM(); |
Delay_ms(500); |
*/ |
// UART_Init(); // war doppelt |
PWM_Init(); |
Blink = SetDelay(101); |
Blink2 = SetDelay(102); |
MinUpmPulse = SetDelay(103); |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)) |
{ |
if(SollwertErmittlung()) break; |
} |
InitIC2_Slave(0x50); |
InitPPM(); |
GRN_ON; |
PWM = 0; |
Blink = SetDelay(101); |
Blink2 = SetDelay(102); |
MinUpmPulse = SetDelay(103); |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)) |
{ |
if(SollwertErmittlung()) break; |
} |
SetPWM(); |
GRN_ON; |
PWM = 0; |
SFIOR = 0x08; // Analog Comperator ein |
ADMUX = 1; |
SetPWM(); |
MinUpmPulse = SetDelay(10); |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
SFIOR = 0x08; // Analog Comperator ein |
ADMUX = 1; |
if(!SollwertErmittlung()) MotorTon(); |
//MotorTon(); |
PORTB = 0x31; // Pullups wieder einschalten |
MinUpmPulse = SetDelay(10); |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung |
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder |
if(!SollwertErmittlung()) MotorTon(); |
//MotorTon(); |
PORTB = 0x31; // Pullups wieder einschalten |
while (1) |
{ |
//ShowSense(); |
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung |
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
while (1) |
{ |
//ShowSense(); |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt |
{ |
MotorGestoppt = 0; |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
MinUpmPulse = SetDelay(250); // Timeout, falls ein Motor stehen bleibt |
altPhase = Phase; |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!PWM) // Sollwert == 0 |
{ |
MotorAnwerfen = 0; // kein Startversuch |
ZeitFuerBerechnungen = 0; |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(MotorGestopptTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
STEUER_OFF; |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
MotorGestopptTimer = SetDelay(1500); |
} |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
if(MotorGestoppt && !TEST_SCHUB) PWM = 0; |
SetPWM(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
{ |
if(MotorGestoppt) |
{ |
GRN_ON; |
FastADConvert(); |
} |
if(SIO_DEBUG) |
{ |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
} |
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung |
if(CheckDelay(MittelstromTimer)) |
{ |
MittelstromTimer = SetDelay(50); // alle 50ms |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
else if(Mittelstrom > Strom) Mittelstrom--; |
if(Strom > MAX_STROM) MaxPWM -= MaxPWM / 32; |
if((Mittelstrom > LIMIT_STROM))// Strom am Limit? |
{ |
if(MaxPWM) MaxPWM--;// dann die Maximale PWM herunterfahren |
PORTC |= ROT; |
} |
else |
{ |
if(MaxPWM < MAX_PWM) MaxPWM++; |
} |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt |
{ |
MotorGestoppt = 0; |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
MinUpmPulse = SetDelay(250); // Timeout, falls ein Motor stehen bleibt |
altPhase = Phase; |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!PWM) // Sollwert == 0 |
{ |
MotorAnwerfen = 0; // kein Startversuch |
ZeitFuerBerechnungen = 0; |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(MotorGestopptTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
STEUER_OFF; |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
MotorGestopptTimer = SetDelay(1500); |
} |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
{ |
DrehzahlMessTimer = SetDelay(10); |
SIO_Drehzahl = CntKommutierungen;//(6 * CntKommutierungen) / (POLANZAHL / 2); |
CntKommutierungen = 0; |
// if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
} |
if(MotorGestoppt && !TEST_SCHUB) PWM = 0; |
SetPWM(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
{ |
if(MotorGestoppt) |
{ |
GRN_ON; |
FastADConvert(); |
} |
if(SIO_DEBUG) |
{ |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
} |
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung |
if(CheckDelay(MittelstromTimer)) |
{ |
MittelstromTimer = SetDelay(50); // alle 50ms |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
else if(Mittelstrom > Strom) Mittelstrom--; |
if(Strom > MAX_STROM) MaxPWM -= MaxPWM / 32; |
if((Mittelstrom > LIMIT_STROM))// Strom am Limit? |
{ |
if(MaxPWM) MaxPWM--;// dann die Maximale PWM herunterfahren |
PORTC |= ROT; |
} |
else |
{ |
if(MaxPWM < MAX_PWM) MaxPWM++; |
} |
} |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
{ |
DrehzahlMessTimer = SetDelay(10); |
SIO_Drehzahl = CntKommutierungen;//(6 * CntKommutierungen) / (POLANZAHL / 2); |
CntKommutierungen = 0; |
// if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
} |
#if TEST_SCHUB == 1 |
{ |
if(CheckDelay(TestschubTimer)) |
{ |
TestschubTimer = SetDelay(1500); |
switch(test) |
{ |
case 0: PWM = 50; test++; break; |
case 1: PWM = 130; test++; break; |
case 2: PWM = 60; test++; break; |
case 3: PWM = 140; test++; break; |
case 4: PWM = 150; test = 0; break; |
default: test = 0; |
} |
} |
} |
{ |
if(CheckDelay(TestschubTimer)) |
{ |
TestschubTimer = SetDelay(1500); |
switch(test) |
{ |
case 0: PWM = 50; test++; break; |
case 1: PWM = 130; test++; break; |
case 2: PWM = 60; test++; break; |
case 3: PWM = 140; test++; break; |
case 4: PWM = 150; test = 0; break; |
default: test = 0; |
} |
} |
} |
#endif |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
{ |
MotorGestoppt = 1; |
DISABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
if(MotorAnwerfen) |
{ |
PORTC &= ~ROT; |
Strom_max = 0; |
MotorAnwerfen = 0; |
if(Anwerfen(10)) |
{ |
GRN_ON; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(20); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 15; |
SetPWM(); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) // kurz Durchstarten |
{ |
if(Strom > LIMIT_STROM/2) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
MotorAnwerfen = 1; |
} |
} |
// Drehzahlmessung wieder aufsetzen |
DrehzahlMessTimer = SetDelay(50); |
altPhase = 7; |
} |
else if(SollwertErmittlung()) MotorAnwerfen = 1; |
} |
} |
} // ZeitFuerBerechnungen |
} // while(1) - Hauptschleife |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
{ |
MotorGestoppt = 1; |
DISABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
if(MotorAnwerfen) |
{ |
PORTC &= ~ROT; |
Strom_max = 0; |
MotorAnwerfen = 0; |
if(Anwerfen(10)) |
{ |
GRN_ON; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(20); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 15; |
SetPWM(); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) // kurz Durchstarten |
{ |
if(Strom > LIMIT_STROM/2) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
MotorAnwerfen = 1; |
} |
} |
// Drehzahlmessung wieder aufsetzen |
DrehzahlMessTimer = SetDelay(50); |
altPhase = 7; |
} |
else if(SollwertErmittlung()) MotorAnwerfen = 1; |
} |
} |
} // ZeitFuerBerechnungen |
} // while(1) - Hauptschleife |
} |
/branches/V0.41-Hexa/main.lst |
---|
0,0 → 1,2273 |
1 .file "main.c" |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __CCP__ = 0x34 |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
15 .Ltext0: |
16 .global SetPWM |
18 SetPWM: |
19 .LFB3: |
20 .LM1: |
21 /* prologue: function */ |
22 /* frame size = 0 */ |
23 .LM2: |
24 0000 4091 0000 lds r20,PWM |
25 .LVL0: |
26 .LM3: |
27 0004 8091 0000 lds r24,MaxPWM |
28 .LVL1: |
29 0008 8417 cp r24,r20 |
30 000a 00F4 brsh .L2 |
31 .LM4: |
32 000c AB9A sbi 53-32,3 |
33 000e 482F mov r20,r24 |
34 .L2: |
35 .LM5: |
36 0010 2091 0000 lds r18,Strom |
37 0014 3091 0000 lds r19,(Strom)+1 |
38 0018 293C cpi r18,201 |
39 001a 3105 cpc r19,__zero_reg__ |
40 001c 00F0 brlo .L3 |
41 .LM6: |
42 001e 1BBC out (74)+1-32,__zero_reg__ |
43 0020 1ABC out 74-32,__zero_reg__ |
44 0022 19BC out (72)+1-32,__zero_reg__ |
45 0024 18BC out 72-32,__zero_reg__ |
46 0026 13BC out 67-32,__zero_reg__ |
47 .LM7: |
48 0028 82B3 in r24,50-32 |
49 .LVL2: |
50 002a 877C andi r24,lo8(-57) |
51 002c 82BB out 50-32,r24 |
52 .LM8: |
53 002e AB9A sbi 53-32,3 |
54 .LM9: |
55 0030 8091 0000 lds r24,DebugOut+14 |
56 0034 9091 0000 lds r25,(DebugOut+14)+1 |
57 0038 0196 adiw r24,1 |
58 003a 9093 0000 sts (DebugOut+14)+1,r25 |
59 003e 8093 0000 sts DebugOut+14,r24 |
60 .LM10: |
61 0042 2150 subi r18,lo8(-(-1)) |
62 0044 3040 sbci r19,hi8(-(-1)) |
63 0046 3093 0000 sts (Strom)+1,r19 |
64 004a 2093 0000 sts Strom,r18 |
65 004e 0895 ret |
66 .LVL3: |
67 .L3: |
68 .LM11: |
69 0050 842F mov r24,r20 |
70 .LVL4: |
71 0052 90E0 ldi r25,lo8(0) |
72 0054 9BBD out (74)+1-32,r25 |
73 0056 8ABD out 74-32,r24 |
74 0058 99BD out (72)+1-32,r25 |
75 005a 88BD out 72-32,r24 |
76 005c 43BD out 67-32,r20 |
77 005e 0895 ret |
78 .LFE3: |
80 .global DebugAusgaben |
82 DebugAusgaben: |
83 .LFB4: |
84 .LM12: |
85 /* prologue: function */ |
86 /* frame size = 0 */ |
87 .LM13: |
88 0060 E0E0 ldi r30,lo8(DebugOut+2) |
89 0062 F0E0 ldi r31,hi8(DebugOut+2) |
90 0064 8091 0000 lds r24,Strom |
91 0068 9091 0000 lds r25,(Strom)+1 |
92 006c 9093 0000 sts (DebugOut+2)+1,r25 |
93 0070 8093 0000 sts DebugOut+2,r24 |
94 .LM14: |
95 0074 8091 0000 lds r24,Mittelstrom |
96 0078 8093 0000 sts DebugOut+4,r24 |
97 007c 1382 std Z+3,__zero_reg__ |
98 .LM15: |
99 007e 8091 0000 lds r24,SIO_Drehzahl |
100 0082 9091 0000 lds r25,(SIO_Drehzahl)+1 |
101 0086 9093 0000 sts (DebugOut+6)+1,r25 |
102 008a 8093 0000 sts DebugOut+6,r24 |
103 .LM16: |
104 008e 8091 0000 lds r24,PPM_Signal |
105 0092 9091 0000 lds r25,(PPM_Signal)+1 |
106 0096 9093 0000 sts (DebugOut+8)+1,r25 |
107 009a 8093 0000 sts DebugOut+8,r24 |
108 .LM17: |
109 009e 83B5 in r24,67-32 |
110 00a0 8093 0000 sts DebugOut+10,r24 |
111 00a4 1186 std Z+9,__zero_reg__ |
112 /* epilogue start */ |
113 .LM18: |
114 00a6 0895 ret |
115 .LFE4: |
117 .global PWM_Init |
119 PWM_Init: |
120 .LFB5: |
121 .LM19: |
122 /* prologue: function */ |
123 /* frame size = 0 */ |
124 .LM20: |
125 00a8 1BBC out (74)+1-32,__zero_reg__ |
126 00aa 1ABC out 74-32,__zero_reg__ |
127 00ac 19BC out (72)+1-32,__zero_reg__ |
128 00ae 18BC out 72-32,__zero_reg__ |
129 00b0 13BC out 67-32,__zero_reg__ |
130 00b2 91E0 ldi r25,lo8(1) |
131 00b4 9FBD out 79-32,r25 |
132 00b6 81E4 ldi r24,lo8(65) |
133 00b8 85BD out 69-32,r24 |
134 00ba 8EE0 ldi r24,lo8(14) |
135 00bc 87BB out 55-32,r24 |
136 00be 88B3 in r24,56-32 |
137 00c0 817F andi r24,lo8(-15) |
138 00c2 88BB out 56-32,r24 |
139 .LM21: |
140 00c4 9EBD out 78-32,r25 |
141 /* epilogue start */ |
142 .LM22: |
143 00c6 0895 ret |
144 .LFE5: |
146 .global Wait |
148 Wait: |
149 .LFB6: |
150 .LM23: |
151 .LVL5: |
152 /* prologue: function */ |
153 /* frame size = 0 */ |
154 .LM24: |
155 00c8 92B7 in r25,82-32 |
156 00ca 980F add r25,r24 |
157 .L11: |
158 .LM25: |
159 00cc 82B7 in r24,82-32 |
160 .LVL6: |
161 00ce 891B sub r24,r25 |
162 .LVL7: |
163 00d0 87FD sbrc r24,7 |
164 00d2 00C0 rjmp .L11 |
165 /* epilogue start */ |
166 .LM26: |
167 00d4 0895 ret |
168 .LFE6: |
170 .global Delay |
172 Delay: |
173 .LFB10: |
174 .LM27: |
175 .LVL8: |
176 /* prologue: function */ |
177 /* frame size = 0 */ |
178 00d6 00C0 rjmp .L15 |
179 .L16: |
180 .LM28: |
181 00d8 0197 sbiw r24,1 |
182 .LVL9: |
183 .L15: |
184 .LM29: |
185 00da 0097 sbiw r24,0 |
186 00dc 01F4 brne .L16 |
187 .LM30: |
188 00de 80E0 ldi r24,lo8(0) |
189 .LVL10: |
190 /* epilogue start */ |
191 00e0 0895 ret |
192 .LFE10: |
194 .global SollwertErmittlung |
196 SollwertErmittlung: |
197 .LFB12: |
198 .LM31: |
199 /* prologue: function */ |
200 /* frame size = 0 */ |
201 .LM32: |
202 00e2 8091 0000 lds r24,I2C_Timeout |
203 00e6 9091 0000 lds r25,(I2C_Timeout)+1 |
204 00ea 892B or r24,r25 |
205 00ec 01F0 breq .+2 |
206 00ee 00C0 rjmp .L19 |
207 .LM33: |
208 00f0 8091 0000 lds r24,SIO_Timeout |
209 00f4 9091 0000 lds r25,(SIO_Timeout)+1 |
210 00f8 892B or r24,r25 |
211 00fa 01F0 breq .L20 |
212 .LM34: |
213 00fc 9091 0000 lds r25,SIO_Sollwert |
214 0100 8FEF ldi r24,lo8(-1) |
215 0102 989F mul r25,r24 |
216 0104 C001 movw r24,r0 |
217 0106 1124 clr r1 |
218 0108 68EC ldi r22,lo8(200) |
219 010a 70E0 ldi r23,hi8(200) |
220 010c 00D0 rcall __udivmodhi4 |
221 010e 7093 0000 sts (sollwert.2195)+1,r23 |
222 0112 6093 0000 sts sollwert.2195,r22 |
223 .LM35: |
224 0116 1092 0000 sts PPM_Betrieb,__zero_reg__ |
225 .LM36: |
226 011a 89B7 in r24,89-32 |
227 011c 8F7D andi r24,lo8(-33) |
228 011e 89BF out 89-32,r24 |
229 0120 00C0 rjmp .L26 |
230 .L20: |
231 .LM37: |
232 0122 8091 0000 lds r24,anz_ppm_werte |
233 0126 8531 cpi r24,lo8(21) |
234 0128 00F0 brlo .L22 |
235 .LM38: |
236 012a 81E0 ldi r24,lo8(1) |
237 012c 8093 0000 sts PPM_Betrieb,r24 |
238 .LM39: |
239 0130 2091 0000 lds r18,PPM_Signal |
240 0134 3091 0000 lds r19,(PPM_Signal)+1 |
241 .LVL11: |
242 .LM40: |
243 0138 41E0 ldi r20,hi8(301) |
244 013a 2D32 cpi r18,lo8(301) |
245 013c 3407 cpc r19,r20 |
246 013e 00F4 brsh .L23 |
247 .LM41: |
248 0140 293C cpi r18,201 |
249 0142 3105 cpc r19,__zero_reg__ |
250 0144 00F4 brsh .L24 |
251 .LM42: |
252 0146 2B30 cpi r18,11 |
253 0148 3105 cpc r19,__zero_reg__ |
254 014a 00F4 brsh .L25 |
255 .L23: |
256 014c 1092 0000 sts (sollwert.2195)+1,__zero_reg__ |
257 0150 1092 0000 sts sollwert.2195,__zero_reg__ |
258 0154 00C0 rjmp .L26 |
259 .L24: |
260 0156 28EC ldi r18,lo8(200) |
261 0158 30E0 ldi r19,hi8(200) |
262 .L25: |
263 .LM43: |
264 015a 8CEF ldi r24,lo8(252) |
265 015c 90E0 ldi r25,hi8(252) |
266 015e AC01 movw r20,r24 |
267 0160 249F mul r18,r20 |
268 0162 C001 movw r24,r0 |
269 0164 259F mul r18,r21 |
270 0166 900D add r25,r0 |
271 0168 349F mul r19,r20 |
272 016a 900D add r25,r0 |
273 016c 1124 clr r1 |
274 016e 885D subi r24,lo8(-(-2520)) |
275 0170 9940 sbci r25,hi8(-(-2520)) |
276 0172 64EB ldi r22,lo8(180) |
277 0174 70E0 ldi r23,hi8(180) |
278 0176 00D0 rcall __udivmodhi4 |
279 0178 6D5F subi r22,lo8(-(3)) |
280 017a 7F4F sbci r23,hi8(-(3)) |
281 017c 7093 0000 sts (sollwert.2195)+1,r23 |
282 0180 6093 0000 sts sollwert.2195,r22 |
283 .L26: |
284 .LM44: |
285 0184 AB98 cbi 53-32,3 |
286 0186 00C0 rjmp .L21 |
287 .LVL12: |
288 .L22: |
289 .LM45: |
290 0188 8091 0000 lds r24,sollwert.2195 |
291 018c 9091 0000 lds r25,(sollwert.2195)+1 |
292 0190 0097 sbiw r24,0 |
293 0192 01F0 breq .L27 |
294 0194 0197 sbiw r24,1 |
295 0196 9093 0000 sts (sollwert.2195)+1,r25 |
296 019a 8093 0000 sts sollwert.2195,r24 |
297 .L27: |
298 .LM46: |
299 019e AB9A sbi 53-32,3 |
300 01a0 00C0 rjmp .L21 |
301 .L19: |
302 .LM47: |
303 01a2 8091 0000 lds r24,I2C_RXBuffer |
304 01a6 8093 0000 sts sollwert.2195,r24 |
305 01aa 1092 0000 sts sollwert.2195+1,__zero_reg__ |
306 .LM48: |
307 01ae 1092 0000 sts PPM_Betrieb,__zero_reg__ |
308 .LM49: |
309 01b2 AB98 cbi 53-32,3 |
310 .LM50: |
311 01b4 89B7 in r24,89-32 |
312 01b6 8F7D andi r24,lo8(-33) |
313 01b8 89BF out 89-32,r24 |
314 .LVL13: |
315 .L21: |
316 .LM51: |
317 01ba 8091 0000 lds r24,sollwert.2195 |
318 01be 9091 0000 lds r25,(sollwert.2195)+1 |
319 01c2 8F3F cpi r24,255 |
320 01c4 9105 cpc r25,__zero_reg__ |
321 01c6 01F0 breq .L28 |
322 01c8 00F0 brlo .L28 |
323 01ca 8FEF ldi r24,lo8(255) |
324 01cc 90E0 ldi r25,hi8(255) |
325 01ce 9093 0000 sts (sollwert.2195)+1,r25 |
326 01d2 8093 0000 sts sollwert.2195,r24 |
327 .L28: |
328 .LM52: |
329 01d6 8091 0000 lds r24,sollwert.2195 |
330 /* epilogue start */ |
331 01da 0895 ret |
332 .LFE12: |
334 .global DelayM |
336 DelayM: |
337 .LFB9: |
338 .LM53: |
339 .LVL14: |
340 01dc CF93 push r28 |
341 01de DF93 push r29 |
342 /* prologue: function */ |
343 /* frame size = 0 */ |
344 01e0 EC01 movw r28,r24 |
345 01e2 00C0 rjmp .L31 |
346 .LVL15: |
347 .L33: |
348 .LM54: |
349 01e4 00D0 rcall FastADConvert |
350 01e6 2197 sbiw r28,1 |
351 .LM55: |
352 01e8 8091 0000 lds r24,RuheStrom |
353 01ec 9091 0000 lds r25,(RuheStrom)+1 |
354 01f0 8858 subi r24,lo8(-(120)) |
355 01f2 9F4F sbci r25,hi8(-(120)) |
356 01f4 2091 0000 lds r18,Strom |
357 01f8 3091 0000 lds r19,(Strom)+1 |
358 01fc 8217 cp r24,r18 |
359 01fe 9307 cpc r25,r19 |
360 0200 00F4 brsh .L31 |
361 .LM56: |
362 0202 82B3 in r24,50-32 |
363 0204 877C andi r24,lo8(-57) |
364 0206 82BB out 50-32,r24 |
365 0208 88B3 in r24,56-32 |
366 020a 817F andi r24,lo8(-15) |
367 020c 88BB out 56-32,r24 |
368 020e 81E0 ldi r24,lo8(1) |
369 0210 00C0 rjmp .L32 |
370 .LVL16: |
371 .L31: |
372 .LM57: |
373 0212 2097 sbiw r28,0 |
374 0214 01F4 brne .L33 |
375 0216 80E0 ldi r24,lo8(0) |
376 .L32: |
377 /* epilogue start */ |
378 .LM58: |
379 0218 DF91 pop r29 |
380 021a CF91 pop r28 |
381 .LVL17: |
382 021c 0895 ret |
383 .LFE9: |
385 .global RotBlink |
387 RotBlink: |
388 .LFB7: |
389 .LM59: |
390 .LVL18: |
391 021e 1F93 push r17 |
392 /* prologue: function */ |
393 /* frame size = 0 */ |
394 0220 182F mov r17,r24 |
395 .LM60: |
396 /* #APP */ |
397 ; 149 "main.c" 1 |
398 0222 7894 sei |
399 ; 0 "" 2 |
400 /* #NOAPP */ |
401 0224 00C0 rjmp .L37 |
402 .LVL19: |
403 .L38: |
404 .LM61: |
405 0226 AB9A sbi 53-32,3 |
406 .LM62: |
407 0228 8CE2 ldi r24,lo8(300) |
408 022a 91E0 ldi r25,hi8(300) |
409 022c 00D0 rcall Delay_ms |
410 .LM63: |
411 022e AB98 cbi 53-32,3 |
412 .LM64: |
413 0230 8CE2 ldi r24,lo8(300) |
414 0232 91E0 ldi r25,hi8(300) |
415 0234 00D0 rcall Delay_ms |
416 0236 1150 subi r17,lo8(-(-1)) |
417 .LVL20: |
418 .L37: |
419 .LM65: |
420 0238 1123 tst r17 |
421 023a 01F4 brne .L38 |
422 .LM66: |
423 023c 88EE ldi r24,lo8(1000) |
424 023e 93E0 ldi r25,hi8(1000) |
425 0240 00D0 rcall Delay_ms |
426 /* epilogue start */ |
427 .LM67: |
428 0242 1F91 pop r17 |
429 .LVL21: |
430 0244 0895 ret |
431 .LFE7: |
433 .global MotorTon |
435 MotorTon: |
436 .LFB11: |
437 .LM68: |
438 0246 AF92 push r10 |
439 0248 BF92 push r11 |
440 024a DF92 push r13 |
441 024c EF92 push r14 |
442 024e FF92 push r15 |
443 0250 0F93 push r16 |
444 0252 1F93 push r17 |
445 0254 DF93 push r29 |
446 0256 CF93 push r28 |
447 0258 CDB7 in r28,__SP_L__ |
448 025a DEB7 in r29,__SP_H__ |
449 025c 2797 sbiw r28,7 |
450 025e 0FB6 in __tmp_reg__,__SREG__ |
451 0260 F894 cli |
452 0262 DEBF out __SP_H__,r29 |
453 0264 0FBE out __SREG__,__tmp_reg__ |
454 0266 CDBF out __SP_L__,r28 |
455 /* prologue: function */ |
456 /* frame size = 7 */ |
457 .LM69: |
458 0268 DE01 movw r26,r28 |
459 026a 1196 adiw r26,1 |
460 026c E0E0 ldi r30,lo8(C.19.2035) |
461 026e F0E0 ldi r31,hi8(C.19.2035) |
462 0270 87E0 ldi r24,lo8(7) |
463 .L41: |
464 0272 0190 ld r0,Z+ |
465 0274 0D92 st X+,r0 |
466 0276 8150 subi r24,lo8(-(-1)) |
467 0278 01F4 brne .L41 |
468 .LM70: |
469 027a AB98 cbi 53-32,3 |
470 .LM71: |
471 027c 8091 0000 lds r24,MotorAdresse |
472 0280 FE01 movw r30,r28 |
473 0282 E80F add r30,r24 |
474 0284 F11D adc r31,__zero_reg__ |
475 0286 8181 ldd r24,Z+1 |
476 0288 90E0 ldi r25,lo8(0) |
477 028a 2CE2 ldi r18,lo8(300) |
478 028c 31E0 ldi r19,hi8(300) |
479 028e AC01 movw r20,r24 |
480 0290 429F mul r20,r18 |
481 0292 C001 movw r24,r0 |
482 0294 439F mul r20,r19 |
483 0296 900D add r25,r0 |
484 0298 529F mul r21,r18 |
485 029a 900D add r25,r0 |
486 029c 1124 clr r1 |
487 029e 00D0 rcall Delay_ms |
488 .LM72: |
489 02a0 1092 0000 sts CompInterruptFreigabe,__zero_reg__ |
490 02a4 4398 cbi 40-32,3 |
491 .LM73: |
492 /* #APP */ |
493 ; 277 "main.c" 1 |
494 02a6 F894 cli |
495 ; 0 "" 2 |
496 .LM74: |
497 /* #NOAPP */ |
498 02a8 8AE0 ldi r24,lo8(10) |
499 02aa 00D0 rcall uart_putchar |
500 .LM75: |
501 02ac 82B3 in r24,50-32 |
502 02ae 877C andi r24,lo8(-57) |
503 02b0 82BB out 50-32,r24 |
504 02b2 1BBC out (74)+1-32,__zero_reg__ |
505 02b4 1ABC out 74-32,__zero_reg__ |
506 02b6 19BC out (72)+1-32,__zero_reg__ |
507 02b8 18BC out 72-32,__zero_reg__ |
508 02ba 13BC out 67-32,__zero_reg__ |
509 02bc 81E0 ldi r24,lo8(1) |
510 02be 8FBD out 79-32,r24 |
511 02c0 81E4 ldi r24,lo8(65) |
512 02c2 85BD out 69-32,r24 |
513 02c4 8EE0 ldi r24,lo8(14) |
514 02c6 87BB out 55-32,r24 |
515 02c8 88B3 in r24,56-32 |
516 02ca 817F andi r24,lo8(-15) |
517 02cc 88BB out 56-32,r24 |
518 .LM76: |
519 02ce 1092 0000 sts Strom_max,__zero_reg__ |
520 .LM77: |
521 02d2 82E3 ldi r24,lo8(50) |
522 02d4 90E0 ldi r25,hi8(50) |
523 02d6 00D0 rcall DelayM |
524 .LM78: |
525 02d8 8091 0000 lds r24,Strom_max |
526 02dc 8093 0000 sts RuheStrom,r24 |
527 02e0 1092 0000 sts RuheStrom+1,__zero_reg__ |
528 .LM79: |
529 02e4 1092 0000 sts (Strom)+1,__zero_reg__ |
530 02e8 1092 0000 sts Strom,__zero_reg__ |
531 .LM80: |
532 02ec 8CB1 in r24,44-32 |
533 02ee 8032 cpi r24,lo8(32) |
534 02f0 01F0 breq .L42 |
535 02f2 38EE ldi r19,lo8(1000) |
536 02f4 E32E mov r14,r19 |
537 02f6 33E0 ldi r19,hi8(1000) |
538 02f8 F32E mov r15,r19 |
539 .LVL22: |
540 02fa 82E3 ldi r24,lo8(50) |
541 .LVL23: |
542 02fc 00C0 rjmp .L43 |
543 .LVL24: |
544 .L42: |
545 02fe 8FE5 ldi r24,lo8(95) |
546 0300 00D0 rcall uart_putchar |
547 0302 EE24 clr r14 |
548 0304 EA94 dec r14 |
549 0306 FE2C mov r15,r14 |
550 .LVL25: |
551 0308 88E2 ldi r24,lo8(40) |
552 .LVL26: |
553 .L43: |
554 .LM81: |
555 030a 1092 0000 sts (Strom)+1,__zero_reg__ |
556 030e 1092 0000 sts Strom,__zero_reg__ |
557 0312 00E0 ldi r16,lo8(0) |
558 0314 10E0 ldi r17,hi8(0) |
559 .LVL27: |
560 .LM82: |
561 0316 A82E mov r10,r24 |
562 0318 BB24 clr r11 |
563 .L45: |
564 .LM83: |
565 031a 939A sbi 50-32,3 |
566 .LM84: |
567 031c 81E0 ldi r24,lo8(1) |
568 031e 90E0 ldi r25,hi8(1) |
569 .LVL28: |
570 0320 00D0 rcall DelayM |
571 .LM85: |
572 0322 82B3 in r24,50-32 |
573 0324 877C andi r24,lo8(-57) |
574 0326 82BB out 50-32,r24 |
575 0328 88B3 in r24,56-32 |
576 032a 817F andi r24,lo8(-15) |
577 032c 88BB out 56-32,r24 |
578 .LBB46: |
579 .LBB47: |
580 .LM86: |
581 .LBE47: |
582 .LBE46: |
583 .LM87: |
584 032e C39A sbi 56-32,3 |
585 .LM88: |
586 0330 81E0 ldi r24,lo8(1) |
587 0332 90E0 ldi r25,hi8(1) |
588 0334 00D0 rcall DelayM |
589 .LM89: |
590 0336 82B3 in r24,50-32 |
591 0338 877C andi r24,lo8(-57) |
592 033a 82BB out 50-32,r24 |
593 033c 88B3 in r24,56-32 |
594 033e 817F andi r24,lo8(-15) |
595 0340 88BB out 56-32,r24 |
596 .LM90: |
597 0342 8091 0000 lds r24,RuheStrom |
598 0346 9091 0000 lds r25,(RuheStrom)+1 |
599 034a 8A0D add r24,r10 |
600 034c 9B1D adc r25,r11 |
601 034e 2091 0000 lds r18,Strom |
602 0352 3091 0000 lds r19,(Strom)+1 |
603 0356 8217 cp r24,r18 |
604 0358 9307 cpc r25,r19 |
605 035a 00F0 brlo .L44 |
606 .LBB48: |
607 .LBB49: |
608 .LM91: |
609 .LBE49: |
610 .LBE48: |
611 .LM92: |
612 035c 0F5F subi r16,lo8(-(1)) |
613 035e 1F4F sbci r17,hi8(-(1)) |
614 0360 0E15 cp r16,r14 |
615 0362 1F05 cpc r17,r15 |
616 0364 00F0 brlo .L45 |
617 0366 DD24 clr r13 |
618 .LVL29: |
619 0368 00C0 rjmp .L46 |
620 .LVL30: |
621 .L44: |
622 .LM93: |
623 036a 84E3 ldi r24,lo8(52) |
624 036c 00D0 rcall uart_putchar |
625 036e 82B3 in r24,50-32 |
626 0370 877C andi r24,lo8(-57) |
627 0372 82BB out 50-32,r24 |
628 0374 88B3 in r24,56-32 |
629 0376 817F andi r24,lo8(-15) |
630 0378 88BB out 56-32,r24 |
631 037a 24E0 ldi r18,lo8(4) |
632 037c D22E mov r13,r18 |
633 .LVL31: |
634 .L46: |
635 037e 80E1 ldi r24,lo8(10000) |
636 0380 97E2 ldi r25,hi8(10000) |
637 .LVL32: |
638 0382 00C0 rjmp .L47 |
639 .L48: |
640 .LBB50: |
641 .LBB51: |
642 .LM94: |
643 .L47: |
644 .LM95: |
645 0384 0197 sbiw r24,1 |
646 0386 5FEF ldi r21,hi8(-1) |
647 0388 8F3F cpi r24,lo8(-1) |
648 038a 9507 cpc r25,r21 |
649 038c 01F4 brne .L48 |
650 .LBE51: |
651 .LBE50: |
652 .LM96: |
653 038e 1092 0000 sts (Strom)+1,__zero_reg__ |
654 0392 1092 0000 sts Strom,__zero_reg__ |
655 0396 00E0 ldi r16,lo8(0) |
656 0398 10E0 ldi r17,hi8(0) |
657 .LVL33: |
658 .L50: |
659 .LM97: |
660 039a 949A sbi 50-32,4 |
661 .LM98: |
662 039c 81E0 ldi r24,lo8(1) |
663 039e 90E0 ldi r25,hi8(1) |
664 .LVL34: |
665 03a0 00D0 rcall DelayM |
666 .LM99: |
667 03a2 82B3 in r24,50-32 |
668 03a4 877C andi r24,lo8(-57) |
669 03a6 82BB out 50-32,r24 |
670 03a8 88B3 in r24,56-32 |
671 03aa 817F andi r24,lo8(-15) |
672 03ac 88BB out 56-32,r24 |
673 .LBB52: |
674 .LBB53: |
675 .LM100: |
676 .LBE53: |
677 .LBE52: |
678 .LM101: |
679 03ae C29A sbi 56-32,2 |
680 .LM102: |
681 03b0 81E0 ldi r24,lo8(1) |
682 03b2 90E0 ldi r25,hi8(1) |
683 03b4 00D0 rcall DelayM |
684 .LM103: |
685 03b6 82B3 in r24,50-32 |
686 03b8 877C andi r24,lo8(-57) |
687 03ba 82BB out 50-32,r24 |
688 03bc 88B3 in r24,56-32 |
689 03be 817F andi r24,lo8(-15) |
690 03c0 88BB out 56-32,r24 |
691 .LM104: |
692 03c2 8091 0000 lds r24,RuheStrom |
693 03c6 9091 0000 lds r25,(RuheStrom)+1 |
694 03ca 8A0D add r24,r10 |
695 03cc 9B1D adc r25,r11 |
696 03ce 2091 0000 lds r18,Strom |
697 03d2 3091 0000 lds r19,(Strom)+1 |
698 03d6 8217 cp r24,r18 |
699 03d8 9307 cpc r25,r19 |
700 03da 00F0 brlo .L49 |
701 .LBB54: |
702 .LBB55: |
703 .LM105: |
704 .LBE55: |
705 .LBE54: |
706 .LM106: |
707 03dc 0F5F subi r16,lo8(-(1)) |
708 03de 1F4F sbci r17,hi8(-(1)) |
709 03e0 0E15 cp r16,r14 |
710 03e2 1F05 cpc r17,r15 |
711 03e4 00F0 brlo .L50 |
712 03e6 00C0 rjmp .L51 |
713 .L49: |
714 .LM107: |
715 03e8 85E3 ldi r24,lo8(53) |
716 03ea 00D0 rcall uart_putchar |
717 03ec 82B3 in r24,50-32 |
718 03ee 877C andi r24,lo8(-57) |
719 03f0 82BB out 50-32,r24 |
720 03f2 88B3 in r24,56-32 |
721 03f4 817F andi r24,lo8(-15) |
722 03f6 88BB out 56-32,r24 |
723 03f8 95E0 ldi r25,lo8(5) |
724 03fa D92E mov r13,r25 |
725 .L51: |
726 .LM108: |
727 03fc 1092 0000 sts (Strom)+1,__zero_reg__ |
728 0400 1092 0000 sts Strom,__zero_reg__ |
729 0404 80E1 ldi r24,lo8(10000) |
730 0406 97E2 ldi r25,hi8(10000) |
731 .LVL35: |
732 0408 00C0 rjmp .L52 |
733 .L53: |
734 .LBB56: |
735 .LBB57: |
736 .LM109: |
737 .L52: |
738 .LM110: |
739 040a 0197 sbiw r24,1 |
740 040c 2FEF ldi r18,hi8(-1) |
741 040e 8F3F cpi r24,lo8(-1) |
742 0410 9207 cpc r25,r18 |
743 0412 01F4 brne .L53 |
744 0414 00E0 ldi r16,lo8(0) |
745 0416 10E0 ldi r17,hi8(0) |
746 .LVL36: |
747 .L55: |
748 .LBE57: |
749 .LBE56: |
750 .LM111: |
751 0418 959A sbi 50-32,5 |
752 .LM112: |
753 041a 81E0 ldi r24,lo8(1) |
754 041c 90E0 ldi r25,hi8(1) |
755 .LVL37: |
756 041e 00D0 rcall DelayM |
757 .LM113: |
758 0420 82B3 in r24,50-32 |
759 0422 877C andi r24,lo8(-57) |
760 0424 82BB out 50-32,r24 |
761 0426 88B3 in r24,56-32 |
762 0428 817F andi r24,lo8(-15) |
763 042a 88BB out 56-32,r24 |
764 .LBB58: |
765 .LBB59: |
766 .LM114: |
767 .LBE59: |
768 .LBE58: |
769 .LM115: |
770 042c C19A sbi 56-32,1 |
771 .LM116: |
772 042e 81E0 ldi r24,lo8(1) |
773 0430 90E0 ldi r25,hi8(1) |
774 0432 00D0 rcall DelayM |
775 .LM117: |
776 0434 82B3 in r24,50-32 |
777 0436 877C andi r24,lo8(-57) |
778 0438 82BB out 50-32,r24 |
779 043a 88B3 in r24,56-32 |
780 043c 817F andi r24,lo8(-15) |
781 043e 88BB out 56-32,r24 |
782 .LM118: |
783 0440 8091 0000 lds r24,RuheStrom |
784 0444 9091 0000 lds r25,(RuheStrom)+1 |
785 0448 8A0D add r24,r10 |
786 044a 9B1D adc r25,r11 |
787 044c 2091 0000 lds r18,Strom |
788 0450 3091 0000 lds r19,(Strom)+1 |
789 0454 8217 cp r24,r18 |
790 0456 9307 cpc r25,r19 |
791 0458 00F0 brlo .L54 |
792 .LBB60: |
793 .LBB61: |
794 .LM119: |
795 .LBE61: |
796 .LBE60: |
797 .LM120: |
798 045a 0F5F subi r16,lo8(-(1)) |
799 045c 1F4F sbci r17,hi8(-(1)) |
800 045e 0E15 cp r16,r14 |
801 0460 1F05 cpc r17,r15 |
802 0462 00F0 brlo .L55 |
803 0464 00C0 rjmp .L110 |
804 .L54: |
805 .LM121: |
806 0466 86E3 ldi r24,lo8(54) |
807 0468 00D0 rcall uart_putchar |
808 046a 82B3 in r24,50-32 |
809 046c 877C andi r24,lo8(-57) |
810 046e 82BB out 50-32,r24 |
811 0470 88B3 in r24,56-32 |
812 0472 817F andi r24,lo8(-15) |
813 0474 88BB out 56-32,r24 |
814 0476 86E0 ldi r24,lo8(6) |
815 0478 D82E mov r13,r24 |
816 047a 00C0 rjmp .L108 |
817 .L110: |
818 .LM122: |
819 047c DD20 tst r13 |
820 047e 01F0 breq .L58 |
821 .L108: |
822 0480 8D2D mov r24,r13 |
823 0482 00D0 rcall RotBlink |
824 0484 00C0 rjmp .L108 |
825 .L58: |
826 .LM123: |
827 0486 8091 0000 lds r24,IntRef |
828 048a 87B9 out 39-32,r24 |
829 .LM124: |
830 048c 82B3 in r24,50-32 |
831 048e 877C andi r24,lo8(-57) |
832 0490 82BB out 50-32,r24 |
833 0492 88B3 in r24,56-32 |
834 0494 817F andi r24,lo8(-15) |
835 0496 88BB out 56-32,r24 |
836 .LM125: |
837 0498 949A sbi 50-32,4 |
838 .LM126: |
839 049a 959A sbi 50-32,5 |
840 .LM127: |
841 049c 1092 0000 sts (Strom)+1,__zero_reg__ |
842 04a0 1092 0000 sts Strom,__zero_reg__ |
843 04a4 00E0 ldi r16,lo8(0) |
844 04a6 10E0 ldi r17,hi8(0) |
845 .LVL38: |
846 04a8 FF24 clr r15 |
847 .LVL39: |
848 .L63: |
849 .LM128: |
850 04aa C39A sbi 56-32,3 |
851 .LBB62: |
852 .LBB63: |
853 .LM129: |
854 .LBE63: |
855 .LBE62: |
856 .LM130: |
857 04ac 80E0 ldi r24,lo8(0) |
858 .LVL40: |
859 04ae 00D0 rcall MessAD |
860 04b0 C397 sbiw r24,51 |
861 04b2 00F0 brlo .L59 |
862 04b4 41E0 ldi r20,lo8(1) |
863 04b6 F42A or r15,r20 |
864 04b8 00C0 rjmp .L60 |
865 .L59: |
866 04ba 5EEF ldi r21,lo8(-2) |
867 04bc F522 and r15,r21 |
868 .L60: |
869 .LM131: |
870 04be 18BA out 56-32,__zero_reg__ |
871 04c0 8CE2 ldi r24,lo8(300) |
872 04c2 91E0 ldi r25,hi8(300) |
873 .LVL41: |
874 04c4 00C0 rjmp .L61 |
875 .L62: |
876 .LBB64: |
877 .LBB65: |
878 .LM132: |
879 .L61: |
880 .LM133: |
881 04c6 0197 sbiw r24,1 |
882 04c8 2FEF ldi r18,hi8(-1) |
883 04ca 8F3F cpi r24,lo8(-1) |
884 04cc 9207 cpc r25,r18 |
885 04ce 01F4 brne .L62 |
886 .LBE65: |
887 .LBE64: |
888 .LM134: |
889 04d0 0F5F subi r16,lo8(-(1)) |
890 04d2 1F4F sbci r17,hi8(-(1)) |
891 04d4 0937 cpi r16,121 |
892 04d6 1105 cpc r17,__zero_reg__ |
893 04d8 01F4 brne .L63 |
894 .LM135: |
895 04da 82B3 in r24,50-32 |
896 .LVL42: |
897 04dc 877C andi r24,lo8(-57) |
898 04de 82BB out 50-32,r24 |
899 04e0 88B3 in r24,56-32 |
900 04e2 817F andi r24,lo8(-15) |
901 04e4 88BB out 56-32,r24 |
902 .LM136: |
903 04e6 939A sbi 50-32,3 |
904 .LM137: |
905 04e8 959A sbi 50-32,5 |
906 04ea 00E0 ldi r16,lo8(0) |
907 04ec 10E0 ldi r17,hi8(0) |
908 .LVL43: |
909 .L68: |
910 .LM138: |
911 04ee C29A sbi 56-32,2 |
912 .LBB66: |
913 .LBB67: |
914 .LM139: |
915 .LBE67: |
916 .LBE66: |
917 .LM140: |
918 04f0 81E0 ldi r24,lo8(1) |
919 .LVL44: |
920 04f2 00D0 rcall MessAD |
921 04f4 C397 sbiw r24,51 |
922 04f6 00F0 brlo .L64 |
923 04f8 42E0 ldi r20,lo8(2) |
924 04fa F42A or r15,r20 |
925 04fc 00C0 rjmp .L65 |
926 .L64: |
927 04fe 5DEF ldi r21,lo8(-3) |
928 0500 F522 and r15,r21 |
929 .L65: |
930 .LM141: |
931 0502 18BA out 56-32,__zero_reg__ |
932 0504 8CE2 ldi r24,lo8(300) |
933 0506 91E0 ldi r25,hi8(300) |
934 .LVL45: |
935 0508 00C0 rjmp .L66 |
936 .L67: |
937 .LBB68: |
938 .LBB69: |
939 .LM142: |
940 .L66: |
941 .LM143: |
942 050a 0197 sbiw r24,1 |
943 050c 2FEF ldi r18,hi8(-1) |
944 050e 8F3F cpi r24,lo8(-1) |
945 0510 9207 cpc r25,r18 |
946 0512 01F4 brne .L67 |
947 .LBE69: |
948 .LBE68: |
949 .LM144: |
950 0514 0F5F subi r16,lo8(-(1)) |
951 0516 1F4F sbci r17,hi8(-(1)) |
952 0518 0538 cpi r16,133 |
953 051a 1105 cpc r17,__zero_reg__ |
954 051c 01F4 brne .L68 |
955 .LM145: |
956 051e 82B3 in r24,50-32 |
957 .LVL46: |
958 0520 877C andi r24,lo8(-57) |
959 0522 82BB out 50-32,r24 |
960 0524 88B3 in r24,56-32 |
961 0526 817F andi r24,lo8(-15) |
962 0528 88BB out 56-32,r24 |
963 .LM146: |
964 052a 939A sbi 50-32,3 |
965 .LM147: |
966 052c 949A sbi 50-32,4 |
967 052e 00E0 ldi r16,lo8(0) |
968 0530 10E0 ldi r17,hi8(0) |
969 .LVL47: |
970 .L73: |
971 .LM148: |
972 0532 C19A sbi 56-32,1 |
973 .LBB70: |
974 .LBB71: |
975 .LM149: |
976 .LBE71: |
977 .LBE70: |
978 .LM150: |
979 0534 82E0 ldi r24,lo8(2) |
980 .LVL48: |
981 0536 00D0 rcall MessAD |
982 0538 C397 sbiw r24,51 |
983 053a 00F0 brlo .L69 |
984 053c 44E0 ldi r20,lo8(4) |
985 053e F42A or r15,r20 |
986 0540 00C0 rjmp .L70 |
987 .L69: |
988 0542 5BEF ldi r21,lo8(-5) |
989 0544 F522 and r15,r21 |
990 .L70: |
991 .LM151: |
992 0546 18BA out 56-32,__zero_reg__ |
993 0548 8AE4 ldi r24,lo8(330) |
994 054a 91E0 ldi r25,hi8(330) |
995 .LVL49: |
996 054c 00C0 rjmp .L71 |
997 .L72: |
998 .LBB72: |
999 .LBB73: |
1000 .LM152: |
1001 .L71: |
1002 .LM153: |
1003 054e 0197 sbiw r24,1 |
1004 0550 2FEF ldi r18,hi8(-1) |
1005 0552 8F3F cpi r24,lo8(-1) |
1006 0554 9207 cpc r25,r18 |
1007 0556 01F4 brne .L72 |
1008 .LBE73: |
1009 .LBE72: |
1010 .LM154: |
1011 0558 0F5F subi r16,lo8(-(1)) |
1012 055a 1F4F sbci r17,hi8(-(1)) |
1013 055c 0F36 cpi r16,111 |
1014 055e 1105 cpc r17,__zero_reg__ |
1015 0560 01F4 brne .L73 |
1016 .LM155: |
1017 0562 82B3 in r24,50-32 |
1018 .LVL50: |
1019 0564 877C andi r24,lo8(-57) |
1020 0566 82BB out 50-32,r24 |
1021 0568 88B3 in r24,56-32 |
1022 056a 817F andi r24,lo8(-15) |
1023 056c 88BB out 56-32,r24 |
1024 .LM156: |
1025 056e 939A sbi 50-32,3 |
1026 0570 00E0 ldi r16,lo8(0) |
1027 0572 10E0 ldi r17,hi8(0) |
1028 .LVL51: |
1029 .L78: |
1030 .LM157: |
1031 0574 C29A sbi 56-32,2 |
1032 .LBB74: |
1033 .LBB75: |
1034 .LM158: |
1035 .LBE75: |
1036 .LBE74: |
1037 .LM159: |
1038 0576 80E0 ldi r24,lo8(0) |
1039 .LVL52: |
1040 0578 00D0 rcall MessAD |
1041 057a 8138 cpi r24,129 |
1042 057c 9105 cpc r25,__zero_reg__ |
1043 057e 00F0 brlo .L74 |
1044 0580 47EF ldi r20,lo8(-9) |
1045 0582 F422 and r15,r20 |
1046 0584 00C0 rjmp .L75 |
1047 .L74: |
1048 0586 58E0 ldi r21,lo8(8) |
1049 0588 F52A or r15,r21 |
1050 .L75: |
1051 .LM160: |
1052 058a 18BA out 56-32,__zero_reg__ |
1053 058c 8AE4 ldi r24,lo8(330) |
1054 058e 91E0 ldi r25,hi8(330) |
1055 .LVL53: |
1056 0590 00C0 rjmp .L76 |
1057 .L77: |
1058 .LBB76: |
1059 .LBB77: |
1060 .LM161: |
1061 .L76: |
1062 .LM162: |
1063 0592 0197 sbiw r24,1 |
1064 0594 2FEF ldi r18,hi8(-1) |
1065 0596 8F3F cpi r24,lo8(-1) |
1066 0598 9207 cpc r25,r18 |
1067 059a 01F4 brne .L77 |
1068 .LBE77: |
1069 .LBE76: |
1070 .LM163: |
1071 059c 0F5F subi r16,lo8(-(1)) |
1072 059e 1F4F sbci r17,hi8(-(1)) |
1073 05a0 0937 cpi r16,121 |
1074 05a2 1105 cpc r17,__zero_reg__ |
1075 05a4 01F4 brne .L78 |
1076 .LM164: |
1077 05a6 959A sbi 50-32,5 |
1078 05a8 00E0 ldi r16,lo8(0) |
1079 05aa 10E0 ldi r17,hi8(0) |
1080 .LVL54: |
1081 .L83: |
1082 .LM165: |
1083 05ac C29A sbi 56-32,2 |
1084 .LBB78: |
1085 .LBB79: |
1086 .LM166: |
1087 .LBE79: |
1088 .LBE78: |
1089 .LM167: |
1090 05ae 82E0 ldi r24,lo8(2) |
1091 .LVL55: |
1092 05b0 00D0 rcall MessAD |
1093 05b2 8138 cpi r24,129 |
1094 05b4 9105 cpc r25,__zero_reg__ |
1095 05b6 00F0 brlo .L79 |
1096 05b8 4FED ldi r20,lo8(-33) |
1097 05ba F422 and r15,r20 |
1098 05bc 00C0 rjmp .L80 |
1099 .L79: |
1100 05be 50E2 ldi r21,lo8(32) |
1101 05c0 F52A or r15,r21 |
1102 .L80: |
1103 .LM168: |
1104 05c2 18BA out 56-32,__zero_reg__ |
1105 05c4 88E6 ldi r24,lo8(360) |
1106 05c6 91E0 ldi r25,hi8(360) |
1107 .LVL56: |
1108 05c8 00C0 rjmp .L81 |
1109 .L82: |
1110 .LBB80: |
1111 .LBB81: |
1112 .LM169: |
1113 .L81: |
1114 .LM170: |
1115 05ca 0197 sbiw r24,1 |
1116 05cc 2FEF ldi r18,hi8(-1) |
1117 05ce 8F3F cpi r24,lo8(-1) |
1118 05d0 9207 cpc r25,r18 |
1119 05d2 01F4 brne .L82 |
1120 .LBE81: |
1121 .LBE80: |
1122 .LM171: |
1123 05d4 0F5F subi r16,lo8(-(1)) |
1124 05d6 1F4F sbci r17,hi8(-(1)) |
1125 05d8 0538 cpi r16,133 |
1126 05da 1105 cpc r17,__zero_reg__ |
1127 05dc 01F4 brne .L83 |
1128 .LM172: |
1129 05de 82B3 in r24,50-32 |
1130 .LVL57: |
1131 05e0 877C andi r24,lo8(-57) |
1132 05e2 82BB out 50-32,r24 |
1133 05e4 88B3 in r24,56-32 |
1134 05e6 817F andi r24,lo8(-15) |
1135 05e8 88BB out 56-32,r24 |
1136 .LM173: |
1137 05ea 82B3 in r24,50-32 |
1138 05ec 877C andi r24,lo8(-57) |
1139 05ee 82BB out 50-32,r24 |
1140 05f0 88B3 in r24,56-32 |
1141 05f2 817F andi r24,lo8(-15) |
1142 05f4 88BB out 56-32,r24 |
1143 .LM174: |
1144 05f6 949A sbi 50-32,4 |
1145 05f8 00E0 ldi r16,lo8(0) |
1146 05fa 10E0 ldi r17,hi8(0) |
1147 .LVL58: |
1148 .L88: |
1149 .LM175: |
1150 05fc C19A sbi 56-32,1 |
1151 .LBB82: |
1152 .LBB83: |
1153 .LM176: |
1154 .LBE83: |
1155 .LBE82: |
1156 .LM177: |
1157 05fe 81E0 ldi r24,lo8(1) |
1158 .LVL59: |
1159 0600 00D0 rcall MessAD |
1160 0602 8138 cpi r24,129 |
1161 0604 9105 cpc r25,__zero_reg__ |
1162 0606 00F0 brlo .L84 |
1163 0608 4FEE ldi r20,lo8(-17) |
1164 060a F422 and r15,r20 |
1165 060c 00C0 rjmp .L85 |
1166 .L84: |
1167 060e 50E1 ldi r21,lo8(16) |
1168 0610 F52A or r15,r21 |
1169 .L85: |
1170 .LM178: |
1171 0612 18BA out 56-32,__zero_reg__ |
1172 0614 88E6 ldi r24,lo8(360) |
1173 0616 91E0 ldi r25,hi8(360) |
1174 .LVL60: |
1175 0618 00C0 rjmp .L86 |
1176 .L87: |
1177 .LBB84: |
1178 .LBB85: |
1179 .LM179: |
1180 .L86: |
1181 .LM180: |
1182 061a 0197 sbiw r24,1 |
1183 061c 2FEF ldi r18,hi8(-1) |
1184 061e 8F3F cpi r24,lo8(-1) |
1185 0620 9207 cpc r25,r18 |
1186 0622 01F4 brne .L87 |
1187 .LBE85: |
1188 .LBE84: |
1189 .LM181: |
1190 0624 0F5F subi r16,lo8(-(1)) |
1191 0626 1F4F sbci r17,hi8(-(1)) |
1192 0628 0F36 cpi r16,111 |
1193 062a 1105 cpc r17,__zero_reg__ |
1194 062c 01F4 brne .L88 |
1195 .LM182: |
1196 062e 82B3 in r24,50-32 |
1197 .LVL61: |
1198 0630 877C andi r24,lo8(-57) |
1199 0632 82BB out 50-32,r24 |
1200 0634 88B3 in r24,56-32 |
1201 0636 817F andi r24,lo8(-15) |
1202 0638 88BB out 56-32,r24 |
1203 .LM183: |
1204 /* #APP */ |
1205 ; 468 "main.c" 1 |
1206 063a 7894 sei |
1207 ; 0 "" 2 |
1208 .LM184: |
1209 /* #NOAPP */ |
1210 063c 8091 0000 lds r24,MotorAdresse |
1211 0640 FE01 movw r30,r28 |
1212 0642 E80F add r30,r24 |
1213 0644 F11D adc r31,__zero_reg__ |
1214 0646 2181 ldd r18,Z+1 |
1215 0648 83E0 ldi r24,lo8(3) |
1216 064a 90E0 ldi r25,hi8(3) |
1217 064c 821B sub r24,r18 |
1218 064e 9109 sbc r25,__zero_reg__ |
1219 0650 2CE2 ldi r18,lo8(300) |
1220 0652 31E0 ldi r19,hi8(300) |
1221 0654 AC01 movw r20,r24 |
1222 0656 429F mul r20,r18 |
1223 0658 C001 movw r24,r0 |
1224 065a 439F mul r20,r19 |
1225 065c 900D add r25,r0 |
1226 065e 529F mul r21,r18 |
1227 0660 900D add r25,r0 |
1228 0662 1124 clr r1 |
1229 0664 00D0 rcall Delay_ms |
1230 .LM185: |
1231 0666 F0FC sbrc r15,0 |
1232 0668 00C0 rjmp .L89 |
1233 .LVL62: |
1234 066a 81E4 ldi r24,lo8(65) |
1235 066c 8CB9 out 44-32,r24 |
1236 066e 11E0 ldi r17,lo8(1) |
1237 .LVL63: |
1238 0670 00C0 rjmp .L109 |
1239 .LVL64: |
1240 .L89: |
1241 .LM186: |
1242 0672 F1FC sbrc r15,1 |
1243 0674 00C0 rjmp .L91 |
1244 0676 82E4 ldi r24,lo8(66) |
1245 0678 8CB9 out 44-32,r24 |
1246 067a 12E0 ldi r17,lo8(2) |
1247 .LVL65: |
1248 067c 00C0 rjmp .L109 |
1249 .LVL66: |
1250 .L91: |
1251 .LM187: |
1252 067e F2FC sbrc r15,2 |
1253 0680 00C0 rjmp .L92 |
1254 0682 83E4 ldi r24,lo8(67) |
1255 0684 8CB9 out 44-32,r24 |
1256 0686 13E0 ldi r17,lo8(3) |
1257 .LVL67: |
1258 0688 00C0 rjmp .L109 |
1259 .LVL68: |
1260 .L92: |
1261 .LM188: |
1262 068a F3FC sbrc r15,3 |
1263 068c 00C0 rjmp .L93 |
1264 068e 81E6 ldi r24,lo8(97) |
1265 0690 8CB9 out 44-32,r24 |
1266 0692 14E0 ldi r17,lo8(4) |
1267 .LVL69: |
1268 0694 00C0 rjmp .L109 |
1269 .LVL70: |
1270 .L93: |
1271 .LM189: |
1272 0696 F4FC sbrc r15,4 |
1273 0698 00C0 rjmp .L94 |
1274 069a 82E6 ldi r24,lo8(98) |
1275 069c 8CB9 out 44-32,r24 |
1276 069e 15E0 ldi r17,lo8(5) |
1277 .LVL71: |
1278 06a0 00C0 rjmp .L109 |
1279 .LVL72: |
1280 .L94: |
1281 .LM190: |
1282 06a2 F5FC sbrc r15,5 |
1283 06a4 00C0 rjmp .L95 |
1284 06a6 83E6 ldi r24,lo8(99) |
1285 06a8 8CB9 out 44-32,r24 |
1286 06aa 16E0 ldi r17,lo8(6) |
1287 .LVL73: |
1288 .L109: |
1289 .LM191: |
1290 06ac 812F mov r24,r17 |
1291 06ae 00D0 rcall RotBlink |
1292 06b0 00C0 rjmp .L109 |
1293 .LVL74: |
1294 .L95: |
1295 .LM192: |
1296 06b2 80E0 ldi r24,lo8(0) |
1297 06b4 00D0 rcall RotBlink |
1298 .LM193: |
1299 06b6 8EE2 ldi r24,lo8(46) |
1300 06b8 00D0 rcall uart_putchar |
1301 /* epilogue start */ |
1302 .LM194: |
1303 06ba 2796 adiw r28,7 |
1304 06bc 0FB6 in __tmp_reg__,__SREG__ |
1305 06be F894 cli |
1306 06c0 DEBF out __SP_H__,r29 |
1307 06c2 0FBE out __SREG__,__tmp_reg__ |
1308 06c4 CDBF out __SP_L__,r28 |
1309 06c6 CF91 pop r28 |
1310 06c8 DF91 pop r29 |
1311 06ca 1F91 pop r17 |
1312 06cc 0F91 pop r16 |
1313 .LVL75: |
1314 06ce FF90 pop r15 |
1315 06d0 EF90 pop r14 |
1316 .LVL76: |
1317 06d2 DF90 pop r13 |
1318 .LVL77: |
1319 06d4 BF90 pop r11 |
1320 06d6 AF90 pop r10 |
1321 06d8 0895 ret |
1322 .LFE11: |
1324 .global Anwerfen |
1326 Anwerfen: |
1327 .LFB8: |
1328 .LM195: |
1329 .LVL78: |
1330 06da 6F92 push r6 |
1331 06dc 7F92 push r7 |
1332 06de 9F92 push r9 |
1333 06e0 AF92 push r10 |
1334 06e2 BF92 push r11 |
1335 06e4 CF92 push r12 |
1336 06e6 DF92 push r13 |
1337 06e8 EF92 push r14 |
1338 06ea FF92 push r15 |
1339 06ec 0F93 push r16 |
1340 06ee 1F93 push r17 |
1341 06f0 CF93 push r28 |
1342 06f2 DF93 push r29 |
1343 /* prologue: function */ |
1344 /* frame size = 0 */ |
1345 06f4 982E mov r9,r24 |
1346 .LM196: |
1347 06f6 1092 0000 sts CompInterruptFreigabe,__zero_reg__ |
1348 06fa 4398 cbi 40-32,3 |
1349 .LM197: |
1350 06fc 85E0 ldi r24,lo8(5) |
1351 06fe 90E0 ldi r25,hi8(5) |
1352 .LVL79: |
1353 0700 9093 0000 sts (PWM)+1,r25 |
1354 0704 8093 0000 sts PWM,r24 |
1355 .LM198: |
1356 0708 00D0 rcall SetPWM |
1357 .LM199: |
1358 070a 00D0 rcall Manuell |
1359 .LM200: |
1360 070c 8CE2 ldi r24,lo8(300) |
1361 070e 91E0 ldi r25,hi8(300) |
1362 0710 00D0 rcall SetDelay |
1363 0712 9093 0000 sts (MinUpmPulse)+1,r25 |
1364 0716 8093 0000 sts MinUpmPulse,r24 |
1365 071a 00C0 rjmp .L112 |
1366 .L114: |
1367 .LM201: |
1368 071c 00D0 rcall FastADConvert |
1369 .LM202: |
1370 071e 8091 0000 lds r24,Strom |
1371 0722 9091 0000 lds r25,(Strom)+1 |
1372 0726 8937 cpi r24,121 |
1373 0728 9105 cpc r25,__zero_reg__ |
1374 072a 00F0 brlo .+2 |
1375 072c 00C0 rjmp .L129 |
1376 .L112: |
1377 .LM203: |
1378 072e 8091 0000 lds r24,MinUpmPulse |
1379 0732 9091 0000 lds r25,(MinUpmPulse)+1 |
1380 0736 00D0 rcall CheckDelay |
1381 0738 8823 tst r24 |
1382 073a 01F0 breq .L114 |
1383 .LM204: |
1384 073c 9092 0000 sts PWM,r9 |
1385 0740 1092 0000 sts PWM+1,__zero_reg__ |
1386 0744 5CE2 ldi r21,lo8(300) |
1387 0746 A52E mov r10,r21 |
1388 0748 51E0 ldi r21,hi8(300) |
1389 074a B52E mov r11,r21 |
1390 074c C12C mov r12,__zero_reg__ |
1391 074e D12C mov r13,__zero_reg__ |
1392 .LVL80: |
1393 .LBB86: |
1394 .LBB87: |
1395 .LM205: |
1396 0750 C0E0 ldi r28,lo8(DebugOut+4) |
1397 0752 D0E0 ldi r29,hi8(DebugOut+4) |
1398 .LM206: |
1399 0754 46E0 ldi r20,lo8(6) |
1400 0756 642E mov r6,r20 |
1401 0758 712C mov r7,__zero_reg__ |
1402 075a 6C0E add r6,r28 |
1403 075c 7D1E adc r7,r29 |
1404 .LVL81: |
1405 .L128: |
1406 .LBE87: |
1407 .LBE86: |
1408 .LM207: |
1409 075e EE24 clr r14 |
1410 0760 FF24 clr r15 |
1411 0762 8701 movw r16,r14 |
1412 .LVL82: |
1413 .L118: |
1414 .LM208: |
1415 0764 8091 0000 lds r24,UebertragungAbgeschlossen |
1416 0768 8823 tst r24 |
1417 076a 01F4 brne .L115 |
1418 076c 00D0 rcall SendUart |
1419 .LVL83: |
1420 076e 00C0 rjmp .L116 |
1421 .LVL84: |
1422 .L115: |
1423 .LM209: |
1424 0770 00D0 rcall DatenUebertragung |
1425 .LVL85: |
1426 .L116: |
1427 .LBB89: |
1428 .LBB90: |
1429 .LM210: |
1430 0772 82B7 in r24,82-32 |
1431 0774 8C59 subi r24,lo8(-(100)) |
1432 .LM211: |
1433 0776 982F mov r25,r24 |
1434 .LVL86: |
1435 .L117: |
1436 0778 82B7 in r24,82-32 |
1437 077a 891B sub r24,r25 |
1438 077c 87FD sbrc r24,7 |
1439 077e 00C0 rjmp .L117 |
1440 .LBE90: |
1441 .LBE89: |
1442 .LM212: |
1443 0780 0894 sec |
1444 0782 E11C adc r14,__zero_reg__ |
1445 0784 F11C adc r15,__zero_reg__ |
1446 0786 011D adc r16,__zero_reg__ |
1447 0788 111D adc r17,__zero_reg__ |
1448 078a EA14 cp r14,r10 |
1449 078c FB04 cpc r15,r11 |
1450 078e 0C05 cpc r16,r12 |
1451 0790 1D05 cpc r17,r13 |
1452 0792 00F0 brlo .L118 |
1453 .LBB91: |
1454 .LBB88: |
1455 .LM213: |
1456 0794 8091 0000 lds r24,Strom |
1457 0798 9091 0000 lds r25,(Strom)+1 |
1458 079c 9093 0000 sts (DebugOut+2)+1,r25 |
1459 07a0 8093 0000 sts DebugOut+2,r24 |
1460 .LM214: |
1461 07a4 8091 0000 lds r24,Mittelstrom |
1462 07a8 8093 0000 sts DebugOut+4,r24 |
1463 07ac 1982 std Y+1,__zero_reg__ |
1464 .LM215: |
1465 07ae 8091 0000 lds r24,SIO_Drehzahl |
1466 07b2 9091 0000 lds r25,(SIO_Drehzahl)+1 |
1467 07b6 9093 0000 sts (DebugOut+6)+1,r25 |
1468 07ba 8093 0000 sts DebugOut+6,r24 |
1469 .LM216: |
1470 07be 8091 0000 lds r24,PPM_Signal |
1471 07c2 9091 0000 lds r25,(PPM_Signal)+1 |
1472 07c6 9093 0000 sts (DebugOut+8)+1,r25 |
1473 07ca 8093 0000 sts DebugOut+8,r24 |
1474 .LM217: |
1475 07ce 83B5 in r24,67-32 |
1476 07d0 8093 0000 sts DebugOut+10,r24 |
1477 07d4 F301 movw r30,r6 |
1478 07d6 1182 std Z+1,__zero_reg__ |
1479 .LBE88: |
1480 .LBE91: |
1481 .LM218: |
1482 07d8 00D0 rcall FastADConvert |
1483 .LVL87: |
1484 .LM219: |
1485 07da 8091 0000 lds r24,Strom |
1486 07de 9091 0000 lds r25,(Strom)+1 |
1487 07e2 CD97 sbiw r24,61 |
1488 07e4 00F0 brlo .L119 |
1489 .L129: |
1490 .LM220: |
1491 07e6 82B3 in r24,50-32 |
1492 07e8 877C andi r24,lo8(-57) |
1493 07ea 82BB out 50-32,r24 |
1494 07ec 1BBC out (74)+1-32,__zero_reg__ |
1495 07ee 1ABC out 74-32,__zero_reg__ |
1496 07f0 19BC out (72)+1-32,__zero_reg__ |
1497 07f2 18BC out 72-32,__zero_reg__ |
1498 07f4 13BC out 67-32,__zero_reg__ |
1499 07f6 81E0 ldi r24,lo8(1) |
1500 07f8 8FBD out 79-32,r24 |
1501 07fa 81E4 ldi r24,lo8(65) |
1502 07fc 85BD out 69-32,r24 |
1503 07fe 8EE0 ldi r24,lo8(14) |
1504 0800 87BB out 55-32,r24 |
1505 0802 88B3 in r24,56-32 |
1506 0804 817F andi r24,lo8(-15) |
1507 0806 88BB out 56-32,r24 |
1508 .LM221: |
1509 0808 8AE0 ldi r24,lo8(10) |
1510 080a 00D0 rcall RotBlink |
1511 080c 80E0 ldi r24,lo8(0) |
1512 080e 00C0 rjmp .L113 |
1513 .L119: |
1514 .LM222: |
1515 0810 C601 movw r24,r12 |
1516 0812 B501 movw r22,r10 |
1517 0814 2FE0 ldi r18,lo8(15) |
1518 0816 30E0 ldi r19,hi8(15) |
1519 0818 40E0 ldi r20,hlo8(15) |
1520 081a 50E0 ldi r21,hhi8(15) |
1521 081c 00D0 rcall __udivmodsi4 |
1522 081e 2095 com r18 |
1523 0820 3095 com r19 |
1524 0822 4095 com r20 |
1525 0824 5095 com r21 |
1526 0826 A20E add r10,r18 |
1527 0828 B31E adc r11,r19 |
1528 082a C41E adc r12,r20 |
1529 082c D51E adc r13,r21 |
1530 .LM223: |
1531 082e F9E1 ldi r31,lo8(25) |
1532 0830 AF16 cp r10,r31 |
1533 0832 B104 cpc r11,__zero_reg__ |
1534 0834 C104 cpc r12,__zero_reg__ |
1535 0836 D104 cpc r13,__zero_reg__ |
1536 0838 00F0 brlo .L120 |
1537 .LM224: |
1538 083a 00D0 rcall Manuell |
1539 .LM225: |
1540 083c 8091 0000 lds r24,Phase |
1541 0840 8F5F subi r24,lo8(-(1)) |
1542 0842 8093 0000 sts Phase,r24 |
1543 .LM226: |
1544 0846 8091 0000 lds r24,Phase |
1545 084a 66E0 ldi r22,lo8(6) |
1546 084c 00D0 rcall __udivmodqi4 |
1547 084e 9093 0000 sts Phase,r25 |
1548 .LM227: |
1549 0852 00D0 rcall AdConvert |
1550 .LM228: |
1551 0854 9092 0000 sts PWM,r9 |
1552 0858 1092 0000 sts PWM+1,__zero_reg__ |
1553 .LM229: |
1554 085c 00D0 rcall SetPWM |
1555 .LM230: |
1556 085e 449B sbis 40-32,4 |
1557 0860 00C0 rjmp .L128 |
1558 .LM231: |
1559 0862 82B3 in r24,50-32 |
1560 0864 8058 subi r24,lo8(-(-128)) |
1561 0866 82BB out 50-32,r24 |
1562 0868 00C0 rjmp .L128 |
1563 .L120: |
1564 086a 81E0 ldi r24,lo8(1) |
1565 .L113: |
1566 /* epilogue start */ |
1567 .LM232: |
1568 086c DF91 pop r29 |
1569 086e CF91 pop r28 |
1570 0870 1F91 pop r17 |
1571 0872 0F91 pop r16 |
1572 0874 FF90 pop r15 |
1573 0876 EF90 pop r14 |
1574 .LVL88: |
1575 0878 DF90 pop r13 |
1576 087a CF90 pop r12 |
1577 087c BF90 pop r11 |
1578 087e AF90 pop r10 |
1579 .LVL89: |
1580 0880 9F90 pop r9 |
1581 .LVL90: |
1582 0882 7F90 pop r7 |
1583 0884 6F90 pop r6 |
1584 0886 0895 ret |
1585 .LFE8: |
1587 .global main |
1589 main: |
1590 .LFB13: |
1591 .LM233: |
1592 0888 5F92 push r5 |
1593 088a 6F92 push r6 |
1594 088c 7F92 push r7 |
1595 088e 8F92 push r8 |
1596 0890 9F92 push r9 |
1597 0892 AF92 push r10 |
1598 0894 BF92 push r11 |
1599 0896 CF92 push r12 |
1600 0898 DF92 push r13 |
1601 089a EF92 push r14 |
1602 089c FF92 push r15 |
1603 089e 0F93 push r16 |
1604 08a0 1F93 push r17 |
1605 08a2 CF93 push r28 |
1606 08a4 DF93 push r29 |
1607 /* prologue: function */ |
1608 /* frame size = 0 */ |
1609 .LM234: |
1610 08a6 88E0 ldi r24,lo8(8) |
1611 08a8 84BB out 52-32,r24 |
1612 .LM235: |
1613 08aa 85BB out 53-32,r24 |
1614 .LM236: |
1615 08ac 8AE3 ldi r24,lo8(58) |
1616 08ae 81BB out 49-32,r24 |
1617 .LM237: |
1618 08b0 12BA out 50-32,__zero_reg__ |
1619 .LM238: |
1620 08b2 8EE0 ldi r24,lo8(14) |
1621 08b4 87BB out 55-32,r24 |
1622 .LM239: |
1623 08b6 81E3 ldi r24,lo8(49) |
1624 08b8 88BB out 56-32,r24 |
1625 .LM240: |
1626 08ba 88B3 in r24,56-32 |
1627 08bc 806C ori r24,lo8(-64) |
1628 08be 88BB out 56-32,r24 |
1629 .LM241: |
1630 08c0 B69B sbis 54-32,6 |
1631 08c2 00C0 rjmp .L131 |
1632 .LM242: |
1633 08c4 B79B sbis 54-32,7 |
1634 08c6 00C0 rjmp .L132 |
1635 08c8 81E0 ldi r24,lo8(1) |
1636 08ca 00C0 rjmp .L172 |
1637 .L132: |
1638 .LM243: |
1639 08cc 82E0 ldi r24,lo8(2) |
1640 08ce 00C0 rjmp .L172 |
1641 .L131: |
1642 .LM244: |
1643 08d0 B79B sbis 54-32,7 |
1644 08d2 00C0 rjmp .L134 |
1645 08d4 83E0 ldi r24,lo8(3) |
1646 08d6 00C0 rjmp .L172 |
1647 .L134: |
1648 .LM245: |
1649 08d8 84E0 ldi r24,lo8(4) |
1650 .L172: |
1651 08da 8093 0000 sts MotorAdresse,r24 |
1652 .LM246: |
1653 08de 8BE0 ldi r24,lo8(11) |
1654 08e0 8093 0000 sts HwVersion,r24 |
1655 .LM247: |
1656 08e4 879B sbis 48-32,7 |
1657 08e6 00C0 rjmp .L135 |
1658 08e8 8CE0 ldi r24,lo8(12) |
1659 08ea 8093 0000 sts HwVersion,r24 |
1660 08ee 80EC ldi r24,lo8(-64) |
1661 08f0 8093 0000 sts IntRef,r24 |
1662 .L135: |
1663 .LM248: |
1664 08f4 8AEB ldi r24,lo8(-70) |
1665 08f6 81BB out 49-32,r24 |
1666 .LM249: |
1667 08f8 00D0 rcall UART_Init |
1668 .LM250: |
1669 08fa 00D0 rcall Timer0_Init |
1670 .LM251: |
1671 /* #APP */ |
1672 ; 583 "main.c" 1 |
1673 08fc 7894 sei |
1674 ; 0 "" 2 |
1675 .LM252: |
1676 /* #NOAPP */ |
1677 08fe 00D0 rcall PWM_Init |
1678 .LM253: |
1679 0900 80E5 ldi r24,lo8(80) |
1680 0902 00D0 rcall InitIC2_Slave |
1681 .LM254: |
1682 0904 00D0 rcall InitPPM |
1683 .LM255: |
1684 0906 85E6 ldi r24,lo8(101) |
1685 0908 90E0 ldi r25,hi8(101) |
1686 090a 00D0 rcall SetDelay |
1687 .LM256: |
1688 090c 86E6 ldi r24,lo8(102) |
1689 090e 90E0 ldi r25,hi8(102) |
1690 0910 00D0 rcall SetDelay |
1691 .LM257: |
1692 0912 87E6 ldi r24,lo8(103) |
1693 0914 90E0 ldi r25,hi8(103) |
1694 0916 00D0 rcall SetDelay |
1695 0918 9093 0000 sts (MinUpmPulse)+1,r25 |
1696 091c 8093 0000 sts MinUpmPulse,r24 |
1697 .LM258: |
1698 0920 8EEF ldi r24,lo8(254) |
1699 0922 90E0 ldi r25,hi8(254) |
1700 0924 00D0 rcall SetDelay |
1701 0926 6C01 movw r12,r24 |
1702 .LVL91: |
1703 .LM259: |
1704 0928 8DEE ldi r24,lo8(1005) |
1705 092a 93E0 ldi r25,hi8(1005) |
1706 092c 00D0 rcall SetDelay |
1707 092e EC01 movw r28,r24 |
1708 .LVL92: |
1709 .LM260: |
1710 0930 8EEE ldi r24,lo8(1006) |
1711 0932 93E0 ldi r25,hi8(1006) |
1712 0934 00D0 rcall SetDelay |
1713 0936 00C0 rjmp .L136 |
1714 .L138: |
1715 .LM261: |
1716 0938 00D0 rcall SollwertErmittlung |
1717 093a 8823 tst r24 |
1718 093c 01F4 brne .L137 |
1719 .L136: |
1720 .LM262: |
1721 093e 8091 0000 lds r24,MinUpmPulse |
1722 0942 9091 0000 lds r25,(MinUpmPulse)+1 |
1723 0946 00D0 rcall CheckDelay |
1724 0948 8823 tst r24 |
1725 094a 01F0 breq .L138 |
1726 .L137: |
1727 .LM263: |
1728 094c 8091 0000 lds r24,HwVersion |
1729 0950 8C30 cpi r24,lo8(12) |
1730 0952 00F4 brsh .L139 |
1731 0954 979A sbi 50-32,7 |
1732 0956 00C0 rjmp .L140 |
1733 .L139: |
1734 0958 9798 cbi 50-32,7 |
1735 .L140: |
1736 .LM264: |
1737 095a 1092 0000 sts (PWM)+1,__zero_reg__ |
1738 095e 1092 0000 sts PWM,__zero_reg__ |
1739 .LM265: |
1740 0962 00D0 rcall SetPWM |
1741 .LM266: |
1742 0964 88E0 ldi r24,lo8(8) |
1743 0966 80BF out 80-32,r24 |
1744 .LM267: |
1745 0968 81E0 ldi r24,lo8(1) |
1746 096a 87B9 out 39-32,r24 |
1747 .LM268: |
1748 096c 8AE0 ldi r24,lo8(10) |
1749 096e 90E0 ldi r25,hi8(10) |
1750 0970 00D0 rcall SetDelay |
1751 0972 9093 0000 sts (MinUpmPulse)+1,r25 |
1752 0976 8093 0000 sts MinUpmPulse,r24 |
1753 .LM269: |
1754 097a 81E0 ldi r24,lo8(1) |
1755 097c 90E0 ldi r25,hi8(1) |
1756 097e 9093 0000 sts (DebugOut+4)+1,r25 |
1757 0982 8093 0000 sts DebugOut+4,r24 |
1758 .LM270: |
1759 0986 1092 0000 sts (PPM_Signal)+1,__zero_reg__ |
1760 098a 1092 0000 sts PPM_Signal,__zero_reg__ |
1761 .LM271: |
1762 098e 00D0 rcall SollwertErmittlung |
1763 0990 8823 tst r24 |
1764 0992 01F4 brne .L141 |
1765 0994 00D0 rcall MotorTon |
1766 .L141: |
1767 .LM272: |
1768 0996 81E3 ldi r24,lo8(49) |
1769 0998 88BB out 56-32,r24 |
1770 099a 10E0 ldi r17,lo8(0) |
1771 .LVL93: |
1772 .LM273: |
1773 099c FF24 clr r15 |
1774 099e F394 inc r15 |
1775 .LM274: |
1776 09a0 F1E4 ldi r31,lo8(65) |
1777 09a2 EF2E mov r14,r31 |
1778 09a4 EEE0 ldi r30,lo8(14) |
1779 09a6 5E2E mov r5,r30 |
1780 .LM275: |
1781 09a8 71E0 ldi r23,lo8(1) |
1782 09aa 672E mov r6,r23 |
1783 09ac 712C mov r7,__zero_reg__ |
1784 .LM276: |
1785 09ae 6FE0 ldi r22,lo8(15) |
1786 09b0 862E mov r8,r22 |
1787 09b2 912C mov r9,__zero_reg__ |
1788 09b4 00C0 rjmp .L142 |
1789 .LVL94: |
1790 .L148: |
1791 .LM277: |
1792 09b6 102F mov r17,r16 |
1793 .LVL95: |
1794 .L142: |
1795 .LM278: |
1796 09b8 00D0 rcall SollwertErmittlung |
1797 09ba 8093 0000 sts PWM,r24 |
1798 09be 1092 0000 sts PWM+1,__zero_reg__ |
1799 .LM279: |
1800 09c2 0091 0000 lds r16,Phase |
1801 .LVL96: |
1802 09c6 0117 cp r16,r17 |
1803 09c8 01F0 breq .L143 |
1804 .LVL97: |
1805 .LM280: |
1806 09ca 1092 0000 sts MotorGestoppt,__zero_reg__ |
1807 .LM281: |
1808 09ce 1092 0000 sts ZeitFuerBerechnungen,__zero_reg__ |
1809 .LM282: |
1810 09d2 8AEF ldi r24,lo8(250) |
1811 09d4 90E0 ldi r25,hi8(250) |
1812 09d6 00D0 rcall SetDelay |
1813 09d8 9093 0000 sts (MinUpmPulse)+1,r25 |
1814 09dc 8093 0000 sts MinUpmPulse,r24 |
1815 .LM283: |
1816 09e0 0091 0000 lds r16,Phase |
1817 .LVL98: |
1818 .L143: |
1819 .LM284: |
1820 09e4 8091 0000 lds r24,PWM |
1821 09e8 9091 0000 lds r25,(PWM)+1 |
1822 09ec 892B or r24,r25 |
1823 09ee 01F4 brne .L144 |
1824 .LM285: |
1825 09f0 1092 0000 sts MotorAnwerfen,__zero_reg__ |
1826 .LM286: |
1827 09f4 1092 0000 sts ZeitFuerBerechnungen,__zero_reg__ |
1828 .LM287: |
1829 09f8 C501 movw r24,r10 |
1830 09fa 00D0 rcall CheckDelay |
1831 09fc 8823 tst r24 |
1832 09fe 01F0 breq .L145 |
1833 .LM288: |
1834 0a00 1092 0000 sts CompInterruptFreigabe,__zero_reg__ |
1835 0a04 4398 cbi 40-32,3 |
1836 .LM289: |
1837 0a06 F092 0000 sts MotorGestoppt,r15 |
1838 .LM290: |
1839 0a0a 82B3 in r24,50-32 |
1840 0a0c 877C andi r24,lo8(-57) |
1841 0a0e 82BB out 50-32,r24 |
1842 0a10 1BBC out (74)+1-32,__zero_reg__ |
1843 0a12 1ABC out 74-32,__zero_reg__ |
1844 0a14 19BC out (72)+1-32,__zero_reg__ |
1845 0a16 18BC out 72-32,__zero_reg__ |
1846 0a18 13BC out 67-32,__zero_reg__ |
1847 0a1a FFBC out 79-32,r15 |
1848 0a1c E5BC out 69-32,r14 |
1849 0a1e 57BA out 55-32,r5 |
1850 0a20 88B3 in r24,56-32 |
1851 0a22 817F andi r24,lo8(-15) |
1852 0a24 88BB out 56-32,r24 |
1853 0a26 00C0 rjmp .L145 |
1854 .L144: |
1855 .LM291: |
1856 0a28 8091 0000 lds r24,MotorGestoppt |
1857 0a2c 8823 tst r24 |
1858 0a2e 01F0 breq .L146 |
1859 0a30 F092 0000 sts MotorAnwerfen,r15 |
1860 .L146: |
1861 .LM292: |
1862 0a34 8CED ldi r24,lo8(1500) |
1863 0a36 95E0 ldi r25,hi8(1500) |
1864 0a38 00D0 rcall SetDelay |
1865 0a3a 5C01 movw r10,r24 |
1866 .L145: |
1867 .LM293: |
1868 0a3c 8091 0000 lds r24,MotorGestoppt |
1869 0a40 8823 tst r24 |
1870 0a42 01F0 breq .L147 |
1871 0a44 1092 0000 sts (PWM)+1,__zero_reg__ |
1872 0a48 1092 0000 sts PWM,__zero_reg__ |
1873 .L147: |
1874 .LM294: |
1875 0a4c 00D0 rcall SetPWM |
1876 .LM295: |
1877 0a4e 8091 0000 lds r24,ZeitFuerBerechnungen |
1878 0a52 8F5F subi r24,lo8(-(1)) |
1879 0a54 8093 0000 sts ZeitFuerBerechnungen,r24 |
1880 0a58 8150 subi r24,lo8(-(-1)) |
1881 0a5a 01F0 breq .+2 |
1882 0a5c 00C0 rjmp .L148 |
1883 .LM296: |
1884 0a5e 8091 0000 lds r24,MotorGestoppt |
1885 0a62 8823 tst r24 |
1886 0a64 01F0 breq .L149 |
1887 .LM297: |
1888 0a66 8091 0000 lds r24,HwVersion |
1889 0a6a 8C30 cpi r24,lo8(12) |
1890 0a6c 00F4 brsh .L150 |
1891 0a6e 979A sbi 50-32,7 |
1892 0a70 00C0 rjmp .L151 |
1893 .L150: |
1894 0a72 9798 cbi 50-32,7 |
1895 .L151: |
1896 .LM298: |
1897 0a74 00D0 rcall FastADConvert |
1898 .L149: |
1899 .LM299: |
1900 0a76 C601 movw r24,r12 |
1901 0a78 00D0 rcall CheckDelay |
1902 0a7a 8823 tst r24 |
1903 0a7c 01F0 breq .L152 |
1904 .LM300: |
1905 0a7e 82E3 ldi r24,lo8(50) |
1906 0a80 90E0 ldi r25,hi8(50) |
1907 0a82 00D0 rcall SetDelay |
1908 0a84 6C01 movw r12,r24 |
1909 .LM301: |
1910 0a86 8091 0000 lds r24,Mittelstrom |
1911 0a8a 482F mov r20,r24 |
1912 0a8c 50E0 ldi r21,lo8(0) |
1913 0a8e 2091 0000 lds r18,Strom |
1914 0a92 3091 0000 lds r19,(Strom)+1 |
1915 0a96 4217 cp r20,r18 |
1916 0a98 5307 cpc r21,r19 |
1917 0a9a 00F4 brsh .L153 |
1918 0a9c 8F5F subi r24,lo8(-(1)) |
1919 0a9e 00C0 rjmp .L173 |
1920 .L153: |
1921 .LM302: |
1922 0aa0 2417 cp r18,r20 |
1923 0aa2 3507 cpc r19,r21 |
1924 0aa4 00F4 brsh .L154 |
1925 0aa6 8150 subi r24,lo8(-(-1)) |
1926 .L173: |
1927 0aa8 8093 0000 sts Mittelstrom,r24 |
1928 .L154: |
1929 .LM303: |
1930 0aac 293C cpi r18,201 |
1931 0aae 3105 cpc r19,__zero_reg__ |
1932 0ab0 00F0 brlo .L155 |
1933 0ab2 8091 0000 lds r24,MaxPWM |
1934 0ab6 982F mov r25,r24 |
1935 0ab8 9295 swap r25 |
1936 0aba 9695 lsr r25 |
1937 0abc 9770 andi r25,lo8(7) |
1938 0abe 891B sub r24,r25 |
1939 0ac0 8093 0000 sts MaxPWM,r24 |
1940 .L155: |
1941 .LM304: |
1942 0ac4 8091 0000 lds r24,Mittelstrom |
1943 0ac8 9091 0000 lds r25,MaxPWM |
1944 0acc 8937 cpi r24,lo8(121) |
1945 0ace 00F0 brlo .L156 |
1946 .LM305: |
1947 0ad0 9923 tst r25 |
1948 0ad2 01F0 breq .L157 |
1949 0ad4 9150 subi r25,lo8(-(-1)) |
1950 0ad6 9093 0000 sts MaxPWM,r25 |
1951 .L157: |
1952 .LM306: |
1953 0ada AB9A sbi 53-32,3 |
1954 0adc 00C0 rjmp .L152 |
1955 .L156: |
1956 .LM307: |
1957 0ade 9F3F cpi r25,lo8(-1) |
1958 0ae0 01F0 breq .L152 |
1959 0ae2 9F5F subi r25,lo8(-(1)) |
1960 0ae4 9093 0000 sts MaxPWM,r25 |
1961 .L152: |
1962 .LM308: |
1963 0ae8 CE01 movw r24,r28 |
1964 0aea 00D0 rcall CheckDelay |
1965 0aec 8823 tst r24 |
1966 0aee 01F0 breq .L158 |
1967 .LM309: |
1968 0af0 8AE0 ldi r24,lo8(10) |
1969 0af2 90E0 ldi r25,hi8(10) |
1970 0af4 00D0 rcall SetDelay |
1971 0af6 EC01 movw r28,r24 |
1972 .LM310: |
1973 0af8 8091 0000 lds r24,CntKommutierungen |
1974 0afc 9091 0000 lds r25,(CntKommutierungen)+1 |
1975 0b00 9093 0000 sts (SIO_Drehzahl)+1,r25 |
1976 0b04 8093 0000 sts SIO_Drehzahl,r24 |
1977 .LM311: |
1978 0b08 1092 0000 sts (CntKommutierungen)+1,__zero_reg__ |
1979 0b0c 1092 0000 sts CntKommutierungen,__zero_reg__ |
1980 .LM312: |
1981 0b10 F092 0000 sts ZeitZumAdWandeln,r15 |
1982 .L158: |
1983 .LM313: |
1984 0b14 8091 0000 lds r24,MinUpmPulse |
1985 0b18 9091 0000 lds r25,(MinUpmPulse)+1 |
1986 0b1c 00D0 rcall CheckDelay |
1987 0b1e 8823 tst r24 |
1988 0b20 01F0 breq .L159 |
1989 0b22 8091 0000 lds r24,SIO_Drehzahl |
1990 0b26 9091 0000 lds r25,(SIO_Drehzahl)+1 |
1991 0b2a 892B or r24,r25 |
1992 0b2c 01F0 breq .L160 |
1993 .L159: |
1994 0b2e 8091 0000 lds r24,MotorAnwerfen |
1995 0b32 8823 tst r24 |
1996 0b34 01F4 brne .+2 |
1997 0b36 00C0 rjmp .L148 |
1998 .L160: |
1999 .LM314: |
2000 0b38 F092 0000 sts MotorGestoppt,r15 |
2001 .LM315: |
2002 0b3c 1092 0000 sts CompInterruptFreigabe,__zero_reg__ |
2003 0b40 4398 cbi 40-32,3 |
2004 .LM316: |
2005 0b42 84E6 ldi r24,lo8(100) |
2006 0b44 90E0 ldi r25,hi8(100) |
2007 0b46 00D0 rcall SetDelay |
2008 0b48 9093 0000 sts (MinUpmPulse)+1,r25 |
2009 0b4c 8093 0000 sts MinUpmPulse,r24 |
2010 .LM317: |
2011 0b50 8091 0000 lds r24,MotorAnwerfen |
2012 0b54 8823 tst r24 |
2013 0b56 01F4 brne .+2 |
2014 0b58 00C0 rjmp .L148 |
2015 .LM318: |
2016 0b5a AB98 cbi 53-32,3 |
2017 .LM319: |
2018 0b5c 1092 0000 sts Strom_max,__zero_reg__ |
2019 .LM320: |
2020 0b60 1092 0000 sts MotorAnwerfen,__zero_reg__ |
2021 .LM321: |
2022 0b64 8AE0 ldi r24,lo8(10) |
2023 0b66 00D0 rcall Anwerfen |
2024 0b68 8823 tst r24 |
2025 0b6a 01F4 brne .+2 |
2026 0b6c 00C0 rjmp .L161 |
2027 .LM322: |
2028 0b6e 8091 0000 lds r24,HwVersion |
2029 0b72 8C30 cpi r24,lo8(12) |
2030 0b74 00F4 brsh .L162 |
2031 0b76 979A sbi 50-32,7 |
2032 0b78 00C0 rjmp .L163 |
2033 .L162: |
2034 0b7a 9798 cbi 50-32,7 |
2035 .L163: |
2036 .LM323: |
2037 0b7c 1092 0000 sts MotorGestoppt,__zero_reg__ |
2038 .LM324: |
2039 0b80 8091 0000 lds r24,Phase |
2040 0b84 8150 subi r24,lo8(-(-1)) |
2041 0b86 8093 0000 sts Phase,r24 |
2042 .LM325: |
2043 0b8a 7092 0000 sts (PWM)+1,r7 |
2044 0b8e 6092 0000 sts PWM,r6 |
2045 .LM326: |
2046 0b92 00D0 rcall SetPWM |
2047 .LM327: |
2048 0b94 88B1 in r24,40-32 |
2049 0b96 8C7F andi r24,lo8(-4) |
2050 0b98 88B9 out 40-32,r24 |
2051 .LM328: |
2052 0b9a F092 0000 sts CompInterruptFreigabe,r15 |
2053 0b9e 88B1 in r24,40-32 |
2054 0ba0 8A60 ori r24,lo8(10) |
2055 0ba2 88B9 out 40-32,r24 |
2056 .LM329: |
2057 0ba4 84E1 ldi r24,lo8(20) |
2058 0ba6 90E0 ldi r25,hi8(20) |
2059 0ba8 00D0 rcall SetDelay |
2060 0baa 9093 0000 sts (MinUpmPulse)+1,r25 |
2061 0bae 8093 0000 sts MinUpmPulse,r24 |
2062 .L164: |
2063 .LM330: |
2064 0bb2 8091 0000 lds r24,MinUpmPulse |
2065 0bb6 9091 0000 lds r25,(MinUpmPulse)+1 |
2066 0bba 00D0 rcall CheckDelay |
2067 0bbc 8823 tst r24 |
2068 0bbe 01F0 breq .L164 |
2069 .LM331: |
2070 0bc0 9092 0000 sts (PWM)+1,r9 |
2071 0bc4 8092 0000 sts PWM,r8 |
2072 .LM332: |
2073 0bc8 00D0 rcall SetPWM |
2074 .LM333: |
2075 0bca 8CE2 ldi r24,lo8(300) |
2076 0bcc 91E0 ldi r25,hi8(300) |
2077 0bce 00D0 rcall SetDelay |
2078 0bd0 9093 0000 sts (MinUpmPulse)+1,r25 |
2079 0bd4 8093 0000 sts MinUpmPulse,r24 |
2080 0bd8 00C0 rjmp .L171 |
2081 .L166: |
2082 .LM334: |
2083 0bda 8091 0000 lds r24,Strom |
2084 0bde 9091 0000 lds r25,(Strom)+1 |
2085 0be2 CD97 sbiw r24,61 |
2086 0be4 00F0 brlo .L171 |
2087 .LM335: |
2088 0be6 82B3 in r24,50-32 |
2089 0be8 877C andi r24,lo8(-57) |
2090 0bea 82BB out 50-32,r24 |
2091 0bec 1BBC out (74)+1-32,__zero_reg__ |
2092 0bee 1ABC out 74-32,__zero_reg__ |
2093 0bf0 19BC out (72)+1-32,__zero_reg__ |
2094 0bf2 18BC out 72-32,__zero_reg__ |
2095 0bf4 13BC out 67-32,__zero_reg__ |
2096 0bf6 FFBC out 79-32,r15 |
2097 0bf8 E5BC out 69-32,r14 |
2098 0bfa 57BA out 55-32,r5 |
2099 0bfc 88B3 in r24,56-32 |
2100 0bfe 817F andi r24,lo8(-15) |
2101 0c00 88BB out 56-32,r24 |
2102 .LM336: |
2103 0c02 8AE0 ldi r24,lo8(10) |
2104 0c04 00D0 rcall RotBlink |
2105 .LM337: |
2106 0c06 F092 0000 sts MotorAnwerfen,r15 |
2107 .L171: |
2108 .LM338: |
2109 0c0a 8091 0000 lds r24,MinUpmPulse |
2110 0c0e 9091 0000 lds r25,(MinUpmPulse)+1 |
2111 0c12 00D0 rcall CheckDelay |
2112 0c14 8823 tst r24 |
2113 0c16 01F0 breq .L166 |
2114 .LM339: |
2115 0c18 82E3 ldi r24,lo8(50) |
2116 0c1a 90E0 ldi r25,hi8(50) |
2117 0c1c 00D0 rcall SetDelay |
2118 0c1e EC01 movw r28,r24 |
2119 0c20 07E0 ldi r16,lo8(7) |
2120 0c22 00C0 rjmp .L148 |
2121 .LVL99: |
2122 .L161: |
2123 .LM340: |
2124 0c24 00D0 rcall SollwertErmittlung |
2125 0c26 8823 tst r24 |
2126 0c28 01F4 brne .+2 |
2127 0c2a 00C0 rjmp .L148 |
2128 0c2c F092 0000 sts MotorAnwerfen,r15 |
2129 0c30 00C0 rjmp .L148 |
2130 .LFE13: |
2132 .global PWM |
2133 .global PWM |
2134 .section .bss |
2137 PWM: |
2138 0000 0000 .skip 2,0 |
2139 .global Strom |
2140 .global Strom |
2143 Strom: |
2144 0002 0000 .skip 2,0 |
2145 .global Strom_max |
2146 .global Strom_max |
2149 Strom_max: |
2150 0004 00 .skip 1,0 |
2151 .global Mittelstrom |
2152 .global Mittelstrom |
2155 Mittelstrom: |
2156 0005 00 .skip 1,0 |
2157 .global Drehzahl |
2158 .global Drehzahl |
2161 Drehzahl: |
2162 0006 0000 .skip 2,0 |
2163 .global KommutierDelay |
2164 .data |
2167 KommutierDelay: |
2168 0000 0A00 .word 10 |
2169 .global I2C_Timeout |
2170 .global I2C_Timeout |
2171 .section .bss |
2174 I2C_Timeout: |
2175 0008 0000 .skip 2,0 |
2176 .global SIO_Timeout |
2177 .global SIO_Timeout |
2180 SIO_Timeout: |
2181 000a 0000 .skip 2,0 |
2182 .global SollDrehzahl |
2183 .global SollDrehzahl |
2186 SollDrehzahl: |
2187 000c 0000 .skip 2,0 |
2188 .global IstDrehzahl |
2189 .global IstDrehzahl |
2192 IstDrehzahl: |
2193 000e 0000 .skip 2,0 |
2194 .global ZeitFuerBerechnungen |
2195 .data |
2198 ZeitFuerBerechnungen: |
2199 0002 01 .byte 1 |
2200 .global MotorAnwerfen |
2201 .global MotorAnwerfen |
2202 .section .bss |
2205 MotorAnwerfen: |
2206 0010 00 .skip 1,0 |
2207 .global MotorGestoppt |
2208 .data |
2211 MotorGestoppt: |
2212 0003 01 .byte 1 |
2213 .global MaxPWM |
2216 MaxPWM: |
2217 0004 FF .byte -1 |
2218 .global CntKommutierungen |
2219 .global CntKommutierungen |
2220 .section .bss |
2223 CntKommutierungen: |
2224 0011 0000 .skip 2,0 |
2225 .global SIO_Drehzahl |
2226 .global SIO_Drehzahl |
2229 SIO_Drehzahl: |
2230 0013 0000 .skip 2,0 |
2231 .global ZeitZumAdWandeln |
2232 .data |
2235 ZeitZumAdWandeln: |
2236 0005 01 .byte 1 |
2237 .global MotorAdresse |
2240 MotorAdresse: |
2241 0006 01 .byte 1 |
2242 .global PPM_Betrieb |
2245 PPM_Betrieb: |
2246 0007 01 .byte 1 |
2247 .global IntRef |
2248 .global IntRef |
2249 .section .bss |
2252 IntRef: |
2253 0015 00 .skip 1,0 |
2254 .lcomm sollwert.2195,2 |
2255 .data |
2258 C.19.2035: |
2259 0008 00 .byte 0 |
2260 0009 00 .byte 0 |
2261 000a 00 .byte 0 |
2262 000b 01 .byte 1 |
2263 000c 01 .byte 1 |
2264 000d 02 .byte 2 |
2265 000e 02 .byte 2 |
2266 .comm HwVersion,1,1 |
2267 .comm RuheStrom,2,1 |
2268 .comm DrehZahlTabelle,512,1 |
2269 .comm MinUpmPulse,2,1 |
2374 .Letext0: |
DEFINED SYMBOLS |
*ABS*:00000000 main.c |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2 *ABS*:0000003f __SREG__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:3 *ABS*:0000003e __SP_H__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:4 *ABS*:0000003d __SP_L__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:5 *ABS*:00000034 __CCP__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:18 .text:00000000 SetPWM |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2137 .bss:00000000 PWM |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2216 .data:00000004 MaxPWM |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2143 .bss:00000002 Strom |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:82 .text:00000060 DebugAusgaben |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2155 .bss:00000005 Mittelstrom |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2229 .bss:00000013 SIO_Drehzahl |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:119 .text:000000a8 PWM_Init |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:148 .text:000000c8 Wait |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:172 .text:000000d6 Delay |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:196 .text:000000e2 SollwertErmittlung |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2174 .bss:00000008 I2C_Timeout |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2180 .bss:0000000a SIO_Timeout |
.bss:00000016 sollwert.2195 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2245 .data:00000007 PPM_Betrieb |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:336 .text:000001dc DelayM |
*COM*:00000002 RuheStrom |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:387 .text:0000021e RotBlink |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:435 .text:00000246 MotorTon |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2258 .data:00000008 C.19.2035 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2240 .data:00000006 MotorAdresse |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2149 .bss:00000004 Strom_max |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2252 .bss:00000015 IntRef |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:1326 .text:000006da Anwerfen |
*COM*:00000002 MinUpmPulse |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:1589 .text:00000888 main |
*COM*:00000001 HwVersion |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2211 .data:00000003 MotorGestoppt |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2198 .data:00000002 ZeitFuerBerechnungen |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2205 .bss:00000010 MotorAnwerfen |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2223 .bss:00000011 CntKommutierungen |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2235 .data:00000005 ZeitZumAdWandeln |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2161 .bss:00000006 Drehzahl |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2167 .data:00000000 KommutierDelay |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2186 .bss:0000000c SollDrehzahl |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2192 .bss:0000000e IstDrehzahl |
*COM*:00000200 DrehZahlTabelle |
UNDEFINED SYMBOLS |
DebugOut |
PPM_Signal |
SIO_Sollwert |
__udivmodhi4 |
anz_ppm_werte |
I2C_RXBuffer |
FastADConvert |
Delay_ms |
CompInterruptFreigabe |
uart_putchar |
MessAD |
Manuell |
SetDelay |
CheckDelay |
UebertragungAbgeschlossen |
SendUart |
DatenUebertragung |
__udivmodsi4 |
Phase |
__udivmodqi4 |
AdConvert |
UART_Init |
Timer0_Init |
InitIC2_Slave |
InitPPM |
__do_copy_data |
__do_clear_bss |
/branches/V0.41-Hexa/timer0.lst |
---|
0,0 → 1,212 |
1 .file "timer0.c" |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __CCP__ = 0x34 |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
15 .Ltext0: |
16 .global __vector_9 |
18 __vector_9: |
19 .LFB3: |
20 .LM1: |
21 0000 1F92 push __zero_reg__ |
22 0002 0F92 push r0 |
23 0004 0FB6 in r0,__SREG__ |
24 0006 0F92 push r0 |
25 0008 1124 clr __zero_reg__ |
26 000a 8F93 push r24 |
27 000c 9F93 push r25 |
28 /* prologue: Signal */ |
29 /* frame size = 0 */ |
30 .LM2: |
31 000e 8091 0000 lds r24,Timer0Overflow |
32 0012 8F5F subi r24,lo8(-(1)) |
33 0014 8093 0000 sts Timer0Overflow,r24 |
34 .LM3: |
35 0018 8091 0000 lds r24,cnt.1843 |
36 001c 8150 subi r24,lo8(-(-1)) |
37 001e 8093 0000 sts cnt.1843,r24 |
38 0022 8F5F subi r24,lo8(-(1)) |
39 0024 01F4 brne .L6 |
40 .LM4: |
41 0026 83E0 ldi r24,lo8(3) |
42 0028 8093 0000 sts cnt.1843,r24 |
43 .LM5: |
44 002c 8091 0000 lds r24,CountMilliseconds |
45 0030 9091 0000 lds r25,(CountMilliseconds)+1 |
46 0034 0196 adiw r24,1 |
47 0036 9093 0000 sts (CountMilliseconds)+1,r25 |
48 003a 8093 0000 sts CountMilliseconds,r24 |
49 .LM6: |
50 003e 8091 0000 lds r24,I2C_Timeout |
51 0042 9091 0000 lds r25,(I2C_Timeout)+1 |
52 0046 0097 sbiw r24,0 |
53 0048 01F0 breq .L3 |
54 004a 0197 sbiw r24,1 |
55 004c 9093 0000 sts (I2C_Timeout)+1,r25 |
56 0050 8093 0000 sts I2C_Timeout,r24 |
57 .L3: |
58 .LM7: |
59 0054 8091 0000 lds r24,PPM_Timeout |
60 0058 8823 tst r24 |
61 005a 01F0 breq .L4 |
62 005c 8091 0000 lds r24,PPM_Timeout |
63 0060 8150 subi r24,lo8(-(-1)) |
64 0062 8093 0000 sts PPM_Timeout,r24 |
65 0066 00C0 rjmp .L5 |
66 .L4: |
67 0068 1092 0000 sts anz_ppm_werte,__zero_reg__ |
68 .L5: |
69 .LM8: |
70 006c 8091 0000 lds r24,SIO_Timeout |
71 0070 9091 0000 lds r25,(SIO_Timeout)+1 |
72 0074 0097 sbiw r24,0 |
73 0076 01F0 breq .L6 |
74 0078 0197 sbiw r24,1 |
75 007a 9093 0000 sts (SIO_Timeout)+1,r25 |
76 007e 8093 0000 sts SIO_Timeout,r24 |
77 .L6: |
78 /* epilogue start */ |
79 .LM9: |
80 0082 9F91 pop r25 |
81 0084 8F91 pop r24 |
82 0086 0F90 pop r0 |
83 0088 0FBE out __SREG__,r0 |
84 008a 0F90 pop r0 |
85 008c 1F90 pop __zero_reg__ |
86 008e 1895 reti |
87 .LFE3: |
89 .global Timer0_Init |
91 Timer0_Init: |
92 .LFB4: |
93 .LM10: |
94 /* prologue: function */ |
95 /* frame size = 0 */ |
96 .LM11: |
97 0090 82E0 ldi r24,lo8(2) |
98 0092 83BF out 83-32,r24 |
99 .LM12: |
100 0094 89B7 in r24,89-32 |
101 0096 8160 ori r24,lo8(1) |
102 0098 89BF out 89-32,r24 |
103 .LM13: |
104 009a 89B7 in r24,89-32 |
105 009c 8064 ori r24,lo8(64) |
106 009e 89BF out 89-32,r24 |
107 /* epilogue start */ |
108 .LM14: |
109 00a0 0895 ret |
110 .LFE4: |
112 .global SetDelay |
114 SetDelay: |
115 .LFB5: |
116 .LM15: |
117 .LVL0: |
118 /* prologue: function */ |
119 /* frame size = 0 */ |
120 .LM16: |
121 00a2 2091 0000 lds r18,CountMilliseconds |
122 00a6 3091 0000 lds r19,(CountMilliseconds)+1 |
123 00aa 2150 subi r18,lo8(-(-1)) |
124 00ac 3040 sbci r19,hi8(-(-1)) |
125 00ae 280F add r18,r24 |
126 00b0 391F adc r19,r25 |
127 .LM17: |
128 00b2 C901 movw r24,r18 |
129 .LVL1: |
130 /* epilogue start */ |
131 00b4 0895 ret |
132 .LFE5: |
134 .global CheckDelay |
136 CheckDelay: |
137 .LFB6: |
138 .LM18: |
139 .LVL2: |
140 /* prologue: function */ |
141 /* frame size = 0 */ |
142 .LM19: |
143 00b6 2091 0000 lds r18,CountMilliseconds |
144 00ba 3091 0000 lds r19,(CountMilliseconds)+1 |
145 00be 821B sub r24,r18 |
146 00c0 930B sbc r25,r19 |
147 .LVL3: |
148 00c2 8070 andi r24,lo8(-32768) |
149 00c4 9078 andi r25,hi8(-32768) |
150 .LM20: |
151 00c6 892F mov r24,r25 |
152 /* epilogue start */ |
153 00c8 0895 ret |
154 .LFE6: |
156 .global Delay_ms |
158 Delay_ms: |
159 .LFB7: |
160 .LM21: |
161 .LVL4: |
162 /* prologue: function */ |
163 /* frame size = 0 */ |
164 .LBB6: |
165 .LBB7: |
166 .LM22: |
167 00ca 2091 0000 lds r18,CountMilliseconds |
168 00ce 3091 0000 lds r19,(CountMilliseconds)+1 |
169 .LVL5: |
170 00d2 2150 subi r18,lo8(-(-1)) |
171 00d4 3040 sbci r19,hi8(-(-1)) |
172 00d6 280F add r18,r24 |
173 00d8 391F adc r19,r25 |
174 .L14: |
175 .LBE7: |
176 .LBE6: |
177 .LBB8: |
178 .LBB9: |
179 .LM23: |
180 00da 8091 0000 lds r24,CountMilliseconds |
181 00de 9091 0000 lds r25,(CountMilliseconds)+1 |
182 .LVL6: |
183 .LBE9: |
184 .LBE8: |
185 .LM24: |
186 00e2 A901 movw r20,r18 |
187 00e4 481B sub r20,r24 |
188 00e6 590B sbc r21,r25 |
189 00e8 CA01 movw r24,r20 |
190 00ea 8070 andi r24,lo8(-32768) |
191 00ec 9078 andi r25,hi8(-32768) |
192 00ee 9923 tst r25 |
193 00f0 01F0 breq .L14 |
194 /* epilogue start */ |
195 .LM25: |
196 00f2 0895 ret |
197 .LFE7: |
199 .global CountMilliseconds |
200 .global CountMilliseconds |
201 .section .bss |
204 CountMilliseconds: |
205 0000 0000 .skip 2,0 |
206 .lcomm cnt.1843,1 |
207 .comm Timer0Overflow,1,1 |
264 .Letext0: |
DEFINED SYMBOLS |
*ABS*:00000000 timer0.c |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:2 *ABS*:0000003f __SREG__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:3 *ABS*:0000003e __SP_H__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:4 *ABS*:0000003d __SP_L__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:5 *ABS*:00000034 __CCP__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:18 .text:00000000 __vector_9 |
*COM*:00000001 Timer0Overflow |
.bss:00000002 cnt.1843 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:204 .bss:00000000 CountMilliseconds |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:91 .text:00000090 Timer0_Init |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:114 .text:000000a2 SetDelay |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:136 .text:000000b6 CheckDelay |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:158 .text:000000ca Delay_ms |
UNDEFINED SYMBOLS |
I2C_Timeout |
PPM_Timeout |
anz_ppm_werte |
SIO_Timeout |
__do_clear_bss |
/branches/V0.41-Hexa/twislave.lst |
---|
0,0 → 1,160 |
1 .file "twislave.c" |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __CCP__ = 0x34 |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
15 .Ltext0: |
16 .global InitIC2_Slave |
18 InitIC2_Slave: |
19 .LFB3: |
20 .LM1: |
21 .LVL0: |
22 /* prologue: function */ |
23 /* frame size = 0 */ |
24 .LM2: |
25 0000 9091 0000 lds r25,MotorAdresse |
26 0004 990F lsl r25 |
27 0006 980F add r25,r24 |
28 0008 92B9 out 34-32,r25 |
29 .LM3: |
30 000a 85EC ldi r24,lo8(-59) |
31 .LVL1: |
32 000c 86BF out 86-32,r24 |
33 /* epilogue start */ |
34 .LM4: |
35 000e 0895 ret |
36 .LFE3: |
38 .global __vector_17 |
40 __vector_17: |
41 .LFB4: |
42 .LM5: |
43 0010 1F92 push __zero_reg__ |
44 0012 0F92 push r0 |
45 0014 0FB6 in r0,__SREG__ |
46 0016 0F92 push r0 |
47 0018 1124 clr __zero_reg__ |
48 001a 8F93 push r24 |
49 001c 9F93 push r25 |
50 /* prologue: Signal */ |
51 /* frame size = 0 */ |
52 .LM6: |
53 001e 81B1 in r24,33-32 |
54 0020 90E0 ldi r25,lo8(0) |
55 0022 887F andi r24,lo8(248) |
56 0024 9070 andi r25,hi8(248) |
57 0026 8038 cpi r24,128 |
58 0028 9105 cpc r25,__zero_reg__ |
59 002a 01F0 breq .L7 |
60 002c 8138 cpi r24,129 |
61 002e 9105 cpc r25,__zero_reg__ |
62 0030 04F4 brge .L11 |
63 0032 0097 sbiw r24,0 |
64 0034 01F0 breq .L5 |
65 0036 8036 cpi r24,96 |
66 0038 9105 cpc r25,__zero_reg__ |
67 003a 01F4 brne .L4 |
68 003c 00C0 rjmp .L21 |
69 .L11: |
70 003e 883B cpi r24,184 |
71 0040 9105 cpc r25,__zero_reg__ |
72 0042 01F0 breq .L9 |
73 0044 883F cpi r24,248 |
74 0046 9105 cpc r25,__zero_reg__ |
75 0048 01F0 breq .L10 |
76 004a 883A cpi r24,168 |
77 004c 9105 cpc r25,__zero_reg__ |
78 004e 01F4 brne .L4 |
79 0050 00C0 rjmp .L9 |
80 .L21: |
81 .LM7: |
82 0052 86B7 in r24,86-32 |
83 0054 8068 ori r24,lo8(-128) |
84 0056 86BF out 86-32,r24 |
85 .LM8: |
86 0058 1092 0000 sts Byte_Counter,__zero_reg__ |
87 005c 00C0 rjmp .L17 |
88 .L7: |
89 .LM9: |
90 005e 83B1 in r24,35-32 |
91 0060 8093 0000 sts I2C_RXBuffer,r24 |
92 .LM10: |
93 0064 84EF ldi r24,lo8(500) |
94 0066 91E0 ldi r25,hi8(500) |
95 0068 9093 0000 sts (I2C_Timeout)+1,r25 |
96 006c 8093 0000 sts I2C_Timeout,r24 |
97 0070 00C0 rjmp .L16 |
98 .L9: |
99 .LM11: |
100 0072 8091 0000 lds r24,Byte_Counter |
101 0076 8823 tst r24 |
102 0078 01F4 brne .L15 |
103 .LM12: |
104 007a 8091 0000 lds r24,Mittelstrom |
105 007e 83B9 out 35-32,r24 |
106 .LM13: |
107 0080 81E0 ldi r24,lo8(1) |
108 0082 8093 0000 sts Byte_Counter,r24 |
109 0086 00C0 rjmp .L16 |
110 .L15: |
111 .LM14: |
112 0088 8091 0000 lds r24,MaxPWM |
113 008c 83B9 out 35-32,r24 |
114 .L16: |
115 .LM15: |
116 008e 86B7 in r24,86-32 |
117 0090 8068 ori r24,lo8(-128) |
118 0092 00C0 rjmp .L18 |
119 .L10: |
120 .LM16: |
121 0094 86B7 in r24,86-32 |
122 0096 8069 ori r24,lo8(-112) |
123 0098 86BF out 86-32,r24 |
124 .L5: |
125 .LM17: |
126 009a 86B7 in r24,86-32 |
127 009c 8069 ori r24,lo8(-112) |
128 009e 86BF out 86-32,r24 |
129 .L4: |
130 .LM18: |
131 00a0 85EC ldi r24,lo8(-59) |
132 .L18: |
133 00a2 86BF out 86-32,r24 |
134 .L17: |
135 /* epilogue start */ |
136 .LM19: |
137 00a4 9F91 pop r25 |
138 00a6 8F91 pop r24 |
139 00a8 0F90 pop r0 |
140 00aa 0FBE out __SREG__,r0 |
141 00ac 0F90 pop r0 |
142 00ae 1F90 pop __zero_reg__ |
143 00b0 1895 reti |
144 .LFE4: |
146 .global Byte_Counter |
147 .global Byte_Counter |
148 .section .bss |
151 Byte_Counter: |
152 0000 00 .skip 1,0 |
153 .comm I2C_RXBuffer,1,1 |
186 .Letext0: |
DEFINED SYMBOLS |
*ABS*:00000000 twislave.c |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:2 *ABS*:0000003f __SREG__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:3 *ABS*:0000003e __SP_H__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:4 *ABS*:0000003d __SP_L__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:5 *ABS*:00000034 __CCP__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:18 .text:00000000 InitIC2_Slave |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:40 .text:00000010 __vector_17 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:151 .bss:00000000 Byte_Counter |
*COM*:00000001 I2C_RXBuffer |
UNDEFINED SYMBOLS |
MotorAdresse |
I2C_Timeout |
Mittelstrom |
MaxPWM |
__do_clear_bss |
/branches/V0.41-Hexa/uart.lst |
---|
0,0 → 1,902 |
1 .file "uart.c" |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __CCP__ = 0x34 |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
15 .Ltext0: |
16 .global __vector_13 |
18 __vector_13: |
19 .LFB3: |
20 .LM1: |
21 0000 1F92 push __zero_reg__ |
22 0002 0F92 push r0 |
23 0004 0FB6 in r0,__SREG__ |
24 0006 0F92 push r0 |
25 0008 1124 clr __zero_reg__ |
26 /* prologue: Signal */ |
27 /* frame size = 0 */ |
28 /* epilogue start */ |
29 .LM2: |
30 000a 0F90 pop r0 |
31 000c 0FBE out __SREG__,r0 |
32 000e 0F90 pop r0 |
33 0010 1F90 pop __zero_reg__ |
34 0012 1895 reti |
35 .LFE3: |
37 .global SendUart |
39 SendUart: |
40 .LFB4: |
41 .LM3: |
42 /* prologue: function */ |
43 /* frame size = 0 */ |
44 .LM4: |
45 0014 5E9B sbis 43-32,6 |
46 0016 00C0 rjmp .L8 |
47 .LM5: |
48 0018 8091 0000 lds r24,UebertragungAbgeschlossen |
49 001c 8823 tst r24 |
50 001e 01F4 brne .L5 |
51 .LM6: |
52 0020 8091 0000 lds r24,ptr.1846 |
53 0024 9091 0000 lds r25,(ptr.1846)+1 |
54 0028 0196 adiw r24,1 |
55 002a 9093 0000 sts (ptr.1846)+1,r25 |
56 002e 8093 0000 sts ptr.1846,r24 |
57 .LM7: |
58 0032 FC01 movw r30,r24 |
59 0034 E050 subi r30,lo8(-(SendeBuffer)) |
60 0036 F040 sbci r31,hi8(-(SendeBuffer)) |
61 0038 E081 ld r30,Z |
62 .LVL0: |
63 .LM8: |
64 003a ED30 cpi r30,lo8(13) |
65 003c 01F0 breq .L6 |
66 003e 8436 cpi r24,100 |
67 0040 9105 cpc r25,__zero_reg__ |
68 0042 01F4 brne .L7 |
69 .L6: |
70 .LM9: |
71 0044 1092 0000 sts (ptr.1846)+1,__zero_reg__ |
72 0048 1092 0000 sts ptr.1846,__zero_reg__ |
73 .LM10: |
74 004c 81E0 ldi r24,lo8(1) |
75 004e 8093 0000 sts UebertragungAbgeschlossen,r24 |
76 .L7: |
77 .LM11: |
78 0052 589A sbi 43-32,0 |
79 .LM12: |
80 0054 ECB9 out 44-32,r30 |
81 0056 0895 ret |
82 .LVL1: |
83 .L5: |
84 .LM13: |
85 0058 1092 0000 sts (ptr.1846)+1,__zero_reg__ |
86 005c 1092 0000 sts ptr.1846,__zero_reg__ |
87 .L8: |
88 0060 0895 ret |
89 .LFE4: |
91 .global Decode64 |
93 Decode64: |
94 .LFB5: |
95 .LM14: |
96 .LVL2: |
97 0062 1F93 push r17 |
98 0064 CF93 push r28 |
99 0066 DF93 push r29 |
100 /* prologue: function */ |
101 /* frame size = 0 */ |
102 0068 EC01 movw r28,r24 |
103 .LM15: |
104 006a 70E0 ldi r23,lo8(0) |
105 .LVL3: |
106 .LM16: |
107 006c A22F mov r26,r18 |
108 006e B0E0 ldi r27,lo8(0) |
109 0070 1197 sbiw r26,1 |
110 0072 00C0 rjmp .L10 |
111 .LVL4: |
112 .L12: |
113 .LM17: |
114 0074 E42F mov r30,r20 |
115 0076 F0E0 ldi r31,lo8(0) |
116 0078 E050 subi r30,lo8(-(RxdBuffer)) |
117 007a F040 sbci r31,hi8(-(RxdBuffer)) |
118 007c 3081 ld r19,Z |
119 .LM18: |
120 007e 4F5F subi r20,lo8(-(1)) |
121 0080 E42F mov r30,r20 |
122 0082 F0E0 ldi r31,lo8(0) |
123 0084 E050 subi r30,lo8(-(RxdBuffer)) |
124 0086 F040 sbci r31,hi8(-(RxdBuffer)) |
125 0088 5081 ld r21,Z |
126 .LVL5: |
127 .LM19: |
128 008a 4F5F subi r20,lo8(-(1)) |
129 008c E42F mov r30,r20 |
130 008e F0E0 ldi r31,lo8(0) |
131 0090 E050 subi r30,lo8(-(RxdBuffer)) |
132 0092 F040 sbci r31,hi8(-(RxdBuffer)) |
133 0094 1081 ld r17,Z |
134 .LM20: |
135 0096 4F5F subi r20,lo8(-(1)) |
136 0098 E42F mov r30,r20 |
137 009a F0E0 ldi r31,lo8(0) |
138 009c E050 subi r30,lo8(-(RxdBuffer)) |
139 009e F040 sbci r31,hi8(-(RxdBuffer)) |
140 00a0 2081 ld r18,Z |
141 .LVL6: |
142 00a2 4F5F subi r20,lo8(-(1)) |
143 .LM21: |
144 00a4 842F mov r24,r20 |
145 00a6 90E0 ldi r25,lo8(0) |
146 .LVL7: |
147 00a8 8A17 cp r24,r26 |
148 00aa 9B07 cpc r25,r27 |
149 00ac 04F4 brge .L13 |
150 .LVL8: |
151 .LM22: |
152 00ae 5D53 subi r21,lo8(-(-61)) |
153 .LVL9: |
154 .LM23: |
155 00b0 FE01 movw r30,r28 |
156 00b2 E70F add r30,r23 |
157 00b4 F11D adc r31,__zero_reg__ |
158 00b6 852F mov r24,r21 |
159 .LVL10: |
160 00b8 8295 swap r24 |
161 00ba 8F70 andi r24,lo8(15) |
162 00bc 3D53 subi r19,lo8(-(-61)) |
163 00be 330F lsl r19 |
164 00c0 330F lsl r19 |
165 00c2 382B or r19,r24 |
166 00c4 3083 st Z,r19 |
167 .LM24: |
168 00c6 6130 cpi r22,lo8(1) |
169 00c8 01F0 breq .L13 |
170 .LM25: |
171 00ca 912F mov r25,r17 |
172 .LVL11: |
173 00cc 9D53 subi r25,lo8(-(-61)) |
174 .LM26: |
175 00ce 7F5F subi r23,lo8(-(1)) |
176 00d0 FE01 movw r30,r28 |
177 00d2 E70F add r30,r23 |
178 00d4 F11D adc r31,__zero_reg__ |
179 00d6 7150 subi r23,lo8(-(-1)) |
180 00d8 5295 swap r21 |
181 00da 507F andi r21,lo8(-16) |
182 00dc 892F mov r24,r25 |
183 00de 8695 lsr r24 |
184 00e0 8695 lsr r24 |
185 00e2 582B or r21,r24 |
186 00e4 5083 st Z,r21 |
187 .LM27: |
188 00e6 6230 cpi r22,lo8(2) |
189 00e8 01F0 breq .L13 |
190 00ea 6350 subi r22,lo8(-(-3)) |
191 .LVL12: |
192 00ec 7E5F subi r23,lo8(-(2)) |
193 00ee FE01 movw r30,r28 |
194 00f0 E70F add r30,r23 |
195 00f2 F11D adc r31,__zero_reg__ |
196 00f4 9295 swap r25 |
197 00f6 990F lsl r25 |
198 00f8 990F lsl r25 |
199 00fa 907C andi r25,lo8(-64) |
200 00fc 2D53 subi r18,lo8(-(-61)) |
201 00fe 922B or r25,r18 |
202 0100 9083 st Z,r25 |
203 0102 7F5F subi r23,lo8(-(1)) |
204 .LVL13: |
205 .L10: |
206 .LM28: |
207 0104 6623 tst r22 |
208 0106 01F0 breq .+2 |
209 0108 00C0 rjmp .L12 |
210 .LVL14: |
211 .L13: |
212 /* epilogue start */ |
213 .LM29: |
214 010a DF91 pop r29 |
215 010c CF91 pop r28 |
216 .LVL15: |
217 010e 1F91 pop r17 |
218 0110 0895 ret |
219 .LFE5: |
221 .global AddCRC |
223 AddCRC: |
224 .LFB7: |
225 .LM30: |
226 .LVL16: |
227 /* prologue: function */ |
228 /* frame size = 0 */ |
229 0112 DC01 movw r26,r24 |
230 .LM31: |
231 0114 20E0 ldi r18,lo8(0) |
232 0116 30E0 ldi r19,hi8(0) |
233 .LVL17: |
234 0118 40E0 ldi r20,lo8(0) |
235 011a 50E0 ldi r21,hi8(0) |
236 .LVL18: |
237 011c 00C0 rjmp .L15 |
238 .LVL19: |
239 .L16: |
240 .LM32: |
241 011e FA01 movw r30,r20 |
242 0120 E050 subi r30,lo8(-(SendeBuffer)) |
243 0122 F040 sbci r31,hi8(-(SendeBuffer)) |
244 0124 8081 ld r24,Z |
245 0126 280F add r18,r24 |
246 0128 311D adc r19,__zero_reg__ |
247 .LM33: |
248 012a 4F5F subi r20,lo8(-(1)) |
249 012c 5F4F sbci r21,hi8(-(1)) |
250 .LVL20: |
251 .L15: |
252 012e 4A17 cp r20,r26 |
253 0130 5B07 cpc r21,r27 |
254 0132 00F0 brlo .L16 |
255 .LM34: |
256 0134 3F70 andi r19,hi8(4095) |
257 .LVL21: |
258 .LM35: |
259 0136 C901 movw r24,r18 |
260 0138 36E0 ldi r19,6 |
261 013a 9695 1: lsr r25 |
262 013c 8795 ror r24 |
263 013e 3A95 dec r19 |
264 0140 01F4 brne 1b |
265 0142 835C subi r24,lo8(-(61)) |
266 0144 FD01 movw r30,r26 |
267 0146 E050 subi r30,lo8(-(SendeBuffer)) |
268 0148 F040 sbci r31,hi8(-(SendeBuffer)) |
269 014a 8083 st Z,r24 |
270 014c 1196 adiw r26,1 |
271 .LVL22: |
272 .LM36: |
273 014e 2F73 andi r18,lo8(63) |
274 .LVL23: |
275 0150 235C subi r18,lo8(-(61)) |
276 0152 FD01 movw r30,r26 |
277 0154 E050 subi r30,lo8(-(SendeBuffer)) |
278 0156 F040 sbci r31,hi8(-(SendeBuffer)) |
279 0158 2083 st Z,r18 |
280 .LM37: |
281 015a A050 subi r26,lo8(-(SendeBuffer+1)) |
282 015c B040 sbci r27,hi8(-(SendeBuffer+1)) |
283 015e 8DE0 ldi r24,lo8(13) |
284 0160 8C93 st X,r24 |
285 .LM38: |
286 0162 1092 0000 sts UebertragungAbgeschlossen,__zero_reg__ |
287 .LM39: |
288 0166 8091 0000 lds r24,SendeBuffer |
289 016a 8CB9 out 44-32,r24 |
290 /* epilogue start */ |
291 .LM40: |
292 016c 0895 ret |
293 .LFE7: |
295 .global SendOutData |
297 SendOutData: |
298 .LFB8: |
299 .LM41: |
300 .LVL24: |
301 016e CF93 push r28 |
302 0170 DF93 push r29 |
303 /* prologue: function */ |
304 /* frame size = 0 */ |
305 0172 EA01 movw r28,r20 |
306 0174 B22F mov r27,r18 |
307 .LM42: |
308 0176 93E2 ldi r25,lo8(35) |
309 0178 9093 0000 sts SendeBuffer,r25 |
310 .LM43: |
311 017c 6093 0000 sts SendeBuffer+1,r22 |
312 .LM44: |
313 0180 8093 0000 sts SendeBuffer+2,r24 |
314 0184 63E0 ldi r22,lo8(3) |
315 0186 70E0 ldi r23,hi8(3) |
316 .LVL25: |
317 0188 A0E0 ldi r26,lo8(0) |
318 .LVL26: |
319 018a 00C0 rjmp .L19 |
320 .LVL27: |
321 .L23: |
322 .LM45: |
323 018c FE01 movw r30,r28 |
324 018e EA0F add r30,r26 |
325 0190 F11D adc r31,__zero_reg__ |
326 0192 9081 ld r25,Z |
327 .LVL28: |
328 0194 AF5F subi r26,lo8(-(1)) |
329 0196 B150 subi r27,lo8(-(-1)) |
330 .LM46: |
331 0198 01F4 brne .L20 |
332 019a 30E0 ldi r19,lo8(0) |
333 019c 40E0 ldi r20,lo8(0) |
334 .LVL29: |
335 019e 00C0 rjmp .L21 |
336 .LVL30: |
337 .L20: |
338 01a0 FE01 movw r30,r28 |
339 01a2 EA0F add r30,r26 |
340 01a4 F11D adc r31,__zero_reg__ |
341 01a6 4081 ld r20,Z |
342 .LVL31: |
343 01a8 AF5F subi r26,lo8(-(1)) |
344 01aa B150 subi r27,lo8(-(-1)) |
345 .LM47: |
346 01ac 01F4 brne .L22 |
347 01ae 30E0 ldi r19,lo8(0) |
348 01b0 00C0 rjmp .L21 |
349 .L22: |
350 01b2 FE01 movw r30,r28 |
351 01b4 EA0F add r30,r26 |
352 01b6 F11D adc r31,__zero_reg__ |
353 01b8 3081 ld r19,Z |
354 01ba AF5F subi r26,lo8(-(1)) |
355 01bc B150 subi r27,lo8(-(-1)) |
356 .L21: |
357 .LM48: |
358 01be 892F mov r24,r25 |
359 .LVL32: |
360 01c0 8695 lsr r24 |
361 01c2 8695 lsr r24 |
362 01c4 835C subi r24,lo8(-(61)) |
363 01c6 FB01 movw r30,r22 |
364 01c8 E050 subi r30,lo8(-(SendeBuffer)) |
365 01ca F040 sbci r31,hi8(-(SendeBuffer)) |
366 01cc 8083 st Z,r24 |
367 .LM49: |
368 01ce 242F mov r18,r20 |
369 01d0 2295 swap r18 |
370 01d2 2F70 andi r18,lo8(15) |
371 01d4 892F mov r24,r25 |
372 01d6 90E0 ldi r25,lo8(0) |
373 .LVL33: |
374 01d8 8370 andi r24,lo8(3) |
375 01da 9070 andi r25,hi8(3) |
376 .LVL34: |
377 01dc 54E0 ldi r21,4 |
378 01de 880F 1: lsl r24 |
379 01e0 991F rol r25 |
380 01e2 5A95 dec r21 |
381 01e4 01F4 brne 1b |
382 .LVL35: |
383 01e6 282B or r18,r24 |
384 01e8 235C subi r18,lo8(-(61)) |
385 01ea FB01 movw r30,r22 |
386 01ec E050 subi r30,lo8(-(SendeBuffer+1)) |
387 01ee F040 sbci r31,hi8(-(SendeBuffer+1)) |
388 01f0 2083 st Z,r18 |
389 .LM50: |
390 01f2 842F mov r24,r20 |
391 .LVL36: |
392 01f4 90E0 ldi r25,lo8(0) |
393 .LVL37: |
394 01f6 8F70 andi r24,lo8(15) |
395 01f8 9070 andi r25,hi8(15) |
396 .LVL38: |
397 01fa 880F lsl r24 |
398 01fc 991F rol r25 |
399 01fe 880F lsl r24 |
400 0200 991F rol r25 |
401 .LVL39: |
402 0202 232F mov r18,r19 |
403 0204 2295 swap r18 |
404 0206 2695 lsr r18 |
405 0208 2695 lsr r18 |
406 020a 2370 andi r18,lo8(3) |
407 020c 282B or r18,r24 |
408 020e 235C subi r18,lo8(-(61)) |
409 0210 FB01 movw r30,r22 |
410 0212 E050 subi r30,lo8(-(SendeBuffer+2)) |
411 0214 F040 sbci r31,hi8(-(SendeBuffer+2)) |
412 0216 2083 st Z,r18 |
413 .LM51: |
414 0218 3F73 andi r19,lo8(63) |
415 021a 335C subi r19,lo8(-(61)) |
416 021c FB01 movw r30,r22 |
417 021e E050 subi r30,lo8(-(SendeBuffer+3)) |
418 0220 F040 sbci r31,hi8(-(SendeBuffer+3)) |
419 0222 3083 st Z,r19 |
420 0224 6C5F subi r22,lo8(-(4)) |
421 0226 7F4F sbci r23,hi8(-(4)) |
422 .LVL40: |
423 .L19: |
424 .LM52: |
425 0228 BB23 tst r27 |
426 022a 01F0 breq .+2 |
427 022c 00C0 rjmp .L23 |
428 .LM53: |
429 022e CB01 movw r24,r22 |
430 .LVL41: |
431 0230 00D0 rcall AddCRC |
432 .LVL42: |
433 /* epilogue start */ |
434 .LM54: |
435 0232 DF91 pop r29 |
436 0234 CF91 pop r28 |
437 .LVL43: |
438 0236 0895 ret |
439 .LFE8: |
441 .global uart_putchar |
443 uart_putchar: |
444 .LFB9: |
445 .LM55: |
446 .LVL44: |
447 0238 1F93 push r17 |
448 /* prologue: function */ |
449 /* frame size = 0 */ |
450 023a 182F mov r17,r24 |
451 .LM56: |
452 023c 8A30 cpi r24,lo8(10) |
453 023e 01F4 brne .L28 |
454 .LM57: |
455 0240 8DE0 ldi r24,lo8(13) |
456 .LVL45: |
457 0242 00D0 rcall uart_putchar |
458 .LVL46: |
459 .L28: |
460 .LM58: |
461 0244 5D9B sbis 43-32,5 |
462 0246 00C0 rjmp .L28 |
463 .LM59: |
464 0248 1CB9 out 44-32,r17 |
465 .LM60: |
466 024a 80E0 ldi r24,lo8(0) |
467 024c 90E0 ldi r25,hi8(0) |
468 /* epilogue start */ |
469 024e 1F91 pop r17 |
470 .LVL47: |
471 0250 0895 ret |
472 .LFE9: |
474 .global __vector_11 |
476 __vector_11: |
477 .LFB6: |
478 .LM61: |
479 0252 1F92 push __zero_reg__ |
480 0254 0F92 push r0 |
481 0256 0FB6 in r0,__SREG__ |
482 0258 0F92 push r0 |
483 025a 1124 clr __zero_reg__ |
484 025c 2F93 push r18 |
485 025e 3F93 push r19 |
486 0260 4F93 push r20 |
487 0262 5F93 push r21 |
488 0264 6F93 push r22 |
489 0266 7F93 push r23 |
490 0268 8F93 push r24 |
491 026a 9F93 push r25 |
492 026c AF93 push r26 |
493 026e BF93 push r27 |
494 0270 CF93 push r28 |
495 0272 DF93 push r29 |
496 0274 EF93 push r30 |
497 0276 FF93 push r31 |
498 /* prologue: Signal */ |
499 /* frame size = 0 */ |
500 .LM62: |
501 0278 8CB1 in r24,44-32 |
502 027a 8093 0000 sts SioTmp,r24 |
503 .LM63: |
504 027e 4091 0000 lds r20,buf_ptr.1914 |
505 0282 4436 cpi r20,lo8(100) |
506 0284 00F0 brlo .L31 |
507 0286 1092 0000 sts UartState.1915,__zero_reg__ |
508 .L31: |
509 .LM64: |
510 028a 5091 0000 lds r21,SioTmp |
511 028e 5D30 cpi r21,lo8(13) |
512 0290 01F0 breq .+2 |
513 0292 00C0 rjmp .L32 |
514 0294 8091 0000 lds r24,UartState.1915 |
515 0298 8230 cpi r24,lo8(2) |
516 029a 01F0 breq .+2 |
517 029c 00C0 rjmp .L32 |
518 .LM65: |
519 029e 1092 0000 sts UartState.1915,__zero_reg__ |
520 .LM66: |
521 02a2 A42F mov r26,r20 |
522 02a4 B0E0 ldi r27,lo8(0) |
523 02a6 FD01 movw r30,r26 |
524 02a8 E050 subi r30,lo8(-(RxdBuffer-2)) |
525 02aa F040 sbci r31,hi8(-(RxdBuffer-2)) |
526 02ac 3081 ld r19,Z |
527 .LM67: |
528 02ae ED01 movw r28,r26 |
529 02b0 C050 subi r28,lo8(-(RxdBuffer-1)) |
530 02b2 D040 sbci r29,hi8(-(RxdBuffer-1)) |
531 02b4 2881 ld r18,Y |
532 .LM68: |
533 02b6 8091 0000 lds r24,crc.1911 |
534 02ba 9091 0000 lds r25,(crc.1911)+1 |
535 02be 831B sub r24,r19 |
536 02c0 9109 sbc r25,__zero_reg__ |
537 02c2 821B sub r24,r18 |
538 02c4 9109 sbc r25,__zero_reg__ |
539 02c6 9F70 andi r25,hi8(4095) |
540 02c8 9093 0000 sts (crc.1911)+1,r25 |
541 02cc 8093 0000 sts crc.1911,r24 |
542 .LM69: |
543 02d0 9C01 movw r18,r24 |
544 02d2 66E0 ldi r22,6 |
545 02d4 3695 1: lsr r19 |
546 02d6 2795 ror r18 |
547 02d8 6A95 dec r22 |
548 02da 01F4 brne 1b |
549 02dc 235C subi r18,lo8(-(61)) |
550 02de 2093 0000 sts crc1.1912,r18 |
551 .LM70: |
552 02e2 982F mov r25,r24 |
553 02e4 9F73 andi r25,lo8(63) |
554 02e6 935C subi r25,lo8(-(61)) |
555 02e8 9093 0000 sts crc2.1913,r25 |
556 .LM71: |
557 02ec 8081 ld r24,Z |
558 02ee 2817 cp r18,r24 |
559 02f0 01F0 breq .+2 |
560 02f2 00C0 rjmp .L42 |
561 02f4 8881 ld r24,Y |
562 02f6 9817 cp r25,r24 |
563 02f8 01F0 breq .+2 |
564 02fa 00C0 rjmp .L42 |
565 .LM72: |
566 02fc 4093 0000 sts AnzahlEmpfangsBytes,r20 |
567 .LM73: |
568 0300 A050 subi r26,lo8(-(RxdBuffer)) |
569 0302 B040 sbci r27,hi8(-(RxdBuffer)) |
570 0304 5C93 st X,r21 |
571 .LM74: |
572 0306 8091 0000 lds r24,RxdBuffer+2 |
573 030a 8235 cpi r24,lo8(82) |
574 030c 01F4 brne .L34 |
575 030e 2CE0 ldi r18,lo8(12) |
576 0310 88E1 ldi r24,lo8(24) |
577 0312 90E0 ldi r25,hi8(24) |
578 /* #APP */ |
579 ; 133 "uart.c" 1 |
580 0314 0FB6 in __tmp_reg__,__SREG__ |
581 0316 F894 cli |
582 0318 A895 wdr |
583 031a 81BD out 33,r24 |
584 031c 0FBE out __SREG__,__tmp_reg__ |
585 031e 21BD out 33,r18 |
586 ; 0 "" 2 |
587 /* #NOAPP */ |
588 .L34: |
589 .LM75: |
590 0320 8091 0000 lds r24,RxdBuffer+2 |
591 0324 00D0 rcall uart_putchar |
592 .LM76: |
593 0326 8091 0000 lds r24,RxdBuffer+2 |
594 032a 8437 cpi r24,lo8(116) |
595 032c 01F0 breq .+2 |
596 032e 00C0 rjmp .L42 |
597 .LM77: |
598 0330 2091 0000 lds r18,AnzahlEmpfangsBytes |
599 0334 80E0 ldi r24,lo8(MotorTest) |
600 0336 90E0 ldi r25,hi8(MotorTest) |
601 0338 66E0 ldi r22,lo8(6) |
602 033a 43E0 ldi r20,lo8(3) |
603 033c 00D0 rcall Decode64 |
604 .LM78: |
605 033e E091 0000 lds r30,MotorAdresse |
606 0342 F0E0 ldi r31,lo8(0) |
607 0344 E050 subi r30,lo8(-(MotorTest-1)) |
608 0346 F040 sbci r31,hi8(-(MotorTest-1)) |
609 0348 8081 ld r24,Z |
610 034a 8093 0000 sts SIO_Sollwert,r24 |
611 .LM79: |
612 034e 84EF ldi r24,lo8(500) |
613 0350 91E0 ldi r25,hi8(500) |
614 0352 9093 0000 sts (SIO_Timeout)+1,r25 |
615 0356 8093 0000 sts SIO_Timeout,r24 |
616 035a 00C0 rjmp .L42 |
617 .L32: |
618 .LM80: |
619 035c 8091 0000 lds r24,UartState.1915 |
620 0360 8130 cpi r24,lo8(1) |
621 0362 01F0 breq .L37 |
622 0364 8130 cpi r24,lo8(1) |
623 0366 00F0 brlo .L36 |
624 0368 8230 cpi r24,lo8(2) |
625 036a 01F0 breq .+2 |
626 036c 00C0 rjmp .L43 |
627 036e 00C0 rjmp .L45 |
628 .L36: |
629 .LM81: |
630 0370 8091 0000 lds r24,SioTmp |
631 0374 8332 cpi r24,lo8(35) |
632 0376 01F4 brne .L39 |
633 0378 8091 0000 lds r24,NeuerDatensatzEmpfangen |
634 037c 8823 tst r24 |
635 037e 01F4 brne .L39 |
636 0380 81E0 ldi r24,lo8(1) |
637 0382 8093 0000 sts UartState.1915,r24 |
638 .L39: |
639 .LM82: |
640 0386 8091 0000 lds r24,SioTmp |
641 038a 8093 0000 sts RxdBuffer,r24 |
642 038e 81E0 ldi r24,lo8(1) |
643 0390 8093 0000 sts buf_ptr.1914,r24 |
644 .LM83: |
645 0394 8091 0000 lds r24,SioTmp |
646 0398 8093 0000 sts crc.1911,r24 |
647 039c 1092 0000 sts crc.1911+1,__zero_reg__ |
648 03a0 00C0 rjmp .L42 |
649 .L37: |
650 .LM84: |
651 03a2 82E0 ldi r24,lo8(2) |
652 03a4 8093 0000 sts UartState.1915,r24 |
653 .LM85: |
654 03a8 E42F mov r30,r20 |
655 03aa F0E0 ldi r31,lo8(0) |
656 03ac 8091 0000 lds r24,SioTmp |
657 03b0 E050 subi r30,lo8(-(RxdBuffer)) |
658 03b2 F040 sbci r31,hi8(-(RxdBuffer)) |
659 03b4 8083 st Z,r24 |
660 03b6 00C0 rjmp .L44 |
661 .L45: |
662 .LM86: |
663 03b8 E42F mov r30,r20 |
664 03ba F0E0 ldi r31,lo8(0) |
665 03bc 8091 0000 lds r24,SioTmp |
666 03c0 E050 subi r30,lo8(-(RxdBuffer)) |
667 03c2 F040 sbci r31,hi8(-(RxdBuffer)) |
668 03c4 8083 st Z,r24 |
669 .LM87: |
670 03c6 4436 cpi r20,lo8(100) |
671 03c8 00F4 brsh .L40 |
672 .L44: |
673 03ca 4F5F subi r20,lo8(-(1)) |
674 03cc 4093 0000 sts buf_ptr.1914,r20 |
675 03d0 00C0 rjmp .L41 |
676 .L40: |
677 .LM88: |
678 03d2 1092 0000 sts UartState.1915,__zero_reg__ |
679 .L41: |
680 .LM89: |
681 03d6 2091 0000 lds r18,SioTmp |
682 03da 8091 0000 lds r24,crc.1911 |
683 03de 9091 0000 lds r25,(crc.1911)+1 |
684 03e2 820F add r24,r18 |
685 03e4 911D adc r25,__zero_reg__ |
686 03e6 9093 0000 sts (crc.1911)+1,r25 |
687 03ea 8093 0000 sts crc.1911,r24 |
688 03ee 00C0 rjmp .L42 |
689 .L43: |
690 .LM90: |
691 03f0 1092 0000 sts UartState.1915,__zero_reg__ |
692 .L42: |
693 /* epilogue start */ |
694 .LM91: |
695 03f4 FF91 pop r31 |
696 03f6 EF91 pop r30 |
697 03f8 DF91 pop r29 |
698 03fa CF91 pop r28 |
699 03fc BF91 pop r27 |
700 03fe AF91 pop r26 |
701 0400 9F91 pop r25 |
702 0402 8F91 pop r24 |
703 0404 7F91 pop r23 |
704 0406 6F91 pop r22 |
705 0408 5F91 pop r21 |
706 040a 4F91 pop r20 |
707 040c 3F91 pop r19 |
708 040e 2F91 pop r18 |
709 0410 0F90 pop r0 |
710 0412 0FBE out __SREG__,r0 |
711 0414 0F90 pop r0 |
712 0416 1F90 pop __zero_reg__ |
713 0418 1895 reti |
714 .LFE6: |
716 .global WriteProgramData |
718 WriteProgramData: |
719 .LFB10: |
720 .LM92: |
721 .LVL48: |
722 /* prologue: function */ |
723 /* frame size = 0 */ |
724 /* epilogue start */ |
725 .LM93: |
726 041a 0895 ret |
727 .LFE10: |
729 .global DatenUebertragung |
731 DatenUebertragung: |
732 .LFB12: |
733 .LM94: |
734 /* prologue: function */ |
735 /* frame size = 0 */ |
736 .LM95: |
737 041c 8091 0000 lds r24,Debug_Timer |
738 0420 9091 0000 lds r25,(Debug_Timer)+1 |
739 0424 00D0 rcall CheckDelay |
740 0426 8823 tst r24 |
741 0428 01F0 breq .L50 |
742 042a 8091 0000 lds r24,UebertragungAbgeschlossen |
743 042e 8823 tst r24 |
744 0430 01F0 breq .L50 |
745 .LM96: |
746 0432 84E4 ldi r24,lo8(68) |
747 0434 6091 0000 lds r22,MeineSlaveAdresse |
748 0438 40E0 ldi r20,lo8(DebugOut) |
749 043a 50E0 ldi r21,hi8(DebugOut) |
750 043c 22E1 ldi r18,lo8(18) |
751 043e 00D0 rcall SendOutData |
752 .LM97: |
753 0440 82E3 ldi r24,lo8(50) |
754 0442 90E0 ldi r25,hi8(50) |
755 0444 00D0 rcall SetDelay |
756 0446 9093 0000 sts (Debug_Timer)+1,r25 |
757 044a 8093 0000 sts Debug_Timer,r24 |
758 .L50: |
759 044e 0895 ret |
760 .LFE12: |
762 .global UART_Init |
764 UART_Init: |
765 .LFB11: |
766 .LM98: |
767 /* prologue: function */ |
768 /* frame size = 0 */ |
769 .LM99: |
770 0450 88E1 ldi r24,lo8(24) |
771 0452 8AB9 out 42-32,r24 |
772 .LM100: |
773 0454 599A sbi 43-32,1 |
774 .LM101: |
775 0456 579A sbi 42-32,7 |
776 .LM102: |
777 0458 80E1 ldi r24,lo8(16) |
778 045a 89B9 out 41-32,r24 |
779 .LM103: |
780 045c 80E0 ldi r24,lo8(gs(uart_putchar)) |
781 045e 90E0 ldi r25,hi8(gs(uart_putchar)) |
782 0460 60E0 ldi r22,lo8(0) |
783 0462 70E0 ldi r23,hi8(0) |
784 0464 00D0 rcall fdevopen |
785 .LM104: |
786 0466 88EC ldi r24,lo8(200) |
787 0468 90E0 ldi r25,hi8(200) |
788 046a 00D0 rcall SetDelay |
789 046c 9093 0000 sts (Debug_Timer)+1,r25 |
790 0470 8093 0000 sts Debug_Timer,r24 |
791 .LM105: |
792 0474 8AE0 ldi r24,lo8(10) |
793 0476 00D0 rcall uart_putchar |
794 0478 82E4 ldi r24,lo8(66) |
795 047a 00D0 rcall uart_putchar |
796 047c 8CE4 ldi r24,lo8(76) |
797 047e 00D0 rcall uart_putchar |
798 0480 8AE3 ldi r24,lo8(58) |
799 0482 00D0 rcall uart_putchar |
800 .LM106: |
801 0484 86E5 ldi r24,lo8(86) |
802 0486 00D0 rcall uart_putchar |
803 0488 80E3 ldi r24,lo8(48) |
804 048a 00D0 rcall uart_putchar |
805 048c 8EE2 ldi r24,lo8(46) |
806 048e 00D0 rcall uart_putchar |
807 0490 84E3 ldi r24,lo8(52) |
808 0492 00D0 rcall uart_putchar |
809 0494 81E3 ldi r24,lo8(49) |
810 0496 00D0 rcall uart_putchar |
811 .LM107: |
812 0498 8AE0 ldi r24,lo8(10) |
813 049a 00D0 rcall uart_putchar |
814 049c 88E4 ldi r24,lo8(72) |
815 049e 00D0 rcall uart_putchar |
816 04a0 87E5 ldi r24,lo8(87) |
817 04a2 00D0 rcall uart_putchar |
818 04a4 8AE3 ldi r24,lo8(58) |
819 04a6 00D0 rcall uart_putchar |
820 04a8 81E3 ldi r24,lo8(49) |
821 04aa 00D0 rcall uart_putchar |
822 04ac 8EE2 ldi r24,lo8(46) |
823 04ae 00D0 rcall uart_putchar |
824 04b0 8091 0000 lds r24,HwVersion |
825 04b4 8A5D subi r24,lo8(-(38)) |
826 04b6 00D0 rcall uart_putchar |
827 .LM108: |
828 04b8 8AE0 ldi r24,lo8(10) |
829 04ba 00D0 rcall uart_putchar |
830 04bc 81E4 ldi r24,lo8(65) |
831 04be 00D0 rcall uart_putchar |
832 04c0 84E4 ldi r24,lo8(68) |
833 04c2 00D0 rcall uart_putchar |
834 04c4 82E5 ldi r24,lo8(82) |
835 04c6 00D0 rcall uart_putchar |
836 04c8 8AE3 ldi r24,lo8(58) |
837 04ca 00D0 rcall uart_putchar |
838 04cc 8091 0000 lds r24,MotorAdresse |
839 04d0 805D subi r24,lo8(-(48)) |
840 04d2 00D0 rcall uart_putchar |
841 /* epilogue start */ |
842 .LM109: |
843 04d4 0895 ret |
844 .LFE11: |
846 .global SIO_Sollwert |
847 .global SIO_Sollwert |
848 .section .bss |
851 SIO_Sollwert: |
852 0000 00 .skip 1,0 |
853 .global SioTmp |
854 .global SioTmp |
857 SioTmp: |
858 0001 00 .skip 1,0 |
859 .global NeuerDatensatzEmpfangen |
860 .global NeuerDatensatzEmpfangen |
863 NeuerDatensatzEmpfangen: |
864 0002 00 .skip 1,0 |
865 .global UebertragungAbgeschlossen |
866 .data |
869 UebertragungAbgeschlossen: |
870 0000 01 .byte 1 |
871 .global MotorTest |
872 .global MotorTest |
873 .section .bss |
876 MotorTest: |
877 0003 0000 0000 .skip 6,0 |
877 0000 |
878 .global AnzahlEmpfangsBytes |
879 .global AnzahlEmpfangsBytes |
882 AnzahlEmpfangsBytes: |
883 0009 00 .skip 1,0 |
884 .lcomm UartState.1915,1 |
885 .lcomm buf_ptr.1914,1 |
886 .lcomm crc2.1913,1 |
887 .lcomm crc1.1912,1 |
888 .lcomm crc.1911,2 |
889 .lcomm ptr.1846,2 |
890 .comm MeineSlaveAdresse,1,1 |
891 .comm Debug_Timer,2,1 |
892 .comm DebugOut,18,1 |
893 .comm SendeBuffer,100,1 |
894 .comm RxdBuffer,100,1 |
991 .Letext0: |
DEFINED SYMBOLS |
*ABS*:00000000 uart.c |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:2 *ABS*:0000003f __SREG__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:3 *ABS*:0000003e __SP_H__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:4 *ABS*:0000003d __SP_L__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:5 *ABS*:00000034 __CCP__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:18 .text:00000000 __vector_13 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:39 .text:00000014 SendUart |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:869 .data:00000000 UebertragungAbgeschlossen |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:888 .bss:00000010 ptr.1846 |
*COM*:00000064 SendeBuffer |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:93 .text:00000062 Decode64 |
*COM*:00000064 RxdBuffer |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:223 .text:00000112 AddCRC |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:297 .text:0000016e SendOutData |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:443 .text:00000238 uart_putchar |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:476 .text:00000252 __vector_11 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:857 .bss:00000001 SioTmp |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:884 .bss:0000000b buf_ptr.1914 |
.bss:0000000a UartState.1915 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:887 .bss:0000000e crc.1911 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:886 .bss:0000000d crc1.1912 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:885 .bss:0000000c crc2.1913 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:882 .bss:00000009 AnzahlEmpfangsBytes |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:876 .bss:00000003 MotorTest |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:851 .bss:00000000 SIO_Sollwert |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:863 .bss:00000002 NeuerDatensatzEmpfangen |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:718 .text:0000041a WriteProgramData |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:731 .text:0000041c DatenUebertragung |
*COM*:00000002 Debug_Timer |
*COM*:00000001 MeineSlaveAdresse |
*COM*:00000012 DebugOut |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:764 .text:00000450 UART_Init |
UNDEFINED SYMBOLS |
MotorAdresse |
SIO_Timeout |
CheckDelay |
SetDelay |
fdevopen |
HwVersion |
__do_copy_data |
__do_clear_bss |