From 7ee46ab10e33409335874cdaa915e8686d1733a3 Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Mon, 18 Jul 2016 22:35:02 +0000 Subject: [PATCH] fast fertig --- USBLaminator/USBLaminator.atsuo | Bin 15872 -> 16896 bytes USBLaminator/USBLaminator/Debug/Makefile | 2 +- .../USBLaminator/Debug/USBLaminator.d | 10 +- .../USBLaminator/Debug/USBLaminator.elf | Bin 30517 -> 71321 bytes .../USBLaminator/Debug/USBLaminator.hex | 418 +- .../USBLaminator/Debug/USBLaminator.lss | 4789 ++++++++++++++--- .../USBLaminator/Debug/USBLaminator.map | 480 +- .../USBLaminator/Debug/USBLaminator.srec | 418 +- USBLaminator/USBLaminator/USBLaminator.cpp | 43 +- .../USBLaminator/USBLaminator.cppproj | 80 +- USBLaminator/USBLaminator/io/ADC.hpp | 22 + USBLaminator/USBLaminator/io/SSR.hpp | 57 +- USBLaminator/USBLaminator/io/Usart.hpp | 9 +- USBLaminator/USBLaminator/io/button.hpp | 41 + USBLaminator/USBLaminator/peripheral.h | 6 +- 15 files changed, 5444 insertions(+), 931 deletions(-) create mode 100644 USBLaminator/USBLaminator/io/button.hpp diff --git a/USBLaminator/USBLaminator.atsuo b/USBLaminator/USBLaminator.atsuo index 63ad85267fd3024cdc32458cdf26780baf81225a..a383263eb71663c59b16c818b3974851e0c15433 100644 GIT binary patch delta 1586 zcmZuxZ%kWN6u%c7buX4&S9TU1!^G3FoK zW3Uaj>7XaZL`|Gimt`La+W0SiSRI%s@efN(OePZ{E9qGC#5XClMqshSp2ASh$gv5r~%5jQq!M{ZKLhCZqRI`(wpEVZiY9b z$c{@m;0Ct|WE}^`H8TAL7Bug3qe#KUobR}kOgO6DTRez@gy=&YL-ZrgAz)tn0frg# z_+hMy2Uk@-yyGo|n+>*)_1me=h$d?>(mck<-3e1%05Z7=UXLWFHjoT)h-m_;j3J%{ zQ?>v|rnr&l(8QxMOK#@iAJeiMDKEimk>gc7Wb%H{8qv9iT!V><5lCBj7^|)ZYVA*& zr};dzEmYa(6yTvi5BJSGAZFeIazV^Ub5Unf8SyN)KV{*91E^@t-nFX>X1&bo35Zzr zkPsT6-7=Vxt(94OM6`ODL`gl_Mmk6n5pfNW8q%i74JZY0wi7=}QH6`5L1wFG5UdyUfj7c+ZN!nsY;zq)@fwV1?_PP99(&DAqXS2eD zom~7jZ)pl!qZt0Mhc&DW=b^KvB_%tKQ+fy%N@k2yKy8W2RZa~ara8F(z+*a%N)M7V zuGA{yOz_1>%{efrMtcdav@447Eq#yc(0?KQ(Qo@$uWS>S6+ z7|S!NJJR#yo)-@EN?5xP-OwM|8q&U2&9shNtMF`9q3{N}TpgEDFv102049ZUNc&_E zd>*CC@&yh&9sx!wKgU*qPHUag8t6>38nhbFot33zb+}M4Al8GkR$@U}7FI_P1#Ts% z73O{6qJ#JtC7eB^8~fuhIf|1I9Yh_ijECkX6Kr*~DRQ{xw^XE#qe>gIE?!TrAIrxc zq#r9)hD^DN)jW%btMFpr1f7J1z_`%sKE{caw(2jgZ{PZ8uqC30w;O*P-_K*JO;9U_ z;Cp;){gnciXgBSEINzVL?+$3oAucMki!E|8mK`|@=icj|`Xe^0*~aNge0b!EWHS{Y5;;ODqx zqnvD>GE#O^uj)>QSMe}`zyV8T<#5U2gosJhjG^LF5L`Q9Iuwa6;?IUqGmJQeIE^@i z7(p=Z?8<%~_ty}wBQC7y#&J)k{tbOeoxS7$c}^+Msrh?@wI$cm9ZNHpPYyrv7OR5t ztw+QN+^u*BQzv58-MJwo*l1UGXPe+#)+%c)t_48(ddMks!PTP2@xr;OUqvT{eBKS| g`lMy#uf6d^mnCn!^{Fe4!w+iNn`Plrk#IBp56DaCumAu6 delta 1319 zcmZuwT})eL7(QS3^=IX@w5&i&85BxsX`xa<)X}kujhRB$E>5$Ms-Rm0H-&8nLFdmQ z*)YZnrH}4v&PAst3(n0ZW+Y?Oj0>}o1tJ=+7B0+;7bes6Lb#y5-(iwN;yL+pzV~_F z|MxxWDW<-4SuwEnEBilSS>DTRsN=QvkKVgDtgI}tZIUDXxn0NP3MDB6Ztxfs zd&S$9%4l7W}bW{(s%)heV)9jevprdsO>^ymmE zo)jLp$20}cZ>aVByy^EoUvZ4R^Jq9np(*8t8G}@xla@Tr6#5Iw@{Oo zMM&2c&$TI=BJMPAo!tA=T4Q`VGFR}+41a~{ z;Baz`hMo8@urY|aunnIyR$?;Tf_z}o^+#Xe+S=?ZYv=xs{AB*}+$}MWsr@co?r@kS z>FMs?0jQ1TxNY&&B$K-`$>EoRCow7+SUTB~BdMG&kcBiNP^M$jc-*S!l-QvM#VL!$KZgd9XsAzZNbbBXG zMyz-$-a(642}ATCt~NBFYR^2>hgI)!X+SzEMWsRM<>0;WdSSt^@?0?Z%SmIqLGyY2 z!D%sNs?~&ihnjulhS*Z$JCy20{E+Cu{G)L!CX)0`Tsbh!rux&BgVG4Srx%}@=$jlo X~nS1c-DDopd&qu!E6J_Dw)!4NF*(5W*tEu#1R@2}uw$ zD4>YSAcGqsG8!GnQO6PV^>rLyN5dkbgAz0Yj>Euro?BI?s)BsqJMZWB|NYV1dG0yq zo^$R~cd4rG>Rxs0kp4<3vi^n8XtHWKEIb#g=x+X-LrLVJ6lzSdT3=~3;J;Iw8pX>P zZBgnWqt#m1nFT0e4t;7fqHSumE-a=VTr9n>@=5Yl=6HRT$N8_b91L~Wox1-$rasH# zzMn|DN`|$Fq`1dFJWF(T$-w4Br=!P&5WQ2~ofA0mckaUKZQB|4=@-kdyEdRNaejWG zvmU(WpT4I z-p#+7{!O11MVHSX-LbRJcSjyCdc3~OJ2Carq>6d-|1o>PYppKVo^CYY%HNaDyg(-|(bNBHZ+vp%E62Y0u=cZ8|MY5n?XEKiYirNc zp9rb(mNnYCH}{$Fzg%ityZ5VSYE@0b)<=6j8-C(ad~MAa@7IRbw0rQ1imBWZ{$9@e z;cs7xsr;+*Ri;Pz_~0L_c%%Ag^}g+oR{whYW7Ye&@2P%z`{UIIw(qU}&Gsj%PkdEZ zyYA%gs$Z_Y^H*1nZGP!@+h49;Q@$qt;<0bfT~Bj8UrDtYwS8+x)V`xa(nD%C#y*r7 zReAE#lfm7^tFMOC?5lpX`iJ0m#cLSpa-c!9SxU6^`X(>L;onIRDJIZ`7_Caj;KKpA(m;hG<{=_&VfrmH(n|-|}Dd zZz=ypA7}Aj^z$M9i@pY@^d8BY}peCom2LqAl0_G;`ae|j~h@&mg0L`H4y6Dd#J^UTIo_q=q^GxxmI z=~TC>3zv9ZsLtULvghCn2Mt}<>bp;Ea%k2ctUCDRR~KrNR%fpMivQA@_%(myzpHsT zm8+CixzTT{Z=he3x#qB%-fB^FOy#oh)wN}{F_lxo-c0{<`q}hJZ~UdSU&H z%gWNsee4&HZGPbnzQ_O2HY-4+0{X?(mIA4!EU6i&mZC%<{wv7*O(acw0{@SXv!nBICwP|Iq z{nWVMq9P|J4sTaGxYlmDHT<$lTGOumgu2XaR-1rckJ^^E<@Lyt-FM1ZrDD^6Jaaz% zLhaS`y0lAb-5E>oT*IDMa~u64!5T?UR<@|nDMkh{mH%$!Z_iw)-SFj4#T(44-zzGg znfyJo^xVJMqmy6$pZ&h^Kk&Qm%q8_x*=|v>CI_?AmZaUCR>{Zj-{s;A=ls*$+uncN z{kPqdcK6&}6kHj+J6OS^>)(y?^?xJEmEGrcg!|KW{15u^El1e+lVhm*SDu=ae8fX) z{`LiC&_>q?b&fWR<4v`O^y>Mx-{#a_7?IQ`!(4&K{HeHhDzA8}dB@i1>ouqQ2UCKx zgQdZHgIk%I?69d7e^g(bbyRWv>dv0P4d#FMCO;sl^neBPU)$Mu5)$Mu5)$Mu5)$Mu5)qA#U z$9?XYujYX%t1I47f8%usGjZR!XY|>^-eXtG&zHYi{+sfh0LwcbN{uYG;{5#Bv}pTDfK*0o*N>hQ+eO)qWudi8JPj^2CX-j}}S zV{`Wx*0FXT|Jbt6%dNfj`kps!-@1KkwPky4|8ZrK5|2}`r@rc*{aXh2$%JHPS z%=(?Zhg&UjI^?5YdKA02C^N*kM{jvU4U8?+5 zPgK?Q8C~`ErIq!G&5lG*k6skLKKe*q`H0XF_Nb%I?x~8Xntwc^eobve)zRY{>vrB= zR`*iyA^(dbch$XLhY`6k@u9>U>yB{5#x>7mtf~9m@n_h!re=0Q!G>wYsXfYFgE*;SUVoIXt53Y-ME4ga2$Of2jRab^i!%`|4$XMb$;l z!^rVM{13-|tbaK+zJBV}Ry9Su!ox?invHyJx$Ud?nx*aA);)6ep5T(8w`NxRg>~D` zZU|zAr`AlUOC^aS@W>7;r|G)scYPe_cq?s!wjw)GKJQ5_=dclX&_^}zWx32PD}*w@b4tIr}% zMAgpotItJLQF2rzJhljn3^Qu*+BD3|wa9c&CHdm(H?|*D_i}8X`d2%mH=)v-h^pKF zRW?2^c5LE=x+%RE)(zm}@!&rnN}N`=v-e$fI3k9xv5DXDF~9J6M2!*Yp~MTvHdHP2 zPV+`og4LJ(v;0f_e^lt{rq3hlA2=UT6@9$s*fXD})E)Y~MO{_<$ht?5J#j2P`RikE ze!lDbs-5qDUllu|c5LGGopq{Y=ga=OM$aV7*tt*t-ItiZbC&;LqumL!64&l*rxA~! zosdjVT(@&qqiG545=(bx`+?dguHQMeQQL&Id?e-u!rAK;?^cL4mI=1)Nl-}pQ-`?v}bG%?oep$71%4?UdblezQo?sofeXU+@ zHS$Dw%|7#=II-%fORKBOs*b8Zsfa2>@|M+?*QP~Qp5GcO$nH^pIeBa7b_@?*VUzZw{6RkCi8u z$CjTji>Ugi+Nt_wl-Avvm0zD9T8wFlJj zDN}~WRQ8X&YmGm6b8*{@%(@eo!)j`;gw;$v>8)9C(o-|-llw_mNsqu|S=? z5>>P1^hLFLUHR$qb!*psUwbU({noykEoVMbn=8uC#BbYC5&vN0ZJR5etNkNu8v5%~ zQ*!mz|3UPNYFb4RM~|tw_cS7HIUUb2;vd{_+Kv@fbMF~sw&l#4bsNrDxi!q-qWW8- z3kh*+(|M=ZU$eV*TD+>+RXaF1qP9h|mSM^DI~1-rLu%UcUY8u(DKWnN&2@cQ3wA?l z`tX@zzu3`<9n&&u`!ydO-n9OC&0VjwjD@E!H>x?s9Cl<5`!I)nE831|D;(|<4m0Bo zn~YN-HJL7(A7Y}`^f|F7{fTy^Ji=6VWc`noiA@9b!L*w*TGXZR@oHPUUp>g<5qV6l zEw1f#vLgMmI@#(%693LjIK+`LnGkNQ>WOw6S=e^&9^T9>PuxKn*cjEux8+5d*yy~%vc6Zn|d z9vj$vLU?X{SawpqH@jv1?l@Hwf9j%&uedMmb3IxfHb;xWEY1?%RyS|6uTZhSVpd!& zJ74yB*|D-$%YIX~vussa5zms8jEFjaZMOdt^-yeP!ae^gpGw=Nc^7(f>$9e&Pw82a zaVnMfOI{~?XVk6kiq$HzuE&%ftSRS~tLKy_e9p5pu_CtOD$kpi!R@QIRecrQR>iNe zSN$i)ULF3BKimIp^3~)g)R)Rz7Eu{qnNr_5_RBUuv>B8*GQrxD!YX%P@|HpOWehaq z5?@PL8jCezR-&!@AqJX1B)*@3`y|*MEnQOmpjc==PJAfV*fql{pSrZZJg%yFao@U+ zs{T-Qd)0udOO;<%-dOe8rPE*3)y}EBq3nk8PUSPptIEA)t4=PeI?>`n)Gg8DqTh}_ z9$9nggzrL|TR7U=iN_OG))!~T*KevibL?!T8j(>K5gS!c{*dMo^-00@RUyIU*(r5* zo%&@(DxXKi)!^^F7sDza)KbXEMHW$JUgPU_|%Guq$YB| z_RETlx^-0x*-NqJJU;n++10XGK61y(KQDjCf6u?lcrW=>T~@P$3(J?bKXEDR!O)r& z`w)nlyZIY4PGxR7cN*hcN{UW|nZZy{SnWR9H}&lvh+Zvn`}7zqK&` z-wxNly&a)%-Ys^e-{R8JqQWRzP*m76qr3i-*_~!A=t)a5xMcRE87NsjX^vr0yp(lg zrg2Rz%u4UBuCyI2^{e^+zCzgAq5DO=+deqFDT@sh`Pk*$Au)QLjP zN*;A4zR#)uo6aG?ViIdHK9FLdA%2VUgB zr4GE7Vf$w(U4Gw&d z18;QTdmVU_1K;Psn;rOm2j1eq4>)j{1D8ASRtK(d;7SLsa^P(a{GbDGci@K{xY~h# z<-j`}_+bZr#DRA@@Gb}5?ZA&Z@M8|V$AKSr;Jps~gabe6z)v~wJ_r7_1Mhd>rycl! z1OLW>4?6HO4*aYGKPMRLG1kB$F3J2>3-%8D%cI{JfL~z~YS!}TV;Uhgf1y!=KcO*# zKc#Vk|4QQpe@+txr>O0MZ&o`PujLr|W}L13cfE=6Cy(?Sep-^pJ4a=-q0FP3X`A3w z2kuDQMINAP!D+NZa5_E0xRza6aqAen<7OIx_%)CBP}t)i_RU>_JJF+pJJTM)U1+c1 zuJokfT-qnN8|@d|gANGpMF$1 z2)>P87d(XC5ImIL6g-UH5GT6?_MMCU_Fn3ciz03ZBewC0oa93Y`&LL}vvT)7OF*(mBB;^sV4UR42HUz7xEd z>IE;Mi-MQZ4}zD`kAm-_%Yv8F6~VtC>jW#0R#1p}vXw`_q)@>tDNOJxiV(b-q6DuY zpWw9=BX}Lf30_Z)1>ZwW1>Z}}1aG1ig72dn1#hO-g72p`g11nT;0LIk;4(@UTuvPX zZ>1E$6_hHtk^+LOC|&S2$`Je@WeKjP9KpY$&VqMPSHTZcH^Glk55YUBm*8F0NAPay zC-_my6Z{zU7rciC3Vxgh3*JjZ1V2H;1V2S11n;9!f_a@6yr0GiewxM$K0p%%|ArF+D1HA?*=dLVE=-q9+BH(muh-$M}im4*|Ky^UaR&ldA2F z@zarN#7`Q%E;!wRgY<^TGwDsiS^O~`!!7prcLe9qyMjB>dxAUDalu{a1HrlUq2O-x zk>DQmvEZKciQr!Jso>u9nczNDE4VM66x@$a3%-TU2+pIkf^Vg-1^1_Of(O#Kf(KEZ z;KB5r;M=HP@DREvcqsiKco_XCcsN}aJc6zW9!b>5;&U{G2p&VBg2z&r;BgcocsxZ3 zoc5;YclCp8s3g_;STN-YFWqZP5ktv9)f#OFTs7NkKn%4PjElV6MPHx7o0}}1>Z`81^1^Rf(Ozt!Gmao;K4LX z@NG0k@DLg&co>ZrJe(#99zl}?kEF?hN6}QlV`#eIv6L_PcA6!4Jk1e2f#wRHNb?2X zL4|_vq+-F7sYLJ;Diu7HmI$6s%LLD$<%08Rh2WXAQt&KV&G;3^@qO=_ZoJ~6f=g=d9JJBx2e{tmS)&C&} z*jqU~Dma7o2+pLvg0tvJ!P&G=a1QMk+=&h_?iy-yJCL!P+kg?2U-Kwk+gmvt6h9gC ztl&&~UT_v25}Zwk1$Uw&f;-bu!CmMT!Ck3Fa4x+rxEsA8xI4WmxCgx@xF@|MxEH-E zxDUN2xGx=Nyxr0FC$H(d^PV&Br_z@9Q^CBS3g-P(aCiDxa1Z)Ka8LSFa4-5y@aNT&tgL1zR{qO*eUq^|`}rgMU)(6@r8Q=Q-$^qt^*suw(yE()GSKM0;f zKMF3O%Yx_96~POLVvJ#vM}-t3xQIdp7gLzvg%lxp5k(0uC77v^jxGN=#JeN8M?nWtsdr&Il7aXyEe@(3RhI4++5j0uwNSZ2m6ipXAn(_sYrCEZ<(Hz0I(_F#hX};hIR4Dik zDi%D6N(A3YrGh8Z62Vhwnc!)(T<~;SA$SI@6r4}11<#_jf@jlu!E2W}(RRU$sao(7+97x;JtFun+9mjXdQ|WSv`6rN z&|bkG(vyNeqJ4t@O#21@g$@Y*gboV+FM3w+r}VtwztSPWpV48#wRA-A2|6nHB)uZ| zG}Q?Hf?gMVhTahTCA}&5D|$=t*Yu9yztOvb&(V8=zoFxT&(jBj>*zzl7w99w-_gf{ zzo$nz$c{0C`Jc}RO*<`MDz{Z+(s{!~G@73}tul|=u103%)4AjpbL6Jv;9PdXDHlOx^ zd)WY~$j4KX;0e@D z@E!U+5>)eO5_J&yo$?-cGRttr_n!`~zA!o2+}LQ4M~leDrL;xli>XZTGTJKmE~*r~ zlC}w6McW0hrfR`!Xoui+^oZc~v`g^a^r+wsv`6qp+AH{8dQ$Kv+9&uv+AnxB9T0p! z9TdEUo)uh4&kL@iLxQ)_VZjg55y9K(sNjd_6~Wb1BluVJy5L9X4Z*wUO~JeAEy0h{ zJAxmhcLhIA?+M;Z#|1w@9|(SuJ{0^EeI$4veJuDeeIob>eJc26`b_XqsulcOIw|-S zIxYBBIwQD-&I*2wz83sCofG^9eJl7)suTPN`cCj$R4@2#x+wS^`a$q}^rPVapv!_k zq$`3y;u9Nd4F8!z1bachpYs_mnKSo;nD=NGXCZQL5k{C?NPBlrH$6lp**s zWeFygBREWT7963v3XW9W1V^bJf}>S0!9LYTa3j@EaIDG`9H;sVj#mQ(H&%lMH&sIf z-=KyGZmC8HPEex+C#o@mlhioDZPj?e?bJlU?bRf~H>t^jJE*CG{c5`46qPSHRm~FI zQOyw?RC5J)QS$|NRfU3cRk7f1szh*iRVuiLS|YfoS|+%cS}wS^S|PZPS}C}%S}k~r zS}S;}S}%B-+8{VzZ4^9HZ4x|7Z5BLRZ4o?2l?g6TTLsTkm4X+jZGsEccELreT5z%2 zA$XyBL~x1PC3ul~RB)-UF^z)ftJEigx2aDBKd3$v{E(^@T&+$D{*^i{_)&F6@MG$% z;63VV!H=tRg7>O#1wWzc1V5#|6TDB=3;wmbD0sj6LGaV+N5KcwWx)s46~WIb>jW#0 zo>w8}hXV8H1r;jzkO~w0qKXiFSVakbN%;gHQ89vFR&j!Vs~QV_MKu-ts%j>Tncf3K1Rzp2^@{)0*u{Eq4%_>U?@@VhEi@Sjvb@Ovs<@G+Gk__)dv z{DI05{2!{b;15+-!T+hcG0x@BcUt!i1~JBcgC1hj&w+2DULwDh`Uvh%{R9u7Ji!C0 zzu-YMQ1DQJ2_8lx1P`ZCg84I$f=ALg!J}xr;4w52I9R%%I5=a*z+qXr zOES_I(UPKq{BEV0Ju_*_lqEA~lopjN>efG#&89Cdn4ceHb5q@-)w?83!qrA0;aXUv&aP#9cPG6UkY`32Kw1ZR|#W(H^DHGMSuoIWjoNlm-`tDiWkkwvb~QRG4ifqLw+vrvkI0iE?l%|)}jJC!rZ%N7L5Ga=$SRY zXjgo|ZH2XX`@o6z0hGzO;1g?4h^+jNS_h9k~~boYrsg#Glc7;j}_K z_tNYo#S1X;ewJ}Rt9VNBq8WW{_qP=04Ox)=^SbY6yC1uB-uTR{pV56u(c;2<+y9cT zi)Re&{4@Gr#LGjeV_}#(rvGgPoqomu%V(Ap+4;{L)F~^o>(AwW_Dt8hurOb~8q2Uvti14;xMMy;W7_NEy@r{#^utWTOP1qAR@N+vM5iOaUaD@}1kf_ys zdWT0~RD>ajzKI3uU6w@ZCu5>iaRI;i*Qg0M)ppT_Am%x4uIe3j`2{5u61R=h)OJ3l z1@UPtP=+rGdm0INBB~_;PtQWUfyhSh@OMQy5{Qg>js@zX z!wv~V#%1t&EFutX*!QC)kt09!|n5D#OcZl9N(AnHiE_s=GX1)Gj;@b0plz5 zCqxw1ku{vutr$sWQg|yx{f8r9rYn zenLcHo6#L#Oc9t0!bT(ZyBv*-v~l??X&0j7)|glfzO1xg=3{l8w2kTHN;{Oo&SMGn zMIPdI7TaUMLpv6@(>{vCtUD{3?dMSba6p{=y*GNV^{> zveKS{1;b+d)$5P#uxrx}qp()SluTy#R@(Udger4nV5Hp&iCJm?!lK7oIPS(G_y3 zFMPfZe=*km;oLi4>Ziui_9W-#OIyQlJ{s#ScH9PQgj>WX6787zMmN63{^Jk9OH|Bp z9)OKU-I_;HIq^tDHEGQgBdU{GY0R>y&PIiA=FiNhs5s^2Ha;#lG(!t&riy0G;x}E& zco3FA zv-Uo*pcd*3l)c{OLE=%nS@EQ;)W-$eW6P^NpocODZP}Q+59De275f7UAx|yCMmPNz zw~W8U!zSDtk4`t~$^!3xlZrH(OV`LZW_BYTQ^m=<`VVJ+h%0D$QXr(%EO5Ra;pC8GoGi>l(1Ec2ZE*@as+4J-= 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�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 F{{zv`244UG diff --git a/USBLaminator/USBLaminator/Debug/USBLaminator.hex b/USBLaminator/USBLaminator/Debug/USBLaminator.hex index 30894d9..9e8c45f 100644 --- a/USBLaminator/USBLaminator/Debug/USBLaminator.hex +++ b/USBLaminator/USBLaminator/Debug/USBLaminator.hex @@ -1,73 +1,347 @@ -:100000000C942B000C9453000C9453000C9453004C -:100010000C9453000C9453000C945D010C94530009 -:100020000C9453000C9453000C9453000C94530004 -:100030000C9453000C9453000C9453000C945300F4 -:100040000C9453000C9453000C9453000C945300E4 -:100050000C945300B40111241FBECFE5D4E0DEBFE1 -:10006000CDBF11E0A0E6B0E0EAE9F3E002C0059000 -:100070000D92A833B107D9F721E0A8E3B1E001C0A0 -:100080001D92AC33B207E1F710E0C6E5D0E004C042 -:100090002297FE010E94C701C435D107C9F70E940B -:1000A0005A010C94CB010C940000CF93C49ABC9AD3 -:1000B000AA98A29AAB98A39AAC98A49AAD98A59A3C -:1000C000AE98A69AAF98A79AE1E6F0E083E2C39AC9 -:1000D000BB9A5D9BFECF8CB9C398BB9A819181116D -:1000E000F6CFEEE9F0E083E2C39ABB9A5D9BFECFC8 -:1000F0008CB9C398BB9A81918111F6CFAA98A29A24 -:10010000AB98A39AAC98A49AAD98A59AAE98A69AE3 -:10011000AF98A79A20E030E041E050E0CA01022EFB -:1001200002C0880F991F0A94E2F7A82FA17080FFE0 -:1001300002C0AA9AA29AF82FF27081FF02C0AB9A6D -:10014000A39AE82FE47082FF02C0AC9AA49A782F99 -:10015000787083FF02C0AD9AA59A682F607184FF02 -:1001600002C0AE9AA69A982F907285FF02C0AF9AED -:10017000A79A8FEFB1EEC4E08150B040C040E1F7E4 -:1001800000C00000AA2311F0AA98A29AFF2311F040 -:10019000AB98A39AEE2311F0AC98A49A772311F0B0 -:1001A000AD98A59A662311F0AE98A69A992311F0FE -:1001B000AF98A79A2F5F3F4F2630310509F0AECF99 -:1001C000AA98A29AAB98A39AAC98A49AAD98A59A2B -:1001D000AE98A69AAF98A79AEDEAF0E083E2C39AA8 -:1001E000BB9A5D9BFECF8CB9C398BB9A819181115C -:1001F000F6CF1FBC8EB58B608EBD1DBC1CBC17BC62 -:1002000016BC81E68BBD88EA8ABD19BC18BC89B7CB -:10021000806189BF7894ECEBF0E083E2C39ABB9AEB -:100220005D9BFECF8CB9C398BB9A81918111F6CFAB -:1002300023C0C39ABB9A5D9BFECF8CB9C398BB9A6F -:1002400081918111F6CF20C0C39ABB9A5D9BFECFEE -:100250008CB9C398BB9A81918111F6CF23C0C39A00 -:10026000BB9A5D9BFECF8CB9C398BB9A81918111DB -:10027000F6CFC29ABA9A1CC0C498BC9AC39ABB9AC9 -:10028000E2EDF0E083E2D5CF379A2FEF81EE94E0F4 -:10029000215080409040E1F700C00000EFEDF0E019 -:1002A00083E2D2CFC398BB9AEFEEF0E083E2D7CFE0 -:1002B000CF9108950E945500FFCF1F920F920FB665 -:1002C0000F9211248F939F9395B384E0892785BB68 -:1002D0009F918F910F900FBE0F901F901895CF9305 -:1002E000DF931F92CDB7DEB76983BC9ABB9ABA9AE7 -:1002F000C498BC9AC398BB9AC298BA9A1BB888E0B3 -:100300008AB986EA80BD10BC89E189B9ECE2F1E0E6 -:1003100085E5C39ABB9A5D9BFECF8CB9C398BB9A07 -:1003200081918111F6CF0F90DF91CF910895BC9A02 -:10033000BB9ABA9AC498BC9AC398BB9AC298BA9A04 -:100340000895A29AA39AA49AA59AA69AA79AAA9857 -:10035000A29AAB98A39AAC98A49AAD98A59AAE9895 -:10036000A69AAF98A79A08958BE391E00E9497010F -:100370008AE391E00E94A10160E089E391E00E949C -:100380006F0184E086B917B80895EE0FFF1F05903E -:0A039000F491E02D0994F894FFCFDA -:10039A002323232320426567696E20426F6F747599 -:1003AA0070202323232323232323232323232323C9 -:1003BA002323232323232323232323232323232303 -:1003CA0023232323232323232323230A0023205401 -:1003DA00657374204F75747075740A002320536511 -:1003EA007475702054696D65720A002323204F7555 -:1003FA007470757420496E697420446F6E65210AA1 -:10040A000023205365747570204144430A00232059 -:10041A00536574757020427574746F6E0A002323D5 -:10042A00232320456E6420426F6F74757020232346 -:10043A002323232323232323232323232323232382 -:10044A002323232323232323232323232323232372 -:10045A002323232323232323230A00556172742091 -:08046A00646F6E65210A0000B9 +:100000000C94A8000C9434050C94D0000C94D000EF +:100010000C94D0000C94D0000C94B0040C94D0003C +:100020000C94D0000C94D0000C94D0000C94D00010 +:100030000C94D0000C94D0000C94D0000C94D00000 +:100040000C94D0000C94D0000C94D0000C94D000F0 +:100050000C94D00000407A10F35A00A0724E180998 +:100060000010A5D4E80000E87648170000E40B541F +:10007000020000CA9A3B000000E1F50500008096EE +:100080009800000040420F000000A0860100000020 +:10009000102700000000E8030000000064000000DA +:1000A00000000A00000000000100000000002C76A3 +:1000B000D888DC674F0823DFC1DFAE59E1B1B796BE +:1000C000E5E3E453C63AE651997696E8E6C284261B +:1000D000EB898C9B62ED407C6FFCEFBC9C9F40F2F7 +:1000E000BAA56FA5F490055A2AF75C936B6CF96773 +:1000F0006DC11BFCE0E40D47FEF520E6B500D0ED38 +:10010000902E0300943577050080841E080000209F +:100110004E0A000000C80C333333330F986E12833D +:100120001141EF8D2114893BE65516CFFEE6DB1811 +:10013000D1844B381BF77C1D901DA4BBE4242032D6 +:1001400084725E228100C9F124ECA1E53D27AB0554 +:1001500011241FBECFE5D4E0DEBFCDBF11E0A0E685 +:10016000B0E0E0E6F4E102C005900D92A639B107D7 +:10017000D9F721E0A6E9B1E001C01D92A23DB20786 +:10018000E1F711E0C0E5D1E004C02297FE010E9432 +:100190008E07CE34D107C9F70E94DD010C942E0AD8 +:1001A0000C940000CF93C49ABC9AAA98A29AAB98D8 +:1001B000A39AAC98A49AAD98A59AAE98A69AAF982F +:1001C000A79AE1E9F0E083E2C39ABB9A5D9BFECF78 +:1001D0008CB9C398BB9A81918111F6CFEEECF0E017 +:1001E00083E2C39ABB9A5D9BFECF8CB9C398BB9A3E +:1001F00081918111F6CFAA98A29AAB98A39AAC9854 +:10020000A49AAD98A59AAE98A69AAF98A79A20E01E +:1002100030E041E050E0CA01022E02C0880F991F71 +:100220000A94E2F7A82FA17080FF02C0AA9AA29AAE +:10023000F82FF27081FF02C0AB9AA39AE82FE47006 +:1002400082FF02C0AC9AA49A782F787083FF02C014 +:10025000AD9AA59A682F607184FF02C0AE9AA69AE3 +:10026000982F907285FF02C0AF9AA79A8FEFB1EED8 +:10027000C4E08150B040C040E1F700C00000AA23B4 +:1002800011F0AA98A29AFF2311F0AB98A39AEE233B +:1002900011F0AC98A49A772311F0AD98A59A662333 +:1002A00011F0AE98A69A992311F0AF98A79A2F5FF4 +:1002B0003F4F2630310509F0AECFAA98A29AAB98ED +:1002C000A39AAC98A49AAD98A59AAE98A69AAF981E +:1002D000A79AEDEDF0E083E2C39ABB9A5D9BFECF57 +:1002E0008CB9C398BB9A81918111F6CF1FBC8EB592 +:1002F0008B608EBD1DBC1CBC17BC16BC81E68BBDC3 +:1003000088EA8ABD19BC18BC89B7806189BF789416 +:10031000ECEEF0E083E2C39ABB9A5D9BFECF8CB912 +:10032000C398BB9A81918111F6CF2FC0C39ABB9A13 +:100330005D9BFECF8CB9C398BB9A81918111F6CF9A +:100340002CC0C39ABB9A5D9BFECF8CB9C398BB9A55 +:1003500081918111F6CF8BB780648BBF82E085BF1E +:1003600080E48ABF7894C398BB9AE2E0F1E083E22C +:10037000C39ABB9A5D9BFECF8CB9C398BB9A8191FF +:100380008111F6CFC29ABA9A16C0C498BC9AC39A81 +:10039000BB9AEFE3F1E083E2C9CF379A2FEF81EE0A +:1003A00094E0215080409040E1F700C00000ECE470 +:1003B000F1E083E2C6CFCF910895CF93DF93CDB71D +:1003C000DEB7A9970FB6F894DEBF0FBECDBF0E946F +:1003D000D20029E130E039A728A787B1887F87B903 +:1003E00087B187B935E33A95F1F70000369A349B27 +:1003F000FECFA4B0B5B087B1887F87B9389A85E3BE +:100400008A95F1F70000369A349BFECF84B095B000 +:10041000E7E9F1E020803180E9E9F1E00081118134 +:10042000EBE9F1E0808191819101281B390BC90131 +:10043000EDE9F1E020813181B801621B730B0E946C +:10044000780780E090E00E945F06C62ED72EE82E47 +:10045000F92E462E572E682E792EB50180E090E0B9 +:100460000E945F069B01AC016C2D7D2D8E2D9F2D72 +:100470000E9415076B017C0177FA709477F87094ED +:10048000B80180E090E00E945F069B01AC01C301CF +:10049000B2010E9415079B01AC01C701B6010E9481 +:1004A000CB056B017C01B10180E090E00E945F060A +:1004B0009B01AC01C701B6010E94CB056AA37BA3D7 +:1004C0008CA39DA3EFE9F1E020803180E1EAF1E027 +:1004D00000811181E3EAF1E0808191819101281B83 +:1004E000390BC901E5EAF1E020813181B801621BD5 +:1004F000730B0E94780780E090E00E945F06C62E92 +:10050000D72EE82EF92E462E572E682E792EB401BE +:1005100080E090E00E945F069B01AC016C2D7D2D78 +:100520008E2D9F2D0E9415076B017C0177FA709428 +:1005300077F87094B80180E090E00E945F069B011C +:10054000AC01C301B2010E9415079B01AC01C701B8 +:10055000B6010E94CB056B017C01B10180E090E007 +:100560000E945F069B01AC01C701B6010E94CB054A +:100570006EA37FA3D82EC92E762F6FA1272F362FDB +:100580004D2D5C2DBAA1ABA1FCA1EDA16B2F7A2F53 +:100590008F2F9E2F0E94CB0520E030E040E05FE3EC +:1005A0000E941507762E672E582E492EE8ECF1E0B2 +:1005B000808191812FEF3FEF318320838F3F3FEF89 +:1005C000930711F099A788A768A579A56B5F7F4F5E +:1005D000882777FD8095982F0E946106272D362D5C +:1005E000452D542D0E94CA05F62EE72E382E292EB1 +:1005F00020E030E0A9010E942F0688230CF499C165 +:1006000020E030E040EA51E46F2D7E2D832D922DC5 +:100610000E94110718160CF491C17F2D6E2D932D99 +:10062000822D90C1C39ABB9A5D9BFECF8CB9C398B3 +:10063000BB9A81918111F6CF8E01095E1F4F22E096 +:100640004AE06F2D7E2D832D922D0E949207FC0192 +:100650002081222359F03196C39ABB9A5D9BFECF2D +:100660002CB9C398BB9A21912111F6CFC39ABB9A9A +:100670005D9BFECF8BE38CB9C398BB9A0F2EFAE635 +:10068000EF2EF1E0FF2EF02DF70183E6C39ABB9A1F +:100690005D9BFECF8CB9C398BB9A81918111F6CF37 +:1006A000B4016A0D7B1D80E090E00E945F0620E0AF +:1006B00030E040E05FE30E9415078E01045F1F4FAA +:1006C00022E04AE00E949207FC012081222359F097 +:1006D0003196C39ABB9A5D9BFECF2CB9C398BB9A47 +:1006E00021912111F6CFC39ABB9A5D9BFECF8BE37C +:1006F0008CB9C398BB9AEEE6F1E086E7C39ABB9A41 +:100700005D9BFECF8CB9C398BB9A81918111F6CFC6 +:100710004AE050E0BE01645F7F4FC5010E94B3070D +:10072000FC012081222359F03196C39ABB9A5D9B2C +:10073000FECF2CB9C398BB9A21912111F6CFC39A51 +:10074000BB9A5D9BFECF8BE38CB9C398BB9AE2E763 +:10075000F1E086E7C39ABB9A5D9BFECF8CB9C39844 +:10076000BB9A81918111F6CF4AE050E0BE01645FEF +:100770007F4FC4010E94B307FC012081222359F05E +:100780003196C39ABB9A5D9BFECF2CB9C398BB9A96 +:1007900021912111F6CFC39ABB9A5D9BFECF8BE3CB +:1007A0008CB9C398BB9A83E6F701C39ABB9A5D9B49 +:1007B000FECF8CB9C398BB9A81918111F6CF8E017F +:1007C0000F5F1F4F22E04AE0672D762D852D942D77 +:1007D0000E949207FC012081222359F03196C39A8E +:1007E000BB9A5D9BFECF2CB9C398BB9A2191211176 +:1007F000F6CFC39ABB9A5D9BFECF8BE38CB9C398AF +:10080000BB9AE6E7F1E083E6C39ABB9A5D9BFECF15 +:100810008CB9C398BB9A81918111F6CF8E010F5F7D +:100820001F4F22E04AE0FAA1EBA15CA13DA16F2F8E +:100830007E2F852F932F0E949207FC012081222377 +:1008400059F03196C39ABB9A5D9BFECF2CB9C398E1 +:10085000BB9A21912111F6CFC39ABB9A5D9BFECF23 +:100860008BE38CB9C398BB9AEAE7F1E083E6C39ABD +:10087000BB9A5D9BFECF8CB9C398BB9A81918111C5 +:10088000F6CF8E010F5F1F4F22E04AE0FEA1EFA1DD +:100890006F2F7E2F8D2D9C2D0E949207FC012081B1 +:1008A000222359F03196C39ABB9A5D9BFECF2CB997 +:1008B000C398BB9A21912111F6CFC39ABB9A5D9B35 +:1008C000FECF8BE38CB9C398BB9AEEE7F1E088E6E4 +:1008D000C39ABB9A5D9BFECF8CB9C398BB9A81919A +:1008E0008111F6CF9A9B03C0E2E6F1E002C0EBE58E +:1008F000F1E08081882359F03196C39ABB9A5D9BC1 +:10090000FECF8CB9C398BB9A81918111F6CFC39A5F +:10091000BB9A5D9BFECF8AE08CB9C398BB9AFFEF70 +:1009200021EE34E0F15020403040E1F700C00000FB +:1009300054CD70E060E090E080E004C070E060E0E2 +:1009400090EA81E4462F282F672F742F892F922F4A +:100950000E9433066093CB01E5E8F1E080E762CEC8 +:100960001F920F920FB60F9211242F933F934F9324 +:100970005F936F937F938F939F93AF93BF93EF9307 +:10098000FF938091CA01843108F451C01092CA01CA +:1009900051C0822F91916C91961718F1992309F10A +:1009A000BA01022E02C0660F771F0A94E2F7CB014C +:1009B00060FF02C0AA9AA29A81FF02C0AB9AA39AD2 +:1009C00082FF02C0AC9AA49A83FF02C0AD9AA59A96 +:1009D00084FF02C0AE9AA69A85FF22C0AF9AA79A5A +:1009E0001FC0BA0102C0660F771F8A95E2F7CB01DC +:1009F00060FF02C0AA98A29A81FF02C0AB98A39A96 +:100A000082FF02C0AC98A49A83FF02C0AD98A59A59 +:100A100084FF02C0AE98A69A85FF02C0AF98A79A3D +:100A20002F5F3F4F2630310509F0B3CF0CC08F5FE9 +:100A30008093CA01EBECF1E020E030E0AAECB1E0F9 +:100A400041E050E0A6CFFF91EF91BF91AF919F9110 +:100A50008F917F916F915F914F913F912F910F9067 +:100A60000FBE0F901F9018951F920F920FB60F9206 +:100A700011248F9380E48ABFC49ABC9A8F910F90FF +:100A80000FBE0F901F901895FC01119286E0DF01B8 +:100A90001D928A95E9F7A29AA39AA49AA59AA69A72 +:100AA000A79AAA98A29AAB98A39AAC98A49AAD9840 +:100AB000A59AAE98A69AAF98A79A0895CF93DF9378 +:100AC0001F92CDB7DEB76983BC9ABB9ABA9AC49815 +:100AD000BC9AC398BB9AC298BA9A2FEF3FEFFC0119 +:100AE000328321831BB888E08AB986EA80BD10BCB6 +:100AF00089E189B9EAE8F1E085E5C39ABB9A5D9B93 +:100B0000FECF8CB9C398BB9A81918111F6CF0F901B +:100B1000DF91CF910895CF93DF931F92CDB7DEB7CA +:100B20006983BC9ABB9ABA9AC498BC9AC398BB9A78 +:100B3000C298BA9A8A989298929A0F90DF91CF9120 +:100B40000895BC9ABB9ABA9AC498BC9AC398BB9AA7 +:100B5000C298BA9A089581ED91E00E94A1058AECAD +:100B600091E00E94440560E087EC91E00E945E0500 +:100B700080E3E0E6F0E0A7E9B1E001900D928A950C +:100B8000E1F784E086B917B860E086E991E00E9459 +:100B90008B0508955058BB27AA270ED008C1F9D05D +:100BA00030F0FED020F031F49F3F11F41EF4EEC07F +:100BB0000EF4E095E7FBE4C0E92F0AD180F3BA1701 +:100BC000620773078407950718F071F49EF522C138 +:100BD0000EF4E0950B2EBA2FA02D0B01B901900158 +:100BE0000C01CA01A0011124FF27591B99F0593F9C +:100BF00050F4503E68F11A16F040A22F232F342FE4 +:100C00004427585FF3CF469537952795A795F04031 +:100C10005395C9F77EF41F16BA0B620B730B840B46 +:100C2000BAF09150A1F0FF0FBB1F661F771F881FFE +:100C3000C2F70EC0BA0F621F731F841F48F4879556 +:100C400077956795B795F7959E3F08F0B3CF939545 +:100C5000880F08F09927EE0F9795879508956CD027 +:100C600008F481E00895BCD088F09F5790F0B92F28 +:100C70009927B751A0F0D1F0660F771F881F991FF1 +:100C80001AF0BA95C9F712C0B13081F0C3D0B1E003 +:100C90000895C0C0672F782F8827B85F39F0B93F13 +:100CA000CCF3869577956795B395D9F73EF49095F3 +:100CB0008095709561957F4F8F4F9F4F0895E89471 +:100CC00009C097FB3EF490958095709561957F4F94 +:100CD0008F4F9F4F9923A9F0F92F96E9BB27939542 +:100CE000F695879577956795B795F111F8CFFAF452 +:100CF000BB0F11F460FF1BC06F5F7F4F8F4F9F4F83 +:100D000016C0882311F096E911C0772321F09EE8E0 +:100D1000872F762F05C0662371F096E8862F70E046 +:100D200060E02AF09A95660F771F881FDAF7880F20 +:100D30009695879597F90895990F0008550FAA0B76 +:100D4000E0E8FEEF16161706E807F907C0F01216DE +:100D50001306E407F50798F0621B730B840B950BE1 +:100D600039F40A2661F0232B242B252B21F4089536 +:100D70000A2609F4A140A6958FEF811D811D0895D3 +:100D800097F99F6780E870E060E008959FEF80EC3E +:100D9000089500240A9416161706180609060895E1 +:100DA00000240A9412161306140605060895092E47 +:100DB0000394000C11F4882352F0BB0F40F4BF2BB6 +:100DC00011F460FF04C06F5F7F4F8F4F9F4F0895F6 +:100DD00057FD9058440F551F59F05F3F71F04795EC +:100DE000880F97FB991F61F09F3F79F087950895D1 +:100DF000121613061406551FF2CF4695F1DF08C0F0 +:100E0000161617061806991FF1CF8695710561050C +:100E100008940895E894BB2766277727CB0197F9B4 +:100E200008958ADF08F48FEF08950BD0C0CFB1DFAB +:100E300028F0B6DF18F0952309F0A2CFA7CF112430 +:100E4000EACFC6DFA0F3959FD1F3950F50E0551F71 +:100E5000629FF001729FBB27F00DB11D639FAA270F +:100E6000F00DB11DAA1F649F6627B00DA11D661F5E +:100E7000829F2227B00DA11D621F739FB00DA11D7F +:100E8000621F839FA00D611D221F749F3327A00D39 +:100E9000611D231F849F600D211D822F762F6A2FD5 +:100EA00011249F5750408AF0E1F088234AF0EE0F5A +:100EB000FF1FBB1F661F771F881F91505040A9F767 +:100EC0009E3F510570F05CCFA6CF5F3FECF3983E9C +:100ED000DCF3869577956795B795F795E7959F5FCE +:100EE000C1F7FE2B880F911D9695879597F9089568 +:100EF000AA1BBB1B51E107C0AA1FBB1FA617B70740 +:100F000010F0A61BB70B881F991F5A95A9F780955B +:100F10009095BC01CD010895EE0FFF1F0590F4914F +:100F2000E02D0994EF920F931F93CF93C02F47FFAB +:100F300002C034E101C034E0E42FFF27E7FDF09563 +:100F4000F7FF03C0F195E195F109E32E022F2E2F53 +:100F50004C2F512F0E94C9078C2F912FCF911F9199 +:100F60000F91EF900895FB019F01423074F04532DC +:100F700064F4642F77270E947807805D8A330CF031 +:100F8000895D8193CB010097A1F71082C9010C9470 +:100F90001E0A6F927F929F92AF92BF92CF92DF9282 +:100FA000EF92FF920F931F93CF93DF93CDB7DEB7EE +:100FB00029970FB6F894DEBF0FBECDBF6A01B22EDF +:100FC000102F0C3318F4F02EF39402C05CE3F52ECE +:100FD0000F2D27E0AE014F5F5F4F0E9446097981D8 +:100FE000272F2970213031F0E1FC06C0E0FE06C059 +:100FF00060E205C06DE203C06BE201C060E073FF18 +:101000003DC0662311F084E001C083E08B1510F42D +:10101000B81A01C0B12CE4FC0BC08B2DF60190E294 +:1010200002C0919381508111FCCFCB0CD11CB12C0B +:10103000662319F0D6016D936D01E2FE0AC08EE4BD +:10104000F601808391E491838283F3E0CF0ED11C7B +:101050000CC08EE6D6018C9391E611969C93119765 +:1010600012968C93B3E0CB0ED11C8B2DF60190E23F +:1010700002C0919381508111FCCF40C072FF45C0E6 +:10108000662311F084E001C083E08B1510F4B81AD8 +:1010900001C0B12CE4FC0BC08B2DF60190E202C024 +:1010A000919381508111FCCFCB0CD11CB12C6623C4 +:1010B00019F0F60161936F01E2FE0EC089E4D601DA +:1010C0008C938EE411968C93119786E412968C93F0 +:1010D000B3E0CB0ED11C0AC089E6F60180838EE610 +:1010E000818386E68283F3E0CF0ED11C8B2DF6013F +:1010F00090E202C0919381508111FCCFF601EB0D7B +:10110000F11D10822EEF3FEFACC0A1E0611101C0D4 +:10111000A0E04A2F50E01816190624F49C012F5F16 +:101120003F4F02C021E030E0240F351F112329F08A +:10113000412F50E04F5F5F4F02C040E050E0420F50 +:10114000531F2B2D30E04217530714F4B41A01C07B +:10115000B12C3E2D3071E4FC0DC0E3FC0BC02B2DF7 +:10116000F60140E202C0419321502111FCCFCB0C8B +:10117000D11CB12CAA2319F0D6016D936D01311148 +:101180000BC02B2DF60130E302C031932150211109 +:10119000FCCFCB0CD11CB12CF80E0A8140E1A42E5F +:1011A000A72274FF03C0013309F4FA941F142CF42E +:1011B0002F2D293018F028E001C021E0AC0197FF65 +:1011C00002C040E050E060E070E03EE2932EFC019F +:1011D000E21BF1099F01DC01A41BB50BFE01319656 +:1011E000EA0FFB1FA12FB0E0662477246A1A7B0A5E +:1011F0004F3F1FEF510719F4D6019D926D018417DF +:10120000950754F0241735073CF47F01E60EF71ECE +:10121000D70111961C9101C010E3415051096F5F35 +:101220007F4F4615570524F0D6011D936D01E0CF81 +:101230004817590739F4063320F4053319F4A1107F +:1012400001C011E3F60111938B2DDF0190E202C082 +:101250009D9381508111FCCFEB0DF11D108220E098 +:1012600030E0C90129960FB6F894DEBF0FBECDBF9E +:10127000DF91CF911F910F91FF90EF90DF90CF9072 +:10128000BF90AF909F907F906F900895283008F0A6 +:1012900027E03327DA01990F311D87FD9160009611 +:1012A0006105710539F432602E5F3D9330E32A9574 +:1012B000E1F708959F3F30F080387105610509F02E +:1012C0003C5F3C5F3D93913008F08068911DDF9357 +:1012D000CF931F930F93FF92EF92192F987F9695BC +:1012E000E92F96959695E90FFF27E255FF4F99272D +:1012F0003327EE24FF24A701E70105900894079403 +:1013000028F4360FE71EF81E491F511D660F771F80 +:10131000881F991F0694A1F70590079428F4E70EFB +:10132000F81E491F561FC11D770F881F991F661F82 +:101330000694A1F70590079428F4F80E491F561F4C +:10134000C71FD11D880F991F661F771F0694A1F72D +:101350000590079420F4490F561FC71FD81F990FF7 +:10136000661F771F881F0694A9F784911095177040 +:1013700041F0D695C79557954795F794E7941A95F8 +:10138000C1F7E4E5F0E06894159015913591659109 +:10139000959105907FE27395E118F10A430B560B86 +:1013A000C90BD009C0F7E10CF11E431F561FC91F1E +:1013B000D01D7EF4703311F48A95E6CFE894015085 +:1013C00030F0080F0AF40027021708F4202F2395A5 +:1013D000022F7A3328F079E37D932A95E9F710C03C +:1013E0007D932A9589F60694979567953795179575 +:1013F0001794E118F10A430B560BC90BD00998F06A +:1014000023957E9173957A3308F070E37C932013D3 +:10141000B8F77E9170617D9330F0839571E37D9391 +:1014200070E32A95E1F71124EF90FF900F911F913F +:10143000CF91DF91992787FD90950895DC01FC01FC +:10144000672F71917723E1F7329704C07C916D93F8 +:1014500070836291AE17BF07C8F30895F894FFCF69 +:101460001A009000B40054001A009000B400540018 +:10147000000000000000000000000000000000006C +:10148000000000000000000000000000000000005C +:101490002323232320426567696E20426F6F747592 +:1014A00070202323232323232323232323232323C2 +:1014B00023232323232323232323232323232323FC +:1014C00023232323232323232323230A00232054FA +:1014D000657374204F75747075740A00232053650A +:1014E0007475702054696D65720A002323204F754E +:1014F0007470757420496E697420446F6E65210A9A +:10150000002323232320456E6420426F6F7475707F +:10151000202323232323232323232323232323239E +:10152000232323232323232323232323232323238B +:101530002323232323232323232323230A002320BA +:101540005365747570204144430A00232053657429 +:10155000757020427574746F6E0A006D6F6E3D3049 +:101560003B006D6F6E3D313B00636D3D0076303D5D +:101570000076313D0063313D0063323D00686F6E9F +:101580003D303B0070776D3D005561727420646F93 +:061590006E65210A000057 :00000001FF diff --git a/USBLaminator/USBLaminator/Debug/USBLaminator.lss b/USBLaminator/USBLaminator/Debug/USBLaminator.lss index eada17d..a9f93f5 100644 --- a/USBLaminator/USBLaminator/Debug/USBLaminator.lss +++ b/USBLaminator/USBLaminator/Debug/USBLaminator.lss @@ -3,1553 +3,5086 @@ USBLaminator.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .text 0000039a 00000000 00000000 00000094 2**1 + 0 .text 00001460 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .data 000000d8 00800060 0000039a 0000042e 2**0 + 1 .data 00000136 00800060 00001460 000014f4 2**0 CONTENTS, ALLOC, LOAD, DATA - 2 .bss 00000004 00800138 00800138 00000506 2**0 + 2 .bss 0000003c 00800196 00800196 0000162a 2**0 ALLOC - 3 .stab 000006cc 00000000 00000000 00000508 2**2 + 3 .stab 00002ac0 00000000 00000000 0000162c 2**2 CONTENTS, READONLY, DEBUGGING - 4 .stabstr 00000082 00000000 00000000 00000bd4 2**0 + 4 .stabstr 00000798 00000000 00000000 000040ec 2**0 CONTENTS, READONLY, DEBUGGING - 5 .comment 0000002f 00000000 00000000 00000c56 2**0 + 5 .comment 0000002f 00000000 00000000 00004884 2**0 CONTENTS, READONLY - 6 .debug_aranges 00000050 00000000 00000000 00000c85 2**0 + 6 .debug_aranges 000000a0 00000000 00000000 000048b3 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_info 00003b6a 00000000 00000000 00000cd5 2**0 + 7 .debug_info 000074a7 00000000 00000000 00004953 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_abbrev 000003fb 00000000 00000000 0000483f 2**0 + 8 .debug_abbrev 00000659 00000000 00000000 0000bdfa 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_line 000004ac 00000000 00000000 00004c3a 2**0 + 9 .debug_line 00000b6d 00000000 00000000 0000c453 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_frame 000000b0 00000000 00000000 000050e8 2**2 + 10 .debug_frame 000001d8 00000000 00000000 0000cfc0 2**2 CONTENTS, READONLY, DEBUGGING - 11 .debug_str 00001293 00000000 00000000 00005198 2**0 + 11 .debug_str 00001908 00000000 00000000 0000d198 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 000005d7 00000000 00000000 0000642b 2**0 + 12 .debug_loc 000018cf 00000000 00000000 0000eaa0 2**0 CONTENTS, READONLY, DEBUGGING - 13 .debug_ranges 00000040 00000000 00000000 00006a02 2**0 + 13 .debug_ranges 000000d0 00000000 00000000 0001036f 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: - 0: 0c 94 2b 00 jmp 0x56 ; 0x56 <__ctors_end> - 4: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 8: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - c: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 10: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 14: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 18: 0c 94 5d 01 jmp 0x2ba ; 0x2ba <__vector_6> - 1c: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 20: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 24: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 28: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 2c: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 30: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 34: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 38: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 3c: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 40: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 44: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 48: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 4c: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 50: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 0: 0c 94 a8 00 jmp 0x150 ; 0x150 <__ctors_end> + 4: 0c 94 34 05 jmp 0xa68 ; 0xa68 <__vector_1> + 8: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + c: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 10: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 14: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 18: 0c 94 b0 04 jmp 0x960 ; 0x960 <__vector_6> + 1c: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 20: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 24: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 28: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 2c: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 30: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 34: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 38: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 3c: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 40: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 44: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 48: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 4c: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 50: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 54: 00 40 sbci r16, 0x00 ; 0 + 56: 7a 10 cpse r7, r10 + 58: f3 5a subi r31, 0xA3 ; 163 + 5a: 00 a0 ldd r0, Z+32 ; 0x20 + 5c: 72 4e sbci r23, 0xE2 ; 226 + 5e: 18 09 sbc r17, r8 + 60: 00 10 cpse r0, r0 + 62: a5 d4 rcall .+2378 ; 0x9ae <__vector_6+0x4e> + 64: e8 00 .word 0x00e8 ; ???? + 66: 00 e8 ldi r16, 0x80 ; 128 + 68: 76 48 sbci r23, 0x86 ; 134 + 6a: 17 00 .word 0x0017 ; ???? + 6c: 00 e4 ldi r16, 0x40 ; 64 + 6e: 0b 54 subi r16, 0x4B ; 75 + 70: 02 00 .word 0x0002 ; ???? + 72: 00 ca rjmp .-3072 ; 0xfffff474 <__eeprom_end+0xff7ef474> + 74: 9a 3b cpi r25, 0xBA ; 186 + 76: 00 00 nop + 78: 00 e1 ldi r16, 0x10 ; 16 + 7a: f5 05 cpc r31, r5 + 7c: 00 00 nop + 7e: 80 96 adiw r24, 0x20 ; 32 + 80: 98 00 .word 0x0098 ; ???? + 82: 00 00 nop + 84: 40 42 sbci r20, 0x20 ; 32 + 86: 0f 00 .word 0x000f ; ???? + 88: 00 00 nop + 8a: a0 86 std Z+8, r10 ; 0x08 + 8c: 01 00 .word 0x0001 ; ???? + 8e: 00 00 nop + 90: 10 27 eor r17, r16 + 92: 00 00 nop + 94: 00 00 nop + 96: e8 03 fmulsu r22, r16 + 98: 00 00 nop + 9a: 00 00 nop + 9c: 64 00 .word 0x0064 ; ???? + 9e: 00 00 nop + a0: 00 00 nop + a2: 0a 00 .word 0x000a ; ???? + a4: 00 00 nop + a6: 00 00 nop + a8: 01 00 .word 0x0001 ; ???? + aa: 00 00 nop + ac: 00 00 nop + ae: 2c 76 andi r18, 0x6C ; 108 + b0: d8 88 ldd r13, Y+16 ; 0x10 + b2: dc 67 ori r29, 0x7C ; 124 + b4: 4f 08 sbc r4, r15 + b6: 23 df rcall .-442 ; 0xfffffefe <__eeprom_end+0xff7efefe> + b8: c1 df rcall .-126 ; 0x3c <__zero_reg__+0x3b> + ba: ae 59 subi r26, 0x9E ; 158 + bc: e1 b1 in r30, 0x01 ; 1 + be: b7 96 adiw r30, 0x27 ; 39 + c0: e5 e3 ldi r30, 0x35 ; 53 + c2: e4 53 subi r30, 0x34 ; 52 + c4: c6 3a cpi r28, 0xA6 ; 166 + c6: e6 51 subi r30, 0x16 ; 22 + c8: 99 76 andi r25, 0x69 ; 105 + ca: 96 e8 ldi r25, 0x86 ; 134 + cc: e6 c2 rjmp .+1484 ; 0x69a <__stack+0x23b> + ce: 84 26 eor r8, r20 + d0: eb 89 ldd r30, Y+19 ; 0x13 + d2: 8c 9b sbis 0x11, 4 ; 17 + d4: 62 ed ldi r22, 0xD2 ; 210 + d6: 40 7c andi r20, 0xC0 ; 192 + d8: 6f fc .word 0xfc6f ; ???? + da: ef bc out 0x2f, r14 ; 47 + dc: 9c 9f mul r25, r28 + de: 40 f2 brcs .-112 ; 0x70 <__SREG__+0x31> + e0: ba a5 ldd r27, Y+42 ; 0x2a + e2: 6f a5 ldd r22, Y+47 ; 0x2f + e4: f4 90 lpm r15, Z + e6: 05 5a subi r16, 0xA5 ; 165 + e8: 2a f7 brpl .-54 ; 0xb4 <__SREG__+0x75> + ea: 5c 93 st X, r21 + ec: 6b 6c ori r22, 0xCB ; 203 + ee: f9 67 ori r31, 0x79 ; 121 + f0: 6d c1 rjmp .+730 ; 0x3cc + f2: 1b fc .word 0xfc1b ; ???? + f4: e0 e4 ldi r30, 0x40 ; 64 + f6: 0d 47 sbci r16, 0x7D ; 125 + f8: fe f5 brtc .+126 ; 0x178 <__do_clear_bss+0x6> + fa: 20 e6 ldi r18, 0x60 ; 96 + fc: b5 00 .word 0x00b5 ; ???? + fe: d0 ed ldi r29, 0xD0 ; 208 + 100: 90 2e mov r9, r16 + 102: 03 00 .word 0x0003 ; ???? + 104: 94 35 cpi r25, 0x54 ; 84 + 106: 77 05 cpc r23, r7 + 108: 00 80 ld r0, Z + 10a: 84 1e adc r8, r20 + 10c: 08 00 .word 0x0008 ; ???? + 10e: 00 20 and r0, r0 + 110: 4e 0a sbc r4, r30 + 112: 00 00 nop + 114: 00 c8 rjmp .-4096 ; 0xfffff116 <__eeprom_end+0xff7ef116> + 116: 0c 33 cpi r16, 0x3C ; 60 + 118: 33 33 cpi r19, 0x33 ; 51 + 11a: 33 0f add r19, r19 + 11c: 98 6e ori r25, 0xE8 ; 232 + 11e: 12 83 std Z+2, r17 ; 0x02 + 120: 11 41 sbci r17, 0x11 ; 17 + 122: ef 8d ldd r30, Y+31 ; 0x1f + 124: 21 14 cp r2, r1 + 126: 89 3b cpi r24, 0xB9 ; 185 + 128: e6 55 subi r30, 0x56 ; 86 + 12a: 16 cf rjmp .-468 ; 0xffffff58 <__eeprom_end+0xff7eff58> + 12c: fe e6 ldi r31, 0x6E ; 110 + 12e: db 18 sub r13, r11 + 130: d1 84 ldd r13, Z+9 ; 0x09 + 132: 4b 38 cpi r20, 0x8B ; 139 + 134: 1b f7 brvc .-58 ; 0xfc <__SREG__+0xbd> + 136: 7c 1d adc r23, r12 + 138: 90 1d adc r25, r0 + 13a: a4 bb out 0x14, r26 ; 20 + 13c: e4 24 eor r14, r4 + 13e: 20 32 cpi r18, 0x20 ; 32 + 140: 84 72 andi r24, 0x24 ; 36 + 142: 5e 22 and r5, r30 + 144: 81 00 .word 0x0081 ; ???? + 146: c9 f1 breq .+114 ; 0x1ba <_Z5setupv+0x16> + 148: 24 ec ldi r18, 0xC4 ; 196 + 14a: a1 e5 ldi r26, 0x51 ; 81 + 14c: 3d 27 eor r19, r29 -00000054 <__ctors_start>: - 54: b4 01 movw r22, r8 +0000014e <__ctors_start>: + 14e: ab 05 cpc r26, r11 -00000056 <__ctors_end>: - 56: 11 24 eor r1, r1 - 58: 1f be out 0x3f, r1 ; 63 - 5a: cf e5 ldi r28, 0x5F ; 95 - 5c: d4 e0 ldi r29, 0x04 ; 4 - 5e: de bf out 0x3e, r29 ; 62 - 60: cd bf out 0x3d, r28 ; 61 +00000150 <__ctors_end>: + 150: 11 24 eor r1, r1 + 152: 1f be out 0x3f, r1 ; 63 + 154: cf e5 ldi r28, 0x5F ; 95 + 156: d4 e0 ldi r29, 0x04 ; 4 + 158: de bf out 0x3e, r29 ; 62 + 15a: cd bf out 0x3d, r28 ; 61 -00000062 <__do_copy_data>: - 62: 11 e0 ldi r17, 0x01 ; 1 - 64: a0 e6 ldi r26, 0x60 ; 96 - 66: b0 e0 ldi r27, 0x00 ; 0 - 68: ea e9 ldi r30, 0x9A ; 154 - 6a: f3 e0 ldi r31, 0x03 ; 3 - 6c: 02 c0 rjmp .+4 ; 0x72 <__do_copy_data+0x10> - 6e: 05 90 lpm r0, Z+ - 70: 0d 92 st X+, r0 - 72: a8 33 cpi r26, 0x38 ; 56 - 74: b1 07 cpc r27, r17 - 76: d9 f7 brne .-10 ; 0x6e <__do_copy_data+0xc> +0000015c <__do_copy_data>: + 15c: 11 e0 ldi r17, 0x01 ; 1 + 15e: a0 e6 ldi r26, 0x60 ; 96 + 160: b0 e0 ldi r27, 0x00 ; 0 + 162: e0 e6 ldi r30, 0x60 ; 96 + 164: f4 e1 ldi r31, 0x14 ; 20 + 166: 02 c0 rjmp .+4 ; 0x16c <__do_copy_data+0x10> + 168: 05 90 lpm r0, Z+ + 16a: 0d 92 st X+, r0 + 16c: a6 39 cpi r26, 0x96 ; 150 + 16e: b1 07 cpc r27, r17 + 170: d9 f7 brne .-10 ; 0x168 <__do_copy_data+0xc> -00000078 <__do_clear_bss>: - 78: 21 e0 ldi r18, 0x01 ; 1 - 7a: a8 e3 ldi r26, 0x38 ; 56 - 7c: b1 e0 ldi r27, 0x01 ; 1 - 7e: 01 c0 rjmp .+2 ; 0x82 <.do_clear_bss_start> +00000172 <__do_clear_bss>: + 172: 21 e0 ldi r18, 0x01 ; 1 + 174: a6 e9 ldi r26, 0x96 ; 150 + 176: b1 e0 ldi r27, 0x01 ; 1 + 178: 01 c0 rjmp .+2 ; 0x17c <.do_clear_bss_start> -00000080 <.do_clear_bss_loop>: - 80: 1d 92 st X+, r1 +0000017a <.do_clear_bss_loop>: + 17a: 1d 92 st X+, r1 -00000082 <.do_clear_bss_start>: - 82: ac 33 cpi r26, 0x3C ; 60 - 84: b2 07 cpc r27, r18 - 86: e1 f7 brne .-8 ; 0x80 <.do_clear_bss_loop> +0000017c <.do_clear_bss_start>: + 17c: a2 3d cpi r26, 0xD2 ; 210 + 17e: b2 07 cpc r27, r18 + 180: e1 f7 brne .-8 ; 0x17a <.do_clear_bss_loop> -00000088 <__do_global_ctors>: - 88: 10 e0 ldi r17, 0x00 ; 0 - 8a: c6 e5 ldi r28, 0x56 ; 86 - 8c: d0 e0 ldi r29, 0x00 ; 0 - 8e: 04 c0 rjmp .+8 ; 0x98 <__do_global_ctors+0x10> - 90: 22 97 sbiw r28, 0x02 ; 2 - 92: fe 01 movw r30, r28 - 94: 0e 94 c7 01 call 0x38e ; 0x38e <__tablejump__> - 98: c4 35 cpi r28, 0x54 ; 84 - 9a: d1 07 cpc r29, r17 - 9c: c9 f7 brne .-14 ; 0x90 <__do_global_ctors+0x8> - 9e: 0e 94 5a 01 call 0x2b4 ; 0x2b4
- a2: 0c 94 cb 01 jmp 0x396 ; 0x396 <_exit> +00000182 <__do_global_ctors>: + 182: 11 e0 ldi r17, 0x01 ; 1 + 184: c0 e5 ldi r28, 0x50 ; 80 + 186: d1 e0 ldi r29, 0x01 ; 1 + 188: 04 c0 rjmp .+8 ; 0x192 <__do_global_ctors+0x10> + 18a: 22 97 sbiw r28, 0x02 ; 2 + 18c: fe 01 movw r30, r28 + 18e: 0e 94 8e 07 call 0xf1c ; 0xf1c <__tablejump__> + 192: ce 34 cpi r28, 0x4E ; 78 + 194: d1 07 cpc r29, r17 + 196: c9 f7 brne .-14 ; 0x18a <__do_global_ctors+0x8> + 198: 0e 94 dd 01 call 0x3ba ; 0x3ba
+ 19c: 0c 94 2e 0a jmp 0x145c ; 0x145c <_exit> -000000a6 <__bad_interrupt>: - a6: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> +000001a0 <__bad_interrupt>: + 1a0: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> -000000aa <_Z5setupv>: -ssrclass o; -usartclass r(l); -adcclass a; +000001a4 <_Z5setupv>: +usartclass r(l); +adcclass a; +buttonclass b(l); void setup() { - aa: cf 93 push r28 + 1a4: cf 93 push r28 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - ac: c4 9a sbi 0x18, 4 ; 24 + 1a6: c4 9a sbi 0x18, 4 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - ae: bc 9a sbi 0x17, 4 ; 23 + 1a8: bc 9a sbi 0x17, 4 ; 23 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - b0: aa 98 cbi 0x15, 2 ; 21 + 1aa: aa 98 cbi 0x15, 2 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - b2: a2 9a sbi 0x14, 2 ; 20 + 1ac: a2 9a sbi 0x14, 2 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - b4: ab 98 cbi 0x15, 3 ; 21 + 1ae: ab 98 cbi 0x15, 3 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - b6: a3 9a sbi 0x14, 3 ; 20 + 1b0: a3 9a sbi 0x14, 3 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - b8: ac 98 cbi 0x15, 4 ; 21 + 1b2: ac 98 cbi 0x15, 4 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - ba: a4 9a sbi 0x14, 4 ; 20 + 1b4: a4 9a sbi 0x14, 4 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - bc: ad 98 cbi 0x15, 5 ; 21 + 1b6: ad 98 cbi 0x15, 5 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - be: a5 9a sbi 0x14, 5 ; 20 + 1b8: a5 9a sbi 0x14, 5 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - c0: ae 98 cbi 0x15, 6 ; 21 + 1ba: ae 98 cbi 0x15, 6 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - c2: a6 9a sbi 0x14, 6 ; 20 + 1bc: a6 9a sbi 0x14, 6 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - c4: af 98 cbi 0x15, 7 ; 21 + 1be: af 98 cbi 0x15, 7 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - c6: a7 9a sbi 0x14, 7 ; 20 - c8: e1 e6 ldi r30, 0x61 ; 97 - ca: f0 e0 ldi r31, 0x00 ; 0 + 1c0: a7 9a sbi 0x14, 7 ; 20 + 1c2: e1 e9 ldi r30, 0x91 ; 145 + 1c4: f0 e0 ldi r31, 0x00 ; 0 init(); this->led = l; send("Uart done!\n"); } void send(const char *text) { while (*text) - cc: 83 e2 ldi r24, 0x23 ; 35 + 1c6: 83 e2 ldi r24, 0x23 ; 35 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - ce: c3 9a sbi 0x18, 3 ; 24 + 1c8: c3 9a sbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - d0: bb 9a sbi 0x17, 3 ; 23 + 1ca: bb 9a sbi 0x17, 3 ; 23 UBRRH = 0; UBRRL = (F_CPU / (baudrate * 16L) - 1); } uint8_t uart_putchar(uint8_t c) { led.on(led.YELLOW); loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - d2: 5d 9b sbis 0x0b, 5 ; 11 - d4: fe cf rjmp .-4 ; 0xd2 <_Z5setupv+0x28> + 1cc: 5d 9b sbis 0x0b, 5 ; 11 + 1ce: fe cf rjmp .-4 ; 0x1cc <_Z5setupv+0x28> UDR = c; - d6: 8c b9 out 0x0c, r24 ; 12 + 1d0: 8c b9 out 0x0c, r24 ; 12 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - d8: c3 98 cbi 0x18, 3 ; 24 + 1d2: c3 98 cbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - da: bb 9a sbi 0x17, 3 ; 23 + 1d4: bb 9a sbi 0x17, 3 ; 23 init(); this->led = l; send("Uart done!\n"); } void send(const char *text) { while (*text) - dc: 81 91 ld r24, Z+ - de: 81 11 cpse r24, r1 - e0: f6 cf rjmp .-20 ; 0xce <_Z5setupv+0x24> - e2: ee e9 ldi r30, 0x9E ; 158 - e4: f0 e0 ldi r31, 0x00 ; 0 - e6: 83 e2 ldi r24, 0x23 ; 35 + 1d6: 81 91 ld r24, Z+ + 1d8: 81 11 cpse r24, r1 + 1da: f6 cf rjmp .-20 ; 0x1c8 <_Z5setupv+0x24> + 1dc: ee ec ldi r30, 0xCE ; 206 + 1de: f0 e0 ldi r31, 0x00 ; 0 + 1e0: 83 e2 ldi r24, 0x23 ; 35 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - e8: c3 9a sbi 0x18, 3 ; 24 + 1e2: c3 9a sbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - ea: bb 9a sbi 0x17, 3 ; 23 + 1e4: bb 9a sbi 0x17, 3 ; 23 UBRRH = 0; UBRRL = (F_CPU / (baudrate * 16L) - 1); } uint8_t uart_putchar(uint8_t c) { led.on(led.YELLOW); loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - ec: 5d 9b sbis 0x0b, 5 ; 11 - ee: fe cf rjmp .-4 ; 0xec <_Z5setupv+0x42> + 1e6: 5d 9b sbis 0x0b, 5 ; 11 + 1e8: fe cf rjmp .-4 ; 0x1e6 <_Z5setupv+0x42> UDR = c; - f0: 8c b9 out 0x0c, r24 ; 12 + 1ea: 8c b9 out 0x0c, r24 ; 12 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - f2: c3 98 cbi 0x18, 3 ; 24 + 1ec: c3 98 cbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - f4: bb 9a sbi 0x17, 3 ; 23 + 1ee: bb 9a sbi 0x17, 3 ; 23 init(); this->led = l; send("Uart done!\n"); } void send(const char *text) { while (*text) - f6: 81 91 ld r24, Z+ - f8: 81 11 cpse r24, r1 - fa: f6 cf rjmp .-20 ; 0xe8 <_Z5setupv+0x3e> + 1f0: 81 91 ld r24, Z+ + 1f2: 81 11 cpse r24, r1 + 1f4: f6 cf rjmp .-20 ; 0x1e2 <_Z5setupv+0x3e> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - fc: aa 98 cbi 0x15, 2 ; 21 + 1f6: aa 98 cbi 0x15, 2 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - fe: a2 9a sbi 0x14, 2 ; 20 + 1f8: a2 9a sbi 0x14, 2 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 100: ab 98 cbi 0x15, 3 ; 21 + 1fa: ab 98 cbi 0x15, 3 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 102: a3 9a sbi 0x14, 3 ; 20 + 1fc: a3 9a sbi 0x14, 3 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 104: ac 98 cbi 0x15, 4 ; 21 + 1fe: ac 98 cbi 0x15, 4 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 106: a4 9a sbi 0x14, 4 ; 20 + 200: a4 9a sbi 0x14, 4 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 108: ad 98 cbi 0x15, 5 ; 21 + 202: ad 98 cbi 0x15, 5 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 10a: a5 9a sbi 0x14, 5 ; 20 + 204: a5 9a sbi 0x14, 5 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 10c: ae 98 cbi 0x15, 6 ; 21 + 206: ae 98 cbi 0x15, 6 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 10e: a6 9a sbi 0x14, 6 ; 20 + 208: a6 9a sbi 0x14, 6 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 110: af 98 cbi 0x15, 7 ; 21 + 20a: af 98 cbi 0x15, 7 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 112: a7 9a sbi 0x14, 7 ; 20 - 114: 20 e0 ldi r18, 0x00 ; 0 - 116: 30 e0 ldi r19, 0x00 ; 0 - } + 20c: a7 9a sbi 0x14, 7 ; 20 + 20e: 20 e0 ldi r18, 0x00 ; 0 + 210: 30 e0 ldi r19, 0x00 ; 0 + return 0; } void test() { off(); for (uint8_t i=0;i<6;i++) { on((1< - 122: 88 0f add r24, r24 - 124: 99 1f adc r25, r25 - 126: 0a 94 dec r0 - 128: e2 f7 brpl .-8 ; 0x122 <_Z5setupv+0x78> + 212: 41 e0 ldi r20, 0x01 ; 1 + 214: 50 e0 ldi r21, 0x00 ; 0 + 216: ca 01 movw r24, r20 + 218: 02 2e mov r0, r18 + 21a: 02 c0 rjmp .+4 ; 0x220 <_Z5setupv+0x7c> + 21c: 88 0f add r24, r24 + 21e: 99 1f adc r25, r25 + 220: 0a 94 dec r0 + 222: e2 f7 brpl .-8 ; 0x21c <_Z5setupv+0x78> if(ausg & OUT6) { out6::make_low(); } } void on(uint8_t ausg = 255) { if(ausg & OUT1) { - 12a: a8 2f mov r26, r24 - 12c: a1 70 andi r26, 0x01 ; 1 - 12e: 80 ff sbrs r24, 0 - 130: 02 c0 rjmp .+4 ; 0x136 <_Z5setupv+0x8c> + 224: a8 2f mov r26, r24 + 226: a1 70 andi r26, 0x01 ; 1 + 228: 80 ff sbrs r24, 0 + 22a: 02 c0 rjmp .+4 ; 0x230 <_Z5setupv+0x8c> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 132: aa 9a sbi 0x15, 2 ; 21 + 22c: aa 9a sbi 0x15, 2 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 134: a2 9a sbi 0x14, 2 ; 20 + 22e: a2 9a sbi 0x14, 2 ; 20 out1::make_high(); } if(ausg & OUT2) { - 136: f8 2f mov r31, r24 - 138: f2 70 andi r31, 0x02 ; 2 - 13a: 81 ff sbrs r24, 1 - 13c: 02 c0 rjmp .+4 ; 0x142 <_Z5setupv+0x98> + 230: f8 2f mov r31, r24 + 232: f2 70 andi r31, 0x02 ; 2 + 234: 81 ff sbrs r24, 1 + 236: 02 c0 rjmp .+4 ; 0x23c <_Z5setupv+0x98> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 13e: ab 9a sbi 0x15, 3 ; 21 + 238: ab 9a sbi 0x15, 3 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 140: a3 9a sbi 0x14, 3 ; 20 + 23a: a3 9a sbi 0x14, 3 ; 20 out2::make_high(); } if(ausg & OUT3) { - 142: e8 2f mov r30, r24 - 144: e4 70 andi r30, 0x04 ; 4 - 146: 82 ff sbrs r24, 2 - 148: 02 c0 rjmp .+4 ; 0x14e <_Z5setupv+0xa4> + 23c: e8 2f mov r30, r24 + 23e: e4 70 andi r30, 0x04 ; 4 + 240: 82 ff sbrs r24, 2 + 242: 02 c0 rjmp .+4 ; 0x248 <_Z5setupv+0xa4> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 14a: ac 9a sbi 0x15, 4 ; 21 + 244: ac 9a sbi 0x15, 4 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 14c: a4 9a sbi 0x14, 4 ; 20 + 246: a4 9a sbi 0x14, 4 ; 20 out3::make_high(); } if(ausg & OUT4) { - 14e: 78 2f mov r23, r24 - 150: 78 70 andi r23, 0x08 ; 8 - 152: 83 ff sbrs r24, 3 - 154: 02 c0 rjmp .+4 ; 0x15a <_Z5setupv+0xb0> + 248: 78 2f mov r23, r24 + 24a: 78 70 andi r23, 0x08 ; 8 + 24c: 83 ff sbrs r24, 3 + 24e: 02 c0 rjmp .+4 ; 0x254 <_Z5setupv+0xb0> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 156: ad 9a sbi 0x15, 5 ; 21 + 250: ad 9a sbi 0x15, 5 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 158: a5 9a sbi 0x14, 5 ; 20 + 252: a5 9a sbi 0x14, 5 ; 20 out4::make_high(); } if(ausg & OUT5) { - 15a: 68 2f mov r22, r24 - 15c: 60 71 andi r22, 0x10 ; 16 - 15e: 84 ff sbrs r24, 4 - 160: 02 c0 rjmp .+4 ; 0x166 <_Z5setupv+0xbc> + 254: 68 2f mov r22, r24 + 256: 60 71 andi r22, 0x10 ; 16 + 258: 84 ff sbrs r24, 4 + 25a: 02 c0 rjmp .+4 ; 0x260 <_Z5setupv+0xbc> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 162: ae 9a sbi 0x15, 6 ; 21 + 25c: ae 9a sbi 0x15, 6 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 164: a6 9a sbi 0x14, 6 ; 20 + 25e: a6 9a sbi 0x14, 6 ; 20 out5::make_high(); } if(ausg & OUT6) { - 166: 98 2f mov r25, r24 - 168: 90 72 andi r25, 0x20 ; 32 - 16a: 85 ff sbrs r24, 5 - 16c: 02 c0 rjmp .+4 ; 0x172 <_Z5setupv+0xc8> + 260: 98 2f mov r25, r24 + 262: 90 72 andi r25, 0x20 ; 32 + 264: 85 ff sbrs r24, 5 + 266: 02 c0 rjmp .+4 ; 0x26c <_Z5setupv+0xc8> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 16e: af 9a sbi 0x15, 7 ; 21 + 268: af 9a sbi 0x15, 7 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 170: a7 9a sbi 0x14, 7 ; 20 + 26a: a7 9a sbi 0x14, 7 ; 20 #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 172: 8f ef ldi r24, 0xFF ; 255 - 174: b1 ee ldi r27, 0xE1 ; 225 - 176: c4 e0 ldi r28, 0x04 ; 4 - 178: 81 50 subi r24, 0x01 ; 1 - 17a: b0 40 sbci r27, 0x00 ; 0 - 17c: c0 40 sbci r28, 0x00 ; 0 - 17e: e1 f7 brne .-8 ; 0x178 <_Z5setupv+0xce> - 180: 00 c0 rjmp .+0 ; 0x182 <_Z5setupv+0xd8> - 182: 00 00 nop + 26c: 8f ef ldi r24, 0xFF ; 255 + 26e: b1 ee ldi r27, 0xE1 ; 225 + 270: c4 e0 ldi r28, 0x04 ; 4 + 272: 81 50 subi r24, 0x01 ; 1 + 274: b0 40 sbci r27, 0x00 ; 0 + 276: c0 40 sbci r28, 0x00 ; 0 + 278: e1 f7 brne .-8 ; 0x272 <_Z5setupv+0xce> + 27a: 00 c0 rjmp .+0 ; 0x27c <_Z5setupv+0xd8> + 27c: 00 00 nop public: SSR() { init(); } void off(uint8_t ausg = 255) { if(ausg & OUT1) { - 184: aa 23 and r26, r26 - 186: 11 f0 breq .+4 ; 0x18c <_Z5setupv+0xe2> + 27e: aa 23 and r26, r26 + 280: 11 f0 breq .+4 ; 0x286 <_Z5setupv+0xe2> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 188: aa 98 cbi 0x15, 2 ; 21 + 282: aa 98 cbi 0x15, 2 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 18a: a2 9a sbi 0x14, 2 ; 20 + 284: a2 9a sbi 0x14, 2 ; 20 out1::make_low(); } if(ausg & OUT2) { - 18c: ff 23 and r31, r31 - 18e: 11 f0 breq .+4 ; 0x194 <_Z5setupv+0xea> + 286: ff 23 and r31, r31 + 288: 11 f0 breq .+4 ; 0x28e <_Z5setupv+0xea> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 190: ab 98 cbi 0x15, 3 ; 21 + 28a: ab 98 cbi 0x15, 3 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 192: a3 9a sbi 0x14, 3 ; 20 + 28c: a3 9a sbi 0x14, 3 ; 20 out2::make_low(); } if(ausg & OUT3) { - 194: ee 23 and r30, r30 - 196: 11 f0 breq .+4 ; 0x19c <_Z5setupv+0xf2> + 28e: ee 23 and r30, r30 + 290: 11 f0 breq .+4 ; 0x296 <_Z5setupv+0xf2> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 198: ac 98 cbi 0x15, 4 ; 21 + 292: ac 98 cbi 0x15, 4 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 19a: a4 9a sbi 0x14, 4 ; 20 + 294: a4 9a sbi 0x14, 4 ; 20 out3::make_low(); } if(ausg & OUT4) { - 19c: 77 23 and r23, r23 - 19e: 11 f0 breq .+4 ; 0x1a4 <_Z5setupv+0xfa> + 296: 77 23 and r23, r23 + 298: 11 f0 breq .+4 ; 0x29e <_Z5setupv+0xfa> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 1a0: ad 98 cbi 0x15, 5 ; 21 + 29a: ad 98 cbi 0x15, 5 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 1a2: a5 9a sbi 0x14, 5 ; 20 + 29c: a5 9a sbi 0x14, 5 ; 20 out4::make_low(); } if(ausg & OUT5) { - 1a4: 66 23 and r22, r22 - 1a6: 11 f0 breq .+4 ; 0x1ac <_Z5setupv+0x102> + 29e: 66 23 and r22, r22 + 2a0: 11 f0 breq .+4 ; 0x2a6 <_Z5setupv+0x102> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 1a8: ae 98 cbi 0x15, 6 ; 21 + 2a2: ae 98 cbi 0x15, 6 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 1aa: a6 9a sbi 0x14, 6 ; 20 + 2a4: a6 9a sbi 0x14, 6 ; 20 out5::make_low(); } if(ausg & OUT6) { - 1ac: 99 23 and r25, r25 - 1ae: 11 f0 breq .+4 ; 0x1b4 <_Z5setupv+0x10a> + 2a6: 99 23 and r25, r25 + 2a8: 11 f0 breq .+4 ; 0x2ae <_Z5setupv+0x10a> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 1b0: af 98 cbi 0x15, 7 ; 21 + 2aa: af 98 cbi 0x15, 7 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 1b2: a7 9a sbi 0x14, 7 ; 20 - 1b4: 2f 5f subi r18, 0xFF ; 255 - 1b6: 3f 4f sbci r19, 0xFF ; 255 - out6::toggle(); + 2ac: a7 9a sbi 0x14, 7 ; 20 + 2ae: 2f 5f subi r18, 0xFF ; 255 + 2b0: 3f 4f sbci r19, 0xFF ; 255 } + return 0; } void test() { off(); for (uint8_t i=0;i<6;i++) { - 1b8: 26 30 cpi r18, 0x06 ; 6 - 1ba: 31 05 cpc r19, r1 - 1bc: 09 f0 breq .+2 ; 0x1c0 <_Z5setupv+0x116> - 1be: ae cf rjmp .-164 ; 0x11c <_Z5setupv+0x72> + 2b2: 26 30 cpi r18, 0x06 ; 6 + 2b4: 31 05 cpc r19, r1 + 2b6: 09 f0 breq .+2 ; 0x2ba <_Z5setupv+0x116> + 2b8: ae cf rjmp .-164 ; 0x216 <_Z5setupv+0x72> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 1c0: aa 98 cbi 0x15, 2 ; 21 + 2ba: aa 98 cbi 0x15, 2 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 1c2: a2 9a sbi 0x14, 2 ; 20 + 2bc: a2 9a sbi 0x14, 2 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 1c4: ab 98 cbi 0x15, 3 ; 21 + 2be: ab 98 cbi 0x15, 3 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 1c6: a3 9a sbi 0x14, 3 ; 20 + 2c0: a3 9a sbi 0x14, 3 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 1c8: ac 98 cbi 0x15, 4 ; 21 + 2c2: ac 98 cbi 0x15, 4 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 1ca: a4 9a sbi 0x14, 4 ; 20 + 2c4: a4 9a sbi 0x14, 4 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 1cc: ad 98 cbi 0x15, 5 ; 21 + 2c6: ad 98 cbi 0x15, 5 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 1ce: a5 9a sbi 0x14, 5 ; 20 + 2c8: a5 9a sbi 0x14, 5 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 1d0: ae 98 cbi 0x15, 6 ; 21 + 2ca: ae 98 cbi 0x15, 6 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 1d2: a6 9a sbi 0x14, 6 ; 20 + 2cc: a6 9a sbi 0x14, 6 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 1d4: af 98 cbi 0x15, 7 ; 21 + 2ce: af 98 cbi 0x15, 7 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 1d6: a7 9a sbi 0x14, 7 ; 20 - 1d8: ed ea ldi r30, 0xAD ; 173 - 1da: f0 e0 ldi r31, 0x00 ; 0 - 1dc: 83 e2 ldi r24, 0x23 ; 35 + 2d0: a7 9a sbi 0x14, 7 ; 20 + 2d2: ed ed ldi r30, 0xDD ; 221 + 2d4: f0 e0 ldi r31, 0x00 ; 0 + 2d6: 83 e2 ldi r24, 0x23 ; 35 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 1de: c3 9a sbi 0x18, 3 ; 24 + 2d8: c3 9a sbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 1e0: bb 9a sbi 0x17, 3 ; 23 + 2da: bb 9a sbi 0x17, 3 ; 23 UBRRH = 0; UBRRL = (F_CPU / (baudrate * 16L) - 1); } uint8_t uart_putchar(uint8_t c) { led.on(led.YELLOW); loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 1e2: 5d 9b sbis 0x0b, 5 ; 11 - 1e4: fe cf rjmp .-4 ; 0x1e2 <_Z5setupv+0x138> + 2dc: 5d 9b sbis 0x0b, 5 ; 11 + 2de: fe cf rjmp .-4 ; 0x2dc <_Z5setupv+0x138> UDR = c; - 1e6: 8c b9 out 0x0c, r24 ; 12 + 2e0: 8c b9 out 0x0c, r24 ; 12 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 1e8: c3 98 cbi 0x18, 3 ; 24 + 2e2: c3 98 cbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 1ea: bb 9a sbi 0x17, 3 ; 23 + 2e4: bb 9a sbi 0x17, 3 ; 23 init(); this->led = l; send("Uart done!\n"); } void send(const char *text) { while (*text) - 1ec: 81 91 ld r24, Z+ - 1ee: 81 11 cpse r24, r1 - 1f0: f6 cf rjmp .-20 ; 0x1de <_Z5setupv+0x134> + 2e6: 81 91 ld r24, Z+ + 2e8: 81 11 cpse r24, r1 + 2ea: f6 cf rjmp .-20 ; 0x2d8 <_Z5setupv+0x134> // Timer Period: 0,1 s // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: On // Compare B Match Interrupt: Off TCCR1A = 0; - 1f2: 1f bc out 0x2f, r1 ; 47 + 2ec: 1f bc out 0x2f, r1 ; 47 TCCR1B |= (1< + 31a: 5d 9b sbis 0x0b, 5 ; 11 + 31c: fe cf rjmp .-4 ; 0x31a <_Z5setupv+0x176> UDR = c; - 224: 8c b9 out 0x0c, r24 ; 12 + 31e: 8c b9 out 0x0c, r24 ; 12 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 226: c3 98 cbi 0x18, 3 ; 24 + 320: c3 98 cbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 228: bb 9a sbi 0x17, 3 ; 23 + 322: bb 9a sbi 0x17, 3 ; 23 init(); this->led = l; send("Uart done!\n"); } void send(const char *text) { while (*text) - 22a: 81 91 ld r24, Z+ - 22c: 81 11 cpse r24, r1 - 22e: f6 cf rjmp .-20 ; 0x21c <_Z5setupv+0x172> - 230: 23 c0 rjmp .+70 ; 0x278 <_Z5setupv+0x1ce> + 324: 81 91 ld r24, Z+ + 326: 81 11 cpse r24, r1 + 328: f6 cf rjmp .-20 ; 0x316 <_Z5setupv+0x172> + 32a: 2f c0 rjmp .+94 ; 0x38a <_Z5setupv+0x1e6> namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 232: c3 9a sbi 0x18, 3 ; 24 + 32c: c3 9a sbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 234: bb 9a sbi 0x17, 3 ; 23 + 32e: bb 9a sbi 0x17, 3 ; 23 UBRRH = 0; UBRRL = (F_CPU / (baudrate * 16L) - 1); } uint8_t uart_putchar(uint8_t c) { led.on(led.YELLOW); loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 236: 5d 9b sbis 0x0b, 5 ; 11 - 238: fe cf rjmp .-4 ; 0x236 <_Z5setupv+0x18c> + 330: 5d 9b sbis 0x0b, 5 ; 11 + 332: fe cf rjmp .-4 ; 0x330 <_Z5setupv+0x18c> UDR = c; - 23a: 8c b9 out 0x0c, r24 ; 12 + 334: 8c b9 out 0x0c, r24 ; 12 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 23c: c3 98 cbi 0x18, 3 ; 24 + 336: c3 98 cbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 23e: bb 9a sbi 0x17, 3 ; 23 + 338: bb 9a sbi 0x17, 3 ; 23 init(); this->led = l; send("Uart done!\n"); } void send(const char *text) { while (*text) - 240: 81 91 ld r24, Z+ - 242: 81 11 cpse r24, r1 - 244: f6 cf rjmp .-20 ; 0x232 <_Z5setupv+0x188> - 246: 20 c0 rjmp .+64 ; 0x288 <_Z5setupv+0x1de> + 33a: 81 91 ld r24, Z+ + 33c: 81 11 cpse r24, r1 + 33e: f6 cf rjmp .-20 ; 0x32c <_Z5setupv+0x188> + 340: 2c c0 rjmp .+88 ; 0x39a <_Z5setupv+0x1f6> namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 248: c3 9a sbi 0x18, 3 ; 24 + 342: c3 9a sbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 24a: bb 9a sbi 0x17, 3 ; 23 + 344: bb 9a sbi 0x17, 3 ; 23 UBRRH = 0; UBRRL = (F_CPU / (baudrate * 16L) - 1); } uint8_t uart_putchar(uint8_t c) { led.on(led.YELLOW); loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 24c: 5d 9b sbis 0x0b, 5 ; 11 - 24e: fe cf rjmp .-4 ; 0x24c <_Z5setupv+0x1a2> + 346: 5d 9b sbis 0x0b, 5 ; 11 + 348: fe cf rjmp .-4 ; 0x346 <_Z5setupv+0x1a2> UDR = c; - 250: 8c b9 out 0x0c, r24 ; 12 + 34a: 8c b9 out 0x0c, r24 ; 12 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 252: c3 98 cbi 0x18, 3 ; 24 + 34c: c3 98 cbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 254: bb 9a sbi 0x17, 3 ; 23 + 34e: bb 9a sbi 0x17, 3 ; 23 init(); this->led = l; send("Uart done!\n"); } void send(const char *text) { while (*text) - 256: 81 91 ld r24, Z+ - 258: 81 11 cpse r24, r1 - 25a: f6 cf rjmp .-20 ; 0x248 <_Z5setupv+0x19e> - 25c: 23 c0 rjmp .+70 ; 0x2a4 <_Z5setupv+0x1fa> + 350: 81 91 ld r24, Z+ + 352: 81 11 cpse r24, r1 + 354: f6 cf rjmp .-20 ; 0x342 <_Z5setupv+0x19e> + Button(ledclass l) { + init(); + this->led = l; + } + void setup_intr() { + GICR |= (1< + 374: 5d 9b sbis 0x0b, 5 ; 11 + 376: fe cf rjmp .-4 ; 0x374 <_Z5setupv+0x1d0> UDR = c; - 266: 8c b9 out 0x0c, r24 ; 12 + 378: 8c b9 out 0x0c, r24 ; 12 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 268: c3 98 cbi 0x18, 3 ; 24 + 37a: c3 98 cbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 26a: bb 9a sbi 0x17, 3 ; 23 + 37c: bb 9a sbi 0x17, 3 ; 23 init(); this->led = l; send("Uart done!\n"); } void send(const char *text) { while (*text) - 26c: 81 91 ld r24, Z+ - 26e: 81 11 cpse r24, r1 - 270: f6 cf rjmp .-20 ; 0x25e <_Z5setupv+0x1b4> + 37e: 81 91 ld r24, Z+ + 380: 81 11 cpse r24, r1 + 382: f6 cf rjmp .-20 ; 0x370 <_Z5setupv+0x1cc> namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 272: c2 9a sbi 0x18, 2 ; 24 + 384: c2 9a sbi 0x18, 2 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 274: ba 9a sbi 0x17, 2 ; 23 - 276: 1c c0 rjmp .+56 ; 0x2b0 <_Z5setupv+0x206> + 386: ba 9a sbi 0x17, 2 ; 23 + 388: 16 c0 rjmp .+44 ; 0x3b6 <_Z5setupv+0x212> namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 278: c4 98 cbi 0x18, 4 ; 24 + 38a: c4 98 cbi 0x18, 4 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 27a: bc 9a sbi 0x17, 4 ; 23 + 38c: bc 9a sbi 0x17, 4 ; 23 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 27c: c3 9a sbi 0x18, 3 ; 24 + 38e: c3 9a sbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 27e: bb 9a sbi 0x17, 3 ; 23 - 280: e2 ed ldi r30, 0xD2 ; 210 - 282: f0 e0 ldi r31, 0x00 ; 0 - 284: 83 e2 ldi r24, 0x23 ; 35 - 286: d5 cf rjmp .-86 ; 0x232 <_Z5setupv+0x188> + 390: bb 9a sbi 0x17, 3 ; 23 + 392: ef e3 ldi r30, 0x3F ; 63 + 394: f1 e0 ldi r31, 0x01 ; 1 + 396: 83 e2 ldi r24, 0x23 ; 35 + 398: c9 cf rjmp .-110 ; 0x32c <_Z5setupv+0x188> public: Adc() { init(); } void on() { ADCSRA |= (1< - 298: 00 c0 rjmp .+0 ; 0x29a <_Z5setupv+0x1f0> - 29a: 00 00 nop - 29c: ef ed ldi r30, 0xDF ; 223 - 29e: f0 e0 ldi r31, 0x00 ; 0 - 2a0: 83 e2 ldi r24, 0x23 ; 35 - 2a2: d2 cf rjmp .-92 ; 0x248 <_Z5setupv+0x19e> -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 2a4: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 2a6: bb 9a sbi 0x17, 3 ; 23 - 2a8: ef ee ldi r30, 0xEF ; 239 - 2aa: f0 e0 ldi r31, 0x00 ; 0 - 2ac: 83 e2 ldi r24, 0x23 ; 35 - 2ae: d7 cf rjmp .-82 ; 0x25e <_Z5setupv+0x1b4> + 39a: 37 9a sbi 0x06, 7 ; 6 + 39c: 2f ef ldi r18, 0xFF ; 255 + 39e: 81 ee ldi r24, 0xE1 ; 225 + 3a0: 94 e0 ldi r25, 0x04 ; 4 + 3a2: 21 50 subi r18, 0x01 ; 1 + 3a4: 80 40 sbci r24, 0x00 ; 0 + 3a6: 90 40 sbci r25, 0x00 ; 0 + 3a8: e1 f7 brne .-8 ; 0x3a2 <_Z5setupv+0x1fe> + 3aa: 00 c0 rjmp .+0 ; 0x3ac <_Z5setupv+0x208> + 3ac: 00 00 nop + 3ae: ec e4 ldi r30, 0x4C ; 76 + 3b0: f1 e0 ldi r31, 0x01 ; 1 + 3b2: 83 e2 ldi r24, 0x23 ; 35 + 3b4: c6 cf rjmp .-116 ; 0x342 <_Z5setupv+0x19e> r.send("# Setup Button\n"); - //button on + b.setup_intr(); l.off(l.YELLOW); r.send("#### End Bootup ###########################################\n"); l.on(l.GREEN); } - 2b0: cf 91 pop r28 - 2b2: 08 95 ret + 3b6: cf 91 pop r28 + 3b8: 08 95 ret -000002b4
: +000003ba
: int main(void) { + 3ba: cf 93 push r28 + 3bc: df 93 push r29 + 3be: cd b7 in r28, 0x3d ; 61 + 3c0: de b7 in r29, 0x3e ; 62 + 3c2: a9 97 sbiw r28, 0x29 ; 41 + 3c4: 0f b6 in r0, 0x3f ; 63 + 3c6: f8 94 cli + 3c8: de bf out 0x3e, r29 ; 62 + 3ca: 0f be out 0x3f, r0 ; 63 + 3cc: cd bf out 0x3d, r28 ; 61 setup(); - 2b4: 0e 94 55 00 call 0xaa ; 0xaa <_Z5setupv> - 2b8: ff cf rjmp .-2 ; 0x2b8 - -000002ba <__vector_6>: - { - - } -} - -ISR(TIMER1_COMPA_vect) { - 2ba: 1f 92 push r1 - 2bc: 0f 92 push r0 - 2be: 0f b6 in r0, 0x3f ; 63 - 2c0: 0f 92 push r0 - 2c2: 11 24 eor r1, r1 - 2c4: 8f 93 push r24 - 2c6: 9f 93 push r25 - -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - 2c8: 95 b3 in r25, 0x15 ; 21 - Port::port(Port::port() & ~(1< + int16_t target_temp = 25; + 3d2: 29 e1 ldi r18, 0x19 ; 25 + 3d4: 30 e0 ldi r19, 0x00 ; 0 + 3d6: 39 a7 std Y+41, r19 ; 0x29 + 3d8: 28 a7 std Y+40, r18 ; 0x28 + _delay_ms(100); } + uint16_t get(uint8_t pin) { + ADMUX &= ~((1<: -#define USART_H_ - -template -class Usart { - public: - Usart(ledclass l) { - 2de: cf 93 push r28 - 2e0: df 93 push r29 - 2e2: 1f 92 push r1 - 2e4: cd b7 in r28, 0x3d ; 61 - 2e6: de b7 in r29, 0x3e ; 62 - 2e8: 69 83 std Y+1, r22 ; 0x01 - 2ea: bc 9a sbi 0x17, 4 ; 23 - 2ec: bb 9a sbi 0x17, 3 ; 23 - 2ee: ba 9a sbi 0x17, 2 ; 23 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 2f0: c4 98 cbi 0x18, 4 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 2f2: bc 9a sbi 0x17, 4 ; 23 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 2f4: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 2f6: bb 9a sbi 0x17, 3 ; 23 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 2f8: c2 98 cbi 0x18, 2 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 2fa: ba 9a sbi 0x17, 2 ; 23 - private: - void init() { - //txd::make_output(); - //rxd::make_input(); - - UCSRA = 0; - 2fc: 1b b8 out 0x0b, r1 ; 11 - UCSRB = (1<led = l; - send("Uart done!\n"); + __builtin_avr_delay_cycles(__ticks_dc); + 3e4: 35 e3 ldi r19, 0x35 ; 53 + 3e6: 3a 95 dec r19 + 3e8: f1 f7 brne .-4 ; 0x3e6 + 3ea: 00 00 nop + //ADMUX = 0; + _delay_us(10); + ADCSRA |= (1< + //ADCSRA |= (1< + 404: 00 00 nop + //ADMUX = 0; + _delay_us(10); + ADCSRA |= (1< + //ADCSRA |= (1<table[pin][0]-this->table[pin][2])/(this->table[pin][1]-this->table[pin][3])); + 410: e7 e9 ldi r30, 0x97 ; 151 + 412: f1 e0 ldi r31, 0x01 ; 1 + 414: 20 80 ld r2, Z + 416: 31 80 ldd r3, Z+1 ; 0x01 + 418: e9 e9 ldi r30, 0x99 ; 153 + 41a: f1 e0 ldi r31, 0x01 ; 1 + 41c: 00 81 ld r16, Z + 41e: 11 81 ldd r17, Z+1 ; 0x01 + 420: eb e9 ldi r30, 0x9B ; 155 + 422: f1 e0 ldi r31, 0x01 ; 1 + 424: 80 81 ld r24, Z + 426: 91 81 ldd r25, Z+1 ; 0x01 + 428: 91 01 movw r18, r2 + 42a: 28 1b sub r18, r24 + 42c: 39 0b sbc r19, r25 + 42e: c9 01 movw r24, r18 + 430: ed e9 ldi r30, 0x9D ; 157 + 432: f1 e0 ldi r31, 0x01 ; 1 + 434: 20 81 ld r18, Z + 436: 31 81 ldd r19, Z+1 ; 0x01 + 438: b8 01 movw r22, r16 + 43a: 62 1b sub r22, r18 + 43c: 73 0b sbc r23, r19 + 43e: 0e 94 78 07 call 0xef0 ; 0xef0 <__udivmodhi4> + 442: 80 e0 ldi r24, 0x00 ; 0 + 444: 90 e0 ldi r25, 0x00 ; 0 + 446: 0e 94 5f 06 call 0xcbe ; 0xcbe <__floatunsisf> + 44a: c6 2e mov r12, r22 + 44c: d7 2e mov r13, r23 + 44e: e8 2e mov r14, r24 + 450: f9 2e mov r15, r25 + 452: 46 2e mov r4, r22 + 454: 57 2e mov r5, r23 + 456: 68 2e mov r6, r24 + 458: 79 2e mov r7, r25 + return (m * (float)v) + (-m * (float)this->table[pin][1]) + this->table[pin][0]; + 45a: b5 01 movw r22, r10 + 45c: 80 e0 ldi r24, 0x00 ; 0 + 45e: 90 e0 ldi r25, 0x00 ; 0 + 460: 0e 94 5f 06 call 0xcbe ; 0xcbe <__floatunsisf> + 464: 9b 01 movw r18, r22 + 466: ac 01 movw r20, r24 + 468: 6c 2d mov r22, r12 + 46a: 7d 2d mov r23, r13 + 46c: 8e 2d mov r24, r14 + 46e: 9f 2d mov r25, r15 + 470: 0e 94 15 07 call 0xe2a ; 0xe2a <__mulsf3> + 474: 6b 01 movw r12, r22 + 476: 7c 01 movw r14, r24 + 478: 77 fa bst r7, 7 + 47a: 70 94 com r7 + 47c: 77 f8 bld r7, 7 + 47e: 70 94 com r7 + 480: b8 01 movw r22, r16 + 482: 80 e0 ldi r24, 0x00 ; 0 + 484: 90 e0 ldi r25, 0x00 ; 0 + 486: 0e 94 5f 06 call 0xcbe ; 0xcbe <__floatunsisf> + 48a: 9b 01 movw r18, r22 + 48c: ac 01 movw r20, r24 + 48e: c3 01 movw r24, r6 + 490: b2 01 movw r22, r4 + 492: 0e 94 15 07 call 0xe2a ; 0xe2a <__mulsf3> + 496: 9b 01 movw r18, r22 + 498: ac 01 movw r20, r24 + 49a: c7 01 movw r24, r14 + 49c: b6 01 movw r22, r12 + 49e: 0e 94 cb 05 call 0xb96 ; 0xb96 <__addsf3> + 4a2: 6b 01 movw r12, r22 + 4a4: 7c 01 movw r14, r24 + 4a6: b1 01 movw r22, r2 + 4a8: 80 e0 ldi r24, 0x00 ; 0 + 4aa: 90 e0 ldi r25, 0x00 ; 0 + 4ac: 0e 94 5f 06 call 0xcbe ; 0xcbe <__floatunsisf> + 4b0: 9b 01 movw r18, r22 + 4b2: ac 01 movw r20, r24 + 4b4: c7 01 movw r24, r14 + 4b6: b6 01 movw r22, r12 + 4b8: 0e 94 cb 05 call 0xb96 ; 0xb96 <__addsf3> + 4bc: 6a a3 std Y+34, r22 ; 0x22 + 4be: 7b a3 std Y+35, r23 ; 0x23 + 4c0: 8c a3 std Y+36, r24 ; 0x24 + 4c2: 9d a3 std Y+37, r25 ; 0x25 + loop_until_bit_is_set(ADCSRA, ADIF); + //ADCSRA |= (1<table[pin][0]-this->table[pin][2])/(this->table[pin][1]-this->table[pin][3])); + 4c4: ef e9 ldi r30, 0x9F ; 159 + 4c6: f1 e0 ldi r31, 0x01 ; 1 + 4c8: 20 80 ld r2, Z + 4ca: 31 80 ldd r3, Z+1 ; 0x01 + 4cc: e1 ea ldi r30, 0xA1 ; 161 + 4ce: f1 e0 ldi r31, 0x01 ; 1 + 4d0: 00 81 ld r16, Z + 4d2: 11 81 ldd r17, Z+1 ; 0x01 + 4d4: e3 ea ldi r30, 0xA3 ; 163 + 4d6: f1 e0 ldi r31, 0x01 ; 1 + 4d8: 80 81 ld r24, Z + 4da: 91 81 ldd r25, Z+1 ; 0x01 + 4dc: 91 01 movw r18, r2 + 4de: 28 1b sub r18, r24 + 4e0: 39 0b sbc r19, r25 + 4e2: c9 01 movw r24, r18 + 4e4: e5 ea ldi r30, 0xA5 ; 165 + 4e6: f1 e0 ldi r31, 0x01 ; 1 + 4e8: 20 81 ld r18, Z + 4ea: 31 81 ldd r19, Z+1 ; 0x01 + 4ec: b8 01 movw r22, r16 + 4ee: 62 1b sub r22, r18 + 4f0: 73 0b sbc r23, r19 + 4f2: 0e 94 78 07 call 0xef0 ; 0xef0 <__udivmodhi4> + 4f6: 80 e0 ldi r24, 0x00 ; 0 + 4f8: 90 e0 ldi r25, 0x00 ; 0 + 4fa: 0e 94 5f 06 call 0xcbe ; 0xcbe <__floatunsisf> + 4fe: c6 2e mov r12, r22 + 500: d7 2e mov r13, r23 + 502: e8 2e mov r14, r24 + 504: f9 2e mov r15, r25 + 506: 46 2e mov r4, r22 + 508: 57 2e mov r5, r23 + 50a: 68 2e mov r6, r24 + 50c: 79 2e mov r7, r25 + return (m * (float)v) + (-m * (float)this->table[pin][1]) + this->table[pin][0]; + 50e: b4 01 movw r22, r8 + 510: 80 e0 ldi r24, 0x00 ; 0 + 512: 90 e0 ldi r25, 0x00 ; 0 + 514: 0e 94 5f 06 call 0xcbe ; 0xcbe <__floatunsisf> + 518: 9b 01 movw r18, r22 + 51a: ac 01 movw r20, r24 + 51c: 6c 2d mov r22, r12 + 51e: 7d 2d mov r23, r13 + 520: 8e 2d mov r24, r14 + 522: 9f 2d mov r25, r15 + 524: 0e 94 15 07 call 0xe2a ; 0xe2a <__mulsf3> + 528: 6b 01 movw r12, r22 + 52a: 7c 01 movw r14, r24 + 52c: 77 fa bst r7, 7 + 52e: 70 94 com r7 + 530: 77 f8 bld r7, 7 + 532: 70 94 com r7 + 534: b8 01 movw r22, r16 + 536: 80 e0 ldi r24, 0x00 ; 0 + 538: 90 e0 ldi r25, 0x00 ; 0 + 53a: 0e 94 5f 06 call 0xcbe ; 0xcbe <__floatunsisf> + 53e: 9b 01 movw r18, r22 + 540: ac 01 movw r20, r24 + 542: c3 01 movw r24, r6 + 544: b2 01 movw r22, r4 + 546: 0e 94 15 07 call 0xe2a ; 0xe2a <__mulsf3> + 54a: 9b 01 movw r18, r22 + 54c: ac 01 movw r20, r24 + 54e: c7 01 movw r24, r14 + 550: b6 01 movw r22, r12 + 552: 0e 94 cb 05 call 0xb96 ; 0xb96 <__addsf3> + 556: 6b 01 movw r12, r22 + 558: 7c 01 movw r14, r24 + 55a: b1 01 movw r22, r2 + 55c: 80 e0 ldi r24, 0x00 ; 0 + 55e: 90 e0 ldi r25, 0x00 ; 0 + 560: 0e 94 5f 06 call 0xcbe ; 0xcbe <__floatunsisf> + 564: 9b 01 movw r18, r22 + 566: ac 01 movw r20, r24 + 568: c7 01 movw r24, r14 + 56a: b6 01 movw r22, r12 + 56c: 0e 94 cb 05 call 0xb96 ; 0xb96 <__addsf3> + 570: 6e a3 std Y+38, r22 ; 0x26 + 572: 7f a3 std Y+39, r23 ; 0x27 + 574: d8 2e mov r13, r24 + 576: c9 2e mov r12, r25 + { + uint16_t v0 = a.get(0); + uint16_t v1 = a.get(1); + float t0 = a.convert(v0, 0); + float t1 = a.convert(v1, 1); + float tm = (t0+t1)/2; + 578: 76 2f mov r23, r22 + 57a: 6f a1 ldd r22, Y+39 ; 0x27 + 57c: 27 2f mov r18, r23 + 57e: 36 2f mov r19, r22 + 580: 4d 2d mov r20, r13 + 582: 5c 2d mov r21, r12 + 584: ba a1 ldd r27, Y+34 ; 0x22 + 586: ab a1 ldd r26, Y+35 ; 0x23 + 588: fc a1 ldd r31, Y+36 ; 0x24 + 58a: ed a1 ldd r30, Y+37 ; 0x25 + 58c: 6b 2f mov r22, r27 + 58e: 7a 2f mov r23, r26 + 590: 8f 2f mov r24, r31 + 592: 9e 2f mov r25, r30 + 594: 0e 94 cb 05 call 0xb96 ; 0xb96 <__addsf3> + 598: 20 e0 ldi r18, 0x00 ; 0 + 59a: 30 e0 ldi r19, 0x00 ; 0 + 59c: 40 e0 ldi r20, 0x00 ; 0 + 59e: 5f e3 ldi r21, 0x3F ; 63 + 5a0: 0e 94 15 07 call 0xe2a ; 0xe2a <__mulsf3> + 5a4: 76 2e mov r7, r22 + 5a6: 67 2e mov r6, r23 + 5a8: 58 2e mov r5, r24 + 5aa: 49 2e mov r4, r25 } - void send(const char *text) { - while (*text) - 310: 85 e5 ldi r24, 0x55 ; 85 + void send(uint8_t wert) { + uart_putchar(wert); + } + int16_t readTemp() { + int16_t t = this->temp; + 5ac: e8 ec ldi r30, 0xC8 ; 200 + 5ae: f1 e0 ldi r31, 0x01 ; 1 + 5b0: 80 81 ld r24, Z + 5b2: 91 81 ldd r25, Z+1 ; 0x01 + this->temp = -1; + 5b4: 2f ef ldi r18, 0xFF ; 255 + 5b6: 3f ef ldi r19, 0xFF ; 255 + 5b8: 31 83 std Z+1, r19 ; 0x01 + 5ba: 20 83 st Z, r18 + int16_t temp = r.readTemp(); + if(temp != -1) { + 5bc: 8f 3f cpi r24, 0xFF ; 255 + 5be: 3f ef ldi r19, 0xFF ; 255 + 5c0: 93 07 cpc r25, r19 + 5c2: 11 f0 breq .+4 ; 0x5c8 <__stack+0x169> + target_temp = temp; + 5c4: 99 a7 std Y+41, r25 ; 0x29 + 5c6: 88 a7 std Y+40, r24 ; 0x28 + } + pwm_value = (target_temp+5) - tm; + 5c8: 68 a5 ldd r22, Y+40 ; 0x28 + 5ca: 79 a5 ldd r23, Y+41 ; 0x29 + 5cc: 6b 5f subi r22, 0xFB ; 251 + 5ce: 7f 4f sbci r23, 0xFF ; 255 + 5d0: 88 27 eor r24, r24 + 5d2: 77 fd sbrc r23, 7 + 5d4: 80 95 com r24 + 5d6: 98 2f mov r25, r24 + 5d8: 0e 94 61 06 call 0xcc2 ; 0xcc2 <__floatsisf> + 5dc: 27 2d mov r18, r7 + 5de: 36 2d mov r19, r6 + 5e0: 45 2d mov r20, r5 + 5e2: 54 2d mov r21, r4 + 5e4: 0e 94 ca 05 call 0xb94 ; 0xb94 <__subsf3> + 5e8: f6 2e mov r15, r22 + 5ea: e7 2e mov r14, r23 + 5ec: 38 2e mov r3, r24 + 5ee: 29 2e mov r2, r25 + void setPwm(uint8_t ausg, float val) { + if(ausg < 0) + ausg = 0; + if(ausg > 5) + ausg = 5; + if(val < 0) + 5f0: 20 e0 ldi r18, 0x00 ; 0 + 5f2: 30 e0 ldi r19, 0x00 ; 0 + 5f4: a9 01 movw r20, r18 + 5f6: 0e 94 2f 06 call 0xc5e ; 0xc5e <__cmpsf2> + 5fa: 88 23 and r24, r24 + 5fc: 0c f4 brge .+2 ; 0x600 <__stack+0x1a1> + 5fe: 99 c1 rjmp .+818 ; 0x932 <__stack+0x4d3> + val = 0; + if(val > 20) + 600: 20 e0 ldi r18, 0x00 ; 0 + 602: 30 e0 ldi r19, 0x00 ; 0 + 604: 40 ea ldi r20, 0xA0 ; 160 + 606: 51 e4 ldi r21, 0x41 ; 65 + 608: 6f 2d mov r22, r15 + 60a: 7e 2d mov r23, r14 + 60c: 83 2d mov r24, r3 + 60e: 92 2d mov r25, r2 + 610: 0e 94 11 07 call 0xe22 ; 0xe22 <__gesf2> + 614: 18 16 cp r1, r24 + 616: 0c f4 brge .+2 ; 0x61a <__stack+0x1bb> + 618: 91 c1 rjmp .+802 ; 0x93c <__stack+0x4dd> + 61a: 7f 2d mov r23, r15 + 61c: 6e 2d mov r22, r14 + 61e: 93 2d mov r25, r3 + 620: 82 2d mov r24, r2 + 622: 90 c1 rjmp .+800 ; 0x944 <__stack+0x4e5> namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 312: c3 9a sbi 0x18, 3 ; 24 + 624: c3 9a sbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 314: bb 9a sbi 0x17, 3 ; 23 + 626: bb 9a sbi 0x17, 3 ; 23 UBRRH = 0; UBRRL = (F_CPU / (baudrate * 16L) - 1); } uint8_t uart_putchar(uint8_t c) { led.on(led.YELLOW); loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 316: 5d 9b sbis 0x0b, 5 ; 11 - 318: fe cf rjmp .-4 ; 0x316 <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE+0x38> + 628: 5d 9b sbis 0x0b, 5 ; 11 + 62a: fe cf rjmp .-4 ; 0x628 <__stack+0x1c9> UDR = c; - 31a: 8c b9 out 0x0c, r24 ; 12 + 62c: 8c b9 out 0x0c, r24 ; 12 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 31c: c3 98 cbi 0x18, 3 ; 24 + 62e: c3 98 cbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 31e: bb 9a sbi 0x17, 3 ; 23 + 630: bb 9a sbi 0x17, 3 ; 23 init(); this->led = l; send("Uart done!\n"); } void send(const char *text) { while (*text) - 320: 81 91 ld r24, Z+ - 322: 81 11 cpse r24, r1 - 324: f6 cf rjmp .-20 ; 0x312 <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE+0x34> + 632: 81 91 ld r24, Z+ + 634: 81 11 cpse r24, r1 + 636: f6 cf rjmp .-20 ; 0x624 <__stack+0x1c5> + o.setPwm(0, pwm_value); + char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); + 638: 8e 01 movw r16, r28 + 63a: 09 5e subi r16, 0xE9 ; 233 + 63c: 1f 4f sbci r17, 0xFF ; 255 + 63e: 22 e0 ldi r18, 0x02 ; 2 + 640: 4a e0 ldi r20, 0x0A ; 10 + 642: 6f 2d mov r22, r15 + 644: 7e 2d mov r23, r14 + 646: 83 2d mov r24, r3 + 648: 92 2d mov r25, r2 + 64a: 0e 94 92 07 call 0xf24 ; 0xf24 + 64e: fc 01 movw r30, r24 + 650: 20 81 ld r18, Z + 652: 22 23 and r18, r18 + 654: 59 f0 breq .+22 ; 0x66c <__stack+0x20d> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + 656: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 658: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 65a: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 65c: 5d 9b sbis 0x0b, 5 ; 11 + 65e: fe cf rjmp .-4 ; 0x65c <__stack+0x1fd> + UDR = c; + 660: 2c b9 out 0x0c, r18 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 662: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 664: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 666: 21 91 ld r18, Z+ + 668: 21 11 cpse r18, r1 + 66a: f6 cf rjmp .-20 ; 0x658 <__stack+0x1f9> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 66c: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 66e: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 670: 5d 9b sbis 0x0b, 5 ; 11 + 672: fe cf rjmp .-4 ; 0x670 <__stack+0x211> + UDR = c; + 674: 8b e3 ldi r24, 0x3B ; 59 + 676: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 678: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 67a: bb 9a sbi 0x17, 3 ; 23 + 67c: 0f 2e mov r0, r31 + 67e: fa e6 ldi r31, 0x6A ; 106 + 680: ef 2e mov r14, r31 + 682: f1 e0 ldi r31, 0x01 ; 1 + 684: ff 2e mov r15, r31 + 686: f0 2d mov r31, r0 + 688: f7 01 movw r30, r14 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 68a: 83 e6 ldi r24, 0x63 ; 99 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 68c: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 68e: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 690: 5d 9b sbis 0x0b, 5 ; 11 + 692: fe cf rjmp .-4 ; 0x690 <__stack+0x231> + UDR = c; + 694: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 696: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 698: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 69a: 81 91 ld r24, Z+ + 69c: 81 11 cpse r24, r1 + 69e: f6 cf rjmp .-20 ; 0x68c <__stack+0x22d> + target_temp = temp; + } + pwm_value = (target_temp+5) - tm; + o.setPwm(0, pwm_value); + char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); + char vs[11]; r.send("cm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); + 6a0: b4 01 movw r22, r8 + 6a2: 6a 0d add r22, r10 + 6a4: 7b 1d adc r23, r11 + 6a6: 80 e0 ldi r24, 0x00 ; 0 + 6a8: 90 e0 ldi r25, 0x00 ; 0 + 6aa: 0e 94 5f 06 call 0xcbe ; 0xcbe <__floatunsisf> + 6ae: 20 e0 ldi r18, 0x00 ; 0 + 6b0: 30 e0 ldi r19, 0x00 ; 0 + 6b2: 40 e0 ldi r20, 0x00 ; 0 + 6b4: 5f e3 ldi r21, 0x3F ; 63 + 6b6: 0e 94 15 07 call 0xe2a ; 0xe2a <__mulsf3> + 6ba: 8e 01 movw r16, r28 + 6bc: 04 5f subi r16, 0xF4 ; 244 + 6be: 1f 4f sbci r17, 0xFF ; 255 + 6c0: 22 e0 ldi r18, 0x02 ; 2 + 6c2: 4a e0 ldi r20, 0x0A ; 10 + 6c4: 0e 94 92 07 call 0xf24 ; 0xf24 + 6c8: fc 01 movw r30, r24 + 6ca: 20 81 ld r18, Z + 6cc: 22 23 and r18, r18 + 6ce: 59 f0 breq .+22 ; 0x6e6 <__stack+0x287> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + 6d0: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 6d2: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 6d4: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 6d6: 5d 9b sbis 0x0b, 5 ; 11 + 6d8: fe cf rjmp .-4 ; 0x6d6 <__stack+0x277> + UDR = c; + 6da: 2c b9 out 0x0c, r18 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 6dc: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 6de: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 6e0: 21 91 ld r18, Z+ + 6e2: 21 11 cpse r18, r1 + 6e4: f6 cf rjmp .-20 ; 0x6d2 <__stack+0x273> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 6e6: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 6e8: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 6ea: 5d 9b sbis 0x0b, 5 ; 11 + 6ec: fe cf rjmp .-4 ; 0x6ea <__stack+0x28b> + UDR = c; + 6ee: 8b e3 ldi r24, 0x3B ; 59 + 6f0: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 6f2: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 6f4: bb 9a sbi 0x17, 3 ; 23 + 6f6: ee e6 ldi r30, 0x6E ; 110 + 6f8: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 6fa: 86 e7 ldi r24, 0x76 ; 118 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 6fc: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 6fe: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 700: 5d 9b sbis 0x0b, 5 ; 11 + 702: fe cf rjmp .-4 ; 0x700 <__stack+0x2a1> + UDR = c; + 704: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 706: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 708: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 70a: 81 91 ld r24, Z+ + 70c: 81 11 cpse r24, r1 + 70e: f6 cf rjmp .-20 ; 0x6fc <__stack+0x29d> + } + pwm_value = (target_temp+5) - tm; + o.setPwm(0, pwm_value); + char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); + char vs[11]; r.send("cm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); + r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); + 710: 4a e0 ldi r20, 0x0A ; 10 + 712: 50 e0 ldi r21, 0x00 ; 0 + 714: be 01 movw r22, r28 + 716: 64 5f subi r22, 0xF4 ; 244 + 718: 7f 4f sbci r23, 0xFF ; 255 + 71a: c5 01 movw r24, r10 + 71c: 0e 94 b3 07 call 0xf66 ; 0xf66 + 720: fc 01 movw r30, r24 + 722: 20 81 ld r18, Z + 724: 22 23 and r18, r18 + 726: 59 f0 breq .+22 ; 0x73e <__stack+0x2df> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + 728: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 72a: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 72c: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 72e: 5d 9b sbis 0x0b, 5 ; 11 + 730: fe cf rjmp .-4 ; 0x72e <__stack+0x2cf> + UDR = c; + 732: 2c b9 out 0x0c, r18 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 734: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 736: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 738: 21 91 ld r18, Z+ + 73a: 21 11 cpse r18, r1 + 73c: f6 cf rjmp .-20 ; 0x72a <__stack+0x2cb> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 73e: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 740: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 742: 5d 9b sbis 0x0b, 5 ; 11 + 744: fe cf rjmp .-4 ; 0x742 <__stack+0x2e3> + UDR = c; + 746: 8b e3 ldi r24, 0x3B ; 59 + 748: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 74a: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 74c: bb 9a sbi 0x17, 3 ; 23 + 74e: e2 e7 ldi r30, 0x72 ; 114 + 750: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 752: 86 e7 ldi r24, 0x76 ; 118 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 754: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 756: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 758: 5d 9b sbis 0x0b, 5 ; 11 + 75a: fe cf rjmp .-4 ; 0x758 <__stack+0x2f9> + UDR = c; + 75c: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 75e: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 760: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 762: 81 91 ld r24, Z+ + 764: 81 11 cpse r24, r1 + 766: f6 cf rjmp .-20 ; 0x754 <__stack+0x2f5> + pwm_value = (target_temp+5) - tm; + o.setPwm(0, pwm_value); + char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); + char vs[11]; r.send("cm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); + r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); + r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";"); + 768: 4a e0 ldi r20, 0x0A ; 10 + 76a: 50 e0 ldi r21, 0x00 ; 0 + 76c: be 01 movw r22, r28 + 76e: 64 5f subi r22, 0xF4 ; 244 + 770: 7f 4f sbci r23, 0xFF ; 255 + 772: c4 01 movw r24, r8 + 774: 0e 94 b3 07 call 0xf66 ; 0xf66 + 778: fc 01 movw r30, r24 + 77a: 20 81 ld r18, Z + 77c: 22 23 and r18, r18 + 77e: 59 f0 breq .+22 ; 0x796 <__stack+0x337> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + 780: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 782: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 784: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 786: 5d 9b sbis 0x0b, 5 ; 11 + 788: fe cf rjmp .-4 ; 0x786 <__stack+0x327> + UDR = c; + 78a: 2c b9 out 0x0c, r18 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 78c: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 78e: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 790: 21 91 ld r18, Z+ + 792: 21 11 cpse r18, r1 + 794: f6 cf rjmp .-20 ; 0x782 <__stack+0x323> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 796: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 798: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 79a: 5d 9b sbis 0x0b, 5 ; 11 + 79c: fe cf rjmp .-4 ; 0x79a <__stack+0x33b> + UDR = c; + 79e: 8b e3 ldi r24, 0x3B ; 59 + 7a0: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 7a2: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 7a4: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 7a6: 83 e6 ldi r24, 0x63 ; 99 + 7a8: f7 01 movw r30, r14 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 7aa: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 7ac: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 7ae: 5d 9b sbis 0x0b, 5 ; 11 + 7b0: fe cf rjmp .-4 ; 0x7ae <__stack+0x34f> + UDR = c; + 7b2: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 7b4: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 7b6: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 7b8: 81 91 ld r24, Z+ + 7ba: 81 11 cpse r24, r1 + 7bc: f6 cf rjmp .-20 ; 0x7aa <__stack+0x34b> + o.setPwm(0, pwm_value); + char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); + char vs[11]; r.send("cm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); + r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); + r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";"); + char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";"); + 7be: 8e 01 movw r16, r28 + 7c0: 0f 5f subi r16, 0xFF ; 255 + 7c2: 1f 4f sbci r17, 0xFF ; 255 + 7c4: 22 e0 ldi r18, 0x02 ; 2 + 7c6: 4a e0 ldi r20, 0x0A ; 10 + 7c8: 67 2d mov r22, r7 + 7ca: 76 2d mov r23, r6 + 7cc: 85 2d mov r24, r5 + 7ce: 94 2d mov r25, r4 + 7d0: 0e 94 92 07 call 0xf24 ; 0xf24 + 7d4: fc 01 movw r30, r24 + 7d6: 20 81 ld r18, Z + 7d8: 22 23 and r18, r18 + 7da: 59 f0 breq .+22 ; 0x7f2 <__stack+0x393> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + 7dc: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 7de: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 7e0: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 7e2: 5d 9b sbis 0x0b, 5 ; 11 + 7e4: fe cf rjmp .-4 ; 0x7e2 <__stack+0x383> + UDR = c; + 7e6: 2c b9 out 0x0c, r18 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 7e8: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 7ea: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 7ec: 21 91 ld r18, Z+ + 7ee: 21 11 cpse r18, r1 + 7f0: f6 cf rjmp .-20 ; 0x7de <__stack+0x37f> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 7f2: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 7f4: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 7f6: 5d 9b sbis 0x0b, 5 ; 11 + 7f8: fe cf rjmp .-4 ; 0x7f6 <__stack+0x397> + UDR = c; + 7fa: 8b e3 ldi r24, 0x3B ; 59 + 7fc: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 7fe: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 800: bb 9a sbi 0x17, 3 ; 23 + 802: e6 e7 ldi r30, 0x76 ; 118 + 804: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 806: 83 e6 ldi r24, 0x63 ; 99 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 808: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 80a: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 80c: 5d 9b sbis 0x0b, 5 ; 11 + 80e: fe cf rjmp .-4 ; 0x80c <__stack+0x3ad> + UDR = c; + 810: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 812: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 814: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 816: 81 91 ld r24, Z+ + 818: 81 11 cpse r24, r1 + 81a: f6 cf rjmp .-20 ; 0x808 <__stack+0x3a9> + char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); + char vs[11]; r.send("cm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); + r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); + r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";"); + char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";"); + r.send("c1="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); + 81c: 8e 01 movw r16, r28 + 81e: 0f 5f subi r16, 0xFF ; 255 + 820: 1f 4f sbci r17, 0xFF ; 255 + 822: 22 e0 ldi r18, 0x02 ; 2 + 824: 4a e0 ldi r20, 0x0A ; 10 + 826: fa a1 ldd r31, Y+34 ; 0x22 + 828: eb a1 ldd r30, Y+35 ; 0x23 + 82a: 5c a1 ldd r21, Y+36 ; 0x24 + 82c: 3d a1 ldd r19, Y+37 ; 0x25 + 82e: 6f 2f mov r22, r31 + 830: 7e 2f mov r23, r30 + 832: 85 2f mov r24, r21 + 834: 93 2f mov r25, r19 + 836: 0e 94 92 07 call 0xf24 ; 0xf24 + 83a: fc 01 movw r30, r24 + 83c: 20 81 ld r18, Z + 83e: 22 23 and r18, r18 + 840: 59 f0 breq .+22 ; 0x858 <__stack+0x3f9> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + 842: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 844: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 846: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 848: 5d 9b sbis 0x0b, 5 ; 11 + 84a: fe cf rjmp .-4 ; 0x848 <__stack+0x3e9> + UDR = c; + 84c: 2c b9 out 0x0c, r18 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 84e: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 850: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 852: 21 91 ld r18, Z+ + 854: 21 11 cpse r18, r1 + 856: f6 cf rjmp .-20 ; 0x844 <__stack+0x3e5> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 858: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 85a: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 85c: 5d 9b sbis 0x0b, 5 ; 11 + 85e: fe cf rjmp .-4 ; 0x85c <__stack+0x3fd> + UDR = c; + 860: 8b e3 ldi r24, 0x3B ; 59 + 862: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 864: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 866: bb 9a sbi 0x17, 3 ; 23 + 868: ea e7 ldi r30, 0x7A ; 122 + 86a: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 86c: 83 e6 ldi r24, 0x63 ; 99 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 86e: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 870: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 872: 5d 9b sbis 0x0b, 5 ; 11 + 874: fe cf rjmp .-4 ; 0x872 <__stack+0x413> + UDR = c; + 876: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 878: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 87a: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 87c: 81 91 ld r24, Z+ + 87e: 81 11 cpse r24, r1 + 880: f6 cf rjmp .-20 ; 0x86e <__stack+0x40f> + char vs[11]; r.send("cm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); + r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); + r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";"); + char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";"); + r.send("c1="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); + r.send("c2="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";"); + 882: 8e 01 movw r16, r28 + 884: 0f 5f subi r16, 0xFF ; 255 + 886: 1f 4f sbci r17, 0xFF ; 255 + 888: 22 e0 ldi r18, 0x02 ; 2 + 88a: 4a e0 ldi r20, 0x0A ; 10 + 88c: fe a1 ldd r31, Y+38 ; 0x26 + 88e: ef a1 ldd r30, Y+39 ; 0x27 + 890: 6f 2f mov r22, r31 + 892: 7e 2f mov r23, r30 + 894: 8d 2d mov r24, r13 + 896: 9c 2d mov r25, r12 + 898: 0e 94 92 07 call 0xf24 ; 0xf24 + 89c: fc 01 movw r30, r24 + 89e: 20 81 ld r18, Z + 8a0: 22 23 and r18, r18 + 8a2: 59 f0 breq .+22 ; 0x8ba <__stack+0x45b> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + 8a4: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 8a6: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 8a8: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 8aa: 5d 9b sbis 0x0b, 5 ; 11 + 8ac: fe cf rjmp .-4 ; 0x8aa <__stack+0x44b> + UDR = c; + 8ae: 2c b9 out 0x0c, r18 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 8b0: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 8b2: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 8b4: 21 91 ld r18, Z+ + 8b6: 21 11 cpse r18, r1 + 8b8: f6 cf rjmp .-20 ; 0x8a6 <__stack+0x447> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 8ba: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 8bc: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 8be: 5d 9b sbis 0x0b, 5 ; 11 + 8c0: fe cf rjmp .-4 ; 0x8be <__stack+0x45f> + UDR = c; + 8c2: 8b e3 ldi r24, 0x3B ; 59 + 8c4: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 8c6: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 8c8: bb 9a sbi 0x17, 3 ; 23 + 8ca: ee e7 ldi r30, 0x7E ; 126 + 8cc: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 8ce: 88 e6 ldi r24, 0x68 ; 104 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 8d0: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 8d2: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 8d4: 5d 9b sbis 0x0b, 5 ; 11 + 8d6: fe cf rjmp .-4 ; 0x8d4 <__stack+0x475> + UDR = c; + 8d8: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 8da: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 8dc: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 8de: 81 91 ld r24, Z+ + 8e0: 81 11 cpse r24, r1 + 8e2: f6 cf rjmp .-20 ; 0x8d0 <__stack+0x471> + r.send("c1="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); + r.send("c2="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";"); + //temp_ziel_wert + //motor_ziel_wert + r.send((o.isOn(0)==1)?"hon=1;":"hon=0;"); + r.send((o.isOn(1)==1)?"mon=1;":"mon=0;"); + 8e4: 9a 9b sbis 0x13, 2 ; 19 + 8e6: 03 c0 rjmp .+6 ; 0x8ee <__stack+0x48f> + 8e8: e2 e6 ldi r30, 0x62 ; 98 + 8ea: f1 e0 ldi r31, 0x01 ; 1 + 8ec: 02 c0 rjmp .+4 ; 0x8f2 <__stack+0x493> + 8ee: eb e5 ldi r30, 0x5B ; 91 + 8f0: f1 e0 ldi r31, 0x01 ; 1 + 8f2: 80 81 ld r24, Z + 8f4: 88 23 and r24, r24 + 8f6: 59 f0 breq .+22 ; 0x90e <__stack+0x4af> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + 8f8: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 8fa: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 8fc: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 8fe: 5d 9b sbis 0x0b, 5 ; 11 + 900: fe cf rjmp .-4 ; 0x8fe <__stack+0x49f> + UDR = c; + 902: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 904: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 906: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 908: 81 91 ld r24, Z+ + 90a: 81 11 cpse r24, r1 + 90c: f6 cf rjmp .-20 ; 0x8fa <__stack+0x49b> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 90e: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 910: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 912: 5d 9b sbis 0x0b, 5 ; 11 + 914: fe cf rjmp .-4 ; 0x912 <__stack+0x4b3> + UDR = c; + 916: 8a e0 ldi r24, 0x0A ; 10 + 918: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 91a: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 91c: bb 9a sbi 0x17, 3 ; 23 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 91e: ff ef ldi r31, 0xFF ; 255 + 920: 21 ee ldi r18, 0xE1 ; 225 + 922: 34 e0 ldi r19, 0x04 ; 4 + 924: f1 50 subi r31, 0x01 ; 1 + 926: 20 40 sbci r18, 0x00 ; 0 + 928: 30 40 sbci r19, 0x00 ; 0 + 92a: e1 f7 brne .-8 ; 0x924 <__stack+0x4c5> + 92c: 00 c0 rjmp .+0 ; 0x92e <__stack+0x4cf> + 92e: 00 00 nop +{ + setup(); + int16_t target_temp = 25; + float pwm_value = 0; + while(1) + 930: 54 cd rjmp .-1368 ; 0x3da + if(ausg < 0) + ausg = 0; + if(ausg > 5) + ausg = 5; + if(val < 0) + val = 0; + 932: 70 e0 ldi r23, 0x00 ; 0 + 934: 60 e0 ldi r22, 0x00 ; 0 + 936: 90 e0 ldi r25, 0x00 ; 0 + 938: 80 e0 ldi r24, 0x00 ; 0 + 93a: 04 c0 rjmp .+8 ; 0x944 <__stack+0x4e5> + if(val > 20) + val = 20; + 93c: 70 e0 ldi r23, 0x00 ; 0 + 93e: 60 e0 ldi r22, 0x00 ; 0 + 940: 90 ea ldi r25, 0xA0 ; 160 + 942: 81 e4 ldi r24, 0x41 ; 65 + this->pwm[ausg] = (uint8_t)val; + 944: 46 2f mov r20, r22 + 946: 28 2f mov r18, r24 + 948: 67 2f mov r22, r23 + 94a: 74 2f mov r23, r20 + 94c: 89 2f mov r24, r25 + 94e: 92 2f mov r25, r18 + 950: 0e 94 33 06 call 0xc66 ; 0xc66 <__fixunssfsi> + 954: 60 93 cb 01 sts 0x01CB, r22 + 958: e5 e8 ldi r30, 0x85 ; 133 + 95a: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 95c: 80 e7 ldi r24, 0x70 ; 112 + 95e: 62 ce rjmp .-828 ; 0x624 <__stack+0x1c5> + +00000960 <__vector_6>: + r.send("\n"); + _delay_ms(100); + } +} + +ISR(TIMER1_COMPA_vect) { + 960: 1f 92 push r1 + 962: 0f 92 push r0 + 964: 0f b6 in r0, 0x3f ; 63 + 966: 0f 92 push r0 + 968: 11 24 eor r1, r1 + 96a: 2f 93 push r18 + 96c: 3f 93 push r19 + 96e: 4f 93 push r20 + 970: 5f 93 push r21 + 972: 6f 93 push r22 + 974: 7f 93 push r23 + 976: 8f 93 push r24 + 978: 9f 93 push r25 + 97a: af 93 push r26 + 97c: bf 93 push r27 + 97e: ef 93 push r30 + 980: ff 93 push r31 + if(ausg > 5) + ausg = 5; + return this->pwm[ausg]; + } + void timer() { + if (this->pct++ >= 20) { + 982: 80 91 ca 01 lds r24, 0x01CA + 986: 84 31 cpi r24, 0x14 ; 20 + 988: 08 f4 brcc .+2 ; 0x98c <__vector_6+0x2c> + 98a: 51 c0 rjmp .+162 ; 0xa2e <__vector_6+0xce> + this->pct=0; + 98c: 10 92 ca 01 sts 0x01CA, r1 + 990: 51 c0 rjmp .+162 ; 0xa34 <__vector_6+0xd4> + } + for(uint8_t i = 0; i < 6; i++) { + if(this->pwm[i] >= this->pct && this->pwm[i] != 0) { + 992: 82 2f mov r24, r18 + 994: 91 91 ld r25, Z+ + 996: 6c 91 ld r22, X + 998: 96 17 cp r25, r22 + 99a: 18 f1 brcs .+70 ; 0x9e2 <__vector_6+0x82> + 99c: 99 23 and r25, r25 + 99e: 09 f1 breq .+66 ; 0x9e2 <__vector_6+0x82> + this->on((1< + 9a6: 66 0f add r22, r22 + 9a8: 77 1f adc r23, r23 + 9aa: 0a 94 dec r0 + 9ac: e2 f7 brpl .-8 ; 0x9a6 <__vector_6+0x46> + 9ae: cb 01 movw r24, r22 + if(ausg & OUT6) { + out6::make_low(); + } + } + void on(uint8_t ausg = 255) { + if(ausg & OUT1) { + 9b0: 60 ff sbrs r22, 0 + 9b2: 02 c0 rjmp .+4 ; 0x9b8 <__vector_6+0x58> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 9b4: aa 9a sbi 0x15, 2 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 9b6: a2 9a sbi 0x14, 2 ; 20 + out1::make_high(); + } + if(ausg & OUT2) { + 9b8: 81 ff sbrs r24, 1 + 9ba: 02 c0 rjmp .+4 ; 0x9c0 <__vector_6+0x60> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 9bc: ab 9a sbi 0x15, 3 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 9be: a3 9a sbi 0x14, 3 ; 20 + out2::make_high(); + } + if(ausg & OUT3) { + 9c0: 82 ff sbrs r24, 2 + 9c2: 02 c0 rjmp .+4 ; 0x9c8 <__vector_6+0x68> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 9c4: ac 9a sbi 0x15, 4 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 9c6: a4 9a sbi 0x14, 4 ; 20 + out3::make_high(); + } + if(ausg & OUT4) { + 9c8: 83 ff sbrs r24, 3 + 9ca: 02 c0 rjmp .+4 ; 0x9d0 <__vector_6+0x70> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 9cc: ad 9a sbi 0x15, 5 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 9ce: a5 9a sbi 0x14, 5 ; 20 + out4::make_high(); + } + if(ausg & OUT5) { + 9d0: 84 ff sbrs r24, 4 + 9d2: 02 c0 rjmp .+4 ; 0x9d8 <__vector_6+0x78> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 9d4: ae 9a sbi 0x15, 6 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 9d6: a6 9a sbi 0x14, 6 ; 20 + out5::make_high(); + } + if(ausg & OUT6) { + 9d8: 85 ff sbrs r24, 5 + 9da: 22 c0 rjmp .+68 ; 0xa20 <__vector_6+0xc0> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 9dc: af 9a sbi 0x15, 7 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 9de: a7 9a sbi 0x14, 7 ; 20 + 9e0: 1f c0 rjmp .+62 ; 0xa20 <__vector_6+0xc0> + } + for(uint8_t i = 0; i < 6; i++) { + if(this->pwm[i] >= this->pct && this->pwm[i] != 0) { + this->on((1<off((1< + 9e6: 66 0f add r22, r22 + 9e8: 77 1f adc r23, r23 + 9ea: 8a 95 dec r24 + 9ec: e2 f7 brpl .-8 ; 0x9e6 <__vector_6+0x86> + 9ee: cb 01 movw r24, r22 + public: + SSR() { + init(); + } + void off(uint8_t ausg = 255) { + if(ausg & OUT1) { + 9f0: 60 ff sbrs r22, 0 + 9f2: 02 c0 rjmp .+4 ; 0x9f8 <__vector_6+0x98> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 9f4: aa 98 cbi 0x15, 2 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 9f6: a2 9a sbi 0x14, 2 ; 20 + out1::make_low(); + } + if(ausg & OUT2) { + 9f8: 81 ff sbrs r24, 1 + 9fa: 02 c0 rjmp .+4 ; 0xa00 <__vector_6+0xa0> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 9fc: ab 98 cbi 0x15, 3 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 9fe: a3 9a sbi 0x14, 3 ; 20 + out2::make_low(); + } + if(ausg & OUT3) { + a00: 82 ff sbrs r24, 2 + a02: 02 c0 rjmp .+4 ; 0xa08 <__vector_6+0xa8> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + a04: ac 98 cbi 0x15, 4 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + a06: a4 9a sbi 0x14, 4 ; 20 + out3::make_low(); + } + if(ausg & OUT4) { + a08: 83 ff sbrs r24, 3 + a0a: 02 c0 rjmp .+4 ; 0xa10 <__vector_6+0xb0> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + a0c: ad 98 cbi 0x15, 5 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + a0e: a5 9a sbi 0x14, 5 ; 20 + out4::make_low(); + } + if(ausg & OUT5) { + a10: 84 ff sbrs r24, 4 + a12: 02 c0 rjmp .+4 ; 0xa18 <__vector_6+0xb8> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + a14: ae 98 cbi 0x15, 6 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + a16: a6 9a sbi 0x14, 6 ; 20 + out5::make_low(); + } + if(ausg & OUT6) { + a18: 85 ff sbrs r24, 5 + a1a: 02 c0 rjmp .+4 ; 0xa20 <__vector_6+0xc0> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + a1c: af 98 cbi 0x15, 7 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + a1e: a7 9a sbi 0x14, 7 ; 20 + a20: 2f 5f subi r18, 0xFF ; 255 + a22: 3f 4f sbci r19, 0xFF ; 255 + } + void timer() { + if (this->pct++ >= 20) { + this->pct=0; + } + for(uint8_t i = 0; i < 6; i++) { + a24: 26 30 cpi r18, 0x06 ; 6 + a26: 31 05 cpc r19, r1 + a28: 09 f0 breq .+2 ; 0xa2c <__vector_6+0xcc> + a2a: b3 cf rjmp .-154 ; 0x992 <__vector_6+0x32> + a2c: 0c c0 rjmp .+24 ; 0xa46 <__vector_6+0xe6> + if(ausg > 5) + ausg = 5; + return this->pwm[ausg]; + } + void timer() { + if (this->pct++ >= 20) { + a2e: 8f 5f subi r24, 0xFF ; 255 + a30: 80 93 ca 01 sts 0x01CA, r24 + a34: eb ec ldi r30, 0xCB ; 203 + a36: f1 e0 ldi r31, 0x01 ; 1 + a38: 20 e0 ldi r18, 0x00 ; 0 + a3a: 30 e0 ldi r19, 0x00 ; 0 + this->pct=0; + } + for(uint8_t i = 0; i < 6; i++) { + if(this->pwm[i] >= this->pct && this->pwm[i] != 0) { + a3c: aa ec ldi r26, 0xCA ; 202 + a3e: b1 e0 ldi r27, 0x01 ; 1 + this->on((1<off((1< + o.timer(); +} + a46: ff 91 pop r31 + a48: ef 91 pop r30 + a4a: bf 91 pop r27 + a4c: af 91 pop r26 + a4e: 9f 91 pop r25 + a50: 8f 91 pop r24 + a52: 7f 91 pop r23 + a54: 6f 91 pop r22 + a56: 5f 91 pop r21 + a58: 4f 91 pop r20 + a5a: 3f 91 pop r19 + a5c: 2f 91 pop r18 + a5e: 0f 90 pop r0 + a60: 0f be out 0x3f, r0 ; 63 + a62: 0f 90 pop r0 + a64: 1f 90 pop r1 + a66: 18 95 reti + +00000a68 <__vector_1>: + +ISR(INT0_vect) { + a68: 1f 92 push r1 + a6a: 0f 92 push r0 + a6c: 0f b6 in r0, 0x3f ; 63 + a6e: 0f 92 push r0 + a70: 11 24 eor r1, r1 + a72: 8f 93 push r24 + } + void intr() { + GIFR = (1<: +#include "hardware/pin.hpp" + +template +class SSR { + public: + SSR() { + a88: fc 01 movw r30, r24 + a8a: 11 92 st Z+, r1 + a8c: 86 e0 ldi r24, 0x06 ; 6 + a8e: df 01 movw r26, r30 + a90: 1d 92 st X+, r1 + a92: 8a 95 dec r24 + a94: e9 f7 brne .-6 ; 0xa90 <_ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC1Ev+0x8> + a96: a2 9a sbi 0x14, 2 ; 20 + a98: a3 9a sbi 0x14, 3 ; 20 + a9a: a4 9a sbi 0x14, 4 ; 20 + a9c: a5 9a sbi 0x14, 5 ; 20 + a9e: a6 9a sbi 0x14, 6 ; 20 + aa0: a7 9a sbi 0x14, 7 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + aa2: aa 98 cbi 0x15, 2 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + aa4: a2 9a sbi 0x14, 2 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + aa6: ab 98 cbi 0x15, 3 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + aa8: a3 9a sbi 0x14, 3 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + aaa: ac 98 cbi 0x15, 4 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + aac: a4 9a sbi 0x14, 4 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + aae: ad 98 cbi 0x15, 5 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + ab0: a5 9a sbi 0x14, 5 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + ab2: ae 98 cbi 0x15, 6 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + ab4: a6 9a sbi 0x14, 6 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + ab6: af 98 cbi 0x15, 7 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + ab8: a7 9a sbi 0x14, 7 ; 20 + aba: 08 95 ret + +00000abc <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE>: +#define USART_H_ + +template +class Usart { + public: + Usart(ledclass l) { + abc: cf 93 push r28 + abe: df 93 push r29 + ac0: 1f 92 push r1 + ac2: cd b7 in r28, 0x3d ; 61 + ac4: de b7 in r29, 0x3e ; 62 + ac6: 69 83 std Y+1, r22 ; 0x01 + ac8: bc 9a sbi 0x17, 4 ; 23 + aca: bb 9a sbi 0x17, 3 ; 23 + acc: ba 9a sbi 0x17, 2 ; 23 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + ace: c4 98 cbi 0x18, 4 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + ad0: bc 9a sbi 0x17, 4 ; 23 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + ad2: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + ad4: bb 9a sbi 0x17, 3 ; 23 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + ad6: c2 98 cbi 0x18, 2 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + ad8: ba 9a sbi 0x17, 2 ; 23 + ada: 2f ef ldi r18, 0xFF ; 255 + adc: 3f ef ldi r19, 0xFF ; 255 + ade: fc 01 movw r30, r24 + ae0: 32 83 std Z+2, r19 ; 0x02 + ae2: 21 83 std Z+1, r18 ; 0x01 + this->temp = -1; + return t; + } + private: + void init() { + UCSRA = 0; + ae4: 1b b8 out 0x0b, r1 ; 11 + UCSRB = (1<led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + af8: 85 e5 ldi r24, 0x55 ; 85 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + afa: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + afc: bb 9a sbi 0x17, 3 ; 23 + UBRRH = 0; + UBRRL = (F_CPU / (baudrate * 16L) - 1); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + afe: 5d 9b sbis 0x0b, 5 ; 11 + b00: fe cf rjmp .-4 ; 0xafe <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE+0x42> + UDR = c; + b02: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b04: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + b06: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + b08: 81 91 ld r24, Z+ + b0a: 81 11 cpse r24, r1 + b0c: f6 cf rjmp .-20 ; 0xafa <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE+0x3e> public: Usart(ledclass l) { init(); this->led = l; send("Uart done!\n"); } - 326: 0f 90 pop r0 - 328: df 91 pop r29 - 32a: cf 91 pop r28 - 32c: 08 95 ret + b0e: 0f 90 pop r0 + b10: df 91 pop r29 + b12: cf 91 pop r28 + b14: 08 95 ret -0000032e <_ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv>: - 32e: bc 9a sbi 0x17, 4 ; 23 - 330: bb 9a sbi 0x17, 3 ; 23 - 332: ba 9a sbi 0x17, 2 ; 23 +00000b16 <_ZN6ButtonIN6avrlib5portdELi2EEC1E3LedINS0_5portbELi4ELi3ELi2EE>: + + +template +class Button { + public: + Button(ledclass l) { + b16: cf 93 push r28 + b18: df 93 push r29 + b1a: 1f 92 push r1 + b1c: cd b7 in r28, 0x3d ; 61 + b1e: de b7 in r29, 0x3e ; 62 + b20: 69 83 std Y+1, r22 ; 0x01 + b22: bc 9a sbi 0x17, 4 ; 23 + b24: bb 9a sbi 0x17, 3 ; 23 + b26: ba 9a sbi 0x17, 2 ; 23 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 334: c4 98 cbi 0x18, 4 ; 24 + b28: c4 98 cbi 0x18, 4 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 336: bc 9a sbi 0x17, 4 ; 23 + b2a: bc 9a sbi 0x17, 4 ; 23 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 338: c3 98 cbi 0x18, 3 ; 24 + b2c: c3 98 cbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 33a: bb 9a sbi 0x17, 3 ; 23 + b2e: bb 9a sbi 0x17, 3 ; 23 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 33c: c2 98 cbi 0x18, 2 ; 24 + b30: c2 98 cbi 0x18, 2 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 33e: ba 9a sbi 0x17, 2 ; 23 - 340: 08 95 ret + b32: ba 9a sbi 0x17, 2 ; 23 -00000342 <_ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EE4initEv>: + static uint8_t pin() { return PIND; } + static void pin(uint8_t v) { PIND = v; } - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - 342: a2 9a sbi 0x14, 2 ; 20 - 344: a3 9a sbi 0x14, 3 ; 20 - 346: a4 9a sbi 0x14, 4 ; 20 - 348: a5 9a sbi 0x14, 5 ; 20 - 34a: a6 9a sbi 0x14, 6 ; 20 - 34c: a7 9a sbi 0x14, 7 ; 20 + static uint8_t dir() { return DDRD; } + static void dir(uint8_t v) { DDRD = v; } + b34: 8a 98 cbi 0x11, 2 ; 17 namespace avrlib { - struct portc + struct portd { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - 34e: aa 98 cbi 0x15, 2 ; 21 + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + b36: 92 98 cbi 0x12, 2 ; 18 + b38: 92 9a sbi 0x12, 2 ; 18 + init(); + this->led = l; + } + b3a: 0f 90 pop r0 + b3c: df 91 pop r29 + b3e: cf 91 pop r28 + b40: 08 95 ret - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - 350: a2 9a sbi 0x14, 2 ; 20 +00000b42 <_ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv>: + b42: bc 9a sbi 0x17, 4 ; 23 + b44: bb 9a sbi 0x17, 3 ; 23 + b46: ba 9a sbi 0x17, 2 ; 23 namespace avrlib { - struct portc + struct portb { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - 352: ab 98 cbi 0x15, 3 ; 21 + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b48: c4 98 cbi 0x18, 4 ; 24 - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - 354: a3 9a sbi 0x14, 3 ; 20 + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + b4a: bc 9a sbi 0x17, 4 ; 23 namespace avrlib { - struct portc + struct portb { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - 356: ac 98 cbi 0x15, 4 ; 21 + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b4c: c3 98 cbi 0x18, 3 ; 24 - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - 358: a4 9a sbi 0x14, 4 ; 20 + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + b4e: bb 9a sbi 0x17, 3 ; 23 namespace avrlib { - struct portc + struct portb { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - 35a: ad 98 cbi 0x15, 5 ; 21 + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b50: c2 98 cbi 0x18, 2 ; 24 - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - 35c: a5 9a sbi 0x14, 5 ; 20 -namespace avrlib { + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + b52: ba 9a sbi 0x17, 2 ; 23 + b54: 08 95 ret - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - 35e: ae 98 cbi 0x15, 6 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - 360: a6 9a sbi 0x14, 6 ; 20 -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - 362: af 98 cbi 0x15, 7 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - 364: a7 9a sbi 0x14, 7 ; 20 - 366: 08 95 ret - -00000368 <_GLOBAL__sub_I_l>: +00000b56 <_GLOBAL__sub_I_l>: template class Led { public: Led() { init(); - 368: 8b e3 ldi r24, 0x3B ; 59 - 36a: 91 e0 ldi r25, 0x01 ; 1 - 36c: 0e 94 97 01 call 0x32e ; 0x32e <_ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv> - -template -class SSR { - public: - SSR() { - init(); - 370: 8a e3 ldi r24, 0x3A ; 58 - 372: 91 e0 ldi r25, 0x01 ; 1 - 374: 0e 94 a1 01 call 0x342 ; 0x342 <_ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EE4initEv> + b56: 81 ed ldi r24, 0xD1 ; 209 + b58: 91 e0 ldi r25, 0x01 ; 1 + b5a: 0e 94 a1 05 call 0xb42 ; 0xb42 <_ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv> #include "peripheral.h" +#include -ledclass l; -ssrclass o; -usartclass r(l); - 378: 60 e0 ldi r22, 0x00 ; 0 - 37a: 89 e3 ldi r24, 0x39 ; 57 - 37c: 91 e0 ldi r25, 0x01 ; 1 - 37e: 0e 94 6f 01 call 0x2de ; 0x2de <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE> - _delay_ms(100); +ledclass l; +ssrclass o; + b5e: 8a ec ldi r24, 0xCA ; 202 + b60: 91 e0 ldi r25, 0x01 ; 1 + b62: 0e 94 44 05 call 0xa88 ; 0xa88 <_ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC1Ev> +usartclass r(l); + b66: 60 e0 ldi r22, 0x00 ; 0 + b68: 87 ec ldi r24, 0xC7 ; 199 + b6a: 91 e0 ldi r25, 0x01 ; 1 + b6c: 0e 94 5e 05 call 0xabc ; 0xabc <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE> +#include + +template +class Adc { + public: + Adc() { + b70: 80 e3 ldi r24, 0x30 ; 48 + b72: e0 e6 ldi r30, 0x60 ; 96 + b74: f0 e0 ldi r31, 0x00 ; 0 + b76: a7 e9 ldi r26, 0x97 ; 151 + b78: b1 e0 ldi r27, 0x01 ; 1 + b7a: 01 90 ld r0, Z+ + b7c: 0d 92 st X+, r0 + b7e: 8a 95 dec r24 + b80: e1 f7 brne .-8 ; 0xb7a <_GLOBAL__sub_I_l+0x24> + float m=((this->table[pin][0]-this->table[pin][2])/(this->table[pin][1]-this->table[pin][3])); + return (m * (float)v) + (-m * (float)this->table[pin][1]) + this->table[pin][0]; } private: void init() { ADCSRA = (1< + b92: 08 95 ret -0000038a <__tablejump2__>: - 38a: ee 0f add r30, r30 - 38c: ff 1f adc r31, r31 +00000b94 <__subsf3>: + b94: 50 58 subi r21, 0x80 ; 128 -0000038e <__tablejump__>: - 38e: 05 90 lpm r0, Z+ - 390: f4 91 lpm r31, Z - 392: e0 2d mov r30, r0 - 394: 09 94 ijmp +00000b96 <__addsf3>: + b96: bb 27 eor r27, r27 + b98: aa 27 eor r26, r26 + b9a: 0e d0 rcall .+28 ; 0xbb8 <__addsf3x> + b9c: 08 c1 rjmp .+528 ; 0xdae <__fp_round> + b9e: f9 d0 rcall .+498 ; 0xd92 <__fp_pscA> + ba0: 30 f0 brcs .+12 ; 0xbae <__addsf3+0x18> + ba2: fe d0 rcall .+508 ; 0xda0 <__fp_pscB> + ba4: 20 f0 brcs .+8 ; 0xbae <__addsf3+0x18> + ba6: 31 f4 brne .+12 ; 0xbb4 <__addsf3+0x1e> + ba8: 9f 3f cpi r25, 0xFF ; 255 + baa: 11 f4 brne .+4 ; 0xbb0 <__addsf3+0x1a> + bac: 1e f4 brtc .+6 ; 0xbb4 <__addsf3+0x1e> + bae: ee c0 rjmp .+476 ; 0xd8c <__fp_nan> + bb0: 0e f4 brtc .+2 ; 0xbb4 <__addsf3+0x1e> + bb2: e0 95 com r30 + bb4: e7 fb bst r30, 7 + bb6: e4 c0 rjmp .+456 ; 0xd80 <__fp_inf> -00000396 <_exit>: - 396: f8 94 cli +00000bb8 <__addsf3x>: + bb8: e9 2f mov r30, r25 + bba: 0a d1 rcall .+532 ; 0xdd0 <__fp_split3> + bbc: 80 f3 brcs .-32 ; 0xb9e <__addsf3+0x8> + bbe: ba 17 cp r27, r26 + bc0: 62 07 cpc r22, r18 + bc2: 73 07 cpc r23, r19 + bc4: 84 07 cpc r24, r20 + bc6: 95 07 cpc r25, r21 + bc8: 18 f0 brcs .+6 ; 0xbd0 <__addsf3x+0x18> + bca: 71 f4 brne .+28 ; 0xbe8 <__addsf3x+0x30> + bcc: 9e f5 brtc .+102 ; 0xc34 <__addsf3x+0x7c> + bce: 22 c1 rjmp .+580 ; 0xe14 <__fp_zero> + bd0: 0e f4 brtc .+2 ; 0xbd4 <__addsf3x+0x1c> + bd2: e0 95 com r30 + bd4: 0b 2e mov r0, r27 + bd6: ba 2f mov r27, r26 + bd8: a0 2d mov r26, r0 + bda: 0b 01 movw r0, r22 + bdc: b9 01 movw r22, r18 + bde: 90 01 movw r18, r0 + be0: 0c 01 movw r0, r24 + be2: ca 01 movw r24, r20 + be4: a0 01 movw r20, r0 + be6: 11 24 eor r1, r1 + be8: ff 27 eor r31, r31 + bea: 59 1b sub r21, r25 + bec: 99 f0 breq .+38 ; 0xc14 <__addsf3x+0x5c> + bee: 59 3f cpi r21, 0xF9 ; 249 + bf0: 50 f4 brcc .+20 ; 0xc06 <__addsf3x+0x4e> + bf2: 50 3e cpi r21, 0xE0 ; 224 + bf4: 68 f1 brcs .+90 ; 0xc50 <__addsf3x+0x98> + bf6: 1a 16 cp r1, r26 + bf8: f0 40 sbci r31, 0x00 ; 0 + bfa: a2 2f mov r26, r18 + bfc: 23 2f mov r18, r19 + bfe: 34 2f mov r19, r20 + c00: 44 27 eor r20, r20 + c02: 58 5f subi r21, 0xF8 ; 248 + c04: f3 cf rjmp .-26 ; 0xbec <__addsf3x+0x34> + c06: 46 95 lsr r20 + c08: 37 95 ror r19 + c0a: 27 95 ror r18 + c0c: a7 95 ror r26 + c0e: f0 40 sbci r31, 0x00 ; 0 + c10: 53 95 inc r21 + c12: c9 f7 brne .-14 ; 0xc06 <__addsf3x+0x4e> + c14: 7e f4 brtc .+30 ; 0xc34 <__addsf3x+0x7c> + c16: 1f 16 cp r1, r31 + c18: ba 0b sbc r27, r26 + c1a: 62 0b sbc r22, r18 + c1c: 73 0b sbc r23, r19 + c1e: 84 0b sbc r24, r20 + c20: ba f0 brmi .+46 ; 0xc50 <__addsf3x+0x98> + c22: 91 50 subi r25, 0x01 ; 1 + c24: a1 f0 breq .+40 ; 0xc4e <__addsf3x+0x96> + c26: ff 0f add r31, r31 + c28: bb 1f adc r27, r27 + c2a: 66 1f adc r22, r22 + c2c: 77 1f adc r23, r23 + c2e: 88 1f adc r24, r24 + c30: c2 f7 brpl .-16 ; 0xc22 <__addsf3x+0x6a> + c32: 0e c0 rjmp .+28 ; 0xc50 <__addsf3x+0x98> + c34: ba 0f add r27, r26 + c36: 62 1f adc r22, r18 + c38: 73 1f adc r23, r19 + c3a: 84 1f adc r24, r20 + c3c: 48 f4 brcc .+18 ; 0xc50 <__addsf3x+0x98> + c3e: 87 95 ror r24 + c40: 77 95 ror r23 + c42: 67 95 ror r22 + c44: b7 95 ror r27 + c46: f7 95 ror r31 + c48: 9e 3f cpi r25, 0xFE ; 254 + c4a: 08 f0 brcs .+2 ; 0xc4e <__addsf3x+0x96> + c4c: b3 cf rjmp .-154 ; 0xbb4 <__addsf3+0x1e> + c4e: 93 95 inc r25 + c50: 88 0f add r24, r24 + c52: 08 f0 brcs .+2 ; 0xc56 <__addsf3x+0x9e> + c54: 99 27 eor r25, r25 + c56: ee 0f add r30, r30 + c58: 97 95 ror r25 + c5a: 87 95 ror r24 + c5c: 08 95 ret -00000398 <__stop_program>: - 398: ff cf rjmp .-2 ; 0x398 <__stop_program> +00000c5e <__cmpsf2>: + c5e: 6c d0 rcall .+216 ; 0xd38 <__fp_cmp> + c60: 08 f4 brcc .+2 ; 0xc64 <__cmpsf2+0x6> + c62: 81 e0 ldi r24, 0x01 ; 1 + c64: 08 95 ret + +00000c66 <__fixunssfsi>: + c66: bc d0 rcall .+376 ; 0xde0 <__fp_splitA> + c68: 88 f0 brcs .+34 ; 0xc8c <__fixunssfsi+0x26> + c6a: 9f 57 subi r25, 0x7F ; 127 + c6c: 90 f0 brcs .+36 ; 0xc92 <__fixunssfsi+0x2c> + c6e: b9 2f mov r27, r25 + c70: 99 27 eor r25, r25 + c72: b7 51 subi r27, 0x17 ; 23 + c74: a0 f0 brcs .+40 ; 0xc9e <__fixunssfsi+0x38> + c76: d1 f0 breq .+52 ; 0xcac <__fixunssfsi+0x46> + c78: 66 0f add r22, r22 + c7a: 77 1f adc r23, r23 + c7c: 88 1f adc r24, r24 + c7e: 99 1f adc r25, r25 + c80: 1a f0 brmi .+6 ; 0xc88 <__fixunssfsi+0x22> + c82: ba 95 dec r27 + c84: c9 f7 brne .-14 ; 0xc78 <__fixunssfsi+0x12> + c86: 12 c0 rjmp .+36 ; 0xcac <__fixunssfsi+0x46> + c88: b1 30 cpi r27, 0x01 ; 1 + c8a: 81 f0 breq .+32 ; 0xcac <__fixunssfsi+0x46> + c8c: c3 d0 rcall .+390 ; 0xe14 <__fp_zero> + c8e: b1 e0 ldi r27, 0x01 ; 1 + c90: 08 95 ret + c92: c0 c0 rjmp .+384 ; 0xe14 <__fp_zero> + c94: 67 2f mov r22, r23 + c96: 78 2f mov r23, r24 + c98: 88 27 eor r24, r24 + c9a: b8 5f subi r27, 0xF8 ; 248 + c9c: 39 f0 breq .+14 ; 0xcac <__fixunssfsi+0x46> + c9e: b9 3f cpi r27, 0xF9 ; 249 + ca0: cc f3 brlt .-14 ; 0xc94 <__fixunssfsi+0x2e> + ca2: 86 95 lsr r24 + ca4: 77 95 ror r23 + ca6: 67 95 ror r22 + ca8: b3 95 inc r27 + caa: d9 f7 brne .-10 ; 0xca2 <__fixunssfsi+0x3c> + cac: 3e f4 brtc .+14 ; 0xcbc <__fixunssfsi+0x56> + cae: 90 95 com r25 + cb0: 80 95 com r24 + cb2: 70 95 com r23 + cb4: 61 95 neg r22 + cb6: 7f 4f sbci r23, 0xFF ; 255 + cb8: 8f 4f sbci r24, 0xFF ; 255 + cba: 9f 4f sbci r25, 0xFF ; 255 + cbc: 08 95 ret + +00000cbe <__floatunsisf>: + cbe: e8 94 clt + cc0: 09 c0 rjmp .+18 ; 0xcd4 <__floatsisf+0x12> + +00000cc2 <__floatsisf>: + cc2: 97 fb bst r25, 7 + cc4: 3e f4 brtc .+14 ; 0xcd4 <__floatsisf+0x12> + cc6: 90 95 com r25 + cc8: 80 95 com r24 + cca: 70 95 com r23 + ccc: 61 95 neg r22 + cce: 7f 4f sbci r23, 0xFF ; 255 + cd0: 8f 4f sbci r24, 0xFF ; 255 + cd2: 9f 4f sbci r25, 0xFF ; 255 + cd4: 99 23 and r25, r25 + cd6: a9 f0 breq .+42 ; 0xd02 <__floatsisf+0x40> + cd8: f9 2f mov r31, r25 + cda: 96 e9 ldi r25, 0x96 ; 150 + cdc: bb 27 eor r27, r27 + cde: 93 95 inc r25 + ce0: f6 95 lsr r31 + ce2: 87 95 ror r24 + ce4: 77 95 ror r23 + ce6: 67 95 ror r22 + ce8: b7 95 ror r27 + cea: f1 11 cpse r31, r1 + cec: f8 cf rjmp .-16 ; 0xcde <__floatsisf+0x1c> + cee: fa f4 brpl .+62 ; 0xd2e <__floatsisf+0x6c> + cf0: bb 0f add r27, r27 + cf2: 11 f4 brne .+4 ; 0xcf8 <__floatsisf+0x36> + cf4: 60 ff sbrs r22, 0 + cf6: 1b c0 rjmp .+54 ; 0xd2e <__floatsisf+0x6c> + cf8: 6f 5f subi r22, 0xFF ; 255 + cfa: 7f 4f sbci r23, 0xFF ; 255 + cfc: 8f 4f sbci r24, 0xFF ; 255 + cfe: 9f 4f sbci r25, 0xFF ; 255 + d00: 16 c0 rjmp .+44 ; 0xd2e <__floatsisf+0x6c> + d02: 88 23 and r24, r24 + d04: 11 f0 breq .+4 ; 0xd0a <__floatsisf+0x48> + d06: 96 e9 ldi r25, 0x96 ; 150 + d08: 11 c0 rjmp .+34 ; 0xd2c <__floatsisf+0x6a> + d0a: 77 23 and r23, r23 + d0c: 21 f0 breq .+8 ; 0xd16 <__floatsisf+0x54> + d0e: 9e e8 ldi r25, 0x8E ; 142 + d10: 87 2f mov r24, r23 + d12: 76 2f mov r23, r22 + d14: 05 c0 rjmp .+10 ; 0xd20 <__floatsisf+0x5e> + d16: 66 23 and r22, r22 + d18: 71 f0 breq .+28 ; 0xd36 <__floatsisf+0x74> + d1a: 96 e8 ldi r25, 0x86 ; 134 + d1c: 86 2f mov r24, r22 + d1e: 70 e0 ldi r23, 0x00 ; 0 + d20: 60 e0 ldi r22, 0x00 ; 0 + d22: 2a f0 brmi .+10 ; 0xd2e <__floatsisf+0x6c> + d24: 9a 95 dec r25 + d26: 66 0f add r22, r22 + d28: 77 1f adc r23, r23 + d2a: 88 1f adc r24, r24 + d2c: da f7 brpl .-10 ; 0xd24 <__floatsisf+0x62> + d2e: 88 0f add r24, r24 + d30: 96 95 lsr r25 + d32: 87 95 ror r24 + d34: 97 f9 bld r25, 7 + d36: 08 95 ret + +00000d38 <__fp_cmp>: + d38: 99 0f add r25, r25 + d3a: 00 08 sbc r0, r0 + d3c: 55 0f add r21, r21 + d3e: aa 0b sbc r26, r26 + d40: e0 e8 ldi r30, 0x80 ; 128 + d42: fe ef ldi r31, 0xFE ; 254 + d44: 16 16 cp r1, r22 + d46: 17 06 cpc r1, r23 + d48: e8 07 cpc r30, r24 + d4a: f9 07 cpc r31, r25 + d4c: c0 f0 brcs .+48 ; 0xd7e <__fp_cmp+0x46> + d4e: 12 16 cp r1, r18 + d50: 13 06 cpc r1, r19 + d52: e4 07 cpc r30, r20 + d54: f5 07 cpc r31, r21 + d56: 98 f0 brcs .+38 ; 0xd7e <__fp_cmp+0x46> + d58: 62 1b sub r22, r18 + d5a: 73 0b sbc r23, r19 + d5c: 84 0b sbc r24, r20 + d5e: 95 0b sbc r25, r21 + d60: 39 f4 brne .+14 ; 0xd70 <__fp_cmp+0x38> + d62: 0a 26 eor r0, r26 + d64: 61 f0 breq .+24 ; 0xd7e <__fp_cmp+0x46> + d66: 23 2b or r18, r19 + d68: 24 2b or r18, r20 + d6a: 25 2b or r18, r21 + d6c: 21 f4 brne .+8 ; 0xd76 <__fp_cmp+0x3e> + d6e: 08 95 ret + d70: 0a 26 eor r0, r26 + d72: 09 f4 brne .+2 ; 0xd76 <__fp_cmp+0x3e> + d74: a1 40 sbci r26, 0x01 ; 1 + d76: a6 95 lsr r26 + d78: 8f ef ldi r24, 0xFF ; 255 + d7a: 81 1d adc r24, r1 + d7c: 81 1d adc r24, r1 + d7e: 08 95 ret + +00000d80 <__fp_inf>: + d80: 97 f9 bld r25, 7 + d82: 9f 67 ori r25, 0x7F ; 127 + d84: 80 e8 ldi r24, 0x80 ; 128 + d86: 70 e0 ldi r23, 0x00 ; 0 + d88: 60 e0 ldi r22, 0x00 ; 0 + d8a: 08 95 ret + +00000d8c <__fp_nan>: + d8c: 9f ef ldi r25, 0xFF ; 255 + d8e: 80 ec ldi r24, 0xC0 ; 192 + d90: 08 95 ret + +00000d92 <__fp_pscA>: + d92: 00 24 eor r0, r0 + d94: 0a 94 dec r0 + d96: 16 16 cp r1, r22 + d98: 17 06 cpc r1, r23 + d9a: 18 06 cpc r1, r24 + d9c: 09 06 cpc r0, r25 + d9e: 08 95 ret + +00000da0 <__fp_pscB>: + da0: 00 24 eor r0, r0 + da2: 0a 94 dec r0 + da4: 12 16 cp r1, r18 + da6: 13 06 cpc r1, r19 + da8: 14 06 cpc r1, r20 + daa: 05 06 cpc r0, r21 + dac: 08 95 ret + +00000dae <__fp_round>: + dae: 09 2e mov r0, r25 + db0: 03 94 inc r0 + db2: 00 0c add r0, r0 + db4: 11 f4 brne .+4 ; 0xdba <__fp_round+0xc> + db6: 88 23 and r24, r24 + db8: 52 f0 brmi .+20 ; 0xdce <__fp_round+0x20> + dba: bb 0f add r27, r27 + dbc: 40 f4 brcc .+16 ; 0xdce <__fp_round+0x20> + dbe: bf 2b or r27, r31 + dc0: 11 f4 brne .+4 ; 0xdc6 <__fp_round+0x18> + dc2: 60 ff sbrs r22, 0 + dc4: 04 c0 rjmp .+8 ; 0xdce <__fp_round+0x20> + dc6: 6f 5f subi r22, 0xFF ; 255 + dc8: 7f 4f sbci r23, 0xFF ; 255 + dca: 8f 4f sbci r24, 0xFF ; 255 + dcc: 9f 4f sbci r25, 0xFF ; 255 + dce: 08 95 ret + +00000dd0 <__fp_split3>: + dd0: 57 fd sbrc r21, 7 + dd2: 90 58 subi r25, 0x80 ; 128 + dd4: 44 0f add r20, r20 + dd6: 55 1f adc r21, r21 + dd8: 59 f0 breq .+22 ; 0xdf0 <__fp_splitA+0x10> + dda: 5f 3f cpi r21, 0xFF ; 255 + ddc: 71 f0 breq .+28 ; 0xdfa <__fp_splitA+0x1a> + dde: 47 95 ror r20 + +00000de0 <__fp_splitA>: + de0: 88 0f add r24, r24 + de2: 97 fb bst r25, 7 + de4: 99 1f adc r25, r25 + de6: 61 f0 breq .+24 ; 0xe00 <__fp_splitA+0x20> + de8: 9f 3f cpi r25, 0xFF ; 255 + dea: 79 f0 breq .+30 ; 0xe0a <__fp_splitA+0x2a> + dec: 87 95 ror r24 + dee: 08 95 ret + df0: 12 16 cp r1, r18 + df2: 13 06 cpc r1, r19 + df4: 14 06 cpc r1, r20 + df6: 55 1f adc r21, r21 + df8: f2 cf rjmp .-28 ; 0xdde <__fp_split3+0xe> + dfa: 46 95 lsr r20 + dfc: f1 df rcall .-30 ; 0xde0 <__fp_splitA> + dfe: 08 c0 rjmp .+16 ; 0xe10 <__fp_splitA+0x30> + e00: 16 16 cp r1, r22 + e02: 17 06 cpc r1, r23 + e04: 18 06 cpc r1, r24 + e06: 99 1f adc r25, r25 + e08: f1 cf rjmp .-30 ; 0xdec <__fp_splitA+0xc> + e0a: 86 95 lsr r24 + e0c: 71 05 cpc r23, r1 + e0e: 61 05 cpc r22, r1 + e10: 08 94 sec + e12: 08 95 ret + +00000e14 <__fp_zero>: + e14: e8 94 clt + +00000e16 <__fp_szero>: + e16: bb 27 eor r27, r27 + e18: 66 27 eor r22, r22 + e1a: 77 27 eor r23, r23 + e1c: cb 01 movw r24, r22 + e1e: 97 f9 bld r25, 7 + e20: 08 95 ret + +00000e22 <__gesf2>: + e22: 8a df rcall .-236 ; 0xd38 <__fp_cmp> + e24: 08 f4 brcc .+2 ; 0xe28 <__gesf2+0x6> + e26: 8f ef ldi r24, 0xFF ; 255 + e28: 08 95 ret + +00000e2a <__mulsf3>: + e2a: 0b d0 rcall .+22 ; 0xe42 <__mulsf3x> + e2c: c0 cf rjmp .-128 ; 0xdae <__fp_round> + e2e: b1 df rcall .-158 ; 0xd92 <__fp_pscA> + e30: 28 f0 brcs .+10 ; 0xe3c <__mulsf3+0x12> + e32: b6 df rcall .-148 ; 0xda0 <__fp_pscB> + e34: 18 f0 brcs .+6 ; 0xe3c <__mulsf3+0x12> + e36: 95 23 and r25, r21 + e38: 09 f0 breq .+2 ; 0xe3c <__mulsf3+0x12> + e3a: a2 cf rjmp .-188 ; 0xd80 <__fp_inf> + e3c: a7 cf rjmp .-178 ; 0xd8c <__fp_nan> + e3e: 11 24 eor r1, r1 + e40: ea cf rjmp .-44 ; 0xe16 <__fp_szero> + +00000e42 <__mulsf3x>: + e42: c6 df rcall .-116 ; 0xdd0 <__fp_split3> + e44: a0 f3 brcs .-24 ; 0xe2e <__mulsf3+0x4> + +00000e46 <__mulsf3_pse>: + e46: 95 9f mul r25, r21 + e48: d1 f3 breq .-12 ; 0xe3e <__mulsf3+0x14> + e4a: 95 0f add r25, r21 + e4c: 50 e0 ldi r21, 0x00 ; 0 + e4e: 55 1f adc r21, r21 + e50: 62 9f mul r22, r18 + e52: f0 01 movw r30, r0 + e54: 72 9f mul r23, r18 + e56: bb 27 eor r27, r27 + e58: f0 0d add r31, r0 + e5a: b1 1d adc r27, r1 + e5c: 63 9f mul r22, r19 + e5e: aa 27 eor r26, r26 + e60: f0 0d add r31, r0 + e62: b1 1d adc r27, r1 + e64: aa 1f adc r26, r26 + e66: 64 9f mul r22, r20 + e68: 66 27 eor r22, r22 + e6a: b0 0d add r27, r0 + e6c: a1 1d adc r26, r1 + e6e: 66 1f adc r22, r22 + e70: 82 9f mul r24, r18 + e72: 22 27 eor r18, r18 + e74: b0 0d add r27, r0 + e76: a1 1d adc r26, r1 + e78: 62 1f adc r22, r18 + e7a: 73 9f mul r23, r19 + e7c: b0 0d add r27, r0 + e7e: a1 1d adc r26, r1 + e80: 62 1f adc r22, r18 + e82: 83 9f mul r24, r19 + e84: a0 0d add r26, r0 + e86: 61 1d adc r22, r1 + e88: 22 1f adc r18, r18 + e8a: 74 9f mul r23, r20 + e8c: 33 27 eor r19, r19 + e8e: a0 0d add r26, r0 + e90: 61 1d adc r22, r1 + e92: 23 1f adc r18, r19 + e94: 84 9f mul r24, r20 + e96: 60 0d add r22, r0 + e98: 21 1d adc r18, r1 + e9a: 82 2f mov r24, r18 + e9c: 76 2f mov r23, r22 + e9e: 6a 2f mov r22, r26 + ea0: 11 24 eor r1, r1 + ea2: 9f 57 subi r25, 0x7F ; 127 + ea4: 50 40 sbci r21, 0x00 ; 0 + ea6: 8a f0 brmi .+34 ; 0xeca <__mulsf3_pse+0x84> + ea8: e1 f0 breq .+56 ; 0xee2 <__mulsf3_pse+0x9c> + eaa: 88 23 and r24, r24 + eac: 4a f0 brmi .+18 ; 0xec0 <__mulsf3_pse+0x7a> + eae: ee 0f add r30, r30 + eb0: ff 1f adc r31, r31 + eb2: bb 1f adc r27, r27 + eb4: 66 1f adc r22, r22 + eb6: 77 1f adc r23, r23 + eb8: 88 1f adc r24, r24 + eba: 91 50 subi r25, 0x01 ; 1 + ebc: 50 40 sbci r21, 0x00 ; 0 + ebe: a9 f7 brne .-22 ; 0xeaa <__mulsf3_pse+0x64> + ec0: 9e 3f cpi r25, 0xFE ; 254 + ec2: 51 05 cpc r21, r1 + ec4: 70 f0 brcs .+28 ; 0xee2 <__mulsf3_pse+0x9c> + ec6: 5c cf rjmp .-328 ; 0xd80 <__fp_inf> + ec8: a6 cf rjmp .-180 ; 0xe16 <__fp_szero> + eca: 5f 3f cpi r21, 0xFF ; 255 + ecc: ec f3 brlt .-6 ; 0xec8 <__mulsf3_pse+0x82> + ece: 98 3e cpi r25, 0xE8 ; 232 + ed0: dc f3 brlt .-10 ; 0xec8 <__mulsf3_pse+0x82> + ed2: 86 95 lsr r24 + ed4: 77 95 ror r23 + ed6: 67 95 ror r22 + ed8: b7 95 ror r27 + eda: f7 95 ror r31 + edc: e7 95 ror r30 + ede: 9f 5f subi r25, 0xFF ; 255 + ee0: c1 f7 brne .-16 ; 0xed2 <__mulsf3_pse+0x8c> + ee2: fe 2b or r31, r30 + ee4: 88 0f add r24, r24 + ee6: 91 1d adc r25, r1 + ee8: 96 95 lsr r25 + eea: 87 95 ror r24 + eec: 97 f9 bld r25, 7 + eee: 08 95 ret + +00000ef0 <__udivmodhi4>: + ef0: aa 1b sub r26, r26 + ef2: bb 1b sub r27, r27 + ef4: 51 e1 ldi r21, 0x11 ; 17 + ef6: 07 c0 rjmp .+14 ; 0xf06 <__udivmodhi4_ep> + +00000ef8 <__udivmodhi4_loop>: + ef8: aa 1f adc r26, r26 + efa: bb 1f adc r27, r27 + efc: a6 17 cp r26, r22 + efe: b7 07 cpc r27, r23 + f00: 10 f0 brcs .+4 ; 0xf06 <__udivmodhi4_ep> + f02: a6 1b sub r26, r22 + f04: b7 0b sbc r27, r23 + +00000f06 <__udivmodhi4_ep>: + f06: 88 1f adc r24, r24 + f08: 99 1f adc r25, r25 + f0a: 5a 95 dec r21 + f0c: a9 f7 brne .-22 ; 0xef8 <__udivmodhi4_loop> + f0e: 80 95 com r24 + f10: 90 95 com r25 + f12: bc 01 movw r22, r24 + f14: cd 01 movw r24, r26 + f16: 08 95 ret + +00000f18 <__tablejump2__>: + f18: ee 0f add r30, r30 + f1a: ff 1f adc r31, r31 + +00000f1c <__tablejump__>: + f1c: 05 90 lpm r0, Z+ + f1e: f4 91 lpm r31, Z + f20: e0 2d mov r30, r0 + f22: 09 94 ijmp + +00000f24 : + f24: ef 92 push r14 + f26: 0f 93 push r16 + f28: 1f 93 push r17 + f2a: cf 93 push r28 + f2c: c0 2f mov r28, r16 + f2e: 47 ff sbrs r20, 7 + f30: 02 c0 rjmp .+4 ; 0xf36 + f32: 34 e1 ldi r19, 0x14 ; 20 + f34: 01 c0 rjmp .+2 ; 0xf38 + f36: 34 e0 ldi r19, 0x04 ; 4 + f38: e4 2f mov r30, r20 + f3a: ff 27 eor r31, r31 + f3c: e7 fd sbrc r30, 7 + f3e: f0 95 com r31 + f40: f7 ff sbrs r31, 7 + f42: 03 c0 rjmp .+6 ; 0xf4a + f44: f1 95 neg r31 + f46: e1 95 neg r30 + f48: f1 09 sbc r31, r1 + f4a: e3 2e mov r14, r19 + f4c: 02 2f mov r16, r18 + f4e: 2e 2f mov r18, r30 + f50: 4c 2f mov r20, r28 + f52: 51 2f mov r21, r17 + f54: 0e 94 c9 07 call 0xf92 ; 0xf92 + f58: 8c 2f mov r24, r28 + f5a: 91 2f mov r25, r17 + f5c: cf 91 pop r28 + f5e: 1f 91 pop r17 + f60: 0f 91 pop r16 + f62: ef 90 pop r14 + f64: 08 95 ret + +00000f66 : + f66: fb 01 movw r30, r22 + f68: 9f 01 movw r18, r30 + f6a: 42 30 cpi r20, 0x02 ; 2 + f6c: 74 f0 brlt .+28 ; 0xf8a + f6e: 45 32 cpi r20, 0x25 ; 37 + f70: 64 f4 brge .+24 ; 0xf8a + f72: 64 2f mov r22, r20 + f74: 77 27 eor r23, r23 + f76: 0e 94 78 07 call 0xef0 ; 0xef0 <__udivmodhi4> + f7a: 80 5d subi r24, 0xD0 ; 208 + f7c: 8a 33 cpi r24, 0x3A ; 58 + f7e: 0c f0 brlt .+2 ; 0xf82 + f80: 89 5d subi r24, 0xD9 ; 217 + f82: 81 93 st Z+, r24 + f84: cb 01 movw r24, r22 + f86: 00 97 sbiw r24, 0x00 ; 0 + f88: a1 f7 brne .-24 ; 0xf72 + f8a: 10 82 st Z, r1 + f8c: c9 01 movw r24, r18 + f8e: 0c 94 1e 0a jmp 0x143c ; 0x143c + +00000f92 : + f92: 6f 92 push r6 + f94: 7f 92 push r7 + f96: 9f 92 push r9 + f98: af 92 push r10 + f9a: bf 92 push r11 + f9c: cf 92 push r12 + f9e: df 92 push r13 + fa0: ef 92 push r14 + fa2: ff 92 push r15 + fa4: 0f 93 push r16 + fa6: 1f 93 push r17 + fa8: cf 93 push r28 + faa: df 93 push r29 + fac: cd b7 in r28, 0x3d ; 61 + fae: de b7 in r29, 0x3e ; 62 + fb0: 29 97 sbiw r28, 0x09 ; 9 + fb2: 0f b6 in r0, 0x3f ; 63 + fb4: f8 94 cli + fb6: de bf out 0x3e, r29 ; 62 + fb8: 0f be out 0x3f, r0 ; 63 + fba: cd bf out 0x3d, r28 ; 61 + fbc: 6a 01 movw r12, r20 + fbe: b2 2e mov r11, r18 + fc0: 10 2f mov r17, r16 + fc2: 0c 33 cpi r16, 0x3C ; 60 + fc4: 18 f4 brcc .+6 ; 0xfcc + fc6: f0 2e mov r15, r16 + fc8: f3 94 inc r15 + fca: 02 c0 rjmp .+4 ; 0xfd0 + fcc: 5c e3 ldi r21, 0x3C ; 60 + fce: f5 2e mov r15, r21 + fd0: 0f 2d mov r16, r15 + fd2: 27 e0 ldi r18, 0x07 ; 7 + fd4: ae 01 movw r20, r28 + fd6: 4f 5f subi r20, 0xFF ; 255 + fd8: 5f 4f sbci r21, 0xFF ; 255 + fda: 0e 94 46 09 call 0x128c ; 0x128c <__ftoa_engine> + fde: 79 81 ldd r23, Y+1 ; 0x01 + fe0: 27 2f mov r18, r23 + fe2: 29 70 andi r18, 0x09 ; 9 + fe4: 21 30 cpi r18, 0x01 ; 1 + fe6: 31 f0 breq .+12 ; 0xff4 + fe8: e1 fc sbrc r14, 1 + fea: 06 c0 rjmp .+12 ; 0xff8 + fec: e0 fe sbrs r14, 0 + fee: 06 c0 rjmp .+12 ; 0xffc + ff0: 60 e2 ldi r22, 0x20 ; 32 + ff2: 05 c0 rjmp .+10 ; 0xffe + ff4: 6d e2 ldi r22, 0x2D ; 45 + ff6: 03 c0 rjmp .+6 ; 0xffe + ff8: 6b e2 ldi r22, 0x2B ; 43 + ffa: 01 c0 rjmp .+2 ; 0xffe + ffc: 60 e0 ldi r22, 0x00 ; 0 + ffe: 73 ff sbrs r23, 3 + 1000: 3d c0 rjmp .+122 ; 0x107c + 1002: 66 23 and r22, r22 + 1004: 11 f0 breq .+4 ; 0x100a + 1006: 84 e0 ldi r24, 0x04 ; 4 + 1008: 01 c0 rjmp .+2 ; 0x100c + 100a: 83 e0 ldi r24, 0x03 ; 3 + 100c: 8b 15 cp r24, r11 + 100e: 10 f4 brcc .+4 ; 0x1014 + 1010: b8 1a sub r11, r24 + 1012: 01 c0 rjmp .+2 ; 0x1016 + 1014: b1 2c mov r11, r1 + 1016: e4 fc sbrc r14, 4 + 1018: 0b c0 rjmp .+22 ; 0x1030 + 101a: 8b 2d mov r24, r11 + 101c: f6 01 movw r30, r12 + 101e: 90 e2 ldi r25, 0x20 ; 32 + 1020: 02 c0 rjmp .+4 ; 0x1026 + 1022: 91 93 st Z+, r25 + 1024: 81 50 subi r24, 0x01 ; 1 + 1026: 81 11 cpse r24, r1 + 1028: fc cf rjmp .-8 ; 0x1022 + 102a: cb 0c add r12, r11 + 102c: d1 1c adc r13, r1 + 102e: b1 2c mov r11, r1 + 1030: 66 23 and r22, r22 + 1032: 19 f0 breq .+6 ; 0x103a + 1034: d6 01 movw r26, r12 + 1036: 6d 93 st X+, r22 + 1038: 6d 01 movw r12, r26 + 103a: e2 fe sbrs r14, 2 + 103c: 0a c0 rjmp .+20 ; 0x1052 + 103e: 8e e4 ldi r24, 0x4E ; 78 + 1040: f6 01 movw r30, r12 + 1042: 80 83 st Z, r24 + 1044: 91 e4 ldi r25, 0x41 ; 65 + 1046: 91 83 std Z+1, r25 ; 0x01 + 1048: 82 83 std Z+2, r24 ; 0x02 + 104a: f3 e0 ldi r31, 0x03 ; 3 + 104c: cf 0e add r12, r31 + 104e: d1 1c adc r13, r1 + 1050: 0c c0 rjmp .+24 ; 0x106a + 1052: 8e e6 ldi r24, 0x6E ; 110 + 1054: d6 01 movw r26, r12 + 1056: 8c 93 st X, r24 + 1058: 91 e6 ldi r25, 0x61 ; 97 + 105a: 11 96 adiw r26, 0x01 ; 1 + 105c: 9c 93 st X, r25 + 105e: 11 97 sbiw r26, 0x01 ; 1 + 1060: 12 96 adiw r26, 0x02 ; 2 + 1062: 8c 93 st X, r24 + 1064: b3 e0 ldi r27, 0x03 ; 3 + 1066: cb 0e add r12, r27 + 1068: d1 1c adc r13, r1 + 106a: 8b 2d mov r24, r11 + 106c: f6 01 movw r30, r12 + 106e: 90 e2 ldi r25, 0x20 ; 32 + 1070: 02 c0 rjmp .+4 ; 0x1076 + 1072: 91 93 st Z+, r25 + 1074: 81 50 subi r24, 0x01 ; 1 + 1076: 81 11 cpse r24, r1 + 1078: fc cf rjmp .-8 ; 0x1072 + 107a: 40 c0 rjmp .+128 ; 0x10fc + 107c: 72 ff sbrs r23, 2 + 107e: 45 c0 rjmp .+138 ; 0x110a + 1080: 66 23 and r22, r22 + 1082: 11 f0 breq .+4 ; 0x1088 + 1084: 84 e0 ldi r24, 0x04 ; 4 + 1086: 01 c0 rjmp .+2 ; 0x108a + 1088: 83 e0 ldi r24, 0x03 ; 3 + 108a: 8b 15 cp r24, r11 + 108c: 10 f4 brcc .+4 ; 0x1092 + 108e: b8 1a sub r11, r24 + 1090: 01 c0 rjmp .+2 ; 0x1094 + 1092: b1 2c mov r11, r1 + 1094: e4 fc sbrc r14, 4 + 1096: 0b c0 rjmp .+22 ; 0x10ae + 1098: 8b 2d mov r24, r11 + 109a: f6 01 movw r30, r12 + 109c: 90 e2 ldi r25, 0x20 ; 32 + 109e: 02 c0 rjmp .+4 ; 0x10a4 + 10a0: 91 93 st Z+, r25 + 10a2: 81 50 subi r24, 0x01 ; 1 + 10a4: 81 11 cpse r24, r1 + 10a6: fc cf rjmp .-8 ; 0x10a0 + 10a8: cb 0c add r12, r11 + 10aa: d1 1c adc r13, r1 + 10ac: b1 2c mov r11, r1 + 10ae: 66 23 and r22, r22 + 10b0: 19 f0 breq .+6 ; 0x10b8 + 10b2: f6 01 movw r30, r12 + 10b4: 61 93 st Z+, r22 + 10b6: 6f 01 movw r12, r30 + 10b8: e2 fe sbrs r14, 2 + 10ba: 0e c0 rjmp .+28 ; 0x10d8 + 10bc: 89 e4 ldi r24, 0x49 ; 73 + 10be: d6 01 movw r26, r12 + 10c0: 8c 93 st X, r24 + 10c2: 8e e4 ldi r24, 0x4E ; 78 + 10c4: 11 96 adiw r26, 0x01 ; 1 + 10c6: 8c 93 st X, r24 + 10c8: 11 97 sbiw r26, 0x01 ; 1 + 10ca: 86 e4 ldi r24, 0x46 ; 70 + 10cc: 12 96 adiw r26, 0x02 ; 2 + 10ce: 8c 93 st X, r24 + 10d0: b3 e0 ldi r27, 0x03 ; 3 + 10d2: cb 0e add r12, r27 + 10d4: d1 1c adc r13, r1 + 10d6: 0a c0 rjmp .+20 ; 0x10ec + 10d8: 89 e6 ldi r24, 0x69 ; 105 + 10da: f6 01 movw r30, r12 + 10dc: 80 83 st Z, r24 + 10de: 8e e6 ldi r24, 0x6E ; 110 + 10e0: 81 83 std Z+1, r24 ; 0x01 + 10e2: 86 e6 ldi r24, 0x66 ; 102 + 10e4: 82 83 std Z+2, r24 ; 0x02 + 10e6: f3 e0 ldi r31, 0x03 ; 3 + 10e8: cf 0e add r12, r31 + 10ea: d1 1c adc r13, r1 + 10ec: 8b 2d mov r24, r11 + 10ee: f6 01 movw r30, r12 + 10f0: 90 e2 ldi r25, 0x20 ; 32 + 10f2: 02 c0 rjmp .+4 ; 0x10f8 + 10f4: 91 93 st Z+, r25 + 10f6: 81 50 subi r24, 0x01 ; 1 + 10f8: 81 11 cpse r24, r1 + 10fa: fc cf rjmp .-8 ; 0x10f4 + 10fc: f6 01 movw r30, r12 + 10fe: eb 0d add r30, r11 + 1100: f1 1d adc r31, r1 + 1102: 10 82 st Z, r1 + 1104: 2e ef ldi r18, 0xFE ; 254 + 1106: 3f ef ldi r19, 0xFF ; 255 + 1108: ac c0 rjmp .+344 ; 0x1262 + 110a: a1 e0 ldi r26, 0x01 ; 1 + 110c: 61 11 cpse r22, r1 + 110e: 01 c0 rjmp .+2 ; 0x1112 + 1110: a0 e0 ldi r26, 0x00 ; 0 + 1112: 4a 2f mov r20, r26 + 1114: 50 e0 ldi r21, 0x00 ; 0 + 1116: 18 16 cp r1, r24 + 1118: 19 06 cpc r1, r25 + 111a: 24 f4 brge .+8 ; 0x1124 + 111c: 9c 01 movw r18, r24 + 111e: 2f 5f subi r18, 0xFF ; 255 + 1120: 3f 4f sbci r19, 0xFF ; 255 + 1122: 02 c0 rjmp .+4 ; 0x1128 + 1124: 21 e0 ldi r18, 0x01 ; 1 + 1126: 30 e0 ldi r19, 0x00 ; 0 + 1128: 24 0f add r18, r20 + 112a: 35 1f adc r19, r21 + 112c: 11 23 and r17, r17 + 112e: 29 f0 breq .+10 ; 0x113a + 1130: 41 2f mov r20, r17 + 1132: 50 e0 ldi r21, 0x00 ; 0 + 1134: 4f 5f subi r20, 0xFF ; 255 + 1136: 5f 4f sbci r21, 0xFF ; 255 + 1138: 02 c0 rjmp .+4 ; 0x113e + 113a: 40 e0 ldi r20, 0x00 ; 0 + 113c: 50 e0 ldi r21, 0x00 ; 0 + 113e: 42 0f add r20, r18 + 1140: 53 1f adc r21, r19 + 1142: 2b 2d mov r18, r11 + 1144: 30 e0 ldi r19, 0x00 ; 0 + 1146: 42 17 cp r20, r18 + 1148: 53 07 cpc r21, r19 + 114a: 14 f4 brge .+4 ; 0x1150 + 114c: b4 1a sub r11, r20 + 114e: 01 c0 rjmp .+2 ; 0x1152 + 1150: b1 2c mov r11, r1 + 1152: 3e 2d mov r19, r14 + 1154: 30 71 andi r19, 0x10 ; 16 + 1156: e4 fc sbrc r14, 4 + 1158: 0d c0 rjmp .+26 ; 0x1174 + 115a: e3 fc sbrc r14, 3 + 115c: 0b c0 rjmp .+22 ; 0x1174 + 115e: 2b 2d mov r18, r11 + 1160: f6 01 movw r30, r12 + 1162: 40 e2 ldi r20, 0x20 ; 32 + 1164: 02 c0 rjmp .+4 ; 0x116a + 1166: 41 93 st Z+, r20 + 1168: 21 50 subi r18, 0x01 ; 1 + 116a: 21 11 cpse r18, r1 + 116c: fc cf rjmp .-8 ; 0x1166 + 116e: cb 0c add r12, r11 + 1170: d1 1c adc r13, r1 + 1172: b1 2c mov r11, r1 + 1174: aa 23 and r26, r26 + 1176: 19 f0 breq .+6 ; 0x117e + 1178: d6 01 movw r26, r12 + 117a: 6d 93 st X+, r22 + 117c: 6d 01 movw r12, r26 + 117e: 31 11 cpse r19, r1 + 1180: 0b c0 rjmp .+22 ; 0x1198 + 1182: 2b 2d mov r18, r11 + 1184: f6 01 movw r30, r12 + 1186: 30 e3 ldi r19, 0x30 ; 48 + 1188: 02 c0 rjmp .+4 ; 0x118e + 118a: 31 93 st Z+, r19 + 118c: 21 50 subi r18, 0x01 ; 1 + 118e: 21 11 cpse r18, r1 + 1190: fc cf rjmp .-8 ; 0x118a + 1192: cb 0c add r12, r11 + 1194: d1 1c adc r13, r1 + 1196: b1 2c mov r11, r1 + 1198: f8 0e add r15, r24 + 119a: 0a 81 ldd r16, Y+2 ; 0x02 + 119c: 40 e1 ldi r20, 0x10 ; 16 + 119e: a4 2e mov r10, r20 + 11a0: a7 22 and r10, r23 + 11a2: 74 ff sbrs r23, 4 + 11a4: 03 c0 rjmp .+6 ; 0x11ac + 11a6: 01 33 cpi r16, 0x31 ; 49 + 11a8: 09 f4 brne .+2 ; 0x11ac + 11aa: fa 94 dec r15 + 11ac: 1f 14 cp r1, r15 + 11ae: 2c f4 brge .+10 ; 0x11ba + 11b0: 2f 2d mov r18, r15 + 11b2: 29 30 cpi r18, 0x09 ; 9 + 11b4: 18 f0 brcs .+6 ; 0x11bc + 11b6: 28 e0 ldi r18, 0x08 ; 8 + 11b8: 01 c0 rjmp .+2 ; 0x11bc + 11ba: 21 e0 ldi r18, 0x01 ; 1 + 11bc: ac 01 movw r20, r24 + 11be: 97 ff sbrs r25, 7 + 11c0: 02 c0 rjmp .+4 ; 0x11c6 + 11c2: 40 e0 ldi r20, 0x00 ; 0 + 11c4: 50 e0 ldi r21, 0x00 ; 0 + 11c6: 60 e0 ldi r22, 0x00 ; 0 + 11c8: 70 e0 ldi r23, 0x00 ; 0 + 11ca: 3e e2 ldi r19, 0x2E ; 46 + 11cc: 93 2e mov r9, r19 + 11ce: fc 01 movw r30, r24 + 11d0: e2 1b sub r30, r18 + 11d2: f1 09 sbc r31, r1 + 11d4: 9f 01 movw r18, r30 + 11d6: dc 01 movw r26, r24 + 11d8: a4 1b sub r26, r20 + 11da: b5 0b sbc r27, r21 + 11dc: fe 01 movw r30, r28 + 11de: 31 96 adiw r30, 0x01 ; 1 + 11e0: ea 0f add r30, r26 + 11e2: fb 1f adc r31, r27 + 11e4: a1 2f mov r26, r17 + 11e6: b0 e0 ldi r27, 0x00 ; 0 + 11e8: 66 24 eor r6, r6 + 11ea: 77 24 eor r7, r7 + 11ec: 6a 1a sub r6, r26 + 11ee: 7b 0a sbc r7, r27 + 11f0: 4f 3f cpi r20, 0xFF ; 255 + 11f2: 1f ef ldi r17, 0xFF ; 255 + 11f4: 51 07 cpc r21, r17 + 11f6: 19 f4 brne .+6 ; 0x11fe + 11f8: d6 01 movw r26, r12 + 11fa: 9d 92 st X+, r9 + 11fc: 6d 01 movw r12, r26 + 11fe: 84 17 cp r24, r20 + 1200: 95 07 cpc r25, r21 + 1202: 54 f0 brlt .+20 ; 0x1218 + 1204: 24 17 cp r18, r20 + 1206: 35 07 cpc r19, r21 + 1208: 3c f4 brge .+14 ; 0x1218 + 120a: 7f 01 movw r14, r30 + 120c: e6 0e add r14, r22 + 120e: f7 1e adc r15, r23 + 1210: d7 01 movw r26, r14 + 1212: 11 96 adiw r26, 0x01 ; 1 + 1214: 1c 91 ld r17, X + 1216: 01 c0 rjmp .+2 ; 0x121a + 1218: 10 e3 ldi r17, 0x30 ; 48 + 121a: 41 50 subi r20, 0x01 ; 1 + 121c: 51 09 sbc r21, r1 + 121e: 6f 5f subi r22, 0xFF ; 255 + 1220: 7f 4f sbci r23, 0xFF ; 255 + 1222: 46 15 cp r20, r6 + 1224: 57 05 cpc r21, r7 + 1226: 24 f0 brlt .+8 ; 0x1230 + 1228: d6 01 movw r26, r12 + 122a: 1d 93 st X+, r17 + 122c: 6d 01 movw r12, r26 + 122e: e0 cf rjmp .-64 ; 0x11f0 + 1230: 48 17 cp r20, r24 + 1232: 59 07 cpc r21, r25 + 1234: 39 f4 brne .+14 ; 0x1244 + 1236: 06 33 cpi r16, 0x36 ; 54 + 1238: 20 f4 brcc .+8 ; 0x1242 + 123a: 05 33 cpi r16, 0x35 ; 53 + 123c: 19 f4 brne .+6 ; 0x1244 + 123e: a1 10 cpse r10, r1 + 1240: 01 c0 rjmp .+2 ; 0x1244 + 1242: 11 e3 ldi r17, 0x31 ; 49 + 1244: f6 01 movw r30, r12 + 1246: 11 93 st Z+, r17 + 1248: 8b 2d mov r24, r11 + 124a: df 01 movw r26, r30 + 124c: 90 e2 ldi r25, 0x20 ; 32 + 124e: 02 c0 rjmp .+4 ; 0x1254 + 1250: 9d 93 st X+, r25 + 1252: 81 50 subi r24, 0x01 ; 1 + 1254: 81 11 cpse r24, r1 + 1256: fc cf rjmp .-8 ; 0x1250 + 1258: eb 0d add r30, r11 + 125a: f1 1d adc r31, r1 + 125c: 10 82 st Z, r1 + 125e: 20 e0 ldi r18, 0x00 ; 0 + 1260: 30 e0 ldi r19, 0x00 ; 0 + 1262: c9 01 movw r24, r18 + 1264: 29 96 adiw r28, 0x09 ; 9 + 1266: 0f b6 in r0, 0x3f ; 63 + 1268: f8 94 cli + 126a: de bf out 0x3e, r29 ; 62 + 126c: 0f be out 0x3f, r0 ; 63 + 126e: cd bf out 0x3d, r28 ; 61 + 1270: df 91 pop r29 + 1272: cf 91 pop r28 + 1274: 1f 91 pop r17 + 1276: 0f 91 pop r16 + 1278: ff 90 pop r15 + 127a: ef 90 pop r14 + 127c: df 90 pop r13 + 127e: cf 90 pop r12 + 1280: bf 90 pop r11 + 1282: af 90 pop r10 + 1284: 9f 90 pop r9 + 1286: 7f 90 pop r7 + 1288: 6f 90 pop r6 + 128a: 08 95 ret + +0000128c <__ftoa_engine>: + 128c: 28 30 cpi r18, 0x08 ; 8 + 128e: 08 f0 brcs .+2 ; 0x1292 <__ftoa_engine+0x6> + 1290: 27 e0 ldi r18, 0x07 ; 7 + 1292: 33 27 eor r19, r19 + 1294: da 01 movw r26, r20 + 1296: 99 0f add r25, r25 + 1298: 31 1d adc r19, r1 + 129a: 87 fd sbrc r24, 7 + 129c: 91 60 ori r25, 0x01 ; 1 + 129e: 00 96 adiw r24, 0x00 ; 0 + 12a0: 61 05 cpc r22, r1 + 12a2: 71 05 cpc r23, r1 + 12a4: 39 f4 brne .+14 ; 0x12b4 <__ftoa_engine+0x28> + 12a6: 32 60 ori r19, 0x02 ; 2 + 12a8: 2e 5f subi r18, 0xFE ; 254 + 12aa: 3d 93 st X+, r19 + 12ac: 30 e3 ldi r19, 0x30 ; 48 + 12ae: 2a 95 dec r18 + 12b0: e1 f7 brne .-8 ; 0x12aa <__ftoa_engine+0x1e> + 12b2: 08 95 ret + 12b4: 9f 3f cpi r25, 0xFF ; 255 + 12b6: 30 f0 brcs .+12 ; 0x12c4 <__ftoa_engine+0x38> + 12b8: 80 38 cpi r24, 0x80 ; 128 + 12ba: 71 05 cpc r23, r1 + 12bc: 61 05 cpc r22, r1 + 12be: 09 f0 breq .+2 ; 0x12c2 <__ftoa_engine+0x36> + 12c0: 3c 5f subi r19, 0xFC ; 252 + 12c2: 3c 5f subi r19, 0xFC ; 252 + 12c4: 3d 93 st X+, r19 + 12c6: 91 30 cpi r25, 0x01 ; 1 + 12c8: 08 f0 brcs .+2 ; 0x12cc <__ftoa_engine+0x40> + 12ca: 80 68 ori r24, 0x80 ; 128 + 12cc: 91 1d adc r25, r1 + 12ce: df 93 push r29 + 12d0: cf 93 push r28 + 12d2: 1f 93 push r17 + 12d4: 0f 93 push r16 + 12d6: ff 92 push r15 + 12d8: ef 92 push r14 + 12da: 19 2f mov r17, r25 + 12dc: 98 7f andi r25, 0xF8 ; 248 + 12de: 96 95 lsr r25 + 12e0: e9 2f mov r30, r25 + 12e2: 96 95 lsr r25 + 12e4: 96 95 lsr r25 + 12e6: e9 0f add r30, r25 + 12e8: ff 27 eor r31, r31 + 12ea: e2 55 subi r30, 0x52 ; 82 + 12ec: ff 4f sbci r31, 0xFF ; 255 + 12ee: 99 27 eor r25, r25 + 12f0: 33 27 eor r19, r19 + 12f2: ee 24 eor r14, r14 + 12f4: ff 24 eor r15, r15 + 12f6: a7 01 movw r20, r14 + 12f8: e7 01 movw r28, r14 + 12fa: 05 90 lpm r0, Z+ + 12fc: 08 94 sec + 12fe: 07 94 ror r0 + 1300: 28 f4 brcc .+10 ; 0x130c <__ftoa_engine+0x80> + 1302: 36 0f add r19, r22 + 1304: e7 1e adc r14, r23 + 1306: f8 1e adc r15, r24 + 1308: 49 1f adc r20, r25 + 130a: 51 1d adc r21, r1 + 130c: 66 0f add r22, r22 + 130e: 77 1f adc r23, r23 + 1310: 88 1f adc r24, r24 + 1312: 99 1f adc r25, r25 + 1314: 06 94 lsr r0 + 1316: a1 f7 brne .-24 ; 0x1300 <__ftoa_engine+0x74> + 1318: 05 90 lpm r0, Z+ + 131a: 07 94 ror r0 + 131c: 28 f4 brcc .+10 ; 0x1328 <__ftoa_engine+0x9c> + 131e: e7 0e add r14, r23 + 1320: f8 1e adc r15, r24 + 1322: 49 1f adc r20, r25 + 1324: 56 1f adc r21, r22 + 1326: c1 1d adc r28, r1 + 1328: 77 0f add r23, r23 + 132a: 88 1f adc r24, r24 + 132c: 99 1f adc r25, r25 + 132e: 66 1f adc r22, r22 + 1330: 06 94 lsr r0 + 1332: a1 f7 brne .-24 ; 0x131c <__ftoa_engine+0x90> + 1334: 05 90 lpm r0, Z+ + 1336: 07 94 ror r0 + 1338: 28 f4 brcc .+10 ; 0x1344 <__ftoa_engine+0xb8> + 133a: f8 0e add r15, r24 + 133c: 49 1f adc r20, r25 + 133e: 56 1f adc r21, r22 + 1340: c7 1f adc r28, r23 + 1342: d1 1d adc r29, r1 + 1344: 88 0f add r24, r24 + 1346: 99 1f adc r25, r25 + 1348: 66 1f adc r22, r22 + 134a: 77 1f adc r23, r23 + 134c: 06 94 lsr r0 + 134e: a1 f7 brne .-24 ; 0x1338 <__ftoa_engine+0xac> + 1350: 05 90 lpm r0, Z+ + 1352: 07 94 ror r0 + 1354: 20 f4 brcc .+8 ; 0x135e <__ftoa_engine+0xd2> + 1356: 49 0f add r20, r25 + 1358: 56 1f adc r21, r22 + 135a: c7 1f adc r28, r23 + 135c: d8 1f adc r29, r24 + 135e: 99 0f add r25, r25 + 1360: 66 1f adc r22, r22 + 1362: 77 1f adc r23, r23 + 1364: 88 1f adc r24, r24 + 1366: 06 94 lsr r0 + 1368: a9 f7 brne .-22 ; 0x1354 <__ftoa_engine+0xc8> + 136a: 84 91 lpm r24, Z + 136c: 10 95 com r17 + 136e: 17 70 andi r17, 0x07 ; 7 + 1370: 41 f0 breq .+16 ; 0x1382 <__ftoa_engine+0xf6> + 1372: d6 95 lsr r29 + 1374: c7 95 ror r28 + 1376: 57 95 ror r21 + 1378: 47 95 ror r20 + 137a: f7 94 ror r15 + 137c: e7 94 ror r14 + 137e: 1a 95 dec r17 + 1380: c1 f7 brne .-16 ; 0x1372 <__ftoa_engine+0xe6> + 1382: e4 e5 ldi r30, 0x54 ; 84 + 1384: f0 e0 ldi r31, 0x00 ; 0 + 1386: 68 94 set + 1388: 15 90 lpm r1, Z+ + 138a: 15 91 lpm r17, Z+ + 138c: 35 91 lpm r19, Z+ + 138e: 65 91 lpm r22, Z+ + 1390: 95 91 lpm r25, Z+ + 1392: 05 90 lpm r0, Z+ + 1394: 7f e2 ldi r23, 0x2F ; 47 + 1396: 73 95 inc r23 + 1398: e1 18 sub r14, r1 + 139a: f1 0a sbc r15, r17 + 139c: 43 0b sbc r20, r19 + 139e: 56 0b sbc r21, r22 + 13a0: c9 0b sbc r28, r25 + 13a2: d0 09 sbc r29, r0 + 13a4: c0 f7 brcc .-16 ; 0x1396 <__ftoa_engine+0x10a> + 13a6: e1 0c add r14, r1 + 13a8: f1 1e adc r15, r17 + 13aa: 43 1f adc r20, r19 + 13ac: 56 1f adc r21, r22 + 13ae: c9 1f adc r28, r25 + 13b0: d0 1d adc r29, r0 + 13b2: 7e f4 brtc .+30 ; 0x13d2 <__ftoa_engine+0x146> + 13b4: 70 33 cpi r23, 0x30 ; 48 + 13b6: 11 f4 brne .+4 ; 0x13bc <__ftoa_engine+0x130> + 13b8: 8a 95 dec r24 + 13ba: e6 cf rjmp .-52 ; 0x1388 <__ftoa_engine+0xfc> + 13bc: e8 94 clt + 13be: 01 50 subi r16, 0x01 ; 1 + 13c0: 30 f0 brcs .+12 ; 0x13ce <__ftoa_engine+0x142> + 13c2: 08 0f add r16, r24 + 13c4: 0a f4 brpl .+2 ; 0x13c8 <__ftoa_engine+0x13c> + 13c6: 00 27 eor r16, r16 + 13c8: 02 17 cp r16, r18 + 13ca: 08 f4 brcc .+2 ; 0x13ce <__ftoa_engine+0x142> + 13cc: 20 2f mov r18, r16 + 13ce: 23 95 inc r18 + 13d0: 02 2f mov r16, r18 + 13d2: 7a 33 cpi r23, 0x3A ; 58 + 13d4: 28 f0 brcs .+10 ; 0x13e0 <__ftoa_engine+0x154> + 13d6: 79 e3 ldi r23, 0x39 ; 57 + 13d8: 7d 93 st X+, r23 + 13da: 2a 95 dec r18 + 13dc: e9 f7 brne .-6 ; 0x13d8 <__ftoa_engine+0x14c> + 13de: 10 c0 rjmp .+32 ; 0x1400 <__ftoa_engine+0x174> + 13e0: 7d 93 st X+, r23 + 13e2: 2a 95 dec r18 + 13e4: 89 f6 brne .-94 ; 0x1388 <__ftoa_engine+0xfc> + 13e6: 06 94 lsr r0 + 13e8: 97 95 ror r25 + 13ea: 67 95 ror r22 + 13ec: 37 95 ror r19 + 13ee: 17 95 ror r17 + 13f0: 17 94 ror r1 + 13f2: e1 18 sub r14, r1 + 13f4: f1 0a sbc r15, r17 + 13f6: 43 0b sbc r20, r19 + 13f8: 56 0b sbc r21, r22 + 13fa: c9 0b sbc r28, r25 + 13fc: d0 09 sbc r29, r0 + 13fe: 98 f0 brcs .+38 ; 0x1426 <__ftoa_engine+0x19a> + 1400: 23 95 inc r18 + 1402: 7e 91 ld r23, -X + 1404: 73 95 inc r23 + 1406: 7a 33 cpi r23, 0x3A ; 58 + 1408: 08 f0 brcs .+2 ; 0x140c <__ftoa_engine+0x180> + 140a: 70 e3 ldi r23, 0x30 ; 48 + 140c: 7c 93 st X, r23 + 140e: 20 13 cpse r18, r16 + 1410: b8 f7 brcc .-18 ; 0x1400 <__ftoa_engine+0x174> + 1412: 7e 91 ld r23, -X + 1414: 70 61 ori r23, 0x10 ; 16 + 1416: 7d 93 st X+, r23 + 1418: 30 f0 brcs .+12 ; 0x1426 <__ftoa_engine+0x19a> + 141a: 83 95 inc r24 + 141c: 71 e3 ldi r23, 0x31 ; 49 + 141e: 7d 93 st X+, r23 + 1420: 70 e3 ldi r23, 0x30 ; 48 + 1422: 2a 95 dec r18 + 1424: e1 f7 brne .-8 ; 0x141e <__ftoa_engine+0x192> + 1426: 11 24 eor r1, r1 + 1428: ef 90 pop r14 + 142a: ff 90 pop r15 + 142c: 0f 91 pop r16 + 142e: 1f 91 pop r17 + 1430: cf 91 pop r28 + 1432: df 91 pop r29 + 1434: 99 27 eor r25, r25 + 1436: 87 fd sbrc r24, 7 + 1438: 90 95 com r25 + 143a: 08 95 ret + +0000143c : + 143c: dc 01 movw r26, r24 + 143e: fc 01 movw r30, r24 + 1440: 67 2f mov r22, r23 + 1442: 71 91 ld r23, Z+ + 1444: 77 23 and r23, r23 + 1446: e1 f7 brne .-8 ; 0x1440 + 1448: 32 97 sbiw r30, 0x02 ; 2 + 144a: 04 c0 rjmp .+8 ; 0x1454 + 144c: 7c 91 ld r23, X + 144e: 6d 93 st X+, r22 + 1450: 70 83 st Z, r23 + 1452: 62 91 ld r22, -Z + 1454: ae 17 cp r26, r30 + 1456: bf 07 cpc r27, r31 + 1458: c8 f3 brcs .-14 ; 0x144c + 145a: 08 95 ret + +0000145c <_exit>: + 145c: f8 94 cli + +0000145e <__stop_program>: + 145e: ff cf rjmp .-2 ; 0x145e <__stop_program> diff --git a/USBLaminator/USBLaminator/Debug/USBLaminator.map b/USBLaminator/USBLaminator/Debug/USBLaminator.map index 4616956..45ee1b5 100644 --- a/USBLaminator/USBLaminator/Debug/USBLaminator.map +++ b/USBLaminator/USBLaminator/Debug/USBLaminator.map @@ -1,5 +1,39 @@ Archive member included because of file (symbol) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3.o) + USBLaminator.o (__subsf3) +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\libm.a(addsf3x.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3.o) (__addsf3x) +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\libm.a(cmpsf2.o) + USBLaminator.o (__ltsf2) +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\libm.a(fixunssfsi.o) + USBLaminator.o (__fixunssfsi) +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\libm.a(floatsisf.o) + USBLaminator.o (__floatunsisf) +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\libm.a(fp_cmp.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(cmpsf2.o) (__fp_cmp) +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\libm.a(fp_inf.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_inf) +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\libm.a(fp_nan.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_nan) +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\libm.a(fp_pscA.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_pscA) +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\libm.a(fp_pscB.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_pscB) +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\libm.a(fp_round.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3.o) (__fp_round) +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\libm.a(fp_split3.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_split3) +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\libm.a(fp_zero.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_zero) +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\libm.a(gesf2.o) + USBLaminator.o (__gtsf2) +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\libm.a(mulsf3.o) + USBLaminator.o (__mulsf3) +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\libm.a(mulsf3x.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) (__mulsf3x) +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(_udivmodhi4.o) + USBLaminator.o (__udivmodhi4) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o (exit) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_copy_data.o) @@ -10,6 +44,16 @@ c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu- USBLaminator.o (__do_global_ctors) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o) (__tablejump__) +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\libc.a(dtostrf.o) + USBLaminator.o (dtostrf) +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\libc.a(utoa.o) + USBLaminator.o (utoa) +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\libc.a(dtoa_prf.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) (dtoa_prf) +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\libc.a(ftoa_engine.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) (__ftoa_engine) +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\libc.a(strrev.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(utoa.o) (strrev) Discarded input sections @@ -17,7 +61,51 @@ Discarded input sections .group 0x00000000 0x8 USBLaminator.o .group 0x00000000 0x8 USBLaminator.o .group 0x00000000 0x8 USBLaminator.o + .group 0x00000000 0x8 USBLaminator.o .text 0x00000000 0x0 USBLaminator.o + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3.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/../../../../avr/lib/avr5\libm.a(addsf3.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/../../../../avr/lib/avr5\libm.a(addsf3x.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/../../../../avr/lib/avr5\libm.a(addsf3x.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/../../../../avr/lib/avr5\libm.a(cmpsf2.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/../../../../avr/lib/avr5\libm.a(cmpsf2.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/../../../../avr/lib/avr5\libm.a(fixunssfsi.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/../../../../avr/lib/avr5\libm.a(fixunssfsi.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/../../../../avr/lib/avr5\libm.a(floatsisf.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/../../../../avr/lib/avr5\libm.a(floatsisf.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/../../../../avr/lib/avr5\libm.a(fp_cmp.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/../../../../avr/lib/avr5\libm.a(fp_cmp.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/../../../../avr/lib/avr5\libm.a(fp_inf.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/../../../../avr/lib/avr5\libm.a(fp_inf.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/../../../../avr/lib/avr5\libm.a(fp_nan.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/../../../../avr/lib/avr5\libm.a(fp_nan.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/../../../../avr/lib/avr5\libm.a(fp_pscA.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/../../../../avr/lib/avr5\libm.a(fp_pscA.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/../../../../avr/lib/avr5\libm.a(fp_pscB.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/../../../../avr/lib/avr5\libm.a(fp_pscB.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/../../../../avr/lib/avr5\libm.a(fp_round.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/../../../../avr/lib/avr5\libm.a(fp_round.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/../../../../avr/lib/avr5\libm.a(fp_split3.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/../../../../avr/lib/avr5\libm.a(fp_split3.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/../../../../avr/lib/avr5\libm.a(fp_zero.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/../../../../avr/lib/avr5\libm.a(fp_zero.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/../../../../avr/lib/avr5\libm.a(gesf2.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/../../../../avr/lib/avr5\libm.a(gesf2.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/../../../../avr/lib/avr5\libm.a(mulsf3.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/../../../../avr/lib/avr5\libm.a(mulsf3.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/../../../../avr/lib/avr5\libm.a(mulsf3x.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/../../../../avr/lib/avr5\libm.a(mulsf3x.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(_udivmodhi4.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(_udivmodhi4.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.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 @@ -82,6 +170,16 @@ Discarded input sections 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) .text.libgcc.fmul 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) + .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/../../../../avr/lib/avr5\libc.a(dtostrf.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/../../../../avr/lib/avr5\libc.a(dtostrf.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/../../../../avr/lib/avr5\libc.a(utoa.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/../../../../avr/lib/avr5\libc.a(utoa.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/../../../../avr/lib/avr5\libc.a(dtoa_prf.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/../../../../avr/lib/avr5\libc.a(dtoa_prf.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/../../../../avr/lib/avr5\libc.a(ftoa_engine.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/../../../../avr/lib/avr5\libc.a(ftoa_engine.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/../../../../avr/lib/avr5\libc.a(strrev.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/../../../../avr/lib/avr5\libc.a(strrev.o) Memory Configuration @@ -198,7 +296,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .rela.plt *(.rela.plt) -.text 0x00000000 0x39a +.text 0x00000000 0x1460 *(.vectors) .vectors 0x00000000 0x54 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o 0x00000000 __vector_default @@ -206,107 +304,191 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.vectors) *(.progmem.gcc*) *(.progmem*) - 0x00000054 . = ALIGN (0x2) - 0x00000054 __trampolines_start = . + .progmem.data 0x00000054 0xfa 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\libc.a(ftoa_engine.o) + 0x0000014e . = ALIGN (0x2) + 0x0000014e __trampolines_start = . *(.trampolines) - .trampolines 0x00000054 0x0 linker stubs + .trampolines 0x0000014e 0x0 linker stubs *(.trampolines*) - 0x00000054 __trampolines_end = . + 0x0000014e __trampolines_end = . *(.jumptables) *(.jumptables*) *(.lowtext) *(.lowtext*) - 0x00000054 __ctors_start = . + 0x0000014e __ctors_start = . *(.ctors) - .ctors 0x00000054 0x2 USBLaminator.o - 0x00000056 __ctors_end = . - 0x00000056 __dtors_start = . + .ctors 0x0000014e 0x2 USBLaminator.o + 0x00000150 __ctors_end = . + 0x00000150 __dtors_start = . *(.dtors) - 0x00000056 __dtors_end = . + 0x00000150 __dtors_end = . SORT(*)(.ctors) SORT(*)(.dtors) *(.init0) - .init0 0x00000056 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o - 0x00000056 __init + .init0 0x00000150 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o + 0x00000150 __init *(.init0) *(.init1) *(.init1) *(.init2) - .init2 0x00000056 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o + .init2 0x00000150 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o *(.init2) *(.init3) *(.init3) *(.init4) - .init4 0x00000062 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_copy_data.o) - 0x00000062 __do_copy_data - .init4 0x00000078 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_clear_bss.o) - 0x00000078 __do_clear_bss + .init4 0x0000015c 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_copy_data.o) + 0x0000015c __do_copy_data + .init4 0x00000172 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_clear_bss.o) + 0x00000172 __do_clear_bss *(.init4) *(.init5) *(.init5) *(.init6) - .init6 0x00000088 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o) - 0x00000088 __do_global_ctors + .init6 0x00000182 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o) + 0x00000182 __do_global_ctors *(.init6) *(.init7) *(.init7) *(.init8) *(.init8) *(.init9) - .init9 0x0000009e 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o + .init9 0x00000198 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o *(.init9) *(.text) - .text 0x000000a6 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o - 0x000000a6 __vector_1 - 0x000000a6 __vector_12 - 0x000000a6 __bad_interrupt - 0x000000a6 __vector_3 - 0x000000a6 __vector_11 - 0x000000a6 __vector_13 - 0x000000a6 __vector_17 - 0x000000a6 __vector_19 - 0x000000a6 __vector_7 - 0x000000a6 __vector_5 - 0x000000a6 __vector_4 - 0x000000a6 __vector_9 - 0x000000a6 __vector_2 - 0x000000a6 __vector_15 - 0x000000a6 __vector_8 - 0x000000a6 __vector_14 - 0x000000a6 __vector_10 - 0x000000a6 __vector_16 - 0x000000a6 __vector_18 - 0x000000a6 __vector_20 - 0x000000aa . = ALIGN (0x2) + .text 0x000001a0 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o + 0x000001a0 __vector_12 + 0x000001a0 __bad_interrupt + 0x000001a0 __vector_3 + 0x000001a0 __vector_11 + 0x000001a0 __vector_13 + 0x000001a0 __vector_17 + 0x000001a0 __vector_19 + 0x000001a0 __vector_7 + 0x000001a0 __vector_5 + 0x000001a0 __vector_4 + 0x000001a0 __vector_9 + 0x000001a0 __vector_2 + 0x000001a0 __vector_15 + 0x000001a0 __vector_8 + 0x000001a0 __vector_14 + 0x000001a0 __vector_10 + 0x000001a0 __vector_16 + 0x000001a0 __vector_18 + 0x000001a0 __vector_20 + 0x000001a4 . = ALIGN (0x2) *(.text.*) .text._Z5setupv - 0x000000aa 0x20a USBLaminator.o - 0x000000aa _Z5setupv - .text.main 0x000002b4 0x6 USBLaminator.o - 0x000002b4 main + 0x000001a4 0x216 USBLaminator.o + 0x000001a4 _Z5setupv + .text.main 0x000003ba 0x5a6 USBLaminator.o + 0x000003ba main .text.__vector_6 - 0x000002ba 0x24 USBLaminator.o - 0x000002ba __vector_6 + 0x00000960 0x108 USBLaminator.o + 0x00000960 __vector_6 + .text.__vector_1 + 0x00000a68 0x20 USBLaminator.o + 0x00000a68 __vector_1 + .text._ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC2Ev + 0x00000a88 0x34 USBLaminator.o + 0x00000a88 _ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC2Ev + 0x00000a88 _ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC1Ev .text._ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC2E3LedINS0_5portbELi4ELi3ELi2EE - 0x000002de 0x50 USBLaminator.o - 0x000002de _ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE - 0x000002de _ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC2E3LedINS0_5portbELi4ELi3ELi2EE + 0x00000abc 0x5a USBLaminator.o + 0x00000abc _ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE + 0x00000abc _ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC2E3LedINS0_5portbELi4ELi3ELi2EE + .text._ZN6ButtonIN6avrlib5portdELi2EEC2E3LedINS0_5portbELi4ELi3ELi2EE + 0x00000b16 0x2c USBLaminator.o + 0x00000b16 _ZN6ButtonIN6avrlib5portdELi2EEC1E3LedINS0_5portbELi4ELi3ELi2EE + 0x00000b16 _ZN6ButtonIN6avrlib5portdELi2EEC2E3LedINS0_5portbELi4ELi3ELi2EE .text._ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv - 0x0000032e 0x14 USBLaminator.o - 0x0000032e _ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv - .text._ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EE4initEv - 0x00000342 0x26 USBLaminator.o - 0x00000342 _ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EE4initEv + 0x00000b42 0x14 USBLaminator.o + 0x00000b42 _ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv .text._GLOBAL__sub_I_l - 0x00000368 0x22 USBLaminator.o - .text.libgcc 0x0000038a 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) - 0x0000038a __tablejump2__ - 0x0000038e __tablejump__ - 0x00000396 . = ALIGN (0x2) + 0x00000b56 0x3e USBLaminator.o + .text.avr-libc.fplib + 0x00000b94 0xa 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\libm.a(addsf3.o) + 0x00000b94 __subsf3 + 0x00000b96 __addsf3 + .text.avr-libc.fplib + 0x00000b9e 0xc0 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\libm.a(addsf3x.o) + 0x00000bb8 __addsf3x + .text.avr-libc.fplib + 0x00000c5e 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(cmpsf2.o) + 0x00000c5e __nesf2 + 0x00000c5e __eqsf2 + 0x00000c5e __cmpsf2 + 0x00000c5e __ltsf2 + 0x00000c5e __lesf2 + .text.avr-libc.fplib + 0x00000c66 0x58 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\libm.a(fixunssfsi.o) + 0x00000c66 __fixunssfsi + .text.avr-libc.fplib + 0x00000cbe 0x7a 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\libm.a(floatsisf.o) + 0x00000cbe __floatunsisf + 0x00000cc2 __floatsisf + .text.avr-libc.fplib + 0x00000d38 0x48 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\libm.a(fp_cmp.o) + 0x00000d38 __fp_cmp + .text.avr-libc.fplib + 0x00000d80 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_inf.o) + 0x00000d80 __fp_inf + .text.avr-libc.fplib + 0x00000d8c 0x6 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\libm.a(fp_nan.o) + 0x00000d8c __fp_nan + .text.avr-libc.fplib + 0x00000d92 0xe 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\libm.a(fp_pscA.o) + 0x00000d92 __fp_pscA + .text.avr-libc.fplib + 0x00000da0 0xe 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\libm.a(fp_pscB.o) + 0x00000da0 __fp_pscB + .text.avr-libc.fplib + 0x00000dae 0x22 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\libm.a(fp_round.o) + 0x00000dae __fp_round + .text.avr-libc.fplib + 0x00000dd0 0x44 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\libm.a(fp_split3.o) + 0x00000dd0 __fp_split3 + 0x00000de0 __fp_splitA + .text.avr-libc.fplib + 0x00000e14 0xe 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\libm.a(fp_zero.o) + 0x00000e14 __fp_zero + 0x00000e16 __fp_szero + .text.avr-libc.fplib + 0x00000e22 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(gesf2.o) + 0x00000e22 __gesf2 + 0x00000e22 __gtsf2 + .text.avr-libc.fplib + 0x00000e2a 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\libm.a(mulsf3.o) + 0x00000e2a __mulsf3 + .text.avr-libc.fplib + 0x00000e2e 0xc2 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\libm.a(mulsf3x.o) + 0x00000e42 __mulsf3x + 0x00000e46 __mulsf3_pse + .text.libgcc.div + 0x00000ef0 0x28 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(_udivmodhi4.o) + 0x00000ef0 __udivmodhi4 + .text.libgcc 0x00000f18 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) + 0x00000f18 __tablejump2__ + 0x00000f1c __tablejump__ + .text.avr-libc + 0x00000f24 0x42 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\libc.a(dtostrf.o) + 0x00000f24 dtostrf + .text.avr-libc + 0x00000f66 0x2c 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\libc.a(utoa.o) + 0x00000f66 utoa + .text.avr-libc + 0x00000f92 0x2fa 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\libc.a(dtoa_prf.o) + 0x00000f92 dtoa_prf + .text.avr-libc + 0x0000128c 0x1b0 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\libc.a(ftoa_engine.o) + 0x0000128c __ftoa_engine + .text.avr-libc + 0x0000143c 0x20 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\libc.a(strrev.o) + 0x0000143c strrev + 0x0000145c . = ALIGN (0x2) *(.fini9) - .fini9 0x00000396 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) - 0x00000396 _exit - 0x00000396 exit + .fini9 0x0000145c 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) + 0x0000145c _exit + 0x0000145c exit *(.fini9) *(.fini8) *(.fini8) @@ -325,51 +507,75 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00000396 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 0x0000145c 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) - 0x0000039a _etext = . + 0x00001460 _etext = . -.data 0x00800060 0xd8 load address 0x0000039a +.data 0x00800060 0x136 load address 0x00001460 0x00800060 PROVIDE (__data_start, .) *(.data) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o .data 0x00800060 0x0 USBLaminator.o + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(cmpsf2.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fixunssfsi.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_inf.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_pscA.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_pscB.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_round.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_split3.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(gesf2.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_copy_data.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_clear_bss.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(utoa.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(ftoa_engine.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(strrev.o) *(.data*) *(.rodata) + .rodata 0x00800060 0x30 USBLaminator.o *(.rodata*) .rodata.str1.1 - 0x00800060 0xd7 USBLaminator.o + 0x00800090 0x105 USBLaminator.o *(.gnu.linkonce.d*) - 0x00800138 . = ALIGN (0x2) - *fill* 0x00800137 0x1 - 0x00800138 _edata = . - 0x00800138 PROVIDE (__data_end, .) + 0x00800196 . = ALIGN (0x2) + *fill* 0x00800195 0x1 + 0x00800196 _edata = . + 0x00800196 PROVIDE (__data_end, .) -.bss 0x00800138 0x4 - 0x00800138 PROVIDE (__bss_start, .) +.bss 0x00800196 0x3c + 0x00800196 PROVIDE (__bss_start, .) *(.bss) - .bss 0x00800138 0x4 USBLaminator.o - 0x00800138 a - 0x00800139 r - 0x0080013a o - 0x0080013b l + .bss 0x00800196 0x3c USBLaminator.o + 0x00800196 b + 0x00800197 a + 0x008001c7 r + 0x008001ca o + 0x008001d1 l *(.bss*) *(COMMON) - 0x0080013c PROVIDE (__bss_end, .) - 0x0000039a __data_load_start = LOADADDR (.data) - 0x00000472 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x008001d2 PROVIDE (__bss_end, .) + 0x00001460 __data_load_start = LOADADDR (.data) + 0x00001596 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x0080013c 0x0 - 0x0080013c PROVIDE (__noinit_start, .) +.noinit 0x008001d2 0x0 + 0x008001d2 PROVIDE (__noinit_start, .) *(.noinit*) - 0x0080013c PROVIDE (__noinit_end, .) - 0x0080013c _end = . - 0x0080013c PROVIDE (__heap_start, .) + 0x008001d2 PROVIDE (__noinit_end, .) + 0x008001d2 _end = . + 0x008001d2 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -390,13 +596,51 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .user_signatures *(.user_signatures*) -.stab 0x00000000 0x6cc +.stab 0x00000000 0x2ac0 *(.stab) .stab 0x00000000 0x6cc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o + .stab 0x000006cc 0x78 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\libm.a(addsf3.o) + 0x84 (size before relaxing) + .stab 0x00000744 0x4bc 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\libm.a(addsf3x.o) + 0x4c8 (size before relaxing) + .stab 0x00000c00 0x90 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\libm.a(cmpsf2.o) + 0x9c (size before relaxing) + .stab 0x00000c90 0x240 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\libm.a(fixunssfsi.o) + 0x24c (size before relaxing) + .stab 0x00000ed0 0x318 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\libm.a(floatsisf.o) + 0x324 (size before relaxing) + .stab 0x000011e8 0x1e0 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\libm.a(fp_cmp.o) + 0x1ec (size before relaxing) + .stab 0x000013c8 0x78 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\libm.a(fp_inf.o) + 0x84 (size before relaxing) + .stab 0x00001440 0x54 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) + 0x60 (size before relaxing) + .stab 0x00001494 0x84 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\libm.a(fp_pscA.o) + 0x90 (size before relaxing) + .stab 0x00001518 0x84 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\libm.a(fp_pscB.o) + 0x90 (size before relaxing) + .stab 0x0000159c 0xfc 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\libm.a(fp_round.o) + 0x108 (size before relaxing) + .stab 0x00001698 0x1d4 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\libm.a(fp_split3.o) + 0x1e0 (size before relaxing) + .stab 0x0000186c 0x90 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\libm.a(fp_zero.o) + 0x9c (size before relaxing) + .stab 0x000018fc 0x6c 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\libm.a(gesf2.o) + 0x78 (size before relaxing) + .stab 0x00001968 0x48 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\libm.a(mulsf3.o) + 0x54 (size before relaxing) + .stab 0x000019b0 0x4d4 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\libm.a(mulsf3x.o) + 0x4e0 (size before relaxing) + .stab 0x00001e84 0x12c 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\libc.a(utoa.o) + 0x138 (size before relaxing) + .stab 0x00001fb0 0xa38 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\libc.a(ftoa_engine.o) + 0xa44 (size before relaxing) + .stab 0x000029e8 0xd8 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\libc.a(strrev.o) + 0xe4 (size before relaxing) -.stabstr 0x00000000 0x82 +.stabstr 0x00000000 0x798 *(.stabstr) - .stabstr 0x00000000 0x82 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o + .stabstr 0x00000000 0x798 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o .stab.excl *(.stab.excl) @@ -414,6 +658,8 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.comment) .comment 0x00000000 0x2f USBLaminator.o 0x30 (size before relaxing) + .comment 0x00000000 0x30 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\libc.a(dtostrf.o) + .comment 0x00000000 0x30 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\libc.a(dtoa_prf.o) .debug *(.debug) @@ -427,39 +673,57 @@ 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 0xa0 *(.debug_aranges) .debug_aranges - 0x00000000 0x50 USBLaminator.o + 0x00000000 0x60 USBLaminator.o + .debug_aranges + 0x00000060 0x20 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\libc.a(dtostrf.o) + .debug_aranges + 0x00000080 0x20 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\libc.a(dtoa_prf.o) .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x3b6a +.debug_info 0x00000000 0x74a7 *(.debug_info) - .debug_info 0x00000000 0x3b6a USBLaminator.o + .debug_info 0x00000000 0x71f6 USBLaminator.o + .debug_info 0x000071f6 0x121 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\libc.a(dtostrf.o) + .debug_info 0x00007317 0x190 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\libc.a(dtoa_prf.o) *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x3fb +.debug_abbrev 0x00000000 0x659 *(.debug_abbrev) - .debug_abbrev 0x00000000 0x3fb USBLaminator.o + .debug_abbrev 0x00000000 0x4c0 USBLaminator.o + .debug_abbrev 0x000004c0 0xad 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\libc.a(dtostrf.o) + .debug_abbrev 0x0000056d 0xec 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\libc.a(dtoa_prf.o) -.debug_line 0x00000000 0x4ac +.debug_line 0x00000000 0xb6d *(.debug_line) - .debug_line 0x00000000 0x4ac USBLaminator.o + .debug_line 0x00000000 0x887 USBLaminator.o + .debug_line 0x00000887 0x96 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\libc.a(dtostrf.o) + .debug_line 0x0000091d 0x250 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\libc.a(dtoa_prf.o) -.debug_frame 0x00000000 0xb0 +.debug_frame 0x00000000 0x1d8 *(.debug_frame) - .debug_frame 0x00000000 0xb0 USBLaminator.o + .debug_frame 0x00000000 0x134 USBLaminator.o + .debug_frame 0x00000134 0x38 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\libc.a(dtostrf.o) + .debug_frame 0x0000016c 0x6c 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\libc.a(dtoa_prf.o) -.debug_str 0x00000000 0x1293 +.debug_str 0x00000000 0x1908 *(.debug_str) - .debug_str 0x00000000 0x1293 USBLaminator.o - 0x12e3 (size before relaxing) + .debug_str 0x00000000 0x181d USBLaminator.o + 0x1885 (size before relaxing) + .debug_str 0x0000181d 0x7b 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\libc.a(dtostrf.o) + 0xfc (size before relaxing) + .debug_str 0x00001898 0x70 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\libc.a(dtoa_prf.o) + 0x118 (size before relaxing) -.debug_loc 0x00000000 0x5d7 +.debug_loc 0x00000000 0x18cf *(.debug_loc) - .debug_loc 0x00000000 0x5d7 USBLaminator.o + .debug_loc 0x00000000 0x12b3 USBLaminator.o + .debug_loc 0x000012b3 0x108 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\libc.a(dtostrf.o) + .debug_loc 0x000013bb 0x514 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\libc.a(dtoa_prf.o) .debug_macinfo *(.debug_macinfo) @@ -467,9 +731,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x40 +.debug_ranges 0x00000000 0xd0 *(.debug_ranges) - .debug_ranges 0x00000000 0x40 USBLaminator.o + .debug_ranges 0x00000000 0xb0 USBLaminator.o + .debug_ranges 0x000000b0 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) + .debug_ranges 0x000000c0 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) .debug_macro *(.debug_macro) diff --git a/USBLaminator/USBLaminator/Debug/USBLaminator.srec b/USBLaminator/USBLaminator/Debug/USBLaminator.srec index 202a907..2a66e2a 100644 --- a/USBLaminator/USBLaminator/Debug/USBLaminator.srec +++ b/USBLaminator/USBLaminator/Debug/USBLaminator.srec @@ -1,74 +1,348 @@ S01400005553424C616D696E61746F722E737265637F -S11300000C942B000C9453000C9453000C94530048 -S11300100C9453000C9453000C945D010C94530005 -S11300200C9453000C9453000C9453000C94530000 -S11300300C9453000C9453000C9453000C945300F0 -S11300400C9453000C9453000C9453000C945300E0 -S11300500C945300B40111241FBECFE5D4E0DEBFDD -S1130060CDBF11E0A0E6B0E0EAE9F3E002C00590FC -S11300700D92A833B107D9F721E0A8E3B1E001C09C -S11300801D92AC33B207E1F710E0C6E5D0E004C03E -S11300902297FE010E94C701C435D107C9F70E9407 -S11300A05A010C94CB010C940000CF93C49ABC9ACF -S11300B0AA98A29AAB98A39AAC98A49AAD98A59A38 -S11300C0AE98A69AAF98A79AE1E6F0E083E2C39AC5 -S11300D0BB9A5D9BFECF8CB9C398BB9A8191811169 -S11300E0F6CFEEE9F0E083E2C39ABB9A5D9BFECFC4 -S11300F08CB9C398BB9A81918111F6CFAA98A29A20 -S1130100AB98A39AAC98A49AAD98A59AAE98A69ADF -S1130110AF98A79A20E030E041E050E0CA01022EF7 -S113012002C0880F991F0A94E2F7A82FA17080FFDC -S113013002C0AA9AA29AF82FF27081FF02C0AB9A69 -S1130140A39AE82FE47082FF02C0AC9AA49A782F95 -S1130150787083FF02C0AD9AA59A682F607184FFFE -S113016002C0AE9AA69A982F907285FF02C0AF9AE9 -S1130170A79A8FEFB1EEC4E08150B040C040E1F7E0 -S113018000C00000AA2311F0AA98A29AFF2311F03C -S1130190AB98A39AEE2311F0AC98A49A772311F0AC -S11301A0AD98A59A662311F0AE98A69A992311F0FA -S11301B0AF98A79A2F5F3F4F2630310509F0AECF95 -S11301C0AA98A29AAB98A39AAC98A49AAD98A59A27 -S11301D0AE98A69AAF98A79AEDEAF0E083E2C39AA4 -S11301E0BB9A5D9BFECF8CB9C398BB9A8191811158 -S11301F0F6CF1FBC8EB58B608EBD1DBC1CBC17BC5E -S113020016BC81E68BBD88EA8ABD19BC18BC89B7C7 -S1130210806189BF7894ECEBF0E083E2C39ABB9AE7 -S11302205D9BFECF8CB9C398BB9A81918111F6CFA7 -S113023023C0C39ABB9A5D9BFECF8CB9C398BB9A6B -S113024081918111F6CF20C0C39ABB9A5D9BFECFEA -S11302508CB9C398BB9A81918111F6CF23C0C39AFC -S1130260BB9A5D9BFECF8CB9C398BB9A81918111D7 -S1130270F6CFC29ABA9A1CC0C498BC9AC39ABB9AC5 -S1130280E2EDF0E083E2D5CF379A2FEF81EE94E0F0 -S1130290215080409040E1F700C00000EFEDF0E015 -S11302A083E2D2CFC398BB9AEFEEF0E083E2D7CFDC -S11302B0CF9108950E945500FFCF1F920F920FB661 -S11302C00F9211248F939F9395B384E0892785BB64 -S11302D09F918F910F900FBE0F901F901895CF9301 -S11302E0DF931F92CDB7DEB76983BC9ABB9ABA9AE3 -S11302F0C498BC9AC398BB9AC298BA9A1BB888E0AF -S11303008AB986EA80BD10BC89E189B9ECE2F1E0E2 -S113031085E5C39ABB9A5D9BFECF8CB9C398BB9A03 -S113032081918111F6CF0F90DF91CF910895BC9AFE -S1130330BB9ABA9AC498BC9AC398BB9AC298BA9A00 -S11303400895A29AA39AA49AA59AA69AA79AAA9853 -S1130350A29AAB98A39AAC98A49AAD98A59AAE9891 -S1130360A69AAF98A79A08958BE391E00E9497010B -S11303708AE391E00E94A10160E089E391E00E9498 -S11303806F0184E086B917B80895EE0FFF1F05903A -S10D0390F491E02D0994F894FFCFD6 -S113039A2323232320426567696E20426F6F747595 -S11303AA70202323232323232323232323232323C5 -S11303BA23232323232323232323232323232323FF -S11303CA23232323232323232323230A00232054FD -S11303DA657374204F75747075740A00232053650D -S11303EA7475702054696D65720A002323204F7551 -S11303FA7470757420496E697420446F6E65210A9D -S113040A0023205365747570204144430A00232055 -S113041A536574757020427574746F6E0A002323D1 -S113042A232320456E6420426F6F74757020232342 -S113043A232323232323232323232323232323237E -S113044A232323232323232323232323232323236E -S113045A2323232323232323230A0055617274208D -S10B046A646F6E65210A0000B5 +S11300000C94A8000C9434050C94D0000C94D000EB +S11300100C94D0000C94D0000C94B0040C94D00038 +S11300200C94D0000C94D0000C94D0000C94D0000C +S11300300C94D0000C94D0000C94D0000C94D000FC +S11300400C94D0000C94D0000C94D0000C94D000EC +S11300500C94D00000407A10F35A00A0724E180994 +S11300600010A5D4E80000E87648170000E40B541B +S1130070020000CA9A3B000000E1F50500008096EA +S11300809800000040420F000000A086010000001C +S1130090102700000000E8030000000064000000D6 +S11300A000000A00000000000100000000002C769F +S11300B0D888DC674F0823DFC1DFAE59E1B1B796BA +S11300C0E5E3E453C63AE651997696E8E6C2842617 +S11300D0EB898C9B62ED407C6FFCEFBC9C9F40F2F3 +S11300E0BAA56FA5F490055A2AF75C936B6CF9676F +S11300F06DC11BFCE0E40D47FEF520E6B500D0ED34 +S1130100902E0300943577050080841E080000209B +S11301104E0A000000C80C333333330F986E128339 +S11301201141EF8D2114893BE65516CFFEE6DB180D +S1130130D1844B381BF77C1D901DA4BBE4242032D2 +S113014084725E228100C9F124ECA1E53D27AB0550 +S113015011241FBECFE5D4E0DEBFCDBF11E0A0E681 +S1130160B0E0E0E6F4E102C005900D92A639B107D3 +S1130170D9F721E0A6E9B1E001C01D92A23DB20782 +S1130180E1F711E0C0E5D1E004C02297FE010E942E +S11301908E07CE34D107C9F70E94DD010C942E0AD4 +S11301A00C940000CF93C49ABC9AAA98A29AAB98D4 +S11301B0A39AAC98A49AAD98A59AAE98A69AAF982B +S11301C0A79AE1E9F0E083E2C39ABB9A5D9BFECF74 +S11301D08CB9C398BB9A81918111F6CFEEECF0E013 +S11301E083E2C39ABB9A5D9BFECF8CB9C398BB9A3A +S11301F081918111F6CFAA98A29AAB98A39AAC9850 +S1130200A49AAD98A59AAE98A69AAF98A79A20E01A +S113021030E041E050E0CA01022E02C0880F991F6D +S11302200A94E2F7A82FA17080FF02C0AA9AA29AAA +S1130230F82FF27081FF02C0AB9AA39AE82FE47002 +S113024082FF02C0AC9AA49A782F787083FF02C010 +S1130250AD9AA59A682F607184FF02C0AE9AA69ADF +S1130260982F907285FF02C0AF9AA79A8FEFB1EED4 +S1130270C4E08150B040C040E1F700C00000AA23B0 +S113028011F0AA98A29AFF2311F0AB98A39AEE2337 +S113029011F0AC98A49A772311F0AD98A59A66232F +S11302A011F0AE98A69A992311F0AF98A79A2F5FF0 +S11302B03F4F2630310509F0AECFAA98A29AAB98E9 +S11302C0A39AAC98A49AAD98A59AAE98A69AAF981A +S11302D0A79AEDEDF0E083E2C39ABB9A5D9BFECF53 +S11302E08CB9C398BB9A81918111F6CF1FBC8EB58E +S11302F08B608EBD1DBC1CBC17BC16BC81E68BBDBF +S113030088EA8ABD19BC18BC89B7806189BF789412 +S1130310ECEEF0E083E2C39ABB9A5D9BFECF8CB90E +S1130320C398BB9A81918111F6CF2FC0C39ABB9A0F +S11303305D9BFECF8CB9C398BB9A81918111F6CF96 +S11303402CC0C39ABB9A5D9BFECF8CB9C398BB9A51 +S113035081918111F6CF8BB780648BBF82E085BF1A +S113036080E48ABF7894C398BB9AE2E0F1E083E228 +S1130370C39ABB9A5D9BFECF8CB9C398BB9A8191FB +S11303808111F6CFC29ABA9A16C0C498BC9AC39A7D +S1130390BB9AEFE3F1E083E2C9CF379A2FEF81EE06 +S11303A094E0215080409040E1F700C00000ECE46C +S11303B0F1E083E2C6CFCF910895CF93DF93CDB719 +S11303C0DEB7A9970FB6F894DEBF0FBECDBF0E946B +S11303D0D20029E130E039A728A787B1887F87B9FF +S11303E087B187B935E33A95F1F70000369A349B23 +S11303F0FECFA4B0B5B087B1887F87B9389A85E3BA +S11304008A95F1F70000369A349BFECF84B095B0FC +S1130410E7E9F1E020803180E9E9F1E00081118130 +S1130420EBE9F1E0808191819101281B390BC9012D +S1130430EDE9F1E020813181B801621B730B0E9468 +S1130440780780E090E00E945F06C62ED72EE82E43 +S1130450F92E462E572E682E792EB50180E090E0B5 +S11304600E945F069B01AC016C2D7D2D8E2D9F2D6E +S11304700E9415076B017C0177FA709477F87094E9 +S1130480B80180E090E00E945F069B01AC01C301CB +S1130490B2010E9415079B01AC01C701B6010E947D +S11304A0CB056B017C01B10180E090E00E945F0606 +S11304B09B01AC01C701B6010E94CB056AA37BA3D3 +S11304C08CA39DA3EFE9F1E020803180E1EAF1E023 +S11304D000811181E3EAF1E0808191819101281B7F +S11304E0390BC901E5EAF1E020813181B801621BD1 +S11304F0730B0E94780780E090E00E945F06C62E8E +S1130500D72EE82EF92E462E572E682E792EB401BA +S113051080E090E00E945F069B01AC016C2D7D2D74 +S11305208E2D9F2D0E9415076B017C0177FA709424 +S113053077F87094B80180E090E00E945F069B0118 +S1130540AC01C301B2010E9415079B01AC01C701B4 +S1130550B6010E94CB056B017C01B10180E090E003 +S11305600E945F069B01AC01C701B6010E94CB0546 +S11305706EA37FA3D82EC92E762F6FA1272F362FD7 +S11305804D2D5C2DBAA1ABA1FCA1EDA16B2F7A2F4F +S11305908F2F9E2F0E94CB0520E030E040E05FE3E8 +S11305A00E941507762E672E582E492EE8ECF1E0AE +S11305B0808191812FEF3FEF318320838F3F3FEF85 +S11305C0930711F099A788A768A579A56B5F7F4F5A +S11305D0882777FD8095982F0E946106272D362D58 +S11305E0452D542D0E94CA05F62EE72E382E292EAD +S11305F020E030E0A9010E942F0688230CF499C161 +S113060020E030E040EA51E46F2D7E2D832D922DC1 +S11306100E94110718160CF491C17F2D6E2D932D95 +S1130620822D90C1C39ABB9A5D9BFECF8CB9C398AF +S1130630BB9A81918111F6CF8E01095E1F4F22E092 +S11306404AE06F2D7E2D832D922D0E949207FC018E +S11306502081222359F03196C39ABB9A5D9BFECF29 +S11306602CB9C398BB9A21912111F6CFC39ABB9A96 +S11306705D9BFECF8BE38CB9C398BB9A0F2EFAE631 +S1130680EF2EF1E0FF2EF02DF70183E6C39ABB9A1B +S11306905D9BFECF8CB9C398BB9A81918111F6CF33 +S11306A0B4016A0D7B1D80E090E00E945F0620E0AB +S11306B030E040E05FE30E9415078E01045F1F4FA6 +S11306C022E04AE00E949207FC012081222359F093 +S11306D03196C39ABB9A5D9BFECF2CB9C398BB9A43 +S11306E021912111F6CFC39ABB9A5D9BFECF8BE378 +S11306F08CB9C398BB9AEEE6F1E086E7C39ABB9A3D +S11307005D9BFECF8CB9C398BB9A81918111F6CFC2 +S11307104AE050E0BE01645F7F4FC5010E94B30709 +S1130720FC012081222359F03196C39ABB9A5D9B28 +S1130730FECF2CB9C398BB9A21912111F6CFC39A4D +S1130740BB9A5D9BFECF8BE38CB9C398BB9AE2E75F +S1130750F1E086E7C39ABB9A5D9BFECF8CB9C39840 +S1130760BB9A81918111F6CF4AE050E0BE01645FEB +S11307707F4FC4010E94B307FC012081222359F05A +S11307803196C39ABB9A5D9BFECF2CB9C398BB9A92 +S113079021912111F6CFC39ABB9A5D9BFECF8BE3C7 +S11307A08CB9C398BB9A83E6F701C39ABB9A5D9B45 +S11307B0FECF8CB9C398BB9A81918111F6CF8E017B +S11307C00F5F1F4F22E04AE0672D762D852D942D73 +S11307D00E949207FC012081222359F03196C39A8A +S11307E0BB9A5D9BFECF2CB9C398BB9A2191211172 +S11307F0F6CFC39ABB9A5D9BFECF8BE38CB9C398AB +S1130800BB9AE6E7F1E083E6C39ABB9A5D9BFECF11 +S11308108CB9C398BB9A81918111F6CF8E010F5F79 +S11308201F4F22E04AE0FAA1EBA15CA13DA16F2F8A +S11308307E2F852F932F0E949207FC012081222373 +S113084059F03196C39ABB9A5D9BFECF2CB9C398DD +S1130850BB9A21912111F6CFC39ABB9A5D9BFECF1F +S11308608BE38CB9C398BB9AEAE7F1E083E6C39AB9 +S1130870BB9A5D9BFECF8CB9C398BB9A81918111C1 +S1130880F6CF8E010F5F1F4F22E04AE0FEA1EFA1D9 +S11308906F2F7E2F8D2D9C2D0E949207FC012081AD +S11308A0222359F03196C39ABB9A5D9BFECF2CB993 +S11308B0C398BB9A21912111F6CFC39ABB9A5D9B31 +S11308C0FECF8BE38CB9C398BB9AEEE7F1E088E6E0 +S11308D0C39ABB9A5D9BFECF8CB9C398BB9A819196 +S11308E08111F6CF9A9B03C0E2E6F1E002C0EBE58A +S11308F0F1E08081882359F03196C39ABB9A5D9BBD +S1130900FECF8CB9C398BB9A81918111F6CFC39A5B +S1130910BB9A5D9BFECF8AE08CB9C398BB9AFFEF6C +S113092021EE34E0F15020403040E1F700C00000F7 +S113093054CD70E060E090E080E004C070E060E0DE +S113094090EA81E4462F282F672F742F892F922F46 +S11309500E9433066093CB01E5E8F1E080E762CEC4 +S11309601F920F920FB60F9211242F933F934F9320 +S11309705F936F937F938F939F93AF93BF93EF9303 +S1130980FF938091CA01843108F451C01092CA01C6 +S113099051C0822F91916C91961718F1992309F106 +S11309A0BA01022E02C0660F771F0A94E2F7CB0148 +S11309B060FF02C0AA9AA29A81FF02C0AB9AA39ACE +S11309C082FF02C0AC9AA49A83FF02C0AD9AA59A92 +S11309D084FF02C0AE9AA69A85FF22C0AF9AA79A56 +S11309E01FC0BA0102C0660F771F8A95E2F7CB01D8 +S11309F060FF02C0AA98A29A81FF02C0AB98A39A92 +S1130A0082FF02C0AC98A49A83FF02C0AD98A59A55 +S1130A1084FF02C0AE98A69A85FF02C0AF98A79A39 +S1130A202F5F3F4F2630310509F0B3CF0CC08F5FE5 +S1130A308093CA01EBECF1E020E030E0AAECB1E0F5 +S1130A4041E050E0A6CFFF91EF91BF91AF919F910C +S1130A508F917F916F915F914F913F912F910F9063 +S1130A600FBE0F901F9018951F920F920FB60F9202 +S1130A7011248F9380E48ABFC49ABC9A8F910F90FB +S1130A800FBE0F901F901895FC01119286E0DF01B4 +S1130A901D928A95E9F7A29AA39AA49AA59AA69A6E +S1130AA0A79AAA98A29AAB98A39AAC98A49AAD983C +S1130AB0A59AAE98A69AAF98A79A0895CF93DF9374 +S1130AC01F92CDB7DEB76983BC9ABB9ABA9AC49811 +S1130AD0BC9AC398BB9AC298BA9A2FEF3FEFFC0115 +S1130AE0328321831BB888E08AB986EA80BD10BCB2 +S1130AF089E189B9EAE8F1E085E5C39ABB9A5D9B8F +S1130B00FECF8CB9C398BB9A81918111F6CF0F9017 +S1130B10DF91CF910895CF93DF931F92CDB7DEB7C6 +S1130B206983BC9ABB9ABA9AC498BC9AC398BB9A74 +S1130B30C298BA9A8A989298929A0F90DF91CF911C +S1130B400895BC9ABB9ABA9AC498BC9AC398BB9AA3 +S1130B50C298BA9A089581ED91E00E94A1058AECA9 +S1130B6091E00E94440560E087EC91E00E945E05FC +S1130B7080E3E0E6F0E0A7E9B1E001900D928A9508 +S1130B80E1F784E086B917B860E086E991E00E9455 +S1130B908B0508955058BB27AA270ED008C1F9D059 +S1130BA030F0FED020F031F49F3F11F41EF4EEC07B +S1130BB00EF4E095E7FBE4C0E92F0AD180F3BA17FD +S1130BC0620773078407950718F071F49EF522C134 +S1130BD00EF4E0950B2EBA2FA02D0B01B901900154 +S1130BE00C01CA01A0011124FF27591B99F0593F98 +S1130BF050F4503E68F11A16F040A22F232F342FE0 +S1130C004427585FF3CF469537952795A795F0402D +S1130C105395C9F77EF41F16BA0B620B730B840B42 +S1130C20BAF09150A1F0FF0FBB1F661F771F881FFA +S1130C30C2F70EC0BA0F621F731F841F48F4879552 +S1130C4077956795B795F7959E3F08F0B3CF939541 +S1130C50880F08F09927EE0F9795879508956CD023 +S1130C6008F481E00895BCD088F09F5790F0B92F24 +S1130C709927B751A0F0D1F0660F771F881F991FED +S1130C801AF0BA95C9F712C0B13081F0C3D0B1E0FF +S1130C900895C0C0672F782F8827B85F39F0B93F0F +S1130CA0CCF3869577956795B395D9F73EF49095EF +S1130CB08095709561957F4F8F4F9F4F0895E8946D +S1130CC009C097FB3EF490958095709561957F4F90 +S1130CD08F4F9F4F9923A9F0F92F96E9BB2793953E +S1130CE0F695879577956795B795F111F8CFFAF44E +S1130CF0BB0F11F460FF1BC06F5F7F4F8F4F9F4F7F +S1130D0016C0882311F096E911C0772321F09EE8DC +S1130D10872F762F05C0662371F096E8862F70E042 +S1130D2060E02AF09A95660F771F881FDAF7880F1C +S1130D309695879597F90895990F0008550FAA0B72 +S1130D40E0E8FEEF16161706E807F907C0F01216DA +S1130D501306E407F50798F0621B730B840B950BDD +S1130D6039F40A2661F0232B242B252B21F4089532 +S1130D700A2609F4A140A6958FEF811D811D0895CF +S1130D8097F99F6780E870E060E008959FEF80EC3A +S1130D90089500240A9416161706180609060895DD +S1130DA000240A9412161306140605060895092E43 +S1130DB00394000C11F4882352F0BB0F40F4BF2BB2 +S1130DC011F460FF04C06F5F7F4F8F4F9F4F0895F2 +S1130DD057FD9058440F551F59F05F3F71F04795E8 +S1130DE0880F97FB991F61F09F3F79F087950895CD +S1130DF0121613061406551FF2CF4695F1DF08C0EC +S1130E00161617061806991FF1CF86957105610508 +S1130E1008940895E894BB2766277727CB0197F9B0 +S1130E2008958ADF08F48FEF08950BD0C0CFB1DFA7 +S1130E3028F0B6DF18F0952309F0A2CFA7CF11242C +S1130E40EACFC6DFA0F3959FD1F3950F50E0551F6D +S1130E50629FF001729FBB27F00DB11D639FAA270B +S1130E60F00DB11DAA1F649F6627B00DA11D661F5A +S1130E70829F2227B00DA11D621F739FB00DA11D7B +S1130E80621F839FA00D611D221F749F3327A00D35 +S1130E90611D231F849F600D211D822F762F6A2FD1 +S1130EA011249F5750408AF0E1F088234AF0EE0F56 +S1130EB0FF1FBB1F661F771F881F91505040A9F763 +S1130EC09E3F510570F05CCFA6CF5F3FECF3983E98 +S1130ED0DCF3869577956795B795F795E7959F5FCA +S1130EE0C1F7FE2B880F911D9695879597F9089564 +S1130EF0AA1BBB1B51E107C0AA1FBB1FA617B7073C +S1130F0010F0A61BB70B881F991F5A95A9F7809557 +S1130F109095BC01CD010895EE0FFF1F0590F4914B +S1130F20E02D0994EF920F931F93CF93C02F47FFA7 +S1130F3002C034E101C034E0E42FFF27E7FDF0955F +S1130F40F7FF03C0F195E195F109E32E022F2E2F4F +S1130F504C2F512F0E94C9078C2F912FCF911F9195 +S1130F600F91EF900895FB019F01423074F04532D8 +S1130F7064F4642F77270E947807805D8A330CF02D +S1130F80895D8193CB010097A1F71082C9010C946C +S1130F901E0A6F927F929F92AF92BF92CF92DF927E +S1130FA0EF92FF920F931F93CF93DF93CDB7DEB7EA +S1130FB029970FB6F894DEBF0FBECDBF6A01B22EDB +S1130FC0102F0C3318F4F02EF39402C05CE3F52ECA +S1130FD00F2D27E0AE014F5F5F4F0E9446097981D4 +S1130FE0272F2970213031F0E1FC06C0E0FE06C055 +S1130FF060E205C06DE203C06BE201C060E073FF14 +S11310003DC0662311F084E001C083E08B1510F429 +S1131010B81A01C0B12CE4FC0BC08B2DF60190E290 +S113102002C0919381508111FCCFCB0CD11CB12C07 +S1131030662319F0D6016D936D01E2FE0AC08EE4B9 +S1131040F601808391E491838283F3E0CF0ED11C77 +S11310500CC08EE6D6018C9391E611969C93119761 +S113106012968C93B3E0CB0ED11C8B2DF60190E23B +S113107002C0919381508111FCCF40C072FF45C0E2 +S1131080662311F084E001C083E08B1510F4B81AD4 +S113109001C0B12CE4FC0BC08B2DF60190E202C020 +S11310A0919381508111FCCFCB0CD11CB12C6623C0 +S11310B019F0F60161936F01E2FE0EC089E4D601D6 +S11310C08C938EE411968C93119786E412968C93EC +S11310D0B3E0CB0ED11C0AC089E6F60180838EE60C +S11310E0818386E68283F3E0CF0ED11C8B2DF6013B +S11310F090E202C0919381508111FCCFF601EB0D77 +S1131100F11D10822EEF3FEFACC0A1E0611101C0D0 +S1131110A0E04A2F50E01816190624F49C012F5F12 +S11311203F4F02C021E030E0240F351F112329F086 +S1131130412F50E04F5F5F4F02C040E050E0420F4C +S1131140531F2B2D30E04217530714F4B41A01C077 +S1131150B12C3E2D3071E4FC0DC0E3FC0BC02B2DF3 +S1131160F60140E202C0419321502111FCCFCB0C87 +S1131170D11CB12CAA2319F0D6016D936D01311144 +S11311800BC02B2DF60130E302C031932150211105 +S1131190FCCFCB0CD11CB12CF80E0A8140E1A42E5B +S11311A0A72274FF03C0013309F4FA941F142CF42A +S11311B02F2D293018F028E001C021E0AC0197FF61 +S11311C002C040E050E060E070E03EE2932EFC019B +S11311D0E21BF1099F01DC01A41BB50BFE01319652 +S11311E0EA0FFB1FA12FB0E0662477246A1A7B0A5A +S11311F04F3F1FEF510719F4D6019D926D018417DB +S1131200950754F0241735073CF47F01E60EF71ECA +S1131210D70111961C9101C010E3415051096F5F31 +S11312207F4F4615570524F0D6011D936D01E0CF7D +S11312304817590739F4063320F4053319F4A1107B +S113124001C011E3F60111938B2DDF0190E202C07E +S11312509D9381508111FCCFEB0DF11D108220E094 +S113126030E0C90129960FB6F894DEBF0FBECDBF9A +S1131270DF91CF911F910F91FF90EF90DF90CF906E +S1131280BF90AF909F907F906F900895283008F0A2 +S113129027E03327DA01990F311D87FD916000960D +S11312A06105710539F432602E5F3D9330E32A9570 +S11312B0E1F708959F3F30F080387105610509F02A +S11312C03C5F3C5F3D93913008F08068911DDF9353 +S11312D0CF931F930F93FF92EF92192F987F9695B8 +S11312E0E92F96959695E90FFF27E255FF4F992729 +S11312F03327EE24FF24A701E701059008940794FF +S113130028F4360FE71EF81E491F511D660F771F7C +S1131310881F991F0694A1F70590079428F4E70EF7 +S1131320F81E491F561FC11D770F881F991F661F7E +S11313300694A1F70590079428F4F80E491F561F48 +S1131340C71FD11D880F991F661F771F0694A1F729 +S11313500590079420F4490F561FC71FD81F990FF3 +S1131360661F771F881F0694A9F78491109517703C +S113137041F0D695C79557954795F794E7941A95F4 +S1131380C1F7E4E5F0E06894159015913591659105 +S1131390959105907FE27395E118F10A430B560B82 +S11313A0C90BD009C0F7E10CF11E431F561FC91F1A +S11313B0D01D7EF4703311F48A95E6CFE894015081 +S11313C030F0080F0AF40027021708F4202F2395A1 +S11313D0022F7A3328F079E37D932A95E9F710C038 +S11313E07D932A9589F60694979567953795179571 +S11313F01794E118F10A430B560BC90BD00998F066 +S113140023957E9173957A3308F070E37C932013CF +S1131410B8F77E9170617D9330F0839571E37D938D +S113142070E32A95E1F71124EF90FF900F911F913B +S1131430CF91DF91992787FD90950895DC01FC01F8 +S1131440672F71917723E1F7329704C07C916D93F4 +S113145070836291AE17BF07C8F30895F894FFCF65 +S11314601A009000B40054001A009000B400540014 +S11314700000000000000000000000000000000068 +S11314800000000000000000000000000000000058 +S11314902323232320426567696E20426F6F74758E +S11314A070202323232323232323232323232323BE +S11314B023232323232323232323232323232323F8 +S11314C023232323232323232323230A00232054F6 +S11314D0657374204F75747075740A002320536506 +S11314E07475702054696D65720A002323204F754A +S11314F07470757420496E697420446F6E65210A96 +S1131500002323232320456E6420426F6F7475707B +S1131510202323232323232323232323232323239A +S11315202323232323232323232323232323232387 +S11315302323232323232323232323230A002320B6 +S11315405365747570204144430A00232053657425 +S1131550757020427574746F6E0A006D6F6E3D3045 +S11315603B006D6F6E3D313B00636D3D0076303D59 +S11315700076313D0063313D0063323D00686F6E9B +S11315803D303B0070776D3D005561727420646F8F +S10915906E65210A000053 S9030000FC diff --git a/USBLaminator/USBLaminator/USBLaminator.cpp b/USBLaminator/USBLaminator/USBLaminator.cpp index 631153e..52859a9 100644 --- a/USBLaminator/USBLaminator/USBLaminator.cpp +++ b/USBLaminator/USBLaminator/USBLaminator.cpp @@ -6,11 +6,13 @@ */ #include "peripheral.h" +#include -ledclass l; -ssrclass o; -usartclass r(l); -adcclass a; +ledclass l; +ssrclass o; +usartclass r(l); +adcclass a; +buttonclass b(l); void setup() { @@ -27,7 +29,7 @@ void setup() r.send("# Setup ADC\n"); a.on(); r.send("# Setup Button\n"); - //button on + b.setup_intr(); l.off(l.YELLOW); r.send("#### End Bootup ###########################################\n"); l.on(l.GREEN); @@ -36,12 +38,41 @@ void setup() int main(void) { setup(); + int16_t target_temp = 25; + float pwm_value = 0; while(1) { - + uint16_t v0 = a.get(0); + uint16_t v1 = a.get(1); + float t0 = a.convert(v0, 0); + float t1 = a.convert(v1, 1); + float tm = (t0+t1)/2; + int16_t temp = r.readTemp(); + if(temp != -1) { + target_temp = temp; + } + pwm_value = (target_temp+5) - tm; + o.setPwm(0, pwm_value); + char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); + char vs[11]; r.send("cm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); + r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); + r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";"); + char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";"); + r.send("c1="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); + r.send("c2="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";"); + //temp_ziel_wert + //motor_ziel_wert + r.send((o.isOn(0)==1)?"hon=1;":"hon=0;"); + r.send((o.isOn(1)==1)?"mon=1;":"mon=0;"); + r.send("\n"); + _delay_ms(100); } } ISR(TIMER1_COMPA_vect) { o.timer(); +} + +ISR(INT0_vect) { + b.intr(); } \ No newline at end of file diff --git a/USBLaminator/USBLaminator/USBLaminator.cppproj b/USBLaminator/USBLaminator/USBLaminator.cppproj index 41e848c..8dfd970 100644 --- a/USBLaminator/USBLaminator/USBLaminator.cppproj +++ b/USBLaminator/USBLaminator/USBLaminator.cppproj @@ -18,7 +18,8 @@ Native true false - exception_table + + 0 true 0x20000000 @@ -115,48 +116,53 @@ - True - True - True - True - True - True - - - DEBUG - - - Optimize (-O1) - True - True - Default (-g2) - True - True - True - - - DEBUG - - - Optimize (-O1) - True - True - Default (-g2) - True - - - libm - - - <segmentname>=<address>, for example .boot=0xff - Default (-Wa,-g) - + True + True + True + True + True + True + + + DEBUG + + + Optimize (-O1) + True + True + Default (-g2) + True + -std=gnu++11 + True + True + + + DEBUG + + + Optimize (-O1) + True + True + Default (-g2) + True + -std=gnu++11 + + + libm + + + <segmentname>=<address>, for example .boot=0xff + Default (-Wa,-g) + compile + + compile + compile diff --git a/USBLaminator/USBLaminator/io/ADC.hpp b/USBLaminator/USBLaminator/io/ADC.hpp index 62e63fc..fe895a1 100644 --- a/USBLaminator/USBLaminator/io/ADC.hpp +++ b/USBLaminator/USBLaminator/io/ADC.hpp @@ -21,6 +21,20 @@ class Adc { ADCSRA |= (1<table[pin][0]-this->table[pin][2])/(this->table[pin][1]-this->table[pin][3])); + return (m * (float)v) + (-m * (float)this->table[pin][1]) + this->table[pin][0]; + } private: void init() { ADCSRA = (1< 5) + ausg = 5; + if(val < 0) + val = 0; + if(val > 20) + val = 20; + this->pwm[ausg] = (uint8_t)val; + } + uint8_t getPwm(uint8_t ausg) { + if(ausg < 0) + ausg = 0; + if(ausg > 5) + ausg = 5; + return this->pwm[ausg]; + } + void timer() { + if (this->pct++ >= 20) { + this->pct=0; + } + for(uint8_t i = 0; i < 6; i++) { + if(this->pwm[i] >= this->pct && this->pwm[i] != 0) { + this->on((1<off((1< out1; const typedef avrlib::pin out2; diff --git a/USBLaminator/USBLaminator/io/Usart.hpp b/USBLaminator/USBLaminator/io/Usart.hpp index f8f2e26..f6fb385 100644 --- a/USBLaminator/USBLaminator/io/Usart.hpp +++ b/USBLaminator/USBLaminator/io/Usart.hpp @@ -27,11 +27,13 @@ class Usart { void send(uint8_t wert) { uart_putchar(wert); } + int16_t readTemp() { + int16_t t = this->temp; + this->temp = -1; + return t; + } private: void init() { - //txd::make_output(); - //rxd::make_input(); - UCSRA = 0; UCSRB = (1< rts; const typedef avrlib::pin cts; const typedef avrlib::pin pwren; + int16_t temp = -1; }; #endif /* USART_H_ */ \ No newline at end of file diff --git a/USBLaminator/USBLaminator/io/button.hpp b/USBLaminator/USBLaminator/io/button.hpp new file mode 100644 index 0000000..6311030 --- /dev/null +++ b/USBLaminator/USBLaminator/io/button.hpp @@ -0,0 +1,41 @@ +/* + * button.hpp + * + * Created: 18.07.2016 22:03:30 + * Author: netz + */ + + +#ifndef BUTTON_H_ +#define BUTTON_H_ + + +template +class Button { + public: + Button(ledclass l) { + init(); + this->led = l; + } + void setup_intr() { + GICR |= (1< bt1; + ledclass led; +}; + + +#endif /* BUTTON_H_ */ \ No newline at end of file diff --git a/USBLaminator/USBLaminator/peripheral.h b/USBLaminator/USBLaminator/peripheral.h index 7fb6aa9..21f823a 100644 --- a/USBLaminator/USBLaminator/peripheral.h +++ b/USBLaminator/USBLaminator/peripheral.h @@ -50,6 +50,10 @@ typedef Adc< false //AREF powsersource > adcclass; - +#include "io/button.hpp" +typedef Button< + avrlib::portd, + PIND2 +> buttonclass; #endif /* PERIPHERAL_H_ */ \ No newline at end of file