diff --git a/Timer/Timer.aps b/Timer/Timer.aps index d7d18e0..4939a0c 100644 --- a/Timer/Timer.aps +++ b/Timer/Timer.aps @@ -1 +1 @@ -Timer23-Nov-2012 21:48:3323-Nov-2012 21:48:36241023-Nov-2012 21:48:3344, 19, 0, 730AVR GCCD:\Doc's\Basteleien\Timer\Timer\JTAGICE mkIIATtiny2313.xmlfalseR00R01R02R03R04R05R06R07R08R09R10R11R12R13R14R15R16R17R18R19R20R21R22R23R24R25R26R27R28R29R30R31Auto000Timer.cdefaultNOattiny2313111Timer.elfdefault\1-Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enumsdefault1E:\Programme\AVR Toolchain\bin\avr-gcc.exeE:\Programme\AVR Toolchain\bin\make.exe00000Timer.c1 +Timer23-Nov-2012 21:48:3305-Dec-2012 10:14:04241023-Nov-2012 21:48:3344, 19, 0, 730AVR GCCdefault\Timer.elfD:\Doc's\Basteleien\Timer\Timer\JTAGICE mkIIATtiny2313.xmlfalseR00R01R02R03R04R05R06R07R08R09R10R11R12R13R14R15R16R17R18R19R20R21R22R23R24R25R26R27R28R29R30R31Auto000Timer.cdefault\Timer.lssdefault\Timer.mapdefaultNOattiny2313111Timer.elfdefault\0-Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enumsdefault1E:\Programme\AVR Toolchain\bin\avr-gcc.exeE:\Programme\AVR Toolchain\bin\make.exe00000Timer.c1 diff --git a/Timer/Timer.c b/Timer/Timer.c index 48a5683..d2308e3 100644 --- a/Timer/Timer.c +++ b/Timer/Timer.c @@ -2,7 +2,9 @@ #include #include -volatile uint8_t segs[15] = { +#define MIN 29 + +volatile uint8_t segs[18] = { 0b00111111, //0 0b00000110, //1 0b01011011, //2 @@ -17,7 +19,10 @@ volatile uint8_t segs[15] = { 0b01110000, //+ 0b01000110, //-1 0b01110110, //+1 - 0b00000000 //Blank + 0b00000000, //Blank + 0b01111001, //E + 0b01010100, //n + 0b01011110 //d }; volatile uint8_t frame[6] = {14,14, 14,14, 14,14}; char var = 0; @@ -87,16 +92,34 @@ int main(void) { sei();//*/ 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 j=0;j<=MIN;j++) { + frame[2] = (uint8_t)((MIN-j)/10); + frame[3] = (uint8_t)((MIN-j)%10); for(uint8_t i=0;i<=59;i++) { frame[4] = (uint8_t)((59-i)/10); frame[5] = (uint8_t)((59-i)%10); + frame[0] = (i%2==0)?11:14; for(uint8_t k=0;k<82;k++) { render(); } } } + while(1) { + frame[0] = 10; + frame[2] = 15; + frame[3] = 16; + frame[4] = 17; + frame[5] = 15; + for(uint8_t k=0;k<82;k++) { + render(); + } + frame[2] = 14; + frame[3] = 14; + frame[4] = 14; + frame[5] = 14; + for(uint8_t k=0;k<82;k++) { + render(); + } + } } } diff --git a/Timer/default/Timer.elf b/Timer/default/Timer.elf index 588d472..a8e8046 100644 Binary files a/Timer/default/Timer.elf and b/Timer/default/Timer.elf differ diff --git a/Timer/default/Timer.hex b/Timer/default/Timer.hex index 9bd00f2..ba8fc93 100644 --- a/Timer/default/Timer.hex +++ b/Timer/default/Timer.hex @@ -1,9 +1,9 @@ :1000000012C02AC029C028C027C026C025C024C0CD :1000100023C022C021C020C01FC0A4C01DC01CC05E :100020001BC01AC019C011241FBECFEDCDBF10E0F8 -:10003000A0E6B0E0E0E8F2E002C005900D92A6373D -:10004000B107D9F710E0A6E7B0E001C01D92A737CD -:10005000B107E1F7AFD012C1D3CFE82FF0E0E05AFB +:10003000A0E6B0E0E6EDF2E002C005900D92A83730 +:10004000B107D9F710E0A8E7B0E001C01D92A937C9 +:10005000B107E1F7AFD03DC1D3CFE82FF0E0E05AD0 :10006000FF4F8081880F87BB8081880F88BB71E03C :1000700041E050E023C027B3872F90E030E0072E07 :1000800002C0359527950A94E2F7019720FF0AC030 @@ -17,27 +17,33 @@ :100100008A95E2F7CF018095822388BB7F5F6717CE :10011000D8F627B381E090E002C0880F991F6A9556 :10012000E2F7282B27BB98B38095892388BB0895D5 -:100130001F93CF93DF9317E0C0E0D0E0FE01E159B9 +:100130001F93CF93DF9317E0C0E0D0E0FE01EE58AD :10014000FF4F8081612F89DF8FE99FE00197F1F7F1 :1001500000C0000021961150113081F7DF91CF913E :100160001F9108951F920F920FB60F9211248F9333 -:100170009F9380917600982F9F5F909376008436AE -:1001800090F0809171008E3039F41092710081E00E -:100190008093720082E005C08EE0809371008093AE -:1001A0007200809373009F918F910F900FBE0F90FC -:1001B0001F901895AF92BF92DF92EF92FF920F932C -:1001C0001F93DF93CF930F92CDB7DEB717BA2BE013 -:1001D000D22E9AE0E92EF12CD0926F000EE110E0C1 -:1001E000C801B70124D060937100809372008BE343 -:1001F000A82EB12CC501B7011AD06093730080936B -:10020000740080E0898394DF89818F5F8235D1F724 -:100210000894A108B1088FEFA8168FEFB80651F720 -:1002200001501040EFEF0F3F1E07D1F6D5CF97FBDF -:10023000092E07260AD077FD04D00CD006D0002066 -:100240001AF4709561957F4F0895F6F79095819512 -:100250009F4F0895AA1BBB1B51E107C0AA1FBB1FDC -:10026000A617B70710F0A61BB70B881F991F5A9542 -:10027000A9F780959095BC01CD010895F894FFCF22 -:100280003F065B4F666D7D077F6F40704676000EC0 -:060290000E0E0E0E0E0022 +:100170009F9380917800982F9F5F909378008436AA +:1001800090F0809174008E3039F41092740081E008 +:100190008093750082E005C08EE0809374008093A8 +:1001A0007500809376009F918F910F900FBE0F90F6 +:1001B0001F901895AF92BF92CF92DF92EF92FF926D +:1001C0000F931F93DF93CF930F92CDB7DEB717BA7C +:1001D0008BE0809372006DE1A62EB12C5AE0E52EE3 +:1001E000F12CC501B7014ED0609374008093750067 +:1001F0000BE310E020E0C801B70144D06093760023 +:100200008093770020FF02C08EE001C08BE08093D6 +:10021000720042E5D42E29838BDFDA942981DD2018 +:10022000D1F72F5F015010402C3329F70894A10813 +:10023000B1088FEFA8168FEFB80699F63AE0C32EF3 +:100240002FE0E22E90E1F92E81E1D82E0EE0C0924F +:100250007200E0927400F0927500D0927600E09205 +:10026000770012E565DF1150E9F700937400009301 +:100270007500009376000093770012E559DF115066 +:10028000E9F7E5CF97FB092E07260AD077FD04D0C2 +:100290000CD006D000201AF4709561957F4F089518 +:1002A000F6F7909581959F4F0895AA1BBB1B51E1CE +:1002B00007C0AA1FBB1FA617B70710F0A61BB70BD6 +:1002C000881F991F5A95A9F780959095BC01CD017B +:0602D0000895F894FFCF31 +:1002D6003F065B4F666D7D077F6F407046760079FF +:0802E600545E0E0E0E0E0E0E0A :00000001FF diff --git a/Timer/default/Timer.lss b/Timer/default/Timer.lss index 32972fe..13a8e9a 100644 --- a/Timer/default/Timer.lss +++ b/Timer/default/Timer.lss @@ -3,35 +3,33 @@ Timer.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .text 00000280 00000000 00000000 00000094 2**1 + 0 .text 000002d6 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .data 00000016 00800060 00000280 00000314 2**0 + 1 .data 00000018 00800060 000002d6 0000036a 2**0 CONTENTS, ALLOC, LOAD, DATA - 2 .bss 00000001 00800076 00800076 0000032a 2**0 + 2 .bss 00000001 00800078 00800078 00000382 2**0 ALLOC - 3 .stab 000006b4 00000000 00000000 0000032c 2**2 + 3 .stab 000006b4 00000000 00000000 00000384 2**2 CONTENTS, READONLY, DEBUGGING - 4 .stabstr 00000085 00000000 00000000 000009e0 2**0 + 4 .stabstr 00000085 00000000 00000000 00000a38 2**0 CONTENTS, READONLY, DEBUGGING - 5 .debug_aranges 00000020 00000000 00000000 00000a65 2**0 + 5 .debug_aranges 00000020 00000000 00000000 00000abd 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_pubnames 0000005d 00000000 00000000 00000a85 2**0 + 6 .debug_pubnames 0000005d 00000000 00000000 00000add 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_info 000002cf 00000000 00000000 00000ae2 2**0 + 7 .debug_info 00000309 00000000 00000000 00000b3a 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_abbrev 000001d4 00000000 00000000 00000db1 2**0 + 8 .debug_abbrev 000001cd 00000000 00000000 00000e43 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_line 000002b2 00000000 00000000 00000f85 2**0 + 9 .debug_line 0000033a 00000000 00000000 00001010 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_frame 00000050 00000000 00000000 00001238 2**2 + 10 .debug_frame 00000050 00000000 00000000 0000134c 2**2 CONTENTS, READONLY, DEBUGGING - 11 .debug_str 00000102 00000000 00000000 00001288 2**0 + 11 .debug_str 00000102 00000000 00000000 0000139c 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 000000b6 00000000 00000000 0000138a 2**0 + 12 .debug_loc 000000de 00000000 00000000 0000149e 2**0 CONTENTS, READONLY, DEBUGGING - 13 .debug_pubtypes 0000002b 00000000 00000000 00001440 2**0 - CONTENTS, READONLY, DEBUGGING - 14 .debug_ranges 00000018 00000000 00000000 0000146b 2**0 + 13 .debug_pubtypes 0000002b 00000000 00000000 0000157c 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -67,18 +65,18 @@ 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: e0 e8 ldi r30, 0x80 ; 128 + 34: e6 ed ldi r30, 0xD6 ; 214 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 + 3e: a8 37 cpi r26, 0x78 ; 120 40: b1 07 cpc r27, r17 42: d9 f7 brne .-10 ; 0x3a <__CCP__+0x6> 00000044 <__do_clear_bss>: 44: 10 e0 ldi r17, 0x00 ; 0 - 46: a6 e7 ldi r26, 0x76 ; 118 + 46: a8 e7 ldi r26, 0x78 ; 120 48: b0 e0 ldi r27, 0x00 ; 0 4a: 01 c0 rjmp .+2 ; 0x4e <.do_clear_bss_start> @@ -86,11 +84,11 @@ Disassembly of section .text: 4c: 1d 92 st X+, r1 0000004e <.do_clear_bss_start>: - 4e: a7 37 cpi r26, 0x77 ; 119 + 4e: a9 37 cpi r26, 0x79 ; 121 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> + 56: 3d c1 rjmp .+634 ; 0x2d2 <_exit> 00000058 <__bad_interrupt>: 58: d3 cf rjmp .-90 ; 0x0 <__vectors> @@ -272,7 +270,7 @@ void render() { for(uint8_t f = 0;f<6;f++) { display(frame[f],(5-f)+2); 13c: fe 01 movw r30, r28 - 13e: e1 59 subi r30, 0x91 ; 145 + 13e: ee 58 subi r30, 0x8E ; 142 140: ff 4f sbci r31, 0xFF ; 255 142: 80 81 ld r24, Z 144: 61 2f mov r22, r17 @@ -326,33 +324,33 @@ ISR(TIMER0_COMPA_vect) /*DDRB = 0b10111011; PORTB = 0b10110011;*/ if (var++ >= 100) //wenn Zustand mindestens 200x10ms = 2sec. andauert - 172: 80 91 76 00 lds r24, 0x0076 + 172: 80 91 78 00 lds r24, 0x0078 176: 98 2f mov r25, r24 178: 9f 5f subi r25, 0xFF ; 255 - 17a: 90 93 76 00 sts 0x0076, r25 + 17a: 90 93 78 00 sts 0x0078, 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 + 182: 80 91 74 00 lds r24, 0x0074 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 + 18a: 10 92 74 00 sts 0x0074, r1 frame[3] = 1; 18e: 81 e0 ldi r24, 0x01 ; 1 - 190: 80 93 72 00 sts 0x0072, r24 + 190: 80 93 75 00 sts 0x0075, 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 + 19a: 80 93 74 00 sts 0x0074, r24 frame[3] = 14; - 19e: 80 93 72 00 sts 0x0072, r24 + 19e: 80 93 75 00 sts 0x0075, r24 frame[4] = 14; - 1a2: 80 93 73 00 sts 0x0073, r24 + 1a2: 80 93 76 00 sts 0x0076, r24 } } @@ -370,157 +368,229 @@ ISR(TIMER0_COMPA_vect) int main(void) { 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 + 1b8: cf 92 push r12 + 1ba: df 92 push r13 + 1bc: ef 92 push r14 + 1be: ff 92 push r15 + 1c0: 0f 93 push r16 + 1c2: 1f 93 push r17 + 1c4: df 93 push r29 + 1c6: cf 93 push r28 + 1c8: 0f 92 push r0 + 1ca: cd b7 in r28, 0x3d ; 61 + 1cc: de b7 in r29, 0x3e ; 62 DDRB = 0; - 1cc: 17 ba out 0x17, r1 ; 23 + 1ce: 17 ba out 0x17, r1 ; 23 TCCR0B |= (1< - 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 + 1d0: 8b e0 ldi r24, 0x0B ; 11 + 1d2: 80 93 72 00 sts 0x0072, r24 + 1d6: 6d e1 ldi r22, 0x1D ; 29 + 1d8: a6 2e mov r10, r22 + 1da: b1 2c mov r11, r1 + for(uint8_t j=0;j<=MIN;j++) { + frame[2] = (uint8_t)((MIN-j)/10); + 1dc: 5a e0 ldi r21, 0x0A ; 10 + 1de: e5 2e mov r14, r21 + 1e0: f1 2c mov r15, r1 + 1e2: c5 01 movw r24, r10 + 1e4: b7 01 movw r22, r14 + 1e6: 4e d0 rcall .+156 ; 0x284 <__divmodhi4> + 1e8: 60 93 74 00 sts 0x0074, r22 + frame[3] = (uint8_t)((MIN-j)%10); + 1ec: 80 93 75 00 sts 0x0075, r24 + 1f0: 0b e3 ldi r16, 0x3B ; 59 + 1f2: 10 e0 ldi r17, 0x00 ; 0 for(uint8_t i=0;i<=59;i++) { + 1f4: 20 e0 ldi r18, 0x00 ; 0 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 + 1f6: c8 01 movw r24, r16 + 1f8: b7 01 movw r22, r14 + 1fa: 44 d0 rcall .+136 ; 0x284 <__divmodhi4> + 1fc: 60 93 76 00 sts 0x0076, r22 frame[5] = (uint8_t)((59-i)%10); - 1fe: 80 93 74 00 sts 0x0074, r24 + 200: 80 93 77 00 sts 0x0077, r24 + frame[0] = (i%2==0)?11:14; + 204: 20 ff sbrs r18, 0 + 206: 02 c0 rjmp .+4 ; 0x20c + 208: 8e e0 ldi r24, 0x0E ; 14 + 20a: 01 c0 rjmp .+2 ; 0x20e + 20c: 8b e0 ldi r24, 0x0B ; 11 + 20e: 80 93 72 00 sts 0x0072, r24 + 212: 42 e5 ldi r20, 0x52 ; 82 + 214: d4 2e mov r13, r20 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); + 216: 29 83 std Y+1, r18 ; 0x01 + 218: 8b df rcall .-234 ; 0x130 + 21a: da 94 dec r13 + frame[3] = (uint8_t)((MIN-j)%10); for(uint8_t i=0;i<=59;i++) { frame[4] = (uint8_t)((59-i)/10); frame[5] = (uint8_t)((59-i)%10); + frame[0] = (i%2==0)?11:14; 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 + 21c: 29 81 ldd r18, Y+1 ; 0x01 + 21e: dd 20 and r13, r13 + 220: d1 f7 brne .-12 ; 0x216 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 j=0;j<=MIN;j++) { + frame[2] = (uint8_t)((MIN-j)/10); + frame[3] = (uint8_t)((MIN-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 + 222: 2f 5f subi r18, 0xFF ; 255 + 224: 01 50 subi r16, 0x01 ; 1 + 226: 10 40 sbci r17, 0x00 ; 0 + 228: 2c 33 cpi r18, 0x3C ; 60 + 22a: 29 f7 brne .-54 ; 0x1f6 + 22c: 08 94 sec + 22e: a1 08 sbc r10, r1 + 230: b1 08 sbc r11, r1 OCR0A = 250; //geladen mit 10ms TIMSK |= (1< - 22c: d5 cf rjmp .-86 ; 0x1d8 + for(uint8_t j=0;j<=MIN;j++) { + 232: 8f ef ldi r24, 0xFF ; 255 + 234: a8 16 cp r10, r24 + 236: 8f ef ldi r24, 0xFF ; 255 + 238: b8 06 cpc r11, r24 + 23a: 99 f6 brne .-90 ; 0x1e2 + render(); + } + } + } + while(1) { + frame[0] = 10; + 23c: 3a e0 ldi r19, 0x0A ; 10 + 23e: c3 2e mov r12, r19 + frame[2] = 15; + 240: 2f e0 ldi r18, 0x0F ; 15 + 242: e2 2e mov r14, r18 + frame[3] = 16; + 244: 90 e1 ldi r25, 0x10 ; 16 + 246: f9 2e mov r15, r25 + frame[4] = 17; + 248: 81 e1 ldi r24, 0x11 ; 17 + 24a: d8 2e mov r13, r24 + frame[5] = 15; + for(uint8_t k=0;k<82;k++) { + render(); + } + frame[2] = 14; + 24c: 0e e0 ldi r16, 0x0E ; 14 + render(); + } + } + } + while(1) { + frame[0] = 10; + 24e: c0 92 72 00 sts 0x0072, r12 + frame[2] = 15; + 252: e0 92 74 00 sts 0x0074, r14 + frame[3] = 16; + 256: f0 92 75 00 sts 0x0075, r15 + frame[4] = 17; + 25a: d0 92 76 00 sts 0x0076, r13 + frame[5] = 15; + 25e: e0 92 77 00 sts 0x0077, r14 + 262: 12 e5 ldi r17, 0x52 ; 82 + for(uint8_t k=0;k<82;k++) { + render(); + 264: 65 df rcall .-310 ; 0x130 + 266: 11 50 subi r17, 0x01 ; 1 + frame[0] = 10; + frame[2] = 15; + frame[3] = 16; + frame[4] = 17; + frame[5] = 15; + for(uint8_t k=0;k<82;k++) { + 268: e9 f7 brne .-6 ; 0x264 + render(); + } + frame[2] = 14; + 26a: 00 93 74 00 sts 0x0074, r16 + frame[3] = 14; + 26e: 00 93 75 00 sts 0x0075, r16 + frame[4] = 14; + 272: 00 93 76 00 sts 0x0076, r16 + frame[5] = 14; + 276: 00 93 77 00 sts 0x0077, r16 + 27a: 12 e5 ldi r17, 0x52 ; 82 + for(uint8_t k=0;k<82;k++) { + render(); + 27c: 59 df rcall .-334 ; 0x130 + 27e: 11 50 subi r17, 0x01 ; 1 + } + frame[2] = 14; + frame[3] = 14; + frame[4] = 14; + frame[5] = 14; + for(uint8_t k=0;k<82;k++) { + 280: e9 f7 brne .-6 ; 0x27c + 282: e5 cf rjmp .-54 ; 0x24e -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> +00000284 <__divmodhi4>: + 284: 97 fb bst r25, 7 + 286: 09 2e mov r0, r25 + 288: 07 26 eor r0, r23 + 28a: 0a d0 rcall .+20 ; 0x2a0 <__divmodhi4_neg1> + 28c: 77 fd sbrc r23, 7 + 28e: 04 d0 rcall .+8 ; 0x298 <__divmodhi4_neg2> + 290: 0c d0 rcall .+24 ; 0x2aa <__udivmodhi4> + 292: 06 d0 rcall .+12 ; 0x2a0 <__divmodhi4_neg1> + 294: 00 20 and r0, r0 + 296: 1a f4 brpl .+6 ; 0x29e <__divmodhi4_exit> -00000242 <__divmodhi4_neg2>: - 242: 70 95 com r23 - 244: 61 95 neg r22 - 246: 7f 4f sbci r23, 0xFF ; 255 +00000298 <__divmodhi4_neg2>: + 298: 70 95 com r23 + 29a: 61 95 neg r22 + 29c: 7f 4f sbci r23, 0xFF ; 255 -00000248 <__divmodhi4_exit>: - 248: 08 95 ret +0000029e <__divmodhi4_exit>: + 29e: 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 +000002a0 <__divmodhi4_neg1>: + 2a0: f6 f7 brtc .-4 ; 0x29e <__divmodhi4_exit> + 2a2: 90 95 com r25 + 2a4: 81 95 neg r24 + 2a6: 9f 4f sbci r25, 0xFF ; 255 + 2a8: 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> +000002aa <__udivmodhi4>: + 2aa: aa 1b sub r26, r26 + 2ac: bb 1b sub r27, r27 + 2ae: 51 e1 ldi r21, 0x11 ; 17 + 2b0: 07 c0 rjmp .+14 ; 0x2c0 <__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 +000002b2 <__udivmodhi4_loop>: + 2b2: aa 1f adc r26, r26 + 2b4: bb 1f adc r27, r27 + 2b6: a6 17 cp r26, r22 + 2b8: b7 07 cpc r27, r23 + 2ba: 10 f0 brcs .+4 ; 0x2c0 <__udivmodhi4_ep> + 2bc: a6 1b sub r26, r22 + 2be: 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 +000002c0 <__udivmodhi4_ep>: + 2c0: 88 1f adc r24, r24 + 2c2: 99 1f adc r25, r25 + 2c4: 5a 95 dec r21 + 2c6: a9 f7 brne .-22 ; 0x2b2 <__udivmodhi4_loop> + 2c8: 80 95 com r24 + 2ca: 90 95 com r25 + 2cc: bc 01 movw r22, r24 + 2ce: cd 01 movw r24, r26 + 2d0: 08 95 ret -0000027c <_exit>: - 27c: f8 94 cli +000002d2 <_exit>: + 2d2: f8 94 cli -0000027e <__stop_program>: - 27e: ff cf rjmp .-2 ; 0x27e <__stop_program> +000002d4 <__stop_program>: + 2d4: ff cf rjmp .-2 ; 0x2d4 <__stop_program> diff --git a/Timer/default/Timer.map b/Timer/default/Timer.map index c330761..8d3bc3a 100644 --- a/Timer/default/Timer.map +++ b/Timer/default/Timer.map @@ -120,7 +120,7 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a .rela.plt *(.rela.plt) -.text 0x00000000 0x280 +.text 0x00000000 0x2d6 *(.vectors) .vectors 0x00000000 0x26 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o 0x00000000 __vector_default @@ -194,31 +194,31 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a 0x00000058 __vector_10 0x00000058 __vector_16 0x00000058 __vector_18 - .text 0x0000005a 0x1d4 Timer.o + .text 0x0000005a 0x22a 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 0x00000284 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) + .text 0x00000284 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .text 0x00000284 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) + .text 0x00000284 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) + .text 0x00000284 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodhi4.o) + 0x00000284 . = ALIGN (0x2) *(.text.*) - .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) + .text.libgcc 0x00000284 0x26 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) + 0x00000284 _div + 0x00000284 __divmodhi4 + .text.libgcc 0x000002aa 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .text.libgcc 0x000002aa 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) + .text.libgcc 0x000002aa 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) + .text.libgcc 0x000002aa 0x28 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodhi4.o) + 0x000002aa __udivmodhi4 + 0x000002d2 . = ALIGN (0x2) *(.fini9) - .fini9 0x0000027c 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) - 0x0000027c _exit - 0x0000027c exit + .fini9 0x000002d2 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + 0x000002d2 _exit + 0x000002d2 exit *(.fini9) *(.fini8) *(.fini8) @@ -237,54 +237,53 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a *(.fini1) *(.fini1) *(.fini0) - .fini0 0x0000027c 0x4 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .fini0 0x000002d2 0x4 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) *(.fini0) - 0x00000280 _etext = . + 0x000002d6 _etext = . -.data 0x00800060 0x16 load address 0x00000280 +.data 0x00800060 0x18 load address 0x000002d6 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 + .data 0x00800060 0x18 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) + 0x00800072 frame + .data 0x00800078 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) + .data 0x00800078 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .data 0x00800078 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) + .data 0x00800078 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) + .data 0x00800078 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodhi4.o) *(.data*) *(.rodata) *(.rodata*) *(.gnu.linkonce.d*) - 0x00800076 . = ALIGN (0x2) - *fill* 0x00800075 0x1 00 - 0x00800076 _edata = . - 0x00800076 PROVIDE (__data_end, .) + 0x00800078 . = ALIGN (0x2) + 0x00800078 _edata = . + 0x00800078 PROVIDE (__data_end, .) -.bss 0x00800076 0x1 - 0x00800076 PROVIDE (__bss_start, .) +.bss 0x00800078 0x1 + 0x00800078 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 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 0x00800078 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o + .bss 0x00800078 0x1 Timer.o + 0x00800078 var + .bss 0x00800079 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) + .bss 0x00800079 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .bss 0x00800079 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) + .bss 0x00800079 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) + .bss 0x00800079 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodhi4.o) *(.bss*) *(COMMON) - 0x00800077 PROVIDE (__bss_end, .) - 0x00000280 __data_load_start = LOADADDR (.data) - 0x00000296 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00800079 PROVIDE (__bss_end, .) + 0x000002d6 __data_load_start = LOADADDR (.data) + 0x000002ee __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00800077 0x0 - 0x00800077 PROVIDE (__noinit_start, .) +.noinit 0x00800079 0x0 + 0x00800079 PROVIDE (__noinit_start, .) *(.noinit*) - 0x00800077 PROVIDE (__noinit_end, .) - 0x00800077 _end = . - 0x00800077 PROVIDE (__heap_start, .) + 0x00800079 PROVIDE (__noinit_end, .) + 0x00800079 _end = . + 0x00800079 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -348,18 +347,18 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a .debug_pubnames 0x00000000 0x5d Timer.o -.debug_info 0x00000000 0x2cf +.debug_info 0x00000000 0x309 *(.debug_info) - .debug_info 0x00000000 0x2cf Timer.o + .debug_info 0x00000000 0x309 Timer.o *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x1d4 +.debug_abbrev 0x00000000 0x1cd *(.debug_abbrev) - .debug_abbrev 0x00000000 0x1d4 Timer.o + .debug_abbrev 0x00000000 0x1cd Timer.o -.debug_line 0x00000000 0x2b2 +.debug_line 0x00000000 0x33a *(.debug_line) - .debug_line 0x00000000 0x2b2 Timer.o + .debug_line 0x00000000 0x33a Timer.o .debug_frame 0x00000000 0x50 *(.debug_frame) @@ -370,9 +369,9 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a .debug_str 0x00000000 0x102 Timer.o 0x13b (size before relaxing) -.debug_loc 0x00000000 0xb6 +.debug_loc 0x00000000 0xde *(.debug_loc) - .debug_loc 0x00000000 0xb6 Timer.o + .debug_loc 0x00000000 0xde Timer.o .debug_macinfo *(.debug_macinfo) @@ -383,6 +382,3 @@ 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/timer.aws b/Timer/timer.aws new file mode 100644 index 0000000..92bfa76 --- /dev/null +++ b/Timer/timer.aws @@ -0,0 +1 @@ +