diff --git a/Door.atsuo b/Door.atsuo index e6260e0..ff8a6e1 100644 Binary files a/Door.atsuo and b/Door.atsuo differ diff --git a/Door/Debug/Door.d b/Door/Debug/Door.d index 9a8a9d3..986e5e3 100644 --- a/Door/Debug/Door.d +++ b/Door/Debug/Door.d @@ -1,4 +1,4 @@ -Door.d Door.o: .././Door.cpp \ +Door.d Door.o: .././Door.cpp .././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 \ @@ -12,10 +12,17 @@ Door.d Door.o: .././Door.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/hardware/portd.hpp .././io/Stripe.hpp .././io/hardware/pin.hpp \ + .././io/Led.hpp .././io/Comperator.hpp .././io/uart.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 +.././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: @@ -42,6 +49,20 @@ 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/hardware/portd.hpp: + +.././io/Stripe.hpp: + +.././io/hardware/pin.hpp: + +.././io/Led.hpp: + +.././io/Comperator.hpp: + +.././io/uart.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: diff --git a/Door/Debug/Door.elf b/Door/Debug/Door.elf index 418e510..78ece95 100644 Binary files a/Door/Debug/Door.elf and b/Door/Debug/Door.elf differ diff --git a/Door/Debug/Door.hex b/Door/Debug/Door.hex index f11007d..7dc6f79 100644 --- a/Door/Debug/Door.hex +++ b/Door/Debug/Door.hex @@ -1,12 +1,119 @@ -:100000000C9434000C943E000C943E000C943E0082 -:100010000C943E000C943E000C943E000C943E0068 -:100020000C943E000C943E000C943E000C943E0058 -:100030000C943E000C943E000C943E000C943E0048 -:100040000C943E000C943E000C943E000C943E0038 -:100050000C943E000C943E000C943E000C943E0028 -:100060000C943E000C943E0011241FBECFEFD4E050 -:10007000DEBFCDBF0E9440000C9456000C940000DF -:1000800084B1836084B9289A21E092E085B1822707 -:1000900085B985B1892785B93FE744E88EE13150BC -:1000A00040408040E1F700C00000F0CFF894FFCF5F +:100000000C9435000C945D000C945D000C945D0024 +:100010000C945D000C945D000C945D000C945D00EC +:100020000C945D000C945D000C945D000C945D00DC +:100030000C945D000C945D000C945D000C945D00CC +:100040000C945D000C945D000C945D000C945D00BC +:100050000C945D000C945D000C945D000C945D00AC +:100060000C945D000C945D00210311241FBECFEFA2 +:10007000D4E0DEBFCDBF11E0A0E0B1E0E4ECF6E0FB +:1000800002C005900D92AA38B107D9F723E0AAE87B +:10009000B1E001C01D92AF31B207E1F710E0CAE64E +:1000A000D0E004C02297FE010E945C03C836D1074D +:1000B000C9F70E94A3020C9460030C94000020E096 +:1000C00030E080E061E070E04A99FECF289AE7EBEB +:1000D000FBE03197F1F700C000004A9908C0AB017E +:1000E000022E02C0440F551F0A94E2F7842B4A9B4C +:1000F000FECF2898F2E4FA95F1F700C02F5F3F4F4A +:100100002830310509F708951F93CF93DF934A995B +:1001100016C28FE19EE40197F1F700C000004A99F2 +:100120000EC24A9BFECF0E945F00182F0E945F0004 +:100130000E945F00482FC82FD0E0E0ECF0E0808103 +:1001400085FFFDCF80E38093C60060E070E0CB01C7 +:100150009695879596958795969587959C01220FFC +:10016000331F880F991F880F991F880F991F820FBF +:10017000931F681B790B605DE0ECF0E0808185FFE8 +:10018000FDCF6093C6009E0136952795369527953D +:10019000ABE7B4E10E944E0396958795805DE0EC55 +:1001A000F0E0908195FFFDCF8093C6009E01ADECFD +:1001B000BCEC0E944E03FC01F695E795F695E79599 +:1001C000F695E7959F010E944E0396958795969523 +:1001D0008795969587959C01220F331F880F991F4D +:1001E000880F991F880F991F820F931FE81BF90B27 +:1001F0009E2F905DE0ECF0E0808185FFFDCF909335 +:10020000C6009E01ADECBCEC0E944E03969587950E +:1002100096958795969587959C01220F331F880F99 +:10022000991F880F991F880F991F820F931FC81B52 +:10023000D90BC05DE0ECF0E0808185FFFDCFC0937D +:10024000C600A4E5B1E090E2E0ECF0E0C6ECD0E05E +:10025000808185FFFDCF98839D919111F9CFE0ECCE +:10026000F0E0808185FFFDCF8DE08093C600E0EC5B +:10027000F0E0808185FFFDCF8AE08093C6001111F8 +:100280005EC14F3E09F05BC10E945F00182F0E94C3 +:100290005F00482FABE5B1E022E5E0ECF0E0C6EC12 +:1002A000D0E0908195FFFDCF28832D912111F9CFCA +:1002B000E0ECF0E0908195FFFDCF8DE08093C600EB +:1002C000E0ECF0E0908195FFFDCF8AE08093C600DE +:1002D000E0ECF0E0808185FFFDCFC12FD0E080E32E +:1002E0008093C60060E070E0CB0196958795969567 +:1002F0008795969587959C01220F331F880F991F2C +:10030000880F991F880F991F820F931F681B790B05 +:10031000605DE0ECF0E0808185FFFDCF6093C6007A +:100320009E013695279536952795ABE7B4E10E9457 +:100330004E0396958795805DE0ECF0E0908195FF07 +:10034000FDCF8093C6009E01ADECBCEC0E944E0335 +:10035000FC01F695E795F695E795F695E7959F01EB +:100360000E944E03969587959695879596958795C5 +:100370009C01220F331F880F991F880F991F880F28 +:10038000991F820F931FE81BF90B9E2F905DE0ECE5 +:10039000F0E0808185FFFDCF9093C6009E01ADEC1B +:1003A000BCEC0E944E0396958795969587959695F9 +:1003B00087959C01220F331F880F991F880F991F63 +:1003C000880F991F820F931FC81BD90BC05DE0ECEB +:1003D000F0E0808185FFFDCFC093C600A6E6B1E0C6 +:1003E00090E2E0ECF0E0C6ECD0E0808185FFFDCF4C +:1003F00098839D919111F9CF50E0E0ECF0E080817D +:1004000085FFFDCF80E38093C60060E070E0CB0104 +:100410009695879596958795969587959C01220F39 +:10042000331F880F991F880F991F880F991F820FFC +:10043000931F681B790B605DE0ECF0E0808185FF25 +:10044000FDCF6093C6009A0136952795369527957E +:10045000ABE7B4E10E944E0396958795805DE0EC92 +:10046000F0E0908195FFFDCF8093C6009A01ADEC3E +:10047000BCEC0E944E03FC01F695E795F695E795D6 +:10048000F695E7959F010E944E0396958795969560 +:100490008795969587959C01220F331F880F991F8A +:1004A000880F991F880F991F820F931FE81BF90B64 +:1004B0009E2F905DE0ECF0E0808185FFFDCF909372 +:1004C000C6009A01ADECBCEC0E944E039695879550 +:1004D00096958795969587959C01220F331F880FD7 +:1004E000991F880F991F880F991F820F931F481B10 +:1004F000590B405DE0ECF0E0808185FFFDCF40933B +:10050000C600AFE6B1E090E2E0ECF0E0C6ECD0E08F +:10051000808185FFFDCF98839D919111F9CFE0EC0B +:10052000F0E0808185FFFDCF8DE08093C600E0EC98 +:10053000F0E0808185FFFDCF8AE08093C600DF91E7 +:10054000CF911F910895789482E390E026E731E0FF +:10055000E0ECF0E0A6ECB0E07DE06AE011C04081A4 +:1005600045FFFDCF5C9359915111F9CF408145FF73 +:10057000FDCF7C93408145FFFDCF6C93019719F02F +:10058000E90157E4ECCF299AC0ECD0E006EC10E08A +:100590000F2EFEE2DF2EF02D0F2EFDE0EF2EF02DC0 +:1005A0000F2EFAE0FF2EF02D4A99FECF0E94840014 +:1005B000888185FFFDCFF801D082888185FFFDCF3E +:1005C000F801E082888185FFFDCFF801F082FFEF1E +:1005D00024E38CE0F15020408040E1F700C00000AF +:1005E0002898E2CFCF93DF93789481E88093C4007A +:1005F0001092C00088E08093C10086E08093C20022 +:10060000AFE7B1E095E5E0ECF0E0C6ECD0E080814A +:1006100085FFFDCF98839D919111F9CFE0ECF0E03B +:10062000808185FFFDCF8DE08093C600E0ECF0E097 +:10063000808185FFFDCF8AE08093C600DF91CF9156 +:1006400008958EE193E00E94F202559A539A239AFC +:1006500081E284BD81E085BD16BC1092B60091EAAE +:100660009093B0008093B1001092B20010926E008F +:100670001092700018BC1092B4001092B300209A2F +:10068000219A2898299856985E9857985F9810BE96 +:1006900010927B0083E080937F000895A29FB001B9 +:1006A000B39FC001A39F01D0B29F700D811D112483 +:1006B000911D0895EE0FFF1F0590F491E02D099410 +:0406C000F894FFCFDC +:1006C4000A0D0A0D52656365697665643A200A0D60 +:1006D4004F464620094F4E00696E74204952736993 +:1006E400676E616C5B5D203D207B002F2F204F46A1 +:1006F400462C204F4E2028696E2031302773206FFE +:1007040066206D6963726F7365636F6E647329002D +:100714007D3B002031427974650052656164204458 +:100724006174613A002048427974652C2000204CA1 +:10073400427974650047656C6164656E210055619A +:0A074400727420646F6E65210000DE :00000001FF diff --git a/Door/Debug/Door.lss b/Door/Debug/Door.lss index 5f8df04..254922f 100644 --- a/Door/Debug/Door.lss +++ b/Door/Debug/Door.lss @@ -3,124 +3,1211 @@ Door.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000000 00800100 000000b0 00000124 2**0 + 0 .data 0000008a 00800100 000006c4 00000758 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 000000b0 00000000 00000000 00000074 2**1 + 1 .text 000006c4 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .stab 000006cc 00000000 00000000 00000124 2**2 + 2 .bss 00000195 0080018a 0080018a 000007e2 2**0 + ALLOC + 3 .stab 000006cc 00000000 00000000 000007e4 2**2 CONTENTS, READONLY, DEBUGGING - 3 .stabstr 00000082 00000000 00000000 000007f0 2**0 + 4 .stabstr 00000082 00000000 00000000 00000eb0 2**0 CONTENTS, READONLY, DEBUGGING - 4 .comment 0000002f 00000000 00000000 00000872 2**0 + 5 .comment 0000002f 00000000 00000000 00000f32 2**0 CONTENTS, READONLY - 5 .debug_aranges 00000020 00000000 00000000 000008a1 2**0 + 6 .debug_aranges 00000050 00000000 00000000 00000f61 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_info 0000011f 00000000 00000000 000008c1 2**0 + 7 .debug_info 00002dfe 00000000 00000000 00000fb1 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_abbrev 000000cf 00000000 00000000 000009e0 2**0 + 8 .debug_abbrev 0000044d 00000000 00000000 00003daf 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_line 00000184 00000000 00000000 00000aaf 2**0 + 9 .debug_line 0000063c 00000000 00000000 000041fc 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_frame 00000024 00000000 00000000 00000c34 2**2 + 10 .debug_frame 000000e4 00000000 00000000 00004838 2**2 CONTENTS, READONLY, DEBUGGING - 10 .debug_str 000000d4 00000000 00000000 00000c58 2**0 + 11 .debug_str 00000c33 00000000 00000000 0000491c 2**0 CONTENTS, READONLY, DEBUGGING - 11 .debug_ranges 00000010 00000000 00000000 00000d2c 2**0 + 12 .debug_loc 00000cd8 00000000 00000000 0000554f 2**0 + CONTENTS, READONLY, DEBUGGING + 13 .debug_ranges 000004a8 00000000 00000000 00006227 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: - 0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end> - 4: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 8: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 10: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 14: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 18: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 1c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 20: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 24: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 28: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 2c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 30: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 34: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 38: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 3c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 40: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 44: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 48: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 4c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 50: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 54: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 58: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 5c: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 60: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> - 64: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt> + 0: 0c 94 35 00 jmp 0x6a ; 0x6a <__ctors_end> + 4: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 8: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + c: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 10: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 14: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 18: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 1c: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 20: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 24: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 28: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 2c: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 30: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 34: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 38: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 3c: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 40: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 44: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 48: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 4c: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 50: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 54: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 58: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 5c: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 60: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 64: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> -00000068 <__ctors_end>: - 68: 11 24 eor r1, r1 - 6a: 1f be out 0x3f, r1 ; 63 - 6c: cf ef ldi r28, 0xFF ; 255 - 6e: d4 e0 ldi r29, 0x04 ; 4 - 70: de bf out 0x3e, r29 ; 62 - 72: cd bf out 0x3d, r28 ; 61 - 74: 0e 94 40 00 call 0x80 ; 0x80
- 78: 0c 94 56 00 jmp 0xac ; 0xac <_exit> +00000068 <__ctors_start>: + 68: 21 03 mulsu r18, r17 -0000007c <__bad_interrupt>: - 7c: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> +0000006a <__ctors_end>: + 6a: 11 24 eor r1, r1 + 6c: 1f be out 0x3f, r1 ; 63 + 6e: cf ef ldi r28, 0xFF ; 255 + 70: d4 e0 ldi r29, 0x04 ; 4 + 72: de bf out 0x3e, r29 ; 62 + 74: cd bf out 0x3d, r28 ; 61 -00000080
: -int main(void) -{ - //Init_AIN(); - //Init_Output(); - //Init_Timer(); - DDRB |= (1<: + 76: 11 e0 ldi r17, 0x01 ; 1 + 78: a0 e0 ldi r26, 0x00 ; 0 + 7a: b1 e0 ldi r27, 0x01 ; 1 + 7c: e4 ec ldi r30, 0xC4 ; 196 + 7e: f6 e0 ldi r31, 0x06 ; 6 + 80: 02 c0 rjmp .+4 ; 0x86 <__do_copy_data+0x10> + 82: 05 90 lpm r0, Z+ + 84: 0d 92 st X+, r0 + 86: aa 38 cpi r26, 0x8A ; 138 + 88: b1 07 cpc r27, r17 + 8a: d9 f7 brne .-10 ; 0x82 <__do_copy_data+0xc> - __builtin_avr_delay_cycles(__ticks_dc); - 98: 3f e7 ldi r19, 0x7F ; 127 - 9a: 44 e8 ldi r20, 0x84 ; 132 - 9c: 8e e1 ldi r24, 0x1E ; 30 - 9e: 31 50 subi r19, 0x01 ; 1 - a0: 40 40 sbci r20, 0x00 ; 0 - a2: 80 40 sbci r24, 0x00 ; 0 - a4: e1 f7 brne .-8 ; 0x9e - a6: 00 c0 rjmp .+0 ; 0xa8 - a8: 00 00 nop - aa: f0 cf rjmp .-32 ; 0x8c +0000008c <__do_clear_bss>: + 8c: 23 e0 ldi r18, 0x03 ; 3 + 8e: aa e8 ldi r26, 0x8A ; 138 + 90: b1 e0 ldi r27, 0x01 ; 1 + 92: 01 c0 rjmp .+2 ; 0x96 <.do_clear_bss_start> -000000ac <_exit>: - ac: f8 94 cli +00000094 <.do_clear_bss_loop>: + 94: 1d 92 st X+, r1 -000000ae <__stop_program>: - ae: ff cf rjmp .-2 ; 0xae <__stop_program> +00000096 <.do_clear_bss_start>: + 96: af 31 cpi r26, 0x1F ; 31 + 98: b2 07 cpc r27, r18 + 9a: e1 f7 brne .-8 ; 0x94 <.do_clear_bss_loop> + +0000009c <__do_global_ctors>: + 9c: 10 e0 ldi r17, 0x00 ; 0 + 9e: ca e6 ldi r28, 0x6A ; 106 + a0: d0 e0 ldi r29, 0x00 ; 0 + a2: 04 c0 rjmp .+8 ; 0xac <__do_global_ctors+0x10> + a4: 22 97 sbiw r28, 0x02 ; 2 + a6: fe 01 movw r30, r28 + a8: 0e 94 5c 03 call 0x6b8 ; 0x6b8 <__tablejump__> + ac: c8 36 cpi r28, 0x68 ; 104 + ae: d1 07 cpc r29, r17 + b0: c9 f7 brne .-14 ; 0xa4 <__do_global_ctors+0x8> + b2: 0e 94 a3 02 call 0x546 ; 0x546
+ b6: 0c 94 60 03 jmp 0x6c0 ; 0x6c0 <_exit> + +000000ba <__bad_interrupt>: + ba: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000be <_Z8read8bitv>: + uart_putchar(*text); + text++; + } + } + void printDec(uint16_t wert) { + print((wert/10000)+'0'); + be: 20 e0 ldi r18, 0x00 ; 0 + c0: 30 e0 ldi r19, 0x00 ; 0 + c2: 80 e0 ldi r24, 0x00 ; 0 + c4: 61 e0 ldi r22, 0x01 ; 1 + c6: 70 e0 ldi r23, 0x00 ; 0 + c8: 4a 99 sbic 0x09, 2 ; 9 + ca: fe cf rjmp .-4 ; 0xc8 <_Z8read8bitv+0xa> + cc: 28 9a sbi 0x05, 0 ; 5 + ce: e7 eb ldi r30, 0xB7 ; 183 + d0: fb e0 ldi r31, 0x0B ; 11 + d2: 31 97 sbiw r30, 0x01 ; 1 + d4: f1 f7 brne .-4 ; 0xd2 <_Z8read8bitv+0x14> + d6: 00 c0 rjmp .+0 ; 0xd8 <_Z8read8bitv+0x1a> + d8: 00 00 nop + UCSR0A= (0< + de: ab 01 movw r20, r22 + UDR0 = c; + e0: 02 2e mov r0, r18 + text++; + } + } + void printDec(uint16_t wert) { + print((wert/10000)+'0'); + print(((wert/1000)%10)+'0'); + e2: 02 c0 rjmp .+4 ; 0xe8 <_Z8read8bitv+0x2a> + e4: 44 0f add r20, r20 + e6: 55 1f adc r21, r21 + e8: 0a 94 dec r0 + ea: e2 f7 brpl .-8 ; 0xe4 <_Z8read8bitv+0x26> + ec: 84 2b or r24, r20 + ee: 4a 9b sbis 0x09, 2 ; 9 + f0: fe cf rjmp .-4 ; 0xee <_Z8read8bitv+0x30> + f2: 28 98 cbi 0x05, 0 ; 5 + f4: f2 e4 ldi r31, 0x42 ; 66 + f6: fa 95 dec r31 + f8: f1 f7 brne .-4 ; 0xf6 <_Z8read8bitv+0x38> + fa: 00 c0 rjmp .+0 ; 0xfc <_Z8read8bitv+0x3e> + fc: 2f 5f subi r18, 0xFF ; 255 + fe: 3f 4f sbci r19, 0xFF ; 255 + 100: 28 30 cpi r18, 0x08 ; 8 + 102: 31 05 cpc r19, r1 + 104: 09 f7 brne .-62 ; 0xc8 <_Z8read8bitv+0xa> + 106: 08 95 ret + +00000108 <_Z7recievev>: + 108: 1f 93 push r17 + 10a: cf 93 push r28 + 10c: df 93 push r29 + 10e: 4a 99 sbic 0x09, 2 ; 9 + 110: 16 c2 rjmp .+1068 ; 0x53e <__stack+0x3f> + 112: 8f e1 ldi r24, 0x1F ; 31 + 114: 9e e4 ldi r25, 0x4E ; 78 + 116: 01 97 sbiw r24, 0x01 ; 1 + 118: f1 f7 brne .-4 ; 0x116 <_Z7recievev+0xe> + 11a: 00 c0 rjmp .+0 ; 0x11c <_Z7recievev+0x14> + 11c: 00 00 nop + 11e: 4a 99 sbic 0x09, 2 ; 9 + 120: 0e c2 rjmp .+1052 ; 0x53e <__stack+0x3f> + 122: 4a 9b sbis 0x09, 2 ; 9 + 124: fe cf rjmp .-4 ; 0x122 <_Z7recievev+0x1a> + 126: 0e 94 5f 00 call 0xbe ; 0xbe <_Z8read8bitv> + 12a: 18 2f mov r17, r24 + 12c: 0e 94 5f 00 call 0xbe ; 0xbe <_Z8read8bitv> + 130: 0e 94 5f 00 call 0xbe ; 0xbe <_Z8read8bitv> + 134: 48 2f mov r20, r24 + 136: c8 2f mov r28, r24 + 138: d0 e0 ldi r29, 0x00 ; 0 + 13a: e0 ec ldi r30, 0xC0 ; 192 + 13c: f0 e0 ldi r31, 0x00 ; 0 + 13e: 80 81 ld r24, Z + UCSR0A= (0< + 144: 80 e3 ldi r24, 0x30 ; 48 + UDR0 = c; + 146: 80 93 c6 00 sts 0x00C6, r24 + } + } + void printDec(uint16_t wert) { + print((wert/10000)+'0'); + print(((wert/1000)%10)+'0'); + print(((wert/100)%10)+'0'); + 14a: 60 e0 ldi r22, 0x00 ; 0 + 14c: 70 e0 ldi r23, 0x00 ; 0 + 14e: cb 01 movw r24, r22 + 150: 96 95 lsr r25 + 152: 87 95 ror r24 + 154: 96 95 lsr r25 + 156: 87 95 ror r24 + 158: 96 95 lsr r25 + 15a: 87 95 ror r24 + 15c: 9c 01 movw r18, r24 + 15e: 22 0f add r18, r18 + 160: 33 1f adc r19, r19 + 162: 88 0f add r24, r24 + 164: 99 1f adc r25, r25 + 166: 88 0f add r24, r24 + 168: 99 1f adc r25, r25 + 16a: 88 0f add r24, r24 + 16c: 99 1f adc r25, r25 + 16e: 82 0f add r24, r18 + 170: 93 1f adc r25, r19 + 172: 68 1b sub r22, r24 + 174: 79 0b sbc r23, r25 + 176: 60 5d subi r22, 0xD0 ; 208 + 178: e0 ec ldi r30, 0xC0 ; 192 + 17a: f0 e0 ldi r31, 0x00 ; 0 + 17c: 80 81 ld r24, Z + 17e: 85 ff sbrs r24, 5 + 180: fd cf rjmp .-6 ; 0x17c <_Z7recievev+0x74> + 182: 60 93 c6 00 sts 0x00C6, r22 + 186: 9e 01 movw r18, r28 + 188: 36 95 lsr r19 + 18a: 27 95 ror r18 + 18c: 36 95 lsr r19 + 18e: 27 95 ror r18 + 190: ab e7 ldi r26, 0x7B ; 123 + 192: b4 e1 ldi r27, 0x14 ; 20 + 194: 0e 94 4e 03 call 0x69c ; 0x69c <__umulhisi3> + UCSR0A= (0< + 1a8: 80 93 c6 00 sts 0x00C6, r24 + 1ac: 9e 01 movw r18, r28 + 1ae: ad ec ldi r26, 0xCD ; 205 + 1b0: bc ec ldi r27, 0xCC ; 204 + 1b2: 0e 94 4e 03 call 0x69c ; 0x69c <__umulhisi3> + 1b6: fc 01 movw r30, r24 + 1b8: f6 95 lsr r31 + 1ba: e7 95 ror r30 + 1bc: f6 95 lsr r31 + 1be: e7 95 ror r30 + 1c0: f6 95 lsr r31 + 1c2: e7 95 ror r30 + 1c4: 9f 01 movw r18, r30 + 1c6: 0e 94 4e 03 call 0x69c ; 0x69c <__umulhisi3> + 1ca: 96 95 lsr r25 + 1cc: 87 95 ror r24 + 1ce: 96 95 lsr r25 + 1d0: 87 95 ror r24 + 1d2: 96 95 lsr r25 + 1d4: 87 95 ror r24 + 1d6: 9c 01 movw r18, r24 + 1d8: 22 0f add r18, r18 + 1da: 33 1f adc r19, r19 + 1dc: 88 0f add r24, r24 + 1de: 99 1f adc r25, r25 + 1e0: 88 0f add r24, r24 + 1e2: 99 1f adc r25, r25 + 1e4: 88 0f add r24, r24 + 1e6: 99 1f adc r25, r25 + UCSR0A= (0< + 1fe: 90 93 c6 00 sts 0x00C6, r25 + 202: 9e 01 movw r18, r28 + 204: ad ec ldi r26, 0xCD ; 205 + 206: bc ec ldi r27, 0xCC ; 204 + 208: 0e 94 4e 03 call 0x69c ; 0x69c <__umulhisi3> + 20c: 96 95 lsr r25 + 20e: 87 95 ror r24 + 210: 96 95 lsr r25 + 212: 87 95 ror r24 + 214: 96 95 lsr r25 + 216: 87 95 ror r24 + 218: 9c 01 movw r18, r24 + 21a: 22 0f add r18, r18 + 21c: 33 1f adc r19, r19 + 21e: 88 0f add r24, r24 + 220: 99 1f adc r25, r25 + UCSR0A= (0< + 23e: c0 93 c6 00 sts 0x00C6, r28 + 242: a4 e5 ldi r26, 0x54 ; 84 + 244: b1 e0 ldi r27, 0x01 ; 1 + 246: 90 e2 ldi r25, 0x20 ; 32 + UCSR0A= (0< + 256: 98 83 st Y, r25 + uart_putchar(*text); + text++; + } + } + void printDec(uint16_t wert) { + print((wert/10000)+'0'); + 258: 9d 91 ld r25, X+ + 25a: 91 11 cpse r25, r1 + 25c: f9 cf rjmp .-14 ; 0x250 <_Z7recievev+0x148> + 25e: e0 ec ldi r30, 0xC0 ; 192 + 260: f0 e0 ldi r31, 0x00 ; 0 + 262: 80 81 ld r24, Z + 264: 85 ff sbrs r24, 5 + 266: fd cf rjmp .-6 ; 0x262 <_Z7recievev+0x15a> + 268: 8d e0 ldi r24, 0x0D ; 13 + 26a: 80 93 c6 00 sts 0x00C6, r24 + 26e: e0 ec ldi r30, 0xC0 ; 192 + 270: f0 e0 ldi r31, 0x00 ; 0 + 272: 80 81 ld r24, Z + 274: 85 ff sbrs r24, 5 + 276: fd cf rjmp .-6 ; 0x272 <_Z7recievev+0x16a> + 278: 8a e0 ldi r24, 0x0A ; 10 + 27a: 80 93 c6 00 sts 0x00C6, r24 + print(((wert/1000)%10)+'0'); + 27e: 11 11 cpse r17, r1 + 280: 5e c1 rjmp .+700 ; 0x53e <__stack+0x3f> + 282: 4f 3e cpi r20, 0xEF ; 239 + 284: 09 f0 breq .+2 ; 0x288 <_Z7recievev+0x180> + 286: 5b c1 rjmp .+694 ; 0x53e <__stack+0x3f> + 288: 0e 94 5f 00 call 0xbe ; 0xbe <_Z8read8bitv> + 28c: 18 2f mov r17, r24 + 28e: 0e 94 5f 00 call 0xbe ; 0xbe <_Z8read8bitv> + 292: 48 2f mov r20, r24 + 294: ab e5 ldi r26, 0x5B ; 91 + 296: b1 e0 ldi r27, 0x01 ; 1 + 298: 22 e5 ldi r18, 0x52 ; 82 + 29a: e0 ec ldi r30, 0xC0 ; 192 + 29c: f0 e0 ldi r31, 0x00 ; 0 + 29e: c6 ec ldi r28, 0xC6 ; 198 + 2a0: d0 e0 ldi r29, 0x00 ; 0 + 2a2: 90 81 ld r25, Z + 2a4: 95 ff sbrs r25, 5 + 2a6: fd cf rjmp .-6 ; 0x2a2 <_Z7recievev+0x19a> + 2a8: 28 83 st Y, r18 + 2aa: 2d 91 ld r18, X+ + 2ac: 21 11 cpse r18, r1 + 2ae: f9 cf rjmp .-14 ; 0x2a2 <_Z7recievev+0x19a> + 2b0: e0 ec ldi r30, 0xC0 ; 192 + 2b2: f0 e0 ldi r31, 0x00 ; 0 + 2b4: 90 81 ld r25, Z + 2b6: 95 ff sbrs r25, 5 + 2b8: fd cf rjmp .-6 ; 0x2b4 <_Z7recievev+0x1ac> + 2ba: 8d e0 ldi r24, 0x0D ; 13 + 2bc: 80 93 c6 00 sts 0x00C6, r24 + 2c0: e0 ec ldi r30, 0xC0 ; 192 + 2c2: f0 e0 ldi r31, 0x00 ; 0 + 2c4: 90 81 ld r25, Z + 2c6: 95 ff sbrs r25, 5 + 2c8: fd cf rjmp .-6 ; 0x2c4 <_Z7recievev+0x1bc> + 2ca: 8a e0 ldi r24, 0x0A ; 10 + 2cc: 80 93 c6 00 sts 0x00C6, r24 + 2d0: e0 ec ldi r30, 0xC0 ; 192 + 2d2: f0 e0 ldi r31, 0x00 ; 0 + UCSR0A= (0< + UDR0 = c; + 2da: c1 2f mov r28, r17 + } + } + void printDec(uint16_t wert) { + print((wert/10000)+'0'); + print(((wert/1000)%10)+'0'); + print(((wert/100)%10)+'0'); + 2dc: d0 e0 ldi r29, 0x00 ; 0 + 2de: 80 e3 ldi r24, 0x30 ; 48 + 2e0: 80 93 c6 00 sts 0x00C6, r24 + 2e4: 60 e0 ldi r22, 0x00 ; 0 + 2e6: 70 e0 ldi r23, 0x00 ; 0 + 2e8: cb 01 movw r24, r22 + 2ea: 96 95 lsr r25 + 2ec: 87 95 ror r24 + 2ee: 96 95 lsr r25 + 2f0: 87 95 ror r24 + 2f2: 96 95 lsr r25 + 2f4: 87 95 ror r24 + 2f6: 9c 01 movw r18, r24 + 2f8: 22 0f add r18, r18 + 2fa: 33 1f adc r19, r19 + 2fc: 88 0f add r24, r24 + 2fe: 99 1f adc r25, r25 + 300: 88 0f add r24, r24 + 302: 99 1f adc r25, r25 + 304: 88 0f add r24, r24 + 306: 99 1f adc r25, r25 + 308: 82 0f add r24, r18 + 30a: 93 1f adc r25, r19 + 30c: 68 1b sub r22, r24 + 30e: 79 0b sbc r23, r25 + 310: 60 5d subi r22, 0xD0 ; 208 + 312: e0 ec ldi r30, 0xC0 ; 192 + 314: f0 e0 ldi r31, 0x00 ; 0 + 316: 80 81 ld r24, Z + 318: 85 ff sbrs r24, 5 + 31a: fd cf rjmp .-6 ; 0x316 <_Z7recievev+0x20e> + 31c: 60 93 c6 00 sts 0x00C6, r22 + 320: 9e 01 movw r18, r28 + 322: 36 95 lsr r19 + 324: 27 95 ror r18 + UCSR0A= (0< + 332: 96 95 lsr r25 + 334: 87 95 ror r24 + 336: 80 5d subi r24, 0xD0 ; 208 + 338: e0 ec ldi r30, 0xC0 ; 192 + 33a: f0 e0 ldi r31, 0x00 ; 0 + 33c: 90 81 ld r25, Z + 33e: 95 ff sbrs r25, 5 + 340: fd cf rjmp .-6 ; 0x33c <_Z7recievev+0x234> + 342: 80 93 c6 00 sts 0x00C6, r24 + 346: 9e 01 movw r18, r28 + 348: ad ec ldi r26, 0xCD ; 205 + 34a: bc ec ldi r27, 0xCC ; 204 + 34c: 0e 94 4e 03 call 0x69c ; 0x69c <__umulhisi3> + 350: fc 01 movw r30, r24 + 352: f6 95 lsr r31 + 354: e7 95 ror r30 + 356: f6 95 lsr r31 + 358: e7 95 ror r30 + 35a: f6 95 lsr r31 + 35c: e7 95 ror r30 + 35e: 9f 01 movw r18, r30 + 360: 0e 94 4e 03 call 0x69c ; 0x69c <__umulhisi3> + 364: 96 95 lsr r25 + 366: 87 95 ror r24 + 368: 96 95 lsr r25 + 36a: 87 95 ror r24 + 36c: 96 95 lsr r25 + 36e: 87 95 ror r24 + 370: 9c 01 movw r18, r24 + 372: 22 0f add r18, r18 + UCSR0A= (0< + 398: 90 93 c6 00 sts 0x00C6, r25 + 39c: 9e 01 movw r18, r28 + 39e: ad ec ldi r26, 0xCD ; 205 + 3a0: bc ec ldi r27, 0xCC ; 204 + 3a2: 0e 94 4e 03 call 0x69c ; 0x69c <__umulhisi3> + 3a6: 96 95 lsr r25 + 3a8: 87 95 ror r24 + 3aa: 96 95 lsr r25 + 3ac: 87 95 ror r24 + UCSR0A= (0< + 3d8: c0 93 c6 00 sts 0x00C6, r28 + UCSR0A= (0< + 3f0: 98 83 st Y, r25 + 3f2: 9d 91 ld r25, X+ + UDR0 = c; + 3f4: 91 11 cpse r25, r1 + 3f6: f9 cf rjmp .-14 ; 0x3ea <_Z7recievev+0x2e2> + 3f8: 50 e0 ldi r21, 0x00 ; 0 + UCSR0A= (0< + UDR0 = c; + 404: 80 e3 ldi r24, 0x30 ; 48 + 406: 80 93 c6 00 sts 0x00C6, r24 + 40a: 60 e0 ldi r22, 0x00 ; 0 + 40c: 70 e0 ldi r23, 0x00 ; 0 + sei(); + init(); + println("Uart done!"); + } + void print(const char *text) { + while (*text) + 40e: cb 01 movw r24, r22 + UCSR0A= (0< + 442: 60 93 c6 00 sts 0x00C6, r22 + } + + // print it in a 'array' format + Serial.println("int IRsignal[] = {"); + Serial.println("// OFF, ON (in 10's of microseconds)"); + for (uint8_t i = 0; i < currentpulse-1; i++) { + 446: 9a 01 movw r18, r20 + 448: 36 95 lsr r19 + 44a: 27 95 ror r18 + 44c: 36 95 lsr r19 + 44e: 27 95 ror r18 + 450: ab e7 ldi r26, 0x7B ; 123 + 452: b4 e1 ldi r27, 0x14 ; 20 + 454: 0e 94 4e 03 call 0x69c ; 0x69c <__umulhisi3> + UCSR0A= (0< + 468: 80 93 c6 00 sts 0x00C6, r24 + 46c: 9a 01 movw r18, r20 + 46e: ad ec ldi r26, 0xCD ; 205 + 470: bc ec ldi r27, 0xCC ; 204 + UCSR0A= (0< + 476: fc 01 movw r30, r24 + 478: f6 95 lsr r31 + 47a: e7 95 ror r30 + 47c: f6 95 lsr r31 + 47e: e7 95 ror r30 + 480: f6 95 lsr r31 + 482: e7 95 ror r30 + 484: 9f 01 movw r18, r30 + 486: 0e 94 4e 03 call 0x69c ; 0x69c <__umulhisi3> + 48a: 96 95 lsr r25 + 48c: 87 95 ror r24 + 48e: 96 95 lsr r25 + 490: 87 95 ror r24 + 492: 96 95 lsr r25 + 494: 87 95 ror r24 + 496: 9c 01 movw r18, r24 + uart_putchar(*text); + text++; + } + } + void printDec(uint16_t wert) { + print((wert/10000)+'0'); + 498: 22 0f add r18, r18 + UCSR0B= (0< + 4be: 90 93 c6 00 sts 0x00C6, r25 + 4c2: 9a 01 movw r18, r20 + 4c4: ad ec ldi r26, 0xCD ; 205 + 4c6: bc ec ldi r27, 0xCC ; 204 + 4c8: 0e 94 4e 03 call 0x69c ; 0x69c <__umulhisi3> + 4cc: 96 95 lsr r25 + 4ce: 87 95 ror r24 + 4d0: 96 95 lsr r25 + 4d2: 87 95 ror r24 + 4d4: 96 95 lsr r25 + 4d6: 87 95 ror r24 + 4d8: 9c 01 movw r18, r24 + 4da: 22 0f add r18, r18 + 4dc: 33 1f adc r19, r19 + 4de: 88 0f add r24, r24 + 4e0: 99 1f adc r25, r25 + 4e2: 88 0f add r24, r24 + 4e4: 99 1f adc r25, r25 + 4e6: 88 0f add r24, r24 + 4e8: 99 1f adc r25, r25 + 4ea: 82 0f add r24, r18 + 4ec: 93 1f adc r25, r19 + 4ee: 48 1b sub r20, r24 + 4f0: 59 0b sbc r21, r25 + 4f2: 40 5d subi r20, 0xD0 ; 208 + 4f4: e0 ec ldi r30, 0xC0 ; 192 + 4f6: f0 e0 ldi r31, 0x00 ; 0 + 4f8: 80 81 ld r24, Z + UCSR0A= (0< + 4fe: 40 93 c6 00 sts 0x00C6, r20 + } + } + void printDec(uint16_t wert) { + print((wert/10000)+'0'); + print(((wert/1000)%10)+'0'); + print(((wert/100)%10)+'0'); + 502: af e6 ldi r26, 0x6F ; 111 + 504: b1 e0 ldi r27, 0x01 ; 1 + 506: 90 e2 ldi r25, 0x20 ; 32 + 508: e0 ec ldi r30, 0xC0 ; 192 + 50a: f0 e0 ldi r31, 0x00 ; 0 + 50c: c6 ec ldi r28, 0xC6 ; 198 + 50e: d0 e0 ldi r29, 0x00 ; 0 + 510: 80 81 ld r24, Z + 512: 85 ff sbrs r24, 5 + 514: fd cf rjmp .-6 ; 0x510 <__stack+0x11> + 516: 98 83 st Y, r25 + 518: 9d 91 ld r25, X+ + 51a: 91 11 cpse r25, r1 + 51c: f9 cf rjmp .-14 ; 0x510 <__stack+0x11> + 51e: e0 ec ldi r30, 0xC0 ; 192 + 520: f0 e0 ldi r31, 0x00 ; 0 + 522: 80 81 ld r24, Z + 524: 85 ff sbrs r24, 5 + 526: fd cf rjmp .-6 ; 0x522 <__stack+0x23> + 528: 8d e0 ldi r24, 0x0D ; 13 + 52a: 80 93 c6 00 sts 0x00C6, r24 + 52e: e0 ec ldi r30, 0xC0 ; 192 + 530: f0 e0 ldi r31, 0x00 ; 0 + 532: 80 81 ld r24, Z + 534: 85 ff sbrs r24, 5 + 536: fd cf rjmp .-6 ; 0x532 <__stack+0x33> + 538: 8a e0 ldi r24, 0x0A ; 10 + 53a: 80 93 c6 00 sts 0x00C6, r24 + 53e: df 91 pop r29 + 540: cf 91 pop r28 + 542: 1f 91 pop r17 + 544: 08 95 ret + +00000546
: + 546: 78 94 sei + 548: 82 e3 ldi r24, 0x32 ; 50 + 54a: 90 e0 ldi r25, 0x00 ; 0 + 54c: 26 e7 ldi r18, 0x76 ; 118 + 54e: 31 e0 ldi r19, 0x01 ; 1 + UCSR0A= (0< + 55e: 40 81 ld r20, Z + 560: 45 ff sbrs r20, 5 + 562: fd cf rjmp .-6 ; 0x55e + 564: 5c 93 st X, r21 + 566: 59 91 ld r21, Y+ + 568: 51 11 cpse r21, r1 + 56a: f9 cf rjmp .-14 ; 0x55e + 56c: 40 81 ld r20, Z + 56e: 45 ff sbrs r20, 5 + 570: fd cf rjmp .-6 ; 0x56c + 572: 7c 93 st X, r23 + 574: 40 81 ld r20, Z + 576: 45 ff sbrs r20, 5 + 578: fd cf rjmp .-6 ; 0x574 + 57a: 6c 93 st X, r22 + 57c: 01 97 sbiw r24, 0x01 ; 1 + 57e: 19 f0 breq .+6 ; 0x586 + 580: e9 01 movw r28, r18 + 582: 57 e4 ldi r21, 0x47 ; 71 + 584: ec cf rjmp .-40 ; 0x55e + 586: 29 9a sbi 0x05, 1 ; 5 + 588: c0 ec ldi r28, 0xC0 ; 192 + 58a: d0 e0 ldi r29, 0x00 ; 0 + 58c: 06 ec ldi r16, 0xC6 ; 198 + 58e: 10 e0 ldi r17, 0x00 ; 0 + 590: 0f 2e mov r0, r31 + 592: fe e2 ldi r31, 0x2E ; 46 + 594: df 2e mov r13, r31 + 596: f0 2d mov r31, r0 + 598: 0f 2e mov r0, r31 + 59a: fd e0 ldi r31, 0x0D ; 13 + 59c: ef 2e mov r14, r31 + 59e: f0 2d mov r31, r0 + 5a0: 0f 2e mov r0, r31 + UCSR0A= (0< + 5ac: 0e 94 84 00 call 0x108 ; 0x108 <_Z7recievev> + 5b0: 88 81 ld r24, Y + 5b2: 85 ff sbrs r24, 5 + 5b4: fd cf rjmp .-6 ; 0x5b0 + 5b6: f8 01 movw r30, r16 + 5b8: d0 82 st Z, r13 + 5ba: 88 81 ld r24, Y + 5bc: 85 ff sbrs r24, 5 + 5be: fd cf rjmp .-6 ; 0x5ba + 5c0: f8 01 movw r30, r16 + 5c2: e0 82 st Z, r14 + 5c4: 88 81 ld r24, Y + 5c6: 85 ff sbrs r24, 5 + 5c8: fd cf rjmp .-6 ; 0x5c4 + 5ca: f8 01 movw r30, r16 + 5cc: f0 82 st Z, r15 + 5ce: ff ef ldi r31, 0xFF ; 255 + 5d0: 24 e3 ldi r18, 0x34 ; 52 + 5d2: 8c e0 ldi r24, 0x0C ; 12 + 5d4: f1 50 subi r31, 0x01 ; 1 + 5d6: 20 40 sbci r18, 0x00 ; 0 + 5d8: 80 40 sbci r24, 0x00 ; 0 + 5da: e1 f7 brne .-8 ; 0x5d4 + UCSR0A= (0< + 5de: 00 00 nop + 5e0: 28 98 cbi 0x05, 0 ; 5 + UDR0 = c; + 5e2: e2 cf rjmp .-60 ; 0x5a8 + +000005e4 <_ZN4UartILm9600EEC1Ev>: + 5e4: cf 93 push r28 + sei(); + init(); + println("Uart done!"); + } + void print(const char *text) { + while (*text) + 5e6: df 93 push r29 + UCSR0A= (0< + 614: 98 83 st Y, r25 + 616: 9d 91 ld r25, X+ + 618: 91 11 cpse r25, r1 + 61a: f9 cf rjmp .-14 ; 0x60e <_ZN4UartILm9600EEC1Ev+0x2a> + 61c: e0 ec ldi r30, 0xC0 ; 192 + 61e: f0 e0 ldi r31, 0x00 ; 0 + 620: 80 81 ld r24, Z + 622: 85 ff sbrs r24, 5 + 624: fd cf rjmp .-6 ; 0x620 <_ZN4UartILm9600EEC1Ev+0x3c> + 626: 8d e0 ldi r24, 0x0D ; 13 + 628: 80 93 c6 00 sts 0x00C6, r24 + UCSR0A= (0< + text++; + } + } + void printDec(uint16_t wert) { + print((wert/10000)+'0'); + print(((wert/1000)%10)+'0'); + 636: 8a e0 ldi r24, 0x0A ; 10 + 638: 80 93 c6 00 sts 0x00C6, r24 + 63c: df 91 pop r29 + 63e: cf 91 pop r28 + 640: 08 95 ret + +00000642 <_GLOBAL__sub_I_Serial>: + 642: 8e e1 ldi r24, 0x1E ; 30 + 644: 93 e0 ldi r25, 0x03 ; 3 + 646: 0e 94 f2 02 call 0x5e4 ; 0x5e4 <_ZN4UartILm9600EEC1Ev> + 64a: 55 9a sbi 0x0a, 5 ; 10 + 64c: 53 9a sbi 0x0a, 3 ; 10 + 64e: 23 9a sbi 0x04, 3 ; 4 + 650: 81 e2 ldi r24, 0x21 ; 33 + 652: 84 bd out 0x24, r24 ; 36 + 654: 81 e0 ldi r24, 0x01 ; 1 + 656: 85 bd out 0x25, r24 ; 37 + 658: 16 bc out 0x26, r1 ; 38 + 65a: 10 92 b6 00 sts 0x00B6, r1 + 65e: 91 ea ldi r25, 0xA1 ; 161 + 660: 90 93 b0 00 sts 0x00B0, r25 + 664: 80 93 b1 00 sts 0x00B1, r24 + 668: 10 92 b2 00 sts 0x00B2, r1 + 66c: 10 92 6e 00 sts 0x006E, r1 + 670: 10 92 70 00 sts 0x0070, r1 + 674: 18 bc out 0x28, r1 ; 40 + 676: 10 92 b4 00 sts 0x00B4, r1 + 67a: 10 92 b3 00 sts 0x00B3, r1 + 67e: 20 9a sbi 0x04, 0 ; 4 + 680: 21 9a sbi 0x04, 1 ; 4 + 682: 28 98 cbi 0x05, 0 ; 5 + 684: 29 98 cbi 0x05, 1 ; 5 + 686: 56 98 cbi 0x0a, 6 ; 10 + 688: 5e 98 cbi 0x0b, 6 ; 11 + 68a: 57 98 cbi 0x0a, 7 ; 10 + UCSR0A= (0<: + 69c: a2 9f mul r26, r18 + 69e: b0 01 movw r22, r0 + 6a0: b3 9f mul r27, r19 + 6a2: c0 01 movw r24, r0 + 6a4: a3 9f mul r26, r19 + 6a6: 01 d0 rcall .+2 ; 0x6aa <__umulhisi3+0xe> + 6a8: b2 9f mul r27, r18 + 6aa: 70 0d add r23, r0 + 6ac: 81 1d adc r24, r1 + 6ae: 11 24 eor r1, r1 + 6b0: 91 1d adc r25, r1 + 6b2: 08 95 ret + +000006b4 <__tablejump2__>: + 6b4: ee 0f add r30, r30 + 6b6: ff 1f adc r31, r31 + +000006b8 <__tablejump__>: + 6b8: 05 90 lpm r0, Z+ + 6ba: f4 91 lpm r31, Z + 6bc: e0 2d mov r30, r0 + 6be: 09 94 ijmp + +000006c0 <_exit>: + 6c0: f8 94 cli + +000006c2 <__stop_program>: + 6c2: ff cf rjmp .-2 ; 0x6c2 <__stop_program> diff --git a/Door/Debug/Door.map b/Door/Debug/Door.map index 455b3a2..3e957d3 100644 --- a/Door/Debug/Door.map +++ b/Door/Debug/Door.map @@ -2,12 +2,26 @@ Archive member included because of file (symbol) 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) 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 (exit) +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(_copy_data.o) + Door.o (__do_copy_data) +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(_clear_bss.o) + Door.o (__do_clear_bss) +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(_ctors.o) + Door.o (__do_global_ctors) +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(_umulhisi3.o) + Door.o (__umulhisi3) +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) + 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(_ctors.o) (__tablejump__) 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/avr5/crtm168a.o + .group 0x00000000 0x8 Door.o .text 0x00000000 0x0 Door.o - .bss 0x00000000 0x0 Door.o + .text._Z11printpulsesv + 0x00000000 0xb9c Door.o + .text._Z4loopv + 0x00000000 0x90 Door.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/avr5\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/avr5\libgcc.a(_exit.o) .text.libgcc.mul @@ -21,6 +35,68 @@ Discarded input sections 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/avr5\libgcc.a(_exit.o) .text.libgcc.fmul 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/avr5\libgcc.a(_exit.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/avr5\libgcc.a(_copy_data.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/avr5\libgcc.a(_copy_data.o) + .text.libgcc.mul + 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/avr5\libgcc.a(_copy_data.o) + .text.libgcc.div + 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/avr5\libgcc.a(_copy_data.o) + .text.libgcc 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/avr5\libgcc.a(_copy_data.o) + .text.libgcc.prologue + 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/avr5\libgcc.a(_copy_data.o) + .text.libgcc.builtins + 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/avr5\libgcc.a(_copy_data.o) + .text.libgcc.fmul + 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/avr5\libgcc.a(_copy_data.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/avr5\libgcc.a(_clear_bss.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/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.mul + 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/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.div + 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/avr5\libgcc.a(_clear_bss.o) + .text.libgcc 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/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.prologue + 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/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.builtins + 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/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.fmul + 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/avr5\libgcc.a(_clear_bss.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/avr5\libgcc.a(_ctors.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/avr5\libgcc.a(_ctors.o) + .text.libgcc.mul + 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/avr5\libgcc.a(_ctors.o) + .text.libgcc.div + 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/avr5\libgcc.a(_ctors.o) + .text.libgcc 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/avr5\libgcc.a(_ctors.o) + .text.libgcc.prologue + 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/avr5\libgcc.a(_ctors.o) + .text.libgcc.builtins + 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/avr5\libgcc.a(_ctors.o) + .text.libgcc.fmul + 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/avr5\libgcc.a(_ctors.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/avr5\libgcc.a(_umulhisi3.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/avr5\libgcc.a(_umulhisi3.o) + .text.libgcc.div + 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/avr5\libgcc.a(_umulhisi3.o) + .text.libgcc 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/avr5\libgcc.a(_umulhisi3.o) + .text.libgcc.prologue + 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/avr5\libgcc.a(_umulhisi3.o) + .text.libgcc.builtins + 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/avr5\libgcc.a(_umulhisi3.o) + .text.libgcc.fmul + 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/avr5\libgcc.a(_umulhisi3.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/avr5\libgcc.a(_tablejump.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/avr5\libgcc.a(_tablejump.o) + .text.libgcc.mul + 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/avr5\libgcc.a(_tablejump.o) + .text.libgcc.div + 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/avr5\libgcc.a(_tablejump.o) + .text.libgcc.prologue + 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/avr5\libgcc.a(_tablejump.o) + .text.libgcc.builtins + 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/avr5\libgcc.a(_tablejump.o) + .text.libgcc.fmul + 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/avr5\libgcc.a(_tablejump.o) Memory Configuration @@ -138,7 +214,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .rela.plt *(.rela.plt) -.text 0x00000000 0xb0 +.text 0x00000000 0x6c4 *(.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 @@ -158,73 +234,98 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.lowtext*) 0x00000068 __ctors_start = . *(.ctors) - 0x00000068 __ctors_end = . - 0x00000068 __dtors_start = . + .ctors 0x00000068 0x2 Door.o + 0x0000006a __ctors_end = . + 0x0000006a __dtors_start = . *(.dtors) - 0x00000068 __dtors_end = . + 0x0000006a __dtors_end = . SORT(*)(.ctors) SORT(*)(.dtors) *(.init0) - .init0 0x00000068 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 - 0x00000068 __init + .init0 0x0000006a 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 + 0x0000006a __init *(.init0) *(.init1) *(.init1) *(.init2) - .init2 0x00000068 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/../../../../avr/lib/avr5/crtm168a.o + .init2 0x0000006a 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/../../../../avr/lib/avr5/crtm168a.o *(.init2) *(.init3) *(.init3) *(.init4) + .init4 0x00000076 0x16 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(_copy_data.o) + 0x00000076 __do_copy_data + .init4 0x0000008c 0x10 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(_clear_bss.o) + 0x0000008c __do_clear_bss *(.init4) *(.init5) *(.init5) *(.init6) + .init6 0x0000009c 0x16 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(_ctors.o) + 0x0000009c __do_global_ctors *(.init6) *(.init7) *(.init7) *(.init8) *(.init8) *(.init9) - .init9 0x00000074 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/../../../../avr/lib/avr5/crtm168a.o + .init9 0x000000b2 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/../../../../avr/lib/avr5/crtm168a.o *(.init9) *(.text) - .text 0x0000007c 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/../../../../avr/lib/avr5/crtm168a.o - 0x0000007c __vector_22 - 0x0000007c __vector_1 - 0x0000007c __vector_24 - 0x0000007c __vector_12 - 0x0000007c __bad_interrupt - 0x0000007c __vector_6 - 0x0000007c __vector_3 - 0x0000007c __vector_23 - 0x0000007c __vector_25 - 0x0000007c __vector_11 - 0x0000007c __vector_13 - 0x0000007c __vector_17 - 0x0000007c __vector_19 - 0x0000007c __vector_7 - 0x0000007c __vector_5 - 0x0000007c __vector_4 - 0x0000007c __vector_9 - 0x0000007c __vector_2 - 0x0000007c __vector_21 - 0x0000007c __vector_15 - 0x0000007c __vector_8 - 0x0000007c __vector_14 - 0x0000007c __vector_10 - 0x0000007c __vector_16 - 0x0000007c __vector_18 - 0x0000007c __vector_20 - 0x00000080 . = ALIGN (0x2) + .text 0x000000ba 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/../../../../avr/lib/avr5/crtm168a.o + 0x000000ba __vector_22 + 0x000000ba __vector_1 + 0x000000ba __vector_24 + 0x000000ba __vector_12 + 0x000000ba __bad_interrupt + 0x000000ba __vector_6 + 0x000000ba __vector_3 + 0x000000ba __vector_23 + 0x000000ba __vector_25 + 0x000000ba __vector_11 + 0x000000ba __vector_13 + 0x000000ba __vector_17 + 0x000000ba __vector_19 + 0x000000ba __vector_7 + 0x000000ba __vector_5 + 0x000000ba __vector_4 + 0x000000ba __vector_9 + 0x000000ba __vector_2 + 0x000000ba __vector_21 + 0x000000ba __vector_15 + 0x000000ba __vector_8 + 0x000000ba __vector_14 + 0x000000ba __vector_10 + 0x000000ba __vector_16 + 0x000000ba __vector_18 + 0x000000ba __vector_20 + 0x000000be . = ALIGN (0x2) *(.text.*) - .text.main 0x00000080 0x2c Door.o - 0x00000080 main - 0x000000ac . = ALIGN (0x2) + .text._Z8read8bitv + 0x000000be 0x4a Door.o + 0x000000be _Z8read8bitv + .text._Z7recievev + 0x00000108 0x43e Door.o + 0x00000108 _Z7recievev + .text.main 0x00000546 0x9e Door.o + 0x00000546 main + .text._ZN4UartILm9600EEC2Ev + 0x000005e4 0x5e Door.o + 0x000005e4 _ZN4UartILm9600EEC1Ev + 0x000005e4 _ZN4UartILm9600EEC2Ev + .text._GLOBAL__sub_I_Serial + 0x00000642 0x5a Door.o + .text.libgcc.mul + 0x0000069c 0x18 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(_umulhisi3.o) + 0x0000069c __umulhisi3 + .text.libgcc 0x000006b4 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) + 0x000006b4 __tablejump2__ + 0x000006b8 __tablejump__ + 0x000006c0 . = ALIGN (0x2) *(.fini9) - .fini9 0x000000ac 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) - 0x000000ac _exit - 0x000000ac exit + .fini9 0x000006c0 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) + 0x000006c0 _exit + 0x000006c0 exit *(.fini9) *(.fini8) *(.fini8) @@ -243,39 +344,55 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .fini0 0x000000ac 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 0x000006c0 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) - 0x000000b0 _etext = . + 0x000006c4 _etext = . -.data 0x00800100 0x0 load address 0x000000b0 +.data 0x00800100 0x8a load address 0x000006c4 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 .data 0x00800100 0x0 Door.o .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/avr5\libgcc.a(_exit.o) + .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/avr5\libgcc.a(_copy_data.o) + .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/avr5\libgcc.a(_clear_bss.o) + .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/avr5\libgcc.a(_ctors.o) + .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/avr5\libgcc.a(_umulhisi3.o) + .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/avr5\libgcc.a(_tablejump.o) *(.data*) *(.rodata) *(.rodata*) + .rodata.str1.1 + 0x00800100 0x89 Door.o + 0x8c (size before relaxing) *(.gnu.linkonce.d*) - 0x00800100 . = ALIGN (0x2) - 0x00800100 _edata = . - 0x00800100 PROVIDE (__data_end, .) + 0x0080018a . = ALIGN (0x2) + *fill* 0x00800189 0x1 + 0x0080018a _edata = . + 0x0080018a PROVIDE (__data_end, .) -.bss 0x00800100 0x0 - 0x00800100 PROVIDE (__bss_start, .) +.bss 0x0080018a 0x195 + 0x0080018a PROVIDE (__bss_start, .) *(.bss) + .bss 0x0080018a 0x195 Door.o + 0x0080018a currentpulse + 0x0080018b pulses + 0x0080031b comp + 0x0080031c led + 0x0080031d stripe + 0x0080031e Serial *(.bss*) *(COMMON) - 0x00800100 PROVIDE (__bss_end, .) - 0x000000b0 __data_load_start = LOADADDR (.data) - 0x000000b0 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x0080031f PROVIDE (__bss_end, .) + 0x000006c4 __data_load_start = LOADADDR (.data) + 0x0000074e __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00800100 0x0 - 0x00800100 PROVIDE (__noinit_start, .) +.noinit 0x0080031f 0x0 + 0x0080031f PROVIDE (__noinit_start, .) *(.noinit*) - 0x00800100 PROVIDE (__noinit_end, .) - 0x00800100 _end = . - 0x00800100 PROVIDE (__heap_start, .) + 0x0080031f PROVIDE (__noinit_end, .) + 0x0080031f _end = . + 0x0080031f PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -333,38 +450,39 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x20 +.debug_aranges 0x00000000 0x50 *(.debug_aranges) .debug_aranges - 0x00000000 0x20 Door.o + 0x00000000 0x50 Door.o .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x11f +.debug_info 0x00000000 0x2dfe *(.debug_info) - .debug_info 0x00000000 0x11f Door.o + .debug_info 0x00000000 0x2dfe Door.o *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0xcf +.debug_abbrev 0x00000000 0x44d *(.debug_abbrev) - .debug_abbrev 0x00000000 0xcf Door.o + .debug_abbrev 0x00000000 0x44d Door.o -.debug_line 0x00000000 0x184 +.debug_line 0x00000000 0x63c *(.debug_line) - .debug_line 0x00000000 0x184 Door.o + .debug_line 0x00000000 0x63c Door.o -.debug_frame 0x00000000 0x24 +.debug_frame 0x00000000 0xe4 *(.debug_frame) - .debug_frame 0x00000000 0x24 Door.o + .debug_frame 0x00000000 0xe4 Door.o -.debug_str 0x00000000 0xd4 +.debug_str 0x00000000 0xc33 *(.debug_str) - .debug_str 0x00000000 0xd4 Door.o - 0x108 (size before relaxing) + .debug_str 0x00000000 0xc33 Door.o + 0xc92 (size before relaxing) -.debug_loc +.debug_loc 0x00000000 0xcd8 *(.debug_loc) + .debug_loc 0x00000000 0xcd8 Door.o .debug_macinfo *(.debug_macinfo) @@ -372,9 +490,9 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x10 +.debug_ranges 0x00000000 0x4a8 *(.debug_ranges) - .debug_ranges 0x00000000 0x10 Door.o + .debug_ranges 0x00000000 0x4a8 Door.o .debug_macro *(.debug_macro) diff --git a/Door/Debug/Door.srec b/Door/Debug/Door.srec index 8d1e186..03c601f 100644 --- a/Door/Debug/Door.srec +++ b/Door/Debug/Door.srec @@ -1,13 +1,120 @@ S00C0000446F6F722E7372656384 -S11300000C9434000C943E000C943E000C943E007E -S11300100C943E000C943E000C943E000C943E0064 -S11300200C943E000C943E000C943E000C943E0054 -S11300300C943E000C943E000C943E000C943E0044 -S11300400C943E000C943E000C943E000C943E0034 -S11300500C943E000C943E000C943E000C943E0024 -S11300600C943E000C943E0011241FBECFEFD4E04C -S1130070DEBFCDBF0E9440000C9456000C940000DB -S113008084B1836084B9289A21E092E085B1822703 -S113009085B985B1892785B93FE744E88EE13150B8 -S11300A040408040E1F700C00000F0CFF894FFCF5B +S11300000C9435000C945D000C945D000C945D0020 +S11300100C945D000C945D000C945D000C945D00E8 +S11300200C945D000C945D000C945D000C945D00D8 +S11300300C945D000C945D000C945D000C945D00C8 +S11300400C945D000C945D000C945D000C945D00B8 +S11300500C945D000C945D000C945D000C945D00A8 +S11300600C945D000C945D00210311241FBECFEF9E +S1130070D4E0DEBFCDBF11E0A0E0B1E0E4ECF6E0F7 +S113008002C005900D92AA38B107D9F723E0AAE877 +S1130090B1E001C01D92AF31B207E1F710E0CAE64A +S11300A0D0E004C02297FE010E945C03C836D10749 +S11300B0C9F70E94A3020C9460030C94000020E092 +S11300C030E080E061E070E04A99FECF289AE7EBE7 +S11300D0FBE03197F1F700C000004A9908C0AB017A +S11300E0022E02C0440F551F0A94E2F7842B4A9B48 +S11300F0FECF2898F2E4FA95F1F700C02F5F3F4F46 +S11301002830310509F708951F93CF93DF934A9957 +S113011016C28FE19EE40197F1F700C000004A99EE +S11301200EC24A9BFECF0E945F00182F0E945F0000 +S11301300E945F00482FC82FD0E0E0ECF0E08081FF +S113014085FFFDCF80E38093C60060E070E0CB01C3 +S11301509695879596958795969587959C01220FF8 +S1130160331F880F991F880F991F880F991F820FBB +S1130170931F681B790B605DE0ECF0E0808185FFE4 +S1130180FDCF6093C6009E01369527953695279539 +S1130190ABE7B4E10E944E0396958795805DE0EC51 +S11301A0F0E0908195FFFDCF8093C6009E01ADECF9 +S11301B0BCEC0E944E03FC01F695E795F695E79595 +S11301C0F695E7959F010E944E039695879596951F +S11301D08795969587959C01220F331F880F991F49 +S11301E0880F991F880F991F820F931FE81BF90B23 +S11301F09E2F905DE0ECF0E0808185FFFDCF909331 +S1130200C6009E01ADECBCEC0E944E03969587950A +S113021096958795969587959C01220F331F880F95 +S1130220991F880F991F880F991F820F931FC81B4E +S1130230D90BC05DE0ECF0E0808185FFFDCFC09379 +S1130240C600A4E5B1E090E2E0ECF0E0C6ECD0E05A +S1130250808185FFFDCF98839D919111F9CFE0ECCA +S1130260F0E0808185FFFDCF8DE08093C600E0EC57 +S1130270F0E0808185FFFDCF8AE08093C6001111F4 +S11302805EC14F3E09F05BC10E945F00182F0E94BF +S11302905F00482FABE5B1E022E5E0ECF0E0C6EC0E +S11302A0D0E0908195FFFDCF28832D912111F9CFC6 +S11302B0E0ECF0E0908195FFFDCF8DE08093C600E7 +S11302C0E0ECF0E0908195FFFDCF8AE08093C600DA +S11302D0E0ECF0E0808185FFFDCFC12FD0E080E32A +S11302E08093C60060E070E0CB0196958795969563 +S11302F08795969587959C01220F331F880F991F28 +S1130300880F991F880F991F820F931F681B790B01 +S1130310605DE0ECF0E0808185FFFDCF6093C60076 +S11303209E013695279536952795ABE7B4E10E9453 +S11303304E0396958795805DE0ECF0E0908195FF03 +S1130340FDCF8093C6009E01ADECBCEC0E944E0331 +S1130350FC01F695E795F695E795F695E7959F01E7 +S11303600E944E03969587959695879596958795C1 +S11303709C01220F331F880F991F880F991F880F24 +S1130380991F820F931FE81BF90B9E2F905DE0ECE1 +S1130390F0E0808185FFFDCF9093C6009E01ADEC17 +S11303A0BCEC0E944E0396958795969587959695F5 +S11303B087959C01220F331F880F991F880F991F5F +S11303C0880F991F820F931FC81BD90BC05DE0ECE7 +S11303D0F0E0808185FFFDCFC093C600A6E6B1E0C2 +S11303E090E2E0ECF0E0C6ECD0E0808185FFFDCF48 +S11303F098839D919111F9CF50E0E0ECF0E0808179 +S113040085FFFDCF80E38093C60060E070E0CB0100 +S11304109695879596958795969587959C01220F35 +S1130420331F880F991F880F991F880F991F820FF8 +S1130430931F681B790B605DE0ECF0E0808185FF21 +S1130440FDCF6093C6009A0136952795369527957A +S1130450ABE7B4E10E944E0396958795805DE0EC8E +S1130460F0E0908195FFFDCF8093C6009A01ADEC3A +S1130470BCEC0E944E03FC01F695E795F695E795D2 +S1130480F695E7959F010E944E039695879596955C +S11304908795969587959C01220F331F880F991F86 +S11304A0880F991F880F991F820F931FE81BF90B60 +S11304B09E2F905DE0ECF0E0808185FFFDCF90936E +S11304C0C6009A01ADECBCEC0E944E03969587954C +S11304D096958795969587959C01220F331F880FD3 +S11304E0991F880F991F880F991F820F931F481B0C +S11304F0590B405DE0ECF0E0808185FFFDCF409337 +S1130500C600AFE6B1E090E2E0ECF0E0C6ECD0E08B +S1130510808185FFFDCF98839D919111F9CFE0EC07 +S1130520F0E0808185FFFDCF8DE08093C600E0EC94 +S1130530F0E0808185FFFDCF8AE08093C600DF91E3 +S1130540CF911F910895789482E390E026E731E0FB +S1130550E0ECF0E0A6ECB0E07DE06AE011C04081A0 +S113056045FFFDCF5C9359915111F9CF408145FF6F +S1130570FDCF7C93408145FFFDCF6C93019719F02B +S1130580E90157E4ECCF299AC0ECD0E006EC10E086 +S11305900F2EFEE2DF2EF02D0F2EFDE0EF2EF02DBC +S11305A00F2EFAE0FF2EF02D4A99FECF0E94840010 +S11305B0888185FFFDCFF801D082888185FFFDCF3A +S11305C0F801E082888185FFFDCFF801F082FFEF1A +S11305D024E38CE0F15020408040E1F700C00000AB +S11305E02898E2CFCF93DF93789481E88093C40076 +S11305F01092C00088E08093C10086E08093C2001E +S1130600AFE7B1E095E5E0ECF0E0C6ECD0E0808146 +S113061085FFFDCF98839D919111F9CFE0ECF0E037 +S1130620808185FFFDCF8DE08093C600E0ECF0E093 +S1130630808185FFFDCF8AE08093C600DF91CF9152 +S113064008958EE193E00E94F202559A539A239AF8 +S113065081E284BD81E085BD16BC1092B60091EAAA +S11306609093B0008093B1001092B20010926E008B +S11306701092700018BC1092B4001092B300209A2B +S1130680219A2898299856985E9857985F9810BE92 +S113069010927B0083E080937F000895A29FB001B5 +S11306A0B39FC001A39F01D0B29F700D811D11247F +S11306B0911D0895EE0FFF1F0590F491E02D09940C +S10706C0F894FFCFD8 +S11306C40A0D0A0D52656365697665643A200A0D5C +S11306D44F464620094F4E00696E7420495273698F +S11306E4676E616C5B5D203D207B002F2F204F469D +S11306F4462C204F4E2028696E2031302773206FFA +S113070466206D6963726F7365636F6E6473290029 +S11307147D3B002031427974650052656164204454 +S11307246174613A002048427974652C2000204C9D +S1130734427974650047656C6164656E2100556196 +S10D0744727420646F6E65210000DA S9030000FC diff --git a/Door/Debug/Makefile b/Door/Debug/Makefile index 750a45c..768a353 100644 --- a/Door/Debug/Makefile +++ b/Door/Debug/Makefile @@ -31,7 +31,9 @@ OUTPUT_FILE_DEP:= LIB_DEP:= # Every subdirectory with source files must be described here -SUBDIRS := +SUBDIRS := \ +../io \ +../io/hardware # Add inputs and outputs from these tool invocations to the build variables diff --git a/Door/Debug/io/hardware/.gitignore b/Door/Debug/io/hardware/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/Door/Door.cpp b/Door/Door.cpp index ba6fe13..64d6a5b 100644 --- a/Door/Door.cpp +++ b/Door/Door.cpp @@ -5,75 +5,189 @@ * Author: netz */ -#define F_CPU 20000000 -#include +#include "peripheral.h" #include -/*void Init_AIN() -{ - // Analog Comparator initialization - // Analog Comparator: On - // The Analog Comparator's positive input is - // connected to the AIN0 pin - // The Analog Comparator's negative input is - // connected to the AIN1 pin - // Analog Comparator Input Capture by Timer/Counter 1: Off - ACSR=(0<= MAXPULSE) && (currentpulse != 0)) { + printpulses(); + return; + } + } + pulses[currentpulse][1] = lowpulse; + + while (PIND & (1<= MAXPULSE) && (currentpulse != 0)) { + printpulses(); + return; + } + }// we didn't time out so lets stash the reading + pulses[currentpulse][0] = highpulse; + // we read one high-low pulse successfully, continue! + currentpulse++; + } +} + +uint8_t read8bit() { + uint8_t r = 0; + for (uint8_t i=0;i<8;i++) + { + while (PIND & (1< compile + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + + + \ No newline at end of file diff --git a/Door/io/Comperator.hpp b/Door/io/Comperator.hpp new file mode 100644 index 0000000..b29a247 --- /dev/null +++ b/Door/io/Comperator.hpp @@ -0,0 +1,47 @@ +/* + * Comperator.hpp + * + * Created: 17.11.2014 23:50:04 + * Author: netz + */ + + +#ifndef COMPERATOR_H_ +#define COMPERATOR_H_ + +#include "hardware/pin.hpp" + +template +class Comperator { + public: + Comperator() { + init(); + } + uint8_t is_active() { + return ACSR & (1< comppin0; + const typedef avrlib::pin comppin1; +}; + +#endif /* COMPERATOR_H_ */ \ No newline at end of file diff --git a/Door/io/Interrupt.hpp b/Door/io/Interrupt.hpp new file mode 100644 index 0000000..ab8db87 --- /dev/null +++ b/Door/io/Interrupt.hpp @@ -0,0 +1,42 @@ +/* + * Interrupt.hpp + * + * Created: 18.11.2014 00:27:52 + * Author: netz + */ + + +#ifndef INTERRUPT_H_ +#define INTERRUPT_H_ + +template +class Interrupt { + public: + Interrupt() { + init(); + } + uint8_t is_active() { + return intpin::read(); + } + private: + void init() { + intpin::make_input(); + intpin::pullup(); + init_int(); + } + void init_int() { + // External Interrupt(s) initialization + // INT0: On + // INT0 Mode: Rising Edge + // INT1: Off + // Interrupt on any change on pins PCINT0-7: Off + // Interrupt on any change on pins PCINT8-14: Off + // Interrupt on any change on pins PCINT16-23: Off + EICRA=(0< intpin; +}; + +#endif /* INTERRUPT_H_ */ \ No newline at end of file diff --git a/Door/io/Led.hpp b/Door/io/Led.hpp new file mode 100644 index 0000000..5b70fcc --- /dev/null +++ b/Door/io/Led.hpp @@ -0,0 +1,47 @@ +/* + * Led.h + * + * Created: 03.11.2013 17:11:58 + * Author: BlubbFish + */ + +#ifndef LED_H_ +#define LED_H_ + +#include "hardware/pin.hpp" + +template +class Led { + public: + Led() { + init(); + } + void red(uint8_t r) { + if(r==1) { + ledred::set(); + } else { + ledred::clear(); + } + } + void green(uint8_t g) { + if(g==1) { + ledgreen::set(); + } else { + ledgreen::clear(); + } + } + void off() { + ledred::clear(); + ledgreen::clear(); + } + private: + void init() { + ledred::make_output(); + ledgreen::make_output(); + off(); + } + const typedef avrlib::pin ledred; + const typedef avrlib::pin ledgreen; +}; + +#endif /* LED_H_ */ \ No newline at end of file diff --git a/Door/io/Stripe.hpp b/Door/io/Stripe.hpp new file mode 100644 index 0000000..94ad6e8 --- /dev/null +++ b/Door/io/Stripe.hpp @@ -0,0 +1,82 @@ +/* + * Led.h + * + * Created: 03.11.2013 17:11:58 + * Author: BlubbFish + */ + +#ifndef STRIPE_H_ +#define STRIPE_H_ + +#include "hardware/pin.hpp" + +template +class Stripe { + public: + Stripe() { + init(); + } + void color(uint8_t r, uint8_t g, uint8_t b) { + OCR0B=r; //ROT + OCR2B=g; //GRÜN + OCR2A=b; //BLAU + } + void setcolor(uint8_t mask) { + (mask & (1<<0)) ? OCR2A=0xFF : OCR2A=0x00; + (mask & (1<<1)) ? OCR2B=0xFF : OCR2B=0x00; + (mask & (1<<2)) ? OCR0B=0xFF : OCR0B=0x00; + } + static const uint8_t BLACK = 0; + static const uint8_t BLUE = 1; + static const uint8_t GREEN = 2; + static const uint8_t CYAN = 3; + static const uint8_t RED = 4; + static const uint8_t MAGENTA = 5; + static const uint8_t YELLOW = 6; + static const uint8_t WHITE = 7; + private: + void init() { + stripered::make_output(); + stripegreen::make_output(); + stripeblue::make_output(); + initTimer(); + color(0, 0, 0); + } + void uninit(); + void initTimer() { + // Timer/Counter 0 initialization + // Clock source: System Clock + // Clock value: 8000,000 kHz + // Mode: Phase correct PWM top=0xFF + // OC0A output: Disconnected + // OC0B output: Non-Inverted PWM + // Timer Period: 0,06375 ms + // Output Pulse(s): + // OC0B Period: 0,06375 ms Width: 0 us + TCCR0A=(0< stripered; + const typedef avrlib::pin stripegreen; + const typedef avrlib::pin stripeblue; +}; +#endif /* STRIPE_H_ */ \ No newline at end of file diff --git a/Door/io/hardware/pin.hpp b/Door/io/hardware/pin.hpp new file mode 100644 index 0000000..c14f338 --- /dev/null +++ b/Door/io/hardware/pin.hpp @@ -0,0 +1,50 @@ +#ifndef AVRLIB_PIN_HPP +#define AVRLIB_PIN_HPP + +#include + +namespace avrlib { + + template + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + + 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; } + }; + +} + +#endif diff --git a/Door/io/hardware/portd.hpp b/Door/io/hardware/portd.hpp new file mode 100644 index 0000000..e045ee5 --- /dev/null +++ b/Door/io/hardware/portd.hpp @@ -0,0 +1,22 @@ +#ifndef AVRLIB_PORTD_HPP +#define AVRLIB_PORTD_HPP + +#include + +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + + 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; } + }; + +} + +#endif diff --git a/Door/io/uart.hpp b/Door/io/uart.hpp new file mode 100644 index 0000000..e9aa5bc --- /dev/null +++ b/Door/io/uart.hpp @@ -0,0 +1,60 @@ +/* + * Rs232.h + * + * Created: 04.11.2013 21:31:09 + * Author: netz + */ + +#ifndef RS232_H_ +#define RS232_H_ + +#include +#include + +template +class Uart { + public: + Uart() { + sei(); + init(); + println("Uart done!"); + } + void print(const char *text) { + while (*text) + { + uart_putchar(*text); + text++; + } + } + void printDec(uint16_t wert) { + print((wert/10000)+'0'); + print(((wert/1000)%10)+'0'); + print(((wert/100)%10)+'0'); + print(((wert/10)%10)+'0'); + print((wert%10)+'0'); + } + void println(const char *text) { + print(text); + print("\r"); + print("\n"); + } + void print(uint8_t wert) { + uart_putchar(wert); + } + private: + void init() { + UBRR0L = (F_CPU / (baudrate * 16L) - 1); //Teiler wird gesetzt + UCSR0A= (0< stripeclass; + +#include "io/Led.hpp" +typedef Led ledclass; + +#include "io/Comperator.hpp" +typedef Comperator compclass; + +/*#include "io/Interrupt.hpp" +typedef Interrupt intclass;*/ + +#include "io/uart.hpp" +typedef Uart<9600> uartclass; + + +#endif /* PERIPHERAL_H_ */ \ No newline at end of file