From b033055aaa5e1946aa9de834db33cc7b6a41ea65 Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Mon, 12 May 2014 16:53:00 +0000 Subject: [PATCH] 20140512-185246 --- V2/Programm/Programm.atsuo | Bin 8704 -> 17408 bytes V2/Programm/Programm/Debug/Programm.d | 20 +- V2/Programm/Programm/Debug/Programm.elf | Bin 13668 -> 37041 bytes V2/Programm/Programm/Debug/Programm.hex | 79 +- V2/Programm/Programm/Debug/Programm.lss | 1538 ++++++++++++++++++-- V2/Programm/Programm/Debug/Programm.map | 87 +- V2/Programm/Programm/Debug/Programm.srec | 79 +- V2/Programm/Programm/Programm.cpp | 29 +- V2/Programm/Programm/Programm.cppproj | 12 + V2/Programm/Programm/io/Display.hpp | 81 ++ V2/Programm/Programm/io/hardware/portg.hpp | 22 + V2/Programm/Programm/io/hardware/portl.hpp | 22 + V2/Programm/Programm/io/mcp4151.hpp | 92 ++ V2/Programm/Programm/peripheral.h | 27 + 14 files changed, 1856 insertions(+), 232 deletions(-) create mode 100644 V2/Programm/Programm/io/Display.hpp create mode 100644 V2/Programm/Programm/io/hardware/portg.hpp create mode 100644 V2/Programm/Programm/io/hardware/portl.hpp create mode 100644 V2/Programm/Programm/io/mcp4151.hpp diff --git a/V2/Programm/Programm.atsuo b/V2/Programm/Programm.atsuo index f1cf4af182fc73a1b6c95a67131f11027087b64f..cc74cdfcf32cd5fa2773efff83ed9f8a2b107628 100644 GIT binary patch delta 2817 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 qOeGxEA+z5fC2HBx*#Jl;>3g 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 diff --git a/V2/Programm/Programm/Debug/Programm.hex b/V2/Programm/Programm/Debug/Programm.hex index f65cbf1..5f8df92 100644 --- a/V2/Programm/Programm/Debug/Programm.hex +++ b/V2/Programm/Programm/Debug/Programm.hex @@ -12,20 +12,71 @@ :1000B0000C9499000C9499000C9499000C9499005C :1000C0000C9499000C9499000C9499000C9499004C :1000D0000C9499000C9499000C9499000C9499003C -:1000E0000C9499000C94D600D60011241FBECFEFBB +:1000E0000C9499000C946702670211241FBECFEF95 :1000F000D1E2DEBFCDBF00E00CBF22E0A0E0B2E065 -:1001000001C01D92A030B207E1F710E0CAEED0E0C6 -:1001100000E006C022970109FE010BBF0E94E90022 +:1001000001C01D92A530B207E1F710E0CAEED0E0C1 +:1001100000E006C022970109FE010BBF0E947E028B :10012000C83ED10780E00807A9F70E949B000C9405 -:10013000ED000C940000E2E0F1E0289A2FEF83E25A -:1001400094EF215080409040E1F700C000002898D3 -:100150008081806480832FEF83ED90E32150804085 -:100160009040E1F700C0000080818F7B8083808118 -:10017000806280832FEF83E294EF21508040904093 -:10018000E1F700C000008081806480832FEF83ED61 -:1001900090E3215080409040E1F700C00000808152 -:1001A0008F7B808380818F7D8083C7CFA1E0B1E08A -:1001B0008C9180628C93E2E0F1E080818F7D80837E -:1001C000209A28988C9180648C9380818F7B808387 -:0E01D00008950790F691E02D1994F894FFCF52 +:1001300082020C940000409888E0A098989AA19AB6 +:10014000999A00C000C00000A198999A8150A9F71F +:1001500098E08DEC88231CF4A09A989A02C0A0988D +:10016000989AA19A999A880F00C000C00000A1989F +:10017000999A915079F7409AEBE0F1E0808188609C +:10018000808380818F7B80838081806280831BB8A5 +:100190008081806880838FE99FE00197F1F700C03C +:1001A000000080818F7780830F2EF0E5FF2EF02DE9 +:1001B00005E61EE6D9E6C3E76894EE24E5F874E4A4 +:1001C00065E753E541E633E60F2EFBE6DF2EF02D23 +:1001D000A2E0B1E090819F7B9083908190629083B8 +:1001E000FBB89081906890838FE99FE00197F1F7C9 +:1001F00000C0000090819F77908390819F7B9083C7 +:100200009081906290830BB99081906890838FE980 +:100210009FE00197F1F700C0000090819F779083E5 +:1002200090819F7B90839081906290831BB9908195 +:10023000906890838FE99FE00197F1F700C000007C +:1002400090819F77908390819F7B90839081906233 +:100250009083DBB99081906890838FE99FE001974C +:10026000F1F700C0000090819F77908390819F7B81 +:100270009083908190629083CBB9908190689083B5 +:100280008FE99FE00197F1F700C0000090819F7710 +:10029000908390819F7B9083908190629083EBB854 +:1002A0009081906890838FE99FE00197F1F700C0FB +:1002B000000090819F77908390819F7B90839081B5 +:1002C000906290837BB99081906890838FE99FE0E2 +:1002D0000197F1F700C0000090819F779083908193 +:1002E0009F7B90839081906290836BB9908190689E +:1002F00090838FE99FE00197F1F700C000009081A3 +:100300009F77908390819F7B908390819062908370 +:10031000EBB89081906890838FE99FE00197F1F7A7 +:1003200000C0000090819F77908390819F7B908395 +:100330009081906290835BB99081906890838FE9FF +:100340009FE00197F1F700C0000090819F779083B4 +:1003500090819F7B90839081906290834BB9908134 +:10036000906890838FE99FE00197F1F700C000004B +:1003700090819F77908390819F7B90839081906202 +:1003800090833BB99081906890838FE99FE00197BB +:10039000F1F700C0000090819F77908390819F7B50 +:1003A0009083908190629083DBB890819068908375 +:1003B0008FE99FE00197F1F700C0000090819F77DF +:1003C0009083289A9FEF27EA81E691502040804051 +:1003D000E1F700C0000028989C9190649C939FEFE7 +:1003E00023ED80E3915020408040E1F700C0000001 +:1003F0009C919F7B9C939C9190629C939FEF27EA9A +:1004000081E6915020408040E1F700C000009C91BF +:1004100090649C939FEF23ED80E3915020408040B7 +:10042000E1F700C000009C919F7B9C939C919F7D75 +:100430009C93D0CEA198999A409A389AA098989A6D +:10044000AAE0B1E08C9188608C93EBE0F1E08081D0 +:10045000877F80838C9180688C938C9180648C934F +:100460008C9180628C938FEF8AB92FEF81EE94E0AC +:10047000215080409040E1F700C0000080818F7BD8 +:10048000808380818F7D80838CE08BB980818068C0 +:1004900080838FE99FE00197F1F700C00000808121 +:1004A0008F77808380818F7B808380818F7D808325 +:1004B00081E08BB98081806880838FE99FE001971C +:1004C000F1F700C0000080818F7780830895A1E05C +:1004D000B1E08C9180628C93E2E0F1E080818F7DCD +:1004E0008083209A28988C9180648C9380818F7B64 +:1004F000808380E092E00E941A0208950790F691AE +:08050000E02D1994F894FFCFDF :00000001FF diff --git a/V2/Programm/Programm/Debug/Programm.lss b/V2/Programm/Programm/Debug/Programm.lss index efe17e1..a9076cb 100644 --- a/V2/Programm/Programm/Debug/Programm.lss +++ b/V2/Programm/Programm/Debug/Programm.lss @@ -3,31 +3,33 @@ Programm.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000000 00800200 000001de 00000252 2**0 + 0 .data 00000000 00800200 00000508 0000059c 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 000001de 00000000 00000000 00000074 2**1 + 1 .text 00000508 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .stab 000006e4 00000000 00000000 00000254 2**2 + 2 .bss 00000005 00800200 00800200 0000059c 2**0 + ALLOC + 3 .stab 000006e4 00000000 00000000 0000059c 2**2 CONTENTS, READONLY, DEBUGGING - 3 .stabstr 00000082 00000000 00000000 00000938 2**0 + 4 .stabstr 00000082 00000000 00000000 00000c80 2**0 CONTENTS, READONLY, DEBUGGING - 4 .comment 0000002f 00000000 00000000 000009ba 2**0 + 5 .comment 0000002f 00000000 00000000 00000d02 2**0 CONTENTS, READONLY - 5 .debug_aranges 00000028 00000000 00000000 000009e9 2**0 + 6 .debug_aranges 00000030 00000000 00000000 00000d31 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_info 00000ee2 00000000 00000000 00000a11 2**0 + 7 .debug_info 00004170 00000000 00000000 00000d61 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_abbrev 000002e1 00000000 00000000 000018f3 2**0 + 8 .debug_abbrev 000003c6 00000000 00000000 00004ed1 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_line 000002cd 00000000 00000000 00001bd4 2**0 + 9 .debug_line 00000977 00000000 00000000 00005297 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_frame 00000034 00000000 00000000 00001ea4 2**2 + 10 .debug_frame 00000044 00000000 00000000 00005c10 2**2 CONTENTS, READONLY, DEBUGGING - 10 .debug_str 00000693 00000000 00000000 00001ed8 2**0 + 11 .debug_str 00001866 00000000 00000000 00005c54 2**0 CONTENTS, READONLY, DEBUGGING - 11 .debug_loc 000000f0 00000000 00000000 0000256b 2**0 + 12 .debug_loc 0000090d 00000000 00000000 000074ba 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_ranges 00000060 00000000 00000000 0000265b 2**0 + 13 .debug_ranges 000002a8 00000000 00000000 00007dc7 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -92,10 +94,10 @@ Disassembly of section .text: e0: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> 000000e4 <__trampolines_start>: - e4: 0c 94 d6 00 jmp 0x1ac ; 0x1ac <_GLOBAL__sub_I_rot> + e4: 0c 94 67 02 jmp 0x4ce ; 0x4ce <_GLOBAL__sub_I_rot> 000000e8 <__ctors_start>: - e8: d6 00 .word 0x00d6 ; ???? + e8: 67 02 muls r22, r23 000000ea <__ctors_end>: ea: 11 24 eor r1, r1 @@ -117,7 +119,7 @@ Disassembly of section .text: 102: 1d 92 st X+, r1 00000104 <.do_clear_bss_start>: - 104: a0 30 cpi r26, 0x00 ; 0 + 104: a5 30 cpi r26, 0x05 ; 5 106: b2 07 cpc r27, r18 108: e1 f7 brne .-8 ; 0x102 <.do_clear_bss_loop> @@ -131,240 +133,1464 @@ Disassembly of section .text: 116: 01 09 sbc r16, r1 118: fe 01 movw r30, r28 11a: 0b bf out 0x3b, r16 ; 59 - 11c: 0e 94 e9 00 call 0x1d2 ; 0x1d2 <__tablejump_elpm__> + 11c: 0e 94 7e 02 call 0x4fc ; 0x4fc <__tablejump_elpm__> 120: c8 3e cpi r28, 0xE8 ; 232 122: d1 07 cpc r29, r17 124: 80 e0 ldi r24, 0x00 ; 0 126: 08 07 cpc r16, r24 128: a9 f7 brne .-22 ; 0x114 <__do_global_ctors+0xa> 12a: 0e 94 9b 00 call 0x136 ; 0x136
- 12e: 0c 94 ed 00 jmp 0x1da ; 0x1da <_exit> + 12e: 0c 94 82 02 jmp 0x504 ; 0x504 <_exit> 00000132 <__bad_interrupt>: 132: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> 00000136
: - namespace avrlib { - struct porth + struct portc { - static uint8_t port() { return PORTH; } - 136: e2 e0 ldi r30, 0x02 ; 2 - 138: f1 e0 ldi r31, 0x01 ; 1 + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 136: 40 98 cbi 0x08, 0 ; 8 + 138: 88 e0 ldi r24, 0x08 ; 8 namespace avrlib { - struct portb + struct portg { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 13a: 28 9a sbi 0x05, 0 ; 5 + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 13a: a0 98 cbi 0x14, 0 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 13c: 98 9a sbi 0x13, 0 ; 19 +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 13e: a1 9a sbi 0x14, 1 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 140: 99 9a sbi 0x13, 1 ; 19 #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 13c: 2f ef ldi r18, 0xFF ; 255 - 13e: 83 e2 ldi r24, 0x23 ; 35 - 140: 94 ef ldi r25, 0xF4 ; 244 - 142: 21 50 subi r18, 0x01 ; 1 - 144: 80 40 sbci r24, 0x00 ; 0 - 146: 90 40 sbci r25, 0x00 ; 0 - 148: e1 f7 brne .-8 ; 0x142 - 14a: 00 c0 rjmp .+0 ; 0x14c - 14c: 00 00 nop - 14e: 28 98 cbi 0x05, 0 ; 5 - 150: 80 81 ld r24, Z + 142: 00 c0 rjmp .+0 ; 0x144 + 144: 00 c0 rjmp .+0 ; 0x146 + 146: 00 00 nop +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 148: a1 98 cbi 0x14, 1 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 14a: 99 9a sbi 0x13, 1 ; 19 + 14c: 81 50 subi r24, 0x01 ; 1 + sck::make_low(); //output und low; + cs::make_high(); //output und low; + sdi::make_low(); //output und low; + } + void send_soft(uint8_t data) { + for (uint8_t i=0; i<8; i++) + 14e: a9 f7 brne .-22 ; 0x13a + 150: 98 e0 ldi r25, 0x08 ; 8 + 152: 8d ec ldi r24, 0xCD ; 205 + { + if (data & 0x80) { + 154: 88 23 and r24, r24 + 156: 1c f4 brge .+6 ; 0x15e +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 158: a0 9a sbi 0x14, 0 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 15a: 98 9a sbi 0x13, 0 ; 19 + 15c: 02 c0 rjmp .+4 ; 0x162 +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 15e: a0 98 cbi 0x14, 0 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 160: 98 9a sbi 0x13, 0 ; 19 +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 162: a1 9a sbi 0x14, 1 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 164: 99 9a sbi 0x13, 1 ; 19 + } + else { + sdi::make_low(); + } + sck::make_high(); + data<<=1; + 166: 88 0f add r24, r24 + 168: 00 c0 rjmp .+0 ; 0x16a + 16a: 00 c0 rjmp .+0 ; 0x16c + 16c: 00 00 nop +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 16e: a1 98 cbi 0x14, 1 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 170: 99 9a sbi 0x13, 1 ; 19 + 172: 91 50 subi r25, 0x01 ; 1 + sck::make_low(); //output und low; + cs::make_high(); //output und low; + sdi::make_low(); //output und low; + } + void send_soft(uint8_t data) { + for (uint8_t i=0; i<8; i++) + 174: 79 f7 brne .-34 ; 0x154 + 176: 40 9a sbi 0x08, 0 ; 8 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 178: eb e0 ldi r30, 0x0B ; 11 + 17a: f1 e0 ldi r31, 0x01 ; 1 + 17c: 80 81 ld r24, Z struct pin { static void set(bool value = true) { if (value) Port::port(Port::port() | (1< - 164: 00 c0 rjmp .+0 ; 0x166 - 166: 00 00 nop + 17e: 88 60 ori r24, 0x08 ; 8 + static void port(uint8_t v) { PORTL = v; } + 180: 80 83 st Z, r24 namespace avrlib { - struct porth + struct portl { - static uint8_t port() { return PORTH; } - 168: 80 81 ld r24, Z + static uint8_t port() { return PORTL; } + 182: 80 81 ld r24, Z else Port::port(Port::port() & ~(1< - 182: 00 c0 rjmp .+0 ; 0x184 - 184: 00 00 nop + 18a: 80 62 ori r24, 0x20 ; 32 + static void port(uint8_t v) { PORTL = v; } + 18c: 80 83 st Z, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 18e: 1b b8 out 0x0b, r1 ; 11 namespace avrlib { - struct porth + struct portl { - static uint8_t port() { return PORTH; } - 186: 80 81 ld r24, Z - 188: 80 64 ori r24, 0x40 ; 64 - static void port(uint8_t v) { PORTH = v; } - 18a: 80 83 st Z, r24 - 18c: 2f ef ldi r18, 0xFF ; 255 - 18e: 83 ed ldi r24, 0xD3 ; 211 - 190: 90 e3 ldi r25, 0x30 ; 48 - 192: 21 50 subi r18, 0x01 ; 1 - 194: 80 40 sbci r24, 0x00 ; 0 - 196: 90 40 sbci r25, 0x00 ; 0 - 198: e1 f7 brne .-8 ; 0x192 - 19a: 00 c0 rjmp .+0 ; 0x19c - 19c: 00 00 nop + static uint8_t port() { return PORTL; } + 190: 80 81 ld r24, Z + 192: 80 68 ori r24, 0x80 ; 128 + static void port(uint8_t v) { PORTL = v; } + 194: 80 83 st Z, r24 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 196: 8f e9 ldi r24, 0x9F ; 159 + 198: 9f e0 ldi r25, 0x0F ; 15 + 19a: 01 97 sbiw r24, 0x01 ; 1 + 19c: f1 f7 brne .-4 ; 0x19a + 19e: 00 c0 rjmp .+0 ; 0x1a0 + 1a0: 00 00 nop namespace avrlib { - struct porth + struct portl { - static uint8_t port() { return PORTH; } - 19e: 80 81 ld r24, Z + static uint8_t port() { return PORTL; } + 1a2: 80 81 ld r24, Z else Port::port(Port::port() & ~(1< - -000001ac <_GLOBAL__sub_I_rot>: - - static uint8_t pin() { return PINH; } - static void pin(uint8_t v) { PINH = v; } - - static uint8_t dir() { return DDRH; } - 1ac: a1 e0 ldi r26, 0x01 ; 1 - 1ae: b1 e0 ldi r27, 0x01 ; 1 - 1b0: 8c 91 ld r24, X - static bool value() { return (Port::pin() & (1< + 1f0: 00 c0 rjmp .+0 ; 0x1f2 + 1f2: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1f4: 90 81 ld r25, Z else Port::port(Port::port() & ~(1< + 216: 00 c0 rjmp .+0 ; 0x218 + 218: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 21a: 90 81 ld r25, Z + else + Port::port(Port::port() & ~(1< + 23c: 00 c0 rjmp .+0 ; 0x23e + 23e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 240: 90 81 ld r25, Z + else + Port::port(Port::port() & ~(1< + 262: 00 c0 rjmp .+0 ; 0x264 + 264: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 266: 90 81 ld r25, Z + else + Port::port(Port::port() & ~(1< + 288: 00 c0 rjmp .+0 ; 0x28a + 28a: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 28c: 90 81 ld r25, Z + else + Port::port(Port::port() & ~(1< + 2ae: 00 c0 rjmp .+0 ; 0x2b0 + 2b0: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2b2: 90 81 ld r25, Z + else + Port::port(Port::port() & ~(1< + 2d4: 00 c0 rjmp .+0 ; 0x2d6 + 2d6: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2d8: 90 81 ld r25, Z + else + Port::port(Port::port() & ~(1< + 2fa: 00 c0 rjmp .+0 ; 0x2fc + 2fc: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2fe: 90 81 ld r25, Z + else + Port::port(Port::port() & ~(1< + 320: 00 c0 rjmp .+0 ; 0x322 + 322: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 324: 90 81 ld r25, Z + else + Port::port(Port::port() & ~(1< + 346: 00 c0 rjmp .+0 ; 0x348 + 348: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 34a: 90 81 ld r25, Z + else + Port::port(Port::port() & ~(1< + 36c: 00 c0 rjmp .+0 ; 0x36e + 36e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 370: 90 81 ld r25, Z + else + Port::port(Port::port() & ~(1< + 392: 00 c0 rjmp .+0 ; 0x394 + 394: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 396: 90 81 ld r25, Z + else + Port::port(Port::port() & ~(1< + 3b8: 00 c0 rjmp .+0 ; 0x3ba + 3ba: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 3bc: 90 81 ld r25, Z + else + Port::port(Port::port() & ~(1< + 3d2: 00 c0 rjmp .+0 ; 0x3d4 + 3d4: 00 00 nop + 3d6: 28 98 cbi 0x05, 0 ; 5 + 3d8: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) { if (value) - Port::dir(Port::dir() | (1< + 3ec: 00 c0 rjmp .+0 ; 0x3ee + 3ee: 00 00 nop namespace avrlib { struct porth { static uint8_t port() { return PORTH; } - 1ca: 80 81 ld r24, Z + 3f0: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + 40a: 00 c0 rjmp .+0 ; 0x40c + 40c: 00 00 nop + +namespace avrlib { + + struct porth + { + static uint8_t port() { return PORTH; } + 40e: 9c 91 ld r25, X + 410: 90 64 ori r25, 0x40 ; 64 + static void port(uint8_t v) { PORTH = v; } + 412: 9c 93 st X, r25 + 414: 9f ef ldi r25, 0xFF ; 255 + 416: 23 ed ldi r18, 0xD3 ; 211 + 418: 80 e3 ldi r24, 0x30 ; 48 + 41a: 91 50 subi r25, 0x01 ; 1 + 41c: 20 40 sbci r18, 0x00 ; 0 + 41e: 80 40 sbci r24, 0x00 ; 0 + 420: e1 f7 brne .-8 ; 0x41a + 422: 00 c0 rjmp .+0 ; 0x424 + 424: 00 00 nop + +namespace avrlib { + + struct porth + { + static uint8_t port() { return PORTH; } + 426: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + +00000434 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev>: +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 434: a1 98 cbi 0x14, 1 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 436: 99 9a sbi 0x13, 1 ; 19 + 438: 40 9a sbi 0x08, 0 ; 8 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 43a: 38 9a sbi 0x07, 0 ; 7 +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 43c: a0 98 cbi 0x14, 0 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 43e: 98 9a sbi 0x13, 0 ; 19 + + static uint8_t pin() { return PINL; } + static void pin(uint8_t v) { PINL = v; } + + static uint8_t dir() { return DDRL; } + 440: aa e0 ldi r26, 0x0A ; 10 + 442: b1 e0 ldi r27, 0x01 ; 1 + 444: 8c 91 ld r24, X + static bool value() { return (Port::pin() & (1< + 478: 00 c0 rjmp .+0 ; 0x47a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x46> + 47a: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 47c: 80 81 ld r24, Z + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 49a: 00 c0 rjmp .+0 ; 0x49c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x68> + 49c: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 49e: 80 81 ld r24, Z + else + Port::port(Port::port() & ~(1< + 4c2: 00 c0 rjmp .+0 ; 0x4c4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x90> + 4c4: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 4c6: 80 81 ld r24, Z + else + Port::port(Port::port() & ~(1<: + + static uint8_t pin() { return PINH; } + static void pin(uint8_t v) { PINH = v; } + + static uint8_t dir() { return DDRH; } + 4ce: a1 e0 ldi r26, 0x01 ; 1 + 4d0: b1 e0 ldi r27, 0x01 ; 1 + 4d2: 8c 91 ld r24, X + static bool value() { return (Port::pin() & (1<: - 1d2: 07 90 elpm r0, Z+ - 1d4: f6 91 elpm r31, Z - 1d6: e0 2d mov r30, r0 - 1d8: 19 94 eijmp + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } -000001da <_exit>: - 1da: f8 94 cli + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 4e2: 20 9a sbi 0x04, 0 ; 4 +namespace avrlib { -000001dc <__stop_program>: - 1dc: ff cf rjmp .-2 ; 0x1dc <__stop_program> + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 4e4: 28 98 cbi 0x05, 0 ; 5 + + static uint8_t pin() { return PINH; } + static void pin(uint8_t v) { PINH = v; } + + static uint8_t dir() { return DDRH; } + 4e6: 8c 91 ld r24, X + static bool value() { return (Port::pin() & (1< + +ledrotclass rot; +ledgruenclass gruen; +ledgelbclass gelb; +displayclass d; + 4f2: 80 e0 ldi r24, 0x00 ; 0 + 4f4: 92 e0 ldi r25, 0x02 ; 2 + 4f6: 0e 94 1a 02 call 0x434 ; 0x434 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev> + 4fa: 08 95 ret + +000004fc <__tablejump_elpm__>: + 4fc: 07 90 elpm r0, Z+ + 4fe: f6 91 elpm r31, Z + 500: e0 2d mov r30, r0 + 502: 19 94 eijmp + +00000504 <_exit>: + 504: f8 94 cli + +00000506 <__stop_program>: + 506: ff cf rjmp .-2 ; 0x506 <__stop_program> diff --git a/V2/Programm/Programm/Debug/Programm.map b/V2/Programm/Programm/Debug/Programm.map index c912c3d..549223e 100644 --- a/V2/Programm/Programm/Debug/Programm.map +++ b/V2/Programm/Programm/Debug/Programm.map @@ -12,8 +12,8 @@ c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu- Discarded input sections .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6/crtm2560.o + .group 0x00000000 0x8 Programm.o .text 0x00000000 0x0 Programm.o - .bss 0x00000000 0x3 Programm.o .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_exit.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_exit.o) .text.libgcc.mul @@ -182,7 +182,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .rela.plt *(.rela.plt) -.text 0x00000000 0x1de +.text 0x00000000 0x508 *(.vectors) .vectors 0x00000000 0xe4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6/crtm2560.o 0x00000000 __vector_default @@ -298,17 +298,21 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x00000132 __vector_42 0x00000136 . = ALIGN (0x2) *(.text.*) - .text.main 0x00000136 0x76 Programm.o + .text.main 0x00000136 0x2fe Programm.o 0x00000136 main + .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC2Ev + 0x00000434 0x9a Programm.o + 0x00000434 _ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC2Ev + 0x00000434 _ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev .text._GLOBAL__sub_I_rot - 0x000001ac 0x26 Programm.o - .text.libgcc 0x000001d2 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_tablejump_elpm.o) - 0x000001d2 __tablejump_elpm__ - 0x000001da . = ALIGN (0x2) + 0x000004ce 0x2e Programm.o + .text.libgcc 0x000004fc 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_tablejump_elpm.o) + 0x000004fc __tablejump_elpm__ + 0x00000504 . = ALIGN (0x2) *(.fini9) - .fini9 0x000001da 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_exit.o) - 0x000001da _exit - 0x000001da exit + .fini9 0x00000504 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_exit.o) + 0x00000504 _exit + 0x00000504 exit *(.fini9) *(.fini8) *(.fini8) @@ -327,11 +331,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .fini0 0x000001da 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_exit.o) + .fini0 0x00000504 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_exit.o) *(.fini0) - 0x000001de _etext = . + 0x00000508 _etext = . -.data 0x00800200 0x0 load address 0x000001de +.data 0x00800200 0x0 load address 0x00000508 0x00800200 PROVIDE (__data_start, .) *(.data) .data 0x00800200 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6/crtm2560.o @@ -348,21 +352,26 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x00800200 _edata = . 0x00800200 PROVIDE (__data_end, .) -.bss 0x00800200 0x0 +.bss 0x00800200 0x5 0x00800200 PROVIDE (__bss_start, .) *(.bss) + .bss 0x00800200 0x5 Programm.o + 0x00800200 d + 0x00800202 gelb + 0x00800203 gruen + 0x00800204 rot *(.bss*) *(COMMON) - 0x00800200 PROVIDE (__bss_end, .) - 0x000001de __data_load_start = LOADADDR (.data) - 0x000001de __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00800205 PROVIDE (__bss_end, .) + 0x00000508 __data_load_start = LOADADDR (.data) + 0x00000508 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00800200 0x0 - 0x00800200 PROVIDE (__noinit_start, .) +.noinit 0x00800205 0x0 + 0x00800205 PROVIDE (__noinit_start, .) *(.noinit*) - 0x00800200 PROVIDE (__noinit_end, .) - 0x00800200 _end = . - 0x00800200 PROVIDE (__heap_start, .) + 0x00800205 PROVIDE (__noinit_end, .) + 0x00800205 _end = . + 0x00800205 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -420,39 +429,39 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x28 +.debug_aranges 0x00000000 0x30 *(.debug_aranges) .debug_aranges - 0x00000000 0x28 Programm.o + 0x00000000 0x30 Programm.o .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0xee2 +.debug_info 0x00000000 0x4170 *(.debug_info) - .debug_info 0x00000000 0xee2 Programm.o + .debug_info 0x00000000 0x4170 Programm.o *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x2e1 +.debug_abbrev 0x00000000 0x3c6 *(.debug_abbrev) - .debug_abbrev 0x00000000 0x2e1 Programm.o + .debug_abbrev 0x00000000 0x3c6 Programm.o -.debug_line 0x00000000 0x2cd +.debug_line 0x00000000 0x977 *(.debug_line) - .debug_line 0x00000000 0x2cd Programm.o + .debug_line 0x00000000 0x977 Programm.o -.debug_frame 0x00000000 0x34 +.debug_frame 0x00000000 0x44 *(.debug_frame) - .debug_frame 0x00000000 0x34 Programm.o + .debug_frame 0x00000000 0x44 Programm.o -.debug_str 0x00000000 0x693 +.debug_str 0x00000000 0x1866 *(.debug_str) - .debug_str 0x00000000 0x693 Programm.o - 0x6ce (size before relaxing) + .debug_str 0x00000000 0x1866 Programm.o + 0x18a6 (size before relaxing) -.debug_loc 0x00000000 0xf0 +.debug_loc 0x00000000 0x90d *(.debug_loc) - .debug_loc 0x00000000 0xf0 Programm.o + .debug_loc 0x00000000 0x90d Programm.o .debug_macinfo *(.debug_macinfo) @@ -460,9 +469,9 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x60 +.debug_ranges 0x00000000 0x2a8 *(.debug_ranges) - .debug_ranges 0x00000000 0x60 Programm.o + .debug_ranges 0x00000000 0x2a8 Programm.o .debug_macro *(.debug_macro) diff --git a/V2/Programm/Programm/Debug/Programm.srec b/V2/Programm/Programm/Debug/Programm.srec index 267f6ed..5acbd7a 100644 --- a/V2/Programm/Programm/Debug/Programm.srec +++ b/V2/Programm/Programm/Debug/Programm.srec @@ -13,20 +13,71 @@ S11300A00C9499000C9499000C9499000C94990068 S11300B00C9499000C9499000C9499000C94990058 S11300C00C9499000C9499000C9499000C94990048 S11300D00C9499000C9499000C9499000C94990038 -S11300E00C9499000C94D600D60011241FBECFEFB7 +S11300E00C9499000C946702670211241FBECFEF91 S11300F0D1E2DEBFCDBF00E00CBF22E0A0E0B2E061 -S113010001C01D92A030B207E1F710E0CAEED0E0C2 -S113011000E006C022970109FE010BBF0E94E9001E +S113010001C01D92A530B207E1F710E0CAEED0E0BD +S113011000E006C022970109FE010BBF0E947E0287 S1130120C83ED10780E00807A9F70E949B000C9401 -S1130130ED000C940000E2E0F1E0289A2FEF83E256 -S113014094EF215080409040E1F700C000002898CF -S11301508081806480832FEF83ED90E32150804081 -S11301609040E1F700C0000080818F7B8083808114 -S1130170806280832FEF83E294EF2150804090408F -S1130180E1F700C000008081806480832FEF83ED5D -S113019090E3215080409040E1F700C0000080814E -S11301A08F7B808380818F7D8083C7CFA1E0B1E086 -S11301B08C9180628C93E2E0F1E080818F7D80837A -S11301C0209A28988C9180648C9380818F7B808383 -S11101D008950790F691E02D1994F894FFCF4E +S113013082020C940000409888E0A098989AA19AB2 +S1130140999A00C000C00000A198999A8150A9F71B +S113015098E08DEC88231CF4A09A989A02C0A09889 +S1130160989AA19A999A880F00C000C00000A1989B +S1130170999A915079F7409AEBE0F1E08081886098 +S1130180808380818F7B80838081806280831BB8A1 +S11301908081806880838FE99FE00197F1F700C038 +S11301A0000080818F7780830F2EF0E5FF2EF02DE5 +S11301B005E61EE6D9E6C3E76894EE24E5F874E4A0 +S11301C065E753E541E633E60F2EFBE6DF2EF02D1F +S11301D0A2E0B1E090819F7B9083908190629083B4 +S11301E0FBB89081906890838FE99FE00197F1F7C5 +S11301F000C0000090819F77908390819F7B9083C3 +S11302009081906290830BB99081906890838FE97C +S11302109FE00197F1F700C0000090819F779083E1 +S113022090819F7B90839081906290831BB9908191 +S1130230906890838FE99FE00197F1F700C0000078 +S113024090819F77908390819F7B9083908190622F +S11302509083DBB99081906890838FE99FE0019748 +S1130260F1F700C0000090819F77908390819F7B7D +S11302709083908190629083CBB9908190689083B1 +S11302808FE99FE00197F1F700C0000090819F770C +S1130290908390819F7B9083908190629083EBB850 +S11302A09081906890838FE99FE00197F1F700C0F7 +S11302B0000090819F77908390819F7B90839081B1 +S11302C0906290837BB99081906890838FE99FE0DE +S11302D00197F1F700C0000090819F77908390818F +S11302E09F7B90839081906290836BB9908190689A +S11302F090838FE99FE00197F1F700C0000090819F +S11303009F77908390819F7B90839081906290836C +S1130310EBB89081906890838FE99FE00197F1F7A3 +S113032000C0000090819F77908390819F7B908391 +S11303309081906290835BB99081906890838FE9FB +S11303409FE00197F1F700C0000090819F779083B0 +S113035090819F7B90839081906290834BB9908130 +S1130360906890838FE99FE00197F1F700C0000047 +S113037090819F77908390819F7B908390819062FE +S113038090833BB99081906890838FE99FE00197B7 +S1130390F1F700C0000090819F77908390819F7B4C +S11303A09083908190629083DBB890819068908371 +S11303B08FE99FE00197F1F700C0000090819F77DB +S11303C09083289A9FEF27EA81E69150204080404D +S11303D0E1F700C0000028989C9190649C939FEFE3 +S11303E023ED80E3915020408040E1F700C00000FD +S11303F09C919F7B9C939C9190629C939FEF27EA96 +S113040081E6915020408040E1F700C000009C91BB +S113041090649C939FEF23ED80E3915020408040B3 +S1130420E1F700C000009C919F7B9C939C919F7D71 +S11304309C93D0CEA198999A409A389AA098989A69 +S1130440AAE0B1E08C9188608C93EBE0F1E08081CC +S1130450877F80838C9180688C938C9180648C934B +S11304608C9180628C938FEF8AB92FEF81EE94E0A8 +S1130470215080409040E1F700C0000080818F7BD4 +S1130480808380818F7D80838CE08BB980818068BC +S113049080838FE99FE00197F1F700C0000080811D +S11304A08F77808380818F7B808380818F7D808321 +S11304B081E08BB98081806880838FE99FE0019718 +S11304C0F1F700C0000080818F7780830895A1E058 +S11304D0B1E08C9180628C93E2E0F1E080818F7DC9 +S11304E08083209A28988C9180648C9380818F7B60 +S11304F0808380E092E00E941A0208950790F691AA +S10B0500E02D1994F894FFCFDB S9030000FC diff --git a/V2/Programm/Programm/Programm.cpp b/V2/Programm/Programm/Programm.cpp index 270ac5e..391facf 100644 --- a/V2/Programm/Programm/Programm.cpp +++ b/V2/Programm/Programm/Programm.cpp @@ -12,28 +12,43 @@ ledrotclass rot; ledgruenclass gruen; ledgelbclass gelb; +displayclass d; int main(void) { + d.setContrast(20); + d.setBacklight(true); + d.write_char(0); while(1) { - gruen.on(); - _delay_ms(5000); - gruen.off(); + d.write_char('P'); + d.write_char('e'); + d.write_char('n'); + d.write_char('i'); + d.write_char('s'); + d.write_char(' '); + d.write_char('D'); + d.write_char('u'); + d.write_char(' '); + d.write_char('S'); + d.write_char('a'); + d.write_char('c'); + d.write_char('k'); + gruen.on(); + _delay_ms(2000); + gruen.off(); + gelb.on(); _delay_ms(1000); gelb.off(); rot.on(); - _delay_ms(5000); + _delay_ms(2000); gelb.on(); _delay_ms(1000); gelb.off(); rot.off(); - - - } } \ No newline at end of file diff --git a/V2/Programm/Programm/Programm.cppproj b/V2/Programm/Programm/Programm.cppproj index eca4b45..16c031e 100644 --- a/V2/Programm/Programm/Programm.cppproj +++ b/V2/Programm/Programm/Programm.cppproj @@ -144,6 +144,9 @@ + + compile + compile @@ -156,12 +159,21 @@ compile + + compile + compile + + compile + compile + + compile + compile diff --git a/V2/Programm/Programm/io/Display.hpp b/V2/Programm/Programm/io/Display.hpp new file mode 100644 index 0000000..c71f9a8 --- /dev/null +++ b/V2/Programm/Programm/io/Display.hpp @@ -0,0 +1,81 @@ +/* + * Display.hpp + * + * Created: 11.05.2014 22:47:23 + * Author: netz + */ + + +#ifndef DISPLAY_H_ +#define DISPLAY_H_ + +template +class Display { + public: + Display() { + + pen::make_output(); + prw::make_output(); + prs::make_output(); + PortData::dir(0xFF); + _delay_ms(100); + this->on(); + this->clear(); + } + void setContrast(uint8_t level) { + poti.set(level); + } + void setBacklight(bool level) { + if(level) { + backlight.on(); + } else { + backlight.off(); + } + } + void write_char(uint8_t data) { + prw::clear(); + prs::set(); + PortData::port(data); + pen::set(); + _delay_ms(1); + pen::clear(); + } + void clear() { + prw::clear(); + prs::clear(); + PortData::port(0b00000001); + pen::set(); + _delay_ms(1); + pen::clear(); + } + void on() { + prw::clear(); + prs::clear(); + PortData::port(0b00001100); + pen::set(); + _delay_ms(1); + pen::clear(); + } + private: + Mcp4151 poti; + Led backlight; + const typedef avrlib::pin pen; + const typedef avrlib::pin prw; + const typedef avrlib::pin prs; + void ramenablemode() { + prs::set(); + } + void ramdisablemode() { + prs::clear(); + } + void writemode() { + prw::clear(); + } + void readmode() { + prw::set(); + } +}; + + + +#endif /* DISPLAY_H_ */ \ No newline at end of file diff --git a/V2/Programm/Programm/io/hardware/portg.hpp b/V2/Programm/Programm/io/hardware/portg.hpp new file mode 100644 index 0000000..28396f1 --- /dev/null +++ b/V2/Programm/Programm/io/hardware/portg.hpp @@ -0,0 +1,22 @@ +#ifndef AVRLIB_PORTG_HPP +#define AVRLIB_PORTG_HPP + +#include + +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + }; + +} + +#endif diff --git a/V2/Programm/Programm/io/hardware/portl.hpp b/V2/Programm/Programm/io/hardware/portl.hpp new file mode 100644 index 0000000..ab6f3b2 --- /dev/null +++ b/V2/Programm/Programm/io/hardware/portl.hpp @@ -0,0 +1,22 @@ +#ifndef AVRLIB_PORTL_HPP +#define AVRLIB_PORTL_HPP + +#include + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + static void port(uint8_t v) { PORTL = v; } + + static uint8_t pin() { return PINL; } + static void pin(uint8_t v) { PINL = v; } + + static uint8_t dir() { return DDRL; } + static void dir(uint8_t v) { DDRL = v; } + }; + +} + +#endif diff --git a/V2/Programm/Programm/io/mcp4151.hpp b/V2/Programm/Programm/io/mcp4151.hpp new file mode 100644 index 0000000..2e94d0f --- /dev/null +++ b/V2/Programm/Programm/io/mcp4151.hpp @@ -0,0 +1,92 @@ +/* + * Spi.h + * + * Created: 06.11.2013 15:41:34 + * Author: netz + */ + + +#ifndef MCP4151_H_ +#define MCP4151_H_ + +#include +#include "hardware/pin.hpp" + +template +class Mcp4151 { + public: + const static uint16_t MAX = 256; + const static uint16_t MIN = 185; + Mcp4151() { + this->init(); + } + void CSOn() { + cs::clear(); + } + void CSOff() { + cs::set(); + } + void digitalPotWrite(uint16_t value) { + this->CSOn(); + this->send_soft((value>>8)&0b00000001); //high byte least significant bit + this->send_soft(value & 0xff); + this->CSOff(); + } + void set(uint8_t v) { + this->digitalPotWrite(MIN+v); + } + void set_max() { + this->digitalPotWrite(MAX); + } + void set_min() { + this->digitalPotWrite(MIN); + } + uint8_t read() { + sdi::make_input(); + return this->read_soft(); + } + private: + const typedef avrlib::pin cs; + const typedef avrlib::pin sdi; + const typedef avrlib::pin sck; + void init() { + this->init_port(); + //this->wiper_pos(0, 200); //Clear Poti + } + void init_port() { + sck::make_low(); //output und low; + cs::make_high(); //output und low; + sdi::make_low(); //output und low; + } + void send_soft(uint8_t data) { + for (uint8_t i=0; i<8; i++) + { + if (data & 0x80) { + sdi::make_high(); + } + else { + sdi::make_low(); + } + sck::make_high(); + data<<=1; + _delay_us(0.3); + sck::make_low(); + } + } + uint8_t read_soft() { + uint8_t datain=0; + for (uint8_t i=0; i<8; i++) + { + datain <<= 1; + if(sdi::read()) { + datain |= 1; + } + sck::make_high(); + _delay_us(0.3); + sck::make_low(); + } + return datain; + } +}; + +#endif /* MCP4151_H_ */ \ No newline at end of file diff --git a/V2/Programm/Programm/peripheral.h b/V2/Programm/Programm/peripheral.h index 9db5eaa..1929dfc 100644 --- a/V2/Programm/Programm/peripheral.h +++ b/V2/Programm/Programm/peripheral.h @@ -12,7 +12,11 @@ #define F_CPU 16000000 #include "io/hardware/portb.hpp" +#include "io/hardware/portc.hpp" +#include "io/hardware/portd.hpp" +#include "io/hardware/portg.hpp" #include "io/hardware/porth.hpp" +#include "io/hardware/portl.hpp" #include "io/Led.hpp" typedef Led< @@ -27,7 +31,30 @@ typedef Led< avrlib::porth, //LED an PORTB PINH5 //Rot > ledrotclass; +typedef Led< + avrlib::portl, + PINL3 +> ledlcdclass; +#include "io/mcp4151.hpp" +typedef Mcp4151< // + avrlib::portc, + PINC0, + avrlib::portg, + PING0, + avrlib::portg, + PING1 +> lcdpoticlass; +#include "io/Display.hpp" +typedef Display< // + lcdpoticlass, + ledlcdclass, + avrlib::portd, + avrlib::portl, + PINL7, + PINL6, + PINL5 +> displayclass; #endif /* PERIPHERAL_H_ */ \ No newline at end of file