From f921d0b37b2ebfee3c2bd6eafb27ca1da05a927e Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Sat, 16 Jul 2016 16:09:59 +0000 Subject: [PATCH] Automatic Cronjob Checkin: 20160716-181005 --- USBLaminator/USBLaminator.atsuo | Bin 9216 -> 11264 bytes USBLaminator/USBLaminator/Debug/Makefile | 4 +- .../USBLaminator/Debug/USBLaminator.d | 33 +- .../USBLaminator/Debug/USBLaminator.elf | Bin 5013 -> 26131 bytes .../USBLaminator/Debug/USBLaminator.hex | 60 +- .../USBLaminator/Debug/USBLaminator.lss | 1236 ++++++++++++++++- .../USBLaminator/Debug/USBLaminator.map | 240 +++- .../USBLaminator/Debug/USBLaminator.srec | 60 +- .../USBLaminator/Debug/io/hardware/.gitignore | 0 USBLaminator/USBLaminator/USBLaminator.cpp | 26 +- .../USBLaminator/USBLaminator.cppproj | 198 +-- USBLaminator/USBLaminator/io/Led.hpp | 68 + USBLaminator/USBLaminator/io/SSR.hpp | 148 ++ USBLaminator/USBLaminator/io/Usart.hpp | 46 + USBLaminator/USBLaminator/io/hardware/pin.hpp | 50 + .../USBLaminator/io/hardware/porta.hpp | 22 + .../USBLaminator/io/hardware/portb.hpp | 22 + .../USBLaminator/io/hardware/portc.hpp | 22 + .../USBLaminator/io/hardware/portd.hpp | 22 + USBLaminator/USBLaminator/peripheral.h | 45 + 20 files changed, 2082 insertions(+), 220 deletions(-) create mode 100644 USBLaminator/USBLaminator/Debug/io/hardware/.gitignore create mode 100644 USBLaminator/USBLaminator/io/Led.hpp create mode 100644 USBLaminator/USBLaminator/io/SSR.hpp create mode 100644 USBLaminator/USBLaminator/io/Usart.hpp create mode 100644 USBLaminator/USBLaminator/io/hardware/pin.hpp create mode 100644 USBLaminator/USBLaminator/io/hardware/porta.hpp create mode 100644 USBLaminator/USBLaminator/io/hardware/portb.hpp create mode 100644 USBLaminator/USBLaminator/io/hardware/portc.hpp create mode 100644 USBLaminator/USBLaminator/io/hardware/portd.hpp create mode 100644 USBLaminator/USBLaminator/peripheral.h diff --git a/USBLaminator/USBLaminator.atsuo b/USBLaminator/USBLaminator.atsuo index 23c51bf49c3f89d23886a6420a2700dc4f86431c..e57d351ec1c7e68c1ec13f7306ad9c841f76ae30 100644 GIT binary patch delta 1814 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 literal 5013 zcmb`KYiu0V701uau9FZOHx5W3LDfZaMN-IY>^Qb#$jjL{p%^#BNq8A1v%8b^Cc87+ z*|8HsX%b4>6e#5ppyf>qw7lP6d5Eu|d_m$N2uP@?{Ze6}N=1Cwo-;G|?tceW{n8`d zxxfEC=bn4#&g|T~N48E*7=}U0OqwR8hPd(Tr9{WM9-pX(#5s( zmGTvry>vA4F-EqCuj1=D`4cWf|JTyj|D!ig{q2J<1K zpmlV%<}o@~^Cfh?=1X~nV=K^lo`>QMyy}WK(#4uL(Q3_`_3R2XPNTYg3tg(YK$|pg zrGn-O+OByUO={jwJ2YQLyEOk4_;TP$;46TqfPV(O1Nchdoxsz;yMT8C?*YCF_-f#5 zfUgC<4tNImdf*#?ZQ#AY4sa2;1Y8Dof%gGdfM#8TgmLM}Ut49|OJx_*cNU0v`wdHSlkMPXPZG_%`6% zf$sqR9q^sNzX!ex_-^2PfbRu9349;${lE_Z{{i@qzz+gH1pF}YBfyUWKL-3b@Dsp) z0{%1blfX{_KMnjB;J*St1Nu??BaS<`4S8fo8)gxp`+k z7+qEI=2nHiUn|WzRWIKRO47WlRxOtDr63&0SLA9jW{H}n#Lm8luTpE6jvFui)Tfqxp=cQX1nA7VrCc1o@Xu*!PVjsuCm7Yd^Ng- zWpIy6=AN8skkM!Sxc98?Oz(NUyBGBtJB?+0N-_JXyL$sSa#Vu6$7e0t*pulU>%OG> zva|Y(<;JF^4~+M4rVU(7S}9lKyWXY5=P5bn7?zc{h;~npPdfFg=kQ~(N{vQz1fnie z=8@?(WDXoHXN4AiInB4`CcU#UF5cT&2w8Wx+q!VIzK~_0rTG* zuib6VYgQ|sTh2*;E%^BdR2Z8n_@xV*GviJ(bZc(a^=9<6XE0}{D7eMBie6KhZDdyS z#(L-!$!dl{T+b>B-9sT+WhZpR8^<_B_L5cd>vfl>W|bwY?F5cjahpn3y?wr7r&tW! zd8KMq&sDrHaOzq_S>t3$E;YgbRm)jW9-^FC#X>G}&Q+#f-wU`w;xb(1y!(|3NNVwk zUC2eT=)ZG$kCUtKh1BxAS8>xVeCKF5+c zb-&MZ+=CD&Ii%c?)XFu%|6k;{rA&<_=YCx0Jsg+LCw(MdJ!{d8Gx#uogP1aXIY2S|(Wud5^?09V3gz8H-k{6NR&mzIm~T`m48B`T1o6%jkbD z$}e}(whZy2fMuu~l#Jig@$9m+&|1zB@;!`gp(Veg^-8k8pIP3?*cMvyzPD|mwT?x5 ztrl7nZ71LDLQCG$hHh&|N|X4n=eqqnU1-UEE$^aOjx!(TTK$(<#`;dyDqi$`tTFxx z(BglkBYvUv4)`Vid#o}4>6HH;DgVDxe%T9Df62FmHO}Ykl+LB}#VI|)n&_BZ_&qhL z5a~#=HfRd8jAygP@%FP;^O5*Ntkr(Bob}DA_!F#^<@kBroAN)J($A#y8?14>cT@Tl zYdd-ECI5%4)$c{_?{rFk$r|tHpRB!Pf^xs#fR_9FHWlB+zhUg(m(o8>>6Iz{{q5hj zr+3)fZJWS9qIaDch)B^Z9(n zTWJt-OML#bNoN&Nb3c&YgBg^MFjF z>Q!-K5~?OS0=%xx((Jl?m-UWx&2~iD-RI2JAnjWAMF-#HPNVaX9%zWYv#!(VNN2-{ zvJPrek}AFzwWe|6_|CYkbbxF(I>2=18zp&6?2E2CpA4>YuLhO{Rqdl~9$ZcT0bs(N AqyPW_ diff --git a/USBLaminator/USBLaminator/Debug/USBLaminator.hex b/USBLaminator/USBLaminator/Debug/USBLaminator.hex index cf80467..efbccad 100644 --- a/USBLaminator/USBLaminator/Debug/USBLaminator.hex +++ b/USBLaminator/USBLaminator/Debug/USBLaminator.hex @@ -1,9 +1,53 @@ -:100000000C942A000C9434000C9434000C943400AA -:100010000C9434000C9434000C9434000C94340090 -:100020000C9434000C9434000C9434000C94340080 -:100030000C9434000C9434000C9434000C94340070 -:100040000C9434000C9434000C9434000C94340060 -:100050000C94340011241FBECFE5D4E0DEBFCDBF29 -:100060000E9436000C9437000C940000FFCFF894E7 -:02007000FFCFC0 +:100000000C942B000C9453000C9453000C9453004C +:100010000C9453000C9453000C94FE000C94530069 +:100020000C9453000C9453000C9453000C94530004 +:100030000C9453000C9453000C9453000C945300F4 +:100040000C9453000C9453000C9453000C945300E4 +:100050000C945300530111241FBECFE5D4E0DEBF42 +:10006000CDBF10E0A0E6B0E0E2EDF2E002C0059006 +:100070000D92A03CB107D9F720E0A0ECB0E001C0A0 +:100080001D92A33CB207E1F710E0C6E5D0E004C042 +:100090002297FE010E946301C435D107C9F70E946F +:1000A000FB000C9467010C940000CF93C49ABC9A97 +:1000B000AA98A29AAB98A39AAC98A49AAD98A59A3C +:1000C000AE98A69AAF98A79AE1E6F0E083E2C39AC9 +:1000D000BB9A5D9BFECF8CB9C398BB9A819181116D +:1000E000F6CFAA98A29AAB98A39AAC98A49AAD9886 +:1000F000A59AAE98A69AAF98A79A20E030E041E082 +:1001000050E0CA01022E02C0880F991F0A94E2F73C +:10011000A82FA17080FF02C0AA9AA29AF82FF270AD +:1001200081FF02C0AB9AA39AE82FE47082FF02C05D +:10013000AC9AA49A782F787083FF02C0AD9AA59AE2 +:10014000682F607184FF02C0AE9AA69A982F9072B1 +:1001500085FF02C0AF9AA79A8FE7BAE1C6E0815047 +:10016000B040C040E1F700C00000AA2311F0AA98F7 +:10017000A29AFF2311F0AB98A39AEE2311F0AC984A +:10018000A49A772311F0AD98A59A662311F0AE9842 +:10019000A69A992311F0AF98A79A2F5F3F4F263068 +:1001A000310509F0AECFAA98A29AAB98A39AAC9861 +:1001B000A49AAD98A59AAE98A69AAF98A79A1FBC94 +:1001C0008EB58B608EBD1DBC1CBC17BC16BC81E6F9 +:1001D0008BBD88EA8ABD19BC18BC89B7806189BF0C +:1001E0007894C498BC9AC39ABB9AC398BB9AC29A93 +:1001F000BA9ACF9108950E945500FFCF1F920F9297 +:100200000FB60F9211248F939F9395B384E08927A3 +:1002100085BB9F918F910F900FBE0F901F901895E7 +:10022000CF93DF931F92CDB7DEB76983BC9ABB9A99 +:10023000BA9AC498BC9AC398BB9AC298BA9A81E8F1 +:1002400089B988E08AB986E880BDE3EBF0E085E50E +:10025000C39ABB9A5D9BFECF8CB9C398BB9A819120 +:100260008111F6CF0F90DF91CF910895BC9ABB9A80 +:10027000BA9AC498BC9AC398BB9AC298BA9A08957D +:10028000A29AA39AA49AA59AA69AA79AAA98A29A79 +:10029000AB98A39AAC98A49AAD98A59AAE98A69A52 +:1002A000AF98A79A089582EC90E00E94360181EC05 +:1002B00090E00E94400160E080EC90E00E9410011C +:1002C0000895EE0FFF1F0590F491E02D0994F89426 +:0202D000FFCF5E +:1002D2002323232320426567696E20426F6F747562 +:1002E2007020232323232323232323232323232392 +:1002F20023232323232323232323232323232323CC +:1003020023232323232323232323232323232323BB +:1003120023232323232323232323232323232323AB +:100322000A005561727420646F6E65210D0A000027 :00000001FF diff --git a/USBLaminator/USBLaminator/Debug/USBLaminator.lss b/USBLaminator/USBLaminator/Debug/USBLaminator.lss index 0356c1c..fe58c73 100644 --- a/USBLaminator/USBLaminator/Debug/USBLaminator.lss +++ b/USBLaminator/USBLaminator/Debug/USBLaminator.lss @@ -3,80 +3,1214 @@ USBLaminator.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .text 00000072 00000000 00000000 00000074 2**1 + 0 .text 000002d2 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .data 00000000 00800060 00000072 000000e6 2**0 + 1 .data 00000060 00800060 000002d2 00000366 2**0 CONTENTS, ALLOC, LOAD, DATA - 2 .stab 000006cc 00000000 00000000 000000e8 2**2 + 2 .bss 00000003 008000c0 008000c0 000003c6 2**0 + ALLOC + 3 .stab 000006cc 00000000 00000000 000003c8 2**2 CONTENTS, READONLY, DEBUGGING - 3 .stabstr 00000082 00000000 00000000 000007b4 2**0 + 4 .stabstr 00000082 00000000 00000000 00000a94 2**0 CONTENTS, READONLY, DEBUGGING - 4 .comment 0000002f 00000000 00000000 00000836 2**0 + 5 .comment 0000002f 00000000 00000000 00000b16 2**0 CONTENTS, READONLY - 5 .debug_aranges 00000020 00000000 00000000 00000865 2**0 + 6 .debug_aranges 00000050 00000000 00000000 00000b45 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_info 0000007b 00000000 00000000 00000885 2**0 + 7 .debug_info 000030ea 00000000 00000000 00000b95 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_abbrev 00000044 00000000 00000000 00000900 2**0 + 8 .debug_abbrev 000003fb 00000000 00000000 00003c7f 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_line 00000042 00000000 00000000 00000944 2**0 + 9 .debug_line 000003ef 00000000 00000000 0000407a 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_frame 00000024 00000000 00000000 00000988 2**2 + 10 .debug_frame 000000b0 00000000 00000000 0000446c 2**2 CONTENTS, READONLY, DEBUGGING - 10 .debug_str 0000009a 00000000 00000000 000009ac 2**0 + 11 .debug_str 00001103 00000000 00000000 0000451c 2**0 CONTENTS, READONLY, DEBUGGING - 11 .debug_ranges 00000010 00000000 00000000 00000a46 2**0 + 12 .debug_loc 00000301 00000000 00000000 0000561f 2**0 + CONTENTS, READONLY, DEBUGGING + 13 .debug_ranges 00000040 00000000 00000000 00005920 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: - 0: 0c 94 2a 00 jmp 0x54 ; 0x54 <__ctors_end> - 4: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 8: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - c: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 10: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 14: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 18: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 1c: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 20: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 24: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 28: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 2c: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 30: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 34: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 38: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 3c: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 40: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 44: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 48: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 4c: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> - 50: 0c 94 34 00 jmp 0x68 ; 0x68 <__bad_interrupt> + 0: 0c 94 2b 00 jmp 0x56 ; 0x56 <__ctors_end> + 4: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 8: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + c: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 10: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 14: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 18: 0c 94 fe 00 jmp 0x1fc ; 0x1fc <__vector_6> + 1c: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 20: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 24: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 28: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 2c: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 30: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 34: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 38: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 3c: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 40: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 44: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 48: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 4c: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 50: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> -00000054 <__ctors_end>: - 54: 11 24 eor r1, r1 - 56: 1f be out 0x3f, r1 ; 63 - 58: cf e5 ldi r28, 0x5F ; 95 - 5a: d4 e0 ldi r29, 0x04 ; 4 - 5c: de bf out 0x3e, r29 ; 62 - 5e: cd bf out 0x3d, r28 ; 61 - 60: 0e 94 36 00 call 0x6c ; 0x6c
- 64: 0c 94 37 00 jmp 0x6e ; 0x6e <_exit> +00000054 <__ctors_start>: + 54: 53 01 movw r10, r6 -00000068 <__bad_interrupt>: - 68: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> +00000056 <__ctors_end>: + 56: 11 24 eor r1, r1 + 58: 1f be out 0x3f, r1 ; 63 + 5a: cf e5 ldi r28, 0x5F ; 95 + 5c: d4 e0 ldi r29, 0x04 ; 4 + 5e: de bf out 0x3e, r29 ; 62 + 60: cd bf out 0x3d, r28 ; 61 -0000006c
: +00000062 <__do_copy_data>: + 62: 10 e0 ldi r17, 0x00 ; 0 + 64: a0 e6 ldi r26, 0x60 ; 96 + 66: b0 e0 ldi r27, 0x00 ; 0 + 68: e2 ed ldi r30, 0xD2 ; 210 + 6a: f2 e0 ldi r31, 0x02 ; 2 + 6c: 02 c0 rjmp .+4 ; 0x72 <__do_copy_data+0x10> + 6e: 05 90 lpm r0, Z+ + 70: 0d 92 st X+, r0 + 72: a0 3c cpi r26, 0xC0 ; 192 + 74: b1 07 cpc r27, r17 + 76: d9 f7 brne .-10 ; 0x6e <__do_copy_data+0xc> +00000078 <__do_clear_bss>: + 78: 20 e0 ldi r18, 0x00 ; 0 + 7a: a0 ec ldi r26, 0xC0 ; 192 + 7c: b0 e0 ldi r27, 0x00 ; 0 + 7e: 01 c0 rjmp .+2 ; 0x82 <.do_clear_bss_start> -#include +00000080 <.do_clear_bss_loop>: + 80: 1d 92 st X+, r1 + +00000082 <.do_clear_bss_start>: + 82: a3 3c cpi r26, 0xC3 ; 195 + 84: b2 07 cpc r27, r18 + 86: e1 f7 brne .-8 ; 0x80 <.do_clear_bss_loop> + +00000088 <__do_global_ctors>: + 88: 10 e0 ldi r17, 0x00 ; 0 + 8a: c6 e5 ldi r28, 0x56 ; 86 + 8c: d0 e0 ldi r29, 0x00 ; 0 + 8e: 04 c0 rjmp .+8 ; 0x98 <__do_global_ctors+0x10> + 90: 22 97 sbiw r28, 0x02 ; 2 + 92: fe 01 movw r30, r28 + 94: 0e 94 63 01 call 0x2c6 ; 0x2c6 <__tablejump__> + 98: c4 35 cpi r28, 0x54 ; 84 + 9a: d1 07 cpc r29, r17 + 9c: c9 f7 brne .-14 ; 0x90 <__do_global_ctors+0x8> + 9e: 0e 94 fb 00 call 0x1f6 ; 0x1f6
+ a2: 0c 94 67 01 jmp 0x2ce ; 0x2ce <_exit> + +000000a6 <__bad_interrupt>: + a6: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000aa <_Z5setupv>: +ledclass l; +ssrclass o; +usartclass r(l); + +void setup() +{ + aa: cf 93 push r28 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + ac: c4 9a sbi 0x18, 4 ; 24 + + 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; } + ae: bc 9a sbi 0x17, 4 ; 23 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + b0: aa 98 cbi 0x15, 2 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + b2: a2 9a sbi 0x14, 2 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + b4: ab 98 cbi 0x15, 3 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + b6: a3 9a sbi 0x14, 3 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + b8: ac 98 cbi 0x15, 4 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + ba: a4 9a sbi 0x14, 4 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + bc: ad 98 cbi 0x15, 5 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + be: a5 9a sbi 0x14, 5 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + c0: ae 98 cbi 0x15, 6 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + c2: a6 9a sbi 0x14, 6 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + c4: af 98 cbi 0x15, 7 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + c6: a7 9a sbi 0x14, 7 ; 20 + c8: e1 e6 ldi r30, 0x61 ; 97 + ca: f0 e0 ldi r31, 0x00 ; 0 + init(); + this->led = l; + send("Uart done!\r\n"); + } + void send(const char *text) { + while (*text) + cc: 83 e2 ldi r24, 0x23 ; 35 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + ce: c3 9a sbi 0x18, 3 ; 24 + + 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; } + d0: bb 9a sbi 0x17, 3 ; 23 + UCSRB = /*(1< + UDR = c; + d6: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + d8: c3 98 cbi 0x18, 3 ; 24 + + 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; } + da: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\r\n"); + } + void send(const char *text) { + while (*text) + dc: 81 91 ld r24, Z+ + de: 81 11 cpse r24, r1 + e0: f6 cf rjmp .-20 ; 0xce <_Z5setupv+0x24> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + e2: aa 98 cbi 0x15, 2 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + e4: a2 9a sbi 0x14, 2 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + e6: ab 98 cbi 0x15, 3 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + e8: a3 9a sbi 0x14, 3 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + ea: ac 98 cbi 0x15, 4 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + ec: a4 9a sbi 0x14, 4 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + ee: ad 98 cbi 0x15, 5 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + f0: a5 9a sbi 0x14, 5 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + f2: ae 98 cbi 0x15, 6 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + f4: a6 9a sbi 0x14, 6 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + f6: af 98 cbi 0x15, 7 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + f8: a7 9a sbi 0x14, 7 ; 20 + fa: 20 e0 ldi r18, 0x00 ; 0 + fc: 30 e0 ldi r19, 0x00 ; 0 + } + } + void test() { + off(); + for (uint8_t i=0;i<6;i++) { + on((1< + 108: 88 0f add r24, r24 + 10a: 99 1f adc r25, r25 + 10c: 0a 94 dec r0 + 10e: e2 f7 brpl .-8 ; 0x108 <_Z5setupv+0x5e> + if(ausg & OUT6) { + out6::make_low(); + } + } + void on(uint8_t ausg = 255) { + if(ausg & OUT1) { + 110: a8 2f mov r26, r24 + 112: a1 70 andi r26, 0x01 ; 1 + 114: 80 ff sbrs r24, 0 + 116: 02 c0 rjmp .+4 ; 0x11c <_Z5setupv+0x72> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 118: aa 9a sbi 0x15, 2 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 11a: a2 9a sbi 0x14, 2 ; 20 + out1::make_high(); + } + if(ausg & OUT2) { + 11c: f8 2f mov r31, r24 + 11e: f2 70 andi r31, 0x02 ; 2 + 120: 81 ff sbrs r24, 1 + 122: 02 c0 rjmp .+4 ; 0x128 <_Z5setupv+0x7e> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 124: ab 9a sbi 0x15, 3 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 126: a3 9a sbi 0x14, 3 ; 20 + out2::make_high(); + } + if(ausg & OUT3) { + 128: e8 2f mov r30, r24 + 12a: e4 70 andi r30, 0x04 ; 4 + 12c: 82 ff sbrs r24, 2 + 12e: 02 c0 rjmp .+4 ; 0x134 <_Z5setupv+0x8a> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 130: ac 9a sbi 0x15, 4 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 132: a4 9a sbi 0x14, 4 ; 20 + out3::make_high(); + } + if(ausg & OUT4) { + 134: 78 2f mov r23, r24 + 136: 78 70 andi r23, 0x08 ; 8 + 138: 83 ff sbrs r24, 3 + 13a: 02 c0 rjmp .+4 ; 0x140 <_Z5setupv+0x96> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 13c: ad 9a sbi 0x15, 5 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 13e: a5 9a sbi 0x14, 5 ; 20 + out4::make_high(); + } + if(ausg & OUT5) { + 140: 68 2f mov r22, r24 + 142: 60 71 andi r22, 0x10 ; 16 + 144: 84 ff sbrs r24, 4 + 146: 02 c0 rjmp .+4 ; 0x14c <_Z5setupv+0xa2> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 148: ae 9a sbi 0x15, 6 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 14a: a6 9a sbi 0x14, 6 ; 20 + out5::make_high(); + } + if(ausg & OUT6) { + 14c: 98 2f mov r25, r24 + 14e: 90 72 andi r25, 0x20 ; 32 + 150: 85 ff sbrs r24, 5 + 152: 02 c0 rjmp .+4 ; 0x158 <_Z5setupv+0xae> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 154: af 9a sbi 0x15, 7 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 156: a7 9a sbi 0x14, 7 ; 20 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 158: 8f e7 ldi r24, 0x7F ; 127 + 15a: ba e1 ldi r27, 0x1A ; 26 + 15c: c6 e0 ldi r28, 0x06 ; 6 + 15e: 81 50 subi r24, 0x01 ; 1 + 160: b0 40 sbci r27, 0x00 ; 0 + 162: c0 40 sbci r28, 0x00 ; 0 + 164: e1 f7 brne .-8 ; 0x15e <_Z5setupv+0xb4> + 166: 00 c0 rjmp .+0 ; 0x168 <_Z5setupv+0xbe> + 168: 00 00 nop + public: + SSR() { + init(); + } + void off(uint8_t ausg = 255) { + if(ausg & OUT1) { + 16a: aa 23 and r26, r26 + 16c: 11 f0 breq .+4 ; 0x172 <_Z5setupv+0xc8> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 16e: aa 98 cbi 0x15, 2 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 170: a2 9a sbi 0x14, 2 ; 20 + out1::make_low(); + } + if(ausg & OUT2) { + 172: ff 23 and r31, r31 + 174: 11 f0 breq .+4 ; 0x17a <_Z5setupv+0xd0> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 176: ab 98 cbi 0x15, 3 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 178: a3 9a sbi 0x14, 3 ; 20 + out2::make_low(); + } + if(ausg & OUT3) { + 17a: ee 23 and r30, r30 + 17c: 11 f0 breq .+4 ; 0x182 <_Z5setupv+0xd8> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 17e: ac 98 cbi 0x15, 4 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 180: a4 9a sbi 0x14, 4 ; 20 + out3::make_low(); + } + if(ausg & OUT4) { + 182: 77 23 and r23, r23 + 184: 11 f0 breq .+4 ; 0x18a <_Z5setupv+0xe0> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 186: ad 98 cbi 0x15, 5 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 188: a5 9a sbi 0x14, 5 ; 20 + out4::make_low(); + } + if(ausg & OUT5) { + 18a: 66 23 and r22, r22 + 18c: 11 f0 breq .+4 ; 0x192 <_Z5setupv+0xe8> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 18e: ae 98 cbi 0x15, 6 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 190: a6 9a sbi 0x14, 6 ; 20 + out5::make_low(); + } + if(ausg & OUT6) { + 192: 99 23 and r25, r25 + 194: 11 f0 breq .+4 ; 0x19a <_Z5setupv+0xf0> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 196: af 98 cbi 0x15, 7 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 198: a7 9a sbi 0x14, 7 ; 20 + 19a: 2f 5f subi r18, 0xFF ; 255 + 19c: 3f 4f sbci r19, 0xFF ; 255 + out6::toggle(); + } + } + void test() { + off(); + for (uint8_t i=0;i<6;i++) { + 19e: 26 30 cpi r18, 0x06 ; 6 + 1a0: 31 05 cpc r19, r1 + 1a2: 09 f0 breq .+2 ; 0x1a6 <_Z5setupv+0xfc> + 1a4: ae cf rjmp .-164 ; 0x102 <_Z5setupv+0x58> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 1a6: aa 98 cbi 0x15, 2 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 1a8: a2 9a sbi 0x14, 2 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 1aa: ab 98 cbi 0x15, 3 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 1ac: a3 9a sbi 0x14, 3 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 1ae: ac 98 cbi 0x15, 4 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 1b0: a4 9a sbi 0x14, 4 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 1b2: ad 98 cbi 0x15, 5 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 1b4: a5 9a sbi 0x14, 5 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 1b6: ae 98 cbi 0x15, 6 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 1b8: a6 9a sbi 0x14, 6 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 1ba: af 98 cbi 0x15, 7 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 1bc: a7 9a sbi 0x14, 7 ; 20 + // Timer Period: 0,1 s + // Timer1 Overflow Interrupt: Off + // Input Capture Interrupt: Off + // Compare A Match Interrupt: On + // Compare B Match Interrupt: Off + TCCR1A = 0; + 1be: 1f bc out 0x2f, r1 ; 47 + TCCR1B |= (1<: int main(void) { - 6c: ff cf rjmp .-2 ; 0x6c
+ setup(); + 1f6: 0e 94 55 00 call 0xaa ; 0xaa <_Z5setupv> + 1fa: ff cf rjmp .-2 ; 0x1fa -0000006e <_exit>: - 6e: f8 94 cli +000001fc <__vector_6>: + while(1) + { + } +} -00000070 <__stop_program>: - 70: ff cf rjmp .-2 ; 0x70 <__stop_program> +ISR(TIMER1_COMPA_vect) { + 1fc: 1f 92 push r1 + 1fe: 0f 92 push r0 + 200: 0f b6 in r0, 0x3f ; 63 + 202: 0f 92 push r0 + 204: 11 24 eor r1, r1 + 206: 8f 93 push r24 + 208: 9f 93 push r25 + +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + 20a: 95 b3 in r25, 0x15 ; 21 + Port::port(Port::port() & ~(1<: +#define USART_H_ + +template +class Usart { + public: + Usart(ledclass l) { + 220: cf 93 push r28 + 222: df 93 push r29 + 224: 1f 92 push r1 + 226: cd b7 in r28, 0x3d ; 61 + 228: de b7 in r29, 0x3e ; 62 + 22a: 69 83 std Y+1, r22 ; 0x01 + 22c: bc 9a sbi 0x17, 4 ; 23 + 22e: bb 9a sbi 0x17, 3 ; 23 + 230: ba 9a sbi 0x17, 2 ; 23 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 232: c4 98 cbi 0x18, 4 ; 24 + + 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; } + 234: bc 9a sbi 0x17, 4 ; 23 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 236: c3 98 cbi 0x18, 3 ; 24 + + 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; } + 238: bb 9a sbi 0x17, 3 ; 23 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 23a: c2 98 cbi 0x18, 2 ; 24 + + 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; } + 23c: ba 9a sbi 0x17, 2 ; 23 + void send(uint8_t wert) { + uart_putchar(wert); + } + private: + void init() { + UBRRL = (F_CPU / (baudrate * 16L) - 1); //Teiler wird gesetzt + 23e: 81 e8 ldi r24, 0x81 ; 129 + 240: 89 b9 out 0x09, r24 ; 9 + UCSRB = /*(1<led = l; + send("Uart done!\r\n"); + } + void send(const char *text) { + while (*text) + 24e: 85 e5 ldi r24, 0x55 ; 85 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 250: c3 9a sbi 0x18, 3 ; 24 + + 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; } + 252: bb 9a sbi 0x17, 3 ; 23 + UCSRB = /*(1< + UDR = c; + 258: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 25a: c3 98 cbi 0x18, 3 ; 24 + + 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; } + 25c: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\r\n"); + } + void send(const char *text) { + while (*text) + 25e: 81 91 ld r24, Z+ + 260: 81 11 cpse r24, r1 + 262: f6 cf rjmp .-20 ; 0x250 <_ZN5UsartILm9600EEC1E3LedIN6avrlib5portbELi4ELi3ELi2EE+0x30> + public: + Usart(ledclass l) { + init(); + this->led = l; + send("Uart done!\r\n"); + } + 264: 0f 90 pop r0 + 266: df 91 pop r29 + 268: cf 91 pop r28 + 26a: 08 95 ret + +0000026c <_ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv>: + 26c: bc 9a sbi 0x17, 4 ; 23 + 26e: bb 9a sbi 0x17, 3 ; 23 + 270: ba 9a sbi 0x17, 2 ; 23 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 272: c4 98 cbi 0x18, 4 ; 24 + + 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; } + 274: bc 9a sbi 0x17, 4 ; 23 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 276: c3 98 cbi 0x18, 3 ; 24 + + 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; } + 278: bb 9a sbi 0x17, 3 ; 23 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 27a: c2 98 cbi 0x18, 2 ; 24 + + 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; } + 27c: ba 9a sbi 0x17, 2 ; 23 + 27e: 08 95 ret + +00000280 <_ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EE4initEv>: + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 280: a2 9a sbi 0x14, 2 ; 20 + 282: a3 9a sbi 0x14, 3 ; 20 + 284: a4 9a sbi 0x14, 4 ; 20 + 286: a5 9a sbi 0x14, 5 ; 20 + 288: a6 9a sbi 0x14, 6 ; 20 + 28a: a7 9a sbi 0x14, 7 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 28c: aa 98 cbi 0x15, 2 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 28e: a2 9a sbi 0x14, 2 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 290: ab 98 cbi 0x15, 3 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 292: a3 9a sbi 0x14, 3 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 294: ac 98 cbi 0x15, 4 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 296: a4 9a sbi 0x14, 4 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 298: ad 98 cbi 0x15, 5 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 29a: a5 9a sbi 0x14, 5 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 29c: ae 98 cbi 0x15, 6 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 29e: a6 9a sbi 0x14, 6 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 2a0: af 98 cbi 0x15, 7 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 2a2: a7 9a sbi 0x14, 7 ; 20 + 2a4: 08 95 ret + +000002a6 <_GLOBAL__sub_I_l>: + +template +class Led { + public: + Led() { + init(); + 2a6: 82 ec ldi r24, 0xC2 ; 194 + 2a8: 90 e0 ldi r25, 0x00 ; 0 + 2aa: 0e 94 36 01 call 0x26c ; 0x26c <_ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv> + +template +class SSR { + public: + SSR() { + init(); + 2ae: 81 ec ldi r24, 0xC1 ; 193 + 2b0: 90 e0 ldi r25, 0x00 ; 0 + 2b2: 0e 94 40 01 call 0x280 ; 0x280 <_ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EE4initEv> + +#include "peripheral.h" + +ledclass l; +ssrclass o; +usartclass r(l); + 2b6: 60 e0 ldi r22, 0x00 ; 0 + 2b8: 80 ec ldi r24, 0xC0 ; 192 + 2ba: 90 e0 ldi r25, 0x00 ; 0 + 2bc: 0e 94 10 01 call 0x220 ; 0x220 <_ZN5UsartILm9600EEC1E3LedIN6avrlib5portbELi4ELi3ELi2EE> + 2c0: 08 95 ret + +000002c2 <__tablejump2__>: + 2c2: ee 0f add r30, r30 + 2c4: ff 1f adc r31, r31 + +000002c6 <__tablejump__>: + 2c6: 05 90 lpm r0, Z+ + 2c8: f4 91 lpm r31, Z + 2ca: e0 2d mov r30, r0 + 2cc: 09 94 ijmp + +000002ce <_exit>: + 2ce: f8 94 cli + +000002d0 <__stop_program>: + 2d0: ff cf rjmp .-2 ; 0x2d0 <__stop_program> diff --git a/USBLaminator/USBLaminator/Debug/USBLaminator.map b/USBLaminator/USBLaminator/Debug/USBLaminator.map index b7f3147..1fda899 100644 --- a/USBLaminator/USBLaminator/Debug/USBLaminator.map +++ b/USBLaminator/USBLaminator/Debug/USBLaminator.map @@ -2,12 +2,22 @@ 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/crtm16a.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) + USBLaminator.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) + USBLaminator.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) + USBLaminator.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(_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/crtm16a.o + .group 0x00000000 0x8 USBLaminator.o + .group 0x00000000 0x8 USBLaminator.o + .group 0x00000000 0x8 USBLaminator.o .text 0x00000000 0x0 USBLaminator.o - .bss 0x00000000 0x0 USBLaminator.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 +31,57 @@ 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(_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 @@ -137,7 +198,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .rela.plt *(.rela.plt) -.text 0x00000000 0x72 +.text 0x00000000 0x2d2 *(.vectors) .vectors 0x00000000 0x54 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/crtm16a.o 0x00000000 __vector_default @@ -157,68 +218,95 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.lowtext*) 0x00000054 __ctors_start = . *(.ctors) - 0x00000054 __ctors_end = . - 0x00000054 __dtors_start = . + .ctors 0x00000054 0x2 USBLaminator.o + 0x00000056 __ctors_end = . + 0x00000056 __dtors_start = . *(.dtors) - 0x00000054 __dtors_end = . + 0x00000056 __dtors_end = . SORT(*)(.ctors) SORT(*)(.dtors) *(.init0) - .init0 0x00000054 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/crtm16a.o - 0x00000054 __init + .init0 0x00000056 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/crtm16a.o + 0x00000056 __init *(.init0) *(.init1) *(.init1) *(.init2) - .init2 0x00000054 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/crtm16a.o + .init2 0x00000056 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/crtm16a.o *(.init2) *(.init3) *(.init3) *(.init4) + .init4 0x00000062 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) + 0x00000062 __do_copy_data + .init4 0x00000078 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) + 0x00000078 __do_clear_bss *(.init4) *(.init5) *(.init5) *(.init6) + .init6 0x00000088 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) + 0x00000088 __do_global_ctors *(.init6) *(.init7) *(.init7) *(.init8) *(.init8) *(.init9) - .init9 0x00000060 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/crtm16a.o + .init9 0x0000009e 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/crtm16a.o *(.init9) *(.text) - .text 0x00000068 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/crtm16a.o - 0x00000068 __vector_1 - 0x00000068 __vector_12 - 0x00000068 __bad_interrupt - 0x00000068 __vector_6 - 0x00000068 __vector_3 - 0x00000068 __vector_11 - 0x00000068 __vector_13 - 0x00000068 __vector_17 - 0x00000068 __vector_19 - 0x00000068 __vector_7 - 0x00000068 __vector_5 - 0x00000068 __vector_4 - 0x00000068 __vector_9 - 0x00000068 __vector_2 - 0x00000068 __vector_15 - 0x00000068 __vector_8 - 0x00000068 __vector_14 - 0x00000068 __vector_10 - 0x00000068 __vector_16 - 0x00000068 __vector_18 - 0x00000068 __vector_20 - 0x0000006c . = ALIGN (0x2) + .text 0x000000a6 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/crtm16a.o + 0x000000a6 __vector_1 + 0x000000a6 __vector_12 + 0x000000a6 __bad_interrupt + 0x000000a6 __vector_3 + 0x000000a6 __vector_11 + 0x000000a6 __vector_13 + 0x000000a6 __vector_17 + 0x000000a6 __vector_19 + 0x000000a6 __vector_7 + 0x000000a6 __vector_5 + 0x000000a6 __vector_4 + 0x000000a6 __vector_9 + 0x000000a6 __vector_2 + 0x000000a6 __vector_15 + 0x000000a6 __vector_8 + 0x000000a6 __vector_14 + 0x000000a6 __vector_10 + 0x000000a6 __vector_16 + 0x000000a6 __vector_18 + 0x000000a6 __vector_20 + 0x000000aa . = ALIGN (0x2) *(.text.*) - .text.main 0x0000006c 0x2 USBLaminator.o - 0x0000006c main - 0x0000006e . = ALIGN (0x2) + .text._Z5setupv + 0x000000aa 0x14c USBLaminator.o + 0x000000aa _Z5setupv + .text.main 0x000001f6 0x6 USBLaminator.o + 0x000001f6 main + .text.__vector_6 + 0x000001fc 0x24 USBLaminator.o + 0x000001fc __vector_6 + .text._ZN5UsartILm9600EEC2E3LedIN6avrlib5portbELi4ELi3ELi2EE + 0x00000220 0x4c USBLaminator.o + 0x00000220 _ZN5UsartILm9600EEC2E3LedIN6avrlib5portbELi4ELi3ELi2EE + 0x00000220 _ZN5UsartILm9600EEC1E3LedIN6avrlib5portbELi4ELi3ELi2EE + .text._ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv + 0x0000026c 0x14 USBLaminator.o + 0x0000026c _ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv + .text._ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EE4initEv + 0x00000280 0x26 USBLaminator.o + 0x00000280 _ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EE4initEv + .text._GLOBAL__sub_I_l + 0x000002a6 0x1c USBLaminator.o + .text.libgcc 0x000002c2 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) + 0x000002c2 __tablejump2__ + 0x000002c6 __tablejump__ + 0x000002ce . = ALIGN (0x2) *(.fini9) - .fini9 0x0000006e 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) - 0x0000006e _exit - 0x0000006e exit + .fini9 0x000002ce 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) + 0x000002ce _exit + 0x000002ce exit *(.fini9) *(.fini8) *(.fini8) @@ -237,39 +325,50 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .fini0 0x0000006e 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 0x000002ce 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) - 0x00000072 _etext = . + 0x000002d2 _etext = . -.data 0x00800060 0x0 load address 0x00000072 +.data 0x00800060 0x60 load address 0x000002d2 0x00800060 PROVIDE (__data_start, .) *(.data) .data 0x00800060 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/crtm16a.o .data 0x00800060 0x0 USBLaminator.o .data 0x00800060 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 0x00800060 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 0x00800060 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 0x00800060 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 0x00800060 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 + 0x00800060 0x5f USBLaminator.o *(.gnu.linkonce.d*) - 0x00800060 . = ALIGN (0x2) - 0x00800060 _edata = . - 0x00800060 PROVIDE (__data_end, .) + 0x008000c0 . = ALIGN (0x2) + *fill* 0x008000bf 0x1 + 0x008000c0 _edata = . + 0x008000c0 PROVIDE (__data_end, .) -.bss 0x00800060 0x0 - 0x00800060 PROVIDE (__bss_start, .) +.bss 0x008000c0 0x3 + 0x008000c0 PROVIDE (__bss_start, .) *(.bss) + .bss 0x008000c0 0x3 USBLaminator.o + 0x008000c0 r + 0x008000c1 o + 0x008000c2 l *(.bss*) *(COMMON) - 0x00800060 PROVIDE (__bss_end, .) - 0x00000072 __data_load_start = LOADADDR (.data) - 0x00000072 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x008000c3 PROVIDE (__bss_end, .) + 0x000002d2 __data_load_start = LOADADDR (.data) + 0x00000332 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00800060 0x0 - 0x00800060 PROVIDE (__noinit_start, .) +.noinit 0x008000c3 0x0 + 0x008000c3 PROVIDE (__noinit_start, .) *(.noinit*) - 0x00800060 PROVIDE (__noinit_end, .) - 0x00800060 _end = . - 0x00800060 PROVIDE (__heap_start, .) + 0x008000c3 PROVIDE (__noinit_end, .) + 0x008000c3 _end = . + 0x008000c3 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -327,38 +426,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 USBLaminator.o + 0x00000000 0x50 USBLaminator.o .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x7b +.debug_info 0x00000000 0x30ea *(.debug_info) - .debug_info 0x00000000 0x7b USBLaminator.o + .debug_info 0x00000000 0x30ea USBLaminator.o *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x44 +.debug_abbrev 0x00000000 0x3fb *(.debug_abbrev) - .debug_abbrev 0x00000000 0x44 USBLaminator.o + .debug_abbrev 0x00000000 0x3fb USBLaminator.o -.debug_line 0x00000000 0x42 +.debug_line 0x00000000 0x3ef *(.debug_line) - .debug_line 0x00000000 0x42 USBLaminator.o + .debug_line 0x00000000 0x3ef USBLaminator.o -.debug_frame 0x00000000 0x24 +.debug_frame 0x00000000 0xb0 *(.debug_frame) - .debug_frame 0x00000000 0x24 USBLaminator.o + .debug_frame 0x00000000 0xb0 USBLaminator.o -.debug_str 0x00000000 0x9a +.debug_str 0x00000000 0x1103 *(.debug_str) - .debug_str 0x00000000 0x9a USBLaminator.o - 0xce (size before relaxing) + .debug_str 0x00000000 0x1103 USBLaminator.o + 0x114e (size before relaxing) -.debug_loc +.debug_loc 0x00000000 0x301 *(.debug_loc) + .debug_loc 0x00000000 0x301 USBLaminator.o .debug_macinfo *(.debug_macinfo) @@ -366,9 +466,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 0x40 *(.debug_ranges) - .debug_ranges 0x00000000 0x10 USBLaminator.o + .debug_ranges 0x00000000 0x40 USBLaminator.o .debug_macro *(.debug_macro) diff --git a/USBLaminator/USBLaminator/Debug/USBLaminator.srec b/USBLaminator/USBLaminator/Debug/USBLaminator.srec index 1ccfdbe..2f2b3e2 100644 --- a/USBLaminator/USBLaminator/Debug/USBLaminator.srec +++ b/USBLaminator/USBLaminator/Debug/USBLaminator.srec @@ -1,10 +1,54 @@ S01400005553424C616D696E61746F722E737265637F -S11300000C942A000C9434000C9434000C943400A6 -S11300100C9434000C9434000C9434000C9434008C -S11300200C9434000C9434000C9434000C9434007C -S11300300C9434000C9434000C9434000C9434006C -S11300400C9434000C9434000C9434000C9434005C -S11300500C94340011241FBECFE5D4E0DEBFCDBF25 -S11300600E9436000C9437000C940000FFCFF894E3 -S1050070FFCFBC +S11300000C942B000C9453000C9453000C94530048 +S11300100C9453000C9453000C94FE000C94530065 +S11300200C9453000C9453000C9453000C94530000 +S11300300C9453000C9453000C9453000C945300F0 +S11300400C9453000C9453000C9453000C945300E0 +S11300500C945300530111241FBECFE5D4E0DEBF3E +S1130060CDBF10E0A0E6B0E0E2EDF2E002C0059002 +S11300700D92A03CB107D9F720E0A0ECB0E001C09C +S11300801D92A33CB207E1F710E0C6E5D0E004C03E +S11300902297FE010E946301C435D107C9F70E946B +S11300A0FB000C9467010C940000CF93C49ABC9A93 +S11300B0AA98A29AAB98A39AAC98A49AAD98A59A38 +S11300C0AE98A69AAF98A79AE1E6F0E083E2C39AC5 +S11300D0BB9A5D9BFECF8CB9C398BB9A8191811169 +S11300E0F6CFAA98A29AAB98A39AAC98A49AAD9882 +S11300F0A59AAE98A69AAF98A79A20E030E041E07E +S113010050E0CA01022E02C0880F991F0A94E2F738 +S1130110A82FA17080FF02C0AA9AA29AF82FF270A9 +S113012081FF02C0AB9AA39AE82FE47082FF02C059 +S1130130AC9AA49A782F787083FF02C0AD9AA59ADE +S1130140682F607184FF02C0AE9AA69A982F9072AD +S113015085FF02C0AF9AA79A8FE7BAE1C6E0815043 +S1130160B040C040E1F700C00000AA2311F0AA98F3 +S1130170A29AFF2311F0AB98A39AEE2311F0AC9846 +S1130180A49A772311F0AD98A59A662311F0AE983E +S1130190A69A992311F0AF98A79A2F5F3F4F263064 +S11301A0310509F0AECFAA98A29AAB98A39AAC985D +S11301B0A49AAD98A59AAE98A69AAF98A79A1FBC90 +S11301C08EB58B608EBD1DBC1CBC17BC16BC81E6F5 +S11301D08BBD88EA8ABD19BC18BC89B7806189BF08 +S11301E07894C498BC9AC39ABB9AC398BB9AC29A8F +S11301F0BA9ACF9108950E945500FFCF1F920F9293 +S11302000FB60F9211248F939F9395B384E089279F +S113021085BB9F918F910F900FBE0F901F901895E3 +S1130220CF93DF931F92CDB7DEB76983BC9ABB9A95 +S1130230BA9AC498BC9AC398BB9AC298BA9A81E8ED +S113024089B988E08AB986E880BDE3EBF0E085E50A +S1130250C39ABB9A5D9BFECF8CB9C398BB9A81911C +S11302608111F6CF0F90DF91CF910895BC9ABB9A7C +S1130270BA9AC498BC9AC398BB9AC298BA9A089579 +S1130280A29AA39AA49AA59AA69AA79AAA98A29A75 +S1130290AB98A39AAC98A49AAD98A59AAE98A69A4E +S11302A0AF98A79A089582EC90E00E94360181EC01 +S11302B090E00E94400160E080EC90E00E94100118 +S11302C00895EE0FFF1F0590F491E02D0994F89422 +S10502D0FFCF5A +S11302D22323232320426567696E20426F6F74755E +S11302E2702023232323232323232323232323238E +S11302F223232323232323232323232323232323C8 +S113030223232323232323232323232323232323B7 +S113031223232323232323232323232323232323A7 +S11303220A005561727420646F6E65210D0A000023 S9030000FC diff --git a/USBLaminator/USBLaminator/Debug/io/hardware/.gitignore b/USBLaminator/USBLaminator/Debug/io/hardware/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/USBLaminator/USBLaminator/USBLaminator.cpp b/USBLaminator/USBLaminator/USBLaminator.cpp index bf03b91..9c17098 100644 --- a/USBLaminator/USBLaminator/USBLaminator.cpp +++ b/USBLaminator/USBLaminator/USBLaminator.cpp @@ -5,13 +5,35 @@ * Author: netz */ +#include "peripheral.h" -#include +ledclass l; +ssrclass o; +usartclass r(l); + +void setup() +{ + l.on(l.RED); + o.off(); + r.send("#### Begin Bootup ##############################################################\n"); + o.test(); + o.setup_timer(); + l.off(l.RED); + l.on(l.YELLOW); + //adc on + //button on + l.off(l.YELLOW); + l.on(l.GREEN); +} int main(void) { + setup(); while(1) { - //TODO:: Please write your application code } +} + +ISR(TIMER1_COMPA_vect) { + o.timer(); } \ No newline at end of file diff --git a/USBLaminator/USBLaminator/USBLaminator.cppproj b/USBLaminator/USBLaminator/USBLaminator.cppproj index e76af56..ecba674 100644 --- a/USBLaminator/USBLaminator/USBLaminator.cppproj +++ b/USBLaminator/USBLaminator/USBLaminator.cppproj @@ -27,14 +27,14 @@ 0 - - - - - - - - + + + + + + + + com.atmel.avrdbg.tool.ispmk2 ISP @@ -44,7 +44,7 @@ 0000000000000 127.0.0.1 - 2444 + 10439 False @@ -62,90 +62,132 @@ + + com.atmel.avrdbg.tool.simulator + Simulator + + + + 127.0.0.1 + 10439 + False + + - True - True - True - True - True - True - - - NDEBUG - - - Optimize for size (-Os) - True - True - True - True - True - - - NDEBUG - - - Optimize for size (-Os) - True - True - True - - - libm - - - <segmentname>=<address>, for example .boot=0xff - + True + True + True + True + True + True + + + NDEBUG + + + Optimize for size (-Os) + True + True + True + True + True + + + NDEBUG + + + Optimize for size (-Os) + True + True + True + + + libm + + + <segmentname>=<address>, for example .boot=0xff + - True - True - True - True - True - True - - - DEBUG - - - Optimize (-O1) - True - True - Default (-g2) - True - True - True - - - DEBUG - - - Optimize (-O1) - True - True - Default (-g2) - True - - - libm - - - <segmentname>=<address>, for example .boot=0xff - Default (-Wa,-g) - + True + True + True + True + True + True + + + DEBUG + + + Optimize (-O1) + True + True + Default (-g2) + True + True + True + + + DEBUG + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + <segmentname>=<address>, for example .boot=0xff + Default (-Wa,-g) + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + compile + + + + \ No newline at end of file diff --git a/USBLaminator/USBLaminator/io/Led.hpp b/USBLaminator/USBLaminator/io/Led.hpp new file mode 100644 index 0000000..96a0f16 --- /dev/null +++ b/USBLaminator/USBLaminator/io/Led.hpp @@ -0,0 +1,68 @@ +/* + * 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 off(uint8_t led = 0b00000111) { + if(led & this->RED) { + red::make_low(); + } + if(led & this->YELLOW) { + yellow::make_low(); + } + if(led & this->GREEN) { + green::make_low(); + } + } + void on(uint8_t led = 0b00000111) { + if(led & this->RED) { + red::make_high(); + } + if(led & this->YELLOW) { + yellow::make_high(); + } + if(led & this->GREEN) { + green::make_high(); + } + } + void toggle(uint8_t led = 0b00000111) { + if(led & this->RED) { + red::toggle(); + } + if(led & this->YELLOW) { + yellow::toggle(); + } + if(led & this->GREEN) { + green::toggle(); + } + } + static const uint8_t RED = (1<<0); + static const uint8_t YELLOW = (1<<1); + static const uint8_t GREEN = (1<<2); + private: + void init() { + red::make_output(); + yellow::make_output(); + green::make_output(); + off(); + } + void uninit(); + const typedef avrlib::pin red; + const typedef avrlib::pin yellow; + const typedef avrlib::pin green; +}; + +#endif /* LED_H_ */ \ No newline at end of file diff --git a/USBLaminator/USBLaminator/io/SSR.hpp b/USBLaminator/USBLaminator/io/SSR.hpp new file mode 100644 index 0000000..176aed5 --- /dev/null +++ b/USBLaminator/USBLaminator/io/SSR.hpp @@ -0,0 +1,148 @@ +/* + * SSR.hpp + * + * Created: 16.07.2016 00:56:08 + * Author: netz + */ + + +#ifndef SSR_H_ +#define SSR_H_ + +#include +#include +#include "hardware/pin.hpp" + +template +class SSR { + public: + SSR() { + init(); + } + void off(uint8_t ausg = 255) { + if(ausg & OUT1) { + out1::make_low(); + } + if(ausg & OUT2) { + out2::make_low(); + } + if(ausg & OUT3) { + out3::make_low(); + } + if(ausg & OUT4) { + out4::make_low(); + } + if(ausg & OUT5) { + out5::make_low(); + } + if(ausg & OUT6) { + out6::make_low(); + } + } + void on(uint8_t ausg = 255) { + if(ausg & OUT1) { + out1::make_high(); + } + if(ausg & OUT2) { + out2::make_high(); + } + if(ausg & OUT3) { + out3::make_high(); + } + if(ausg & OUT4) { + out4::make_high(); + } + if(ausg & OUT5) { + out5::make_high(); + } + if(ausg & OUT6) { + out6::make_high(); + } + } + void toggle(uint8_t ausg = 255) { + if(ausg & OUT1) { + out1::toggle(); + } + if(ausg & OUT2) { + out2::toggle(); + } + if(ausg & OUT3) { + out3::toggle(); + } + if(ausg & OUT4) { + out4::toggle(); + } + if(ausg & OUT5) { + out5::toggle(); + } + if(ausg & OUT6) { + out6::toggle(); + } + } + void test() { + off(); + for (uint8_t i=0;i<6;i++) { + on((1< out1; + const typedef avrlib::pin out2; + const typedef avrlib::pin out3; + const typedef avrlib::pin out4; + const typedef avrlib::pin out5; + const typedef avrlib::pin out6; +}; + +#endif /* SSR_H_ */ \ No newline at end of file diff --git a/USBLaminator/USBLaminator/io/Usart.hpp b/USBLaminator/USBLaminator/io/Usart.hpp new file mode 100644 index 0000000..64e7294 --- /dev/null +++ b/USBLaminator/USBLaminator/io/Usart.hpp @@ -0,0 +1,46 @@ +/* + * Usart.hpp + * + * Created: 16.07.2016 12:58:49 + * Author: netz + */ + + +#ifndef USART_H_ +#define USART_H_ + +template +class Usart { + public: + Usart(ledclass l) { + init(); + this->led = l; + send("Uart done!\r\n"); + } + void send(const char *text) { + while (*text) + { + uart_putchar(*text); + text++; + } + } + void send(uint8_t wert) { + uart_putchar(wert); + } + private: + void init() { + UBRRL = (F_CPU / (baudrate * 16L) - 1); //Teiler wird gesetzt + UCSRB = /*(1< + +namespace avrlib { + + template + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + +namespace avrlib { + + struct porta + { + static uint8_t port() { return PORTA; } + static void port(uint8_t v) { PORTA = v; } + + static uint8_t pin() { return PINA; } + static void pin(uint8_t v) { PINA = v; } + + static uint8_t dir() { return DDRA; } + static void dir(uint8_t v) { DDRA = v; } + }; + +} + +#endif diff --git a/USBLaminator/USBLaminator/io/hardware/portb.hpp b/USBLaminator/USBLaminator/io/hardware/portb.hpp new file mode 100644 index 0000000..b96060c --- /dev/null +++ b/USBLaminator/USBLaminator/io/hardware/portb.hpp @@ -0,0 +1,22 @@ +#ifndef AVRLIB_PORTB_HPP +#define AVRLIB_PORTB_HPP + +#include + +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/USBLaminator/USBLaminator/io/hardware/portc.hpp b/USBLaminator/USBLaminator/io/hardware/portc.hpp new file mode 100644 index 0000000..017e95b --- /dev/null +++ b/USBLaminator/USBLaminator/io/hardware/portc.hpp @@ -0,0 +1,22 @@ +#ifndef AVRLIB_PORTC_HPP +#define AVRLIB_PORTC_HPP + +#include + +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + }; + +} + +#endif diff --git a/USBLaminator/USBLaminator/io/hardware/portd.hpp b/USBLaminator/USBLaminator/io/hardware/portd.hpp new file mode 100644 index 0000000..e045ee5 --- /dev/null +++ b/USBLaminator/USBLaminator/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/USBLaminator/USBLaminator/peripheral.h b/USBLaminator/USBLaminator/peripheral.h new file mode 100644 index 0000000..d03f685 --- /dev/null +++ b/USBLaminator/USBLaminator/peripheral.h @@ -0,0 +1,45 @@ +/* + * peripheral.h + * + * Created: 16.07.2016 00:16:53 + * Author: netz + */ + + +#ifndef PERIPHERAL_H_ +#define PERIPHERAL_H_ + +#define F_CPU 20000000 + +#include + +#include "io/hardware/portb.hpp" +#include "io/hardware/portc.hpp" + +#include "io/Led.hpp" +typedef Led< + avrlib::portb, //LED an PORTD + PINB4, //Rot + PINB3, //Gelb + PINB2 //Grün +> ledclass; + +#include "io/SSR.hpp" +typedef SSR< + avrlib::portc, + PINC2, + PINC3, + PINC4, + PINC5, + PINC6, + PINC7 +> ssrclass; + +#include "io/Usart.hpp" +typedef Usart< + 9600 +> usartclass; + + + +#endif /* PERIPHERAL_H_ */ \ No newline at end of file