From e869f7b0334c4a53e8c6358d6321e1b0989380c5 Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Tue, 22 Mar 2016 10:14:17 +0100 Subject: [PATCH] Added changing brightness --- MIC-Week1/.vs/MIC-Week1/v14/.atsuo | Bin 50688 -> 54784 bytes MIC-Week5/Debug/MIC-Week5.lss | 682 ++++++++++++++++++----------- MIC-Week5/Debug/MIC-Week5.map | 117 ++--- MIC-Week5/Debug/MIC-Week5.srec | 69 +-- MIC-Week5/main.c | 24 +- MIC-Week5/spi.c | 14 + MIC-Week5/spi.h | 1 + 7 files changed, 566 insertions(+), 341 deletions(-) diff --git a/MIC-Week1/.vs/MIC-Week1/v14/.atsuo b/MIC-Week1/.vs/MIC-Week1/v14/.atsuo index bcfcc674c5646c7a656098e2c143f162ad982ca9..deca279712905f9378ab02c09fc7c599a1562826 100644 GIT binary patch delta 2577 zcmds3T})J05WeT`FK}1++eKvyOKD{J-Ca&fJ-EH$0>Yf2=y;WQNabZDLC7Ufr+52X3z$6tyoSY7om1PJ{<%a#GrnqjjrLDjZmik{{882q4xV z)*{v+UPr7)yn)z&coVS^(Tr$8Y(i{C1QD$WIvbIU{1(JkLO2Q@&}v5l70avUX;^NvHq+ z!O{lf*!+w)QD>+ zpG1*ac$zbzVgs-zvjN6L2TWu(NmjI^+NJDLGeIcJPm|IhDi0utB2s7;0l>A55o51A{)FlA|wsKJzCNrX|*B$-gDRBXJ_ zUqr=SJ)g=dVVVZyS5m^jX>66Yp+tp4MFf|OF5?gidlBy?m4|T*!(aLJPX$wk`dI`s zDAK-;Zw_Dhau~i7NU>}q3-=4g0 z@&t$7-(7v{o`B_?9ZAoCJMTzvzEr+kImQgE2wf@7naG7T4>IkQ65T*~2xV&?vJW#5 zogV3FlSJmt`5E~YeKlR8jh%Tv&10N=c%OF60>RZ}yulQ!PVUi+NuR%ybJzdzO zqwMmK)z1v^8=Y<>MV&@hydHtXr|b4G_9g78KNzX;(TO4ani_f+HcIp{C_yM@Fi~@h z`cp$MP|qjJb?iBbzQlWSjHY0daC^mxSk`K^pk76=!K0&z6v=9K0d*YoI5_}M$V3p z8{x%|q#Z5k@d{PInu?)v^CB3R3$!9y;bB$5THS_m%B%nxV1t{s)JV|ETA}T14!DA@ zkwaqImEy!jq7yE_1GyXawpV~(4#k@?*ik~f1{<_u8?<#;Atq;H4Y;^#C^{F~kvl({Qkm#>OOQEAl|i5Fgt-z! z!Z_BSFiwvAmyQ~>iN5^_lA`Y-BO!cG4#E$2oL8GJC0Ae>N3SRO#0FqFTF&oYyg5fh zWm(EUyniraC?E2UUm0QH<=BokMY3~)LgD%m_hT*p80-K>&)h-CaDG7QNb}}^? zXnw@-4-Ofal;u^S7KMmI#3SzFSdTI-tfz)$0?KqmQrO;r@(~1OtO@&Q?q7)5u)PUo zR#?wQxfzjz$VC((FcgkSntVO#21MPG@2(ML38EBXLX;uQh)OsjWmZ0pS{1^As76>3 zRC#Au#-QAVs6|jWc9af8J>nV6P&(SIW64WOtzUImEq%I7-Rvr)K`=_^)Z%0+LJ5f; z2|=`}!~T@8q?nb|C8A%0Alitg5N%jHDgS|q3Pt~)6vZT`Q?rBE{t$xnWsJHT_(04Y zV@~Ljy{sN?%Pu(|qiEqo2K1+9GY52Oyp^;O#2bx%1SL6z@@2$}VSCjgRB+V&Bp-+i zD%dILNwjMi}f+FQ9P(@e<+;!iRwVS5kRuO0>vz+b5Ws?h{T8^(2p@K`W)< zmpu4TvD`H?^ic> zjg$?rm|>S`*CJ0#XgfU{2gHMFSWLJ7hb**;RkM`UX#{%7@(_{o;H#5(_f7}Xuw-5K~+)-R)djyN?eQ-nQjL?9W?x@ z1JDr2g{puGru6ZA=CXxNn`}%L@nhsIAx@OEf^q06vxjoflS9uEjSEE#F7M9)-#J;? zjy7ic$_>u3I5>H}!=GadHA`<#WEI?#bCz*Y_ZgGvC5}8_R7Rqs4}aw6u6Y70Lq})K zxv@-W6e5Rl&2z?mg%$=g-&wSexsUFi+dF3ca=zF5`>l~5;rjlR)mxs{1@3PQf}7WY z)@+iAhktJg?qofaSKmm!;Es}}w_m#VcB+vr^m+OZE?mq4o1G7}tgG=cWKmj8NWPz5)8iuh~$+7;7% zB{48@+Qbhwz0NKSiLMmf0Xm*a;caHyUW~uv)mwMijOFDd}W-usqrQyTmb*noN!H_Un% NOm!;xjnC7>zX5ZP73=^2 diff --git a/MIC-Week5/Debug/MIC-Week5.lss b/MIC-Week5/Debug/MIC-Week5.lss index 7ed76a6..87a3e03 100644 --- a/MIC-Week5/Debug/MIC-Week5.lss +++ b/MIC-Week5/Debug/MIC-Week5.lss @@ -3,29 +3,29 @@ MIC-Week5.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000000 00800100 00800100 000002c6 2**0 + 0 .data 00000000 00800100 00800100 0000037c 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 00000272 00000000 00000000 00000054 2**1 + 1 .text 00000328 00000000 00000000 00000054 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .comment 00000030 00000000 00000000 000002c6 2**0 + 2 .comment 00000030 00000000 00000000 0000037c 2**0 CONTENTS, READONLY - 3 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000002f8 2**2 + 3 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000003ac 2**2 CONTENTS, READONLY - 4 .debug_aranges 000000c0 00000000 00000000 00000334 2**0 + 4 .debug_aranges 000000c8 00000000 00000000 000003e8 2**0 CONTENTS, READONLY, DEBUGGING - 5 .debug_info 00000cbd 00000000 00000000 000003f4 2**0 + 5 .debug_info 00000d78 00000000 00000000 000004b0 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_abbrev 00000327 00000000 00000000 000010b1 2**0 + 6 .debug_abbrev 00000359 00000000 00000000 00001228 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_line 0000066f 00000000 00000000 000013d8 2**0 + 7 .debug_line 00000702 00000000 00000000 00001581 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_frame 00000190 00000000 00000000 00001a48 2**2 + 8 .debug_frame 000001e8 00000000 00000000 00001c84 2**2 CONTENTS, READONLY, DEBUGGING - 9 .debug_str 000002e3 00000000 00000000 00001bd8 2**0 + 9 .debug_str 000002fe 00000000 00000000 00001e6c 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_loc 0000043c 00000000 00000000 00001ebb 2**0 + 10 .debug_loc 000005d2 00000000 00000000 0000216a 2**0 CONTENTS, READONLY, DEBUGGING - 11 .debug_ranges 000000a0 00000000 00000000 000022f7 2**0 + 11 .debug_ranges 000000c0 00000000 00000000 0000273c 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -109,8 +109,8 @@ 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: 41 d0 rcall .+130 ; 0x11c
- 9a: e9 c0 rjmp .+466 ; 0x26e <_exit> + 98: 86 d0 rcall .+268 ; 0x1a6
+ 9a: 44 c1 rjmp .+648 ; 0x324 <_exit> 0000009c <__bad_interrupt>: 9c: b1 cf rjmp .-158 ; 0x0 <__vectors> @@ -144,344 +144,518 @@ Disassembly of section .text: int test2(void) { - c0: cf 93 push r28 - c2: df 93 push r29 + c0: 6f 92 push r6 + c2: 7f 92 push r7 + c4: 8f 92 push r8 + c6: 9f 92 push r9 + c8: af 92 push r10 + ca: bf 92 push r11 + cc: cf 92 push r12 + ce: df 92 push r13 + d0: ef 92 push r14 + d2: ff 92 push r15 + d4: 0f 93 push r16 + d6: 1f 93 push r17 + d8: cf 93 push r28 + da: df 93 push r29 DDRB=0x01; // Set PB0 pin as output for display select - c4: 81 e0 ldi r24, 0x01 ; 1 - c6: 87 bb out 0x17, r24 ; 23 + dc: 81 e0 ldi r24, 0x01 ; 1 + de: 87 bb out 0x17, r24 ; 23 spi_masterInit(); // Initialize spi module - c8: 2d d0 rcall .+90 ; 0x124 + e0: 66 d0 rcall .+204 ; 0x1ae displayDriverInit(); // Initialize display chip - ca: 4e d0 rcall .+156 ; 0x168 + e2: 87 d0 rcall .+270 ; 0x1f2 + int dir = 0; + int factor = 0; for(int i=-999; i<=9999; i++) { writeLedDisplay(i); - cc: 89 e1 ldi r24, 0x19 ; 25 - ce: 9c ef ldi r25, 0xFC ; 252 - d0: 7b d0 rcall .+246 ; 0x1c8 + e4: 89 e1 ldi r24, 0x19 ; 25 + e6: 9c ef ldi r25, 0xFC ; 252 + e8: ca d0 rcall .+404 ; 0x27e wait(5); - d2: 85 e0 ldi r24, 0x05 ; 5 - d4: 90 e0 ldi r25, 0x00 ; 0 - d6: e3 df rcall .-58 ; 0x9e + ea: 85 e0 ldi r24, 0x05 ; 5 + ec: 90 e0 ldi r25, 0x00 ; 0 + ee: d7 df rcall .-82 ; 0x9e + + int intsy = 0; + int dir = 0; + int factor = 0; + + for(int i=-999; i<=9999; i++) + f0: 09 e1 ldi r16, 0x19 ; 25 + f2: 1c ef ldi r17, 0xFC ; 252 + + spi_masterInit(); // Initialize spi module + displayDriverInit(); // Initialize display chip + + int intsy = 0; + int dir = 0; + f4: e1 2c mov r14, r1 + f6: f1 2c mov r15, r1 DDRB=0x01; // Set PB0 pin as output for display select spi_masterInit(); // Initialize spi module displayDriverInit(); // Initialize display chip + int intsy = 0; + f8: c0 e0 ldi r28, 0x00 ; 0 + fa: d0 e0 ldi r29, 0x00 ; 0 + intsy--; + + if(intsy < 0x06) + { + intsy = 0x06; + dir = 1; + fc: aa 24 eor r10, r10 + fe: a3 94 inc r10 + 100: b1 2c mov r11, r1 + else + intsy--; + + if(intsy < 0x06) + { + intsy = 0x06; + 102: 0f 2e mov r0, r31 + 104: f6 e0 ldi r31, 0x06 ; 6 + 106: cf 2e mov r12, r31 + 108: f0 2d mov r31, r0 + 10a: d1 2c mov r13, r1 + dir = 1; + } + else if(intsy > 0x0F) + { + intsy = 0x0F; + dir = 0; + 10c: 61 2c mov r6, r1 + 10e: 71 2c mov r7, r1 + intsy = 0x06; + dir = 1; + } + else if(intsy > 0x0F) + { + intsy = 0x0F; + 110: 0f 2e mov r0, r31 + 112: ff e0 ldi r31, 0x0F ; 15 + 114: 8f 2e mov r8, r31 + 116: f0 2d mov r31, r0 + 118: 91 2c mov r9, r1 + 11a: 0e c0 rjmp .+28 ; 0x138 + int dir = 0; + int factor = 0; + for(int i=-999; i<=9999; i++) - d8: c9 e1 ldi r28, 0x19 ; 25 - da: dc ef ldi r29, 0xFC ; 252 - dc: 0e c0 rjmp .+28 ; 0xfa { writeLedDisplay(i); - de: ce 01 movw r24, r28 - e0: 73 d0 rcall .+230 ; 0x1c8 + 11c: c8 01 movw r24, r16 + 11e: af d0 rcall .+350 ; 0x27e wait(5); - e2: 85 e0 ldi r24, 0x05 ; 5 - e4: 90 e0 ldi r25, 0x00 ; 0 - e6: db df rcall .-74 ; 0x9e - e8: ce 01 movw r24, r28 - ea: 87 50 subi r24, 0x07 ; 7 - ec: 9f 4f sbci r25, 0xFF ; 255 + 120: 85 e0 ldi r24, 0x05 ; 5 + 122: 90 e0 ldi r25, 0x00 ; 0 + 124: bc df rcall .-136 ; 0x9e + 126: c8 01 movw r24, r16 + 128: 87 50 subi r24, 0x07 ; 7 + 12a: 9f 4f sbci r25, 0xFF ; 255 if(i < -150 && i > -250) - ee: 83 36 cpi r24, 0x63 ; 99 - f0: 91 05 cpc r25, r1 - f2: 18 f4 brcc .+6 ; 0xfa + 12c: 83 36 cpi r24, 0x63 ; 99 + 12e: 91 05 cpc r25, r1 + 130: 18 f4 brcc .+6 ; 0x138 wait(75); - f4: 8b e4 ldi r24, 0x4B ; 75 - f6: 90 e0 ldi r25, 0x00 ; 0 - f8: d2 df rcall .-92 ; 0x9e - fa: ce 01 movw r24, r28 - fc: 87 59 subi r24, 0x97 ; 151 - fe: 91 09 sbc r25, r1 + 132: 8b e4 ldi r24, 0x4B ; 75 + 134: 90 e0 ldi r25, 0x00 ; 0 + 136: b3 df rcall .-154 ; 0x9e + 138: c8 01 movw r24, r16 + 13a: 87 59 subi r24, 0x97 ; 151 + 13c: 91 09 sbc r25, r1 if(i > 150 && i < 250) - 100: 83 36 cpi r24, 0x63 ; 99 - 102: 91 05 cpc r25, r1 - 104: 18 f4 brcc .+6 ; 0x10c + 13e: 83 36 cpi r24, 0x63 ; 99 + 140: 91 05 cpc r25, r1 + 142: 18 f4 brcc .+6 ; 0x14a wait(75); - 106: 8b e4 ldi r24, 0x4B ; 75 - 108: 90 e0 ldi r25, 0x00 ; 0 - 10a: c9 df rcall .-110 ; 0x9e - DDRB=0x01; // Set PB0 pin as output for display select + 144: 8b e4 ldi r24, 0x4B ; 75 + 146: 90 e0 ldi r25, 0x00 ; 0 + 148: aa df rcall .-172 ; 0x9e - spi_masterInit(); // Initialize spi module - displayDriverInit(); // Initialize display chip + if(dir) + 14a: e1 14 cp r14, r1 + 14c: f1 04 cpc r15, r1 + 14e: 11 f0 breq .+4 ; 0x154 + intsy++; + 150: 21 96 adiw r28, 0x01 ; 1 + 152: 01 c0 rjmp .+2 ; 0x156 + else + intsy--; + 154: 21 97 sbiw r28, 0x01 ; 1 + + if(intsy < 0x06) + 156: c6 30 cpi r28, 0x06 ; 6 + 158: d1 05 cpc r29, r1 + 15a: 44 f0 brlt .+16 ; 0x16c + { + intsy = 0x06; + dir = 1; + } + else if(intsy > 0x0F) + 15c: c0 31 cpi r28, 0x10 ; 16 + 15e: d1 05 cpc r29, r1 + 160: 4c f0 brlt .+18 ; 0x174 + { + intsy = 0x0F; + dir = 0; + 162: e6 2c mov r14, r6 + 164: f7 2c mov r15, r7 + intsy = 0x06; + dir = 1; + } + else if(intsy > 0x0F) + { + intsy = 0x0F; + 166: c8 2d mov r28, r8 + 168: d9 2d mov r29, r9 + 16a: 04 c0 rjmp .+8 ; 0x174 + intsy--; + + if(intsy < 0x06) + { + intsy = 0x06; + dir = 1; + 16c: ea 2c mov r14, r10 + 16e: fb 2c mov r15, r11 + else + intsy--; + + if(intsy < 0x06) + { + intsy = 0x06; + 170: cc 2d mov r28, r12 + 172: dd 2d mov r29, r13 + { + intsy = 0x0F; + dir = 0; + } + + spi_intensity(intsy); + 174: ce 01 movw r24, r28 + 176: 5e d0 rcall .+188 ; 0x234 + + int intsy = 0; + int dir = 0; + int factor = 0; for(int i=-999; i<=9999; i++) - 10c: 21 96 adiw r28, 0x01 ; 1 - 10e: c0 31 cpi r28, 0x10 ; 16 - 110: 87 e2 ldi r24, 0x27 ; 39 - 112: d8 07 cpc r29, r24 - 114: 21 f7 brne .-56 ; 0xde - if(i > 150 && i < 250) - wait(75); + 178: 0f 5f subi r16, 0xFF ; 255 + 17a: 1f 4f sbci r17, 0xFF ; 255 + 17c: 00 31 cpi r16, 0x10 ; 16 + 17e: 87 e2 ldi r24, 0x27 ; 39 + 180: 18 07 cpc r17, r24 + 182: 61 f6 brne .-104 ; 0x11c + + spi_intensity(intsy); } + return 1; + 184: 81 e0 ldi r24, 0x01 ; 1 + 186: 90 e0 ldi r25, 0x00 ; 0 + 188: df 91 pop r29 + 18a: cf 91 pop r28 + 18c: 1f 91 pop r17 + 18e: 0f 91 pop r16 + 190: ff 90 pop r15 + 192: ef 90 pop r14 + 194: df 90 pop r13 + 196: cf 90 pop r12 + 198: bf 90 pop r11 + 19a: af 90 pop r10 + 19c: 9f 90 pop r9 + 19e: 8f 90 pop r8 + 1a0: 7f 90 pop r7 + 1a2: 6f 90 pop r6 + 1a4: 08 95 ret - 116: df 91 pop r29 - 118: cf 91 pop r28 - 11a: 08 95 ret - -0000011c
: +000001a6
: //opgaveb3(); //opgaveb4(); //test(); test2(); - 11c: d1 df rcall .-94 ; 0xc0 + 1a6: 8c df rcall .-232 ; 0xc0 return 0; } - 11e: 80 e0 ldi r24, 0x00 ; 0 - 120: 90 e0 ldi r25, 0x00 ; 0 - 122: 08 95 ret + 1a8: 80 e0 ldi r24, 0x00 ; 0 + 1aa: 90 e0 ldi r25, 0x00 ; 0 + 1ac: 08 95 ret -00000124 : +000001ae : void displayOff() { spi_slaveSelect(0); // Select display chip spi_write(0x0C); // Register 0B: Shutdown register spi_write(0x00); // -> 1 = Normal operation spi_slaveDeSelect(0); // Deselect display chip - 124: 8f ef ldi r24, 0xFF ; 255 - 126: 87 bb out 0x17, r24 ; 23 - 128: bb 98 cbi 0x17, 3 ; 23 - 12a: c0 9a sbi 0x18, 0 ; 24 - 12c: 82 e5 ldi r24, 0x52 ; 82 - 12e: 8d b9 out 0x0d, r24 ; 13 - 130: 08 95 ret + 1ae: 8f ef ldi r24, 0xFF ; 255 + 1b0: 87 bb out 0x17, r24 ; 23 + 1b2: bb 98 cbi 0x17, 3 ; 23 + 1b4: c0 9a sbi 0x18, 0 ; 24 + 1b6: 82 e5 ldi r24, 0x52 ; 82 + 1b8: 8d b9 out 0x0d, r24 ; 13 + 1ba: 08 95 ret -00000132 : - 132: 8f b9 out 0x0f, r24 ; 15 - 134: 77 9b sbis 0x0e, 7 ; 14 - 136: fe cf rjmp .-4 ; 0x134 - 138: 08 95 ret +000001bc : + 1bc: 8f b9 out 0x0f, r24 ; 15 + 1be: 77 9b sbis 0x0e, 7 ; 14 + 1c0: fe cf rjmp .-4 ; 0x1be + 1c2: 08 95 ret -0000013a : - 13a: 98 b3 in r25, 0x18 ; 24 - 13c: 21 e0 ldi r18, 0x01 ; 1 - 13e: 30 e0 ldi r19, 0x00 ; 0 - 140: 02 c0 rjmp .+4 ; 0x146 - 142: 22 0f add r18, r18 - 144: 33 1f adc r19, r19 - 146: 8a 95 dec r24 - 148: e2 f7 brpl .-8 ; 0x142 - 14a: 20 95 com r18 - 14c: 29 23 and r18, r25 - 14e: 28 bb out 0x18, r18 ; 24 - 150: 08 95 ret +000001c4 : + 1c4: 98 b3 in r25, 0x18 ; 24 + 1c6: 21 e0 ldi r18, 0x01 ; 1 + 1c8: 30 e0 ldi r19, 0x00 ; 0 + 1ca: 02 c0 rjmp .+4 ; 0x1d0 + 1cc: 22 0f add r18, r18 + 1ce: 33 1f adc r19, r19 + 1d0: 8a 95 dec r24 + 1d2: e2 f7 brpl .-8 ; 0x1cc + 1d4: 20 95 com r18 + 1d6: 29 23 and r18, r25 + 1d8: 28 bb out 0x18, r18 ; 24 + 1da: 08 95 ret -00000152 : - 152: 98 b3 in r25, 0x18 ; 24 - 154: 21 e0 ldi r18, 0x01 ; 1 - 156: 30 e0 ldi r19, 0x00 ; 0 - 158: 02 c0 rjmp .+4 ; 0x15e - 15a: 22 0f add r18, r18 - 15c: 33 1f adc r19, r19 - 15e: 8a 95 dec r24 - 160: e2 f7 brpl .-8 ; 0x15a - 162: 29 2b or r18, r25 - 164: 28 bb out 0x18, r18 ; 24 - 166: 08 95 ret +000001dc : + 1dc: 98 b3 in r25, 0x18 ; 24 + 1de: 21 e0 ldi r18, 0x01 ; 1 + 1e0: 30 e0 ldi r19, 0x00 ; 0 + 1e2: 02 c0 rjmp .+4 ; 0x1e8 + 1e4: 22 0f add r18, r18 + 1e6: 33 1f adc r19, r19 + 1e8: 8a 95 dec r24 + 1ea: e2 f7 brpl .-8 ; 0x1e4 + 1ec: 29 2b or r18, r25 + 1ee: 28 bb out 0x18, r18 ; 24 + 1f0: 08 95 ret -00000168 : - 168: 80 e0 ldi r24, 0x00 ; 0 - 16a: e7 df rcall .-50 ; 0x13a - 16c: 89 e0 ldi r24, 0x09 ; 9 - 16e: e1 df rcall .-62 ; 0x132 - 170: 8f ef ldi r24, 0xFF ; 255 - 172: df df rcall .-66 ; 0x132 - 174: 80 e0 ldi r24, 0x00 ; 0 - 176: ed df rcall .-38 ; 0x152 - 178: 80 e0 ldi r24, 0x00 ; 0 - 17a: df df rcall .-66 ; 0x13a - 17c: 8a e0 ldi r24, 0x0A ; 10 - 17e: d9 df rcall .-78 ; 0x132 - 180: 8f e0 ldi r24, 0x0F ; 15 - 182: d7 df rcall .-82 ; 0x132 - 184: 80 e0 ldi r24, 0x00 ; 0 - 186: e5 df rcall .-54 ; 0x152 - 188: 80 e0 ldi r24, 0x00 ; 0 - 18a: d7 df rcall .-82 ; 0x13a - 18c: 8b e0 ldi r24, 0x0B ; 11 - 18e: d1 df rcall .-94 ; 0x132 - 190: 83 e0 ldi r24, 0x03 ; 3 - 192: cf df rcall .-98 ; 0x132 - 194: 80 e0 ldi r24, 0x00 ; 0 - 196: dd df rcall .-70 ; 0x152 - 198: 80 e0 ldi r24, 0x00 ; 0 - 19a: cf df rcall .-98 ; 0x13a - 19c: 8c e0 ldi r24, 0x0C ; 12 - 19e: c9 df rcall .-110 ; 0x132 - 1a0: 81 e0 ldi r24, 0x01 ; 1 - 1a2: c7 df rcall .-114 ; 0x132 - 1a4: 80 e0 ldi r24, 0x00 ; 0 - 1a6: d5 cf rjmp .-86 ; 0x152 - 1a8: 08 95 ret +000001f2 : + 1f2: 80 e0 ldi r24, 0x00 ; 0 + 1f4: e7 df rcall .-50 ; 0x1c4 + 1f6: 89 e0 ldi r24, 0x09 ; 9 + 1f8: e1 df rcall .-62 ; 0x1bc + 1fa: 8f ef ldi r24, 0xFF ; 255 + 1fc: df df rcall .-66 ; 0x1bc + 1fe: 80 e0 ldi r24, 0x00 ; 0 + 200: ed df rcall .-38 ; 0x1dc + 202: 80 e0 ldi r24, 0x00 ; 0 + 204: df df rcall .-66 ; 0x1c4 + 206: 8a e0 ldi r24, 0x0A ; 10 + 208: d9 df rcall .-78 ; 0x1bc + 20a: 8f e0 ldi r24, 0x0F ; 15 + 20c: d7 df rcall .-82 ; 0x1bc + 20e: 80 e0 ldi r24, 0x00 ; 0 + 210: e5 df rcall .-54 ; 0x1dc + 212: 80 e0 ldi r24, 0x00 ; 0 + 214: d7 df rcall .-82 ; 0x1c4 + 216: 8b e0 ldi r24, 0x0B ; 11 + 218: d1 df rcall .-94 ; 0x1bc + 21a: 83 e0 ldi r24, 0x03 ; 3 + 21c: cf df rcall .-98 ; 0x1bc + 21e: 80 e0 ldi r24, 0x00 ; 0 + 220: dd df rcall .-70 ; 0x1dc + 222: 80 e0 ldi r24, 0x00 ; 0 + 224: cf df rcall .-98 ; 0x1c4 + 226: 8c e0 ldi r24, 0x0C ; 12 + 228: c9 df rcall .-110 ; 0x1bc + 22a: 81 e0 ldi r24, 0x01 ; 1 + 22c: c7 df rcall .-114 ; 0x1bc + 22e: 80 e0 ldi r24, 0x00 ; 0 + 230: d5 cf rjmp .-86 ; 0x1dc + 232: 08 95 ret -000001aa : +00000234 : + 234: cf 93 push r28 + 236: df 93 push r29 + 238: ec 01 movw r28, r24 + 23a: 99 23 and r25, r25 + 23c: 14 f4 brge .+4 ; 0x242 + 23e: c0 e0 ldi r28, 0x00 ; 0 + 240: d0 e0 ldi r29, 0x00 ; 0 + 242: 80 e0 ldi r24, 0x00 ; 0 + 244: bf df rcall .-130 ; 0x1c4 + 246: 8a e0 ldi r24, 0x0A ; 10 + 248: b9 df rcall .-142 ; 0x1bc + 24a: ce 01 movw r24, r28 + 24c: 60 97 sbiw r28, 0x10 ; 16 + 24e: 14 f0 brlt .+4 ; 0x254 + 250: 8f e0 ldi r24, 0x0F ; 15 + 252: 90 e0 ldi r25, 0x00 ; 0 + 254: b3 df rcall .-154 ; 0x1bc + 256: 80 e0 ldi r24, 0x00 ; 0 + 258: c1 df rcall .-126 ; 0x1dc + 25a: df 91 pop r29 + 25c: cf 91 pop r28 + 25e: 08 95 ret + +00000260 : } void spi_writeWord( unsigned char adress, unsigned char data ) { - 1aa: cf 93 push r28 - 1ac: df 93 push r29 - 1ae: d8 2f mov r29, r24 - 1b0: c6 2f mov r28, r22 + 260: cf 93 push r28 + 262: df 93 push r29 + 264: d8 2f mov r29, r24 + 266: c6 2f mov r28, r22 spi_slaveSelect(0); // Select display chip - 1b2: 80 e0 ldi r24, 0x00 ; 0 - 1b4: c2 df rcall .-124 ; 0x13a + 268: 80 e0 ldi r24, 0x00 ; 0 + 26a: ac df rcall .-168 ; 0x1c4 spi_write(adress); // Write address - 1b6: 8d 2f mov r24, r29 - 1b8: bc df rcall .-136 ; 0x132 + 26c: 8d 2f mov r24, r29 + 26e: a6 df rcall .-180 ; 0x1bc spi_write(data); // Write data - 1ba: 8c 2f mov r24, r28 - 1bc: ba df rcall .-140 ; 0x132 + 270: 8c 2f mov r24, r28 + 272: a4 df rcall .-184 ; 0x1bc spi_slaveDeSelect(0); // Deselect display chip - 1be: 80 e0 ldi r24, 0x00 ; 0 - 1c0: c8 df rcall .-112 ; 0x152 + 274: 80 e0 ldi r24, 0x00 ; 0 + 276: b2 df rcall .-156 ; 0x1dc } - 1c2: df 91 pop r29 - 1c4: cf 91 pop r28 - 1c6: 08 95 ret + 278: df 91 pop r29 + 27a: cf 91 pop r28 + 27c: 08 95 ret -000001c8 : +0000027e : void writeLedDisplay( int value ) { - 1c8: cf 93 push r28 - 1ca: df 93 push r29 + 27e: cf 93 push r28 + 280: df 93 push r29 if(value > 9999 || value < -999) - 1cc: 9c 01 movw r18, r24 - 1ce: 29 51 subi r18, 0x19 ; 25 - 1d0: 3c 4f sbci r19, 0xFC ; 252 - 1d2: 27 3f cpi r18, 0xF7 ; 247 - 1d4: 3a 42 sbci r19, 0x2A ; 42 - 1d6: 08 f5 brcc .+66 ; 0x21a + 282: 9c 01 movw r18, r24 + 284: 29 51 subi r18, 0x19 ; 25 + 286: 3c 4f sbci r19, 0xFC ; 252 + 288: 27 3f cpi r18, 0xF7 ; 247 + 28a: 3a 42 sbci r19, 0x2A ; 42 + 28c: 08 f5 brcc .+66 ; 0x2d0 return; if(value < 0) - 1d8: 99 23 and r25, r25 - 1da: 44 f4 brge .+16 ; 0x1ec + 28e: 99 23 and r25, r25 + 290: 44 f4 brge .+16 ; 0x2a2 { value = value - (value + value); - 1dc: cc 27 eor r28, r28 - 1de: dd 27 eor r29, r29 - 1e0: c8 1b sub r28, r24 - 1e2: d9 0b sbc r29, r25 + 292: cc 27 eor r28, r28 + 294: dd 27 eor r29, r29 + 296: c8 1b sub r28, r24 + 298: d9 0b sbc r29, r25 spi_writeWord(4, 10); - 1e4: 6a e0 ldi r22, 0x0A ; 10 - 1e6: 84 e0 ldi r24, 0x04 ; 4 - 1e8: e0 df rcall .-64 ; 0x1aa - 1ea: 06 c0 rjmp .+12 ; 0x1f8 + 29a: 6a e0 ldi r22, 0x0A ; 10 + 29c: 84 e0 ldi r24, 0x04 ; 4 + 29e: e0 df rcall .-64 ; 0x260 + 2a0: 06 c0 rjmp .+12 ; 0x2ae } else { //Display 4 int d4 = value / 1000; value = value % 1000; - 1ec: 68 ee ldi r22, 0xE8 ; 232 - 1ee: 73 e0 ldi r23, 0x03 ; 3 - 1f0: 17 d0 rcall .+46 ; 0x220 <__divmodhi4> - 1f2: ec 01 movw r28, r24 + 2a2: 68 ee ldi r22, 0xE8 ; 232 + 2a4: 73 e0 ldi r23, 0x03 ; 3 + 2a6: 17 d0 rcall .+46 ; 0x2d6 <__divmodhi4> + 2a8: ec 01 movw r28, r24 spi_writeWord(4, d4); - 1f4: 84 e0 ldi r24, 0x04 ; 4 - 1f6: d9 df rcall .-78 ; 0x1aa + 2aa: 84 e0 ldi r24, 0x04 ; 4 + 2ac: d9 df rcall .-78 ; 0x260 } //Display 3 int d3 = value / 100; value = value % 100; - 1f8: ce 01 movw r24, r28 - 1fa: 64 e6 ldi r22, 0x64 ; 100 - 1fc: 70 e0 ldi r23, 0x00 ; 0 - 1fe: 10 d0 rcall .+32 ; 0x220 <__divmodhi4> - 200: ec 01 movw r28, r24 + 2ae: ce 01 movw r24, r28 + 2b0: 64 e6 ldi r22, 0x64 ; 100 + 2b2: 70 e0 ldi r23, 0x00 ; 0 + 2b4: 10 d0 rcall .+32 ; 0x2d6 <__divmodhi4> + 2b6: ec 01 movw r28, r24 spi_writeWord(3, d3); - 202: 83 e0 ldi r24, 0x03 ; 3 - 204: d2 df rcall .-92 ; 0x1aa + 2b8: 83 e0 ldi r24, 0x03 ; 3 + 2ba: d2 df rcall .-92 ; 0x260 //Display 2 int d2 = value / 10; - 206: ce 01 movw r24, r28 - 208: 6a e0 ldi r22, 0x0A ; 10 - 20a: 70 e0 ldi r23, 0x00 ; 0 - 20c: 09 d0 rcall .+18 ; 0x220 <__divmodhi4> - 20e: c8 2f mov r28, r24 + 2bc: ce 01 movw r24, r28 + 2be: 6a e0 ldi r22, 0x0A ; 10 + 2c0: 70 e0 ldi r23, 0x00 ; 0 + 2c2: 09 d0 rcall .+18 ; 0x2d6 <__divmodhi4> + 2c4: c8 2f mov r28, r24 value = value % 10; spi_writeWord(2, d2); - 210: 82 e0 ldi r24, 0x02 ; 2 - 212: cb df rcall .-106 ; 0x1aa + 2c6: 82 e0 ldi r24, 0x02 ; 2 + 2c8: cb df rcall .-106 ; 0x260 //Display 1 int d1 = value; spi_writeWord(1, d1); - 214: 6c 2f mov r22, r28 - 216: 81 e0 ldi r24, 0x01 ; 1 - 218: c8 df rcall .-112 ; 0x1aa - 21a: df 91 pop r29 - 21c: cf 91 pop r28 - 21e: 08 95 ret + 2ca: 6c 2f mov r22, r28 + 2cc: 81 e0 ldi r24, 0x01 ; 1 + 2ce: c8 df rcall .-112 ; 0x260 + 2d0: df 91 pop r29 + 2d2: cf 91 pop r28 + 2d4: 08 95 ret -00000220 <__divmodhi4>: - 220: 97 fb bst r25, 7 - 222: 07 2e mov r0, r23 - 224: 16 f4 brtc .+4 ; 0x22a <__divmodhi4+0xa> - 226: 00 94 com r0 - 228: 06 d0 rcall .+12 ; 0x236 <__divmodhi4_neg1> - 22a: 77 fd sbrc r23, 7 - 22c: 08 d0 rcall .+16 ; 0x23e <__divmodhi4_neg2> - 22e: 0b d0 rcall .+22 ; 0x246 <__udivmodhi4> - 230: 07 fc sbrc r0, 7 - 232: 05 d0 rcall .+10 ; 0x23e <__divmodhi4_neg2> - 234: 3e f4 brtc .+14 ; 0x244 <__divmodhi4_exit> +000002d6 <__divmodhi4>: + 2d6: 97 fb bst r25, 7 + 2d8: 07 2e mov r0, r23 + 2da: 16 f4 brtc .+4 ; 0x2e0 <__divmodhi4+0xa> + 2dc: 00 94 com r0 + 2de: 06 d0 rcall .+12 ; 0x2ec <__divmodhi4_neg1> + 2e0: 77 fd sbrc r23, 7 + 2e2: 08 d0 rcall .+16 ; 0x2f4 <__divmodhi4_neg2> + 2e4: 0b d0 rcall .+22 ; 0x2fc <__udivmodhi4> + 2e6: 07 fc sbrc r0, 7 + 2e8: 05 d0 rcall .+10 ; 0x2f4 <__divmodhi4_neg2> + 2ea: 3e f4 brtc .+14 ; 0x2fa <__divmodhi4_exit> -00000236 <__divmodhi4_neg1>: - 236: 90 95 com r25 - 238: 81 95 neg r24 - 23a: 9f 4f sbci r25, 0xFF ; 255 - 23c: 08 95 ret +000002ec <__divmodhi4_neg1>: + 2ec: 90 95 com r25 + 2ee: 81 95 neg r24 + 2f0: 9f 4f sbci r25, 0xFF ; 255 + 2f2: 08 95 ret -0000023e <__divmodhi4_neg2>: - 23e: 70 95 com r23 - 240: 61 95 neg r22 - 242: 7f 4f sbci r23, 0xFF ; 255 +000002f4 <__divmodhi4_neg2>: + 2f4: 70 95 com r23 + 2f6: 61 95 neg r22 + 2f8: 7f 4f sbci r23, 0xFF ; 255 -00000244 <__divmodhi4_exit>: - 244: 08 95 ret +000002fa <__divmodhi4_exit>: + 2fa: 08 95 ret -00000246 <__udivmodhi4>: - 246: aa 1b sub r26, r26 - 248: bb 1b sub r27, r27 - 24a: 51 e1 ldi r21, 0x11 ; 17 - 24c: 07 c0 rjmp .+14 ; 0x25c <__udivmodhi4_ep> +000002fc <__udivmodhi4>: + 2fc: aa 1b sub r26, r26 + 2fe: bb 1b sub r27, r27 + 300: 51 e1 ldi r21, 0x11 ; 17 + 302: 07 c0 rjmp .+14 ; 0x312 <__udivmodhi4_ep> -0000024e <__udivmodhi4_loop>: - 24e: aa 1f adc r26, r26 - 250: bb 1f adc r27, r27 - 252: a6 17 cp r26, r22 - 254: b7 07 cpc r27, r23 - 256: 10 f0 brcs .+4 ; 0x25c <__udivmodhi4_ep> - 258: a6 1b sub r26, r22 - 25a: b7 0b sbc r27, r23 +00000304 <__udivmodhi4_loop>: + 304: aa 1f adc r26, r26 + 306: bb 1f adc r27, r27 + 308: a6 17 cp r26, r22 + 30a: b7 07 cpc r27, r23 + 30c: 10 f0 brcs .+4 ; 0x312 <__udivmodhi4_ep> + 30e: a6 1b sub r26, r22 + 310: b7 0b sbc r27, r23 -0000025c <__udivmodhi4_ep>: - 25c: 88 1f adc r24, r24 - 25e: 99 1f adc r25, r25 - 260: 5a 95 dec r21 - 262: a9 f7 brne .-22 ; 0x24e <__udivmodhi4_loop> - 264: 80 95 com r24 - 266: 90 95 com r25 - 268: bc 01 movw r22, r24 - 26a: cd 01 movw r24, r26 - 26c: 08 95 ret +00000312 <__udivmodhi4_ep>: + 312: 88 1f adc r24, r24 + 314: 99 1f adc r25, r25 + 316: 5a 95 dec r21 + 318: a9 f7 brne .-22 ; 0x304 <__udivmodhi4_loop> + 31a: 80 95 com r24 + 31c: 90 95 com r25 + 31e: bc 01 movw r22, r24 + 320: cd 01 movw r24, r26 + 322: 08 95 ret -0000026e <_exit>: - 26e: f8 94 cli +00000324 <_exit>: + 324: f8 94 cli -00000270 <__stop_program>: - 270: ff cf rjmp .-2 ; 0x270 <__stop_program> +00000326 <__stop_program>: + 326: ff cf rjmp .-2 ; 0x326 <__stop_program> diff --git a/MIC-Week5/Debug/MIC-Week5.map b/MIC-Week5/Debug/MIC-Week5.map index 37ed8b3..871d73e 100644 --- a/MIC-Week5/Debug/MIC-Week5.map +++ b/MIC-Week5/Debug/MIC-Week5.map @@ -247,7 +247,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x00000000 0x272 +.text 0x00000000 0x328 *(.vectors) .vectors 0x00000000 0x8c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o 0x00000000 __vector_default @@ -339,43 +339,46 @@ END GROUP *(.text.*) .text.wait 0x0000009e 0x22 main.o 0x0000009e wait - .text.test2 0x000000c0 0x5c main.o + .text.test2 0x000000c0 0xe6 main.o 0x000000c0 test2 - .text.main 0x0000011c 0x8 main.o - 0x0000011c main + .text.main 0x000001a6 0x8 main.o + 0x000001a6 main .text.spi_masterInit - 0x00000124 0xe spi.o - 0x00000124 spi_masterInit + 0x000001ae 0xe spi.o + 0x000001ae spi_masterInit .text.spi_write - 0x00000132 0x8 spi.o - 0x00000132 spi_write + 0x000001bc 0x8 spi.o + 0x000001bc spi_write .text.spi_slaveSelect - 0x0000013a 0x18 spi.o - 0x0000013a spi_slaveSelect + 0x000001c4 0x18 spi.o + 0x000001c4 spi_slaveSelect .text.spi_slaveDeSelect - 0x00000152 0x16 spi.o - 0x00000152 spi_slaveDeSelect + 0x000001dc 0x16 spi.o + 0x000001dc spi_slaveDeSelect .text.displayDriverInit - 0x00000168 0x42 spi.o - 0x00000168 displayDriverInit + 0x000001f2 0x42 spi.o + 0x000001f2 displayDriverInit + .text.spi_intensity + 0x00000234 0x2c spi.o + 0x00000234 spi_intensity .text.spi_writeWord - 0x000001aa 0x1e spi.o - 0x000001aa spi_writeWord + 0x00000260 0x1e spi.o + 0x00000260 spi_writeWord .text.writeLedDisplay - 0x000001c8 0x58 spi.o - 0x000001c8 writeLedDisplay + 0x0000027e 0x58 spi.o + 0x0000027e writeLedDisplay .text.libgcc.div - 0x00000220 0x26 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_divmodhi4.o) - 0x00000220 _div - 0x00000220 __divmodhi4 + 0x000002d6 0x26 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_divmodhi4.o) + 0x000002d6 _div + 0x000002d6 __divmodhi4 .text.libgcc.div - 0x00000246 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_udivmodhi4.o) - 0x00000246 __udivmodhi4 - 0x0000026e . = ALIGN (0x2) + 0x000002fc 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_udivmodhi4.o) + 0x000002fc __udivmodhi4 + 0x00000324 . = ALIGN (0x2) *(.fini9) - .fini9 0x0000026e 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o) - 0x0000026e _exit - 0x0000026e exit + .fini9 0x00000324 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o) + 0x00000324 _exit + 0x00000324 exit *(.fini9) *(.fini8) *(.fini8) @@ -394,11 +397,11 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x0000026e 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o) + .fini0 0x00000324 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o) *(.fini0) - 0x00000272 _etext = . + 0x00000328 _etext = . -.data 0x00800100 0x0 load address 0x00000272 +.data 0x00800100 0x0 load address 0x00000328 0x00800100 PROVIDE (__data_start, .) *(.data) *(.data*) @@ -415,8 +418,8 @@ END GROUP *(.bss*) *(COMMON) 0x00800100 PROVIDE (__bss_end, .) - 0x00000272 __data_load_start = LOADADDR (.data) - 0x00000272 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00000328 __data_load_start = LOADADDR (.data) + 0x00000328 __data_load_end = (__data_load_start + SIZEOF (.data)) .noinit 0x00800100 0x0 0x00800100 PROVIDE (__noinit_start, .) @@ -488,47 +491,47 @@ END GROUP .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0xc0 +.debug_aranges 0x00000000 0xc8 *(.debug_aranges) .debug_aranges 0x00000000 0x58 main.o .debug_aranges - 0x00000058 0x68 spi.o + 0x00000058 0x70 spi.o .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0xcbd +.debug_info 0x00000000 0xd78 *(.debug_info .gnu.linkonce.wi.*) - .debug_info 0x00000000 0x835 main.o - .debug_info 0x00000835 0x488 spi.o + .debug_info 0x00000000 0x888 main.o + .debug_info 0x00000888 0x4f0 spi.o -.debug_abbrev 0x00000000 0x327 +.debug_abbrev 0x00000000 0x359 *(.debug_abbrev) - .debug_abbrev 0x00000000 0x1ed main.o - .debug_abbrev 0x000001ed 0x13a spi.o + .debug_abbrev 0x00000000 0x214 main.o + .debug_abbrev 0x00000214 0x145 spi.o -.debug_line 0x00000000 0x66f +.debug_line 0x00000000 0x702 *(.debug_line .debug_line.* .debug_line_end) - .debug_line 0x00000000 0x3f5 main.o - .debug_line 0x000003f5 0x27a spi.o + .debug_line 0x00000000 0x459 main.o + .debug_line 0x00000459 0x2a9 spi.o -.debug_frame 0x00000000 0x190 +.debug_frame 0x00000000 0x1e8 *(.debug_frame) - .debug_frame 0x00000000 0xc4 main.o - .debug_frame 0x000000c4 0xcc spi.o + .debug_frame 0x00000000 0x100 main.o + .debug_frame 0x00000100 0xe8 spi.o -.debug_str 0x00000000 0x2e3 +.debug_str 0x00000000 0x2fe *(.debug_str) - .debug_str 0x00000000 0x28a main.o - 0x2c3 (size before relaxing) - .debug_str 0x0000028a 0x59 spi.o - 0x20a (size before relaxing) + .debug_str 0x00000000 0x2a5 main.o + 0x2de (size before relaxing) + .debug_str 0x000002a5 0x59 spi.o + 0x222 (size before relaxing) -.debug_loc 0x00000000 0x43c +.debug_loc 0x00000000 0x5d2 *(.debug_loc) - .debug_loc 0x00000000 0x235 main.o - .debug_loc 0x00000235 0x207 spi.o + .debug_loc 0x00000000 0x369 main.o + .debug_loc 0x00000369 0x269 spi.o .debug_macinfo *(.debug_macinfo) @@ -548,10 +551,10 @@ END GROUP .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0xa0 +.debug_ranges 0x00000000 0xc0 *(.debug_ranges) - .debug_ranges 0x00000000 0x48 main.o - .debug_ranges 0x00000048 0x58 spi.o + .debug_ranges 0x00000000 0x60 main.o + .debug_ranges 0x00000060 0x60 spi.o .debug_macro *(.debug_macro) diff --git a/MIC-Week5/Debug/MIC-Week5.srec b/MIC-Week5/Debug/MIC-Week5.srec index dfd7aff..8f4bb11 100644 --- a/MIC-Week5/Debug/MIC-Week5.srec +++ b/MIC-Week5/Debug/MIC-Week5.srec @@ -8,35 +8,46 @@ S113005025C0000023C0000021C000001FC0000014 S11300601DC000001BC0000019C0000017C0000024 S113007015C0000013C0000011C000000FC0000034 S11300800DC000000BC0000009C0000011241FBEF9 -S1130090CFEFD0E1DEBFCDBF41D0E9C0B1CF18165C +S1130090CFEFD0E1DEBFCDBF86D044C1B1CF1816BB S11300A019066CF420E030E0EFECF7E03197F1F75B S11300B000C000002F5F3F4F28173907A9F70895A4 -S11300C0CF93DF9381E087BB2DD04ED089E19CEFA5 -S11300D07BD085E090E0E3DFC9E1DCEF0EC0CE0128 -S11300E073D085E090E0DBDFCE0187509F4F8336ED -S11300F0910518F48BE490E0D2DFCE018759910981 -S11301008336910518F48BE490E0C9DF2196C03161 -S113011087E2D80721F7DF91CF910895D1DF80E0FE -S113012090E008958FEF87BBBB98C09A82E58DB9A4 -S113013008958FB9779BFECF089598B321E030E0FE -S113014002C0220F331F8A95E2F72095292328BB8A -S1130150089598B321E030E002C0220F331F8A953E -S1130160E2F7292B28BB089580E0E7DF89E0E1DF8F -S11301708FEFDFDF80E0EDDF80E0DFDF8AE0D9DFD3 -S11301808FE0D7DF80E0E5DF80E0D7DF8BE0D1DFF1 -S113019083E0CFDF80E0DDDF80E0CFDF8CE0C9DF0C -S11301A081E0C7DF80E0D5CF0895CF93DF93D82FC8 -S11301B0C62F80E0C2DF8D2FBCDF8C2FBADF80E03A -S11301C0C8DFDF91CF910895CF93DF939C0129512C -S11301D03C4F273F3A4208F5992344F4CC27DD27C6 -S11301E0C81BD90B6AE084E0E0DF06C068EE73E068 -S11301F017D0EC0184E0D9DFCE0164E670E010D0C2 -S1130200EC0183E0D2DFCE016AE070E009D0C82FB0 -S113021082E0CBDF6C2F81E0C8DFDF91CF910895BE -S113022097FB072E16F4009406D077FD08D00BD068 -S113023007FC05D03EF4909581959F4F08957095E5 -S113024061957F4F0895AA1BBB1B51E107C0AA1FEC -S1130250BB1FA617B70710F0A61BB70B881F991F63 -S11302605A95A9F780959095BC01CD010895F8940D -S1050270FFCFBA +S11300C06F927F928F929F92AF92BF92CF92DF9264 +S11300D0EF92FF920F931F93CF93DF9381E087BB3F +S11300E066D087D089E19CEFCAD085E090E0D7DF65 +S11300F009E11CEFE12CF12CC0E0D0E0AA24A39488 +S1130100B12C0F2EF6E0CF2EF02DD12C612C712CBA +S11301100F2EFFE08F2EF02D912C0EC0C801AFD012 +S113012085E090E0BCDFC80187509F4F833691057E +S113013018F48BE490E0B3DFC80187599109833642 +S1130140910518F48BE490E0AADFE114F10411F0B6 +S1130150219601C02197C630D10544F0C031D105A4 +S11301604CF0E62CF72CC82DD92D04C0EA2CFB2C1E +S1130170CC2DDD2DCE015ED00F5F1F4F003187E205 +S1130180180761F681E090E0DF91CF911F910F9104 +S1130190FF90EF90DF90CF90BF90AF909F908F90A3 +S11301A07F906F9008958CDF80E090E008958FEF4A +S11301B087BBBB98C09A82E58DB908958FB9779BA8 +S11301C0FECF089598B321E030E002C0220F331F20 +S11301D08A95E2F72095292328BB089598B321E056 +S11301E030E002C0220F331F8A95E2F7292B28BB87 +S11301F0089580E0E7DF89E0E1DF8FEFDFDF80E073 +S1130200EDDF80E0DFDF8AE0D9DF8FE0D7DF80E059 +S1130210E5DF80E0D7DF8BE0D1DF83E0CFDF80E074 +S1130220DDDF80E0CFDF8CE0C9DF81E0C7DF80E085 +S1130230D5CF0895CF93DF93EC01992314F4C0E054 +S1130240D0E080E0BFDF8AE0B9DFCE01609714F030 +S11302508FE090E0B3DF80E0C1DFDF91CF910895BC +S1130260CF93DF93D82FC62F80E0ACDF8D2FA6DF8E +S11302708C2FA4DF80E0B2DFDF91CF910895CF937C +S1130280DF939C0129513C4F273F3A4208F59923BB +S113029044F4CC27DD27C81BD90B6AE084E0E0DFF7 +S11302A006C068EE73E017D0EC0184E0D9DFCE011C +S11302B064E670E010D0EC0183E0D2DFCE016AE0A6 +S11302C070E009D0C82F82E0CBDF6C2F81E0C8DF5B +S11302D0DF91CF91089597FB072E16F4009406D072 +S11302E077FD08D00BD007FC05D03EF4909581959E +S11302F09F4F0895709561957F4F0895AA1BBB1B6E +S113030051E107C0AA1FBB1FA617B70710F0A61B11 +S1130310B70B881F991F5A95A9F780959095BC0132 +S10B0320CD010895F894FFCF0C S9030000FC diff --git a/MIC-Week5/main.c b/MIC-Week5/main.c index f258215..1a15ca8 100644 --- a/MIC-Week5/main.c +++ b/MIC-Week5/main.c @@ -183,6 +183,10 @@ int test2(void) spi_masterInit(); // Initialize spi module displayDriverInit(); // Initialize display chip + int intsy = 0; + int dir = 0; + int factor = 0; + for(int i=-999; i<=9999; i++) { writeLedDisplay(i); @@ -193,7 +197,25 @@ int test2(void) if(i > 150 && i < 250) wait(75); + + if(dir) + intsy++; + else + intsy--; + + if(intsy < 0x06) + { + intsy = 0x06; + dir = 1; + } + else if(intsy > 0x0F) + { + intsy = 0x0F; + dir = 0; + } + + spi_intensity(intsy); } - + return 1; } \ No newline at end of file diff --git a/MIC-Week5/spi.c b/MIC-Week5/spi.c index 11d04b9..441c630 100644 --- a/MIC-Week5/spi.c +++ b/MIC-Week5/spi.c @@ -86,6 +86,20 @@ void displayOn() spi_slaveDeSelect(0); // Deselect display chip } +void spi_intensity(int intensity) +{ + if(intensity < 0) + intensity = 0; + + if(intensity > 0x0F) + intensity = 0x0F; + + spi_slaveSelect(0); // Select dispaly chip + spi_write(0x0A); // Register 0A: Intensity + spi_write(intensity); // -> Level 4 (in range [1..F]) + spi_slaveDeSelect(0); // Deselect display chip +} + // Set display off ('shut down') void displayOff() { diff --git a/MIC-Week5/spi.h b/MIC-Week5/spi.h index 915addc..47846fd 100644 --- a/MIC-Week5/spi.h +++ b/MIC-Week5/spi.h @@ -35,6 +35,7 @@ void spi_write( unsigned char ); char spi_writeRead( unsigned char ); void spi_slaveSelect(unsigned char); void spi_slaveDeSelect(unsigned char); +void spi_intensity(int); void displayDriverInit(); void displayOn(); void displayOff();