From debb3e7ed057e38b151a044faa1a7c11a5df91b3 Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Sat, 7 Feb 2015 23:22:32 +0000 Subject: [PATCH] Automatic Cronjob Checkin: 20150208-002231 --- Door.T3000OPEN | 1 - Door.atsuo | Bin 13824 -> 16896 bytes Door/Debug/Door.d | 24 +- Door/Debug/Door.elf | Bin 26930 -> 30612 bytes Door/Debug/Door.hex | 205 ++-- Door/Debug/Door.lss | 2424 ++++++++++++++++++++++++++++---------- Door/Debug/Door.map | 143 +-- Door/Debug/Door.srec | 205 ++-- Door/Door.cpp | 218 +--- Door/Door.cppproj | 2 +- Door/io/IR.hpp | 108 ++ Door/io/Interrupt.hpp | 42 - Door/io/Stripe.hpp | 77 +- Door/io/hardware/pin.hpp | 3 + Door/peripheral.h | 4 +- 15 files changed, 2413 insertions(+), 1043 deletions(-) delete mode 100644 Door.T3000OPEN create mode 100644 Door/io/IR.hpp delete mode 100644 Door/io/Interrupt.hpp diff --git a/Door.T3000OPEN b/Door.T3000OPEN deleted file mode 100644 index 2644ba9..0000000 --- a/Door.T3000OPEN +++ /dev/null @@ -1 +0,0 @@ -[PHIL], netz diff --git a/Door.atsuo b/Door.atsuo index 36184880452d69c031307285439c4d6eb46f8225..5fa081bde12f3c2b3b5fd04c835088d50e5dfc1e 100644 GIT binary patch delta 2382 zcmbVNeN0nV6u%c<;aQ+kKt5`rg+eLPmKK;4htgWW&q0HtZmYqr6ez1u%L74Cn7YaQ zBt83MWDv}9p3!FA#yT=#)t2cIZ_}r~7Z@bgBsotVqWw$$P$3pymDxo@5 z0hKv=5Tp(+eU_P$*1veRPak5rdplPQo;BorB?Z#Gc>GOg~f@C*pxDUNa>-bot;v)KDA__sD@G$?j|-;Oln9qDI=x$ zHxmO{DbgiKnenS4CZufQm<=ftel~=il;gif{OqIz{cgng?gU%BEtqy9@t*MXl>Org z`2_{}@XLiW9=jdCoM8BN8gO=UTFwwjetcsEs@geEeMIde)i!80dk%??kgBhk)w@M;ul<_5Bh zZ4Qe&~vQnu9T>JC^8E$v+fVJ;6*OlI5v*0TclmrP!gL|fCE1vfX>dhT$?6wd zyL*|_AE}z=c~#>Qt492*pE<2X-QspT+yAF&qM02Lv&1ve6+vwu$mLt0Nq2(dNY!&H zWC`tqTZO5qENZhY2?>^CRr70X1(VFRbx7efpatg^&0orjn8mw_)hHa+r{);v))1@^ zLS!P}5iq*_e)LRRUlm+WQA1m*4ek}HAf!J86NPCos#ifpQB}}ng#oh+WTkvsC*FSn z(umdKL8=q$hJ}#_s;q>&1|9|t3i=af@G4kcWC<_S;&m;7lZNU`MOI3i!IrrajD{q= zpLC!q0aY<2e*AtkEkD_C_0-a{$+y>+-Z+!M?s-;8Gm}7z`or4B+1(K1W=2qWqSDfG z7){skxhP;RW62?DN1_*|RRz?9rJD(%IF9GpirEQ%B)ZrHcte>5Az7&;fRav_E;$IF zo2_6q*D`DK{>$3RKSsXUGuT`6*TV;smm73KGFC!0-H2vY6!_6A0pdkdT1Co5e4=rk z#_Ey1!)vtlkM>)>lfL(T6s}Q#)igkBnL9Gqkoq|%3}(bDCJtVc9=UtdTXyqojTGmq z!KPKg2ikO6!ty)epF6fAAi#*WzF&C3m*E9+yt6sb*yL&MoS*41sa;F+@oYJ?9=7H$ zhJ8h!MRF!FI)O;x7MGpjBwfTMhI}^Qgi!Rm16*k;Xw2kadJDOIi2aBIh_?~%APyo1 z5$_@nAz0-fL9lo87>vd?UfkxR@TVz-VtjnqJF`vXRT?Wejefc* zvVWH9dGRA;0j|QwOgv{UOJBvm)0YtTw%sMq7>`#RTv<>FA=4}JpLGW3z0J3|Z9Ql1 r#802N!(nI}z{Dj4i`CI)QaqQe`KTubA!hSYBzC}P>bkLO#TE2#3=*b~ delta 1268 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 AdjJ3c literal 26930 zcmeHv33yf2x%OITCnqBr0Ff!-Fa#2loa7_{LR26m5dsuYKpfCRh9fzU$xJ9J2DL3( z2QZ+BT5Rj}YOSr>LF;WT9rW5?TWp{D*WPPuu-2*E3e{HIYvq66wfEX*?UMu$pZh=e zKF{5-_x{#5uWx=Zf9e{eI`*tUrVX2M-?^eBkh-gVzjh8q7YhaC_ac ze;iytaN(|Vv;TI`Ze2ZKpIZmyofD3{E!Vw%_+Y`l1BYK6^dHU|%nTlR3?5YHzYo5OGyTrrm$7@Bcry4kxpvl$?VpAA{@=eWZywlyC_OLl*z@^4dcQ|b z%PgO=Bl9kIzb7dUOMWOfT)$7w*)wYo_lMv7)}f5uZzvu8m+alX2fC?w zpM2!-_YRZtk^JkPH}~j$KSs^wKEB1bCjBjK(6RWkJZ$LGay$?3?UG3srY&^6U3mQm za_4Kd?=Q=H26pY*mHpvC-IoK`Y04|N|KQz!8J%+A-8bKVD|qP8sv`>n3lFKh$=`d) z!Gi;@4qUN&`&<13KM`5C9}qhR`v-m~K8NFv#Mj<z$ng zkBa_*$6)ty?Csb)#dy%Z1?Zb1uy5+V{JjNx&)<9L-gSG!d$XR-y8S9~J+xmdlJ|Uh z|D*Do`wz&k?3XV-zQ1$S_MGe)yK<8E{3-L;l*FCy?;0#l+5O?}V+T`5rH(o;(iDmI zMVhMusiRh&b50;-WXxCN1CUON)>Axx_Sc59qo~+ zs5`7jLhKaRIdC)1Phro--jAKzBfNwG2TMhU&1Kw%CyA1et10FEo-3GkJfbTHiI}LcR0pDf7`waMQ1HQ+A z?=|2r8t{GtzR!TaWWZlG;IA0){RaF`2K;~l|FZ!`{M+uDQOqOT*`T-6ggJ0!y4zDQF~ zM^|^%IU%q$_C{NqOEyK?H%HsMOSW`$ZSL-DXo{3H^mSDhZ*1=^?&;`gZE9(VwwH8w zH4$Ch8f|PUY3k|;m2BiOxEeYe8=AwoKu5Z|dOLfld2vlmRUp6m{PV(<;l^lBc=3w0 z;Wb)SxI9=9EDKl8ol_8~2+j?bsf&tFbwYChBp5k3*vvB~uCKwZWduXh!fD zuFO@4!Xl6phd~MdOAJOz%Gt23)y_kBWeN~pwS`bPj9P1`T1)uvBy&p2ZbR+Q=%`bkq%|$Mi7XNa6pw9n3_S z)4g7Xi6tK~)Y`rNGqY5iuEXfdUl=?;MSiBt{5S>Zp@Zfh1|_ntr=64(ZFUl6XTT3{ zj~m!YZT4;s=n{j+Hv1<=WvGp$VNfUy^>8(HEMI(N|B=f58AqXZ^e>>qpK~`=$hW($tiX9l-h=S;w#Eh^ztI1~02PT~?rD{+W&Fg(dqy zy~gDLk!j^G{&!YXIRL^wllUVj^#@tSE%_)2PsE5BbKyDX{rFsTs2(hd8M~oNq0mw& zE8|w6n0e!~(;bwsCcs$g=^sH?_C#Q1TE=%_XM$WFX%=Z&asnCw?591TVlh#65kF=h zGlbQ#+NIg$Z=8fDB5fiEPM!~9V;sXo*>TxrB5i6aA|SVbxXop7qLViBHKe{JcY|~e`c?g8JsO)R1ACu&F5Ur%K zU&ffK>MOyVjNPHz9;7J?y{ydTE zV{~$Tw}EHMZVJofD}k9pW4S(7hg=`?HP^?{_DNq08i5;VebBOCXX-@Y0Rx;i{fCH* z^%`ZT??4x=-xEFkLT1>Tjlj;3^O5$}TQY_AvH21bb|7Q{gkM;qlv2=`&1`3jU1kh7W)7Zt%N9PK=gyLBTd`#o$^AA=*laca2p z7<=mx(4X}1h&+y(^(>IDcnDLsL8-4oS;@Z(K3fG}&&$a6UmS8J*r?R=hXoAz_7fJXEkYCpXTVEcF zne{y&f2j#-X4zAw#GW!NnbsiafA#XHnUSN4@T8uzm;kMF1!lUN^ic>YrtAO08|lYwZju+LD8FULNV(?ajU|4#Y5lL z;>8p{j$F`VwoI8ER)%JjLD(;$4^QDGZD~|URa^P27-Ar~@lC1>T$(9F**ieJjb<@} z7-He!R*K!1+mHc<7lGmjuwvGqa^1frWSCt>o1DXr-9jx-9lj}F((->m`Y3sCKTjYZ zIHcvTM^b%q`KeRcLHa)xQ~PA(gC754DmS&daHHz<6x1+`wJI$V^Z< z;RG$DQ*bBcriZg=4}($6+;f#aNV(7-hgW*QR%&FMEB7)@gIXJn2y z+e$x4f{SvUUdhM^IZdV3Q;eP`wE`gea=!N83j>P!FOiBTS(W$#9}6w15U!9Zzuz zU906!aSHuF%YT|F6l8FCW%7>ikiH8~ZposG(~g%M#;6qPqK45GviSCK&ZvAwkBax2 zm%9gwy`yph&%E+eUefZXI4Y;nL5}Jvj>=js|7k`gae;X6&1~nvYqdQ7gV$f-;U}pDp4sUO1@Y7u zs|DV{@zjD-x-Ag1Wi1|7WaZmP6TMlt2Yj*uOIGH*i1|79Ns#23t3Z7N(A)|q=A^>^&0T|%xS%OWU?VetTZ0kI9h z2HCk6(0CcUy!dQ(4AELrTd9$%XY<)J;J2Q$fL-h7H%=iI%B#?jn{LI;O+DK5f_J>V z#BR-j&5wcE08D9vkk`=WogkGq3b~DqZ=+G&g4Qi;Rks4Vl~7?SGS&w%zE77OYoMuY z98i4OU#ao)rU6q`jKdM2t11DE$Bt0tLW*O1=1dI)HBjLI2#I{1QQTb*3Hr=0v?_vY zr$L(EN$j;Gmt46#fQNywgKsQ`TujNgldk5jngVZFvr3D28|hqeRqV+0Aero%%{~?J`N!cw$N0KnJVsy| zM`6krp-PqBXUJ)2Q$@z*JFd1WXsV^Qz+tWJ$Z*Q>+ItQuRcis9qAsEqHrz3 z`b((&6?XaMhhej(jTv0T7vnm`M;lCOr`1d*gGzBN8B1|hls<-`EXL`9x1mrKB~GPE zjgJ*2PA65AE(L(Zq&t-4B#{p;o#wbBJnrzdzh+81JxK3#Gi8kOPAKnOWR{+Q;>?%P zPgZ}t@!f)ph_4AI+OfwzfQY)aXuklZbb?D!`T*YyoV;#2dP9kS0;Z53L?(hf2fJ^~ z<3N}38_4sZ*#(eAl(faExb9G;<5cLx+) zPf}?4bTeC&oJ;h`scfN)^2{iOO2#F4G7R>|F+b$}urf6t87RM5k6upYTX!22dHkqs zJr0KNV>dohWCwZt>61r1fJsQ}lj{pD~5q=GP#nZz7n325Ah7zp!R8nxbaDI?m>?h+l^^H}vrn z2YJ7PU1sc`2@ZbX(9@mYb~HIHyNF+P98w`a4w3XI_Ow~g!IL1rI%yO-axt1R$d0(k zSVyi0k)n@NJU-@S#)c2ISyJ&qDP_}iK;96$^AS*S% zdXm{3Q^N%vB1r2lPt1C-4pho9YDtrd_+`!s3#96|0=v}TG9aS^GEsfV0(My{m}ENF zP&mkC92z-_3-f?s8Cc$mwIEWh(E*0{Xv-F|cx7@02{0U!&lEsvBZ|!m9-7oq3alPn z4W4BWl5t``C}7_r`^Cz00WZsgM{?4gHk!Y0TFDzYA+u#(#+WoKV^YRif3`eNWOrwOlg-rO|fg7&7K~I!#X{WA)3i3fxA?iSt_jL`Z1F+dRZ~= zutLP=adq@4w|fiHsbCBc%541@8!FftfZW~x93g3g!))G*;yLu_cL zr6J3vR~VQXF%t|-UQjL`6G*eo&!ngwgINHbfC-Tw6l4;jz~*MO&WPzj$Fk*UxzK;- zB9#DzIWjbcm4Xm_y)3SQ!Sc|H1vu%V#cgpT@BcP)a}WwGEaNT-?QF{?J>Gg8*8 z>9S%fvabY=t(>jWP&|wt`vmW0eeypuQgLUde(EWM!IGfhp(NTNnyS`!c6Ds*YG?~w z7Hy4m2lB6|oKvvAp{Fg|6p$EU!TCdi02eGDGQM_x%*EdGn z*TV{yj$_fdT1H-?7Jiq|wEho`CDHb#*52kwNpDZIRr^)a($LksrJ*bG-^f7>c}GWA zu&J|CAf~A!UwFE8?Fpi7IWSQWzwjQ$bbBfNWvexBT z`SZ@NJU>BN;dvkgE-zAGF5oGP0Sh0X4bLR_2>gdNH94os3g=h>Ux}=;Hsn}Se6s*F zk6TkW}M!Rqx9(HyV21?bo2z?o?&|% zrSWlx7`@F+08hL7W(Kv3x<)Yu-D?50{zLghwMAGsy`d2Cn+c$y5b>J?Eb#@I@~eXOxk3a!3} ztn{2*a6Fm4C!r;>cju~0BU26-qhUb?iZsNZUvclN@wtkVm93APO17+Slf z%tAaKx^`{R8YesKG59x82>d^`6(%HDJp?Oq>w&y)p-GfPC|{g&1Q* zG`R`6jInqE>Bx~#>8M5m`sdl%fh3t%bq4e74=`g@LfxC&Zt?lx7$!%eZ!9LXm4yJz z%Bd=QVS*oGMMYLxPEl1+aj~_eFt;cnVJ4%P z7_zqJOvj#(WKGP;4cei=Efm6c3>#+XwKLKKKE5{Pn{>VL=P}h8*5`fI83{YA>Wsu2 z6RI=(HzihQBz?hOosoQVQguekEy>jxskf$7XQbVhTAh);Gp#yf)UNdEjEs9mRcB=0 zi`wVy6X|y@y^ReUGwc0qGt=M7n9#$GH$06fSaqy{2ZH&{UfD|8myBBTE%fMU& z8cJGtV^<{7F1l4A6tz|BYde}|b+2F4(A^VhjYK2uKy-9Dhe%`ZMiIVf#T;BBa1AMk zeEo{m;n}LD)-7+DT~{}!qqnECx2LXAbawF)5QD7j2LBtckWoy6XDq?OC?rsw!o%C@{NszW7Y_;<^=Usz>q*np&VK z=2xuBi?F&#gxk7BTf^o^*mfO1qw4O#wX_Mpq>A=L8(O1V(duXqH?%iH0Fml#QteXF zgbT(omg*DhmejAQ8!{-3MS&0oC45n3SEQl262Cd?6BpJkU%ql3aG{V=-r3vQ9qH~9 zy)YM=6Ydes9ledMc8Uy>SsX$1EjEHNhddeR@Rj2yJxITvmMBB2b8R@z*-fpH24)u6 zym745K|su#db_$J?MP}kEqdD-;gR%m%ssg_f_?JMt*eXK594=&VioR87OCUnkqoel zAu|-52coZ`wRf0gn5#O`+FrM6S(C7*-jMlI6o{KqMkEw6rq^)UiA+PF5v)*YY<3PU6LU}$5H_9U@$~?{mLm1y(aq?B%E%E@0TFeQ zCN^HqyrE}(0>7FJ)D#vvKavcyU~t-<#YxxO3X?2#wUH)c*zDTItb=?besO8gJh{kR zK;0ZUMnkv}f|HsH$i!i^mg8pC8(NG~v=lqSFk4*>I2K_PB&K?pHO{^%w(q0u8)&09 zcBCqpi4g3LZjJO@*?Effz7lh{siU=nwN6b=JG6Ge5W1p>mgvS7dp^=db$uAYp*~c0 zl(O(e70gq!0uBi)inTi-@g}ONwV}IP)j%jH)j$aOzQs1Jp4Qx_k67jmr`Sm^x9~UN zQA%uyVD1i+t#j>cJ?=o2qcGc3##^{%t5mcpb3XCqc8*=%JX6%u9jE@dadIk*h|Svg z3NxoDFn7MFxv+YLdO8c^-avKUxzed?KzSLi0Vg~AL$l-365i^p5sQ{r*DQ-qg=Tia z3CS>*7pEA9N>!1Hw)5`gxQT-KXOxRi9OT(fg14xO=N-OK86RPFkZhk%swU2JZwlc1 z;`8e2Rxk=)PY{%KYeO0Ne?nxbDd;-{aHMmaIZ4%+d%U3R{UXFX+-o|i! zcs1T=G_HK&QzxKWX7xyIFaEijk=h!cAX0ZqcSO7`&EpsU|7`NL=X2PZMu&0cYfs~nWs*Tr z8(BWau5LOAsJGbWO-CuN&*j*mh^M6rY*oTIaPh2-ie0lEl-=|Gh5Rwx2JE`6Me(j( zi7NcUdlq~6&>qT{-d`!j{urO#)_j|wuOGWPiGGLnPmm+=Sx7vWdaC+PpaQ!Tm+{0! zo6JU@S15D~Ph5TJ6aDJU6_ir6^Tb!i#soi(E^<|a+StUC z;=&jpbg^Aan>fOH`(L~riT{nm|ExH0bw5|?_haYJBJ^hBcNlo`a+N-L?>GrOd8wPc z_Zj>n;lBzVF3M&RX&KIj8Sw&MHC(3z?1R?9Uo;Ueb!aQnv53oo zc_NK_t#ignZP$R${JyO9tp-)YWc(TU?#)*s>Y!<1v@}e@rrARD(0OOmv^KOgOw#Y> z3GofxS%Y?^0h4d%0{l@R0?wvYe-3Tx)BSB-D8z;EQE#Mi-{qV&{+Z=M9ChE_#C*CZ zj_*6`@IxDI%%I`VB6!9lxE??I(aH@z+SWNi@`DJ}Ao@%B$=Inn3wsK7b9{G1pwB>1 z&xo7sS0t>~@UU2pW#%6@%VU9UqhpE=$BYes3(;ti-+d>h@VNDhqq7&W%~I>2&9?h~ zOd&0IWq{3N3HL3TL&vI?m^i#W%9ZVEU4o51%D)XD&USf@9%D?AD$aKFSe^#e`RK6_ z&M}=wkIhG$)s5>CeE7FU@!1F3!?21!yW`*!o8#zLpnZpnv!5SX6YR|#d5-nbWBWmP z%Ap2e?_t2KtXw~lh4vG1^dF)97U+yL=`Z5URmPK6@fCjUgVH#upM1%J;l==66s+NQn5arE=h=2hcT*qH`?UP-uu8Yks1|2V3) zM}1eK9rO3-u`iB26s&z)$eLEdg#;!APzkHodVYsgdofjIgLXmgD>PRgGb={_g;I^<*B6hCTib*qZ@!PSgK!XnzE_)uB&QDX|?b(i21p+FUZe z6M8tFa}-^XmHa}q_596()nx{q{acT=8BhLQ$k!2nyRP^|AKK=4+>Ew4e*4hob#9#U z$0r_Q+o=~>@aNm)hi_ct!~Q*mwrTGfhaY6+|1Z(jTLAg<+c=hTz-;WNL zl|fx^TW>4YyF|+Y+kaO&%s(-W`@Po4re3%h)+@Y##4THA2XErK9rfXex=D0J%PI^t zRPXt-(rEL}GThpMKQmn!-3Nw$DcdoI zFnP_E&5p^3*ll}>j`k{4F7P?uV3}*c^J4H^;d})1tX+a_V?59YV~tig62TC*DQ}!5 z3OW{8dSrLQ6NBc+WevTp`0}cKqv!4*l`)Bi#3;nij$!qu!u4<|mpVGHR2D#FMC?e} ziygG~3h&ybaJVJX(CLkx(SHuKlRIUxzfT?x(MLP}dNgcj?4AMFv{{5B>S4pHyHYUS pK~qPqJ7gwTY0PGb*`r2Yo6(6}8DlD=00v}ZYe!>4s~r{b{{Vok-1`6k diff --git a/Door/Debug/Door.hex b/Door/Debug/Door.hex index 7820608..d48ced3 100644 --- a/Door/Debug/Door.hex +++ b/Door/Debug/Door.hex @@ -1,73 +1,144 @@ -:100000000C9435000C945D000C945D000C945D0024 +:100000000C9435000C9449030C945D000C945D0035 :100010000C945D000C945D000C945D000C945D00EC :100020000C945D000C945D000C945D000C945D00DC :100030000C945D000C945D000C945D000C945D00CC :100040000C945D000C945D000C945D000C945D00BC :100050000C945D000C945D000C945D000C945D00AC -:100060000C945D000C945D00B90111241FBECFEF0C -:10007000D4E0DEBFCDBF11E0A0E0B1E0E4EFF3E0FB -:1000800002C005900D92A637B107D9F723E0A6E785 -:10009000B1E001C01D92AB30B207E1F710E0CAE653 -:1000A000D0E004C02297FE010E94F401C836D107B7 -:1000B000C9F70E94B4000C94F8010C94000020E0F1 -:1000C00030E080E061E070E04A9BFECFEFE9FFE0C6 -:1000D0003197F1F700C000004A9B08C0AB01022E27 -:1000E00002C0440F551F0A94E2F7842B4A99FECFB1 -:1000F0002F5F3F4F2830310539F70895CF934A9944 -:1001000024C08FE19EE40197F1F700C000004A99F6 -:100110001FC04A9BFECF4A99FECF0E945F0081110B -:100120001AC00E945F008F3EC9F40E945F00C82F72 -:100130000E945F002C2F30E0A901480F511D4F3F56 -:10014000510571F02FEF30E00BC02FEF30E008C009 -:100150002FEF30E005C02FEF30E002C02FEF30E08E -:10016000822F932FCF910895789482E390E027E532 -:1001700031E0E0ECF0E0A6ECB0E07DE06AE011C038 -:10018000408145FFFDCF5C9359915111F9CF4081DA -:1001900045FFFDCF7C93408145FFFDCF6C930197D8 -:1001A00019F0E90157E4ECCF299AC0ECD0E006EC55 -:1001B00010E00F2EF0E6EF2EF1E0FF2EF02D0F2EC7 -:1001C000FDE0CF2EF02D0F2EFAE0DF2EF02D4A9914 -:1001D000FECF289A0E947E00B82EAC015527888158 -:1001E00085FFFDCF80E3D8018C9360E070E0CB0108 -:1001F0009695879596958795969587959C01220F5C -:10020000331F880F991F880F991F880F991F820F1E -:10021000931F681B790B605D888185FFFDCFF80116 -:1002200060839A013695279536952795ABE7B4E11B -:100230000E94E60196958795805D988195FFFDCF98 -:10024000D8018C939A01ADECBCEC0E94E601FC0154 -:10025000F695E795F695E795F695E7959F010E9447 -:10026000E6019695879596958795969587959C0135 -:10027000220F331F880F991F880F991F880F991F0E -:10028000820F931FE81BF90BE05D888185FFFDCF8E -:10029000D801EC939A01ADECBCEC0E94E601969576 -:1002A000879596958795969587959C01220F331F84 -:1002B000880F991F880F991F880F991F820F931F0E -:1002C000481B590B405D888185FFFDCFF8014083B5 -:1002D000F70190E2888185FFFDCFD8019C93919131 -:1002E0009111F8CF888185FFFDCFF801C082888108 -:1002F00085FFFDCFD801DC92BFEFBB1209C0EFE74D -:10030000F4E82EE1E150F0402040E1F700C00000A9 -:1003100028985DCFCF93DF93789481E88093C400D1 -:100320001092C00088E08093C10086E08093C200F4 -:10033000ACE6B1E095E5E0ECF0E0C6ECD0E0808121 -:1003400085FFFDCF98839D919111F9CFE0ECF0E00E -:10035000808185FFFDCF8DE08093C600E0ECF0E06A -:10036000808185FFFDCF8AE08093C600DF91CF9129 -:1003700008958AE093E00E948A01559A539A239A3D -:1003800081E284BD81E085BD16BC1092B60091EA81 -:100390009093B0008093B1001092B20010926E0062 -:1003A0001092700018BC1092B4001092B300209A02 -:1003B000219A2898299856985E9857985F9810BE69 -:1003C00010927B0083E080937F000895A29FB0018C -:1003D000B39FC001A39F01D0B29F700D811D112456 -:1003E000911D0895EE0FFF1F0590F491E02D0994E3 -:0403F000F894FFCFAF -:1003F4000A0D0A0D52656365697665643A200A0D33 -:100404004F464620094F4E00696E74204952736965 -:10041400676E616C5B5D203D207B002F2F204F4673 -:10042400462C204F4E2028696E2031302773206FD0 -:1004340066206D6963726F7365636F6E6473290000 -:100444002C20007D3B0047656C6164656E210020B3 -:1004540050726573736564210D0A005561727420CE -:06046400646F6E652100CB +:100060000C945D000C945D00010411241FBECFEFC1 +:10007000D4E0DEBFCDBF11E0A0E0B1E0E6E7F8E0FC +:1000800002C005900D92AC36B107D9F721E0ACE67D +:10009000B1E001C01D92A237B207E1F710E0CAE655 +:1000A000D0E004C02297FE010E943504C836D10773 +:1000B000C9F70E94CB000C9439040C940000CF9334 +:1000C000DF93789481E88093C4001092C00088E0A8 +:1000D0008093C10086E08093C200A1E0B1E095E585 +:1000E000E0ECF0E0C6ECD0E0808185FFFDCF9883A6 +:1000F0009D919111F9CFE0ECF0E0808185FFFDCF7B +:100100008DE08093C600E0ECF0E0808185FFFDCFBC +:100110008AE08093C600DF91CF91089560FF04C00C +:100120008FEF8093B30002C01092B30061FF04C050 +:100130008FEF8093B40002C01092B40062FF03C03E +:100140008FEF88BD089518BC0895CF93DF93FB010E +:100150009081992369F0DB011196E0ECF0E0C6ECA8 +:10016000D0E0808185FFFDCF98839D919111F9CFDB +:10017000E0ECF0E0808185FFFDCF8DE08093C6004C +:10018000E0ECF0E0808185FFFDCF8AE08093C6003F +:10019000DF91CF910895789464E080E791E00E9428 +:1001A0008E006BE071E081E791E00E94A5002FE7EF +:1001B0003AE186E0215030408040E1F700C0000085 +:1001C00062E080E791E00E948E0060E171E081E7EB +:1001D00091E00E94A5009FE7AAE1B6E09150A040FF +:1001E000B040E1F700C0000061E080E791E00E94CC +:1001F0008E0066E171E081E791E00E94A5002FE7A3 +:100200003AE186E0215030408040E1F700C0000034 +:1002100067E080E791E00E948E006CE171E081E789 +:1002200091E00E94A5009FE7AAE1B6E09150A040AE +:10023000B040E1F700C00000299A60E080E791E05B +:100240000E948E00CDE6D1E066246A94762C0F2EB3 +:10025000F4EBEF2EF12CF02D6894222427F803EB19 +:1002600010E0E0ECF0E046EC50E00F2EFDE04F2E09 +:10027000F02D0F2EFAE05F2EF02D0F2EF0EC3F2E1A +:10028000F02D0F2EF0EB8F2E912CF02D888178829F +:100290008C3009F4CFC038F5853009F4A4C090F44F +:1002A000823009F484C038F4882309F446C08130D0 +:1002B00009F0F6C05FC0833009F487C0843009F0CC +:1002C000EFC08BC0883009F4A0C038F4863009F440 +:1002D00090C0873009F0E4C092C08A3009F4A3C00E +:1002E00008F075C199C0823109F4C2C090F48F3012 +:1002F00009F46DC138F48D3009F4A2C08E3009F0D4 +:10030000CFC0A4C0803109F4A7C0813109F0C8C0B2 +:10031000A9C0853109F4B8C038F4833109F457C154 +:10032000843109F0BDC0AAC0873109F450C108F476 +:10033000B1C08F3F09F0B4C04AC188B58B3F20F4EB +:1003400088B58B5F88BD01C018BCD7018C918B3FED +:1003500020F48C918B5F8C9302C0D7011C92D80142 +:100360008C918B3F20F48C918B5F8C9330C1D801A2 +:100370001C922DC188B5853020F088B5855088BD88 +:1003800001C018BCD7018C91853020F08C9185502C +:100390008C9302C0D7011C92D8018C91853020F03B +:1003A0008C9185508C9313C1D8011C9210C184B5D7 +:1003B0008F7D84BDD4018C918F758C935D98559AF7 +:1003C0005B98539A2B98239A02C184B5806284BDAE +:1003D000D4018C91806A8C93FAC0D8011C92D70109 +:1003E0001C9268BCF4C0D8011C92D7016C9218BC56 +:1003F000EEC0D8016C92D7011C9218BCE8C0D8019D +:100400006C92D7016C9268BCE2C068BC20E4D70152 +:100410002C93D8011C92DBC018BCD7016C9220E44D +:10042000D8012C93D4C030E438BDD7011C92D80138 +:100430006C92CDC068BCD7012C92D8011C92C7C069 +:1004400018BCD7016C92D8012C92C1C028BCD7012E +:100450001C92D8016C92BBC068BCD7013C92D801F9 +:100460001C92B5C018BCD7016C92D8013C92AFC0A9 +:1004700038BCD7011C92D8016C92A9C068BCD701C6 +:100480006C92D8011C92A3C018BCD7016C92D80101 +:100490006C929DC068BCD7011C92D8016C9297C029 +:1004A000C82ED12C808185FFFDCF80E3DA018C93AB +:1004B00060E070E0CB019695879596958795969527 +:1004C00087959C01220F331F880F991F880F991F52 +:1004D000880F991F820F931F681B790B605D8081C5 +:1004E00085FFFDCFDA016C939601369527953695F9 +:1004F0002795ABE7B4E10E94270496958795805D28 +:10050000908195FFFDCFDA018C939601ADECBCECA8 +:100510000E9427045C01B694A794B694A794B6945D +:10052000A79495010E94270496958795969587959F +:10053000969587959C01220F331F880F991F880F6E +:10054000991F880F991F820F931F9501281B390B44 +:10055000922F905D808185FFFDCFDA019C939601FB +:10056000ADECBCEC0E9427049695879596958795EF +:10057000969587959C01220F331F880F991F880F2E +:10058000991F880F991F820F931F9601281B390B03 +:10059000922F905D808185FFFDCFDA019C93A3E6C9 +:1005A000B1E090E29D01808185FFFDCFDA019C934F +:1005B000D9019D919D019111F6CF808185FFFDCFDD +:1005C000DA014C92808185FFFDCFDA015C9287E8E9 +:1005D00093E10197F1F700C0000029989FEDAAE090 +:1005E000B6E09150A040B040E1F700C00000299A69 +:1005F0004DCE559A539A239A81E084BD94E095BDDF +:1006000016BC1092B600E0EBF0E0808385E08093AA +:10061000B1001092B20010926E001092700084B57A +:10062000806284BD8081806A808318BC1092B4008F +:100630001092B300089520E030E080E061E070E0C7 +:100640004A9BFECFEFE9FFE03197F1F700C00000D1 +:100650004A9B08C0AB01022E02C0440F551F0A94EA +:10066000E2F7842B4A990FC008C04A9B06C0F5E800 +:10067000FA95F1F700009150C1F72F5F3F4F2830F6 +:100680003105F1F6089545E84A95F1F7000091E348 +:10069000ECCF1F920F920FB60F9211242F933F931E +:1006A0004F935F936F937F938F939F93AF93BF937A +:1006B000CF93EF93FF93289A4A9979C08FE19EE4F4 +:1006C0000197F1F700C000004A9971C04A9BFECF24 +:1006D0004A99FECF80E090E060E041E050E04A9B24 +:1006E000FECFEFE9FFE03197F1F700C000004A9B31 +:1006F00008C09A01082E02C0220F331F0A94E2F7A5 +:10070000622B4A9966C008C04A9B06C0F5E8FA9574 +:10071000F1F700002150C1F7019688309105F9F6F4 +:10072000611139C080E090E041E050E04A9BFECF8B +:10073000EFE9FFE03197F1F700C000004A9B08C0E5 +:100740009A01082E02C0220F331F0A94E2F7622B8F +:100750004A9939C008C04A9B06C0F5E8FA95F1F7F6 +:1007600000002150C1F7019688309105F9F66F3EDF +:1007700091F48CE691E00E941B03C82F8CE691E077 +:100780000E941B03282F30E02C0F311D2F3F310515 +:1007900011F4CF3F51F42FE734E88EE1215030407F +:1007A0008040E1F700C000000BC0CE3F39F4E7E81D +:1007B000F3E13197F1F700C0000002C0C0936D0172 +:1007C0002898E09A0CC0F5E8FA95F1F7000021E3CB +:1007D000C2CF25E82A95F1F7000021E395CFFF91DC +:1007E000EF91CF91BF91AF919F918F917F916F9139 +:1007F0005F914F913F912F910F900FBE0F901F90DF +:10080000189581E791E00E945F0080E791E00E94E7 +:10081000F902209A219A2898299856985E98579814 +:100820005F9810BE10927B0083E080937F00209A37 +:10083000219A2898299852985A988FEF80936D01A1 +:1008400082E08093690081E08DBB1CBA0895A29F6D +:10085000B001B39FC001A39F01D0B29F700D811D55 +:100860001124911D0895EE0FFF1F0590F491E02DC6 +:060870000994F894FFCF8B +:100876005561727420646F6E652100526F74210099 +:100886004772FC6E2100426C61752100576569DF75 +:100896002C20616C6C657320496E697469616C69A2 +:1008A60073657274212048616265204665727469B9 +:1008B6006720756E642064616D6974206162207AB8 +:1008C600756D204E6F726D616C62657472696562DA +:0C08D600210020507265737365642100DE :00000001FF diff --git a/Door/Debug/Door.lss b/Door/Debug/Door.lss index 805d150..de80dbe 100644 --- a/Door/Debug/Door.lss +++ b/Door/Debug/Door.lss @@ -3,40 +3,40 @@ Door.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000076 00800100 000003f4 00000488 2**0 + 0 .data 0000006c 00800100 00000876 0000090a 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 000003f4 00000000 00000000 00000094 2**1 + 1 .text 00000876 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 00000195 00800176 00800176 000004fe 2**0 + 2 .bss 00000006 0080016c 0080016c 00000976 2**0 ALLOC - 3 .stab 000006cc 00000000 00000000 00000500 2**2 + 3 .stab 000006cc 00000000 00000000 00000978 2**2 CONTENTS, READONLY, DEBUGGING - 4 .stabstr 00000082 00000000 00000000 00000bcc 2**0 + 4 .stabstr 00000082 00000000 00000000 00001044 2**0 CONTENTS, READONLY, DEBUGGING - 5 .comment 0000002f 00000000 00000000 00000c4e 2**0 + 5 .comment 0000002f 00000000 00000000 000010c6 2**0 CONTENTS, READONLY - 6 .debug_aranges 00000050 00000000 00000000 00000c7d 2**0 + 6 .debug_aranges 00000058 00000000 00000000 000010f5 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_info 0000289d 00000000 00000000 00000ccd 2**0 + 7 .debug_info 00002bd2 00000000 00000000 0000114d 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_abbrev 00000474 00000000 00000000 0000356a 2**0 + 8 .debug_abbrev 00000464 00000000 00000000 00003d1f 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_line 000005af 00000000 00000000 000039de 2**0 + 9 .debug_line 00000511 00000000 00000000 00004183 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_frame 000000dc 00000000 00000000 00003f90 2**2 + 10 .debug_frame 000000f8 00000000 00000000 00004694 2**2 CONTENTS, READONLY, DEBUGGING - 11 .debug_str 00000c59 00000000 00000000 0000406c 2**0 + 11 .debug_str 00001247 00000000 00000000 0000478c 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 00000af1 00000000 00000000 00004cc5 2**0 + 12 .debug_loc 00000ccb 00000000 00000000 000059d3 2**0 CONTENTS, READONLY, DEBUGGING - 13 .debug_ranges 00000478 00000000 00000000 000057b6 2**0 + 13 .debug_ranges 00000330 00000000 00000000 0000669e 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: 0: 0c 94 35 00 jmp 0x6a ; 0x6a <__ctors_end> - 4: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> + 4: 0c 94 49 03 jmp 0x692 ; 0x692 <__vector_1> 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> @@ -63,7 +63,7 @@ Disassembly of section .text: 64: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> 00000068 <__ctors_start>: - 68: b9 01 movw r22, r18 + 68: 01 04 cpc r0, r1 0000006a <__ctors_end>: 6a: 11 24 eor r1, r1 @@ -77,18 +77,18 @@ Disassembly of section .text: 76: 11 e0 ldi r17, 0x01 ; 1 78: a0 e0 ldi r26, 0x00 ; 0 7a: b1 e0 ldi r27, 0x01 ; 1 - 7c: e4 ef ldi r30, 0xF4 ; 244 - 7e: f3 e0 ldi r31, 0x03 ; 3 + 7c: e6 e7 ldi r30, 0x76 ; 118 + 7e: f8 e0 ldi r31, 0x08 ; 8 80: 02 c0 rjmp .+4 ; 0x86 <__do_copy_data+0x10> 82: 05 90 lpm r0, Z+ 84: 0d 92 st X+, r0 - 86: a6 37 cpi r26, 0x76 ; 118 + 86: ac 36 cpi r26, 0x6C ; 108 88: b1 07 cpc r27, r17 8a: d9 f7 brne .-10 ; 0x82 <__do_copy_data+0xc> 0000008c <__do_clear_bss>: - 8c: 23 e0 ldi r18, 0x03 ; 3 - 8e: a6 e7 ldi r26, 0x76 ; 118 + 8c: 21 e0 ldi r18, 0x01 ; 1 + 8e: ac e6 ldi r26, 0x6C ; 108 90: b1 e0 ldi r27, 0x01 ; 1 92: 01 c0 rjmp .+2 ; 0x96 <.do_clear_bss_start> @@ -96,7 +96,7 @@ Disassembly of section .text: 94: 1d 92 st X+, r1 00000096 <.do_clear_bss_start>: - 96: ab 30 cpi r26, 0x0B ; 11 + 96: a2 37 cpi r26, 0x72 ; 114 98: b2 07 cpc r27, r18 9a: e1 f7 brne .-8 ; 0x94 <.do_clear_bss_loop> @@ -107,611 +107,1825 @@ Disassembly of section .text: 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 f4 01 call 0x3e8 ; 0x3e8 <__tablejump__> + a8: 0e 94 35 04 call 0x86a ; 0x86a <__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 b4 00 call 0x168 ; 0x168
- b6: 0c 94 f8 01 jmp 0x3f0 ; 0x3f0 <_exit> + b2: 0e 94 cb 00 call 0x196 ; 0x196
+ b6: 0c 94 39 04 jmp 0x872 ; 0x872 <_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 9b sbis 0x09, 2 ; 9 - ca: fe cf rjmp .-4 ; 0xc8 <_Z8read8bitv+0xa> - cc: ef e9 ldi r30, 0x9F ; 159 - ce: ff e0 ldi r31, 0x0F ; 15 - d0: 31 97 sbiw r30, 0x01 ; 1 - d2: f1 f7 brne .-4 ; 0xd0 <_Z8read8bitv+0x12> - d4: 00 c0 rjmp .+0 ; 0xd6 <_Z8read8bitv+0x18> - d6: 00 00 nop - d8: 4a 9b sbis 0x09, 2 ; 9 - UCSR0A= (0< - dc: ab 01 movw r20, r22 - de: 02 2e mov r0, r18 - UDR0 = c; - e0: 02 c0 rjmp .+4 ; 0xe6 <_Z8read8bitv+0x28> - text++; - } - } - void printDec(uint16_t wert) { - print((wert/10000)+'0'); - print(((wert/1000)%10)+'0'); - e2: 44 0f add r20, r20 - e4: 55 1f adc r21, r21 - e6: 0a 94 dec r0 - e8: e2 f7 brpl .-8 ; 0xe2 <_Z8read8bitv+0x24> - ea: 84 2b or r24, r20 - ec: 4a 99 sbic 0x09, 2 ; 9 - ee: fe cf rjmp .-4 ; 0xec <_Z8read8bitv+0x2e> - f0: 2f 5f subi r18, 0xFF ; 255 - f2: 3f 4f sbci r19, 0xFF ; 255 - f4: 28 30 cpi r18, 0x08 ; 8 - f6: 31 05 cpc r19, r1 - f8: 39 f7 brne .-50 ; 0xc8 <_Z8read8bitv+0xa> - fa: 08 95 ret +000000be <_ZN4UartILm9600EEC1Ev>: +#include -000000fc <_Z7recievev>: - fc: cf 93 push r28 - fe: 4a 99 sbic 0x09, 2 ; 9 - 100: 24 c0 rjmp .+72 ; 0x14a <_Z7recievev+0x4e> - 102: 8f e1 ldi r24, 0x1F ; 31 - 104: 9e e4 ldi r25, 0x4E ; 78 - 106: 01 97 sbiw r24, 0x01 ; 1 - 108: f1 f7 brne .-4 ; 0x106 <_Z7recievev+0xa> - 10a: 00 c0 rjmp .+0 ; 0x10c <_Z7recievev+0x10> - 10c: 00 00 nop - 10e: 4a 99 sbic 0x09, 2 ; 9 - 110: 1f c0 rjmp .+62 ; 0x150 <_Z7recievev+0x54> - 112: 4a 9b sbis 0x09, 2 ; 9 - 114: fe cf rjmp .-4 ; 0x112 <_Z7recievev+0x16> - 116: 4a 99 sbic 0x09, 2 ; 9 - 118: fe cf rjmp .-4 ; 0x116 <_Z7recievev+0x1a> - 11a: 0e 94 5f 00 call 0xbe ; 0xbe <_Z8read8bitv> - 11e: 81 11 cpse r24, r1 - 120: 1a c0 rjmp .+52 ; 0x156 <_Z7recievev+0x5a> - 122: 0e 94 5f 00 call 0xbe ; 0xbe <_Z8read8bitv> - 126: 8f 3e cpi r24, 0xEF ; 239 - 128: c9 f4 brne .+50 ; 0x15c <_Z7recievev+0x60> - 12a: 0e 94 5f 00 call 0xbe ; 0xbe <_Z8read8bitv> - 12e: c8 2f mov r28, r24 - 130: 0e 94 5f 00 call 0xbe ; 0xbe <_Z8read8bitv> - 134: 2c 2f mov r18, r28 - 136: 30 e0 ldi r19, 0x00 ; 0 - 138: a9 01 movw r20, r18 - 13a: 48 0f add r20, r24 - 13c: 51 1d adc r21, r1 - 13e: 4f 3f cpi r20, 0xFF ; 255 +template +class Uart { + public: + Uart() { + be: cf 93 push r28 + c0: df 93 push r29 + sei(); + c2: 78 94 sei + void print(uint8_t wert) { + uart_putchar(wert); + } + private: + void init() { + UBRR0L = (F_CPU / (baudrate * 16L) - 1); //Teiler wird gesetzt + c4: 81 e8 ldi r24, 0x81 ; 129 + c6: 80 93 c4 00 sts 0x00C4, r24 UCSR0A= (0< - 144: 2f ef ldi r18, 0xFF ; 255 - UDR0 = c; - 146: 30 e0 ldi r19, 0x00 ; 0 - } - } - void printDec(uint16_t wert) { - print((wert/10000)+'0'); - print(((wert/1000)%10)+'0'); - print(((wert/100)%10)+'0'); - 148: 0b c0 rjmp .+22 ; 0x160 <_Z7recievev+0x64> - 14a: 2f ef ldi r18, 0xFF ; 255 - 14c: 30 e0 ldi r19, 0x00 ; 0 - 14e: 08 c0 rjmp .+16 ; 0x160 <_Z7recievev+0x64> - 150: 2f ef ldi r18, 0xFF ; 255 - 152: 30 e0 ldi r19, 0x00 ; 0 - 154: 05 c0 rjmp .+10 ; 0x160 <_Z7recievev+0x64> - 156: 2f ef ldi r18, 0xFF ; 255 - 158: 30 e0 ldi r19, 0x00 ; 0 - 15a: 02 c0 rjmp .+4 ; 0x160 <_Z7recievev+0x64> - 15c: 2f ef ldi r18, 0xFF ; 255 - 15e: 30 e0 ldi r19, 0x00 ; 0 - 160: 82 2f mov r24, r18 - 162: 93 2f mov r25, r19 - 164: cf 91 pop r28 - 166: 08 95 ret - -00000168
: - 168: 78 94 sei - 16a: 82 e3 ldi r24, 0x32 ; 50 - 16c: 90 e0 ldi r25, 0x00 ; 0 - 16e: 27 e5 ldi r18, 0x57 ; 87 - 170: 31 e0 ldi r19, 0x01 ; 1 - 172: e0 ec ldi r30, 0xC0 ; 192 - 174: f0 e0 ldi r31, 0x00 ; 0 - 176: a6 ec ldi r26, 0xC6 ; 198 - 178: b0 e0 ldi r27, 0x00 ; 0 - 17a: 7d e0 ldi r23, 0x0D ; 13 - 17c: 6a e0 ldi r22, 0x0A ; 10 - 17e: 11 c0 rjmp .+34 ; 0x1a2 - 180: 40 81 ld r20, Z - 182: 45 ff sbrs r20, 5 - 184: fd cf rjmp .-6 ; 0x180 - 186: 5c 93 st X, r21 - 188: 59 91 ld r21, Y+ - 18a: 51 11 cpse r21, r1 - 18c: f9 cf rjmp .-14 ; 0x180 - 18e: 40 81 ld r20, Z - 190: 45 ff sbrs r20, 5 - 192: fd cf rjmp .-6 ; 0x18e - 194: 7c 93 st X, r23 - UCSR0A= (0< - UDR0 = c; - 19c: 6c 93 st X, r22 - } - void printDec(uint16_t wert) { - print((wert/10000)+'0'); - print(((wert/1000)%10)+'0'); - print(((wert/100)%10)+'0'); - print(((wert/10)%10)+'0'); - 19e: 01 97 sbiw r24, 0x01 ; 1 - 1a0: 19 f0 breq .+6 ; 0x1a8 - 1a2: e9 01 movw r28, r18 - 1a4: 57 e4 ldi r21, 0x47 ; 71 - 1a6: ec cf rjmp .-40 ; 0x180 - 1a8: 29 9a sbi 0x05, 1 ; 5 - 1aa: c0 ec ldi r28, 0xC0 ; 192 - 1ac: d0 e0 ldi r29, 0x00 ; 0 - 1ae: 06 ec ldi r16, 0xC6 ; 198 - 1b0: 10 e0 ldi r17, 0x00 ; 0 - 1b2: 0f 2e mov r0, r31 - 1b4: f0 e6 ldi r31, 0x60 ; 96 - 1b6: ef 2e mov r14, r31 - 1b8: f1 e0 ldi r31, 0x01 ; 1 - 1ba: ff 2e mov r15, r31 - 1bc: f0 2d mov r31, r0 - 1be: 0f 2e mov r0, r31 - 1c0: fd e0 ldi r31, 0x0D ; 13 - 1c2: cf 2e mov r12, r31 - 1c4: f0 2d mov r31, r0 - 1c6: 0f 2e mov r0, r31 - 1c8: fa e0 ldi r31, 0x0A ; 10 - 1ca: df 2e mov r13, r31 - 1cc: f0 2d mov r31, r0 - 1ce: 4a 99 sbic 0x09, 2 ; 9 - 1d0: fe cf rjmp .-4 ; 0x1ce - 1d2: 28 9a sbi 0x05, 0 ; 5 - 1d4: 0e 94 7e 00 call 0xfc ; 0xfc <_Z7recievev> - 1d8: b8 2e mov r11, r24 - 1da: ac 01 movw r20, r24 - 1dc: 55 27 eor r21, r21 - 1de: 88 81 ld r24, Y - 1e0: 85 ff sbrs r24, 5 - 1e2: fd cf rjmp .-6 ; 0x1de - 1e4: 80 e3 ldi r24, 0x30 ; 48 - 1e6: d8 01 movw r26, r16 - UCSR0A= (0< - 21e: f8 01 movw r30, r16 - 220: 60 83 st Z, r22 - UCSR0A= (0< -void printpulses(void) { - Serial.println("\n\r\n\rReceived: \n\rOFF \tON"); - for (uint8_t i = 0; i < currentpulse; i++) { - Serial.printDec(pulses[i][0] * RESOLUTION); - Serial.print(" "); - Serial.printDec(pulses[i][1] * RESOLUTION); - 234: 96 95 lsr r25 - 236: 87 95 ror r24 - 238: 80 5d subi r24, 0xD0 ; 208 - 23a: 98 81 ld r25, Y - 23c: 95 ff sbrs r25, 5 - 23e: fd cf rjmp .-6 ; 0x23a - 240: d8 01 movw r26, r16 - 242: 8c 93 st X, r24 - 244: 9a 01 movw r18, r20 - 246: ad ec ldi r26, 0xCD ; 205 - UCSR0A= (0< - 24e: fc 01 movw r30, r24 - 250: f6 95 lsr r31 - 252: e7 95 ror r30 - 254: f6 95 lsr r31 - 256: e7 95 ror r30 - uart_putchar(*text); - text++; - } - } - void printDec(uint16_t wert) { - print((wert/10000)+'0'); - 258: f6 95 lsr r31 - 25a: e7 95 ror r30 - 25c: 9f 01 movw r18, r30 - 25e: 0e 94 e6 01 call 0x3cc ; 0x3cc <__umulhisi3> - 262: 96 95 lsr r25 - 264: 87 95 ror r24 - 266: 96 95 lsr r25 - 268: 87 95 ror r24 - 26a: 96 95 lsr r25 - 26c: 87 95 ror r24 - 26e: 9c 01 movw r18, r24 - 270: 22 0f add r18, r18 - 272: 33 1f adc r19, r19 - 274: 88 0f add r24, r24 - 276: 99 1f adc r25, r25 - 278: 88 0f add r24, r24 - 27a: 99 1f adc r25, r25 - UCSR0B= (0< - 290: d8 01 movw r26, r16 - 292: ec 93 st X, r30 - 294: 9a 01 movw r18, r20 - 296: ad ec ldi r26, 0xCD ; 205 - 298: bc ec ldi r27, 0xCC ; 204 - 29a: 0e 94 e6 01 call 0x3cc ; 0x3cc <__umulhisi3> - 29e: 96 95 lsr r25 - 2a0: 87 95 ror r24 - 2a2: 96 95 lsr r25 - 2a4: 87 95 ror r24 - 2a6: 96 95 lsr r25 - 2a8: 87 95 ror r24 - 2aa: 9c 01 movw r18, r24 - 2ac: 22 0f add r18, r18 - 2ae: 33 1f adc r19, r19 - 2b0: 88 0f add r24, r24 - 2b2: 99 1f adc r25, r25 - 2b4: 88 0f add r24, r24 - 2b6: 99 1f adc r25, r25 - 2b8: 88 0f add r24, r24 - 2ba: 99 1f adc r25, r25 - 2bc: 82 0f add r24, r18 - 2be: 93 1f adc r25, r19 - 2c0: 48 1b sub r20, r24 - 2c2: 59 0b sbc r21, r25 - 2c4: 40 5d subi r20, 0xD0 ; 208 - 2c6: 88 81 ld r24, Y - 2c8: 85 ff sbrs r24, 5 - 2ca: fd cf rjmp .-6 ; 0x2c6 - 2cc: f8 01 movw r30, r16 - 2ce: 40 83 st Z, r20 - 2d0: f7 01 movw r30, r14 - 2d2: 90 e2 ldi r25, 0x20 ; 32 - UCSR0A= (0< - UDR0 = c; - 2da: d8 01 movw r26, r16 - } - } - void printDec(uint16_t wert) { - print((wert/10000)+'0'); - print(((wert/1000)%10)+'0'); - print(((wert/100)%10)+'0'); - 2dc: 9c 93 st X, r25 - 2de: 91 91 ld r25, Z+ - 2e0: 91 11 cpse r25, r1 - 2e2: f8 cf rjmp .-16 ; 0x2d4 - 2e4: 88 81 ld r24, Y - 2e6: 85 ff sbrs r24, 5 - 2e8: fd cf rjmp .-6 ; 0x2e4 - 2ea: f8 01 movw r30, r16 - 2ec: c0 82 st Z, r12 - 2ee: 88 81 ld r24, Y - 2f0: 85 ff sbrs r24, 5 - 2f2: fd cf rjmp .-6 ; 0x2ee - 2f4: d8 01 movw r26, r16 - 2f6: dc 92 st X, r13 - 2f8: bf ef ldi r27, 0xFF ; 255 - 2fa: bb 12 cpse r11, r27 - 2fc: 09 c0 rjmp .+18 ; 0x310 - 2fe: ef e7 ldi r30, 0x7F ; 127 - 300: f4 e8 ldi r31, 0x84 ; 132 - 302: 2e e1 ldi r18, 0x1E ; 30 - 304: e1 50 subi r30, 0x01 ; 1 - 306: f0 40 sbci r31, 0x00 ; 0 - 308: 20 40 sbci r18, 0x00 ; 0 - 30a: e1 f7 brne .-8 ; 0x304 - 30c: 00 c0 rjmp .+0 ; 0x30e - 30e: 00 00 nop - 310: 28 98 cbi 0x05, 0 ; 5 - 312: 5d cf rjmp .-326 ; 0x1ce - -00000314 <_ZN4UartILm9600EEC1Ev>: - 314: cf 93 push r28 - 316: df 93 push r29 - 318: 78 94 sei - 31a: 81 e8 ldi r24, 0x81 ; 129 - 31c: 80 93 c4 00 sts 0x00C4, r24 - 320: 10 92 c0 00 sts 0x00C0, r1 - 324: 88 e0 ldi r24, 0x08 ; 8 - UCSR0A= (0< - 344: 98 83 st Y, r25 - 346: 9d 91 ld r25, X+ - 348: 91 11 cpse r25, r1 - 34a: f9 cf rjmp .-14 ; 0x33e <_ZN4UartILm9600EEC1Ev+0x2a> - 34c: e0 ec ldi r30, 0xC0 ; 192 - 34e: f0 e0 ldi r31, 0x00 ; 0 - 350: 80 81 ld r24, Z - 352: 85 ff sbrs r24, 5 - 354: fd cf rjmp .-6 ; 0x350 <_ZN4UartILm9600EEC1Ev+0x3c> - 356: 8d e0 ldi r24, 0x0D ; 13 - 358: 80 93 c6 00 sts 0x00C6, r24 - 35c: e0 ec ldi r30, 0xC0 ; 192 - 35e: f0 e0 ldi r31, 0x00 ; 0 - 360: 80 81 ld r24, Z - 362: 85 ff sbrs r24, 5 - 364: fd cf rjmp .-6 ; 0x360 <_ZN4UartILm9600EEC1Ev+0x4c> - 366: 8a e0 ldi r24, 0x0A ; 10 - 368: 80 93 c6 00 sts 0x00C6, r24 - 36c: df 91 pop r29 - 36e: cf 91 pop r28 - 370: 08 95 ret - -00000372 <_GLOBAL__sub_I_Serial>: - 372: 8a e0 ldi r24, 0x0A ; 10 - UCSR0A= (0< - UDR0 = c; - 37a: 55 9a sbi 0x0a, 5 ; 10 - 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'); - 37c: 53 9a sbi 0x0a, 3 ; 10 - 37e: 23 9a sbi 0x04, 3 ; 4 - 380: 81 e2 ldi r24, 0x21 ; 33 - 382: 84 bd out 0x24, r24 ; 36 - 384: 81 e0 ldi r24, 0x01 ; 1 - 386: 85 bd out 0x25, r24 ; 37 - 388: 16 bc out 0x26, r1 ; 38 - 38a: 10 92 b6 00 sts 0x00B6, r1 - 38e: 91 ea ldi r25, 0xA1 ; 161 - 390: 90 93 b0 00 sts 0x00B0, r25 - 394: 80 93 b1 00 sts 0x00B1, r24 - 398: 10 92 b2 00 sts 0x00B2, r1 - 39c: 10 92 6e 00 sts 0x006E, r1 - 3a0: 10 92 70 00 sts 0x0070, r1 - 3a4: 18 bc out 0x28, r1 ; 40 - 3a6: 10 92 b4 00 sts 0x00B4, r1 - 3aa: 10 92 b3 00 sts 0x00B3, r1 - UCSR0A= (0<: - UDR0 = c; - 3cc: a2 9f mul r26, r18 -uint16_t volatile pulses[100][2]; // pair is high and low pulse -uint8_t volatile currentpulse = 0; - -void printpulses(void) { - Serial.println("\n\r\n\rReceived: \n\rOFF \tON"); - for (uint8_t i = 0; i < currentpulse; i++) { - 3ce: b0 01 movw r22, r0 - 3d0: b3 9f mul r27, r19 - 3d2: c0 01 movw r24, r0 - 3d4: a3 9f mul r26, r19 - 3d6: 01 d0 rcall .+2 ; 0x3da <__umulhisi3+0xe> - 3d8: b2 9f mul r27, r18 - 3da: 70 0d add r23, r0 - UCSR0A= (0<: + d4: 86 e0 ldi r24, 0x06 ; 6 + d6: 80 93 c2 00 sts 0x00C2, r24 + da: a1 e0 ldi r26, 0x01 ; 1 + dc: b1 e0 ldi r27, 0x01 ; 1 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - 3e4: ee 0f add r30, r30 - 3e6: ff 1f adc r31, r31 - -000003e8 <__tablejump__>: - 3e8: 05 90 lpm r0, Z+ + de: 95 e5 ldi r25, 0x55 ; 85 UCSR0A= (0< + UDR0 = c; + ee: 98 83 st Y, r25 + sei(); + init(); + println("Uart done!"); + } + void print(const char *text) { + while (*text) + f0: 9d 91 ld r25, X+ + f2: 91 11 cpse r25, r1 + f4: f9 cf rjmp .-14 ; 0xe8 <_ZN4UartILm9600EEC1Ev+0x2a> + UCSR0A= (0< + UDR0 = c; + 100: 8d e0 ldi r24, 0x0D ; 13 + 102: 80 93 c6 00 sts 0x00C6, r24 + UCSR0A= (0< + UDR0 = c; + 110: 8a e0 ldi r24, 0x0A ; 10 + 112: 80 93 c6 00 sts 0x00C6, r24 + public: + Uart() { + sei(); + init(); + println("Uart done!"); + } + 116: df 91 pop r29 + 118: cf 91 pop r28 + 11a: 08 95 ret -000003f0 <_exit>: - 3f0: f8 94 cli +0000011c <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh>: + OCR0B=r; //ROT + OCR2B=g; //GRÜN + OCR2A=b; //BLAU + } + void setcolor(uint8_t mask) { + (mask & (1<<0)) ? OCR2A=0xFF : OCR2A=0x00; + 11c: 60 ff sbrs r22, 0 + 11e: 04 c0 rjmp .+8 ; 0x128 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0xc> + 120: 8f ef ldi r24, 0xFF ; 255 + 122: 80 93 b3 00 sts 0x00B3, r24 + 126: 02 c0 rjmp .+4 ; 0x12c <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x10> + 128: 10 92 b3 00 sts 0x00B3, r1 + (mask & (1<<1)) ? OCR2B=0xFF : OCR2B=0x00; + 12c: 61 ff sbrs r22, 1 + 12e: 04 c0 rjmp .+8 ; 0x138 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x1c> + 130: 8f ef ldi r24, 0xFF ; 255 + 132: 80 93 b4 00 sts 0x00B4, r24 + 136: 02 c0 rjmp .+4 ; 0x13c <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x20> + 138: 10 92 b4 00 sts 0x00B4, r1 + (mask & (1<<2)) ? OCR0B=0xFF : OCR0B=0x00; + 13c: 62 ff sbrs r22, 2 + 13e: 03 c0 rjmp .+6 ; 0x146 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x2a> + 140: 8f ef ldi r24, 0xFF ; 255 + 142: 88 bd out 0x28, r24 ; 40 + 144: 08 95 ret + 146: 18 bc out 0x28, r1 ; 40 + 148: 08 95 ret -000003f2 <__stop_program>: - 3f2: ff cf rjmp .-2 ; 0x3f2 <__stop_program> +0000014a <_ZN4UartILm9600EE7printlnEPKc>: + } else { + print("0"); + } + } + } + void println(const char *text) { + 14a: cf 93 push r28 + 14c: df 93 push r29 + sei(); + init(); + println("Uart done!"); + } + void print(const char *text) { + while (*text) + 14e: fb 01 movw r30, r22 + 150: 90 81 ld r25, Z + 152: 99 23 and r25, r25 + 154: 69 f0 breq .+26 ; 0x170 <_ZN4UartILm9600EE7printlnEPKc+0x26> + } else { + print("0"); + } + } + } + void println(const char *text) { + 156: db 01 movw r26, r22 + 158: 11 96 adiw r26, 0x01 ; 1 + UCSR0A= (0< + UDR0 = c; + 168: 98 83 st Y, r25 + sei(); + init(); + println("Uart done!"); + } + void print(const char *text) { + while (*text) + 16a: 9d 91 ld r25, X+ + 16c: 91 11 cpse r25, r1 + 16e: f9 cf rjmp .-14 ; 0x162 <_ZN4UartILm9600EE7printlnEPKc+0x18> + UCSR0A= (0< + UDR0 = c; + 17a: 8d e0 ldi r24, 0x0D ; 13 + 17c: 80 93 c6 00 sts 0x00C6, r24 + UCSR0A= (0< + UDR0 = c; + 18a: 8a e0 ldi r24, 0x0A ; 10 + 18c: 80 93 c6 00 sts 0x00C6, r24 + } + void println(const char *text) { + print(text); + print("\r"); + print("\n"); + } + 190: df 91 pop r29 + 192: cf 91 pop r28 + 194: 08 95 ret + +00000196
: +compclass comp; +irclass ir; + +int main(void) +{ + sei(); + 196: 78 94 sei + stripe.setcolor(stripe.RED); + 198: 64 e0 ldi r22, 0x04 ; 4 + 19a: 80 e7 ldi r24, 0x70 ; 112 + 19c: 91 e0 ldi r25, 0x01 ; 1 + 19e: 0e 94 8e 00 call 0x11c ; 0x11c <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> + Serial.println("Rot!"); + 1a2: 6b e0 ldi r22, 0x0B ; 11 + 1a4: 71 e0 ldi r23, 0x01 ; 1 + 1a6: 81 e7 ldi r24, 0x71 ; 113 + 1a8: 91 e0 ldi r25, 0x01 ; 1 + 1aa: 0e 94 a5 00 call 0x14a ; 0x14a <_ZN4UartILm9600EE7printlnEPKc> + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 1ae: 2f e7 ldi r18, 0x7F ; 127 + 1b0: 3a e1 ldi r19, 0x1A ; 26 + 1b2: 86 e0 ldi r24, 0x06 ; 6 + 1b4: 21 50 subi r18, 0x01 ; 1 + 1b6: 30 40 sbci r19, 0x00 ; 0 + 1b8: 80 40 sbci r24, 0x00 ; 0 + 1ba: e1 f7 brne .-8 ; 0x1b4 + 1bc: 00 c0 rjmp .+0 ; 0x1be + 1be: 00 00 nop + _delay_ms(100); + stripe.setcolor(stripe.GREEN); + 1c0: 62 e0 ldi r22, 0x02 ; 2 + 1c2: 80 e7 ldi r24, 0x70 ; 112 + 1c4: 91 e0 ldi r25, 0x01 ; 1 + 1c6: 0e 94 8e 00 call 0x11c ; 0x11c <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> + Serial.println("Grün!"); + 1ca: 60 e1 ldi r22, 0x10 ; 16 + 1cc: 71 e0 ldi r23, 0x01 ; 1 + 1ce: 81 e7 ldi r24, 0x71 ; 113 + 1d0: 91 e0 ldi r25, 0x01 ; 1 + 1d2: 0e 94 a5 00 call 0x14a ; 0x14a <_ZN4UartILm9600EE7printlnEPKc> + 1d6: 9f e7 ldi r25, 0x7F ; 127 + 1d8: aa e1 ldi r26, 0x1A ; 26 + 1da: b6 e0 ldi r27, 0x06 ; 6 + 1dc: 91 50 subi r25, 0x01 ; 1 + 1de: a0 40 sbci r26, 0x00 ; 0 + 1e0: b0 40 sbci r27, 0x00 ; 0 + 1e2: e1 f7 brne .-8 ; 0x1dc + 1e4: 00 c0 rjmp .+0 ; 0x1e6 + 1e6: 00 00 nop + _delay_ms(100); + stripe.setcolor(stripe.BLUE); + 1e8: 61 e0 ldi r22, 0x01 ; 1 + 1ea: 80 e7 ldi r24, 0x70 ; 112 + 1ec: 91 e0 ldi r25, 0x01 ; 1 + 1ee: 0e 94 8e 00 call 0x11c ; 0x11c <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> + Serial.println("Blau!"); + 1f2: 66 e1 ldi r22, 0x16 ; 22 + 1f4: 71 e0 ldi r23, 0x01 ; 1 + 1f6: 81 e7 ldi r24, 0x71 ; 113 + 1f8: 91 e0 ldi r25, 0x01 ; 1 + 1fa: 0e 94 a5 00 call 0x14a ; 0x14a <_ZN4UartILm9600EE7printlnEPKc> + 1fe: 2f e7 ldi r18, 0x7F ; 127 + 200: 3a e1 ldi r19, 0x1A ; 26 + 202: 86 e0 ldi r24, 0x06 ; 6 + 204: 21 50 subi r18, 0x01 ; 1 + 206: 30 40 sbci r19, 0x00 ; 0 + 208: 80 40 sbci r24, 0x00 ; 0 + 20a: e1 f7 brne .-8 ; 0x204 + 20c: 00 c0 rjmp .+0 ; 0x20e + 20e: 00 00 nop + _delay_ms(100); + stripe.setcolor(stripe.WHITE); + 210: 67 e0 ldi r22, 0x07 ; 7 + 212: 80 e7 ldi r24, 0x70 ; 112 + 214: 91 e0 ldi r25, 0x01 ; 1 + 216: 0e 94 8e 00 call 0x11c ; 0x11c <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> + Serial.println("Weiß, alles Initialisert! Habe Fertig und damit ab zum Normalbetrieb!"); + 21a: 6c e1 ldi r22, 0x1C ; 28 + 21c: 71 e0 ldi r23, 0x01 ; 1 + 21e: 81 e7 ldi r24, 0x71 ; 113 + 220: 91 e0 ldi r25, 0x01 ; 1 + 222: 0e 94 a5 00 call 0x14a ; 0x14a <_ZN4UartILm9600EE7printlnEPKc> + 226: 9f e7 ldi r25, 0x7F ; 127 + 228: aa e1 ldi r26, 0x1A ; 26 + 22a: b6 e0 ldi r27, 0x06 ; 6 + 22c: 91 50 subi r25, 0x01 ; 1 + 22e: a0 40 sbci r26, 0x00 ; 0 + 230: b0 40 sbci r27, 0x00 ; 0 + 232: e1 f7 brne .-8 ; 0x22c + 234: 00 c0 rjmp .+0 ; 0x236 + 236: 00 00 nop +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 238: 29 9a sbi 0x05, 1 ; 5 + _delay_ms(100); + led.green(1); + stripe.setcolor(stripe.BLACK); + 23a: 60 e0 ldi r22, 0x00 ; 0 + 23c: 80 e7 ldi r24, 0x70 ; 112 + 23e: 91 e0 ldi r25, 0x01 ; 1 + 240: 0e 94 8e 00 call 0x11c ; 0x11c <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> + } + led.red(0); + EIFR |= (1<_code; + 244: cd e6 ldi r28, 0x6D ; 109 + 246: d1 e0 ldi r29, 0x01 ; 1 + this->_code = 255; + 248: 66 24 eor r6, r6 + 24a: 6a 94 dec r6 + 24c: 76 2c mov r7, r6 + Stripe() { + this->init(); + } + void color(uint8_t r, uint8_t g, uint8_t b) { + OCR0B=r; //ROT + OCR2B=g; //GRÜN + 24e: 0f 2e mov r0, r31 + 250: f4 eb ldi r31, 0xB4 ; 180 + 252: ef 2e mov r14, r31 + 254: f1 2c mov r15, r1 + 256: f0 2d mov r31, r0 + 258: 68 94 set + 25a: 22 24 eor r2, r2 + 25c: 27 f8 bld r2, 7 + OCR2A=b; //BLAU + 25e: 03 eb ldi r16, 0xB3 ; 179 + 260: 10 e0 ldi r17, 0x00 ; 0 + UCSR0A= (0<init(); + } + void color(uint8_t r, uint8_t g, uint8_t b) { + OCR0B=r; //ROT + 27a: 0f 2e mov r0, r31 + 27c: f0 ec ldi r31, 0xC0 ; 192 + 27e: 3f 2e mov r3, r31 + 280: f0 2d mov r31, r0 + void timerOff() { + // OC0B output: Disconnected + // OC2A output: Disconnected + // OC2B output: Disconnected + TCCR0A &= ~(1<_code; + 28c: 88 81 ld r24, Y + this->_code = 255; + 28e: 78 82 st Y, r7 + while(1) + { + uint8_t c = ir.getCode(); + switch(c) { + 290: 8c 30 cpi r24, 0x0C ; 12 + 292: 09 f4 brne .+2 ; 0x296 + 294: cf c0 rjmp .+414 ; 0x434 + 296: 38 f5 brcc .+78 ; 0x2e6 + 298: 85 30 cpi r24, 0x05 ; 5 + 29a: 09 f4 brne .+2 ; 0x29e + 29c: a4 c0 rjmp .+328 ; 0x3e6 + 29e: 90 f4 brcc .+36 ; 0x2c4 + 2a0: 82 30 cpi r24, 0x02 ; 2 + 2a2: 09 f4 brne .+2 ; 0x2a6 + 2a4: 84 c0 rjmp .+264 ; 0x3ae + 2a6: 38 f4 brcc .+14 ; 0x2b6 + 2a8: 88 23 and r24, r24 + 2aa: 09 f4 brne .+2 ; 0x2ae + 2ac: 46 c0 rjmp .+140 ; 0x33a + 2ae: 81 30 cpi r24, 0x01 ; 1 + 2b0: 09 f0 breq .+2 ; 0x2b4 + 2b2: f6 c0 rjmp .+492 ; 0x4a0 + 2b4: 5f c0 rjmp .+190 ; 0x374 + 2b6: 83 30 cpi r24, 0x03 ; 3 + 2b8: 09 f4 brne .+2 ; 0x2bc + 2ba: 87 c0 rjmp .+270 ; 0x3ca + 2bc: 84 30 cpi r24, 0x04 ; 4 + 2be: 09 f0 breq .+2 ; 0x2c2 + 2c0: ef c0 rjmp .+478 ; 0x4a0 + 2c2: 8b c0 rjmp .+278 ; 0x3da + 2c4: 88 30 cpi r24, 0x08 ; 8 + 2c6: 09 f4 brne .+2 ; 0x2ca + 2c8: a0 c0 rjmp .+320 ; 0x40a + 2ca: 38 f4 brcc .+14 ; 0x2da + 2cc: 86 30 cpi r24, 0x06 ; 6 + 2ce: 09 f4 brne .+2 ; 0x2d2 + 2d0: 90 c0 rjmp .+288 ; 0x3f2 + 2d2: 87 30 cpi r24, 0x07 ; 7 + 2d4: 09 f0 breq .+2 ; 0x2d8 + 2d6: e4 c0 rjmp .+456 ; 0x4a0 + 2d8: 92 c0 rjmp .+292 ; 0x3fe + 2da: 8a 30 cpi r24, 0x0A ; 10 + 2dc: 09 f4 brne .+2 ; 0x2e0 + 2de: a3 c0 rjmp .+326 ; 0x426 + 2e0: 08 f0 brcs .+2 ; 0x2e4 + 2e2: 75 c1 rjmp .+746 ; 0x5ce <__stack+0xcf> + 2e4: 99 c0 rjmp .+306 ; 0x418 + 2e6: 82 31 cpi r24, 0x12 ; 18 + 2e8: 09 f4 brne .+2 ; 0x2ec + 2ea: c2 c0 rjmp .+388 ; 0x470 + 2ec: 90 f4 brcc .+36 ; 0x312 + 2ee: 8f 30 cpi r24, 0x0F ; 15 + 2f0: 09 f4 brne .+2 ; 0x2f4 + 2f2: 6d c1 rjmp .+730 ; 0x5ce <__stack+0xcf> + 2f4: 38 f4 brcc .+14 ; 0x304 + 2f6: 8d 30 cpi r24, 0x0D ; 13 + 2f8: 09 f4 brne .+2 ; 0x2fc + 2fa: a2 c0 rjmp .+324 ; 0x440 + 2fc: 8e 30 cpi r24, 0x0E ; 14 + 2fe: 09 f0 breq .+2 ; 0x302 + 300: cf c0 rjmp .+414 ; 0x4a0 + 302: a4 c0 rjmp .+328 ; 0x44c + 304: 80 31 cpi r24, 0x10 ; 16 + 306: 09 f4 brne .+2 ; 0x30a + 308: a7 c0 rjmp .+334 ; 0x458 + 30a: 81 31 cpi r24, 0x11 ; 17 + 30c: 09 f0 breq .+2 ; 0x310 + 30e: c8 c0 rjmp .+400 ; 0x4a0 + 310: a9 c0 rjmp .+338 ; 0x464 + 312: 85 31 cpi r24, 0x15 ; 21 + 314: 09 f4 brne .+2 ; 0x318 + 316: b8 c0 rjmp .+368 ; 0x488 + 318: 38 f4 brcc .+14 ; 0x328 + 31a: 83 31 cpi r24, 0x13 ; 19 + 31c: 09 f4 brne .+2 ; 0x320 + 31e: 57 c1 rjmp .+686 ; 0x5ce <__stack+0xcf> + 320: 84 31 cpi r24, 0x14 ; 20 + 322: 09 f0 breq .+2 ; 0x326 + 324: bd c0 rjmp .+378 ; 0x4a0 + 326: aa c0 rjmp .+340 ; 0x47c + 328: 87 31 cpi r24, 0x17 ; 23 + 32a: 09 f4 brne .+2 ; 0x32e + 32c: 50 c1 rjmp .+672 ; 0x5ce <__stack+0xcf> + 32e: 08 f4 brcc .+2 ; 0x332 + 330: b1 c0 rjmp .+354 ; 0x494 + 332: 8f 3f cpi r24, 0xFF ; 255 + 334: 09 f0 breq .+2 ; 0x338 + 336: b4 c0 rjmp .+360 ; 0x4a0 + 338: 4a c1 rjmp .+660 ; 0x5ce <__stack+0xcf> + } else { + OCR2A = 0; + } + } + void higher() { + if(OCR0B <= 250) { + 33a: 88 b5 in r24, 0x28 ; 40 + 33c: 8b 3f cpi r24, 0xFB ; 251 + 33e: 20 f4 brcc .+8 ; 0x348 + OCR0B = OCR0B + 5; + 340: 88 b5 in r24, 0x28 ; 40 + 342: 8b 5f subi r24, 0xFB ; 251 + 344: 88 bd out 0x28, r24 ; 40 + 346: 01 c0 rjmp .+2 ; 0x34a + } else { + OCR0B = 0; + 348: 18 bc out 0x28, r1 ; 40 + } + if(OCR2B <= 250) { + 34a: d7 01 movw r26, r14 + 34c: 8c 91 ld r24, X + 34e: 8b 3f cpi r24, 0xFB ; 251 + 350: 20 f4 brcc .+8 ; 0x35a + OCR2B = OCR2B + 5; + 352: 8c 91 ld r24, X + 354: 8b 5f subi r24, 0xFB ; 251 + 356: 8c 93 st X, r24 + 358: 02 c0 rjmp .+4 ; 0x35e + } else { + OCR2B = 0; + 35a: d7 01 movw r26, r14 + 35c: 1c 92 st X, r1 + } + if(OCR2A <= 250) { + 35e: d8 01 movw r26, r16 + 360: 8c 91 ld r24, X + 362: 8b 3f cpi r24, 0xFB ; 251 + 364: 20 f4 brcc .+8 ; 0x36e + OCR2A = OCR2A + 5; + 366: 8c 91 ld r24, X + 368: 8b 5f subi r24, 0xFB ; 251 + 36a: 8c 93 st X, r24 + 36c: 30 c1 rjmp .+608 ; 0x5ce <__stack+0xcf> + } else { + OCR2A = 0; + 36e: d8 01 movw r26, r16 + 370: 1c 92 st X, r1 + 372: 2d c1 rjmp .+602 ; 0x5ce <__stack+0xcf> + } + void on() { + this->timerOn(); + } + void lower() { + if(OCR0B >= 5) { + 374: 88 b5 in r24, 0x28 ; 40 + 376: 85 30 cpi r24, 0x05 ; 5 + 378: 20 f0 brcs .+8 ; 0x382 + OCR0B = OCR0B - 5; + 37a: 88 b5 in r24, 0x28 ; 40 + 37c: 85 50 subi r24, 0x05 ; 5 + 37e: 88 bd out 0x28, r24 ; 40 + 380: 01 c0 rjmp .+2 ; 0x384 + } else { + OCR0B = 0; + 382: 18 bc out 0x28, r1 ; 40 + } + if(OCR2B >= 5) { + 384: d7 01 movw r26, r14 + 386: 8c 91 ld r24, X + 388: 85 30 cpi r24, 0x05 ; 5 + 38a: 20 f0 brcs .+8 ; 0x394 + OCR2B = OCR2B - 5; + 38c: 8c 91 ld r24, X + 38e: 85 50 subi r24, 0x05 ; 5 + 390: 8c 93 st X, r24 + 392: 02 c0 rjmp .+4 ; 0x398 + } else { + OCR2B = 0; + 394: d7 01 movw r26, r14 + 396: 1c 92 st X, r1 + } + if(OCR2A >= 5) { + 398: d8 01 movw r26, r16 + 39a: 8c 91 ld r24, X + 39c: 85 30 cpi r24, 0x05 ; 5 + 39e: 20 f0 brcs .+8 ; 0x3a8 + OCR2A = OCR2A - 5; + 3a0: 8c 91 ld r24, X + 3a2: 85 50 subi r24, 0x05 ; 5 + 3a4: 8c 93 st X, r24 + 3a6: 13 c1 rjmp .+550 ; 0x5ce <__stack+0xcf> + } else { + OCR2A = 0; + 3a8: d8 01 movw r26, r16 + 3aa: 1c 92 st X, r1 + 3ac: 10 c1 rjmp .+544 ; 0x5ce <__stack+0xcf> + } + void timerOff() { + // OC0B output: Disconnected + // OC2A output: Disconnected + // OC2B output: Disconnected + TCCR0A &= ~(1< + } + void timerOn() { + // OC0B output: Non-Inverted PWM + // OC2A output: Non-Inverted PWM + // OC2B output: Non-Inverted PWM + TCCR0A |= (1< + OCR0B=r; //ROT + OCR2B=g; //GRÜN + OCR2A=b; //BLAU + } + void setcolor(uint8_t mask) { + (mask & (1<<0)) ? OCR2A=0xFF : OCR2A=0x00; + 3da: d8 01 movw r26, r16 + 3dc: 1c 92 st X, r1 + (mask & (1<<1)) ? OCR2B=0xFF : OCR2B=0x00; + 3de: d7 01 movw r26, r14 + 3e0: 1c 92 st X, r1 + (mask & (1<<2)) ? OCR0B=0xFF : OCR0B=0x00; + 3e2: 68 bc out 0x28, r6 ; 40 + 3e4: f4 c0 rjmp .+488 ; 0x5ce <__stack+0xcf> + OCR0B=r; //ROT + OCR2B=g; //GRÜN + OCR2A=b; //BLAU + } + void setcolor(uint8_t mask) { + (mask & (1<<0)) ? OCR2A=0xFF : OCR2A=0x00; + 3e6: d8 01 movw r26, r16 + 3e8: 1c 92 st X, r1 + (mask & (1<<1)) ? OCR2B=0xFF : OCR2B=0x00; + 3ea: d7 01 movw r26, r14 + 3ec: 6c 92 st X, r6 + (mask & (1<<2)) ? OCR0B=0xFF : OCR0B=0x00; + 3ee: 18 bc out 0x28, r1 ; 40 + 3f0: ee c0 rjmp .+476 ; 0x5ce <__stack+0xcf> + OCR0B=r; //ROT + OCR2B=g; //GRÜN + OCR2A=b; //BLAU + } + void setcolor(uint8_t mask) { + (mask & (1<<0)) ? OCR2A=0xFF : OCR2A=0x00; + 3f2: d8 01 movw r26, r16 + 3f4: 6c 92 st X, r6 + (mask & (1<<1)) ? OCR2B=0xFF : OCR2B=0x00; + 3f6: d7 01 movw r26, r14 + 3f8: 1c 92 st X, r1 + (mask & (1<<2)) ? OCR0B=0xFF : OCR0B=0x00; + 3fa: 18 bc out 0x28, r1 ; 40 + 3fc: e8 c0 rjmp .+464 ; 0x5ce <__stack+0xcf> + OCR0B=r; //ROT + OCR2B=g; //GRÜN + OCR2A=b; //BLAU + } + void setcolor(uint8_t mask) { + (mask & (1<<0)) ? OCR2A=0xFF : OCR2A=0x00; + 3fe: d8 01 movw r26, r16 + 400: 6c 92 st X, r6 + (mask & (1<<1)) ? OCR2B=0xFF : OCR2B=0x00; + 402: d7 01 movw r26, r14 + 404: 6c 92 st X, r6 + (mask & (1<<2)) ? OCR0B=0xFF : OCR0B=0x00; + 406: 68 bc out 0x28, r6 ; 40 + 408: e2 c0 rjmp .+452 ; 0x5ce <__stack+0xcf> + public: + Stripe() { + this->init(); + } + void color(uint8_t r, uint8_t g, uint8_t b) { + OCR0B=r; //ROT + 40a: 68 bc out 0x28, r6 ; 40 + OCR2B=g; //GRÜN + 40c: 20 e4 ldi r18, 0x40 ; 64 + 40e: d7 01 movw r26, r14 + 410: 2c 93 st X, r18 + OCR2A=b; //BLAU + 412: d8 01 movw r26, r16 + 414: 1c 92 st X, r1 + 416: db c0 rjmp .+438 ; 0x5ce <__stack+0xcf> + public: + Stripe() { + this->init(); + } + void color(uint8_t r, uint8_t g, uint8_t b) { + OCR0B=r; //ROT + 418: 18 bc out 0x28, r1 ; 40 + OCR2B=g; //GRÜN + 41a: d7 01 movw r26, r14 + 41c: 6c 92 st X, r6 + OCR2A=b; //BLAU + 41e: 20 e4 ldi r18, 0x40 ; 64 + 420: d8 01 movw r26, r16 + 422: 2c 93 st X, r18 + 424: d4 c0 rjmp .+424 ; 0x5ce <__stack+0xcf> + public: + Stripe() { + this->init(); + } + void color(uint8_t r, uint8_t g, uint8_t b) { + OCR0B=r; //ROT + 426: 30 e4 ldi r19, 0x40 ; 64 + 428: 38 bd out 0x28, r19 ; 40 + OCR2B=g; //GRÜN + 42a: d7 01 movw r26, r14 + 42c: 1c 92 st X, r1 + OCR2A=b; //BLAU + 42e: d8 01 movw r26, r16 + 430: 6c 92 st X, r6 + 432: cd c0 rjmp .+410 ; 0x5ce <__stack+0xcf> + public: + Stripe() { + this->init(); + } + void color(uint8_t r, uint8_t g, uint8_t b) { + OCR0B=r; //ROT + 434: 68 bc out 0x28, r6 ; 40 + OCR2B=g; //GRÜN + 436: d7 01 movw r26, r14 + 438: 2c 92 st X, r2 + OCR2A=b; //BLAU + 43a: d8 01 movw r26, r16 + 43c: 1c 92 st X, r1 + 43e: c7 c0 rjmp .+398 ; 0x5ce <__stack+0xcf> + public: + Stripe() { + this->init(); + } + void color(uint8_t r, uint8_t g, uint8_t b) { + OCR0B=r; //ROT + 440: 18 bc out 0x28, r1 ; 40 + OCR2B=g; //GRÜN + 442: d7 01 movw r26, r14 + 444: 6c 92 st X, r6 + OCR2A=b; //BLAU + 446: d8 01 movw r26, r16 + 448: 2c 92 st X, r2 + 44a: c1 c0 rjmp .+386 ; 0x5ce <__stack+0xcf> + public: + Stripe() { + this->init(); + } + void color(uint8_t r, uint8_t g, uint8_t b) { + OCR0B=r; //ROT + 44c: 28 bc out 0x28, r2 ; 40 + OCR2B=g; //GRÜN + 44e: d7 01 movw r26, r14 + 450: 1c 92 st X, r1 + OCR2A=b; //BLAU + 452: d8 01 movw r26, r16 + 454: 6c 92 st X, r6 + 456: bb c0 rjmp .+374 ; 0x5ce <__stack+0xcf> + public: + Stripe() { + this->init(); + } + void color(uint8_t r, uint8_t g, uint8_t b) { + OCR0B=r; //ROT + 458: 68 bc out 0x28, r6 ; 40 + OCR2B=g; //GRÜN + 45a: d7 01 movw r26, r14 + 45c: 3c 92 st X, r3 + OCR2A=b; //BLAU + 45e: d8 01 movw r26, r16 + 460: 1c 92 st X, r1 + 462: b5 c0 rjmp .+362 ; 0x5ce <__stack+0xcf> + public: + Stripe() { + this->init(); + } + void color(uint8_t r, uint8_t g, uint8_t b) { + OCR0B=r; //ROT + 464: 18 bc out 0x28, r1 ; 40 + OCR2B=g; //GRÜN + 466: d7 01 movw r26, r14 + 468: 6c 92 st X, r6 + OCR2A=b; //BLAU + 46a: d8 01 movw r26, r16 + 46c: 3c 92 st X, r3 + 46e: af c0 rjmp .+350 ; 0x5ce <__stack+0xcf> + public: + Stripe() { + this->init(); + } + void color(uint8_t r, uint8_t g, uint8_t b) { + OCR0B=r; //ROT + 470: 38 bc out 0x28, r3 ; 40 + OCR2B=g; //GRÜN + 472: d7 01 movw r26, r14 + 474: 1c 92 st X, r1 + OCR2A=b; //BLAU + 476: d8 01 movw r26, r16 + 478: 6c 92 st X, r6 + 47a: a9 c0 rjmp .+338 ; 0x5ce <__stack+0xcf> + public: + Stripe() { + this->init(); + } + void color(uint8_t r, uint8_t g, uint8_t b) { + OCR0B=r; //ROT + 47c: 68 bc out 0x28, r6 ; 40 + OCR2B=g; //GRÜN + 47e: d7 01 movw r26, r14 + 480: 6c 92 st X, r6 + OCR2A=b; //BLAU + 482: d8 01 movw r26, r16 + 484: 1c 92 st X, r1 + 486: a3 c0 rjmp .+326 ; 0x5ce <__stack+0xcf> + public: + Stripe() { + this->init(); + } + void color(uint8_t r, uint8_t g, uint8_t b) { + OCR0B=r; //ROT + 488: 18 bc out 0x28, r1 ; 40 + OCR2B=g; //GRÜN + 48a: d7 01 movw r26, r14 + 48c: 6c 92 st X, r6 + OCR2A=b; //BLAU + 48e: d8 01 movw r26, r16 + 490: 6c 92 st X, r6 + 492: 9d c0 rjmp .+314 ; 0x5ce <__stack+0xcf> + public: + Stripe() { + this->init(); + } + void color(uint8_t r, uint8_t g, uint8_t b) { + OCR0B=r; //ROT + 494: 68 bc out 0x28, r6 ; 40 + OCR2B=g; //GRÜN + 496: d7 01 movw r26, r14 + 498: 1c 92 st X, r1 + OCR2A=b; //BLAU + 49a: d8 01 movw r26, r16 + 49c: 6c 92 st X, r6 + 49e: 97 c0 rjmp .+302 ; 0x5ce <__stack+0xcf> + case 19: break; //Button FADE + case 20: stripe.color(0xFF,0xFF,0x00); break; //Color Red 100 % + Green 100 % + case 21: stripe.color(0x00,0xFF,0xFF); break; //Color Green 100 % + Blue 100 % + case 22: stripe.color(0xFF,0x00,0xFF); break; //Color Blue 100 % + Red 100 % + case 23: break; //Button SMOOTH + default: Serial.printDec(c); Serial.println(" Pressed!"); break; //Code den ich nicht kenne + 4a0: c8 2e mov r12, r24 + 4a2: d1 2c mov r13, r1 + UCSR0A= (0< + UDR0 = c; + 4aa: 80 e3 ldi r24, 0x30 ; 48 + 4ac: da 01 movw r26, r20 + 4ae: 8c 93 st X, r24 + text++; + } + } + void printDec(uint16_t wert) { + print((wert/10000)+'0'); + print(((wert/1000)%10)+'0'); + 4b0: 60 e0 ldi r22, 0x00 ; 0 + 4b2: 70 e0 ldi r23, 0x00 ; 0 + 4b4: cb 01 movw r24, r22 + 4b6: 96 95 lsr r25 + 4b8: 87 95 ror r24 + 4ba: 96 95 lsr r25 + 4bc: 87 95 ror r24 + 4be: 96 95 lsr r25 + 4c0: 87 95 ror r24 + 4c2: 9c 01 movw r18, r24 + 4c4: 22 0f add r18, r18 + 4c6: 33 1f adc r19, r19 + 4c8: 88 0f add r24, r24 + 4ca: 99 1f adc r25, r25 + 4cc: 88 0f add r24, r24 + 4ce: 99 1f adc r25, r25 + 4d0: 88 0f add r24, r24 + 4d2: 99 1f adc r25, r25 + 4d4: 82 0f add r24, r18 + 4d6: 93 1f adc r25, r19 + 4d8: 68 1b sub r22, r24 + 4da: 79 0b sbc r23, r25 + 4dc: 60 5d subi r22, 0xD0 ; 208 + UCSR0A= (0< + UDR0 = c; + 4e4: da 01 movw r26, r20 + 4e6: 6c 93 st X, r22 + } + } + void printDec(uint16_t wert) { + print((wert/10000)+'0'); + print(((wert/1000)%10)+'0'); + print(((wert/100)%10)+'0'); + 4e8: 96 01 movw r18, r12 + 4ea: 36 95 lsr r19 + 4ec: 27 95 ror r18 + 4ee: 36 95 lsr r19 + 4f0: 27 95 ror r18 + 4f2: ab e7 ldi r26, 0x7B ; 123 + 4f4: b4 e1 ldi r27, 0x14 ; 20 + 4f6: 0e 94 27 04 call 0x84e ; 0x84e <__umulhisi3> + 4fa: 96 95 lsr r25 + 4fc: 87 95 ror r24 + 4fe: 80 5d subi r24, 0xD0 ; 208 + UCSR0A= (0< + UDR0 = c; + 506: da 01 movw r26, r20 + 508: 8c 93 st X, r24 + } + void printDec(uint16_t wert) { + print((wert/10000)+'0'); + print(((wert/1000)%10)+'0'); + print(((wert/100)%10)+'0'); + print(((wert/10)%10)+'0'); + 50a: 96 01 movw r18, r12 + 50c: ad ec ldi r26, 0xCD ; 205 + 50e: bc ec ldi r27, 0xCC ; 204 + 510: 0e 94 27 04 call 0x84e ; 0x84e <__umulhisi3> + 514: 5c 01 movw r10, r24 + 516: b6 94 lsr r11 + 518: a7 94 ror r10 + 51a: b6 94 lsr r11 + 51c: a7 94 ror r10 + 51e: b6 94 lsr r11 + 520: a7 94 ror r10 + 522: 95 01 movw r18, r10 + 524: 0e 94 27 04 call 0x84e ; 0x84e <__umulhisi3> + 528: 96 95 lsr r25 + 52a: 87 95 ror r24 + 52c: 96 95 lsr r25 + 52e: 87 95 ror r24 + 530: 96 95 lsr r25 + 532: 87 95 ror r24 + 534: 9c 01 movw r18, r24 + 536: 22 0f add r18, r18 + 538: 33 1f adc r19, r19 + 53a: 88 0f add r24, r24 + 53c: 99 1f adc r25, r25 + 53e: 88 0f add r24, r24 + 540: 99 1f adc r25, r25 + 542: 88 0f add r24, r24 + 544: 99 1f adc r25, r25 + 546: 82 0f add r24, r18 + 548: 93 1f adc r25, r19 + 54a: 95 01 movw r18, r10 + 54c: 28 1b sub r18, r24 + 54e: 39 0b sbc r19, r25 + 550: 92 2f mov r25, r18 + 552: 90 5d subi r25, 0xD0 ; 208 + UCSR0A= (0< + UDR0 = c; + 55a: da 01 movw r26, r20 + 55c: 9c 93 st X, r25 + 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'); + 55e: 96 01 movw r18, r12 + 560: ad ec ldi r26, 0xCD ; 205 + 562: bc ec ldi r27, 0xCC ; 204 + 564: 0e 94 27 04 call 0x84e ; 0x84e <__umulhisi3> + 568: 96 95 lsr r25 + 56a: 87 95 ror r24 + 56c: 96 95 lsr r25 + 56e: 87 95 ror r24 + 570: 96 95 lsr r25 + 572: 87 95 ror r24 + 574: 9c 01 movw r18, r24 + 576: 22 0f add r18, r18 + 578: 33 1f adc r19, r19 + 57a: 88 0f add r24, r24 + 57c: 99 1f adc r25, r25 + 57e: 88 0f add r24, r24 + 580: 99 1f adc r25, r25 + 582: 88 0f add r24, r24 + 584: 99 1f adc r25, r25 + 586: 82 0f add r24, r18 + 588: 93 1f adc r25, r19 + 58a: 96 01 movw r18, r12 + 58c: 28 1b sub r18, r24 + 58e: 39 0b sbc r19, r25 + 590: 92 2f mov r25, r18 + 592: 90 5d subi r25, 0xD0 ; 208 + UCSR0A= (0< + UDR0 = c; + 59a: da 01 movw r26, r20 + 59c: 9c 93 st X, r25 + 59e: a3 e6 ldi r26, 0x63 ; 99 + 5a0: b1 e0 ldi r27, 0x01 ; 1 + sei(); + init(); + println("Uart done!"); + } + void print(const char *text) { + while (*text) + 5a2: 90 e2 ldi r25, 0x20 ; 32 + 5a4: 9d 01 movw r18, r26 + UCSR0A= (0< + UDR0 = c; + 5ac: da 01 movw r26, r20 + 5ae: 9c 93 st X, r25 + sei(); + init(); + println("Uart done!"); + } + void print(const char *text) { + while (*text) + 5b0: d9 01 movw r26, r18 + 5b2: 9d 91 ld r25, X+ + 5b4: 9d 01 movw r18, r26 + 5b6: 91 11 cpse r25, r1 + 5b8: f6 cf rjmp .-20 ; 0x5a6 <__stack+0xa7> + UCSR0A= (0< + UDR0 = c; + 5c0: da 01 movw r26, r20 + 5c2: 4c 92 st X, r4 + UCSR0A= (0< + UDR0 = c; + 5ca: da 01 movw r26, r20 + 5cc: 5c 92 st X, r5 + 5ce: 87 e8 ldi r24, 0x87 ; 135 + 5d0: 93 e1 ldi r25, 0x13 ; 19 + 5d2: 01 97 sbiw r24, 0x01 ; 1 + 5d4: f1 f7 brne .-4 ; 0x5d2 <__stack+0xd3> + 5d6: 00 c0 rjmp .+0 ; 0x5d8 <__stack+0xd9> + 5d8: 00 00 nop +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 5da: 29 98 cbi 0x05, 1 ; 5 + 5dc: 9f ed ldi r25, 0xDF ; 223 + 5de: aa e0 ldi r26, 0x0A ; 10 + 5e0: b6 e0 ldi r27, 0x06 ; 6 + 5e2: 91 50 subi r25, 0x01 ; 1 + 5e4: a0 40 sbci r26, 0x00 ; 0 + 5e6: b0 40 sbci r27, 0x00 ; 0 + 5e8: e1 f7 brne .-8 ; 0x5e2 <__stack+0xe3> + 5ea: 00 c0 rjmp .+0 ; 0x5ec <__stack+0xed> + 5ec: 00 00 nop + 5ee: 29 9a sbi 0x05, 1 ; 5 + 5f0: 4d ce rjmp .-870 ; 0x28c + +000005f2 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv>: + 5f2: 55 9a sbi 0x0a, 5 ; 10 + 5f4: 53 9a sbi 0x0a, 3 ; 10 + + 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; } + 5f6: 23 9a sbi 0x04, 3 ; 4 + // Mode: Phase correct PWM top=0xFF + // OC0A output: Disconnected + // Timer Period: 0,06375 ms + // Output Pulse(s): + // OC0B Period: 0,06375 ms Width: 0 us + TCCR0A=(0<init(); + } + void color(uint8_t r, uint8_t g, uint8_t b) { + OCR0B=r; //ROT + 62a: 18 bc out 0x28, r1 ; 40 + OCR2B=g; //GRÜN + 62c: 10 92 b4 00 sts 0x00B4, r1 + OCR2A=b; //BLAU + 630: 10 92 b3 00 sts 0x00B3, r1 + 634: 08 95 ret + +00000636 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv>: + // Interrupt on any change on pins PCINT16-23: Off + EICRA=(0< + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 644: ef e9 ldi r30, 0x9F ; 159 + 646: ff e0 ldi r31, 0x0F ; 15 + 648: 31 97 sbiw r30, 0x01 ; 1 + 64a: f1 f7 brne .-4 ; 0x648 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x12> + 64c: 00 c0 rjmp .+0 ; 0x64e <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x18> + 64e: 00 00 nop + uint8_t read8bit() { + uint8_t r = 0; + for (uint8_t i=0;i<8;i++) { + intpin::wait_is_set(); + _delay_us(800); + if(intpin::read()) { + 650: 4a 9b sbis 0x09, 2 ; 9 + 652: 08 c0 rjmp .+16 ; 0x664 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x2e> + r |= (1< + 65a: 44 0f add r20, r20 + 65c: 55 1f adc r21, r21 + 65e: 0a 94 dec r0 + 660: e2 f7 brpl .-8 ; 0x65a <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x24> + 662: 84 2b or r24, r20 + } + for(uint8_t j=0;j<50;j++) { + if(!intpin::value()) { + 664: 4a 99 sbic 0x09, 2 ; 9 + 666: 0f c0 rjmp .+30 ; 0x686 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x50> + 668: 08 c0 rjmp .+16 ; 0x67a <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x44> + 66a: 4a 9b sbis 0x09, 2 ; 9 + 66c: 06 c0 rjmp .+12 ; 0x67a <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x44> + 66e: f5 e8 ldi r31, 0x85 ; 133 + 670: fa 95 dec r31 + 672: f1 f7 brne .-4 ; 0x670 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x3a> + 674: 00 00 nop + 676: 91 50 subi r25, 0x01 ; 1 + intpin::wait_is_set(); + _delay_us(800); + if(intpin::read()) { + r |= (1< + 67a: 2f 5f subi r18, 0xFF ; 255 + 67c: 3f 4f sbci r19, 0xFF ; 255 + EIMSK=(0< + 684: 08 95 ret + 686: 45 e8 ldi r20, 0x85 ; 133 + 688: 4a 95 dec r20 + 68a: f1 f7 brne .-4 ; 0x688 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x52> + 68c: 00 00 nop + 68e: 91 e3 ldi r25, 0x31 ; 49 + 690: ec cf rjmp .-40 ; 0x66a <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x34> + +00000692 <__vector_1>: + _delay_ms(99); + led.green(1); + } +} + +ISR(INT0_vect) { + 692: 1f 92 push r1 + 694: 0f 92 push r0 + 696: 0f b6 in r0, 0x3f ; 63 + 698: 0f 92 push r0 + 69a: 11 24 eor r1, r1 + 69c: 2f 93 push r18 + 69e: 3f 93 push r19 + 6a0: 4f 93 push r20 + 6a2: 5f 93 push r21 + 6a4: 6f 93 push r22 + 6a6: 7f 93 push r23 + 6a8: 8f 93 push r24 + 6aa: 9f 93 push r25 + 6ac: af 93 push r26 + 6ae: bf 93 push r27 + 6b0: cf 93 push r28 + 6b2: ef 93 push r30 + 6b4: ff 93 push r31 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 6b6: 28 9a sbi 0x05, 0 ; 5 + public: + IR() { + this->init(); + } + int read() { + if(intpin::value()) { //Is High, Abbort + 6b8: 4a 99 sbic 0x09, 2 ; 9 + 6ba: 79 c0 rjmp .+242 ; 0x7ae <__vector_1+0x11c> + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 6bc: 8f e1 ldi r24, 0x1F ; 31 + 6be: 9e e4 ldi r25, 0x4E ; 78 + 6c0: 01 97 sbiw r24, 0x01 ; 1 + 6c2: f1 f7 brne .-4 ; 0x6c0 <__vector_1+0x2e> + 6c4: 00 c0 rjmp .+0 ; 0x6c6 <__vector_1+0x34> + 6c6: 00 00 nop + return 254; + } + _delay_ms(4); //Wait 4ms + if(intpin::value()) { //Is High, Abbort + 6c8: 4a 99 sbic 0x09, 2 ; 9 + 6ca: 71 c0 rjmp .+226 ; 0x7ae <__vector_1+0x11c> + 6cc: 4a 9b sbis 0x09, 2 ; 9 + 6ce: fe cf rjmp .-4 ; 0x6cc <__vector_1+0x3a> + static void wait_is_clear() { do {} while ((Port::pin() & (1< + 6d4: 80 e0 ldi r24, 0x00 ; 0 + 6d6: 90 e0 ldi r25, 0x00 ; 0 + 6d8: 60 e0 ldi r22, 0x00 ; 0 + uint8_t r = 0; + for (uint8_t i=0;i<8;i++) { + intpin::wait_is_set(); + _delay_us(800); + if(intpin::read()) { + r |= (1< + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 6e2: ef e9 ldi r30, 0x9F ; 159 + 6e4: ff e0 ldi r31, 0x0F ; 15 + 6e6: 31 97 sbiw r30, 0x01 ; 1 + 6e8: f1 f7 brne .-4 ; 0x6e6 <__vector_1+0x54> + 6ea: 00 c0 rjmp .+0 ; 0x6ec <__vector_1+0x5a> + 6ec: 00 00 nop + uint8_t read8bit() { + uint8_t r = 0; + for (uint8_t i=0;i<8;i++) { + intpin::wait_is_set(); + _delay_us(800); + if(intpin::read()) { + 6ee: 4a 9b sbis 0x09, 2 ; 9 + 6f0: 08 c0 rjmp .+16 ; 0x702 <__vector_1+0x70> + r |= (1< + 6f8: 22 0f add r18, r18 + 6fa: 33 1f adc r19, r19 + 6fc: 0a 94 dec r0 + 6fe: e2 f7 brpl .-8 ; 0x6f8 <__vector_1+0x66> + 700: 62 2b or r22, r18 + } + for(uint8_t j=0;j<50;j++) { + if(!intpin::value()) { + 702: 4a 99 sbic 0x09, 2 ; 9 + 704: 66 c0 rjmp .+204 ; 0x7d2 <__vector_1+0x140> + 706: 08 c0 rjmp .+16 ; 0x718 <__vector_1+0x86> + 708: 4a 9b sbis 0x09, 2 ; 9 + 70a: 06 c0 rjmp .+12 ; 0x718 <__vector_1+0x86> + 70c: f5 e8 ldi r31, 0x85 ; 133 + 70e: fa 95 dec r31 + 710: f1 f7 brne .-4 ; 0x70e <__vector_1+0x7c> + 712: 00 00 nop + 714: 21 50 subi r18, 0x01 ; 1 + intpin::wait_is_set(); + _delay_us(800); + if(intpin::read()) { + r |= (1< + 718: 01 96 adiw r24, 0x01 ; 1 + EIMSK=(0< + } + intpin::wait_is_set(); //Wait for the rest of the init. + intpin::wait_is_clear(); // Init Complete, wait for first Byte + + //Read First Byte must be 0! + if(this->read8bit() != 0) { //Is first Byte not 0 Abbort; + 720: 61 11 cpse r22, r1 + 722: 39 c0 rjmp .+114 ; 0x796 <__vector_1+0x104> + 724: 80 e0 ldi r24, 0x00 ; 0 + 726: 90 e0 ldi r25, 0x00 ; 0 + uint8_t r = 0; + for (uint8_t i=0;i<8;i++) { + intpin::wait_is_set(); + _delay_us(800); + if(intpin::read()) { + r |= (1< + 730: ef e9 ldi r30, 0x9F ; 159 + 732: ff e0 ldi r31, 0x0F ; 15 + 734: 31 97 sbiw r30, 0x01 ; 1 + 736: f1 f7 brne .-4 ; 0x734 <__vector_1+0xa2> + 738: 00 c0 rjmp .+0 ; 0x73a <__vector_1+0xa8> + 73a: 00 00 nop + uint8_t read8bit() { + uint8_t r = 0; + for (uint8_t i=0;i<8;i++) { + intpin::wait_is_set(); + _delay_us(800); + if(intpin::read()) { + 73c: 4a 9b sbis 0x09, 2 ; 9 + 73e: 08 c0 rjmp .+16 ; 0x750 <__vector_1+0xbe> + r |= (1< + 746: 22 0f add r18, r18 + 748: 33 1f adc r19, r19 + 74a: 0a 94 dec r0 + 74c: e2 f7 brpl .-8 ; 0x746 <__vector_1+0xb4> + 74e: 62 2b or r22, r18 + } + for(uint8_t j=0;j<50;j++) { + if(!intpin::value()) { + 750: 4a 99 sbic 0x09, 2 ; 9 + 752: 39 c0 rjmp .+114 ; 0x7c6 <__vector_1+0x134> + 754: 08 c0 rjmp .+16 ; 0x766 <__vector_1+0xd4> + 756: 4a 9b sbis 0x09, 2 ; 9 + 758: 06 c0 rjmp .+12 ; 0x766 <__vector_1+0xd4> + 75a: f5 e8 ldi r31, 0x85 ; 133 + 75c: fa 95 dec r31 + 75e: f1 f7 brne .-4 ; 0x75c <__vector_1+0xca> + 760: 00 00 nop + 762: 21 50 subi r18, 0x01 ; 1 + intpin::wait_is_set(); + _delay_us(800); + if(intpin::read()) { + r |= (1< + 766: 01 96 adiw r24, 0x01 ; 1 + EIMSK=(0< + //Read First Byte must be 0! + if(this->read8bit() != 0) { //Is first Byte not 0 Abbort; + return 255; + } + //Read Second Byte must be 239! + if(this->read8bit() != 239) { + 76e: 6f 3e cpi r22, 0xEF ; 239 + 770: 91 f4 brne .+36 ; 0x796 <__vector_1+0x104> + return 255; + } + //Read Byte 3 and 4 (Data Byte and Checksum Byte! + uint8_t a = this->read8bit(); + 772: 8c e6 ldi r24, 0x6C ; 108 + 774: 91 e0 ldi r25, 0x01 ; 1 + 776: 0e 94 1b 03 call 0x636 ; 0x636 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv> + 77a: c8 2f mov r28, r24 + uint8_t b = this->read8bit(); + 77c: 8c e6 ldi r24, 0x6C ; 108 + 77e: 91 e0 ldi r25, 0x01 ; 1 + 780: 0e 94 1b 03 call 0x636 ; 0x636 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv> + //Make Checksum Byte 3 + 4 must be 255! + if(a+b != 255) { + 784: 28 2f mov r18, r24 + 786: 30 e0 ldi r19, 0x00 ; 0 + 788: 2c 0f add r18, r28 + 78a: 31 1d adc r19, r1 + 78c: 2f 3f cpi r18, 0xFF ; 255 + 78e: 31 05 cpc r19, r1 + 790: 11 f4 brne .+4 ; 0x796 <__vector_1+0x104> + } + //The Interrupt Function + void interrupt() { + led.red(1); + uint8_t code = this->read(); + if(code == 255) { + 792: cf 3f cpi r28, 0xFF ; 255 + 794: 51 f4 brne .+20 ; 0x7aa <__vector_1+0x118> + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 796: 2f e7 ldi r18, 0x7F ; 127 + 798: 34 e8 ldi r19, 0x84 ; 132 + 79a: 8e e1 ldi r24, 0x1E ; 30 + 79c: 21 50 subi r18, 0x01 ; 1 + 79e: 30 40 sbci r19, 0x00 ; 0 + 7a0: 80 40 sbci r24, 0x00 ; 0 + 7a2: e1 f7 brne .-8 ; 0x79c <__vector_1+0x10a> + 7a4: 00 c0 rjmp .+0 ; 0x7a6 <__vector_1+0x114> + 7a6: 00 00 nop + 7a8: 0b c0 rjmp .+22 ; 0x7c0 <__vector_1+0x12e> + _delay_ms(500); + } else if(code == 254) { + 7aa: ce 3f cpi r28, 0xFE ; 254 + 7ac: 39 f4 brne .+14 ; 0x7bc <__vector_1+0x12a> + 7ae: e7 e8 ldi r30, 0x87 ; 135 + 7b0: f3 e1 ldi r31, 0x13 ; 19 + 7b2: 31 97 sbiw r30, 0x01 ; 1 + 7b4: f1 f7 brne .-4 ; 0x7b2 <__vector_1+0x120> + 7b6: 00 c0 rjmp .+0 ; 0x7b8 <__vector_1+0x126> + 7b8: 00 00 nop + 7ba: 02 c0 rjmp .+4 ; 0x7c0 <__vector_1+0x12e> + _delay_ms(1); + } else { + this->_code = code; + 7bc: c0 93 6d 01 sts 0x016D, r28 + 7c0: 28 98 cbi 0x05, 0 ; 5 + } + led.red(0); + EIFR |= (1< + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 7c6: f5 e8 ldi r31, 0x85 ; 133 + 7c8: fa 95 dec r31 + 7ca: f1 f7 brne .-4 ; 0x7c8 <__vector_1+0x136> + 7cc: 00 00 nop + 7ce: 21 e3 ldi r18, 0x31 ; 49 + 7d0: c2 cf rjmp .-124 ; 0x756 <__vector_1+0xc4> + 7d2: 25 e8 ldi r18, 0x85 ; 133 + 7d4: 2a 95 dec r18 + 7d6: f1 f7 brne .-4 ; 0x7d4 <__vector_1+0x142> + 7d8: 00 00 nop + 7da: 21 e3 ldi r18, 0x31 ; 49 + 7dc: 95 cf rjmp .-214 ; 0x708 <__vector_1+0x76> + ir.interrupt(); +} + 7de: ff 91 pop r31 + 7e0: ef 91 pop r30 + 7e2: cf 91 pop r28 + 7e4: bf 91 pop r27 + 7e6: af 91 pop r26 + 7e8: 9f 91 pop r25 + 7ea: 8f 91 pop r24 + 7ec: 7f 91 pop r23 + 7ee: 6f 91 pop r22 + 7f0: 5f 91 pop r21 + 7f2: 4f 91 pop r20 + 7f4: 3f 91 pop r19 + 7f6: 2f 91 pop r18 + 7f8: 0f 90 pop r0 + 7fa: 0f be out 0x3f, r0 ; 63 + 7fc: 0f 90 pop r0 + 7fe: 1f 90 pop r1 + 800: 18 95 reti + +00000802 <_GLOBAL__sub_I_Serial>: + */ + +#include "peripheral.h" +#include + +uartclass Serial; + 802: 81 e7 ldi r24, 0x71 ; 113 + 804: 91 e0 ldi r25, 0x01 ; 1 + 806: 0e 94 5f 00 call 0xbe ; 0xbe <_ZN4UartILm9600EEC1Ev> + +template +class Stripe { + public: + Stripe() { + this->init(); + 80a: 80 e7 ldi r24, 0x70 ; 112 + 80c: 91 e0 ldi r25, 0x01 ; 1 + 80e: 0e 94 f9 02 call 0x5f2 ; 0x5f2 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv> + + 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; } + 812: 20 9a sbi 0x04, 0 ; 4 + 814: 21 9a sbi 0x04, 1 ; 4 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 816: 28 98 cbi 0x05, 0 ; 5 + 818: 29 98 cbi 0x05, 1 ; 5 + 81a: 56 98 cbi 0x0a, 6 ; 10 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 81c: 5e 98 cbi 0x0b, 6 ; 11 + + static uint8_t pin() { return PIND; } + static void pin(uint8_t v) { PIND = v; } + + static uint8_t dir() { return DDRD; } + static void dir(uint8_t v) { DDRD = v; } + 81e: 57 98 cbi 0x0a, 7 ; 10 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 820: 5f 98 cbi 0x0b, 7 ; 11 + // 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<_code = 255; + 83a: 8f ef ldi r24, 0xFF ; 255 + 83c: 80 93 6d 01 sts 0x016D, r24 + // INT0 Mode: Falling 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<: + 84e: a2 9f mul r26, r18 + 850: b0 01 movw r22, r0 + 852: b3 9f mul r27, r19 + 854: c0 01 movw r24, r0 + 856: a3 9f mul r26, r19 + 858: 01 d0 rcall .+2 ; 0x85c <__umulhisi3+0xe> + 85a: b2 9f mul r27, r18 + 85c: 70 0d add r23, r0 + 85e: 81 1d adc r24, r1 + 860: 11 24 eor r1, r1 + 862: 91 1d adc r25, r1 + 864: 08 95 ret + +00000866 <__tablejump2__>: + 866: ee 0f add r30, r30 + 868: ff 1f adc r31, r31 + +0000086a <__tablejump__>: + 86a: 05 90 lpm r0, Z+ + 86c: f4 91 lpm r31, Z + 86e: e0 2d mov r30, r0 + 870: 09 94 ijmp + +00000872 <_exit>: + 872: f8 94 cli + +00000874 <__stop_program>: + 874: ff cf rjmp .-2 ; 0x874 <__stop_program> diff --git a/Door/Debug/Door.map b/Door/Debug/Door.map index 5b4d54e..aa869d9 100644 --- a/Door/Debug/Door.map +++ b/Door/Debug/Door.map @@ -17,11 +17,11 @@ 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 + .group 0x00000000 0x8 Door.o + .group 0x00000000 0x8 Door.o + .group 0x00000000 0x8 Door.o + .group 0x00000000 0x8 Door.o .text 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 @@ -214,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 0x3f4 +.text 0x00000000 0x876 *(.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 @@ -274,7 +274,6 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.text) .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 @@ -301,31 +300,40 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x000000ba __vector_20 0x000000be . = ALIGN (0x2) *(.text.*) - .text._Z8read8bitv - 0x000000be 0x3e Door.o - 0x000000be _Z8read8bitv - .text._Z7recievev - 0x000000fc 0x6c Door.o - 0x000000fc _Z7recievev - .text.main 0x00000168 0x1ac Door.o - 0x00000168 main .text._ZN4UartILm9600EEC2Ev - 0x00000314 0x5e Door.o - 0x00000314 _ZN4UartILm9600EEC1Ev - 0x00000314 _ZN4UartILm9600EEC2Ev + 0x000000be 0x5e Door.o + 0x000000be _ZN4UartILm9600EEC1Ev + 0x000000be _ZN4UartILm9600EEC2Ev + .text._ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh + 0x0000011c 0x2e Door.o + 0x0000011c _ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh + .text._ZN4UartILm9600EE7printlnEPKc + 0x0000014a 0x4c Door.o + 0x0000014a _ZN4UartILm9600EE7printlnEPKc + .text.main 0x00000196 0x45c Door.o + 0x00000196 main + .text._ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv + 0x000005f2 0x44 Door.o + 0x000005f2 _ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv + .text._ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv + 0x00000636 0x5c Door.o + 0x00000636 _ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv + .text.__vector_1 + 0x00000692 0x170 Door.o + 0x00000692 __vector_1 .text._GLOBAL__sub_I_Serial - 0x00000372 0x5a Door.o + 0x00000802 0x4c Door.o .text.libgcc.mul - 0x000003cc 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) - 0x000003cc __umulhisi3 - .text.libgcc 0x000003e4 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) - 0x000003e4 __tablejump2__ - 0x000003e8 __tablejump__ - 0x000003f0 . = ALIGN (0x2) + 0x0000084e 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) + 0x0000084e __umulhisi3 + .text.libgcc 0x00000866 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) + 0x00000866 __tablejump2__ + 0x0000086a __tablejump__ + 0x00000872 . = ALIGN (0x2) *(.fini9) - .fini9 0x000003f0 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) - 0x000003f0 _exit - 0x000003f0 exit + .fini9 0x00000872 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) + 0x00000872 _exit + 0x00000872 exit *(.fini9) *(.fini8) *(.fini8) @@ -344,11 +352,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .fini0 0x000003f0 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 0x00000872 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) - 0x000003f4 _etext = . + 0x00000876 _etext = . -.data 0x00800100 0x76 load address 0x000003f4 +.data 0x00800100 0x6c load address 0x00000876 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 @@ -363,34 +371,33 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.rodata) *(.rodata*) .rodata.str1.1 - 0x00800100 0x76 Door.o + 0x00800100 0x6c Door.o *(.gnu.linkonce.d*) - 0x00800176 . = ALIGN (0x2) - 0x00800176 _edata = . - 0x00800176 PROVIDE (__data_end, .) + 0x0080016c . = ALIGN (0x2) + 0x0080016c _edata = . + 0x0080016c PROVIDE (__data_end, .) -.bss 0x00800176 0x195 - 0x00800176 PROVIDE (__bss_start, .) +.bss 0x0080016c 0x6 + 0x0080016c PROVIDE (__bss_start, .) *(.bss) - .bss 0x00800176 0x195 Door.o - 0x00800176 currentpulse - 0x00800177 pulses - 0x00800307 comp - 0x00800308 led - 0x00800309 stripe - 0x0080030a Serial + .bss 0x0080016c 0x6 Door.o + 0x0080016c ir + 0x0080016e comp + 0x0080016f led + 0x00800170 stripe + 0x00800171 Serial *(.bss*) *(COMMON) - 0x0080030b PROVIDE (__bss_end, .) - 0x000003f4 __data_load_start = LOADADDR (.data) - 0x0000046a __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00800172 PROVIDE (__bss_end, .) + 0x00000876 __data_load_start = LOADADDR (.data) + 0x000008e2 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x0080030b 0x0 - 0x0080030b PROVIDE (__noinit_start, .) +.noinit 0x00800172 0x0 + 0x00800172 PROVIDE (__noinit_start, .) *(.noinit*) - 0x0080030b PROVIDE (__noinit_end, .) - 0x0080030b _end = . - 0x0080030b PROVIDE (__heap_start, .) + 0x00800172 PROVIDE (__noinit_end, .) + 0x00800172 _end = . + 0x00800172 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -448,39 +455,39 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x50 +.debug_aranges 0x00000000 0x58 *(.debug_aranges) .debug_aranges - 0x00000000 0x50 Door.o + 0x00000000 0x58 Door.o .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x289d +.debug_info 0x00000000 0x2bd2 *(.debug_info) - .debug_info 0x00000000 0x289d Door.o + .debug_info 0x00000000 0x2bd2 Door.o *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x474 +.debug_abbrev 0x00000000 0x464 *(.debug_abbrev) - .debug_abbrev 0x00000000 0x474 Door.o + .debug_abbrev 0x00000000 0x464 Door.o -.debug_line 0x00000000 0x5af +.debug_line 0x00000000 0x511 *(.debug_line) - .debug_line 0x00000000 0x5af Door.o + .debug_line 0x00000000 0x511 Door.o -.debug_frame 0x00000000 0xdc +.debug_frame 0x00000000 0xf8 *(.debug_frame) - .debug_frame 0x00000000 0xdc Door.o + .debug_frame 0x00000000 0xf8 Door.o -.debug_str 0x00000000 0xc59 +.debug_str 0x00000000 0x1247 *(.debug_str) - .debug_str 0x00000000 0xc59 Door.o - 0xcb8 (size before relaxing) + .debug_str 0x00000000 0x1247 Door.o + 0x12aa (size before relaxing) -.debug_loc 0x00000000 0xaf1 +.debug_loc 0x00000000 0xccb *(.debug_loc) - .debug_loc 0x00000000 0xaf1 Door.o + .debug_loc 0x00000000 0xccb Door.o .debug_macinfo *(.debug_macinfo) @@ -488,9 +495,9 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x478 +.debug_ranges 0x00000000 0x330 *(.debug_ranges) - .debug_ranges 0x00000000 0x478 Door.o + .debug_ranges 0x00000000 0x330 Door.o .debug_macro *(.debug_macro) diff --git a/Door/Debug/Door.srec b/Door/Debug/Door.srec index e481b47..b7a2677 100644 --- a/Door/Debug/Door.srec +++ b/Door/Debug/Door.srec @@ -1,74 +1,145 @@ S00C0000446F6F722E7372656384 -S11300000C9435000C945D000C945D000C945D0020 +S11300000C9435000C9449030C945D000C945D0031 S11300100C945D000C945D000C945D000C945D00E8 S11300200C945D000C945D000C945D000C945D00D8 S11300300C945D000C945D000C945D000C945D00C8 S11300400C945D000C945D000C945D000C945D00B8 S11300500C945D000C945D000C945D000C945D00A8 -S11300600C945D000C945D00B90111241FBECFEF08 -S1130070D4E0DEBFCDBF11E0A0E0B1E0E4EFF3E0F7 -S113008002C005900D92A637B107D9F723E0A6E781 -S1130090B1E001C01D92AB30B207E1F710E0CAE64F -S11300A0D0E004C02297FE010E94F401C836D107B3 -S11300B0C9F70E94B4000C94F8010C94000020E0ED -S11300C030E080E061E070E04A9BFECFEFE9FFE0C2 -S11300D03197F1F700C000004A9B08C0AB01022E23 -S11300E002C0440F551F0A94E2F7842B4A99FECFAD -S11300F02F5F3F4F2830310539F70895CF934A9940 -S113010024C08FE19EE40197F1F700C000004A99F2 -S11301101FC04A9BFECF4A99FECF0E945F00811107 -S11301201AC00E945F008F3EC9F40E945F00C82F6E -S11301300E945F002C2F30E0A901480F511D4F3F52 -S1130140510571F02FEF30E00BC02FEF30E008C005 -S11301502FEF30E005C02FEF30E002C02FEF30E08A -S1130160822F932FCF910895789482E390E027E52E -S113017031E0E0ECF0E0A6ECB0E07DE06AE011C034 -S1130180408145FFFDCF5C9359915111F9CF4081D6 -S113019045FFFDCF7C93408145FFFDCF6C930197D4 -S11301A019F0E90157E4ECCF299AC0ECD0E006EC51 -S11301B010E00F2EF0E6EF2EF1E0FF2EF02D0F2EC3 -S11301C0FDE0CF2EF02D0F2EFAE0DF2EF02D4A9910 -S11301D0FECF289A0E947E00B82EAC015527888154 -S11301E085FFFDCF80E3D8018C9360E070E0CB0104 -S11301F09695879596958795969587959C01220F58 -S1130200331F880F991F880F991F880F991F820F1A -S1130210931F681B790B605D888185FFFDCFF80112 -S113022060839A013695279536952795ABE7B4E117 -S11302300E94E60196958795805D988195FFFDCF94 -S1130240D8018C939A01ADECBCEC0E94E601FC0150 -S1130250F695E795F695E795F695E7959F010E9443 -S1130260E6019695879596958795969587959C0131 -S1130270220F331F880F991F880F991F880F991F0A -S1130280820F931FE81BF90BE05D888185FFFDCF8A -S1130290D801EC939A01ADECBCEC0E94E601969572 -S11302A0879596958795969587959C01220F331F80 -S11302B0880F991F880F991F880F991F820F931F0A -S11302C0481B590B405D888185FFFDCFF8014083B1 -S11302D0F70190E2888185FFFDCFD8019C9391912D -S11302E09111F8CF888185FFFDCFF801C082888104 -S11302F085FFFDCFD801DC92BFEFBB1209C0EFE749 -S1130300F4E82EE1E150F0402040E1F700C00000A5 -S113031028985DCFCF93DF93789481E88093C400CD -S11303201092C00088E08093C10086E08093C200F0 -S1130330ACE6B1E095E5E0ECF0E0C6ECD0E080811D -S113034085FFFDCF98839D919111F9CFE0ECF0E00A -S1130350808185FFFDCF8DE08093C600E0ECF0E066 -S1130360808185FFFDCF8AE08093C600DF91CF9125 -S113037008958AE093E00E948A01559A539A239A39 -S113038081E284BD81E085BD16BC1092B60091EA7D -S11303909093B0008093B1001092B20010926E005E -S11303A01092700018BC1092B4001092B300209AFE -S11303B0219A2898299856985E9857985F9810BE65 -S11303C010927B0083E080937F000895A29FB00188 -S11303D0B39FC001A39F01D0B29F700D811D112452 -S11303E0911D0895EE0FFF1F0590F491E02D0994DF -S10703F0F894FFCFAB -S11303F40A0D0A0D52656365697665643A200A0D2F -S11304044F464620094F4E00696E74204952736961 -S1130414676E616C5B5D203D207B002F2F204F466F -S1130424462C204F4E2028696E2031302773206FCC -S113043466206D6963726F7365636F6E64732900FC -S11304442C20007D3B0047656C6164656E210020AF -S113045450726573736564210D0A005561727420CA -S1090464646F6E652100C7 +S11300600C945D000C945D00010411241FBECFEFBD +S1130070D4E0DEBFCDBF11E0A0E0B1E0E6E7F8E0F8 +S113008002C005900D92AC36B107D9F721E0ACE679 +S1130090B1E001C01D92A237B207E1F710E0CAE651 +S11300A0D0E004C02297FE010E943504C836D1076F +S11300B0C9F70E94CB000C9439040C940000CF9330 +S11300C0DF93789481E88093C4001092C00088E0A4 +S11300D08093C10086E08093C200A1E0B1E095E581 +S11300E0E0ECF0E0C6ECD0E0808185FFFDCF9883A2 +S11300F09D919111F9CFE0ECF0E0808185FFFDCF77 +S11301008DE08093C600E0ECF0E0808185FFFDCFB8 +S11301108AE08093C600DF91CF91089560FF04C008 +S11301208FEF8093B30002C01092B30061FF04C04C +S11301308FEF8093B40002C01092B40062FF03C03A +S11301408FEF88BD089518BC0895CF93DF93FB010A +S11301509081992369F0DB011196E0ECF0E0C6ECA4 +S1130160D0E0808185FFFDCF98839D919111F9CFD7 +S1130170E0ECF0E0808185FFFDCF8DE08093C60048 +S1130180E0ECF0E0808185FFFDCF8AE08093C6003B +S1130190DF91CF910895789464E080E791E00E9424 +S11301A08E006BE071E081E791E00E94A5002FE7EB +S11301B03AE186E0215030408040E1F700C0000081 +S11301C062E080E791E00E948E0060E171E081E7E7 +S11301D091E00E94A5009FE7AAE1B6E09150A040FB +S11301E0B040E1F700C0000061E080E791E00E94C8 +S11301F08E0066E171E081E791E00E94A5002FE79F +S11302003AE186E0215030408040E1F700C0000030 +S113021067E080E791E00E948E006CE171E081E785 +S113022091E00E94A5009FE7AAE1B6E09150A040AA +S1130230B040E1F700C00000299A60E080E791E057 +S11302400E948E00CDE6D1E066246A94762C0F2EAF +S1130250F4EBEF2EF12CF02D6894222427F803EB15 +S113026010E0E0ECF0E046EC50E00F2EFDE04F2E05 +S1130270F02D0F2EFAE05F2EF02D0F2EF0EC3F2E16 +S1130280F02D0F2EF0EB8F2E912CF02D888178829B +S11302908C3009F4CFC038F5853009F4A4C090F44B +S11302A0823009F484C038F4882309F446C08130CC +S11302B009F0F6C05FC0833009F487C0843009F0C8 +S11302C0EFC08BC0883009F4A0C038F4863009F43C +S11302D090C0873009F0E4C092C08A3009F4A3C00A +S11302E008F075C199C0823109F4C2C090F48F300E +S11302F009F46DC138F48D3009F4A2C08E3009F0D0 +S1130300CFC0A4C0803109F4A7C0813109F0C8C0AE +S1130310A9C0853109F4B8C038F4833109F457C150 +S1130320843109F0BDC0AAC0873109F450C108F472 +S1130330B1C08F3F09F0B4C04AC188B58B3F20F4E7 +S113034088B58B5F88BD01C018BCD7018C918B3FE9 +S113035020F48C918B5F8C9302C0D7011C92D8013E +S11303608C918B3F20F48C918B5F8C9330C1D8019E +S11303701C922DC188B5853020F088B5855088BD84 +S113038001C018BCD7018C91853020F08C91855028 +S11303908C9302C0D7011C92D8018C91853020F037 +S11303A08C9185508C9313C1D8011C9210C184B5D3 +S11303B08F7D84BDD4018C918F758C935D98559AF3 +S11303C05B98539A2B98239A02C184B5806284BDAA +S11303D0D4018C91806A8C93FAC0D8011C92D70105 +S11303E01C9268BCF4C0D8011C92D7016C9218BC52 +S11303F0EEC0D8016C92D7011C9218BCE8C0D80199 +S11304006C92D7016C9268BCE2C068BC20E4D7014E +S11304102C93D8011C92DBC018BCD7016C9220E449 +S1130420D8012C93D4C030E438BDD7011C92D80134 +S11304306C92CDC068BCD7012C92D8011C92C7C065 +S113044018BCD7016C92D8012C92C1C028BCD7012A +S11304501C92D8016C92BBC068BCD7013C92D801F5 +S11304601C92B5C018BCD7016C92D8013C92AFC0A5 +S113047038BCD7011C92D8016C92A9C068BCD701C2 +S11304806C92D8011C92A3C018BCD7016C92D801FD +S11304906C929DC068BCD7011C92D8016C9297C025 +S11304A0C82ED12C808185FFFDCF80E3DA018C93A7 +S11304B060E070E0CB019695879596958795969523 +S11304C087959C01220F331F880F991F880F991F4E +S11304D0880F991F820F931F681B790B605D8081C1 +S11304E085FFFDCFDA016C939601369527953695F5 +S11304F02795ABE7B4E10E94270496958795805D24 +S1130500908195FFFDCFDA018C939601ADECBCECA4 +S11305100E9427045C01B694A794B694A794B69459 +S1130520A79495010E94270496958795969587959B +S1130530969587959C01220F331F880F991F880F6A +S1130540991F880F991F820F931F9501281B390B40 +S1130550922F905D808185FFFDCFDA019C939601F7 +S1130560ADECBCEC0E9427049695879596958795EB +S1130570969587959C01220F331F880F991F880F2A +S1130580991F880F991F820F931F9601281B390BFF +S1130590922F905D808185FFFDCFDA019C93A3E6C5 +S11305A0B1E090E29D01808185FFFDCFDA019C934B +S11305B0D9019D919D019111F6CF808185FFFDCFD9 +S11305C0DA014C92808185FFFDCFDA015C9287E8E5 +S11305D093E10197F1F700C0000029989FEDAAE08C +S11305E0B6E09150A040B040E1F700C00000299A65 +S11305F04DCE559A539A239A81E084BD94E095BDDB +S113060016BC1092B600E0EBF0E0808385E08093A6 +S1130610B1001092B20010926E001092700084B576 +S1130620806284BD8081806A808318BC1092B4008B +S11306301092B300089520E030E080E061E070E0C3 +S11306404A9BFECFEFE9FFE03197F1F700C00000CD +S11306504A9B08C0AB01022E02C0440F551F0A94E6 +S1130660E2F7842B4A990FC008C04A9B06C0F5E8FC +S1130670FA95F1F700009150C1F72F5F3F4F2830F2 +S11306803105F1F6089545E84A95F1F7000091E344 +S1130690ECCF1F920F920FB60F9211242F933F931A +S11306A04F935F936F937F938F939F93AF93BF9376 +S11306B0CF93EF93FF93289A4A9979C08FE19EE4F0 +S11306C00197F1F700C000004A9971C04A9BFECF20 +S11306D04A99FECF80E090E060E041E050E04A9B20 +S11306E0FECFEFE9FFE03197F1F700C000004A9B2D +S11306F008C09A01082E02C0220F331F0A94E2F7A1 +S1130700622B4A9966C008C04A9B06C0F5E8FA9570 +S1130710F1F700002150C1F7019688309105F9F6F0 +S1130720611139C080E090E041E050E04A9BFECF87 +S1130730EFE9FFE03197F1F700C000004A9B08C0E1 +S11307409A01082E02C0220F331F0A94E2F7622B8B +S11307504A9939C008C04A9B06C0F5E8FA95F1F7F2 +S113076000002150C1F7019688309105F9F66F3EDB +S113077091F48CE691E00E941B03C82F8CE691E073 +S11307800E941B03282F30E02C0F311D2F3F310511 +S113079011F4CF3F51F42FE734E88EE1215030407B +S11307A08040E1F700C000000BC0CE3F39F4E7E819 +S11307B0F3E13197F1F700C0000002C0C0936D016E +S11307C02898E09A0CC0F5E8FA95F1F7000021E3C7 +S11307D0C2CF25E82A95F1F7000021E395CFFF91D8 +S11307E0EF91CF91BF91AF919F918F917F916F9135 +S11307F05F914F913F912F910F900FBE0F901F90DB +S1130800189581E791E00E945F0080E791E00E94E3 +S1130810F902209A219A2898299856985E98579810 +S11308205F9810BE10927B0083E080937F00209A33 +S1130830219A2898299852985A988FEF80936D019D +S113084082E08093690081E08DBB1CBA0895A29F69 +S1130850B001B39FC001A39F01D0B29F700D811D51 +S11308601124911D0895EE0FFF1F0590F491E02DC2 +S10908700994F894FFCF87 +S11308765561727420646F6E652100526F74210095 +S11308864772FC6E2100426C61752100576569DF71 +S11308962C20616C6C657320496E697469616C699E +S11308A673657274212048616265204665727469B5 +S11308B66720756E642064616D6974206162207AB4 +S11308C6756D204E6F726D616C62657472696562D6 +S10F08D6210020507265737365642100DA S9030000FC diff --git a/Door/Door.cpp b/Door/Door.cpp index 1560278..374ecb9 100644 --- a/Door/Door.cpp +++ b/Door/Door.cpp @@ -7,192 +7,72 @@ #include "peripheral.h" #include -#include uartclass Serial; stripeclass stripe; ledclass led; compclass comp; -//intclass ir; - -// the maximum pulse we'll listen for - 65 milliseconds is a long time -#define MAXPULSE 30000 - -// what our timing resolution should be, larger is better -// as its more 'precise' - but too large and you wont get -// accurate timing -#define RESOLUTION 20 - -uint16_t volatile pulses[100][2]; // pair is high and low pulse -uint8_t volatile currentpulse = 0; - -void printpulses(void) { - Serial.println("\n\r\n\rReceived: \n\rOFF \tON"); - for (uint8_t i = 0; i < currentpulse; i++) { - Serial.printDec(pulses[i][0] * RESOLUTION); - Serial.print(" "); - Serial.printDec(pulses[i][1] * RESOLUTION); - Serial.println(" "); - } - - // 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++) { - Serial.print("\t"); // tab - Serial.printDec(pulses[i][0] * RESOLUTION / 10); - Serial.print(", "); - Serial.printDec(pulses[i][1] * RESOLUTION / 10); - Serial.println(","); - } - - Serial.print("\t"); // tab - Serial.printDec(pulses[currentpulse-1][0] * RESOLUTION / 10); - Serial.print(", "); - Serial.printDec(pulses[currentpulse-1][1] * RESOLUTION / 10); - Serial.println("};"); -} - -void loop() -{ - while(1) { - uint16_t highpulse, lowpulse; // temporary storage timing - highpulse = lowpulse = 0; // start out with no pulse length - while (!(PIND & (1<= 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++) - { - loop_until_bit_is_set(PIND,PIND2); - _delay_us(800); - //while (PIND & (1< compile - + compile diff --git a/Door/io/IR.hpp b/Door/io/IR.hpp new file mode 100644 index 0000000..753acc9 --- /dev/null +++ b/Door/io/IR.hpp @@ -0,0 +1,108 @@ +/* + * Interrupt.hpp + * + * Created: 18.11.2014 00:27:52 + * Author: netz + */ + + +#ifndef INTERRUPT_H_ +#define INTERRUPT_H_ + +#include + +template +class IR { + public: + IR() { + this->init(); + } + int read() { + if(intpin::value()) { //Is High, Abbort + return 254; + } + _delay_ms(4); //Wait 4ms + if(intpin::value()) { //Is High, Abbort + return 254; + } + intpin::wait_is_set(); //Wait for the rest of the init. + intpin::wait_is_clear(); // Init Complete, wait for first Byte + + //Read First Byte must be 0! + if(this->read8bit() != 0) { //Is first Byte not 0 Abbort; + return 255; + } + //Read Second Byte must be 239! + if(this->read8bit() != 239) { + return 255; + } + //Read Byte 3 and 4 (Data Byte and Checksum Byte! + uint8_t a = this->read8bit(); + uint8_t b = this->read8bit(); + //Make Checksum Byte 3 + 4 must be 255! + if(a+b != 255) { + return 255; + } + return a; //Return Byte 3 + } + //The Interrupt Function + void interrupt() { + led.red(1); + uint8_t code = this->read(); + if(code == 255) { + _delay_ms(500); + } else if(code == 254) { + _delay_ms(1); + } else { + this->_code = code; + } + led.red(0); + EIFR |= (1<_code; + this->_code = 255; + return ret; + } + private: + Led led; + uint8_t _code; + void init() { + intpin::make_input(); + this->_code = 255; + this->init_int(); + } + void init_int() { + // External Interrupt(s) initialization + // INT0: On + // INT0 Mode: Falling 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/Interrupt.hpp b/Door/io/Interrupt.hpp deleted file mode 100644 index ab8db87..0000000 --- a/Door/io/Interrupt.hpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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/Stripe.hpp b/Door/io/Stripe.hpp index 94ad6e8..cfdc982 100644 --- a/Door/io/Stripe.hpp +++ b/Door/io/Stripe.hpp @@ -10,11 +10,13 @@ #include "hardware/pin.hpp" +#include + template class Stripe { public: Stripe() { - init(); + this->init(); } void color(uint8_t r, uint8_t g, uint8_t b) { OCR0B=r; //ROT @@ -34,13 +36,70 @@ class Stripe { static const uint8_t MAGENTA = 5; static const uint8_t YELLOW = 6; static const uint8_t WHITE = 7; + void off() { + this->timerOff(); + stripered::make_low(); + stripegreen::make_low(); + stripeblue::make_low(); + } + void on() { + this->timerOn(); + } + void lower() { + if(OCR0B >= 5) { + OCR0B = OCR0B - 5; + } else { + OCR0B = 0; + } + if(OCR2B >= 5) { + OCR2B = OCR2B - 5; + } else { + OCR2B = 0; + } + if(OCR2A >= 5) { + OCR2A = OCR2A - 5; + } else { + OCR2A = 0; + } + } + void higher() { + if(OCR0B <= 250) { + OCR0B = OCR0B + 5; + } else { + OCR0B = 0; + } + if(OCR2B <= 250) { + OCR2B = OCR2B + 5; + } else { + OCR2B = 0; + } + if(OCR2A <= 250) { + OCR2A = OCR2A + 5; + } else { + OCR2A = 0; + } + } private: void init() { stripered::make_output(); stripegreen::make_output(); stripeblue::make_output(); - initTimer(); - color(0, 0, 0); + this->initTimer(); + this->color(0, 0, 0); + } + void timerOff() { + // OC0B output: Disconnected + // OC2A output: Disconnected + // OC2B output: Disconnected + TCCR0A &= ~(1<timerOn(); } const typedef avrlib::pin stripered; const typedef avrlib::pin stripegreen; diff --git a/Door/io/hardware/pin.hpp b/Door/io/hardware/pin.hpp index c14f338..245ed85 100644 --- a/Door/io/hardware/pin.hpp +++ b/Door/io/hardware/pin.hpp @@ -43,6 +43,9 @@ namespace avrlib { static void set_low() { set(false); } static bool read() { return value(); } static void pullup() { set_high(); } + + static void wait_is_set() { do { } while (!(Port::pin() & (1< ledclass; #include "io/Comperator.hpp" typedef Comperator compclass; -/*#include "io/Interrupt.hpp" -typedef Interrupt intclass;*/ +#include "io/IR.hpp" +typedef IR irclass; #include "io/uart.hpp" typedef Uart<9600> uartclass;