From a448a04a64af296d8426013a0b8a42a10dec7b62 Mon Sep 17 00:00:00 2001 From: Sem van der Hoeven Date: Wed, 31 Mar 2021 12:20:25 +0200 Subject: [PATCH] [EDIT] change interrupt 0 to 2 to be able to use led matrices --- .../.vs/Microcontrollers/v14/.atsuo | Bin 89600 -> 89600 bytes Microcontrollers/Eindopdracht/main.c | 2 +- .../Eindopdracht/ultrasonic_sensor.c | 8 +- Microcontrollers/GLCD/Debug/GLCD.elf | Bin 10960 -> 11512 bytes Microcontrollers/GLCD/Debug/GLCD.hex | 16 +- Microcontrollers/GLCD/Debug/GLCD.lss | 206 +++----- Microcontrollers/GLCD/Debug/GLCD.map | 75 +-- Microcontrollers/GLCD/Debug/GLCD.srec | 16 +- Microcontrollers/GLCD/Debug/main.o | Bin 7056 -> 9124 bytes Microcontrollers/GLCD/main.c | 58 ++- .../LCDMatrix/Debug/LCDMatrix.eep | 1 + .../LCDMatrix/Debug/LCDMatrix.elf | Bin 0 -> 11280 bytes .../LCDMatrix/Debug/LCDMatrix.hex | 23 + .../LCDMatrix/Debug/LCDMatrix.lss | 306 ++++++++++++ .../LCDMatrix/Debug/LCDMatrix.map | 442 ++++++++++++++++++ .../LCDMatrix/Debug/LCDMatrix.srec | 24 + Microcontrollers/LCDMatrix/Debug/Makefile | 127 +++++ Microcontrollers/LCDMatrix/Debug/main.d | 43 ++ Microcontrollers/LCDMatrix/Debug/main.o | Bin 0 -> 8092 bytes Microcontrollers/LCDMatrix/Debug/makedep.mk | 6 + .../LCDMatrix/LCDMatrix.componentinfo.xml | 86 ++++ Microcontrollers/LCDMatrix/LCDMatrix.cproj | 130 ++++++ Microcontrollers/LCDMatrix/main.c | 149 ++++++ Microcontrollers/Microcontrollers.atsln | 15 +- 24 files changed, 1528 insertions(+), 205 deletions(-) create mode 100644 Microcontrollers/LCDMatrix/Debug/LCDMatrix.eep create mode 100644 Microcontrollers/LCDMatrix/Debug/LCDMatrix.elf create mode 100644 Microcontrollers/LCDMatrix/Debug/LCDMatrix.hex create mode 100644 Microcontrollers/LCDMatrix/Debug/LCDMatrix.lss create mode 100644 Microcontrollers/LCDMatrix/Debug/LCDMatrix.map create mode 100644 Microcontrollers/LCDMatrix/Debug/LCDMatrix.srec create mode 100644 Microcontrollers/LCDMatrix/Debug/Makefile create mode 100644 Microcontrollers/LCDMatrix/Debug/main.d create mode 100644 Microcontrollers/LCDMatrix/Debug/main.o create mode 100644 Microcontrollers/LCDMatrix/Debug/makedep.mk create mode 100644 Microcontrollers/LCDMatrix/LCDMatrix.componentinfo.xml create mode 100644 Microcontrollers/LCDMatrix/LCDMatrix.cproj create mode 100644 Microcontrollers/LCDMatrix/main.c diff --git a/Microcontrollers/.vs/Microcontrollers/v14/.atsuo b/Microcontrollers/.vs/Microcontrollers/v14/.atsuo index 3dabb46d2a80ed6e3afb59fccc1a7da414c95555..da6127fdb841a8f97c452395c642ec1532e72983 100644 GIT binary patch literal 89600 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 diff --git a/Microcontrollers/Eindopdracht/main.c b/Microcontrollers/Eindopdracht/main.c index 1bd21ec..2cd9d2e 100644 --- a/Microcontrollers/Eindopdracht/main.c +++ b/Microcontrollers/Eindopdracht/main.c @@ -15,7 +15,7 @@ #include "ultrasonic_sensor.h" -ISR(INT0_vect) +ISR(INT2_vect) { ultrasonic_handle_interrupt(); } diff --git a/Microcontrollers/Eindopdracht/ultrasonic_sensor.c b/Microcontrollers/Eindopdracht/ultrasonic_sensor.c index 430a118..2a5c6cb 100644 --- a/Microcontrollers/Eindopdracht/ultrasonic_sensor.c +++ b/Microcontrollers/Eindopdracht/ultrasonic_sensor.c @@ -40,9 +40,9 @@ void ultrasonic_init() DDRG = 0xFF; // port g all output. pin 0 is trig, the rest is for debug DDRD = 0x00; // port D pin 0 on input. 0 is echo and also interrupt - EICRA = 0x03; // interrupt PORTD on pin 0, rising edge + EICRA = 0x30; // interrupt PORTD on pin 2, rising edge - EIMSK |= 0x01; // enable interrupt on pin 0 (INT0) + EIMSK |= 0x04; // enable interrupt on pin 2 (INT2) TCCR1A = 0b00000000; // initialize timer1, prescaler=256 TCCR1B = 0b00001100; // CTC compare A, RUN @@ -63,7 +63,7 @@ void ultrasonic_handle_interrupt() if (int_stat == INTERRUPT_RISING) { // set interrupt pin 0 on PORTD to falling edge - EICRA = 0x02; + EICRA = 0x20; // reset the time in timer1 TCNT1 = 0x00; @@ -74,7 +74,7 @@ void ultrasonic_handle_interrupt() // else if it was generated on a falling edge (end sending echo) { // set interrupt pin 0 on PORTD to rising edge - EICRA = 0x03; + EICRA = 0x30; // interrupt PORTD on pin 2, rising edge // read timer1 into time_dist timer_dist = TCNT1; diff --git a/Microcontrollers/GLCD/Debug/GLCD.elf b/Microcontrollers/GLCD/Debug/GLCD.elf index 38d09aec7b635992387e84a3c7153f68e0bdd0f8..f3c4726ac289bfedec98ea67e1b2d73a8d57bf57 100644 GIT binary patch delta 2897 zcmaJ@X>3$g6h7y@*}BpVIt6UU*21(bvX!t(s71txfDwd1C}rBT1MSpqphh|^Vw{3d z%7q^!27ibsiAIu<5Us&Af-%s#CWr`#0gXmd5aEYO{my;!+Ufl8rsux%o&B75-<|fa zzPE0_&v>@9r?AkO!9*E7%U(BU_s{9MdH;&;o4a~n?u|tEY>M>my1M_$Z+)Iak!VL% zq_^{z-G>J55=Elj?ZZg4`@#`;?8V-FGt#^7>Px-X;q~L?TbBn_n49=1HNd%L6k8wS znPUSy`$73}_%HBYkPDT$qQ%A@cevIhGRW&Das~7CTbhlC{o7AN>fs|||Blq*a7>W^OGP=z=56smEZRYFO49z!nvbZx$=)Z* zVae0^2(&UF^MKFbt%#J`&;oh6_}3{8DozuV4?yWb;+dk5HEKJyqaX>%W$JdaKb*o{ z$jEaM#acS(H3`~=pmXDc+9ncoz9_bUMxC<7c=E!G&+*s?O0&h8ec+CPGB08~9TR8q zGtx}BTpH;I>Aab!CHp*(%pxb&3|A1P@cUBc@{wiMLN@xeRtWnIoW_7iX7VHiLlMd- z+m^@4@ZQ6oKGa{E!Pd^BBgHdL0zJr z%CE4JaJ)%7RX~$w%e2!54#&J&wHFHcP6`RYNiSVU9tI_6okGyTWR?uBNdn91*Cq?Z z!~vvD@_3<`bZ|LrSd3C_L$3#%yj^cHwmg$5x+K-_S<$tVIg_VjN;$iCG8xG|<;j?> zlg#vaDf3g7Wg9Nc*0y5U<=zMLOwQu9DeF>1;Dwf~7kFL_M}uoQU|+CN^+oN(;=!PnFW(m+9q@Eu;&FU1e2E2Si++MLyIJbCuXU0oYP8eY1zl^R)km_k%O!x`uJY7 zUD4SoyR)y_5np;esU=Ct3*xg~(?twt)1_PEvG$=1`cMw2^SQZ`t@^Q}6Dz$w1sxn4 zkJTK;2c??jos1J^t<>04Mj}_Mjbq{=EZyY)k6vn#<7oTqD;T(HTl19q;O2mD#?)z3 zr%@ZO(m9o_6n)p*Y`C{q1zRiIT9kiW$s)KxW8 zZGE7+vN1%J)iw21&sE}DTQYCM;%!x-mJJQTKyzcDG1S`JSYKb$+@g+;Yx3w&!B8;j z9lu<@C2JWp?KPWs(PqT~g~L8_x#$Sy*Rg1%6rYrq`xYn44VpI;)7CN7*{ngHvZ4GA zy3KV%*7h}#7aOS)k8t#+V~Tc7$jbvNi-ZqE7axtytAcsA^W1Wv3=Ru z*uGG#`$Dbq7eveQ7cr-+wt@oAP=^Y-u^0OmVXyIh6t>S%7QXM#5ad^(V!IRb1!h-NjNaM?XC;?Xk%a4gHpJC8r zz!;cbGKN5$J_Gt-f`3~A?i`6{(B6>(It+}zp#K<`+R@J#fRqOJ?vxa{T5v$SSml=%I{z&odQ>ebEi%rOs4b-vj0&GRP&&c; PcQMhocEu<%HZ1xN2_Ti4 delta 2305 zcmZ`*ZETc95Z>AMuJ_Rvub+32UisZl z%+5}Cx4pY@eEoh?uAMg$3OO4|h{lmM9~;f%t4D5Er-stoI)+BK-`I8N&V&#{>3v(K zko(Y3dT(lIbSV9fo_FhcC+2;>zdd?m?En3H;r|)_OlI4y!@r%&+|=JQnTfHx2Oo?* zy>jIebKZ&6{%txL3Px`xw)}A|KG@8ati1?Sw0{m2-o&vJ6zX|_EK9ykc;Xx8bFbYw&fR+~+GnV8p&95z3 zQ?io^nAq$++){wF;1TmU$iE9g(mT@P#afmleXOjPHKE{;R z|D))RX9UVdB@Ql4Yvhp+HDsK!WtUewW`-ZLt}fc32Ulc5EX>R2;>jyrHfxV`b@fDJ z?TJ2hvZ8LoroR4oS6^q$jCMzoqCM8x6M3T@_u#1|ZT->iM53qdnMfo#e^J}o&SX3h z>zw~++jH?~G7(Mm4I~piJ)Oz^wzbJfbRZtx)N3YQi$U)m=K%}RA9JU1|2gZ~Ds KqETnIU*bOmi;U6$ diff --git a/Microcontrollers/GLCD/Debug/GLCD.hex b/Microcontrollers/GLCD/Debug/GLCD.hex index bd240f2..369b05f 100644 --- a/Microcontrollers/GLCD/Debug/GLCD.hex +++ b/Microcontrollers/GLCD/Debug/GLCD.hex @@ -7,14 +7,12 @@ :100060001DC000001BC0000019C0000017C0000028 :1000700015C0000013C0000011C000000FC0000038 :100080000DC000000BC0000009C0000011241FBEFD -:10009000CFEFD0E1DEBFCDBF40D048C0B1CF20E030 +:10009000CFEFD0E1DEBFCDBF36D038C0B1CF20E04A :1000A00030E008C0E3ECF9E03197F1F700C0000060 -:1000B0002F5F3F4F28173907ACF3089588B380624C -:1000C00088BB81E28A95F1F7000088B38F7D88BBF9 -:1000D00081E28A95F1F70000089588B38E7F88BB8E -:1000E00088B38D7F88BB88B38B7F88BB88B3877FBD -:1000F00088BB8FE385BBE2CF089588B38E7F88BB32 -:1001000088B38D7F88BB88B38B7F88BB88B3877F9C -:1001100088BB8EE385BBD2CF0895DFDF80ED97E00B -:10012000BEDFEBDF80ED97E0BADFF7CFF894FFCFCB +:1000B0002F5F3F4F28173907ACF308958FEF84BBAC +:1000C00087BB88B38B6088BB84E190E0E8CF08955C +:1000D00088B3806188BB81E28A95F1F7000088B31C +:1000E0008F7E88BB81E28A95F1F70000089588B37E +:1000F0008E7F88BB88B38D7F88BB8FEF88BB8EE1F6 +:1001000085BBE6CF0895DADFF2DFFFCFF894FFCFAB :00000001FF diff --git a/Microcontrollers/GLCD/Debug/GLCD.lss b/Microcontrollers/GLCD/Debug/GLCD.lss index acce94c..b739cfe 100644 --- a/Microcontrollers/GLCD/Debug/GLCD.lss +++ b/Microcontrollers/GLCD/Debug/GLCD.lss @@ -3,29 +3,29 @@ GLCD.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000000 00800100 00800100 00000184 2**0 + 0 .data 00000000 00800100 00800100 00000164 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 00000130 00000000 00000000 00000054 2**1 + 1 .text 00000110 00000000 00000000 00000054 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .comment 00000030 00000000 00000000 00000184 2**0 + 2 .comment 00000030 00000000 00000000 00000164 2**0 CONTENTS, READONLY - 3 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000001b4 2**2 + 3 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000194 2**2 CONTENTS, READONLY - 4 .debug_aranges 00000040 00000000 00000000 000001f0 2**0 + 4 .debug_aranges 00000058 00000000 00000000 000001d0 2**0 CONTENTS, READONLY, DEBUGGING - 5 .debug_info 00000a18 00000000 00000000 00000230 2**0 + 5 .debug_info 00000aeb 00000000 00000000 00000228 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_abbrev 00000882 00000000 00000000 00000c48 2**0 + 6 .debug_abbrev 00000891 00000000 00000000 00000d13 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_line 00000369 00000000 00000000 000014ca 2**0 + 7 .debug_line 000003e0 00000000 00000000 000015a4 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_frame 00000064 00000000 00000000 00001834 2**2 + 8 .debug_frame 00000094 00000000 00000000 00001984 2**2 CONTENTS, READONLY, DEBUGGING - 9 .debug_str 00000463 00000000 00000000 00001898 2**0 + 9 .debug_str 0000045b 00000000 00000000 00001a18 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_loc 000000f4 00000000 00000000 00001cfb 2**0 + 10 .debug_loc 00000189 00000000 00000000 00001e73 2**0 CONTENTS, READONLY, DEBUGGING - 11 .debug_ranges 00000030 00000000 00000000 00001def 2**0 + 11 .debug_ranges 00000048 00000000 00000000 00001ffc 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -109,28 +109,22 @@ Disassembly of section .text: 92: d0 e1 ldi r29, 0x10 ; 16 94: de bf out 0x3e, r29 ; 62 96: cd bf out 0x3d, r28 ; 61 - 98: 40 d0 rcall .+128 ; 0x11a
- 9a: 48 c0 rjmp .+144 ; 0x12c <_exit> + 98: 36 d0 rcall .+108 ; 0x106
+ 9a: 38 c0 rjmp .+112 ; 0x10c <_exit> 0000009c <__bad_interrupt>: 9c: b1 cf rjmp .-158 ; 0x0 <__vectors> 0000009e : - //is active low (refer to datasheet) - - -void wait( int ms ) -{ - for (int i=0; i command + DATAPORT = 0b0011111; //OFF command + trigger(); 9e: 20 e0 ldi r18, 0x00 ; 0 a0: 30 e0 ldi r19, 0x00 ; 0 a2: 08 c0 rjmp .+16 ; 0xb4 - #else - //round up by default - __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); - #endif - - __builtin_avr_delay_cycles(__ticks_dc); a4: e3 ec ldi r30, 0xC3 ; 195 a6: f9 e0 ldi r31, 0x09 ; 9 a8: 31 97 sbiw r30, 0x01 ; 1 @@ -142,129 +136,79 @@ void wait( int ms ) b4: 28 17 cp r18, r24 b6: 39 07 cpc r19, r25 b8: ac f3 brlt .-22 ; 0xa4 - { - _delay_ms( 1 ); // library function (max 30 ms at 8MHz) - } -} ba: 08 95 ret -000000bc : +000000bc : + bc: 8f ef ldi r24, 0xFF ; 255 + be: 84 bb out 0x14, r24 ; 20 + c0: 87 bb out 0x17, r24 ; 23 + c2: 88 b3 in r24, 0x18 ; 24 + c4: 8b 60 ori r24, 0x0B ; 11 + c6: 88 bb out 0x18, r24 ; 24 + c8: 84 e1 ldi r24, 0x14 ; 20 + ca: 90 e0 ldi r25, 0x00 ; 0 + cc: e8 cf rjmp .-48 ; 0x9e + ce: 08 95 ret -void trigger() -{ - CONTROLPORT |= GLCD_EN; //EN high - bc: 88 b3 in r24, 0x18 ; 24 - be: 80 62 ori r24, 0x20 ; 32 - c0: 88 bb out 0x18, r24 ; 24 - #else - //round up by default - __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); - #endif +000000d0 : + d0: 88 b3 in r24, 0x18 ; 24 + d2: 80 61 ori r24, 0x10 ; 16 + d4: 88 bb out 0x18, r24 ; 24 + d6: 81 e2 ldi r24, 0x21 ; 33 + d8: 8a 95 dec r24 + da: f1 f7 brne .-4 ; 0xd8 + dc: 00 00 nop + de: 88 b3 in r24, 0x18 ; 24 + e0: 8f 7e andi r24, 0xEF ; 239 + e2: 88 bb out 0x18, r24 ; 24 + e4: 81 e2 ldi r24, 0x21 ; 33 + e6: 8a 95 dec r24 + e8: f1 f7 brne .-4 ; 0xe6 + ea: 00 00 nop + ec: 08 95 ret - __builtin_avr_delay_cycles(__ticks_dc); - c2: 81 e2 ldi r24, 0x21 ; 33 - c4: 8a 95 dec r24 - c6: f1 f7 brne .-4 ; 0xc4 - c8: 00 00 nop - _delay_us(E_DELAY); - CONTROLPORT &= ~GLCD_EN; //EN low - ca: 88 b3 in r24, 0x18 ; 24 - cc: 8f 7d andi r24, 0xDF ; 223 - ce: 88 bb out 0x18, r24 ; 24 - d0: 81 e2 ldi r24, 0x21 ; 33 - d2: 8a 95 dec r24 - d4: f1 f7 brne .-4 ; 0xd2 - d6: 00 00 nop - d8: 08 95 ret - -000000da : -} -//---------------------- -void glcd_on() -{ - #ifdef GLCD_CS_ACTIVE_LOW - CONTROLPORT &= ~CS1; //Activate both chips - da: 88 b3 in r24, 0x18 ; 24 - dc: 8e 7f andi r24, 0xFE ; 254 - de: 88 bb out 0x18, r24 ; 24 - CONTROLPORT &= ~CS2; - e0: 88 b3 in r24, 0x18 ; 24 - e2: 8d 7f andi r24, 0xFD ; 253 - e4: 88 bb out 0x18, r24 ; 24 - #else - CONTROLPORT |= CS1; //Activate both chips - CONTROLPORT |= CS2; - #endif - CONTROLPORT &= ~GLCD_RS; //RS low --> command - e6: 88 b3 in r24, 0x18 ; 24 - e8: 8b 7f andi r24, 0xFB ; 251 - ea: 88 bb out 0x18, r24 ; 24 - CONTROLPORT &= ~GLCD_RW; //RW low --> write - ec: 88 b3 in r24, 0x18 ; 24 - ee: 87 7f andi r24, 0xF7 ; 247 - f0: 88 bb out 0x18, r24 ; 24 - DATAPORT = 0x3F; //ON command - f2: 8f e3 ldi r24, 0x3F ; 63 - f4: 85 bb out 0x15, r24 ; 21 - trigger(); - f6: e2 cf rjmp .-60 ; 0xbc - f8: 08 95 ret - -000000fa : +000000ee : } //---------------------- void glcd_off() { #ifdef GLCD_CS_ACTIVE_LOW CONTROLPORT &= ~CS1; //Activate both chips - fa: 88 b3 in r24, 0x18 ; 24 - fc: 8e 7f andi r24, 0xFE ; 254 - fe: 88 bb out 0x18, r24 ; 24 + ee: 88 b3 in r24, 0x18 ; 24 + f0: 8e 7f andi r24, 0xFE ; 254 + f2: 88 bb out 0x18, r24 ; 24 CONTROLPORT &= ~CS2; - 100: 88 b3 in r24, 0x18 ; 24 - 102: 8d 7f andi r24, 0xFD ; 253 - 104: 88 bb out 0x18, r24 ; 24 + f4: 88 b3 in r24, 0x18 ; 24 + f6: 8d 7f andi r24, 0xFD ; 253 + f8: 88 bb out 0x18, r24 ; 24 #else CONTROLPORT |= CS1; //Activate both chips CONTROLPORT |= CS2; #endif - CONTROLPORT &= ~GLCD_RS; //DI low --> command - 106: 88 b3 in r24, 0x18 ; 24 - 108: 8b 7f andi r24, 0xFB ; 251 - 10a: 88 bb out 0x18, r24 ; 24 - CONTROLPORT &= ~GLCD_RW; //RW low --> write - 10c: 88 b3 in r24, 0x18 ; 24 - 10e: 87 7f andi r24, 0xF7 ; 247 - 110: 88 bb out 0x18, r24 ; 24 - DATAPORT = 0x3E; //OFF command - 112: 8e e3 ldi r24, 0x3E ; 62 - 114: 85 bb out 0x15, r24 ; 21 + CONTROLPORT = ~GLCD_RST | ~GLCD_RW; //RS low --> command + fa: 8f ef ldi r24, 0xFF ; 255 + fc: 88 bb out 0x18, r24 ; 24 + DATAPORT = 0b0011110; //OFF command + fe: 8e e1 ldi r24, 0x1E ; 30 + 100: 85 bb out 0x15, r24 ; 21 trigger(); - 116: d2 cf rjmp .-92 ; 0xbc - 118: 08 95 ret + 102: e6 cf rjmp .-52 ; 0xd0 + 104: 08 95 ret + +00000106
: +} + -0000011a
: int main(void) { - while (1) - { - - glcd_on(); - 11a: df df rcall .-66 ; 0xda - wait(2000); - 11c: 80 ed ldi r24, 0xD0 ; 208 - 11e: 97 e0 ldi r25, 0x07 ; 7 - glcd_off(); - 120: be df rcall .-132 ; 0x9e - wait(2000); - 122: eb df rcall .-42 ; 0xfa - 124: 80 ed ldi r24, 0xD0 ; 208 - 126: 97 e0 ldi r25, 0x07 ; 7 - 128: ba df rcall .-140 ; 0x9e - 12a: f7 cf rjmp .-18 ; 0x11a
+ GLCD_init(); + 106: da df rcall .-76 ; 0xbc + glcd_off(); + 108: f2 df rcall .-28 ; 0xee + 10a: ff cf rjmp .-2 ; 0x10a -0000012c <_exit>: - 12c: f8 94 cli +0000010c <_exit>: + 10c: f8 94 cli -0000012e <__stop_program>: - 12e: ff cf rjmp .-2 ; 0x12e <__stop_program> +0000010e <__stop_program>: + 10e: ff cf rjmp .-2 ; 0x10e <__stop_program> diff --git a/Microcontrollers/GLCD/Debug/GLCD.map b/Microcontrollers/GLCD/Debug/GLCD.map index 0bb156f..ea6822a 100644 --- a/Microcontrollers/GLCD/Debug/GLCD.map +++ b/Microcontrollers/GLCD/Debug/GLCD.map @@ -10,6 +10,10 @@ Discarded input sections .text 0x00000000 0x0 main.o .data 0x00000000 0x0 main.o .bss 0x00000000 0x0 main.o + .text.wait_us 0x00000000 0x1a main.o + .text.GLCD_command + 0x00000000 0x2c main.o + .text.glcd_on 0x00000000 0x1a main.o .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) @@ -153,7 +157,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x00000000 0x130 +.text 0x00000000 0x110 *(.vectors) .vectors 0x00000000 0x8c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o 0x00000000 __vector_default @@ -247,20 +251,21 @@ END GROUP *(.text.*) .text.wait 0x0000009e 0x1e main.o 0x0000009e wait - .text.trigger 0x000000bc 0x1e main.o - 0x000000bc trigger - .text.glcd_on 0x000000da 0x20 main.o - 0x000000da glcd_on + .text.GLCD_init + 0x000000bc 0x14 main.o + 0x000000bc GLCD_init + .text.trigger 0x000000d0 0x1e main.o + 0x000000d0 trigger .text.glcd_off - 0x000000fa 0x20 main.o - 0x000000fa glcd_off - .text.main 0x0000011a 0x12 main.o - 0x0000011a main - 0x0000012c . = ALIGN (0x2) + 0x000000ee 0x18 main.o + 0x000000ee glcd_off + .text.main 0x00000106 0x6 main.o + 0x00000106 main + 0x0000010c . = ALIGN (0x2) *(.fini9) - .fini9 0x0000012c 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) - 0x0000012c _exit - 0x0000012c exit + .fini9 0x0000010c 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) + 0x0000010c _exit + 0x0000010c exit *(.fini9) *(.fini8) *(.fini8) @@ -279,11 +284,11 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x0000012c 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) + .fini0 0x0000010c 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) *(.fini0) - 0x00000130 _etext = . + 0x00000110 _etext = . -.data 0x00800100 0x0 load address 0x00000130 +.data 0x00800100 0x0 load address 0x00000110 [!provide] PROVIDE (__data_start, .) *(.data) *(.data*) @@ -301,8 +306,8 @@ END GROUP *(.bss*) *(COMMON) [!provide] PROVIDE (__bss_end, .) - 0x00000130 __data_load_start = LOADADDR (.data) - 0x00000130 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00000110 __data_load_start = LOADADDR (.data) + 0x00000110 __data_load_end = (__data_load_start + SIZEOF (.data)) .noinit 0x00800100 0x0 [!provide] PROVIDE (__noinit_start, .) @@ -373,42 +378,42 @@ END GROUP .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x40 +.debug_aranges 0x00000000 0x58 *(.debug_aranges) .debug_aranges - 0x00000000 0x40 main.o + 0x00000000 0x58 main.o .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0xa18 +.debug_info 0x00000000 0xaeb *(.debug_info .gnu.linkonce.wi.*) .debug_info 0x00000000 0x780 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o - .debug_info 0x00000780 0x298 main.o + .debug_info 0x00000780 0x36b main.o -.debug_abbrev 0x00000000 0x882 +.debug_abbrev 0x00000000 0x891 *(.debug_abbrev) .debug_abbrev 0x00000000 0x718 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o - .debug_abbrev 0x00000718 0x16a main.o + .debug_abbrev 0x00000718 0x179 main.o -.debug_line 0x00000000 0x369 +.debug_line 0x00000000 0x3e0 *(.debug_line .debug_line.* .debug_line_end) .debug_line 0x00000000 0x16a C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o - .debug_line 0x0000016a 0x1ff main.o + .debug_line 0x0000016a 0x276 main.o -.debug_frame 0x00000000 0x64 +.debug_frame 0x00000000 0x94 *(.debug_frame) - .debug_frame 0x00000000 0x64 main.o + .debug_frame 0x00000000 0x94 main.o -.debug_str 0x00000000 0x463 +.debug_str 0x00000000 0x45b *(.debug_str) .debug_str 0x00000000 0x27d C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o - .debug_str 0x0000027d 0x1e6 main.o - 0x21a (size before relaxing) + .debug_str 0x0000027d 0x1de main.o + 0x21f (size before relaxing) -.debug_loc 0x00000000 0xf4 +.debug_loc 0x00000000 0x189 *(.debug_loc) - .debug_loc 0x00000000 0xf4 main.o + .debug_loc 0x00000000 0x189 main.o .debug_macinfo *(.debug_macinfo) @@ -428,9 +433,9 @@ END GROUP .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x30 +.debug_ranges 0x00000000 0x48 *(.debug_ranges) - .debug_ranges 0x00000000 0x30 main.o + .debug_ranges 0x00000000 0x48 main.o .debug_macro *(.debug_macro) diff --git a/Microcontrollers/GLCD/Debug/GLCD.srec b/Microcontrollers/GLCD/Debug/GLCD.srec index fecbe82..0e708a4 100644 --- a/Microcontrollers/GLCD/Debug/GLCD.srec +++ b/Microcontrollers/GLCD/Debug/GLCD.srec @@ -8,14 +8,12 @@ S113005025C0000023C0000021C000001FC0000014 S11300601DC000001BC0000019C0000017C0000024 S113007015C0000013C0000011C000000FC0000034 S11300800DC000000BC0000009C0000011241FBEF9 -S1130090CFEFD0E1DEBFCDBF40D048C0B1CF20E02C +S1130090CFEFD0E1DEBFCDBF36D038C0B1CF20E046 S11300A030E008C0E3ECF9E03197F1F700C000005C -S11300B02F5F3F4F28173907ACF3089588B3806248 -S11300C088BB81E28A95F1F7000088B38F7D88BBF5 -S11300D081E28A95F1F70000089588B38E7F88BB8A -S11300E088B38D7F88BB88B38B7F88BB88B3877FB9 -S11300F088BB8FE385BBE2CF089588B38E7F88BB2E -S113010088B38D7F88BB88B38B7F88BB88B3877F98 -S113011088BB8EE385BBD2CF0895DFDF80ED97E007 -S1130120BEDFEBDF80ED97E0BADFF7CFF894FFCFC7 +S11300B02F5F3F4F28173907ACF308958FEF84BBA8 +S11300C087BB88B38B6088BB84E190E0E8CF089558 +S11300D088B3806188BB81E28A95F1F7000088B318 +S11300E08F7E88BB81E28A95F1F70000089588B37A +S11300F08E7F88BB88B38D7F88BB8FEF88BB8EE1F2 +S113010085BBE6CF0895DADFF2DFFFCFF894FFCFA7 S9030000FC diff --git a/Microcontrollers/GLCD/Debug/main.o b/Microcontrollers/GLCD/Debug/main.o index d26a30a45bb4ccef57e192242724d7c11c660a82..a9072343c28f5125e942e97d969bd7ac21fb0498 100644 GIT binary patch literal 9124 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μ-`aS7{iiX{GkbpG_-f}I4=d9`>f)He>^;=G-8?y2jm(1vFN(Js0qom> zS6E}NS^ZJDICee8ykZ9J;#kB$-CrDAioUw)M1QJhI@P`4eyA;jvA(uiV;mz^^J=0) zdt5iH=IIPn1)kz=s?AgQv9+3~rdcEM&6qI$*o5)y3FBGH{ID{&9r(?Ecq z#$0wF+MlTzH>sqI8Rrh}PYxsB-?qhH@B1iNfQc^ikizLMu>M6cMvAd&EQNnJGtKZ${bodk2D|ilgSo5^yePg5GKci>9G(Yrr3Vt8@DZv}iX9drL90!HguLB+x97F$r z;A!AFCio(Bz9M)L@HYfshyIk{-=Y7J;LGTLE|_sWCzw313ntH>1e51I!Ib@zSYpnH zl9+WlS1_QuUNHIj-sN;qs?<`EGY^bAZ8^1GbmjqXvUEOa>D(87%^v> zO2kYo+8)95?TBEm`>0@+%2$cuz`ejCh|Vve^S0nOfZrp=UbqF`AMtjT{#(H7h~>GsQ!t;)9fJ8Be^xO485PXu_kO{Aw%ANP(1w_Crj5b0A!dA- zV=0TA{L&1L2s_uPJ*16v1}8}+L$dErK`FG)31*U=3e@VW!+VR z$+JN)m)<6rd%a6AZSN%(KSu=9cDG>C-Y1y;;LTd=GfsyE)1NO2W~`njmi_WPAtvXy z1e5dog2~CVg*xQqpM;3X`BTBJU@^73W;$C))QscBcs`A{x_~k;yNW2A$)^k}_NStWLN1rW3xsVq zgufW@!tf#6Z0I5Vy5?xYbHZ+%W4jI?V*MJA{)6=9V~*#@f78?VA?UHz*~rId%rvtu z>x;EJAQL^P9o89jDd&gvyb2%M7{0B*SL0(X+I;tbk2OzS+8Vy?z&76q#;ixvjDMRU zu=z&8M}Nr2I2gV(u+8^4##iGT6q^C`Y=Y0T+=Cd}e7^?Yb|jm8e0&YxNnm3GsD_}!^V2i~zX^fC zoI3}COGe3>dj{BEH;l_T{{w*Q@?LJ%{jp^OsLs|^YlmaA)(?SgzHS_@hae+gr_3=v zjDxWOR3Q`z>(4YZ_Ywp)-}B%bg^YZB9Weg=0od38sy^`X-e#JCuR~z-&4W{Xrzane zRm1lVFl~%ai&1p5CghFtf19AU3B|-`&@}4sQ;#q9rX7G@(hSgZT{Z_wwtp{9Rf;u8 z|9GYt|Ck$d767XI5R6W10R!1vZmYMj?s*93LeBRq^0ncEKd#mAokfx|keO!q{td;G B1uOsn diff --git a/Microcontrollers/GLCD/main.c b/Microcontrollers/GLCD/main.c index 4c975d1..03f94c5 100644 --- a/Microcontrollers/GLCD/main.c +++ b/Microcontrollers/GLCD/main.c @@ -34,13 +34,14 @@ typedef unsigned char byte; #define E_DELAY 10 #define DATAPORT PORTC #define CONTROLPORT PORTB +#define CONTTROLDDR DDRB #define DATADDR DDRC #define DATAPIN PINC #define GLCD_CS1 (1<<0) #define GLCD_CS2 (1<<1) -#define GLCD_RS (1<<2) -#define GLCD_RW (1<<3) -#define GLCD_EN (1<<5) +#define GLCD_RST (1<<3) +#define GLCD_RW (1<<2) +#define GLCD_EN (1<<4) #define GLCD_CS_ACTIVE_LOW 1 //Define this if your GLCD CS //is active low (refer to datasheet) @@ -53,6 +54,40 @@ void wait( int ms ) } } +void wait_us(int us) +{ + for (int i=0; i command - CONTROLPORT &= ~GLCD_RW; //RW low --> write - DATAPORT = 0x3F; //ON command + CONTROLPORT = ~GLCD_RST | ~GLCD_RW; //RS low --> command + DATAPORT = 0b0011111; //OFF command trigger(); } //---------------------- @@ -85,22 +119,20 @@ void glcd_off() CONTROLPORT |= CS1; //Activate both chips CONTROLPORT |= CS2; #endif - CONTROLPORT &= ~GLCD_RS; //DI low --> command - CONTROLPORT &= ~GLCD_RW; //RW low --> write - DATAPORT = 0x3E; //OFF command + CONTROLPORT = ~GLCD_RST | ~GLCD_RW; //RS low --> command + DATAPORT = 0b0011110; //OFF command trigger(); } int main(void) { + GLCD_init(); + glcd_off(); while (1) { - glcd_on(); - wait(2000); - glcd_off(); - wait(2000); + } } diff --git a/Microcontrollers/LCDMatrix/Debug/LCDMatrix.eep b/Microcontrollers/LCDMatrix/Debug/LCDMatrix.eep new file mode 100644 index 0000000..7c166a1 --- /dev/null +++ b/Microcontrollers/LCDMatrix/Debug/LCDMatrix.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/Microcontrollers/LCDMatrix/Debug/LCDMatrix.elf b/Microcontrollers/LCDMatrix/Debug/LCDMatrix.elf new file mode 100644 index 0000000000000000000000000000000000000000..a85c5867d9bf38fa5281afd2c009ef1db1da628a GIT binary patch literal 11280 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: + 0: 45 c0 rjmp .+138 ; 0x8c <__ctors_end> + 2: 00 00 nop + 4: 4b c0 rjmp .+150 ; 0x9c <__bad_interrupt> + 6: 00 00 nop + 8: 49 c0 rjmp .+146 ; 0x9c <__bad_interrupt> + a: 00 00 nop + c: 47 c0 rjmp .+142 ; 0x9c <__bad_interrupt> + e: 00 00 nop + 10: 45 c0 rjmp .+138 ; 0x9c <__bad_interrupt> + 12: 00 00 nop + 14: 43 c0 rjmp .+134 ; 0x9c <__bad_interrupt> + 16: 00 00 nop + 18: 41 c0 rjmp .+130 ; 0x9c <__bad_interrupt> + 1a: 00 00 nop + 1c: 3f c0 rjmp .+126 ; 0x9c <__bad_interrupt> + 1e: 00 00 nop + 20: 3d c0 rjmp .+122 ; 0x9c <__bad_interrupt> + 22: 00 00 nop + 24: 3b c0 rjmp .+118 ; 0x9c <__bad_interrupt> + 26: 00 00 nop + 28: 39 c0 rjmp .+114 ; 0x9c <__bad_interrupt> + 2a: 00 00 nop + 2c: 37 c0 rjmp .+110 ; 0x9c <__bad_interrupt> + 2e: 00 00 nop + 30: 35 c0 rjmp .+106 ; 0x9c <__bad_interrupt> + 32: 00 00 nop + 34: 33 c0 rjmp .+102 ; 0x9c <__bad_interrupt> + 36: 00 00 nop + 38: 31 c0 rjmp .+98 ; 0x9c <__bad_interrupt> + 3a: 00 00 nop + 3c: 2f c0 rjmp .+94 ; 0x9c <__bad_interrupt> + 3e: 00 00 nop + 40: 2d c0 rjmp .+90 ; 0x9c <__bad_interrupt> + 42: 00 00 nop + 44: 2b c0 rjmp .+86 ; 0x9c <__bad_interrupt> + 46: 00 00 nop + 48: 29 c0 rjmp .+82 ; 0x9c <__bad_interrupt> + 4a: 00 00 nop + 4c: 27 c0 rjmp .+78 ; 0x9c <__bad_interrupt> + 4e: 00 00 nop + 50: 25 c0 rjmp .+74 ; 0x9c <__bad_interrupt> + 52: 00 00 nop + 54: 23 c0 rjmp .+70 ; 0x9c <__bad_interrupt> + 56: 00 00 nop + 58: 21 c0 rjmp .+66 ; 0x9c <__bad_interrupt> + 5a: 00 00 nop + 5c: 1f c0 rjmp .+62 ; 0x9c <__bad_interrupt> + 5e: 00 00 nop + 60: 1d c0 rjmp .+58 ; 0x9c <__bad_interrupt> + 62: 00 00 nop + 64: 1b c0 rjmp .+54 ; 0x9c <__bad_interrupt> + 66: 00 00 nop + 68: 19 c0 rjmp .+50 ; 0x9c <__bad_interrupt> + 6a: 00 00 nop + 6c: 17 c0 rjmp .+46 ; 0x9c <__bad_interrupt> + 6e: 00 00 nop + 70: 15 c0 rjmp .+42 ; 0x9c <__bad_interrupt> + 72: 00 00 nop + 74: 13 c0 rjmp .+38 ; 0x9c <__bad_interrupt> + 76: 00 00 nop + 78: 11 c0 rjmp .+34 ; 0x9c <__bad_interrupt> + 7a: 00 00 nop + 7c: 0f c0 rjmp .+30 ; 0x9c <__bad_interrupt> + 7e: 00 00 nop + 80: 0d c0 rjmp .+26 ; 0x9c <__bad_interrupt> + 82: 00 00 nop + 84: 0b c0 rjmp .+22 ; 0x9c <__bad_interrupt> + 86: 00 00 nop + 88: 09 c0 rjmp .+18 ; 0x9c <__bad_interrupt> + ... + +0000008c <__ctors_end>: + 8c: 11 24 eor r1, r1 + 8e: 1f be out 0x3f, r1 ; 63 + 90: cf ef ldi r28, 0xFF ; 255 + 92: d0 e1 ldi r29, 0x10 ; 16 + 94: de bf out 0x3e, r29 ; 62 + 96: cd bf out 0x3d, r28 ; 61 + 98: 2d d0 rcall .+90 ; 0xf4
+ 9a: 5c c0 rjmp .+184 ; 0x154 <_exit> + +0000009c <__bad_interrupt>: + 9c: b1 cf rjmp .-158 ; 0x0 <__vectors> + +0000009e : +outputs: +notes: TWI clock is set to 100 kHz +Version : DMK, Initial code +*******************************************************************/ +{ + TWSR = 0; + 9e: 10 92 71 00 sts 0x0071, r1 ; 0x800071 <__TEXT_REGION_LENGTH__+0x7e0071> + TWBR = 32; // TWI clock set to 100kHz, prescaler = 0 + a2: 80 e2 ldi r24, 0x20 ; 32 + a4: 80 93 70 00 sts 0x0070, r24 ; 0x800070 <__TEXT_REGION_LENGTH__+0x7e0070> + a8: 08 95 ret + +000000aa : +outputs: +notes: +Version : DMK, Initial code +*******************************************************************/ +{ + TWCR = (0x80 | 0x20 | 0x04); + aa: 84 ea ldi r24, 0xA4 ; 164 + ac: 80 93 74 00 sts 0x0074, r24 ; 0x800074 <__TEXT_REGION_LENGTH__+0x7e0074> + while( 0x00 == (TWCR & 0x80) ); + b0: 80 91 74 00 lds r24, 0x0074 ; 0x800074 <__TEXT_REGION_LENGTH__+0x7e0074> + b4: 88 23 and r24, r24 + b6: e4 f7 brge .-8 ; 0xb0 +} + b8: 08 95 ret + +000000ba : +outputs: +notes: +Version : DMK, Initial code +*******************************************************************/ +{ + TWCR = (0x80 | 0x10 | 0x04); + ba: 84 e9 ldi r24, 0x94 ; 148 + bc: 80 93 74 00 sts 0x0074, r24 ; 0x800074 <__TEXT_REGION_LENGTH__+0x7e0074> + c0: 08 95 ret + +000000c2 : +outputs: +notes: +Version : DMK, Initial code +*******************************************************************/ +{ + TWDR = data; + c2: 80 93 73 00 sts 0x0073, r24 ; 0x800073 <__TEXT_REGION_LENGTH__+0x7e0073> + TWCR = (0x80 | 0x04); + c6: 84 e8 ldi r24, 0x84 ; 132 + c8: 80 93 74 00 sts 0x0074, r24 ; 0x800074 <__TEXT_REGION_LENGTH__+0x7e0074> + while( 0 == (TWCR & 0x80) ); + cc: 80 91 74 00 lds r24, 0x0074 ; 0x800074 <__TEXT_REGION_LENGTH__+0x7e0074> + d0: 88 23 and r24, r24 + d2: e4 f7 brge .-8 ; 0xcc +} + d4: 08 95 ret + +000000d6 : + clock value is set. This is used by _delay_ms inside + util/delay.h +Version : DMK, Initial code +*******************************************************************/ +{ + for (int i=0; i + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + dc: e9 ef ldi r30, 0xF9 ; 249 + de: f0 e0 ldi r31, 0x00 ; 0 + e0: 31 97 sbiw r30, 0x01 ; 1 + e2: f1 f7 brne .-4 ; 0xe0 + e4: 00 c0 rjmp .+0 ; 0xe6 + e6: 00 00 nop + e8: 2f 5f subi r18, 0xFF ; 255 + ea: 3f 4f sbci r19, 0xFF ; 255 + ec: 28 17 cp r18, r24 + ee: 39 07 cpc r19, r25 + f0: ac f3 brlt .-22 ; 0xdc + { + _delay_ms( 1 ); // library function (max 30 ms at 8MHz) + } +} + f2: 08 95 ret + +000000f4
: +notes: Looping forever, trashing the HT16K33 +Version : DMK, Initial code +*******************************************************************/ +{ + + twi_init(); // Init TWI interface + f4: d4 df rcall .-88 ; 0x9e + + // Init HT16K22. Page 32 datasheet + twi_start(); + f6: d9 df rcall .-78 ; 0xaa + twi_tx(0xE0); // Display I2C addres + R/W bit + f8: 80 ee ldi r24, 0xE0 ; 224 + fa: e3 df rcall .-58 ; 0xc2 + twi_tx(0x21); // Internal osc on (page 10 HT16K33) + fc: 81 e2 ldi r24, 0x21 ; 33 + fe: e1 df rcall .-62 ; 0xc2 + twi_stop(); + 100: dc df rcall .-72 ; 0xba + + twi_start(); + 102: d3 df rcall .-90 ; 0xaa + twi_tx(0xE0); // Display I2C address + R/W bit + 104: 80 ee ldi r24, 0xE0 ; 224 + 106: dd df rcall .-70 ; 0xc2 + twi_tx(0xA0); // HT16K33 pins all output + 108: 80 ea ldi r24, 0xA0 ; 160 + twi_stop(); + 10a: db df rcall .-74 ; 0xc2 + + twi_start(); + 10c: d6 df rcall .-84 ; 0xba + twi_tx(0xE0); // Display I2C address + R/W bit + 10e: cd df rcall .-102 ; 0xaa + twi_tx(0xE3); // Display Dimming 4/16 duty cycle + 110: 80 ee ldi r24, 0xE0 ; 224 + 112: d7 df rcall .-82 ; 0xc2 + twi_stop(); + 114: 83 ee ldi r24, 0xE3 ; 227 + + twi_start(); + 116: d5 df rcall .-86 ; 0xc2 + twi_tx(0xE0); // Display I2C address + R/W bit + 118: d0 df rcall .-96 ; 0xba + 11a: c7 df rcall .-114 ; 0xaa + twi_tx(0x81); // Display OFF - Blink On + 11c: 80 ee ldi r24, 0xE0 ; 224 + 11e: d1 df rcall .-94 ; 0xc2 + twi_stop(); + 120: 81 e8 ldi r24, 0x81 ; 129 + + while (1) + { + twi_start(); + 122: cf df rcall .-98 ; 0xc2 + twi_tx(0xE0); // Display I2C addres + R/W bit + 124: ca df rcall .-108 ; 0xba + 126: c1 df rcall .-126 ; 0xaa + twi_tx(0x00); // Address + 128: 80 ee ldi r24, 0xE0 ; 224 + 12a: cb df rcall .-106 ; 0xc2 + 12c: 80 e0 ldi r24, 0x00 ; 0 + twi_tx(0x00); // data + 12e: c9 df rcall .-110 ; 0xc2 + 130: 80 e0 ldi r24, 0x00 ; 0 + 132: c7 df rcall .-114 ; 0xc2 + twi_stop(); + 134: c2 df rcall .-124 ; 0xba + 136: 84 ef ldi r24, 0xF4 ; 244 + + wait(500); + 138: 91 e0 ldi r25, 0x01 ; 1 + 13a: cd df rcall .-102 ; 0xd6 + 13c: b6 df rcall .-148 ; 0xaa + 13e: 80 ee ldi r24, 0xE0 ; 224 + + twi_start(); + 140: c0 df rcall .-128 ; 0xc2 + 142: 80 e0 ldi r24, 0x00 ; 0 + twi_tx(0xE0); // Display I2C addres + R/W bit + 144: be df rcall .-132 ; 0xc2 + 146: 81 e0 ldi r24, 0x01 ; 1 + 148: bc df rcall .-136 ; 0xc2 + twi_tx(0x00); // Address + 14a: b7 df rcall .-146 ; 0xba + 14c: 84 ef ldi r24, 0xF4 ; 244 + 14e: 91 e0 ldi r25, 0x01 ; 1 + twi_tx(0x01); // data + 150: c2 df rcall .-124 ; 0xd6 + 152: e9 cf rjmp .-46 ; 0x126 + +00000154 <_exit>: + 154: f8 94 cli + +00000156 <__stop_program>: + twi_stop(); + 156: ff cf rjmp .-2 ; 0x156 <__stop_program> diff --git a/Microcontrollers/LCDMatrix/Debug/LCDMatrix.map b/Microcontrollers/LCDMatrix/Debug/LCDMatrix.map new file mode 100644 index 0000000..73b41bc --- /dev/null +++ b/Microcontrollers/LCDMatrix/Debug/LCDMatrix.map @@ -0,0 +1,442 @@ +Archive member included to satisfy reference by file (symbol) + +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o (exit) + +Discarded input sections + + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o + .text 0x00000000 0x0 main.o + .data 0x00000000 0x0 main.o + .bss 0x00000000 0x0 main.o + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800100 0x00001000 rw !x +eeprom 0x00810000 0x00001000 rw !x +fuse 0x00820000 0x00000003 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +user_signatures 0x00850000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o +LOAD main.o +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr51\libm.a +END GROUP +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr51\libm.a +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr51\libc.a +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51\libatmega128.a +END GROUP + 0x00000000 __TEXT_REGION_ORIGIN__ = DEFINED (__TEXT_REGION_ORIGIN__)?__TEXT_REGION_ORIGIN__:0x0 + [0x00800100] __DATA_REGION_ORIGIN__ = DEFINED (__DATA_REGION_ORIGIN__)?__DATA_REGION_ORIGIN__:0x800100 + [0x00020000] __TEXT_REGION_LENGTH__ = DEFINED (__TEXT_REGION_LENGTH__)?__TEXT_REGION_LENGTH__:0x20000 + [0x00001000] __DATA_REGION_LENGTH__ = DEFINED (__DATA_REGION_LENGTH__)?__DATA_REGION_LENGTH__:0xff00 + [0x00001000] __EEPROM_REGION_LENGTH__ = DEFINED (__EEPROM_REGION_LENGTH__)?__EEPROM_REGION_LENGTH__:0x10000 + [0x00000003] __FUSE_REGION_LENGTH__ = DEFINED (__FUSE_REGION_LENGTH__)?__FUSE_REGION_LENGTH__:0x400 + 0x00000400 __LOCK_REGION_LENGTH__ = DEFINED (__LOCK_REGION_LENGTH__)?__LOCK_REGION_LENGTH__:0x400 + 0x00000400 __SIGNATURE_REGION_LENGTH__ = DEFINED (__SIGNATURE_REGION_LENGTH__)?__SIGNATURE_REGION_LENGTH__:0x400 + 0x00000400 __USER_SIGNATURE_REGION_LENGTH__ = DEFINED (__USER_SIGNATURE_REGION_LENGTH__)?__USER_SIGNATURE_REGION_LENGTH__:0x400 + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x158 + *(.vectors) + .vectors 0x00000000 0x8c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o + 0x00000000 __vector_default + 0x00000000 __vectors + *(.vectors) + *(.progmem.gcc*) + 0x0000008c . = ALIGN (0x2) + 0x0000008c __trampolines_start = . + *(.trampolines) + .trampolines 0x0000008c 0x0 linker stubs + *(.trampolines*) + 0x0000008c __trampolines_end = . + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + 0x0000008c . = ALIGN (0x2) + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x0000008c __ctors_start = . + *(.ctors) + 0x0000008c __ctors_end = . + 0x0000008c __dtors_start = . + *(.dtors) + 0x0000008c __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x0000008c 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o + 0x0000008c __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x0000008c 0xc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x00000098 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o + *(.init9) + *(.text) + .text 0x0000009c 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o + 0x0000009c __vector_22 + 0x0000009c __vector_28 + 0x0000009c __vector_1 + 0x0000009c __vector_32 + 0x0000009c __vector_34 + 0x0000009c __vector_24 + 0x0000009c __vector_12 + 0x0000009c __bad_interrupt + 0x0000009c __vector_6 + 0x0000009c __vector_31 + 0x0000009c __vector_3 + 0x0000009c __vector_23 + 0x0000009c __vector_30 + 0x0000009c __vector_25 + 0x0000009c __vector_11 + 0x0000009c __vector_13 + 0x0000009c __vector_17 + 0x0000009c __vector_19 + 0x0000009c __vector_7 + 0x0000009c __vector_27 + 0x0000009c __vector_5 + 0x0000009c __vector_33 + 0x0000009c __vector_4 + 0x0000009c __vector_9 + 0x0000009c __vector_2 + 0x0000009c __vector_21 + 0x0000009c __vector_15 + 0x0000009c __vector_29 + 0x0000009c __vector_8 + 0x0000009c __vector_26 + 0x0000009c __vector_14 + 0x0000009c __vector_10 + 0x0000009c __vector_16 + 0x0000009c __vector_18 + 0x0000009c __vector_20 + 0x0000009e . = ALIGN (0x2) + *(.text.*) + .text.twi_init + 0x0000009e 0xc main.o + 0x0000009e twi_init + .text.twi_start + 0x000000aa 0x10 main.o + 0x000000aa twi_start + .text.twi_stop + 0x000000ba 0x8 main.o + 0x000000ba twi_stop + .text.twi_tx 0x000000c2 0x14 main.o + 0x000000c2 twi_tx + .text.wait 0x000000d6 0x1e main.o + 0x000000d6 wait + .text.main 0x000000f4 0x60 main.o + 0x000000f4 main + 0x00000154 . = ALIGN (0x2) + *(.fini9) + .fini9 0x00000154 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) + 0x00000154 _exit + 0x00000154 exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00000154 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a(_exit.o) + *(.fini0) + 0x00000158 _etext = . + +.data 0x00800100 0x0 load address 0x00000158 + [!provide] PROVIDE (__data_start, .) + *(.data) + *(.data*) + *(.gnu.linkonce.d*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.r*) + 0x00800100 . = ALIGN (0x2) + 0x00800100 _edata = . + [!provide] PROVIDE (__data_end, .) + +.bss 0x00800100 0x0 + [!provide] PROVIDE (__bss_start, .) + *(.bss) + *(.bss*) + *(COMMON) + [!provide] PROVIDE (__bss_end, .) + 0x00000158 __data_load_start = LOADADDR (.data) + 0x00000158 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800100 0x0 + [!provide] PROVIDE (__noinit_start, .) + *(.noinit*) + [!provide] PROVIDE (__noinit_end, .) + 0x00800100 _end = . + [!provide] PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.user_signatures + *(.user_signatures*) + +.stab + *(.stab) + +.stabstr + *(.stabstr) + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment 0x00000000 0x30 + *(.comment) + .comment 0x00000000 0x30 main.o + 0x31 (size before relaxing) + +.note.gnu.avr.deviceinfo + 0x00000000 0x3c + .note.gnu.avr.deviceinfo + 0x00000000 0x3c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o + +.note.gnu.build-id + *(.note.gnu.build-id) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x48 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x48 main.o + +.debug_pubnames + *(.debug_pubnames) + +.debug_info 0x00000000 0xaf1 + *(.debug_info .gnu.linkonce.wi.*) + .debug_info 0x00000000 0x780 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o + .debug_info 0x00000780 0x371 main.o + +.debug_abbrev 0x00000000 0x862 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x718 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o + .debug_abbrev 0x00000718 0x14a main.o + +.debug_line 0x00000000 0x40a + *(.debug_line .debug_line.* .debug_line_end) + .debug_line 0x00000000 0x16a C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o + .debug_line 0x0000016a 0x2a0 main.o + +.debug_frame 0x00000000 0x74 + *(.debug_frame) + .debug_frame 0x00000000 0x74 main.o + +.debug_str 0x00000000 0x441 + *(.debug_str) + .debug_str 0x00000000 0x27d C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega128/avr51/crtatmega128.o + .debug_str 0x0000027d 0x1c4 main.o + 0x1f8 (size before relaxing) + +.debug_loc 0x00000000 0x97 + *(.debug_loc) + .debug_loc 0x00000000 0x97 main.o + +.debug_macinfo + *(.debug_macinfo) + +.debug_weaknames + *(.debug_weaknames) + +.debug_funcnames + *(.debug_funcnames) + +.debug_typenames + *(.debug_typenames) + +.debug_varnames + *(.debug_varnames) + +.debug_pubtypes + *(.debug_pubtypes) + +.debug_ranges 0x00000000 0x38 + *(.debug_ranges) + .debug_ranges 0x00000000 0x38 main.o + +.debug_macro + *(.debug_macro) +OUTPUT(LCDMatrix.elf elf32-avr) +LOAD linker stubs diff --git a/Microcontrollers/LCDMatrix/Debug/LCDMatrix.srec b/Microcontrollers/LCDMatrix/Debug/LCDMatrix.srec new file mode 100644 index 0000000..a081bbe --- /dev/null +++ b/Microcontrollers/LCDMatrix/Debug/LCDMatrix.srec @@ -0,0 +1,24 @@ +S01100004C43444D61747269782E73726563CB +S113000045C000004BC0000049C0000047C00000CC +S113001045C0000043C0000041C000003FC00000D4 +S11300203DC000003BC0000039C0000037C00000E4 +S113003035C0000033C0000031C000002FC00000F4 +S11300402DC000002BC0000029C0000027C0000004 +S113005025C0000023C0000021C000001FC0000014 +S11300601DC000001BC0000019C0000017C0000024 +S113007015C0000013C0000011C000000FC0000034 +S11300800DC000000BC0000009C0000011241FBEF9 +S1130090CFEFD0E1DEBFCDBF2DD05CC0B1CF109289 +S11300A0710080E280937000089584EA8093740064 +S11300B0809174008823E4F7089584E980937400A0 +S11300C008958093730084E8809374008091740091 +S11300D08823E4F7089520E030E008C0E9EFF0E079 +S11300E03197F1F700C000002F5F3F4F2817390701 +S11300F0ACF30895D4DFD9DF80EEE3DF81E2E1DF02 +S1130100DCDFD3DF80EEDDDF80EADBDFD6DFCDDFCF +S113011080EED7DF83EED5DFD0DFC7DF80EED1DF1F +S113012081E8CFDFCADFC1DF80EECBDF80E0C9DF4B +S113013080E0C7DFC2DF84EF91E0CDDFB6DF80EE81 +S1130140C0DF80E0BEDF81E0BCDFB7DF84EF91E099 +S10B0150C2DFE9CFF894FFCFF0 +S9030000FC diff --git a/Microcontrollers/LCDMatrix/Debug/Makefile b/Microcontrollers/LCDMatrix/Debug/Makefile new file mode 100644 index 0000000..2590bde --- /dev/null +++ b/Microcontrollers/LCDMatrix/Debug/Makefile @@ -0,0 +1,127 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +SHELL := cmd.exe +RM := rm -rf + +USER_OBJS := + +LIBS := +PROJ := + +O_SRCS := +C_SRCS := +S_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +PREPROCESSING_SRCS := +OBJS := +OBJS_AS_ARGS := +C_DEPS := +C_DEPS_AS_ARGS := +EXECUTABLES := +OUTPUT_FILE_PATH := +OUTPUT_FILE_PATH_AS_ARGS := +AVR_APP_PATH :=$$$AVR_APP_PATH$$$ +QUOTE := " +ADDITIONAL_DEPENDENCIES:= +OUTPUT_FILE_DEP:= +LIB_DEP:= +LINKER_SCRIPT_DEP:= + +# Every subdirectory with source files must be described here +SUBDIRS := + + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../main.c + + +PREPROCESSING_SRCS += + + +ASM_SRCS += + + +OBJS += \ +main.o + +OBJS_AS_ARGS += \ +main.o + +C_DEPS += \ +main.d + +C_DEPS_AS_ARGS += \ +main.d + +OUTPUT_FILE_PATH +=LCDMatrix.elf + +OUTPUT_FILE_PATH_AS_ARGS +=LCDMatrix.elf + +ADDITIONAL_DEPENDENCIES:= + +OUTPUT_FILE_DEP:= ./makedep.mk + +LIB_DEP+= + +LINKER_SCRIPT_DEP+= + + +# AVR32/GNU C Compiler +./main.o: .././main.c + @echo Building file: $< + @echo Invoking: AVR/GNU C Compiler : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include" -Og -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -mrelax -g2 -Wall -mmcu=atmega128 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega128" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + + + + +# AVR32/GNU Preprocessing Assembler + + + +# AVR32/GNU Assembler + + + + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES) + +$(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP) $(LINKER_SCRIPT_DEP) + @echo Building target: $@ + @echo Invoking: AVR/GNU Linker : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="LCDMatrix.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mrelax -mmcu=atmega128 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega128" + @echo Finished building target: $@ + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "LCDMatrix.elf" "LCDMatrix.hex" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "LCDMatrix.elf" "LCDMatrix.eep" || exit 0 + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "LCDMatrix.elf" > "LCDMatrix.lss" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "LCDMatrix.elf" "LCDMatrix.srec" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "LCDMatrix.elf" + + + + + + + +# Other Targets +clean: + -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES) + -$(RM) $(C_DEPS_AS_ARGS) + rm -rf "LCDMatrix.elf" "LCDMatrix.a" "LCDMatrix.hex" "LCDMatrix.lss" "LCDMatrix.eep" "LCDMatrix.map" "LCDMatrix.srec" "LCDMatrix.usersignatures" + \ No newline at end of file diff --git a/Microcontrollers/LCDMatrix/Debug/main.d b/Microcontrollers/LCDMatrix/Debug/main.d new file mode 100644 index 0000000..61b4897 --- /dev/null +++ b/Microcontrollers/LCDMatrix/Debug/main.d @@ -0,0 +1,43 @@ +main.d main.o: .././main.c \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include/avr/iom128.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include/avr/iom128.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h: diff --git a/Microcontrollers/LCDMatrix/Debug/main.o b/Microcontrollers/LCDMatrix/Debug/main.o new file mode 100644 index 0000000000000000000000000000000000000000..a6d661e33c48c4b3b4f887e0498bfabd58021ac8 GIT binary patch literal 8092 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 E0HxASG5`Po literal 0 HcmV?d00001 diff --git a/Microcontrollers/LCDMatrix/Debug/makedep.mk b/Microcontrollers/LCDMatrix/Debug/makedep.mk new file mode 100644 index 0000000..6a14fde --- /dev/null +++ b/Microcontrollers/LCDMatrix/Debug/makedep.mk @@ -0,0 +1,6 @@ +################################################################################ +# Automatically-generated file. Do not edit or delete the file +################################################################################ + +main.c + diff --git a/Microcontrollers/LCDMatrix/LCDMatrix.componentinfo.xml b/Microcontrollers/LCDMatrix/LCDMatrix.componentinfo.xml new file mode 100644 index 0000000..6df69e8 --- /dev/null +++ b/Microcontrollers/LCDMatrix/LCDMatrix.componentinfo.xml @@ -0,0 +1,86 @@ + + + + + + + Device + Startup + + + Atmel + 1.6.0 + C:/Program Files (x86)\Atmel\Studio\7.0\Packs + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include\ + + include + C + + + include/ + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include\avr\iom128.h + + header + C + JdJ7J9I/SJh965SEyyyVYw== + + include/avr/iom128.h + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\templates\main.c + template + source + C Exe + 6mHOoYAUNxBqAyAmwd7zvA== + + templates/main.c + Main file (.c) + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\templates\main.cpp + template + source + C Exe + mkKaE95TOoATsuBGv6jmxg== + + templates/main.cpp + Main file (.cpp) + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega128 + + libraryPrefix + GCC + + + gcc/dev/atmega128 + + + + + ATmega_DFP + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/Atmel.ATmega_DFP.pdsc + 1.6.364 + true + ATmega128 + + + + Resolved + Fixed + true + + + \ No newline at end of file diff --git a/Microcontrollers/LCDMatrix/LCDMatrix.cproj b/Microcontrollers/LCDMatrix/LCDMatrix.cproj new file mode 100644 index 0000000..6b2586c --- /dev/null +++ b/Microcontrollers/LCDMatrix/LCDMatrix.cproj @@ -0,0 +1,130 @@ + + + + 2.0 + 7.0 + com.Atmel.AVRGCC8.C + {b8250aad-aa24-4f1e-8f84-52b104f66735} + ATmega128 + none + Executable + C + $(MSBuildProjectName) + .elf + $(MSBuildProjectDirectory)\$(Configuration) + LCDMatrix + LCDMatrix + LCDMatrix + Native + true + false + true + true + + + true + + 2 + 0 + 0 + + + + + + + + + + + + + + + + + + -mmcu=atmega128 -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega128" + True + True + True + True + True + False + True + True + + + NDEBUG + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\include\ + + + Optimize for size (-Os) + True + True + True + + + libm + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\include\ + + + + + + + + + -mmcu=atmega128 -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega128" + True + True + True + True + True + False + True + True + + + DEBUG + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\include\ + + + Optimize debugging experience (-Og) + True + True + Default (-g2) + True + + + libm + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\include\ + + + Default (-Wa,-g) + + + + + + compile + + + + \ No newline at end of file diff --git a/Microcontrollers/LCDMatrix/main.c b/Microcontrollers/LCDMatrix/main.c new file mode 100644 index 0000000..b455520 --- /dev/null +++ b/Microcontrollers/LCDMatrix/main.c @@ -0,0 +1,149 @@ +/* --------------------------------------------------------------------------- +** This software is in the public domain, furnished "as is", without technical +** support, and with no warranty, express or implied, as to its usefulness for +** any purpose. +** +** ledmatrix.c +** +** Beschrijving: Simple HT16K33 Ledmatix demo. +** Target: AVR mcu +** Build: avr-gcc -std=c99 -Wall -O3 -mmcu=atmega128 -D F_CPU=8000000UL -c ledmatrix.c +** avr-gcc -g -mmcu=atmega128 -o ledmatrix.elf ledmatrix.o +** avr-objcopy -O ihex ledmatrix.elf ledmatrix.hex +** or type 'make' +** Author: dkroeske@gmail.com +** -------------------------------------------------------------------------*/ + + +#include +#include + +/******************************************************************/ +void twi_init(void) +/* +short: Init AVR TWI interface and set bitrate +inputs: +outputs: +notes: TWI clock is set to 100 kHz +Version : DMK, Initial code +*******************************************************************/ +{ + TWSR = 0; + TWBR = 32; // TWI clock set to 100kHz, prescaler = 0 +} + +/******************************************************************/ +void twi_start(void) +/* +short: Generate TWI start condition +inputs: +outputs: +notes: +Version : DMK, Initial code +*******************************************************************/ +{ + TWCR = (0x80 | 0x20 | 0x04); + while( 0x00 == (TWCR & 0x80) ); +} + +/******************************************************************/ +void twi_stop(void) +/* +short: Generate TWI stop condition +inputs: +outputs: +notes: +Version : DMK, Initial code +*******************************************************************/ +{ + TWCR = (0x80 | 0x10 | 0x04); +} + +/******************************************************************/ +void twi_tx(unsigned char data) +/* +short: transmit 8 bits data +inputs: +outputs: +notes: +Version : DMK, Initial code +*******************************************************************/ +{ + TWDR = data; + TWCR = (0x80 | 0x04); + while( 0 == (TWCR & 0x80) ); +} + +/******************************************************************/ +void wait( int ms ) +/* +short: Busy wait number of millisecs +inputs: int ms (Number of millisecs to busy wait) +outputs: +notes: Busy wait, not very accurate. Make sure (external) + clock value is set. This is used by _delay_ms inside + util/delay.h +Version : DMK, Initial code +*******************************************************************/ +{ + for (int i=0; i>>>>>> fcffefbb7e2c6dd1fafecca07bf84ecaf04b4fd4 + {BBFA8A24-6283-45FE-A253-1F0C6111B1F0}.Debug|AVR.ActiveCfg = Debug|AVR + {BBFA8A24-6283-45FE-A253-1F0C6111B1F0}.Debug|AVR.Build.0 = Debug|AVR + {BBFA8A24-6283-45FE-A253-1F0C6111B1F0}.Release|AVR.ActiveCfg = Release|AVR + {BBFA8A24-6283-45FE-A253-1F0C6111B1F0}.Release|AVR.Build.0 = Release|AVR + {B8250AAD-AA24-4F1E-8F84-52B104F66735}.Debug|AVR.ActiveCfg = Debug|AVR + {B8250AAD-AA24-4F1E-8F84-52B104F66735}.Debug|AVR.Build.0 = Debug|AVR + {B8250AAD-AA24-4F1E-8F84-52B104F66735}.Release|AVR.ActiveCfg = Release|AVR + {B8250AAD-AA24-4F1E-8F84-52B104F66735}.Release|AVR.Build.0 = Release|AVR EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE