diff --git a/Timer/Timer.c b/Timer/Timer.c index d120acf..48a5683 100644 --- a/Timer/Timer.c +++ b/Timer/Timer.c @@ -1,5 +1,6 @@ #include #include +#include volatile uint8_t segs[15] = { 0b00111111, //0 @@ -19,6 +20,7 @@ volatile uint8_t segs[15] = { 0b00000000 //Blank }; volatile uint8_t frame[6] = {14,14, 14,14, 14,14}; +char var = 0; void display(uint8_t z, uint8_t p) { DDRB = (segs[z]<<1); @@ -47,40 +49,54 @@ void render() { } } +//ISR// (TIMER1_//OVF_vect) +ISR(TIMER0_COMPA_vect) +{ +// TCNT1L = 250; + /* Interrupt Aktion alle + (8000000/256)/256 Hz = 122,0703125 Hz + 1/122,0703125 s = 8,192 ms + */ + /*DDRB = 0b10111011; + PORTB = 0b10110011;*/ + if (var++ >= 100) //wenn Zustand mindestens 200x10ms = 2sec. andauert + { + if(frame[2] == 14) { + frame[2] = 0; + frame[3] = 1; + frame[4] = 2; + } else { + frame[2] = 14; + frame[3] = 14; + frame[4] = 14; + } + } + +} + int main(void) { DDRB = 0; + /*cli(); + //TCCR1B |= (1<: 0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end> - 2: 22 c0 rjmp .+68 ; 0x48 <__bad_interrupt> - 4: 21 c0 rjmp .+66 ; 0x48 <__bad_interrupt> - 6: 20 c0 rjmp .+64 ; 0x48 <__bad_interrupt> - 8: 1f c0 rjmp .+62 ; 0x48 <__bad_interrupt> - a: 1e c0 rjmp .+60 ; 0x48 <__bad_interrupt> - c: 1d c0 rjmp .+58 ; 0x48 <__bad_interrupt> - e: 1c c0 rjmp .+56 ; 0x48 <__bad_interrupt> - 10: 1b c0 rjmp .+54 ; 0x48 <__bad_interrupt> - 12: 1a c0 rjmp .+52 ; 0x48 <__bad_interrupt> - 14: 19 c0 rjmp .+50 ; 0x48 <__bad_interrupt> - 16: 18 c0 rjmp .+48 ; 0x48 <__bad_interrupt> - 18: 17 c0 rjmp .+46 ; 0x48 <__bad_interrupt> - 1a: 16 c0 rjmp .+44 ; 0x48 <__bad_interrupt> - 1c: 15 c0 rjmp .+42 ; 0x48 <__bad_interrupt> - 1e: 14 c0 rjmp .+40 ; 0x48 <__bad_interrupt> - 20: 13 c0 rjmp .+38 ; 0x48 <__bad_interrupt> - 22: 12 c0 rjmp .+36 ; 0x48 <__bad_interrupt> - 24: 11 c0 rjmp .+34 ; 0x48 <__bad_interrupt> + 2: 2a c0 rjmp .+84 ; 0x58 <__bad_interrupt> + 4: 29 c0 rjmp .+82 ; 0x58 <__bad_interrupt> + 6: 28 c0 rjmp .+80 ; 0x58 <__bad_interrupt> + 8: 27 c0 rjmp .+78 ; 0x58 <__bad_interrupt> + a: 26 c0 rjmp .+76 ; 0x58 <__bad_interrupt> + c: 25 c0 rjmp .+74 ; 0x58 <__bad_interrupt> + e: 24 c0 rjmp .+72 ; 0x58 <__bad_interrupt> + 10: 23 c0 rjmp .+70 ; 0x58 <__bad_interrupt> + 12: 22 c0 rjmp .+68 ; 0x58 <__bad_interrupt> + 14: 21 c0 rjmp .+66 ; 0x58 <__bad_interrupt> + 16: 20 c0 rjmp .+64 ; 0x58 <__bad_interrupt> + 18: 1f c0 rjmp .+62 ; 0x58 <__bad_interrupt> + 1a: a4 c0 rjmp .+328 ; 0x164 <__vector_13> + 1c: 1d c0 rjmp .+58 ; 0x58 <__bad_interrupt> + 1e: 1c c0 rjmp .+56 ; 0x58 <__bad_interrupt> + 20: 1b c0 rjmp .+54 ; 0x58 <__bad_interrupt> + 22: 1a c0 rjmp .+52 ; 0x58 <__bad_interrupt> + 24: 19 c0 rjmp .+50 ; 0x58 <__bad_interrupt> 00000026 <__ctors_end>: 26: 11 24 eor r1, r1 @@ -63,305 +67,460 @@ Disassembly of section .text: 2e: 10 e0 ldi r17, 0x00 ; 0 30: a0 e6 ldi r26, 0x60 ; 96 32: b0 e0 ldi r27, 0x00 ; 0 - 34: e8 ea ldi r30, 0xA8 ; 168 - 36: f1 e0 ldi r31, 0x01 ; 1 + 34: e0 e8 ldi r30, 0x80 ; 128 + 36: f2 e0 ldi r31, 0x02 ; 2 38: 02 c0 rjmp .+4 ; 0x3e <__SP_H__> 3a: 05 90 lpm r0, Z+ 3c: 0d 92 st X+, r0 3e: a6 37 cpi r26, 0x76 ; 118 40: b1 07 cpc r27, r17 42: d9 f7 brne .-10 ; 0x3a <__CCP__+0x6> - 44: 87 d0 rcall .+270 ; 0x154
- 46: ae c0 rjmp .+348 ; 0x1a4 <_exit> -00000048 <__bad_interrupt>: - 48: db cf rjmp .-74 ; 0x0 <__vectors> +00000044 <__do_clear_bss>: + 44: 10 e0 ldi r17, 0x00 ; 0 + 46: a6 e7 ldi r26, 0x76 ; 118 + 48: b0 e0 ldi r27, 0x00 ; 0 + 4a: 01 c0 rjmp .+2 ; 0x4e <.do_clear_bss_start> -0000004a : - 0b00000000 //Blank +0000004c <.do_clear_bss_loop>: + 4c: 1d 92 st X+, r1 + +0000004e <.do_clear_bss_start>: + 4e: a7 37 cpi r26, 0x77 ; 119 + 50: b1 07 cpc r27, r17 + 52: e1 f7 brne .-8 ; 0x4c <.do_clear_bss_loop> + 54: af d0 rcall .+350 ; 0x1b4
+ 56: 12 c1 rjmp .+548 ; 0x27c <_exit> + +00000058 <__bad_interrupt>: + 58: d3 cf rjmp .-90 ; 0x0 <__vectors> + +0000005a : }; volatile uint8_t frame[6] = {14,14, 14,14, 14,14}; +char var = 0; void display(uint8_t z, uint8_t p) { DDRB = (segs[z]<<1); - 4a: e8 2f mov r30, r24 - 4c: f0 e0 ldi r31, 0x00 ; 0 - 4e: e0 5a subi r30, 0xA0 ; 160 - 50: ff 4f sbci r31, 0xFF ; 255 - 52: 80 81 ld r24, Z - 54: 88 0f add r24, r24 - 56: 87 bb out 0x17, r24 ; 23 + 5a: e8 2f mov r30, r24 + 5c: f0 e0 ldi r31, 0x00 ; 0 + 5e: e0 5a subi r30, 0xA0 ; 160 + 60: ff 4f sbci r31, 0xFF ; 255 + 62: 80 81 ld r24, Z + 64: 88 0f add r24, r24 + 66: 87 bb out 0x17, r24 ; 23 PORTB = (segs[z]<<1); - 58: 80 81 ld r24, Z - 5a: 88 0f add r24, r24 - 5c: 88 bb out 0x18, r24 ; 24 + 68: 80 81 ld r24, Z + 6a: 88 0f add r24, r24 + 6c: 88 bb out 0x18, r24 ; 24 for(uint8_t i = 1;i<=p;i++) { - 5e: 71 e0 ldi r23, 0x01 ; 1 + 6e: 71 e0 ldi r23, 0x01 ; 1 if(DDRB & (1< + 74: 23 c0 rjmp .+70 ; 0xbc if(DDRB & (1< - 72: 35 95 asr r19 - 74: 27 95 ror r18 - 76: 0a 94 dec r0 - 78: e2 f7 brpl .-8 ; 0x72 - 7a: 01 97 sbiw r24, 0x01 ; 1 - 7c: 20 ff sbrs r18, 0 - 7e: 0a c0 rjmp .+20 ; 0x94 + 76: 27 b3 in r18, 0x17 ; 23 + 78: 87 2f mov r24, r23 + 7a: 90 e0 ldi r25, 0x00 ; 0 + 7c: 30 e0 ldi r19, 0x00 ; 0 + 7e: 07 2e mov r0, r23 + 80: 02 c0 rjmp .+4 ; 0x86 + 82: 35 95 asr r19 + 84: 27 95 ror r18 + 86: 0a 94 dec r0 + 88: e2 f7 brpl .-8 ; 0x82 + 8a: 01 97 sbiw r24, 0x01 ; 1 + 8c: 20 ff sbrs r18, 0 + 8e: 0a c0 rjmp .+20 ; 0xa4 DDRB |= (1<<(i-1)); - 80: 27 b3 in r18, 0x17 ; 23 - 82: fa 01 movw r30, r20 - 84: 02 c0 rjmp .+4 ; 0x8a - 86: ee 0f add r30, r30 - 88: ff 1f adc r31, r31 - 8a: 8a 95 dec r24 - 8c: e2 f7 brpl .-8 ; 0x86 - 8e: 2e 2b or r18, r30 - 90: 27 bb out 0x17, r18 ; 23 - 92: 0b c0 rjmp .+22 ; 0xaa + 90: 27 b3 in r18, 0x17 ; 23 + 92: fa 01 movw r30, r20 + 94: 02 c0 rjmp .+4 ; 0x9a + 96: ee 0f add r30, r30 + 98: ff 1f adc r31, r31 + 9a: 8a 95 dec r24 + 9c: e2 f7 brpl .-8 ; 0x96 + 9e: 2e 2b or r18, r30 + a0: 27 bb out 0x17, r18 ; 23 + a2: 0b c0 rjmp .+22 ; 0xba } else { DDRB &= ~(1<<(i-1)); - 94: 27 b3 in r18, 0x17 ; 23 - 96: fa 01 movw r30, r20 - 98: 02 c0 rjmp .+4 ; 0x9e - 9a: ee 0f add r30, r30 - 9c: ff 1f adc r31, r31 - 9e: 8a 95 dec r24 - a0: e2 f7 brpl .-8 ; 0x9a - a2: cf 01 movw r24, r30 - a4: 80 95 com r24 - a6: 82 23 and r24, r18 - a8: 87 bb out 0x17, r24 ; 23 -volatile uint8_t frame[6] = {14,14, 14,14, 14,14}; + a4: 27 b3 in r18, 0x17 ; 23 + a6: fa 01 movw r30, r20 + a8: 02 c0 rjmp .+4 ; 0xae + aa: ee 0f add r30, r30 + ac: ff 1f adc r31, r31 + ae: 8a 95 dec r24 + b0: e2 f7 brpl .-8 ; 0xaa + b2: cf 01 movw r24, r30 + b4: 80 95 com r24 + b6: 82 23 and r24, r18 + b8: 87 bb out 0x17, r24 ; 23 +char var = 0; void display(uint8_t z, uint8_t p) { DDRB = (segs[z]<<1); PORTB = (segs[z]<<1); for(uint8_t i = 1;i<=p;i++) { - aa: 7f 5f subi r23, 0xFF ; 255 - ac: 67 17 cp r22, r23 - ae: d8 f6 brcc .-74 ; 0x66 - b0: 71 e0 ldi r23, 0x01 ; 1 + ba: 7f 5f subi r23, 0xFF ; 255 + bc: 67 17 cp r22, r23 + be: d8 f6 brcc .-74 ; 0x76 + c0: 71 e0 ldi r23, 0x01 ; 1 } for(uint8_t i = 1;i<=p;i++) { if(PORTB & (1< + c2: 41 e0 ldi r20, 0x01 ; 1 + c4: 50 e0 ldi r21, 0x00 ; 0 + c6: 23 c0 rjmp .+70 ; 0x10e <__stack+0x2f> } else { DDRB &= ~(1<<(i-1)); } } for(uint8_t i = 1;i<=p;i++) { if(PORTB & (1< - c4: 35 95 asr r19 - c6: 27 95 ror r18 - c8: 0a 94 dec r0 - ca: e2 f7 brpl .-8 ; 0xc4 - cc: 01 97 sbiw r24, 0x01 ; 1 - ce: 20 ff sbrs r18, 0 - d0: 0a c0 rjmp .+20 ; 0xe6 <__stack+0x7> + c8: 28 b3 in r18, 0x18 ; 24 + ca: 87 2f mov r24, r23 + cc: 90 e0 ldi r25, 0x00 ; 0 + ce: 30 e0 ldi r19, 0x00 ; 0 + d0: 07 2e mov r0, r23 + d2: 02 c0 rjmp .+4 ; 0xd8 + d4: 35 95 asr r19 + d6: 27 95 ror r18 + d8: 0a 94 dec r0 + da: e2 f7 brpl .-8 ; 0xd4 + dc: 01 97 sbiw r24, 0x01 ; 1 + de: 20 ff sbrs r18, 0 + e0: 0a c0 rjmp .+20 ; 0xf6 <__stack+0x17> PORTB |= (1<<(i-1)); - d2: 28 b3 in r18, 0x18 ; 24 - d4: fa 01 movw r30, r20 - d6: 02 c0 rjmp .+4 ; 0xdc - d8: ee 0f add r30, r30 - da: ff 1f adc r31, r31 - dc: 8a 95 dec r24 - de: e2 f7 brpl .-8 ; 0xd8 - e0: 2e 2b or r18, r30 - e2: 28 bb out 0x18, r18 ; 24 - e4: 0b c0 rjmp .+22 ; 0xfc <__stack+0x1d> + e2: 28 b3 in r18, 0x18 ; 24 + e4: fa 01 movw r30, r20 + e6: 02 c0 rjmp .+4 ; 0xec <__stack+0xd> + e8: ee 0f add r30, r30 + ea: ff 1f adc r31, r31 + ec: 8a 95 dec r24 + ee: e2 f7 brpl .-8 ; 0xe8 <__stack+0x9> + f0: 2e 2b or r18, r30 + f2: 28 bb out 0x18, r18 ; 24 + f4: 0b c0 rjmp .+22 ; 0x10c <__stack+0x2d> } else { PORTB &= ~(1<<(i-1)); - e6: 28 b3 in r18, 0x18 ; 24 - e8: fa 01 movw r30, r20 - ea: 02 c0 rjmp .+4 ; 0xf0 <__stack+0x11> - ec: ee 0f add r30, r30 - ee: ff 1f adc r31, r31 - f0: 8a 95 dec r24 - f2: e2 f7 brpl .-8 ; 0xec <__stack+0xd> - f4: cf 01 movw r24, r30 - f6: 80 95 com r24 - f8: 82 23 and r24, r18 - fa: 88 bb out 0x18, r24 ; 24 + f6: 28 b3 in r18, 0x18 ; 24 + f8: fa 01 movw r30, r20 + fa: 02 c0 rjmp .+4 ; 0x100 <__stack+0x21> + fc: ee 0f add r30, r30 + fe: ff 1f adc r31, r31 + 100: 8a 95 dec r24 + 102: e2 f7 brpl .-8 ; 0xfc <__stack+0x1d> + 104: cf 01 movw r24, r30 + 106: 80 95 com r24 + 108: 82 23 and r24, r18 + 10a: 88 bb out 0x18, r24 ; 24 DDRB |= (1<<(i-1)); } else { DDRB &= ~(1<<(i-1)); } } for(uint8_t i = 1;i<=p;i++) { - fc: 7f 5f subi r23, 0xFF ; 255 - fe: 67 17 cp r22, r23 - 100: d8 f6 brcc .-74 ; 0xb8 + 10c: 7f 5f subi r23, 0xFF ; 255 + 10e: 67 17 cp r22, r23 + 110: d8 f6 brcc .-74 ; 0xc8 PORTB |= (1<<(i-1)); } else { PORTB &= ~(1<<(i-1)); } } DDRB |= (1< - 10a: 88 0f add r24, r24 - 10c: 99 1f adc r25, r25 - 10e: 6a 95 dec r22 - 110: e2 f7 brpl .-8 ; 0x10a <__stack+0x2b> - 112: 28 2b or r18, r24 - 114: 27 bb out 0x17, r18 ; 23 + 112: 27 b3 in r18, 0x17 ; 23 + 114: 81 e0 ldi r24, 0x01 ; 1 + 116: 90 e0 ldi r25, 0x00 ; 0 + 118: 02 c0 rjmp .+4 ; 0x11e <__stack+0x3f> + 11a: 88 0f add r24, r24 + 11c: 99 1f adc r25, r25 + 11e: 6a 95 dec r22 + 120: e2 f7 brpl .-8 ; 0x11a <__stack+0x3b> + 122: 28 2b or r18, r24 + 124: 27 bb out 0x17, r18 ; 23 PORTB &= ~(1<: +00000130 : void render() { - 120: 1f 93 push r17 - 122: cf 93 push r28 - 124: df 93 push r29 - 126: 17 e0 ldi r17, 0x07 ; 7 - 128: c0 e0 ldi r28, 0x00 ; 0 - 12a: d0 e0 ldi r29, 0x00 ; 0 + 130: 1f 93 push r17 + 132: cf 93 push r28 + 134: df 93 push r29 + 136: 17 e0 ldi r17, 0x07 ; 7 + 138: c0 e0 ldi r28, 0x00 ; 0 + 13a: d0 e0 ldi r29, 0x00 ; 0 for(uint8_t f = 0;f<6;f++) { display(frame[f],(5-f)+2); - 12c: fe 01 movw r30, r28 - 12e: e1 59 subi r30, 0x91 ; 145 - 130: ff 4f sbci r31, 0xFF ; 255 - 132: 80 81 ld r24, Z - 134: 61 2f mov r22, r17 - 136: 89 df rcall .-238 ; 0x4a + 13c: fe 01 movw r30, r28 + 13e: e1 59 subi r30, 0x91 ; 145 + 140: ff 4f sbci r31, 0xFF ; 255 + 142: 80 81 ld r24, Z + 144: 61 2f mov r22, r17 + 146: 89 df rcall .-238 ; 0x5a #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 138: 8f e9 ldi r24, 0x9F ; 159 - 13a: 9f e0 ldi r25, 0x0F ; 15 - 13c: 01 97 sbiw r24, 0x01 ; 1 - 13e: f1 f7 brne .-4 ; 0x13c - 140: 00 c0 rjmp .+0 ; 0x142 - 142: 00 00 nop - 144: 21 96 adiw r28, 0x01 ; 1 - 146: 11 50 subi r17, 0x01 ; 1 + 148: 8f e9 ldi r24, 0x9F ; 159 + 14a: 9f e0 ldi r25, 0x0F ; 15 + 14c: 01 97 sbiw r24, 0x01 ; 1 + 14e: f1 f7 brne .-4 ; 0x14c + 150: 00 c0 rjmp .+0 ; 0x152 + 152: 00 00 nop + 154: 21 96 adiw r28, 0x01 ; 1 + 156: 11 50 subi r17, 0x01 ; 1 } DDRB |= (1< + 158: 11 30 cpi r17, 0x01 ; 1 + 15a: 81 f7 brne .-32 ; 0x13c display(frame[f],(5-f)+2); _delay_us(2000); } } - 14c: df 91 pop r29 - 14e: cf 91 pop r28 - 150: 1f 91 pop r17 - 152: 08 95 ret + 15c: df 91 pop r29 + 15e: cf 91 pop r28 + 160: 1f 91 pop r17 + 162: 08 95 ret -00000154
: +00000164 <__vector_13>: + +//ISR// (TIMER1_//OVF_vect) +ISR(TIMER0_COMPA_vect) +{ + 164: 1f 92 push r1 + 166: 0f 92 push r0 + 168: 0f b6 in r0, 0x3f ; 63 + 16a: 0f 92 push r0 + 16c: 11 24 eor r1, r1 + 16e: 8f 93 push r24 + 170: 9f 93 push r25 + (8000000/256)/256 Hz = 122,0703125 Hz + 1/122,0703125 s = 8,192 ms + */ + /*DDRB = 0b10111011; + PORTB = 0b10110011;*/ + if (var++ >= 100) //wenn Zustand mindestens 200x10ms = 2sec. andauert + 172: 80 91 76 00 lds r24, 0x0076 + 176: 98 2f mov r25, r24 + 178: 9f 5f subi r25, 0xFF ; 255 + 17a: 90 93 76 00 sts 0x0076, r25 + 17e: 84 36 cpi r24, 0x64 ; 100 + 180: 90 f0 brcs .+36 ; 0x1a6 <__vector_13+0x42> + { + if(frame[2] == 14) { + 182: 80 91 71 00 lds r24, 0x0071 + 186: 8e 30 cpi r24, 0x0E ; 14 + 188: 39 f4 brne .+14 ; 0x198 <__vector_13+0x34> + frame[2] = 0; + 18a: 10 92 71 00 sts 0x0071, r1 + frame[3] = 1; + 18e: 81 e0 ldi r24, 0x01 ; 1 + 190: 80 93 72 00 sts 0x0072, r24 + frame[4] = 2; + 194: 82 e0 ldi r24, 0x02 ; 2 + 196: 05 c0 rjmp .+10 ; 0x1a2 <__vector_13+0x3e> + } else { + frame[2] = 14; + 198: 8e e0 ldi r24, 0x0E ; 14 + 19a: 80 93 71 00 sts 0x0071, r24 + frame[3] = 14; + 19e: 80 93 72 00 sts 0x0072, r24 + frame[4] = 14; + 1a2: 80 93 73 00 sts 0x0073, r24 + } + } + +} + 1a6: 9f 91 pop r25 + 1a8: 8f 91 pop r24 + 1aa: 0f 90 pop r0 + 1ac: 0f be out 0x3f, r0 ; 63 + 1ae: 0f 90 pop r0 + 1b0: 1f 90 pop r1 + 1b2: 18 95 reti + +000001b4
: int main(void) { - 154: ff 92 push r15 - 156: 0f 93 push r16 - 158: 1f 93 push r17 - 15a: df 93 push r29 - 15c: cf 93 push r28 - 15e: 00 d0 rcall .+0 ; 0x160 - 160: cd b7 in r28, 0x3d ; 61 - 162: de b7 in r29, 0x3e ; 62 + 1b4: af 92 push r10 + 1b6: bf 92 push r11 + 1b8: df 92 push r13 + 1ba: ef 92 push r14 + 1bc: ff 92 push r15 + 1be: 0f 93 push r16 + 1c0: 1f 93 push r17 + 1c2: df 93 push r29 + 1c4: cf 93 push r28 + 1c6: 0f 92 push r0 + 1c8: cd b7 in r28, 0x3d ; 61 + 1ca: de b7 in r29, 0x3e ; 62 DDRB = 0; - 164: 17 ba out 0x17, r1 ; 23 + 1cc: 17 ba out 0x17, r1 ; 23 + TCCR0B |= (1< - 18c: 9a 81 ldd r25, Y+2 ; 0x02 - 18e: 91 50 subi r25, 0x01 ; 1 - frame[2] = 9-l; - for(uint8_t k=0;k<10;k++) { - frame[3] = 9-k; - for(uint8_t j=0;j<10;j++) { - frame[4] = 9-j; - for(uint8_t i=0;i<10;i++) { - 190: 89 81 ldd r24, Y+1 ; 0x01 - 192: 9f 3f cpi r25, 0xFF ; 255 - 194: b1 f7 brne .-20 ; 0x182 - 196: 81 50 subi r24, 0x01 ; 1 - 198: 88 f7 brcc .-30 ; 0x17c - frame[0] = 11; - for(uint8_t l=0;l<10;l++) { - frame[2] = 9-l; - for(uint8_t k=0;k<10;k++) { - frame[3] = 9-k; - for(uint8_t j=0;j<10;j++) { - 19a: 01 50 subi r16, 0x01 ; 1 - 19c: 60 f7 brcc .-40 ; 0x176 + 1ce: 2b e0 ldi r18, 0x0B ; 11 + 1d0: d2 2e mov r13, r18 + for(uint8_t j=0;j<=30;j++) { + frame[2] = (uint8_t)((30-j)/10); + 1d2: 9a e0 ldi r25, 0x0A ; 10 + 1d4: e9 2e mov r14, r25 + 1d6: f1 2c mov r15, r1 + TCCR0B |= (1< - 1a2: e3 cf rjmp .-58 ; 0x16a + 1d8: d0 92 6f 00 sts 0x006F, r13 + 1dc: 0e e1 ldi r16, 0x1E ; 30 + 1de: 10 e0 ldi r17, 0x00 ; 0 + for(uint8_t j=0;j<=30;j++) { + frame[2] = (uint8_t)((30-j)/10); + 1e0: c8 01 movw r24, r16 + 1e2: b7 01 movw r22, r14 + 1e4: 24 d0 rcall .+72 ; 0x22e <__divmodhi4> + 1e6: 60 93 71 00 sts 0x0071, r22 + frame[3] = (uint8_t)((30-j)%10); + 1ea: 80 93 72 00 sts 0x0072, r24 + 1ee: 8b e3 ldi r24, 0x3B ; 59 + 1f0: a8 2e mov r10, r24 + 1f2: b1 2c mov r11, r1 + for(uint8_t i=0;i<=59;i++) { + frame[4] = (uint8_t)((59-i)/10); + 1f4: c5 01 movw r24, r10 + 1f6: b7 01 movw r22, r14 + 1f8: 1a d0 rcall .+52 ; 0x22e <__divmodhi4> + 1fa: 60 93 73 00 sts 0x0073, r22 + frame[5] = (uint8_t)((59-i)%10); + 1fe: 80 93 74 00 sts 0x0074, r24 + for(uint8_t k=0;k<82;k++) { + 202: 80 e0 ldi r24, 0x00 ; 0 + render(); + 204: 89 83 std Y+1, r24 ; 0x01 + 206: 94 df rcall .-216 ; 0x130 + frame[2] = (uint8_t)((30-j)/10); + frame[3] = (uint8_t)((30-j)%10); + for(uint8_t i=0;i<=59;i++) { + frame[4] = (uint8_t)((59-i)/10); + frame[5] = (uint8_t)((59-i)%10); + for(uint8_t k=0;k<82;k++) { + 208: 89 81 ldd r24, Y+1 ; 0x01 + 20a: 8f 5f subi r24, 0xFF ; 255 + 20c: 82 35 cpi r24, 0x52 ; 82 + 20e: d1 f7 brne .-12 ; 0x204 + 210: 08 94 sec + 212: a1 08 sbc r10, r1 + 214: b1 08 sbc r11, r1 + while(1){ + frame[0] = 11; + for(uint8_t j=0;j<=30;j++) { + frame[2] = (uint8_t)((30-j)/10); + frame[3] = (uint8_t)((30-j)%10); + for(uint8_t i=0;i<=59;i++) { + 216: 8f ef ldi r24, 0xFF ; 255 + 218: a8 16 cp r10, r24 + 21a: 8f ef ldi r24, 0xFF ; 255 + 21c: b8 06 cpc r11, r24 + 21e: 51 f7 brne .-44 ; 0x1f4 + 220: 01 50 subi r16, 0x01 ; 1 + 222: 10 40 sbci r17, 0x00 ; 0 + OCR0A = 250; //geladen mit 10ms + TIMSK |= (1< + 22c: d5 cf rjmp .-86 ; 0x1d8 -000001a4 <_exit>: - 1a4: f8 94 cli +0000022e <__divmodhi4>: + 22e: 97 fb bst r25, 7 + 230: 09 2e mov r0, r25 + 232: 07 26 eor r0, r23 + 234: 0a d0 rcall .+20 ; 0x24a <__divmodhi4_neg1> + 236: 77 fd sbrc r23, 7 + 238: 04 d0 rcall .+8 ; 0x242 <__divmodhi4_neg2> + 23a: 0c d0 rcall .+24 ; 0x254 <__udivmodhi4> + 23c: 06 d0 rcall .+12 ; 0x24a <__divmodhi4_neg1> + 23e: 00 20 and r0, r0 + 240: 1a f4 brpl .+6 ; 0x248 <__divmodhi4_exit> -000001a6 <__stop_program>: - 1a6: ff cf rjmp .-2 ; 0x1a6 <__stop_program> +00000242 <__divmodhi4_neg2>: + 242: 70 95 com r23 + 244: 61 95 neg r22 + 246: 7f 4f sbci r23, 0xFF ; 255 + +00000248 <__divmodhi4_exit>: + 248: 08 95 ret + +0000024a <__divmodhi4_neg1>: + 24a: f6 f7 brtc .-4 ; 0x248 <__divmodhi4_exit> + 24c: 90 95 com r25 + 24e: 81 95 neg r24 + 250: 9f 4f sbci r25, 0xFF ; 255 + 252: 08 95 ret + +00000254 <__udivmodhi4>: + 254: aa 1b sub r26, r26 + 256: bb 1b sub r27, r27 + 258: 51 e1 ldi r21, 0x11 ; 17 + 25a: 07 c0 rjmp .+14 ; 0x26a <__udivmodhi4_ep> + +0000025c <__udivmodhi4_loop>: + 25c: aa 1f adc r26, r26 + 25e: bb 1f adc r27, r27 + 260: a6 17 cp r26, r22 + 262: b7 07 cpc r27, r23 + 264: 10 f0 brcs .+4 ; 0x26a <__udivmodhi4_ep> + 266: a6 1b sub r26, r22 + 268: b7 0b sbc r27, r23 + +0000026a <__udivmodhi4_ep>: + 26a: 88 1f adc r24, r24 + 26c: 99 1f adc r25, r25 + 26e: 5a 95 dec r21 + 270: a9 f7 brne .-22 ; 0x25c <__udivmodhi4_loop> + 272: 80 95 com r24 + 274: 90 95 com r25 + 276: bc 01 movw r22, r24 + 278: cd 01 movw r24, r26 + 27a: 08 95 ret + +0000027c <_exit>: + 27c: f8 94 cli + +0000027e <__stop_program>: + 27e: ff cf rjmp .-2 ; 0x27e <__stop_program> diff --git a/Timer/default/Timer.map b/Timer/default/Timer.map index ce2926c..c330761 100644 --- a/Timer/default/Timer.map +++ b/Timer/default/Timer.map @@ -1,9 +1,15 @@ Archive member included because of file (symbol) +e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) + Timer.o (__divmodhi4) e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o (exit) e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) Timer.o (__do_copy_data) +e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) + Timer.o (__do_clear_bss) +e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodhi4.o) + e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) (__udivmodhi4) Memory Configuration @@ -114,7 +120,7 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a .rela.plt *(.rela.plt) -.text 0x00000000 0x1a8 +.text 0x00000000 0x280 *(.vectors) .vectors 0x00000000 0x26 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o 0x00000000 __vector_default @@ -154,6 +160,8 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a *(.init4) .init4 0x0000002e 0x16 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) 0x0000002e __do_copy_data + .init4 0x00000044 0x10 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) + 0x00000044 __do_clear_bss *(.init4) *(.init5) *(.init5) @@ -164,44 +172,53 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a *(.init8) *(.init8) *(.init9) - .init9 0x00000044 0x4 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o + .init9 0x00000054 0x4 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o *(.init9) *(.text) - .text 0x00000048 0x2 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o - 0x00000048 __vector_1 - 0x00000048 __vector_12 - 0x00000048 __bad_interrupt - 0x00000048 __vector_6 - 0x00000048 __vector_3 - 0x00000048 __vector_11 - 0x00000048 __vector_13 - 0x00000048 __vector_17 - 0x00000048 __vector_7 - 0x00000048 __vector_5 - 0x00000048 __vector_4 - 0x00000048 __vector_9 - 0x00000048 __vector_2 - 0x00000048 __vector_15 - 0x00000048 __vector_8 - 0x00000048 __vector_14 - 0x00000048 __vector_10 - 0x00000048 __vector_16 - 0x00000048 __vector_18 - .text 0x0000004a 0x15a Timer.o - 0x0000004a display - 0x00000120 render - 0x00000154 main - .text 0x000001a4 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) - .text 0x000001a4 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) - 0x000001a4 . = ALIGN (0x2) + .text 0x00000058 0x2 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o + 0x00000058 __vector_1 + 0x00000058 __vector_12 + 0x00000058 __bad_interrupt + 0x00000058 __vector_6 + 0x00000058 __vector_3 + 0x00000058 __vector_11 + 0x00000058 __vector_17 + 0x00000058 __vector_7 + 0x00000058 __vector_5 + 0x00000058 __vector_4 + 0x00000058 __vector_9 + 0x00000058 __vector_2 + 0x00000058 __vector_15 + 0x00000058 __vector_8 + 0x00000058 __vector_14 + 0x00000058 __vector_10 + 0x00000058 __vector_16 + 0x00000058 __vector_18 + .text 0x0000005a 0x1d4 Timer.o + 0x0000005a display + 0x00000130 render + 0x00000164 __vector_13 + 0x000001b4 main + .text 0x0000022e 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) + .text 0x0000022e 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .text 0x0000022e 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) + .text 0x0000022e 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) + .text 0x0000022e 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodhi4.o) + 0x0000022e . = ALIGN (0x2) *(.text.*) - .text.libgcc 0x000001a4 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) - .text.libgcc 0x000001a4 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) - 0x000001a4 . = ALIGN (0x2) + .text.libgcc 0x0000022e 0x26 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) + 0x0000022e _div + 0x0000022e __divmodhi4 + .text.libgcc 0x00000254 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .text.libgcc 0x00000254 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) + .text.libgcc 0x00000254 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) + .text.libgcc 0x00000254 0x28 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodhi4.o) + 0x00000254 __udivmodhi4 + 0x0000027c . = ALIGN (0x2) *(.fini9) - .fini9 0x000001a4 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) - 0x000001a4 _exit - 0x000001a4 exit + .fini9 0x0000027c 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + 0x0000027c _exit + 0x0000027c exit *(.fini9) *(.fini8) *(.fini8) @@ -220,19 +237,22 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a *(.fini1) *(.fini1) *(.fini0) - .fini0 0x000001a4 0x4 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .fini0 0x0000027c 0x4 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) *(.fini0) - 0x000001a8 _etext = . + 0x00000280 _etext = . -.data 0x00800060 0x16 load address 0x000001a8 +.data 0x00800060 0x16 load address 0x00000280 0x00800060 PROVIDE (__data_start, .) *(.data) .data 0x00800060 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o .data 0x00800060 0x15 Timer.o 0x00800060 segs 0x0080006f frame + .data 0x00800075 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) .data 0x00800075 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) .data 0x00800075 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) + .data 0x00800075 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) + .data 0x00800075 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodhi4.o) *(.data*) *(.rodata) *(.rodata*) @@ -242,25 +262,29 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a 0x00800076 _edata = . 0x00800076 PROVIDE (__data_end, .) -.bss 0x00800076 0x0 +.bss 0x00800076 0x1 0x00800076 PROVIDE (__bss_start, .) *(.bss) .bss 0x00800076 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o - .bss 0x00800076 0x0 Timer.o - .bss 0x00800076 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) - .bss 0x00800076 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) + .bss 0x00800076 0x1 Timer.o + 0x00800076 var + .bss 0x00800077 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) + .bss 0x00800077 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .bss 0x00800077 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) + .bss 0x00800077 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) + .bss 0x00800077 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodhi4.o) *(.bss*) *(COMMON) - 0x00800076 PROVIDE (__bss_end, .) - 0x000001a8 __data_load_start = LOADADDR (.data) - 0x000001be __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00800077 PROVIDE (__bss_end, .) + 0x00000280 __data_load_start = LOADADDR (.data) + 0x00000296 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00800076 0x0 - 0x00800076 PROVIDE (__noinit_start, .) +.noinit 0x00800077 0x0 + 0x00800077 PROVIDE (__noinit_start, .) *(.noinit*) - 0x00800076 PROVIDE (__noinit_end, .) - 0x00800076 _end = . - 0x00800076 PROVIDE (__heap_start, .) + 0x00800077 PROVIDE (__noinit_end, .) + 0x00800077 _end = . + 0x00800077 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -319,36 +343,36 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a 0x00000000 0x20 Timer.o .debug_pubnames - 0x00000000 0x45 + 0x00000000 0x5d *(.debug_pubnames) .debug_pubnames - 0x00000000 0x45 Timer.o + 0x00000000 0x5d Timer.o -.debug_info 0x00000000 0x2af +.debug_info 0x00000000 0x2cf *(.debug_info) - .debug_info 0x00000000 0x2af Timer.o + .debug_info 0x00000000 0x2cf Timer.o *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x196 +.debug_abbrev 0x00000000 0x1d4 *(.debug_abbrev) - .debug_abbrev 0x00000000 0x196 Timer.o + .debug_abbrev 0x00000000 0x1d4 Timer.o -.debug_line 0x00000000 0x24a +.debug_line 0x00000000 0x2b2 *(.debug_line) - .debug_line 0x00000000 0x24a Timer.o + .debug_line 0x00000000 0x2b2 Timer.o -.debug_frame 0x00000000 0x40 +.debug_frame 0x00000000 0x50 *(.debug_frame) - .debug_frame 0x00000000 0x40 Timer.o + .debug_frame 0x00000000 0x50 Timer.o -.debug_str 0x00000000 0xf6 +.debug_str 0x00000000 0x102 *(.debug_str) - .debug_str 0x00000000 0xf6 Timer.o - 0x12a (size before relaxing) + .debug_str 0x00000000 0x102 Timer.o + 0x13b (size before relaxing) -.debug_loc 0x00000000 0xbf +.debug_loc 0x00000000 0xb6 *(.debug_loc) - .debug_loc 0x00000000 0xbf Timer.o + .debug_loc 0x00000000 0xb6 Timer.o .debug_macinfo *(.debug_macinfo) @@ -359,3 +383,6 @@ LOAD linker stubs 0x00000000 0x2b .debug_pubtypes 0x00000000 0x2b Timer.o + +.debug_ranges 0x00000000 0x18 + .debug_ranges 0x00000000 0x18 Timer.o diff --git a/Timer/default/dep/Timer.o.d b/Timer/default/dep/Timer.o.d index f7bfd24..64187df 100644 --- a/Timer/default/dep/Timer.o.d +++ b/Timer/default/dep/Timer.o.d @@ -11,7 +11,8 @@ Timer.o: ../Timer.c \ e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/avr/fuse.h \ e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/avr/lock.h \ e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h \ - e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay_basic.h + e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay_basic.h \ + e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/avr/interrupt.h e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/avr/io.h: @@ -38,3 +39,5 @@ e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/avr e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h: e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay_basic.h: + +e:\programme\avr\ toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/avr/interrupt.h: