diff --git a/MIC-Week1/.vs/MIC-Week1/v14/.atsuo b/MIC-Week1/.vs/MIC-Week1/v14/.atsuo index fecfe89..e86099e 100644 Binary files a/MIC-Week1/.vs/MIC-Week1/v14/.atsuo and b/MIC-Week1/.vs/MIC-Week1/v14/.atsuo differ diff --git a/MIC-Week1/Debug/MIC-Week1.lss b/MIC-Week1/Debug/MIC-Week1.lss index 1e76538..53b8cd8 100644 --- a/MIC-Week1/Debug/MIC-Week1.lss +++ b/MIC-Week1/Debug/MIC-Week1.lss @@ -3,29 +3,31 @@ MIC-Week1.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000000 00800100 00800100 0000013e 2**0 + 0 .data 00000002 00800100 00000226 000002ba 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 000000ea 00000000 00000000 00000054 2**1 + 1 .text 00000226 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .comment 00000030 00000000 00000000 0000013e 2**0 + 2 .bss 00000006 00800102 00800102 000002bc 2**0 + ALLOC + 3 .comment 00000030 00000000 00000000 000002bc 2**0 CONTENTS, READONLY - 3 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000170 2**2 + 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000002ec 2**2 CONTENTS, READONLY - 4 .debug_aranges 00000040 00000000 00000000 000001ac 2**0 + 5 .debug_aranges 00000068 00000000 00000000 00000328 2**0 CONTENTS, READONLY, DEBUGGING - 5 .debug_info 00000242 00000000 00000000 000001ec 2**0 + 6 .debug_info 000003fa 00000000 00000000 00000390 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_abbrev 00000161 00000000 00000000 0000042e 2**0 + 7 .debug_abbrev 000001cb 00000000 00000000 0000078a 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_line 000001cf 00000000 00000000 0000058f 2**0 + 8 .debug_line 00000333 00000000 00000000 00000955 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_frame 00000070 00000000 00000000 00000760 2**2 + 9 .debug_frame 000000dc 00000000 00000000 00000c88 2**2 CONTENTS, READONLY, DEBUGGING - 9 .debug_str 00000194 00000000 00000000 000007d0 2**0 + 10 .debug_str 00000207 00000000 00000000 00000d64 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_loc 000000cf 00000000 00000000 00000964 2**0 + 11 .debug_loc 00000163 00000000 00000000 00000f6b 2**0 CONTENTS, READONLY, DEBUGGING - 11 .debug_ranges 00000030 00000000 00000000 00000a33 2**0 + 12 .debug_ranges 00000058 00000000 00000000 000010ce 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -33,73 +35,73 @@ Disassembly of section .text: 00000000 <__vectors>: 0: 45 c0 rjmp .+138 ; 0x8c <__ctors_end> 2: 00 00 nop - 4: 4b c0 rjmp .+150 ; 0x9c <__bad_interrupt> + 4: 60 c0 rjmp .+192 ; 0xc6 <__bad_interrupt> 6: 00 00 nop - 8: 49 c0 rjmp .+146 ; 0x9c <__bad_interrupt> + 8: 5e c0 rjmp .+188 ; 0xc6 <__bad_interrupt> a: 00 00 nop - c: 47 c0 rjmp .+142 ; 0x9c <__bad_interrupt> + c: 5c c0 rjmp .+184 ; 0xc6 <__bad_interrupt> e: 00 00 nop - 10: 45 c0 rjmp .+138 ; 0x9c <__bad_interrupt> + 10: 5a c0 rjmp .+180 ; 0xc6 <__bad_interrupt> 12: 00 00 nop - 14: 43 c0 rjmp .+134 ; 0x9c <__bad_interrupt> + 14: 58 c0 rjmp .+176 ; 0xc6 <__bad_interrupt> 16: 00 00 nop - 18: 41 c0 rjmp .+130 ; 0x9c <__bad_interrupt> + 18: 56 c0 rjmp .+172 ; 0xc6 <__bad_interrupt> 1a: 00 00 nop - 1c: 3f c0 rjmp .+126 ; 0x9c <__bad_interrupt> + 1c: 54 c0 rjmp .+168 ; 0xc6 <__bad_interrupt> 1e: 00 00 nop - 20: 3d c0 rjmp .+122 ; 0x9c <__bad_interrupt> + 20: 52 c0 rjmp .+164 ; 0xc6 <__bad_interrupt> 22: 00 00 nop - 24: 3b c0 rjmp .+118 ; 0x9c <__bad_interrupt> + 24: 50 c0 rjmp .+160 ; 0xc6 <__bad_interrupt> 26: 00 00 nop - 28: 39 c0 rjmp .+114 ; 0x9c <__bad_interrupt> + 28: 4e c0 rjmp .+156 ; 0xc6 <__bad_interrupt> 2a: 00 00 nop - 2c: 37 c0 rjmp .+110 ; 0x9c <__bad_interrupt> + 2c: 4c c0 rjmp .+152 ; 0xc6 <__bad_interrupt> 2e: 00 00 nop - 30: 35 c0 rjmp .+106 ; 0x9c <__bad_interrupt> + 30: 4a c0 rjmp .+148 ; 0xc6 <__bad_interrupt> 32: 00 00 nop - 34: 33 c0 rjmp .+102 ; 0x9c <__bad_interrupt> + 34: 48 c0 rjmp .+144 ; 0xc6 <__bad_interrupt> 36: 00 00 nop - 38: 31 c0 rjmp .+98 ; 0x9c <__bad_interrupt> + 38: 46 c0 rjmp .+140 ; 0xc6 <__bad_interrupt> 3a: 00 00 nop - 3c: 2f c0 rjmp .+94 ; 0x9c <__bad_interrupt> + 3c: 44 c0 rjmp .+136 ; 0xc6 <__bad_interrupt> 3e: 00 00 nop - 40: 2d c0 rjmp .+90 ; 0x9c <__bad_interrupt> + 40: 68 c0 rjmp .+208 ; 0x112 <__vector_16> 42: 00 00 nop - 44: 2b c0 rjmp .+86 ; 0x9c <__bad_interrupt> + 44: 40 c0 rjmp .+128 ; 0xc6 <__bad_interrupt> 46: 00 00 nop - 48: 29 c0 rjmp .+82 ; 0x9c <__bad_interrupt> + 48: 3e c0 rjmp .+124 ; 0xc6 <__bad_interrupt> 4a: 00 00 nop - 4c: 27 c0 rjmp .+78 ; 0x9c <__bad_interrupt> + 4c: 3c c0 rjmp .+120 ; 0xc6 <__bad_interrupt> 4e: 00 00 nop - 50: 25 c0 rjmp .+74 ; 0x9c <__bad_interrupt> + 50: 3a c0 rjmp .+116 ; 0xc6 <__bad_interrupt> 52: 00 00 nop - 54: 23 c0 rjmp .+70 ; 0x9c <__bad_interrupt> + 54: 38 c0 rjmp .+112 ; 0xc6 <__bad_interrupt> 56: 00 00 nop - 58: 21 c0 rjmp .+66 ; 0x9c <__bad_interrupt> + 58: 36 c0 rjmp .+108 ; 0xc6 <__bad_interrupt> 5a: 00 00 nop - 5c: 1f c0 rjmp .+62 ; 0x9c <__bad_interrupt> + 5c: 34 c0 rjmp .+104 ; 0xc6 <__bad_interrupt> 5e: 00 00 nop - 60: 1d c0 rjmp .+58 ; 0x9c <__bad_interrupt> + 60: 32 c0 rjmp .+100 ; 0xc6 <__bad_interrupt> 62: 00 00 nop - 64: 1b c0 rjmp .+54 ; 0x9c <__bad_interrupt> + 64: 30 c0 rjmp .+96 ; 0xc6 <__bad_interrupt> 66: 00 00 nop - 68: 19 c0 rjmp .+50 ; 0x9c <__bad_interrupt> + 68: 2e c0 rjmp .+92 ; 0xc6 <__bad_interrupt> 6a: 00 00 nop - 6c: 17 c0 rjmp .+46 ; 0x9c <__bad_interrupt> + 6c: 2c c0 rjmp .+88 ; 0xc6 <__bad_interrupt> 6e: 00 00 nop - 70: 15 c0 rjmp .+42 ; 0x9c <__bad_interrupt> + 70: 2a c0 rjmp .+84 ; 0xc6 <__bad_interrupt> 72: 00 00 nop - 74: 13 c0 rjmp .+38 ; 0x9c <__bad_interrupt> + 74: 28 c0 rjmp .+80 ; 0xc6 <__bad_interrupt> 76: 00 00 nop - 78: 11 c0 rjmp .+34 ; 0x9c <__bad_interrupt> + 78: 26 c0 rjmp .+76 ; 0xc6 <__bad_interrupt> 7a: 00 00 nop - 7c: 0f c0 rjmp .+30 ; 0x9c <__bad_interrupt> + 7c: 24 c0 rjmp .+72 ; 0xc6 <__bad_interrupt> 7e: 00 00 nop - 80: 0d c0 rjmp .+26 ; 0x9c <__bad_interrupt> + 80: 22 c0 rjmp .+68 ; 0xc6 <__bad_interrupt> 82: 00 00 nop - 84: 0b c0 rjmp .+22 ; 0x9c <__bad_interrupt> + 84: 20 c0 rjmp .+64 ; 0xc6 <__bad_interrupt> 86: 00 00 nop - 88: 09 c0 rjmp .+18 ; 0x9c <__bad_interrupt> + 88: 1e c0 rjmp .+60 ; 0xc6 <__bad_interrupt> ... 0000008c <__ctors_end>: @@ -109,96 +111,224 @@ 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: 1f d0 rcall .+62 ; 0xd8
- 9a: 25 c0 rjmp .+74 ; 0xe6 <_exit> -0000009c <__bad_interrupt>: - 9c: b1 cf rjmp .-158 ; 0x0 <__vectors> +00000098 <__do_copy_data>: + 98: 11 e0 ldi r17, 0x01 ; 1 + 9a: a0 e0 ldi r26, 0x00 ; 0 + 9c: b1 e0 ldi r27, 0x01 ; 1 + 9e: e6 e2 ldi r30, 0x26 ; 38 + a0: f2 e0 ldi r31, 0x02 ; 2 + a2: 00 e0 ldi r16, 0x00 ; 0 + a4: 0b bf out 0x3b, r16 ; 59 + a6: 02 c0 rjmp .+4 ; 0xac <__do_copy_data+0x14> + a8: 07 90 elpm r0, Z+ + aa: 0d 92 st X+, r0 + ac: a2 30 cpi r26, 0x02 ; 2 + ae: b1 07 cpc r27, r17 + b0: d9 f7 brne .-10 ; 0xa8 <__do_copy_data+0x10> -0000009e : -void opgave1(void) -{ - PORTD = 0b10000000; - wait( 500 ); - PORTD = 0b01000000; - wait ( 500 ); - 9e: 18 16 cp r1, r24 - a0: 19 06 cpc r1, r25 - a2: 6c f4 brge .+26 ; 0xbe - a4: 20 e0 ldi r18, 0x00 ; 0 - a6: 30 e0 ldi r19, 0x00 ; 0 - a8: ef ec ldi r30, 0xCF ; 207 - aa: f7 e0 ldi r31, 0x07 ; 7 - ac: 31 97 sbiw r30, 0x01 ; 1 - ae: f1 f7 brne .-4 ; 0xac - b0: 00 c0 rjmp .+0 ; 0xb2 - b2: 00 00 nop - b4: 2f 5f subi r18, 0xFF ; 255 - b6: 3f 4f sbci r19, 0xFF ; 255 - b8: 28 17 cp r18, r24 - ba: 39 07 cpc r19, r25 - bc: a9 f7 brne .-22 ; 0xa8 - be: 08 95 ret +000000b2 <__do_clear_bss>: + b2: 21 e0 ldi r18, 0x01 ; 1 + b4: a2 e0 ldi r26, 0x02 ; 2 + b6: b1 e0 ldi r27, 0x01 ; 1 + b8: 01 c0 rjmp .+2 ; 0xbc <.do_clear_bss_start> -000000c0 : +000000ba <.do_clear_bss_loop>: + ba: 1d 92 st X+, r1 + +000000bc <.do_clear_bss_start>: + bc: a8 30 cpi r26, 0x08 ; 8 + be: b2 07 cpc r27, r18 + c0: e1 f7 brne .-8 ; 0xba <.do_clear_bss_loop> + c2: a2 d0 rcall .+324 ; 0x208
+ c4: ae c0 rjmp .+348 ; 0x222 <_exit> + +000000c6 <__bad_interrupt>: + c6: 9c cf rjmp .-200 ; 0x0 <__vectors> + +000000c8 : + wait(pattern[count].delay * speed); + + count++; + if(count >= NELEMS(pattern)) + { + count = 0; + c8: 18 16 cp r1, r24 + ca: 19 06 cpc r1, r25 + cc: 0c f5 brge .+66 ; 0x110 + ce: 20 91 06 01 lds r18, 0x0106 + d2: 30 91 07 01 lds r19, 0x0107 + d6: 21 30 cpi r18, 0x01 ; 1 + d8: 31 05 cpc r19, r1 + da: 51 f0 breq .+20 ; 0xf0 + dc: 20 e0 ldi r18, 0x00 ; 0 + de: 30 e0 ldi r19, 0x00 ; 0 + e0: 0c c0 rjmp .+24 ; 0xfa + e2: 40 91 06 01 lds r20, 0x0106 + e6: 50 91 07 01 lds r21, 0x0107 + ea: 41 30 cpi r20, 0x01 ; 1 + ec: 51 05 cpc r21, r1 + ee: 29 f4 brne .+10 ; 0xfa + f0: 10 92 07 01 sts 0x0107, r1 + f4: 10 92 06 01 sts 0x0106, r1 + f8: 08 95 ret + fa: ef ec ldi r30, 0xCF ; 207 + fc: f7 e0 ldi r31, 0x07 ; 7 + fe: 31 97 sbiw r30, 0x01 ; 1 + 100: f1 f7 brne .-4 ; 0xfe + 102: 00 c0 rjmp .+0 ; 0x104 + 104: 00 00 nop + 106: 2f 5f subi r18, 0xFF ; 255 + 108: 3f 4f sbci r19, 0xFF ; 255 + 10a: 28 17 cp r18, r24 + 10c: 39 07 cpc r19, r25 + 10e: 49 f7 brne .-46 ; 0xe2 + 110: 08 95 ret + +00000112 <__vector_16>: + 112: 1f 92 push r1 + 114: 0f 92 push r0 + 116: 0f b6 in r0, 0x3f ; 63 + 118: 0f 92 push r0 + 11a: 11 24 eor r1, r1 + 11c: 2f 93 push r18 + 11e: 8f 93 push r24 + 120: 9f 93 push r25 + 122: 98 9b sbis 0x13, 0 ; 19 + 124: 1a c0 rjmp .+52 ; 0x15a <__vector_16+0x48> + 126: 80 91 04 01 lds r24, 0x0104 + 12a: 90 91 05 01 lds r25, 0x0105 + 12e: 89 2b or r24, r25 + 130: a1 f4 brne .+40 ; 0x15a <__vector_16+0x48> + 132: 80 91 00 01 lds r24, 0x0100 + 136: 90 91 01 01 lds r25, 0x0101 + 13a: 88 0f add r24, r24 + 13c: 99 1f adc r25, r25 + 13e: 90 93 01 01 sts 0x0101, r25 + 142: 80 93 00 01 sts 0x0100, r24 + 146: 81 e0 ldi r24, 0x01 ; 1 + 148: 90 e0 ldi r25, 0x00 ; 0 + 14a: 90 93 07 01 sts 0x0107, r25 + 14e: 80 93 06 01 sts 0x0106, r24 + 152: 90 93 05 01 sts 0x0105, r25 + 156: 80 93 04 01 sts 0x0104, r24 + 15a: 99 9b sbis 0x13, 1 ; 19 + 15c: 1d c0 rjmp .+58 ; 0x198 <__vector_16+0x86> + 15e: 80 91 02 01 lds r24, 0x0102 + 162: 90 91 03 01 lds r25, 0x0103 + 166: 89 2b or r24, r25 + 168: b9 f4 brne .+46 ; 0x198 <__vector_16+0x86> + 16a: 80 91 00 01 lds r24, 0x0100 + 16e: 90 91 01 01 lds r25, 0x0101 + 172: 99 23 and r25, r25 + 174: 0c f4 brge .+2 ; 0x178 <__vector_16+0x66> + 176: 01 96 adiw r24, 0x01 ; 1 + 178: 95 95 asr r25 + 17a: 87 95 ror r24 + 17c: 90 93 01 01 sts 0x0101, r25 + 180: 80 93 00 01 sts 0x0100, r24 + 184: 81 e0 ldi r24, 0x01 ; 1 + 186: 90 e0 ldi r25, 0x00 ; 0 + 188: 90 93 07 01 sts 0x0107, r25 + 18c: 80 93 06 01 sts 0x0106, r24 + 190: 90 93 03 01 sts 0x0103, r25 + 194: 80 93 02 01 sts 0x0102, r24 + 198: 83 b3 in r24, 0x13 ; 19 + 19a: 81 11 cpse r24, r1 + 19c: 08 c0 rjmp .+16 ; 0x1ae <__vector_16+0x9c> + 19e: 10 92 05 01 sts 0x0105, r1 + 1a2: 10 92 04 01 sts 0x0104, r1 + 1a6: 10 92 03 01 sts 0x0103, r1 + 1aa: 10 92 02 01 sts 0x0102, r1 + 1ae: 80 91 00 01 lds r24, 0x0100 + 1b2: 90 91 01 01 lds r25, 0x0101 + 1b6: 84 31 cpi r24, 0x14 ; 20 + 1b8: 91 05 cpc r25, r1 + 1ba: 3c f4 brge .+14 ; 0x1ca <__vector_16+0xb8> + 1bc: 84 e1 ldi r24, 0x14 ; 20 + 1be: 90 e0 ldi r25, 0x00 ; 0 + 1c0: 90 93 01 01 sts 0x0101, r25 + 1c4: 80 93 00 01 sts 0x0100, r24 + 1c8: 09 c0 rjmp .+18 ; 0x1dc <__vector_16+0xca> + 1ca: 81 3a cpi r24, 0xA1 ; 161 + 1cc: 9f 40 sbci r25, 0x0F ; 15 + 1ce: 34 f0 brlt .+12 ; 0x1dc <__vector_16+0xca> + 1d0: 80 ea ldi r24, 0xA0 ; 160 + 1d2: 9f e0 ldi r25, 0x0F ; 15 + 1d4: 90 93 01 01 sts 0x0101, r25 + 1d8: 80 93 00 01 sts 0x0100, r24 + 1dc: 9f 91 pop r25 + 1de: 8f 91 pop r24 + 1e0: 2f 91 pop r18 + 1e2: 0f 90 pop r0 + 1e4: 0f be out 0x3f, r0 ; 63 + 1e6: 0f 90 pop r0 + 1e8: 1f 90 pop r1 + 1ea: 18 95 reti + +000001ec : + } } -void opgave4(void) +void opgave6(void) { - wait( 50 ); - c0: 82 e3 ldi r24, 0x32 ; 50 - c2: 90 e0 ldi r25, 0x00 ; 0 - c4: ec df rcall .-40 ; 0x9e - if (PORTC>= 0x80) - c6: af 9b sbis 0x15, 7 ; 21 - c8: 03 c0 rjmp .+6 ; 0xd0 - { - PORTC= 0x1; - ca: 81 e0 ldi r24, 0x01 ; 1 - cc: 85 bb out 0x15, r24 ; 21 - ce: 08 95 ret - } - else - { - PORTC = (PORTC<<1); - d0: 85 b3 in r24, 0x15 ; 21 - d2: 88 0f add r24, r24 - d4: 85 bb out 0x15, r24 ; 21 - d6: 08 95 ret + PORTD = 0b10000000; + 1ec: 80 e8 ldi r24, 0x80 ; 128 + 1ee: 82 bb out 0x12, r24 ; 18 + wait( blink ); + 1f0: 80 91 00 01 lds r24, 0x0100 + 1f4: 90 91 01 01 lds r25, 0x0101 + 1f8: 67 df rcall .-306 ; 0xc8 + PORTD = 0b00000000; + 1fa: 12 ba out 0x12, r1 ; 18 + wait( blink ); + 1fc: 80 91 00 01 lds r24, 0x0100 + 200: 90 91 01 01 lds r25, 0x0101 + 204: 61 cf rjmp .-318 ; 0xc8 + 206: 08 95 ret -000000d8
: - } +00000208
: + } } int main(void) { - DDRD = 0b00000000; //input - d8: 11 ba out 0x11, r1 ; 17 - DDRC = 0b11111111; //output - da: 8f ef ldi r24, 0xFF ; 255 - dc: 84 bb out 0x14, r24 ; 20 + DDRC = 0b00000000; //input + 208: 14 ba out 0x14, r1 ; 20 + DDRD = 0b11111111; //output + 20a: 8f ef ldi r24, 0xFF ; 255 + 20c: 81 bb out 0x11, r24 ; 17 - //Alleen voor opgave 4 - PORTC = 0x1; - de: 81 e0 ldi r24, 0x01 ; 1 - e0: 85 bb out 0x15, r24 ; 21 - while (1) - { + // Prescaler = FCPU/8000000 + TCCR0 |= (1 << CS01) | (1 << CS00); + 20e: 83 b7 in r24, 0x33 ; 51 + 210: 83 60 ori r24, 0x03 ; 3 + 212: 83 bf out 0x33, r24 ; 51 + //Enable Overflow Interrupt Enable + TIMSK|=(1< - if( (PIND) != 0 ) - { - speaker( PIND ); - } - */ + //opgave4(); + //opgave5(); + opgave6(); + 21e: e6 df rcall .-52 ; 0x1ec + + //extraopgave(); } - e4: fe cf rjmp .-4 ; 0xe2 + 220: fe cf rjmp .-4 ; 0x21e -000000e6 <_exit>: - e6: f8 94 cli +00000222 <_exit>: + 222: f8 94 cli -000000e8 <__stop_program>: - e8: ff cf rjmp .-2 ; 0xe8 <__stop_program> +00000224 <__stop_program>: + 224: ff cf rjmp .-2 ; 0x224 <__stop_program> diff --git a/MIC-Week1/Debug/MIC-Week1.map b/MIC-Week1/Debug/MIC-Week1.map index aac5e35..17411ff 100644 --- a/MIC-Week1/Debug/MIC-Week1.map +++ b/MIC-Week1/Debug/MIC-Week1.map @@ -2,6 +2,10 @@ 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/4.9.2/avr51\libgcc.a(_exit.o) C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o (exit) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o) + main.o (__do_copy_data) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + main.o (__do_clear_bss) Discarded input sections @@ -11,7 +15,15 @@ Discarded input sections .data 0x00000000 0x0 main.o .bss 0x00000000 0x0 main.o .text.speaker 0x00000000 0x1e main.o + .text.extraopgave + 0x00000000 0x10 main.o .text.opgave1 0x00000000 0x1a main.o + .text.opgave3 0x00000000 0x1c main.o + .text.opgave4 0x00000000 0x1a main.o + .text.opgave5 0x00000000 0x8a main.o + .data.speed 0x00000000 0x2 main.o + .bss.count 0x00000000 0x2 main.o + .data.pattern 0x00000000 0x4b main.o .text 0x00000000 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) .data 0x00000000 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) .bss 0x00000000 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) @@ -28,6 +40,38 @@ Discarded input sections 0x00000000 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) .text.libgcc.fixed 0x00000000 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) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) Memory Configuration @@ -146,7 +190,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x00000000 0xea +.text 0x00000000 0x226 *(.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 @@ -185,6 +229,10 @@ END GROUP *(.init3) *(.init3) *(.init4) + .init4 0x00000098 0x1a c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o) + 0x00000098 __do_copy_data + .init4 0x000000b2 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + 0x000000b2 __do_clear_bss *(.init4) *(.init5) *(.init5) @@ -195,58 +243,60 @@ END GROUP *(.init8) *(.init8) *(.init9) - .init9 0x00000098 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o + .init9 0x000000c2 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o *(.init9) *(.text) - .text 0x0000009c 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/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 0x000000c6 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o + 0x000000c6 __vector_22 + 0x000000c6 __vector_28 + 0x000000c6 __vector_1 + 0x000000c6 __vector_32 + 0x000000c6 __vector_34 + 0x000000c6 __vector_24 + 0x000000c6 __vector_12 + 0x000000c6 __bad_interrupt + 0x000000c6 __vector_6 + 0x000000c6 __vector_31 + 0x000000c6 __vector_3 + 0x000000c6 __vector_23 + 0x000000c6 __vector_30 + 0x000000c6 __vector_25 + 0x000000c6 __vector_11 + 0x000000c6 __vector_13 + 0x000000c6 __vector_17 + 0x000000c6 __vector_19 + 0x000000c6 __vector_7 + 0x000000c6 __vector_27 + 0x000000c6 __vector_5 + 0x000000c6 __vector_33 + 0x000000c6 __vector_4 + 0x000000c6 __vector_9 + 0x000000c6 __vector_2 + 0x000000c6 __vector_21 + 0x000000c6 __vector_15 + 0x000000c6 __vector_29 + 0x000000c6 __vector_8 + 0x000000c6 __vector_26 + 0x000000c6 __vector_14 + 0x000000c6 __vector_10 + 0x000000c6 __vector_18 + 0x000000c6 __vector_20 + 0x000000c8 . = ALIGN (0x2) *(.text.*) - .text.wait 0x0000009e 0x22 main.o - 0x0000009e wait - .text.opgave4 0x000000c0 0x18 main.o - 0x000000c0 opgave4 - .text.main 0x000000d8 0xe main.o - 0x000000d8 main - 0x000000e6 . = ALIGN (0x2) + .text.wait 0x000000c8 0x4a main.o + 0x000000c8 wait + .text.__vector_16 + 0x00000112 0xda main.o + 0x00000112 __vector_16 + .text.opgave6 0x000001ec 0x1c main.o + 0x000001ec opgave6 + .text.main 0x00000208 0x1a main.o + 0x00000208 main + 0x00000222 . = ALIGN (0x2) *(.fini9) - .fini9 0x000000e6 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) - 0x000000e6 _exit - 0x000000e6 exit + .fini9 0x00000222 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) + 0x00000222 _exit + 0x00000222 exit *(.fini9) *(.fini8) *(.fini8) @@ -265,36 +315,44 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x000000e6 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 0x00000222 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) - 0x000000ea _etext = . + 0x00000226 _etext = . -.data 0x00800100 0x0 load address 0x000000ea +.data 0x00800100 0x2 load address 0x00000226 0x00800100 PROVIDE (__data_start, .) *(.data) *(.data*) + .data.blink 0x00800100 0x2 main.o + 0x00800100 blink *(.rodata) *(.rodata*) *(.gnu.linkonce.d*) - 0x00800100 . = ALIGN (0x2) - 0x00800100 _edata = . - 0x00800100 PROVIDE (__data_end, .) + 0x00800102 . = ALIGN (0x2) + 0x00800102 _edata = . + 0x00800102 PROVIDE (__data_end, .) -.bss 0x00800100 0x0 - 0x00800100 PROVIDE (__bss_start, .) +.bss 0x00800102 0x6 + 0x00800102 PROVIDE (__bss_start, .) *(.bss) *(.bss*) + .bss.b2 0x00800102 0x2 main.o + 0x00800102 b2 + .bss.b1 0x00800104 0x2 main.o + 0x00800104 b1 + .bss.reset 0x00800106 0x2 main.o + 0x00800106 reset *(COMMON) - 0x00800100 PROVIDE (__bss_end, .) - 0x000000ea __data_load_start = LOADADDR (.data) - 0x000000ea __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00800108 PROVIDE (__bss_end, .) + 0x00000226 __data_load_start = LOADADDR (.data) + 0x00000228 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00800100 0x0 - 0x00800100 PROVIDE (__noinit_start, .) +.noinit 0x00800108 0x0 + 0x00800108 PROVIDE (__noinit_start, .) *(.noinit*) - 0x00800100 PROVIDE (__noinit_end, .) - 0x00800100 _end = . - 0x00800100 PROVIDE (__heap_start, .) + 0x00800108 PROVIDE (__noinit_end, .) + 0x00800108 _end = . + 0x00800108 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -358,38 +416,38 @@ END GROUP .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x40 +.debug_aranges 0x00000000 0x68 *(.debug_aranges) .debug_aranges - 0x00000000 0x40 main.o + 0x00000000 0x68 main.o .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x242 +.debug_info 0x00000000 0x3fa *(.debug_info .gnu.linkonce.wi.*) - .debug_info 0x00000000 0x242 main.o + .debug_info 0x00000000 0x3fa main.o -.debug_abbrev 0x00000000 0x161 +.debug_abbrev 0x00000000 0x1cb *(.debug_abbrev) - .debug_abbrev 0x00000000 0x161 main.o + .debug_abbrev 0x00000000 0x1cb main.o -.debug_line 0x00000000 0x1cf +.debug_line 0x00000000 0x333 *(.debug_line .debug_line.* .debug_line_end) - .debug_line 0x00000000 0x1cf main.o + .debug_line 0x00000000 0x333 main.o -.debug_frame 0x00000000 0x70 +.debug_frame 0x00000000 0xdc *(.debug_frame) - .debug_frame 0x00000000 0x70 main.o + .debug_frame 0x00000000 0xdc main.o -.debug_str 0x00000000 0x194 +.debug_str 0x00000000 0x207 *(.debug_str) - .debug_str 0x00000000 0x194 main.o - 0x1c8 (size before relaxing) + .debug_str 0x00000000 0x207 main.o + 0x23b (size before relaxing) -.debug_loc 0x00000000 0xcf +.debug_loc 0x00000000 0x163 *(.debug_loc) - .debug_loc 0x00000000 0xcf main.o + .debug_loc 0x00000000 0x163 main.o .debug_macinfo *(.debug_macinfo) @@ -409,9 +467,9 @@ END GROUP .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x30 +.debug_ranges 0x00000000 0x58 *(.debug_ranges) - .debug_ranges 0x00000000 0x30 main.o + .debug_ranges 0x00000000 0x58 main.o .debug_macro *(.debug_macro) diff --git a/MIC-Week1/Debug/MIC-Week1.srec b/MIC-Week1/Debug/MIC-Week1.srec index ba7a536..fb7d4dc 100644 --- a/MIC-Week1/Debug/MIC-Week1.srec +++ b/MIC-Week1/Debug/MIC-Week1.srec @@ -1,17 +1,38 @@ S01100004D49432D5765656B312E7372656350 -S113000045C000004BC0000049C0000047C00000CC -S113001045C0000043C0000041C000003FC00000D4 -S11300203DC000003BC0000039C0000037C00000E4 -S113003035C0000033C0000031C000002FC00000F4 -S11300402DC000002BC0000029C0000027C0000004 -S113005025C0000023C0000021C000001FC0000014 -S11300601DC000001BC0000019C0000017C0000024 -S113007015C0000013C0000011C000000FC0000034 -S11300800DC000000BC0000009C0000011241FBEF9 -S1130090CFEFD0E1DEBFCDBF1FD025C0B1CF181642 -S11300A019066CF420E030E0EFECF7E03197F1F75B -S11300B000C000002F5F3F4F28173907A9F70895A4 -S11300C082E390E0ECDFAF9B03C081E085BB089541 -S11300D085B3880F85BB089511BA8FEF84BB81E087 -S10D00E085BBEEDFFECFF894FFCFDE +S113000045C0000060C000005EC000005CC000008D +S11300105AC0000058C0000056C0000054C0000080 +S113002052C0000050C000004EC000004CC0000090 +S11300304AC0000048C0000046C0000044C00000A0 +S113004068C0000040C000003EC000003CC000008A +S11300503AC0000038C0000036C0000034C00000C0 +S113006032C0000030C000002EC000002CC00000D0 +S11300702AC0000028C0000026C0000024C00000E0 +S113008022C0000020C000001EC0000011241FBEBA +S1130090CFEFD0E1DEBFCDBF11E0A0E0B1E0E6E2FA +S11300A0F2E000E00BBF02C007900D92A230B1074E +S11300B0D9F721E0A2E0B1E001C01D92A830B20757 +S11300C0E1F7A2D0AEC09CCF181619060CF520910A +S11300D00601309107012130310551F020E030E074 +S11300E00CC040910601509107014130510529F49B +S11300F010920701109206010895EFECF7E0319792 +S1130100F1F700C000002F5F3F4F2817390749F768 +S113011008951F920F920FB60F9211242F938F936D +S11301209F93989B1AC08091040190910501892B9B +S1130130A1F48091000190910101880F991F90937F +S113014001018093000181E090E090930701809386 +S113015006019093050180930401999B1DC0809131 +S1130160020190910301892BB9F4809100019091CF +S1130170010199230CF401969595879590930101BB +S11301808093000181E090E0909307018093060141 +S1130190909303018093020183B3811108C01092EC +S11301A00501109204011092030110920201809142 +S11301B0000190910101843191053CF484E190E0C7 +S11301C0909301018093000109C0813A9F4034F06B +S11301D080EA9FE090930101809300019F918F91A9 +S11301E02F910F900FBE0F901F90189580E882BB3F +S11301F0809100019091010167DF12BA80910001A2 +S11302009091010161CF089514BA8FEF81BB83B738 +S1130210836083BF87B7816087BF12BE7894E6DFAF +S1090220FECFF894FFCFAD +S1050226E803E7 S9030000FC diff --git a/MIC-Week1/Debug/main.d b/MIC-Week1/Debug/main.d index affe786..ffef84e 100644 --- a/MIC-Week1/Debug/main.d +++ b/MIC-Week1/Debug/main.d @@ -1,4 +1,5 @@ main.d main.o: .././main.c \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.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 \ @@ -14,6 +15,8 @@ main.d main.o: .././main.c \ 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\interrupt.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: diff --git a/MIC-Week1/main.c b/MIC-Week1/main.c index 618a745..034cb38 100644 --- a/MIC-Week1/main.c +++ b/MIC-Week1/main.c @@ -6,10 +6,14 @@ */ #define F_CPU 8000000UL +#define NELEMS(x) (sizeof(x) / sizeof(x[0])) +#include #include #include +int reset = 0; + /******************************************************************/ void wait( int ms ) /* @@ -24,42 +28,116 @@ Version : DMK, Initial code { for (int i=0; i 4000) + { + blink = 4000; + } +} + int main(void) { - DDRD = 0b00000000; //input - DDRC = 0b11111111; //output + DDRC = 0b00000000; //input + DDRD = 0b11111111; //output + + // Prescaler = FCPU/8000000 + TCCR0 |= (1 << CS01) | (1 << CS00); + //Enable Overflow Interrupt Enable + TIMSK|=(1<= 0x80) + if( (0b00000001 & PINC) != 0 ) { - PORTC= 0x1; - } - else - { - PORTC = (PORTC<<1); + PORTD = 0b10000000; + wait( 100 ); + PORTD = 0b00000000; + wait( 100 ); } } +void opgave4(void) +{ + wait( 50 ); + if (PORTD>= 0x80) + { + PORTD= 0x1; + } + else + { + PORTD = (PORTD<<1); + } +} + +void opgave5(void) +{ + if(PINC != 0 ) + { + speed = PINC; + } + + // Write data to PORTD + PORTD = pattern[count].data; + // wait + wait(pattern[count].delay * speed); + + count++; + if(count >= NELEMS(pattern)) + { + count = 0; + } +} + +void opgave6(void) +{ + PORTD = 0b10000000; + wait( blink ); + PORTD = 0b00000000; + wait( blink ); +} +