From 6de094275f41ed76621aa9fcc9f909d827ad182b Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Wed, 19 Nov 2014 22:57:35 +0000 Subject: [PATCH] 20141119-235733 --- Door.atsuo | Bin 8704 -> 13312 bytes Door/Debug/Door.d | 23 +- Door/Debug/Door.elf | Bin 5889 -> 29654 bytes Door/Debug/Door.hex | 129 ++- Door/Debug/Door.lss | 1285 ++++++++++++++++++++++++++--- Door/Debug/Door.map | 268 ++++-- Door/Debug/Door.srec | 129 ++- Door/Debug/Makefile | 4 +- Door/Debug/io/hardware/.gitignore | 0 Door/Door.cpp | 232 ++++-- Door/Door.cppproj | 31 + Door/io/Comperator.hpp | 47 ++ Door/io/Interrupt.hpp | 42 + Door/io/Led.hpp | 47 ++ Door/io/Stripe.hpp | 82 ++ Door/io/hardware/pin.hpp | 50 ++ Door/io/hardware/portb.hpp | 22 + Door/io/hardware/portd.hpp | 22 + Door/io/uart.hpp | 60 ++ Door/peripheral.h | 35 + 20 files changed, 2251 insertions(+), 257 deletions(-) create mode 100644 Door/Debug/io/hardware/.gitignore create mode 100644 Door/io/Comperator.hpp create mode 100644 Door/io/Interrupt.hpp create mode 100644 Door/io/Led.hpp create mode 100644 Door/io/Stripe.hpp create mode 100644 Door/io/hardware/pin.hpp create mode 100644 Door/io/hardware/portb.hpp create mode 100644 Door/io/hardware/portd.hpp create mode 100644 Door/io/uart.hpp create mode 100644 Door/peripheral.h diff --git a/Door.atsuo b/Door.atsuo index e6260e0212dc8ba76cbffaf870b2395a6c9fb514..ff8a6e1c8c3b112aa3955b6ff350b2a647fb0e9c 100644 GIT binary patch delta 2393 zcmb7FZERCj7(SjonOT|or|0H2Q{D@}!AST8i8VwTtVM1mC#xS4v+}pC@H1XU#_dVx5 z&->o@e7x@+4UHx**BdJBjIn%RDNq17fn|ULSPm2dMZo>Jxw-ov?|6q#7(02Mn6!9p zu|s#hHq7uW%m$0aG2@q3H@Z0hxO3u$u}qAbjpB%@!^TNN?lLpiY(~c&4h@?0jTt}s z!kQg6Zl+E=yXI6MI;(ZYE?uVCB&&2?4Wv)+*XgnWa=qRUKyCmUfsH^Dun8a^TOfl# zGtdIG0wG{4W2e|-=xhVpfOcRz&;fJ;UBKf&H_!v@0D1v(8iw4d_jg0?0rmn<08awM zc}kc2AouJ2eqF|;Jl{JsVIDJ?F<2*FGkcr^!;wB!8Av6nlBpE5EW2rFWN>iv)Mw@~ zZe!Wdz_Dy{|5Z!3jeDV`VVaoy;%7K0Nt;DshS?ZK&_!<%IYG12Vyh|!{H>k3Si z01rZQ&RADLL6&J{b{Pg1E{+wqYd4W5sL^gr%@!LCd1v*jXaaK&xo;Ff*Er7-H(bNK z7vrYY18kT@*a(X;g{iEHC0Pnjc-rvShN15U-a41l;ePk43X8btcJY3)$b!X$r6KT4#LwTw}O%_9gk2;yKOQBDeW@a+0rq7SllaJ&1=O<(<&aEFNvO{dh(wK|*-{U}OMq+6zbtoVnRjcho!f?d_{(Y?qTq z$*NAXYQ;7mlr{=JtYV~Othd*fzgHc&dTIBI&-q*(kG_!u>z%xsQp1P)*E)O!dPUGEKBAPvM>3|w566^5BsDO!sIw|!mVntlq$U()B!x^~5R_PH zbcol@C3y=uGTYBlw%0re^~8zef&RKcEuPBtwKcVsK408d83_1mDr?Z54)`1V8{*=o z{i4ytLW|T7VR94}TD3LEH(hl)qtFHV)FLrR3#xzVMn{$lgk*5h{~KKG$+V-ibTW=g zME^;xIj_<0&IW`QuXYsDa{3*n8*#lrNVM6{(X5C5Z|O#*-<2LnDWdMuJS{6U{Vu9Z zO+}jOANeVot<7Z-Tyd&XizOdpRN%wXiASS7T+SGyY}hX;6&mHg5|T0cH^e2q{9nRa zST@9ITalQ_E#qNY%37)oT8&7`UW^UOZ2x|5e>gmN<=*?E;fv^weH8{|`U)N)8=v-_ zc9bGj+9*gazMrIZp-dN zwzIdMz4hi5s!1LZba&ZRXRliD^G_$cKOekt^p8*dC~*hG58k-&nq3oKFAvE4KY%TG NUQ8BtOig>6_}{=9vETpz delta 532 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%0Dk2mUn_ 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 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