diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6.atsuo b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6.atsuo index 1659353..4457a45 100644 Binary files a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6.atsuo and b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6.atsuo differ diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Makefile b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Makefile index 83111d1..eda825a 100644 --- a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Makefile +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Makefile @@ -32,7 +32,8 @@ LIB_DEP:= # Every subdirectory with source files must be described here SUBDIRS := \ -../io +../io \ +../io/hardware # Add inputs and outputs from these tool invocations to the build variables diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.d b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.d new file mode 100644 index 0000000..5e2aa66 --- /dev/null +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.d @@ -0,0 +1,80 @@ +Zeitschaltung_V6.d Zeitschaltung_V6.o: .././Zeitschaltung_V6.cpp \ + .././config.h .././peripheral.h .././io/hardware/portb.hpp \ + 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/include/avr/io.h \ + 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/include/avr/sfr_defs.h \ + 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/include/inttypes.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdint.h \ + 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/include/stdint.h \ + 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/include/avr/iom168a.h \ + 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/include/avr/iom168.h \ + 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/include/avr/iomx8.h \ + 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/include/avr/portpins.h \ + 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/include/avr/common.h \ + 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/include/avr/version.h \ + 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/include/avr/fuse.h \ + 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/include/avr/lock.h \ + .././io/hardware/portc.hpp .././io/hardware/portd.hpp .././io/Led.hpp \ + .././io/hardware/pin.hpp .././io/Servo.hpp \ + 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/include/avr/interrupt.h \ + 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/include/util/delay.h \ + 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/include/util/delay_basic.h \ + 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/include/math.h \ + .././io/Start.hpp .././io/Spi.hpp .././io/../config.h .././io/rfm12.hpp + +.././config.h: + +.././peripheral.h: + +.././io/hardware/portb.hpp: + +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/include/avr/io.h: + +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/include/avr/sfr_defs.h: + +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/include/inttypes.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdint.h: + +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/include/stdint.h: + +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/include/avr/iom168a.h: + +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/include/avr/iom168.h: + +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/include/avr/iomx8.h: + +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/include/avr/portpins.h: + +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/include/avr/common.h: + +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/include/avr/version.h: + +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/include/avr/fuse.h: + +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/include/avr/lock.h: + +.././io/hardware/portc.hpp: + +.././io/hardware/portd.hpp: + +.././io/Led.hpp: + +.././io/hardware/pin.hpp: + +.././io/Servo.hpp: + +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/include/avr/interrupt.h: + +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/include/util/delay.h: + +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/include/util/delay_basic.h: + +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/include/math.h: + +.././io/Start.hpp: + +.././io/Spi.hpp: + +.././io/../config.h: + +.././io/rfm12.hpp: diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.elf b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.elf index 1a4ead0..890116d 100644 Binary files a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.elf and b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.elf differ diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.hex b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.hex index df601e6..62c8783 100644 --- a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.hex +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.hex @@ -2,16 +2,23 @@ :100010000C9452000C9452000C9452000C94520018 :100020000C9452000C9452000C9452000C94520008 :100030000C9452000C9452000C9452000C945200F8 -:100040000C9452000C9452000C9452000C945200E8 +:100040000C945F000C9452000C9452000C945200DB :100050000C9452000C9452000C9452000C945200D8 -:100060000C9452000C9452006C0011241FBECFEF70 +:100060000C9452000C945200950011241FBECFEF47 :10007000D4E0DEBFCDBF21E0A0E0B1E001C01D9221 -:10008000A130B207E1F710E0CAE6D0E004C0229741 -:10009000FE010E947300C836D107C9F70E945400C0 -:1000A0000C9477000C9400005E9A569A5F98579AC9 -:1000B0005E9A569A5F9A579A5E98569A5F9A579A9E -:1000C0005E98569A5F98579AEFCF579A569A5E98CD -:1000D000569A5F98579A089580E091E00E946500D3 -:1000E0000895EE0FFF1F0590F491E02D0994F89408 -:0200F000FFCF40 +:10008000A330B207E1F710E0CAE6D0E004C022973F +:10009000FE010E94B000C836D107C9F70E94540083 +:1000A0000C94B4000C9400005E98569A5F98579A8E +:1000B0004B99FACF5E9A569A5F98579AF5CF1F924E +:1000C0000F920FB60F9211242F933F938F939F930C +:1000D00084E686BD2A9A229A8FEF94E00197F1F781 +:1000E00000C0000080910101882369F080E090E069 +:1000F00025E12A95F1F7000001962091010130E0F9 +:1001000082179307A8F32A98229A9F918F913F9183 +:100110002F910F900FBE0F901F901895579A569AD7 +:100120005E98569A5F98579A089582E091E00E94EF +:100130008E0010920101219A2998219A229A14BCCA +:1001400085E085BD84E686BD17BC18BC81E0809340 +:100150006E00789453985B985B9A0895EE0FFF1F9A +:0C0160000590F491E02D0994F894FFCF75 :00000001FF diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.lss b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.lss index 7d08065..8143a75 100644 --- a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.lss +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.lss @@ -3,31 +3,33 @@ Zeitschaltung_V6.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000000 00800100 000000f2 00000186 2**0 + 0 .data 00000000 00800100 0000016c 00000200 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 000000f2 00000000 00000000 00000094 2**1 + 1 .text 0000016c 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 00000001 00800100 00800100 00000186 2**0 + 2 .bss 00000003 00800100 00800100 00000200 2**0 ALLOC - 3 .stab 000006cc 00000000 00000000 00000188 2**2 + 3 .stab 000006cc 00000000 00000000 00000200 2**2 CONTENTS, READONLY, DEBUGGING - 4 .stabstr 00000082 00000000 00000000 00000854 2**0 + 4 .stabstr 00000082 00000000 00000000 000008cc 2**0 CONTENTS, READONLY, DEBUGGING - 5 .comment 0000002f 00000000 00000000 000008d6 2**0 + 5 .comment 0000002f 00000000 00000000 0000094e 2**0 CONTENTS, READONLY - 6 .debug_aranges 00000030 00000000 00000000 00000905 2**0 + 6 .debug_aranges 00000038 00000000 00000000 0000097d 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_info 00000abc 00000000 00000000 00000935 2**0 + 7 .debug_info 0000136b 00000000 00000000 000009b5 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_abbrev 00000293 00000000 00000000 000013f1 2**0 + 8 .debug_abbrev 0000038d 00000000 00000000 00001d20 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_line 000001aa 00000000 00000000 00001684 2**0 + 9 .debug_line 00000290 00000000 00000000 000020ad 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_frame 00000044 00000000 00000000 00001830 2**2 + 10 .debug_frame 00000074 00000000 00000000 00002340 2**2 CONTENTS, READONLY, DEBUGGING - 11 .debug_str 000004da 00000000 00000000 00001874 2**0 + 11 .debug_str 00000c3b 00000000 00000000 000023b4 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_ranges 00000020 00000000 00000000 00001d4e 2**0 + 12 .debug_loc 000000cc 00000000 00000000 00002fef 2**0 + CONTENTS, READONLY, DEBUGGING + 13 .debug_ranges 00000028 00000000 00000000 000030bb 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -49,7 +51,7 @@ Disassembly of section .text: 34: 0c 94 52 00 jmp 0xa4 ; 0xa4 <__bad_interrupt> 38: 0c 94 52 00 jmp 0xa4 ; 0xa4 <__bad_interrupt> 3c: 0c 94 52 00 jmp 0xa4 ; 0xa4 <__bad_interrupt> - 40: 0c 94 52 00 jmp 0xa4 ; 0xa4 <__bad_interrupt> + 40: 0c 94 5f 00 jmp 0xbe ; 0xbe <__vector_16> 44: 0c 94 52 00 jmp 0xa4 ; 0xa4 <__bad_interrupt> 48: 0c 94 52 00 jmp 0xa4 ; 0xa4 <__bad_interrupt> 4c: 0c 94 52 00 jmp 0xa4 ; 0xa4 <__bad_interrupt> @@ -61,7 +63,7 @@ Disassembly of section .text: 64: 0c 94 52 00 jmp 0xa4 ; 0xa4 <__bad_interrupt> 00000068 <__ctors_start>: - 68: 6c 00 .word 0x006c ; ???? + 68: 95 00 .word 0x0095 ; ???? 0000006a <__ctors_end>: 6a: 11 24 eor r1, r1 @@ -81,7 +83,7 @@ Disassembly of section .text: 7e: 1d 92 st X+, r1 00000080 <.do_clear_bss_start>: - 80: a1 30 cpi r26, 0x01 ; 1 + 80: a3 30 cpi r26, 0x03 ; 3 82: b2 07 cpc r27, r18 84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop> @@ -92,12 +94,12 @@ Disassembly of section .text: 8c: 04 c0 rjmp .+8 ; 0x96 <__do_global_ctors+0x10> 8e: 22 97 sbiw r28, 0x02 ; 2 90: fe 01 movw r30, r28 - 92: 0e 94 73 00 call 0xe6 ; 0xe6 <__tablejump__> + 92: 0e 94 b0 00 call 0x160 ; 0x160 <__tablejump__> 96: c8 36 cpi r28, 0x68 ; 104 98: d1 07 cpc r29, r17 9a: c9 f7 brne .-14 ; 0x8e <__do_global_ctors+0x8> 9c: 0e 94 54 00 call 0xa8 ; 0xa8
- a0: 0c 94 77 00 jmp 0xee ; 0xee <_exit> + a0: 0c 94 b4 00 jmp 0x168 ; 0x168 <_exit> 000000a4 <__bad_interrupt>: a4: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> @@ -109,7 +111,7 @@ namespace avrlib { { static uint8_t port() { return PORTD; } static void port(uint8_t v) { PORTD = v; } - a8: 5e 9a sbi 0x0b, 6 ; 11 + a8: 5e 98 cbi 0x0b, 6 ; 11 static uint8_t pin() { return PIND; } static void pin(uint8_t v) { PIND = v; } @@ -131,149 +133,255 @@ namespace avrlib { static uint8_t dir() { return DDRD; } static void dir(uint8_t v) { DDRD = v; } ae: 57 9a sbi 0x0a, 7 ; 10 +{ + + while(1) + { + l.color(l.BLACK); + if(st.is_pressed()) { + b0: 4b 99 sbic 0x09, 3 ; 9 + b2: fa cf rjmp .-12 ; 0xa8
namespace avrlib { struct portd { static uint8_t port() { return PORTD; } static void port(uint8_t v) { PORTD = v; } - b0: 5e 9a sbi 0x0b, 6 ; 11 + b4: 5e 9a sbi 0x0b, 6 ; 11 static uint8_t pin() { return PIND; } static void pin(uint8_t v) { PIND = v; } static uint8_t dir() { return DDRD; } static void dir(uint8_t v) { DDRD = v; } - b2: 56 9a sbi 0x0a, 6 ; 10 + b6: 56 9a sbi 0x0a, 6 ; 10 namespace avrlib { struct portd { static uint8_t port() { return PORTD; } static void port(uint8_t v) { PORTD = v; } - b4: 5f 9a sbi 0x0b, 7 ; 11 + b8: 5f 98 cbi 0x0b, 7 ; 11 static uint8_t pin() { return PIND; } static void pin(uint8_t v) { PIND = v; } static uint8_t dir() { return DDRD; } static void dir(uint8_t v) { DDRD = v; } - b6: 57 9a sbi 0x0a, 7 ; 10 + ba: 57 9a sbi 0x0a, 7 ; 10 + bc: f5 cf rjmp .-22 ; 0xa8
+ +000000be <__vector_16>: + l.color(l.GREEN); + } + } +} + +ISR(TIMER0_OVF_vect) { + be: 1f 92 push r1 + c0: 0f 92 push r0 + c2: 0f b6 in r0, 0x3f ; 63 + c4: 0f 92 push r0 + c6: 11 24 eor r1, r1 + c8: 2f 93 push r18 + ca: 3f 93 push r19 + cc: 8f 93 push r24 + ce: 9f 93 push r25 + } + void off() { + servo_act::make_low(); + } + void timer() { + TCNT0 = 0x64; // Reinitialize Timer 0 value + d0: 84 e6 ldi r24, 0x64 ; 100 + d2: 86 bd out 0x26, r24 ; 38 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + d4: 2a 9a sbi 0x05, 2 ; 5 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + d6: 22 9a sbi 0x04, 2 ; 4 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + d8: 8f ef ldi r24, 0xFF ; 255 + da: 94 e0 ldi r25, 0x04 ; 4 + dc: 01 97 sbiw r24, 0x01 ; 1 + de: f1 f7 brne .-4 ; 0xdc <__vector_16+0x1e> + e0: 00 c0 rjmp .+0 ; 0xe2 <__vector_16+0x24> + e2: 00 00 nop + servo_io::make_high(); + _delay_us(s_left); + for(uint16_t i = 0; i < servopos; i++) { + e4: 80 91 01 01 lds r24, 0x0101 + e8: 88 23 and r24, r24 + ea: 69 f0 breq .+26 ; 0x106 <__vector_16+0x48> + ec: 80 e0 ldi r24, 0x00 ; 0 + ee: 90 e0 ldi r25, 0x00 ; 0 + f0: 25 e1 ldi r18, 0x15 ; 21 + f2: 2a 95 dec r18 + f4: f1 f7 brne .-4 ; 0xf2 <__vector_16+0x34> + f6: 00 00 nop + f8: 01 96 adiw r24, 0x01 ; 1 + fa: 20 91 01 01 lds r18, 0x0101 + fe: 30 e0 ldi r19, 0x00 ; 0 + 100: 82 17 cp r24, r18 + 102: 93 07 cpc r25, r19 + 104: a8 f3 brcs .-22 ; 0xf0 <__vector_16+0x32> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 106: 2a 98 cbi 0x05, 2 ; 5 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 108: 22 9a sbi 0x04, 2 ; 4 + s.timer(); + 10a: 9f 91 pop r25 + 10c: 8f 91 pop r24 + 10e: 3f 91 pop r19 + 110: 2f 91 pop r18 + 112: 0f 90 pop r0 + 114: 0f be out 0x3f, r0 ; 63 + 116: 0f 90 pop r0 + 118: 1f 90 pop r1 + 11a: 18 95 reti + +0000011c <_ZN3LedIN6avrlib5portdELi7ELi6EE4initEv>: + 11c: 57 9a sbi 0x0a, 7 ; 10 + 11e: 56 9a sbi 0x0a, 6 ; 10 namespace avrlib { struct portd { static uint8_t port() { return PORTD; } static void port(uint8_t v) { PORTD = v; } - b8: 5e 98 cbi 0x0b, 6 ; 11 + 120: 5e 98 cbi 0x0b, 6 ; 11 static uint8_t pin() { return PIND; } static void pin(uint8_t v) { PIND = v; } static uint8_t dir() { return DDRD; } static void dir(uint8_t v) { DDRD = v; } - ba: 56 9a sbi 0x0a, 6 ; 10 + 122: 56 9a sbi 0x0a, 6 ; 10 namespace avrlib { struct portd { static uint8_t port() { return PORTD; } static void port(uint8_t v) { PORTD = v; } - bc: 5f 9a sbi 0x0b, 7 ; 11 + 124: 5f 98 cbi 0x0b, 7 ; 11 static uint8_t pin() { return PIND; } static void pin(uint8_t v) { PIND = v; } static uint8_t dir() { return DDRD; } static void dir(uint8_t v) { DDRD = v; } - be: 57 9a sbi 0x0a, 7 ; 10 -namespace avrlib { + 126: 57 9a sbi 0x0a, 7 ; 10 + 128: 08 95 ret - struct portd - { - static uint8_t port() { return PORTD; } - static void port(uint8_t v) { PORTD = v; } - c0: 5e 98 cbi 0x0b, 6 ; 11 - - static uint8_t pin() { return PIND; } - static void pin(uint8_t v) { PIND = v; } - - static uint8_t dir() { return DDRD; } - static void dir(uint8_t v) { DDRD = v; } - c2: 56 9a sbi 0x0a, 6 ; 10 -namespace avrlib { - - struct portd - { - static uint8_t port() { return PORTD; } - static void port(uint8_t v) { PORTD = v; } - c4: 5f 98 cbi 0x0b, 7 ; 11 - - static uint8_t pin() { return PIND; } - static void pin(uint8_t v) { PIND = v; } - - static uint8_t dir() { return DDRD; } - static void dir(uint8_t v) { DDRD = v; } - c6: 57 9a sbi 0x0a, 7 ; 10 - c8: ef cf rjmp .-34 ; 0xa8
- -000000ca <_ZN3LedIN6avrlib5portdELi7ELi6EE4initEv>: - ca: 57 9a sbi 0x0a, 7 ; 10 - cc: 56 9a sbi 0x0a, 6 ; 10 -namespace avrlib { - - struct portd - { - static uint8_t port() { return PORTD; } - static void port(uint8_t v) { PORTD = v; } - ce: 5e 98 cbi 0x0b, 6 ; 11 - - static uint8_t pin() { return PIND; } - static void pin(uint8_t v) { PIND = v; } - - static uint8_t dir() { return DDRD; } - static void dir(uint8_t v) { DDRD = v; } - d0: 56 9a sbi 0x0a, 6 ; 10 -namespace avrlib { - - struct portd - { - static uint8_t port() { return PORTD; } - static void port(uint8_t v) { PORTD = v; } - d2: 5f 98 cbi 0x0b, 7 ; 11 - - static uint8_t pin() { return PIND; } - static void pin(uint8_t v) { PIND = v; } - - static uint8_t dir() { return DDRD; } - static void dir(uint8_t v) { DDRD = v; } - d4: 57 9a sbi 0x0a, 7 ; 10 - d6: 08 95 ret - -000000d8 <_GLOBAL__sub_I_l>: +0000012a <_GLOBAL__sub_I_l>: template class Led { public: Led() { init(); - d8: 80 e0 ldi r24, 0x00 ; 0 - da: 91 e0 ldi r25, 0x01 ; 1 - dc: 0e 94 65 00 call 0xca ; 0xca <_ZN3LedIN6avrlib5portdELi7ELi6EE4initEv> - e0: 08 95 ret + 12a: 82 e0 ldi r24, 0x02 ; 2 + 12c: 91 e0 ldi r25, 0x01 ; 1 + 12e: 0e 94 8e 00 call 0x11c ; 0x11c <_ZN3LedIN6avrlib5portdELi7ELi6EE4initEv> + static const uint16_t MIDDLE = s_middle; + static const uint16_t RIGHT = s_right; + private: + uint8_t servopos; + void init() { + this->servopos = 0; + 132: 10 92 01 01 sts 0x0101, r1 + 136: 21 9a sbi 0x04, 1 ; 4 +namespace avrlib { -000000e2 <__tablejump2__>: - e2: ee 0f add r30, r30 - e4: ff 1f adc r31, r31 + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 138: 29 98 cbi 0x05, 1 ; 5 -000000e6 <__tablejump__>: - e6: 05 90 lpm r0, Z+ - e8: f4 91 lpm r31, Z - ea: e0 2d mov r30, r0 - ec: 09 94 ijmp + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } -000000ee <_exit>: - ee: f8 94 cli + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 13a: 21 9a sbi 0x04, 1 ; 4 + 13c: 22 9a sbi 0x04, 2 ; 4 + // Clock value: 7,813 kHz + // Mode: Normal top=0xFF + // OC0A output: Disconnected + // OC0B output: Disconnected + // Timer Period: 19,968 ms + TCCR0A=(0<: - f0: ff cf rjmp .-2 ; 0xf0 <__stop_program> + // Timer/Counter 0 Interrupt(s) initialization + TIMSK0=(0<servopos = 0; + servo_act::make_output(); + servo_act::make_low(); + servo_io::make_output(); + this->init_timer(); + sei(); + 152: 78 94 sei + 154: 53 98 cbi 0x0a, 3 ; 10 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 156: 5b 98 cbi 0x0b, 3 ; 11 + 158: 5b 9a sbi 0x0b, 3 ; 11 + 15a: 08 95 ret + +0000015c <__tablejump2__>: + 15c: ee 0f add r30, r30 + 15e: ff 1f adc r31, r31 + +00000160 <__tablejump__>: + 160: 05 90 lpm r0, Z+ + 162: f4 91 lpm r31, Z + 164: e0 2d mov r30, r0 + 166: 09 94 ijmp + +00000168 <_exit>: + 168: f8 94 cli + +0000016a <__stop_program>: + 16a: ff cf rjmp .-2 ; 0x16a <__stop_program> diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.map b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.map index 796be1e..4b3253d 100644 --- a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.map +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.map @@ -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 0xf2 +.text 0x00000000 0x16c *(.vectors) .vectors 0x00000000 0x68 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/avr5/crtm168a.o 0x00000000 __vector_default @@ -262,26 +262,28 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x000000a4 __vector_8 0x000000a4 __vector_14 0x000000a4 __vector_10 - 0x000000a4 __vector_16 0x000000a4 __vector_18 0x000000a4 __vector_20 0x000000a8 . = ALIGN (0x2) *(.text.*) - .text.main 0x000000a8 0x22 Zeitschaltung_V6.o + .text.main 0x000000a8 0x16 Zeitschaltung_V6.o 0x000000a8 main + .text.__vector_16 + 0x000000be 0x5e Zeitschaltung_V6.o + 0x000000be __vector_16 .text._ZN3LedIN6avrlib5portdELi7ELi6EE4initEv - 0x000000ca 0xe Zeitschaltung_V6.o - 0x000000ca _ZN3LedIN6avrlib5portdELi7ELi6EE4initEv + 0x0000011c 0xe Zeitschaltung_V6.o + 0x0000011c _ZN3LedIN6avrlib5portdELi7ELi6EE4initEv .text._GLOBAL__sub_I_l - 0x000000d8 0xa Zeitschaltung_V6.o - .text.libgcc 0x000000e2 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) - 0x000000e2 __tablejump2__ - 0x000000e6 __tablejump__ - 0x000000ee . = ALIGN (0x2) + 0x0000012a 0x32 Zeitschaltung_V6.o + .text.libgcc 0x0000015c 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) + 0x0000015c __tablejump2__ + 0x00000160 __tablejump__ + 0x00000168 . = ALIGN (0x2) *(.fini9) - .fini9 0x000000ee 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/avr5\libgcc.a(_exit.o) - 0x000000ee _exit - 0x000000ee exit + .fini9 0x00000168 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/avr5\libgcc.a(_exit.o) + 0x00000168 _exit + 0x00000168 exit *(.fini9) *(.fini8) *(.fini8) @@ -300,11 +302,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .fini0 0x000000ee 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/avr5\libgcc.a(_exit.o) + .fini0 0x00000168 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/avr5\libgcc.a(_exit.o) *(.fini0) - 0x000000f2 _etext = . + 0x0000016c _etext = . -.data 0x00800100 0x0 load address 0x000000f2 +.data 0x00800100 0x0 load address 0x0000016c 0x00800100 PROVIDE (__data_start, .) *(.data) .data 0x00800100 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/avr5/crtm168a.o @@ -321,23 +323,25 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x00800100 _edata = . 0x00800100 PROVIDE (__data_end, .) -.bss 0x00800100 0x1 +.bss 0x00800100 0x3 0x00800100 PROVIDE (__bss_start, .) *(.bss) - .bss 0x00800100 0x1 Zeitschaltung_V6.o - 0x00800100 l + .bss 0x00800100 0x3 Zeitschaltung_V6.o + 0x00800100 st + 0x00800101 s + 0x00800102 l *(.bss*) *(COMMON) - 0x00800101 PROVIDE (__bss_end, .) - 0x000000f2 __data_load_start = LOADADDR (.data) - 0x000000f2 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00800103 PROVIDE (__bss_end, .) + 0x0000016c __data_load_start = LOADADDR (.data) + 0x0000016c __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00800101 0x0 - 0x00800101 PROVIDE (__noinit_start, .) +.noinit 0x00800103 0x0 + 0x00800103 PROVIDE (__noinit_start, .) *(.noinit*) - 0x00800101 PROVIDE (__noinit_end, .) - 0x00800101 _end = . - 0x00800101 PROVIDE (__heap_start, .) + 0x00800103 PROVIDE (__noinit_end, .) + 0x00800103 _end = . + 0x00800103 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -395,38 +399,39 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x30 +.debug_aranges 0x00000000 0x38 *(.debug_aranges) .debug_aranges - 0x00000000 0x30 Zeitschaltung_V6.o + 0x00000000 0x38 Zeitschaltung_V6.o .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0xabc +.debug_info 0x00000000 0x136b *(.debug_info) - .debug_info 0x00000000 0xabc Zeitschaltung_V6.o + .debug_info 0x00000000 0x136b Zeitschaltung_V6.o *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x293 +.debug_abbrev 0x00000000 0x38d *(.debug_abbrev) - .debug_abbrev 0x00000000 0x293 Zeitschaltung_V6.o + .debug_abbrev 0x00000000 0x38d Zeitschaltung_V6.o -.debug_line 0x00000000 0x1aa +.debug_line 0x00000000 0x290 *(.debug_line) - .debug_line 0x00000000 0x1aa Zeitschaltung_V6.o + .debug_line 0x00000000 0x290 Zeitschaltung_V6.o -.debug_frame 0x00000000 0x44 +.debug_frame 0x00000000 0x74 *(.debug_frame) - .debug_frame 0x00000000 0x44 Zeitschaltung_V6.o + .debug_frame 0x00000000 0x74 Zeitschaltung_V6.o -.debug_str 0x00000000 0x4da +.debug_str 0x00000000 0xc3b *(.debug_str) - .debug_str 0x00000000 0x4da Zeitschaltung_V6.o - 0x51a (size before relaxing) + .debug_str 0x00000000 0xc3b Zeitschaltung_V6.o + 0xc81 (size before relaxing) -.debug_loc +.debug_loc 0x00000000 0xcc *(.debug_loc) + .debug_loc 0x00000000 0xcc Zeitschaltung_V6.o .debug_macinfo *(.debug_macinfo) @@ -434,9 +439,9 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x20 +.debug_ranges 0x00000000 0x28 *(.debug_ranges) - .debug_ranges 0x00000000 0x20 Zeitschaltung_V6.o + .debug_ranges 0x00000000 0x28 Zeitschaltung_V6.o .debug_macro *(.debug_macro) diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.srec b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.srec index 2b9db6f..abcb4b4 100644 --- a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.srec +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/Zeitschaltung_V6.srec @@ -3,16 +3,23 @@ S11300000C9435000C9452000C9452000C94520041 S11300100C9452000C9452000C9452000C94520014 S11300200C9452000C9452000C9452000C94520004 S11300300C9452000C9452000C9452000C945200F4 -S11300400C9452000C9452000C9452000C945200E4 +S11300400C945F000C9452000C9452000C945200D7 S11300500C9452000C9452000C9452000C945200D4 -S11300600C9452000C9452006C0011241FBECFEF6C +S11300600C9452000C945200950011241FBECFEF43 S1130070D4E0DEBFCDBF21E0A0E0B1E001C01D921D -S1130080A130B207E1F710E0CAE6D0E004C022973D -S1130090FE010E947300C836D107C9F70E945400BC -S11300A00C9477000C9400005E9A569A5F98579AC5 -S11300B05E9A569A5F9A579A5E98569A5F9A579A9A -S11300C05E98569A5F98579AEFCF579A569A5E98C9 -S11300D0569A5F98579A089580E091E00E946500CF -S11300E00895EE0FFF1F0590F491E02D0994F89404 -S10500F0FFCF3C +S1130080A330B207E1F710E0CAE6D0E004C022973B +S1130090FE010E94B000C836D107C9F70E9454007F +S11300A00C94B4000C9400005E98569A5F98579A8A +S11300B04B99FACF5E9A569A5F98579AF5CF1F924A +S11300C00F920FB60F9211242F933F938F939F9308 +S11300D084E686BD2A9A229A8FEF94E00197F1F77D +S11300E000C0000080910101882369F080E090E065 +S11300F025E12A95F1F7000001962091010130E0F5 +S113010082179307A8F32A98229A9F918F913F917F +S11301102F910F900FBE0F901F901895579A569AD3 +S11301205E98569A5F98579A089582E091E00E94EB +S11301308E0010920101219A2998219A229A14BCC6 +S113014085E085BD84E686BD17BC18BC81E080933C +S11301506E00789453985B985B9A0895EE0FFF1F96 +S10F01600590F491E02D0994F894FFCF71 S9030000FC diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/io/.gitignore b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/io/hardware/.gitignore similarity index 100% rename from V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/io/.gitignore rename to V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Debug/io/hardware/.gitignore diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Release/Makefile b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Release/Makefile index 7de7106..ef08fe1 100644 --- a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Release/Makefile +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Release/Makefile @@ -32,7 +32,8 @@ LIB_DEP:= # Every subdirectory with source files must be described here SUBDIRS := \ -../io +../io \ +../io/hardware # Add inputs and outputs from these tool invocations to the build variables diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Release/Zeitschaltung_V6.d b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Release/Zeitschaltung_V6.d index 36e007e..542ec52 100644 --- a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Release/Zeitschaltung_V6.d +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Release/Zeitschaltung_V6.d @@ -1,5 +1,5 @@ Zeitschaltung_V6.d Zeitschaltung_V6.o: .././Zeitschaltung_V6.cpp \ - .././config.h .././peripheral.h .././io/Led.hpp .././io/pin.hpp \ + .././config.h .././peripheral.h .././io/hardware/portd.hpp \ 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/include/avr/io.h \ 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/include/avr/sfr_defs.h \ 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/include/inttypes.h \ @@ -13,7 +13,8 @@ Zeitschaltung_V6.d Zeitschaltung_V6.o: .././Zeitschaltung_V6.cpp \ 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/include/avr/version.h \ 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/include/avr/fuse.h \ 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/include/avr/lock.h \ - .././io/portd.hpp \ + .././io/hardware/portc.hpp .././io/Led.hpp .././io/hardware/pin.hpp \ + .././io/Spi.hpp .././io/../config.h \ 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/include/util/delay.h \ 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/include/util/delay_basic.h \ 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/include/math.h @@ -22,9 +23,7 @@ Zeitschaltung_V6.d Zeitschaltung_V6.o: .././Zeitschaltung_V6.cpp \ .././peripheral.h: -.././io/Led.hpp: - -.././io/pin.hpp: +.././io/hardware/portd.hpp: 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/include/avr/io.h: @@ -52,7 +51,15 @@ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8- 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/include/avr/lock.h: -.././io/portd.hpp: +.././io/hardware/portc.hpp: + +.././io/Led.hpp: + +.././io/hardware/pin.hpp: + +.././io/Spi.hpp: + +.././io/../config.h: 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/include/util/delay.h: diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Release/io/.gitignore b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Release/io/hardware/.gitignore similarity index 100% rename from V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Release/io/.gitignore rename to V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Release/io/hardware/.gitignore diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Zeitschaltung_V6.cpp b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Zeitschaltung_V6.cpp index 95aa421..a51a312 100644 --- a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Zeitschaltung_V6.cpp +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Zeitschaltung_V6.cpp @@ -9,18 +9,21 @@ #include ledclass l; +servoclass s; +startclass st; int main(void) { + while(1) { - l.color(l.GREEN); - _delay_ms(500); - l.color(l.YELLOW); - _delay_ms(500); - l.color(l.RED); - _delay_ms(500); l.color(l.BLACK); - _delay_ms(500); + if(st.is_pressed()) { + l.color(l.GREEN); + } } -} \ No newline at end of file +} + +ISR(TIMER0_OVF_vect) { + s.timer(); +} \ No newline at end of file diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Zeitschaltung_V6.cppproj b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Zeitschaltung_V6.cppproj index 4c06f89..661288c 100644 --- a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Zeitschaltung_V6.cppproj +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/Zeitschaltung_V6.cppproj @@ -36,19 +36,19 @@ - JTAG + ISP com.atmel.avrdbg.tool.ispmk2 - com.atmel.avrdbg.tool.ispmk2 - AVRISP mkII - 0000000000000 - + com.atmel.avrdbg.tool.ispmk2 + AVRISP mkII + 0000000000000 + 127.0.0.1 59286 False - - JTAG + + ISP 249000 1000000 @@ -62,6 +62,17 @@ + + com.atmel.avrdbg.tool.simulator + Simulator + + + + 127.0.0.1 + 50091 + False + + @@ -153,16 +164,31 @@ compile + + compile + + + compile + + + compile + + + compile + compile - + compile - + compile - + + compile + + compile @@ -174,6 +200,7 @@ + \ No newline at end of file diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/Led.hpp b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/Led.hpp index eab460f..67c44d7 100644 --- a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/Led.hpp +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/Led.hpp @@ -8,7 +8,7 @@ #ifndef LED_H_ #define LED_H_ -#include "pin.hpp" +#include "hardware/pin.hpp" template class Led { diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/Servo.hpp b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/Servo.hpp new file mode 100644 index 0000000..b6f6368 --- /dev/null +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/Servo.hpp @@ -0,0 +1,77 @@ +/* + * Servo.hpp + * + * Created: 08.05.2014 13:06:12 + * Author: netz + */ + + +#ifndef SERVO_H_ +#define SERVO_H_ + +#include +#include +#include +#include "hardware/pin.hpp" + +template +class Servo { + public: + Servo() { + init(); + } + void turn(uint16_t mask) { + this->servopos = mask; + } + void on() { + servo_act::make_high(); + } + void off() { + servo_act::make_low(); + } + void timer() { + TCNT0 = 0x64; // Reinitialize Timer 0 value + servo_io::make_high(); + _delay_us(s_left); + for(uint16_t i = 0; i < servopos; i++) { + _delay_us(s_step); + } + servo_io::make_low(); + } + static const uint16_t LEFT = 0; + static const uint16_t MIDDLE = s_middle; + static const uint16_t RIGHT = s_right; + private: + uint8_t servopos; + void init() { + this->servopos = 0; + servo_act::make_output(); + servo_act::make_low(); + servo_io::make_output(); + this->init_timer(); + sei(); + } + void init_timer() { + // Timer/Counter 0 initialization + // Clock source: System Clock + // Clock value: 7,813 kHz + // Mode: Normal top=0xFF + // OC0A output: Disconnected + // OC0B output: Disconnected + // Timer Period: 19,968 ms + TCCR0A=(0< servo_io; + const typedef avrlib::pin servo_act; +}; + + +#endif /* SERVO_H_ */ \ No newline at end of file diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/Spi.hpp b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/Spi.hpp new file mode 100644 index 0000000..5b28a48 --- /dev/null +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/Spi.hpp @@ -0,0 +1,92 @@ +/* + * Spi.h + * + * Created: 06.11.2013 15:41:34 + * Author: netz + */ + + +#ifndef SPI_H_ +#define SPI_H_ + +#include "../config.h" +#include +#include +#include "hardware/pin.hpp" + +template +class Spi { + public: + Spi() { + init(); + } + void CSOn() { + cs::make_low(); + } + void CSOff() { + cs::make_high(); + } + uint8_t send(uint8_t data) { + uint8_t r; + if(mode == 0) { + r = send_hard(data); + } else { + r = send_soft(data); + } + return r; + } + private: + const typedef avrlib::pin cs; + const typedef avrlib::pin miso; + const typedef avrlib::pin mosi; + const typedef avrlib::pin sck; + void init() { + init_port(); + if(mode == 0) { + init_spi(); + } + } + void init_port() { + mosi::make_output(); + mosi::make_low(); + sck::make_output(); + sck::make_low(); + cs::make_output(); + cs::make_high(); + miso::make_input(); + miso::make_low(); + } + void init_spi() { + SPCR = (1<0; a--) { //das Byte wird Bitweise nacheinander Gesendet MSB zuerst + datain <<= 1; //Schieben um das Richtige Bit zusetzen + sck::make_low(); // Clock auf LOW + if (data & 0x80) { //Ist Bit a in Byte gesetzt + mosi::make_high(); //Set Output High + } else { + mosi::make_low(); //Set Output Low + } + _delay_us(1); + if(miso::read()) //Lesen des Pegels + { + datain |= 1; + } + _delay_us(1); + sck::make_high(); // Clock auf High + _delay_us(2); + data<<=1; //Schiebe um nächstes Bit zusenden + } + return datain; + } + uint8_t send_hard(uint8_t data) { + SPDR = data; // Sendet ein Byte + loop_until_bit_is_set(SPSR, SPIF); // Wartet bis Byte gesendet wurde + return SPDR; + } +}; + +#endif /* SPI_H_ */ \ No newline at end of file diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/Start.hpp b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/Start.hpp new file mode 100644 index 0000000..b05d35c --- /dev/null +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/Start.hpp @@ -0,0 +1,33 @@ +/* + * Start.hpp + * + * Created: 08.05.2014 17:55:29 + * Author: netz + */ + + +#ifndef START_H_ +#define START_H_ + + +#include "hardware/pin.hpp" + +template +class Start { + public: + Start() { + init(); + } + uint8_t is_pressed() { + return (!start_in::read()); + } + private: + void init() { + start_in::make_input(); + start_in::pullup(); + } + const typedef avrlib::pin start_in; +}; + + +#endif /* START_H_ */ \ No newline at end of file diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/pin.hpp b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/hardware/pin.hpp similarity index 100% rename from V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/pin.hpp rename to V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/hardware/pin.hpp diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/portb.hpp b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/hardware/portb.hpp similarity index 100% rename from V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/portb.hpp rename to V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/hardware/portb.hpp diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/hardware/portc.hpp b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/hardware/portc.hpp new file mode 100644 index 0000000..017e95b --- /dev/null +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/hardware/portc.hpp @@ -0,0 +1,22 @@ +#ifndef AVRLIB_PORTC_HPP +#define AVRLIB_PORTC_HPP + +#include + +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + + 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; } + }; + +} + +#endif diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/portd.hpp b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/hardware/portd.hpp similarity index 100% rename from V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/portd.hpp rename to V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/hardware/portd.hpp diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/rfm12.hpp b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/rfm12.hpp new file mode 100644 index 0000000..e8ea746 --- /dev/null +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/io/rfm12.hpp @@ -0,0 +1,68 @@ +/* + * rfm12.hpp + * + * Created: 08.05.2014 00:06:49 + * Author: netz + */ + + +#ifndef RFM12_H_ +#define RFM12_H_ + +#define RF12FREQ(freq) ((freq-430.0)/0.0025) + +template +class Rfm12 { + public: + Rfm12() { + this->init(); + } + void send(uint16_t t) { + s.CSOn(); + s.send((uint8_t)t>>8); + s.send((uint8_t)t); + s.CSOff(); + } + private: + spi s; + void init() { + this->send(0xC0E0); // AVR CLK: 10MHz + this->send(0x80D7); // Enable FIFO + this->send(0xC2AB); // Data Filter: internal + this->send(0xCA81); // Set FIFO mode + this->send(0xE000); // disable wakeuptimer + this->send(0xC800); // disable low duty cycle + this->send(0xC4F7); // AFC settings: autotuning: -10kHz...+7,5kHz + + this->setfreq(); + this->setbandwidth(); + this->setbaud(); + this->setpower(); + } + void setbandwidth() { + this->send(0x9400|((bandwidth&7)<<5)|((gain&3)<<3)|(drssi&7)); + } + void setfreq() { + if (freq<96) { // 430,2400MHz + freq=96; + } else if (freq>3903) { // 439,7575MHz + freq=3903; + } + this->send(0xA000|freq); + } + void setbaud() { + if (baud<663) { + return; + } + if (baud<5400) { // Baudrate= 344827,58621/(R+1)/(1+CS*7) + this->send(0xC680|((43104/baud)-1)); + } else { + this->send(0xC600|((344828UL/baud)-1)); + } + } + void setpower() { + this->send(0x9800|(power&7)|((mod&15)<<4)); + } +}; + +#endif /* RFM12_H_ */ \ No newline at end of file diff --git a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/peripheral.h b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/peripheral.h index a751f17..9646acd 100644 --- a/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/peripheral.h +++ b/V6/Program/Zeitschaltung_V6/Zeitschaltung_V6/peripheral.h @@ -9,7 +9,10 @@ #ifndef PERIPHERAL_H_ #define PERIPHERAL_H_ -#include "io/portd.hpp" +#include "io/hardware/portb.hpp" +#include "io/hardware/portc.hpp" +#include "io/hardware/portd.hpp" + #include "io/Led.hpp" typedef Led< @@ -18,6 +21,44 @@ typedef Led< PIND6 //Grün > ledclass; +#include "io/Servo.hpp" +typedef Servo< //640, 105, 210, 8 Blaue Servos + avrlib::portb, //Servo an PORTB + PINB2, //Datenpin des Servos + PINB1, //Mosfetpin des Servos + 640, //Links + 105, //Mitte + 210, //Rechts + 8 //Schrittweite +> servoclass; +#include "io/Start.hpp" +typedef Start< + avrlib::portd, //Startknopf an PORTD + PIND3 //Pin an dem der Startknopf hängt +> startclass; + +#include "io/Spi.hpp" +typedef Spi< + avrlib::portc, //Funkmodul an PORTC + PINC4, //CS Pin (nSEL) + PINC3, //MOSI Pin (SDO) + PINC0, //MISO Pin (SDI) + PINC1, //SCK Pin + 1 //0 Hardware, 1 Software +> spiclass; + +#include "io/rfm12.hpp" + +typedef Rfm12< + spiclass, //SPI Hardware + 1, //Bandwidth // 400kHz Bandbreite, 0dB Verstärkung, DRSSI threshold: -61dBm + 0, //Gain + 7, //DRRSI + (uint16_t)RF12FREQ(433.92), // Sende/Empfangsfrequenz auf 433,92MHz einstellen + 9600, //Baudrate // 9600 baud + 0, //Power // 1mW Ausgangsleistung, 120kHz Frequenzshift + 6 //Mod +> rfm12class; #endif /* PERIPHERAL_H_ */ \ No newline at end of file