From dbe7fff164709de3f1f8e14a84d886c464859612 Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Tue, 19 Jul 2016 19:35:41 +0000 Subject: [PATCH] temperaturmessung ok --- USBLaminator/USBLaminator.atsuo | Bin 16896 -> 17408 bytes .../USBLaminator/Debug/USBLaminator.elf | Bin 71321 -> 74109 bytes .../USBLaminator/Debug/USBLaminator.hex | 597 +- .../USBLaminator/Debug/USBLaminator.lss | 6068 +++++++++-------- .../USBLaminator/Debug/USBLaminator.map | 321 +- .../USBLaminator/Debug/USBLaminator.srec | 597 +- USBLaminator/USBLaminator/USBLaminator.cpp | 11 +- USBLaminator/USBLaminator/io/ADC.hpp | 14 +- USBLaminator/USBLaminator/io/SSR.hpp | 3 + USBLaminator/USBLaminator/io/button.hpp | 2 +- 10 files changed, 3964 insertions(+), 3649 deletions(-) diff --git a/USBLaminator/USBLaminator.atsuo b/USBLaminator/USBLaminator.atsuo index a383263eb71663c59b16c818b3974851e0c15433..fa1d770f29bf5a951e78b0d70101fd8a128461aa 100644 GIT binary patch delta 1120 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%0D$QXr(%EO5Ra;pC8GoGi>l(1Ec2ZE*@as+4J-= z%(=vHF;i@=+VTqFEe^+EY|rvkr>>Z(_1@neo$1Z;5u(%SM}E!zMCqwomYA8n;f z-IkAW3VJxS4C6S)5P8m&g|<9uB5%vzn<%X1K3+Uw7f!8_bwUWHmS-+Y8>Rbs{KTiR zBTs0f{yd~^oX@i-Gz(|xIQnhUSRdNCA2-9%PgJdWZidFH=`1efasxg^p(0_<9UsGk zJGAM`;CCG>AFvJd2PsU0R;!q5g-0^*IECo}i7~(Jd2)rexs5SGs<+ty&m9;>CVipF zud&FZ@G!tPwlYb5#*-(s;}gsf^OD#odn9{`f0bcIL~Jweb(=jrX(Bo|*BLkM!=eRqfPlKJSibfn{P0XQc3vR(u@QXll%xR*JuVl_J{xoN5MWo7&(opBcG@qV=ltu)KJz@yH$V!~27zR8H9)Yfv{%(d%EHAfp zMvCD{>6|~0e^%gAO=iQGK|Cw;@rdFc4CPEis6DO~@Cl)0ym*N(IrsAjObEdm7!n$) zc#tQAU=SySe8(28FYyasyUyWp)E?KUI6OvM{pz9CSJ)yU1V=L=1RR8@kO|!Wrb|3{ z!?t*qaDxtyF)d+R0R1Wd#gj0s3^b=a#T(=MQlB4(AhA>u`7yL)371%69mr!{J$Rn2N*g`A_y!%cbL=O`xbXhFD+^ zd-9~cfY+;BPhUbI(Rw-s>b1tpL)_Cc&d|hbP1GuOj|K3n~FV7cGG*4ew-}>-!?7;@$l3s$eOGD`aKDeHt4Wt2F8G8b_ z6!ipf?dJ&;X&kEYL;4k0#-0E!MLhvr`*~99c`|s)+1Cy(`q%;RvBPOeDi$}-Z&+}| z(gLs+>uLZuA3T95^fK_8eqDyX1%k*ra7MpAj9de_-Qo$vY3(2M>q@Qdq_yYtEA9|@ z(!!COpNA&18)>i`xJhd|TpfsNqZfye`u(~iN7c9F7)D5LmkepJ%Qf3{}=V^)4KopXcK6q zwIAqLT;+NKxM=hQa1G`O;F87@z!icgfD>*{V2IXwwDyR8U8rqRwDxnnrebmT%-~h1 zkc(qBrec-!tYG0imI8neCRWZ=Ec_mPC;=Y|u$!ghrcOkQ44$f#ipAf9H~8^Jx5H)$ zZva?<4C8h%_6HXbf73UIdKmeGr4*Xj40H_X) z_^^BLhs*RO)8;eOK3n6oF0fY*j2H2WyL1>b=D-MGSQoR*IWW>jK)OMs#xxD!YQhsJ z)vvf}@C4T2H5D6!XFprN$VF#u@Rd3rH2j{0$1MdGK1HcGXZL)@LVT&aZlNbrI!;=m z+87+-q|_6_J9-N)+Q!k(W`+$;T|6CF-@~%ee0A8#{zIGUla*AQT6hMtezMCZeFmRn z7+!F7;hE3cwU&h=nHBX)@@v+oHVB}u2UBXS&YpDP2th!&-xFY;|oqcHn4k^i?`J?h>kT5 zqJz5m-H3jtQ`97DHUjDBVrNIkwuPqf$kD%&=pwYE|D7Gd?hqGmn_vr$j#U(*=XG-r zi*oLAikf7tljve+N5}SvrtrwouS#?g+R^{Xj$n6$i?{95h>mp{qQkoR8bq&hikf8Y zl;~n-N5?jdrtrwoZ@}i31Lj3&M_0Ul!R{3<-sFxvI5M#lK!n>c6qKikb9yz+bC5X_Djx7OpVO+dzYY-h<0z{#@c_pG_OAwKBOAw(Q z9a{pL!Xrnww*(Q|(Xl1KE{cmcxfc%(y(K_|_Zxiv#w^lXf{2`3f(Y&C*b>kb9yz+b zC5TX>>n#CxdT1J3f^MdpZboEm2_kZC2_m#3V@vRv-Z-+oC5TWWQ&)sM!o}NxKLq(J zo-R}QkY(Z=GMS}#YtcJ*e>=nEpRLxEGd5h>`%(Eta(gbTb@uhUZ3^@R6?A{`mlry_<%&u(OgNrx#Ibvc)K-5ip zIEa`yQF`5qDLRRXc>!xU;h2~gA6YR)ZpZA&G4t4TAQx}e=(Zdar$!L<*B+8t)CH$U zUt2LnCowS_U=1f66SLup6;tGP%v(6-2sXuUHF-Pz0WmT9AsVGUY)4F-6g5^Rx1y7n zm;WVxR!q@JOpJV3 z!wJX4$RB3K6uHFA8O|~1u&Ewv-7_)LQJt$>uV}~dZ~`>liYGdWhw%<;IN*2~?@O$B zBA0lS8Q|*)*skQ_op-Jsccv?g`0D1Ze%&oa54>aEb0RK1=C+_-!?nSP-wk5!u#uqc zvuHoR3$80RalC6TE!MJr18iDsY0pGrAAx8+7oUGRi}XGsBIiCLLVH$YA3;-iV0Gr+il_EZRJbm=-5Xf+N_(`B06S`h@AU~2<_;YFK7yn9NpeWL}*9HKC+eV zwsG;c*@Wo0w15aVr+xm(EYkakh@AU~2<_;YIcN%x9NpeWL}*9HK2ptgk8ts}jkt-U zV;_NNhi?8UqGKkB$hnV*(2kBdgr@Mw(d~Uigm!f7BagD(UM}9`4Tz3Q3yAjU<`Y?@ z_Yn~}_Yo1=(J`CQ6dpOcy^n}cqU(KRAKN|4#k{mYb-!-!L@vSEIVQ#tHpU5lqyBIm3Sp&cEw0!`tOquaAW zgm!ey3fR5L#oJ~VqGMJ-^oDL;$|5~0MC6NS^uP@dspUIM;^jilifH*7wIP2elOsJYH1pk-uU z0;2i}7hlRzw6QM%Md7*xgegL}E&)YoUuNk`z>{pKbH3gspk-iQ0-|~v&i&(=0DTE4 zBIhNb2;G-}Xo_&mwtdAdLOVC68}~Iqbu$ms-SP>JmW^AP=IN?&IH1EXzQ0IKTqhcADM+Mb(aPI$>bJ0gdM9!lkLibTYQ-pIJ6%pFGnUesF_v4}x zewlX7B!IFT7nANwOm`Y&a%GOWEq$oqsqS~%A_4) zdk4p&aB&P%xOZ_ZLc1TDeI`q3@{4L$IQ9?Y9&3I@;@2`T`9(F4 zi!Y@a+dKFbg^OR9!o7=M5!(IG{0?D5ov6X@(=L83rO7X+{cK zd!4q3oN0^Doi>^xoGWb++G*>Z2ZrmpsCM6FTr()3T*<{86yLZ81(c;w2F7zsJt(m5 z*ptpOFb4&yC0u+dc+1K$C`92J6flK**Psxg-3vV^mb0Nw)EE?)1NNk|lqS2Vu7G3z z?>G<5u85rMiqOq2nj(~oT@l)OnM)J6#W(P&_UkiEmd10{VCktigM1i7b;!hL6=1)C zi!Wsi?8{lSjH~)~v*?5<1-Au$;A(eErtb>m;;ukaDBmx`T>*UaApWJ|V}zdg zY<|O>OT)K=M`ggKxB7rvs18FJA7Q_EY^Rvpt4j zsHn`%%-biN`9&@&Z9)zoBK@TX+4uxPnCC%-cYc4#-9F6*=eR_)?shL%xhqM1yIaD% zU$baek1Brcwae7r!pUg&a2*Gl(hpni)iv&~uu&Krx!haA>$=BBB;fiDxDWmd?%!t- zW#bDBOkT6`ISI2T-7VwXzp}8EmrW@XPT&BanNb=2I+;$C;lwx=E+>|;c9Ls2!3Qz+ zGdv0>S&P|8Ha=%zo|SgDRJp1t(e1j)t@sQ^9YcP%l2n&H+@wp8MMW&i(ht^W<5L)} zli%bpJ}Kd%y2f?kIp==&56Ubq=8h20&^}FoG6l*&ac6VdX23vB!z=@H+M?Qli!Y@Q z>@jWgxT@DW(YaO?NSl!LH$@hv(R->^o6hJ1_M z?vdVy@#vLK*WmkmuG)NCN|SF?^Wob+jQg(n7EuGfMegPstr4vu-y*lOGx-MBo4Kg2 z=W;nU_t>_SCfDKNPOhOW<`Nnh!Ywt|tzjTsTLvcAs1|bZrL=~lrStEd!HlRJU;PrEG+~i)+!jxP~<%G~`<3 zc5gJ-+t^m8YjC~P#kHk0xkhz6eEU0azctq)YQVL~-CUzJqBZ1N#h(w|^UFulW{H1HMJ><{PaMts&ncx3e?( z2G^IlsN9@h*NkmTX>$Fwi)$#q<`NpH>}hg+)y1`CU~-M>SuVbmeAv6jw&+}3!x|A9 zaxHSZH=673*cN>;*O4X>&UM66np~q=58wU}?ziSzL=CtWxtnXWMzn@pi`>r6m;`B z#YJ_C^o6hJ1_M?vds@hi!Gb2H!8a__mZL->7zmZ~teUjpkcK4fqzhn{Tv6w1#|(+|JJA z8(fd!qPnf%>#7EOq@^^u{*#MqDDk{#Xy8*EDXiHiU0hoRCfBI;;o?i#4|^BaqH}Q# zYeZXs!pdE&5`vBNtsK^ z>p5Ih_p^N2*nn#&r*kp6j^e9sdmVvtJd}Zf+){IWGYn)Mu?$SEQ60y{m(l|EF0MuA z;u_Y7(2#49+r80TPi9-4t}(9hOtgLOXDLmtQJo6k{zIIN=2}DzxE8saYqUnRhFpu> z&d%g|8C!4TqPma2l^MYK$VlWU=Ob%biKit@z6)G@L%9LUz~MZT?~N|LEd!HpRM&Ii z^FP?T_!gauZ&)KjL%v0B_ek@-nQe8t2H!hed|OJBZ&bIyx4#4TUGpuX27HU$%{N*j zT0_1?Zf9rm4X*cbQQhC@&osNQYb>S7^+6ZcP*!sZ4J30*J+^=E;@UDWxkhz67hg&} zj;xDo(Yd&WH6k?RTI6&d%f-)~|3;Ju(Jf!!?wLxtLskQ2xj#vgJ*QoC2;!Bwd zdl%QDb8!u8L}583)VE~>|_LCgTgbq;crb>uTvp5tQjJp@WQ|AX=*lmY(ga${`cfgGD} z%fRFt)mkom{>Mkw&9~@We8Um$nES*zQJ__Z``Vf?=~jNy^dH)lj{l>*HB*M5*nC4*yI{tw_tN^ z8JJw7TF-?){|S57*cP3OYgi*fL#{<`_eOJlg>BIna~;9=T-jsWQkq<&iZ8eK`9I-o zG}j_(z_rNTT%$FjHRM|4c6KJ$ux`yo^;|aO8m^&i#>M3NIFgrft>Zu$_?VB9UbD}` zK+Z=j1Cwi1qqz7|o`k)NYtgy5*4Da(`#!74?cQjv@dXh&U1MB(qMck@N|S3;o5Huh zKlfX6Euscoi`>mMS|eIRu0?KVXL8+*t;cgwJUptH>?q%A>Sgmd!+e3$hJCN zgYR3Bjhz2kN|SF?pM`J#70yQUEusc|i`>mOS|eIRzC~_lXYviMk8@GIc8uoK-0O&? zG`YqXXV_dr`3jfNz-1gMtl4LMKyRdh0Ejkz1uttQ2T#MZ9jpq7I zwnbmeb!4rJYfEWzjp|$Q?Vrp2)?ACI0oNjTbB)%B){twF+u501!}>HA)i+}7HC#ja z85fi5Z7!~%{1D2(oG~WXFSxk23{0+3{eX)vr7P@RT#L@dHLMY#A=e_ed!xDjgl%=Y z#<<2;_t@jwQkq<&`YC+-KjLgO*CJ}bwaDFEqcx&6)WG#xVmJ z*MCKhaz64S8$_^y$@kw~d_#GK3!ne-kmOS|eIRzC~_lXYviM z+i+30oW7k?bFU+o(&V}al9zKoC>wJL4dii4&GiTu*Or0FHL7u3d?`&~@8Vi?F0NsX z2o1Rwx!oJh^^I(czL@JszKd&1X>yHfYxwp*%h_nIMbv<6k-ND@YeZ|vwaD%4m}`7E z3f381R9?IB%m6+hwTyG@Zpn=gNa1r)Wh~a8lrnzKwf``FH)Y>KqFcG$0F|%04N%in z)_}076>3_A3R%r()p(;5CUdTDlEl|?e`b?yFfl)=6tbM*tO_+-yBQFcU!i7JDAkSn zFEg#*a9S_Bo;B`AApDot58sWa4NRgYT(1)YcbFzW-A5Yqfyel24gT6Fe1+7l>`8xN zR1~G+3*J1VSx~^m{sfu+3XjJ!_#&2Qu$sW_)j)i53}5z)-4M# zgU=%-9>js@746|}#Kc3L_*Fg~Q*;s&kK@1^PB6jw7W8$ICH`w$oF5aw^ zJ2)mD>V)V`?cpDYiHABvcs%QvqLY|-2nW`1!ZGm>PBU1epCY$o;-SuW+4MLUZ>JrI ziHB|=dQW>;z#{!nXQ~xbbP^Mf-oP48I3^yw>1D+fxg8S^b>jQeKIY=>8pj7*Khz1) zN7};)#Kc3LqpX;slbCqm2G(%GG4a3+err(oQ{)m;Kh*gto9aPkJk*KmXS(%Bj5$2i zx!j5;I*EtJY+wxs91oA#Y_Z~rT;dtep4G8!GEWNc6Z)adN7=p;zVAhU(Mvrmf8gS6 z(e6$b;b}~WE^_htzvqnfb7vxIq6hd3R)Qk89|Xb(M{79c1r#IvZ7V~OONRRCv&(FX zpH}p?+KU|U^ch4~w1=fE(odg>sEHo%f3JX*sk=YSD^!OB78b`E$3EtE|o zkVBi)$(#e8L4znvd-x}Ez$6e+6FmXE>{w3#k=r?72B0;Zat@dQ_*k$W86vlHz>{dW zF&@Xo+x7r*z>{bY#b^(!Sfrms6HyaAA=0cIL~iGR8G+Vt$~j<0^tEyjxt#-^M{CNa zEx34-vv~Q`&!a)qOndOKNI#Dzq9%HRjJ0wQxt#-M2wKA_=YSbfVC5ik$w5Dr)|yR| zxtPytqS{8cUWfR2DosR9^o04P6<_3be9RcMhC_~z8G{d)>*FADiO*w(HymCaJ#TQV zV_fuxV|*{xU^NK4%nzD>cDj#? zy_ZtzXl@^Jn1#P{D~7@lw+7MSqg*^&lR{3gOx-_|mn*b50Xjj$Hq*r0G#ep2TUPDN zY{X*<^6gx_&-b0irdS~?k?$tQ!>J;a!;#s9o1=dMRct65FOOb zXR%1H^dfRTb1XtTI>scL!Xrnw$D|1D=vd=ncZiEOIgaPBUgIHpUN=9D==gRE5jmeZ z7NH#-LmExtk)zu~T7(i^ukNtZW72r$7}dkN>10kuukIppK65NWJ2GYin!+1Lwr7I~ zB{K1{UdU$zo?mg0yPWuR5b`_=-?9|?+X&O=^EWLY;_DU~h8C|dKqUNV z48HmK49nD|0$v2sbQnvrUttikS!LqK4&GwZPq>7}uA0L(_y*GTTyn5%TDqwCF31P+ z%!Ou~ceqVd?%Y{yinSf45ba8`jTe z5gxFD=r|XC{+UJk0V@$XAFvXkeU%Po&=el|$lJ__P;$%E-*v`zA90Cl5yA(<_`Wl) zeyE#&gy{PF&McAhkvN3Vc6M|S3lThWbemWaO7xt0+)>zRW?E%VFsmQyrXx6+96SLB z3oUArg_9HGi3<_hk#S652X7qNJ|-fR$m}I^H%B|oray8CjoX27i0`_s<3c%j76S@= zvt?*weSfG6?!|TBxv#(V4$259jc>gh!gBi_5tLWpHZX;!fbsCXeWTgZS~ug^@G=)Z zL4om1?uGGnmax+bIiCTykifU=Sv3*bJv45^afUie^Z9PaJvdWi-Gk$57#E-a51fQ? z56%)f4|u30v}s3DXo@(l11>^4DW*2H2cJNOc<1sNKNtH1k{6WlIAcM6je+t$irJh^E+kEa(G7zAK&!-;w3;sO!Aao6X6fkk?85s`Co5utswvACcq zJh~Pa5lVV`ae-Y1m#7v~_^9Z`1)_A_Jex&&tcl1u)TW3_-uTSur=bgnyRi) zwO!0ZI4qpq);vUCw4l)t9DSSz2GJcBOLQN`x`uifAadYy6-{KXy2d3od_ZIeUH( zlxJYWX$Gr2E>XE13po>vBunI)W+D_u^)y4%{%GE9E}CN~SR&Un6QSK4(+o`qqIvhH z&>Y9p61k?C2&K86W@w5oUU!9=WYIW2LGN0e!|gX{I;X{ zOOEERL7G1S`IA597#hOcII-azJ^)^wyvkC1=|=dCO5B2eju%pOfdygsR(X{Lc$sD4 z8;~%&ZrKX0g=GVy~E4jvf z!4GcmFIcg4NV3Xineri^4~~3jZolv|m71UhULojNZdb!b*1rTkkQPD4FJoFihiUTU z`r*s}4nfFF-NbKx@fYrKA2u@)FLQ?!zJbvo=qA8&3}=3f|0d-9Dpw4)ZbFY%G_%;! z)rH*Sa7|AKXdmWk#LQ*Iq*4&%WmF4E-Hb{$2anv23{o{Uv!gsMxzZ7pJ6Ig`2y_8d z?`9M|eeo>*&VaFCX|wWu#`(@?+{kPCUGhOeA}Su8j7R72jSR*M#OkJ)CefalRxxA4;?*b>$16=pGDS!CVj+*tX5@+K z7TrA>Z<&OeavsCpTxG~{Qz5JgSE8d~hH7{^_4XOsd-}u-YSM$}Vnn)f$a?r-7wIK< zjnd{3Xf5W^+T4;E=Dr3pro|NqVPb-uE}X_@kSAhLlh(Y7#M#+#w?ka1Hg3dbM)!LA z;DCR#$m*{lXlh68;mdD=yl+6>Ic(g_)^X;Ry1ABW(j3wjE@@V@W!;h!<&2T&jdn6! zqq11g%GCx$8VR)SpovR}<->%|wy~2o8YbEetu{%vNV9Bb(ALa==VUu=WYKO1Y_HTH z-F5y_*FjBiOZcXA^Y|y}L*BtFwDGrnMDs{X$#F<-wu6J@)O0nVNm8`YnT}{`@EJ%a z$cfSn1CX80YV!#3&1iNil?>Y{_b6U9R(--A?59UoW`fFW0?GL32|B+lFJ)?uvjIY) zc$0LR@YOBke4?rCc(3T9?RYM9jpixRn1A(--!RTWTb6axR_uhwJCyvTxlr-9qvB6% zw&SDl^>G@oX|1A=sPcZ?WT2%W8pM!b!>3<%VlL`#bNaIH zQyeDZ;TRk_K4WN%Fe*Aol-X{ikrKK)%7DDB+x_nCL(j)ZhF*+B7>{*}^s;8IUq8Ki z*$Y;vHCepkBiiq?j)|F9m_68VOv3F^jcSDBP;fQU<~7Pex3P5T=@0)H?>=LpvlrX{ zkCHW~3UZHhFS>` zQG6n+c%G0-PYm3a6D8ESWh;|3-K^|3RAyL}v5Tgal~&iwEw9R8rqXhmas{vr*%Sr@tweJA)IlI(BoN>`_pc`p1)A8r|e8sOah#!VSB*aHS7R5M#Gx{M=}iaRHy`Q{QXKeD(whIkx(ww&<9wk zVJzT04I2Z_(eMVqnHqjfxr`rOHQ=Z7ybbD;sZiyK?HCfmQ<@JhzO>8JLG1{H zMtF(`bYr_uRY%58tQ^oL&2v{rLy}-g(nD^F3+WWYuk58!NGHWE3nT6y$h9T|2BtB| zpHf8b8cy)i%7|-+g7UP_@$o{>A4swGWBS*)9wnX)t5)%} zo~oy~vBYR-EHN4yON@rb5~HE9#Avupb@bG&T*z+zuNIiCDt8q3_Q_Ra_5A6W&Xvbj zL^i-pQFAM^6sWxPvBDB^{)i)MWO>WO6+`7Rfc3A`%5TGu%qybwA=R?v)Dbn2XMZ1@Kyem!v^y z0e_nRCM`kF*`}kmX=7CMYg$;xFkNrunKi(Zm|&>Fx&ewe0kUJ3H(3+FlP1Le!#^ZY>HaY&ZKcyDW|a-DL-C zvN2oRsfp|Q?R>o59eZ|WJ0FYfAY@QPh;be8Qr96ayQ(7E&=grMN+U{<V{z4JV)YXpqlwPnT|JsubFy|jOou_ZvYXDO7DT>sPm$~KEsAyXW_ef8(>++bO=Qxw zTsd8JS=5lcC)hSIH#m~)>r0uUWs$kmM1BY%i7=Q-jj-rl?%X_zZ!W}esaBn@RZ|(^ z+%<8}*yx1gRB9P#n^S19$~y*9gSgj#l6^|cj3>@Sejt?+=~`u`nJ~#z$`Z!2oKi1I zo1|t}$Un4@F4SD;Ty-neX1p+wvA%B}yQZdQ8%m{yvIRF?Zf;#vGFWk?X+3S~`~YQ* z%%u;wPN8(4DsB*Wd)oqy3x9zH*|4gC+0erX@S)*qX=bM2Hnt2}VHVa8SauMfTi-U3 z=}V;sN<~#^3%=DqP{XaM1Etzh`^8Z-KvuS|dA{ z%d-l{S#YzsZ+7}c#VzK1eAvoSXItnUt~Rp#NNENjO%1opg9DD#O*yyj&eByv4nC~x zKzquYbZ4$2rVFJsaywkCRP#j#JzOVd55a>f;-1g%8h}dG+I%xb;7Oiq7fQvMZuwIy zR`N4NH`fg*nY$&&NwSMTR*X9i8l_*%xYfz~<_tb)fTRJ2nhA)$yHby!BZj;9iZ)Hs zvy_KM4WznEuWA^QI&cl=mZeQv@arT!t8qutgSPI`vipk)R+fcyr6O%KQ+C~ABO~c< zXvPDFdgarF{9)IbrxOf{yS9J6`;MD$?v_ur8Wlq!!o9hPVIsVLMUxMfrl*@*0j+2a zo-KLZP&Gg2%3;%)FXv0;eD#o}s_Io{sIOt!Y9-e7?&09bna*WZTR2WNpFL1y-U zu(yN@6si3zG$}+iGC4UiT*g#{CbJ8a0}gz!TDGK+CdyKl=FJa%Z)P_Wd=(i-RvkxZCz=Wntv@}>?r%Li?h(B_g@Ta{&40cem>K?3$YC2Pp z%d19W!Nj)hID<6to&G-GxXq1&NikqYPBtT#IoELBZn_wP#V6{n5rb@dGXL}|pU$0U!JD+6!Ax59*~=NCI~ zD>JB`t<8G2k%X)TT{z02nl#B}h>k+7nW<5SM#uBo#a|BwoKxF7JX-V`XZ*(zih2_q`Faf#MWNnuI(f3Z2v3~f7Y9ZYpq6Q?Z zq6N9w?;pkhjJw!?T`8YzJ`9(0>3mUCXY-XtX4bWhpqU&qK{}Nx{^88}i#}i_+zb?R zxEa9n$68k6eT~YbuAv!RcCmaBH(|{(aRf4}g9xkh7N=GJYdZ62<@@`5@i0Pj?87a_ zfO*;~3G?@rv07GhrCbyW`E+B8e6~?5^mN+~LoijL->?yyx;Ofv=d(kyXtmU9@CXKT z+U4{Hy^y(_Ap`b~8q`$%YIR~(w+*@;E93ZNT1{mYW0QFNL2F5$GB=nt+Y9aDTb~u{ z2Ul5MZsksRnPZB!qTdT;bBltTQww80u(Dj)s(qz4^owj_Q?!hk8NwX_qw_F2LIw9? z)kE_xx;UQ3u;C7TmmB-0S_(zt{fPKZuOGnc9pn z59*p#1`~(fijTwa;6*9N)@S^;Dqj%Fgn$zI?8VbywNViVA#GEXaYbn9C!B<5>R>;To3#(0!n1WPkyfvUlI?A&P&%^?{W2j+=tL6`aN221Z@PgEg`f5TU0V5er=JB`Xu5gR+T=m8T6Z8o5=N$~Zvzfj zMOIUlpYB&Ru|oRv3hDel=n({n!l;=jWNjwO;T6*Pg-w+|x#X*o^sMHm_gm?{r$6lF zk4|R;s`C4njsaGt^z-}a155mNrAqfrX-wTAp2B{`SH}3!N%9!n^i`j)OYGk$mV7>i z*Ylyg$?tCS`4n#WSjP(pa=an%qDJBb&S|8bz)J{i;#fOl{$&pMS4}ZI*z7HtzHN!I zN`L%|;dG^r`f}kT*pAyJoW<}1 zEKO2r!o%63TwqemrWGDyuV#z@&|QBf$UMnX!LL_i;5^f?53xMwoOZ4eLRdx8HX}eqMz02LYi0Kt}l$zc_ri=e#$+S>?W6-oO~1gOY} zA78MGXR@OCD)M_1VH)u|6%El==OfK%(>n2T#6|?D$Ot<%12QlyzKUleXymC=(GYEQUe=5@jb}H%g8&s7DRumN4km|Hd@F*+ z!;wEk=n%!lSjnH`NaKgOP&}iAoX`B?nXG8OitQesPa}^KW3xAB_%xr72jYgsy-w4@ z>#YDC>nJlV`}E+ti_4b`f?Q7#$Y~@_prDa<0!59iA~3I!4gzJ3tR_&^NGE{>jjSPX zP$O#z9M;G>0{3gAi@*aKSx?}IMiK-b(#RDAv%hY_8w^6FpFh^iy(atOm=j#G( zLx>MAplO=VcNJ(GLwr|zG@tKU(5RZ-;@5dJpO3DxA3-`ffr3Wj1gaWoC%`?fWWzdJ zT_hYwFvA>SxzS$WAVtGO!ixy90s?0>5+`s@BkcrU*2pRX+#!qG60b6r^Dcs^jPM5% zR|61X=4lr{iOqVozXEFOxnBKPxp;6@>vdg3u9fxRxl?PQ9fws!$~gY8N_-=NG%|r} zG!iGk*R+|^PJnMJ%T^@7ZN|2dxrO)!1X&J&PiiDifJYh2atQDgaaj%lp5H(OYgKiz zpxp>vLLKO>Zq-O3Ylrwr{J*aLWv`XU%`=N*BFBgA%&dbMxhPfMCcIeAa=r=Fr##cy^FEmT8t6ylep@DgvYIP!dnsI z;{MnYfk}n5EfKgE!IVUJN+uqSEfLtSkhUcPWdy@X_4cxP(g~ll(h2_! zf|QBCn+j=LBJehXsfqA;nRq<5MBv8?XDQ&wQ;c|OU`(VL(Z4CL-~Z{|iecY1 zNTdP5Yf9n~CY=!6Og3u)cUd^i@vwzI0{EzfQ`2(@CO_eqC9e7s;k!|#NjLS5fu0NT zQ8d#B4c|ME?;`}x?u^yBpwo<$CR2v#V{c@eEiSKz)bD|-`Sh+${i70c-D()2hM}QI?eUtU&G*sXAR~uW$*+m z!hJg7OIvY{ieb`eOdr>8HYlAXa7$9uK#B{?;UrEE_pi9r!p1S; zSXW$F4Gnr+dbZCH7dVQ?y5b@c@Tqoj;S$FozR#zw3zyh$KVwj&Uk~_p3-|t=k+ch! zZbi&CQP+h_cLLxb$TD%pf!M867_q(_;`_Y}F>w(1VGDnhjQS$~*8q2TgJ(>96Zi)> zSxa3p@fQX}{Ik&KuYShm+kJuZ{}A=<^TtWfFj5Mp|0^I)Jbb5f6YR^ek`q%m@GF6j z0;hj6=O^G1cL2B+_M>NQ0QJ{_KMS|mr1|#(e+~G!#%F=Q2m5|f^Vfj$=rdl-{}sR^ z;NJ?I^_>9DNihkW^87V$GtQI$Rp90wTJm#y0VhX#GVy-~zKp=D8~A@%IP?E6@RK-O znb!vBzaE{R6EfeeW&Vx8d2Atj67{_X_&)uzD)Vmwz6JK|MmqU_1-Pxxr-3h{EMBai zy9KU-{&X?&bEm-fEqij8fL;C`;J&^WE^!yYq%M#39|Zn7^7GmN`5pq!1;H3_mVXrZ zvQ_^{;9MM>0gdV30B*{oe18nwEGAg~8Q?soks}fH=k9_{x_>bJdEm=d`7Z;%(@OtA zDE*&+A4B_cq+0F0Er-kpfe~*P zIpAZE=Nxe6F9JVjwclaMFWF^&{-PCM!5aM45;SU1;4%*`^^02-~fzv;X{EH#} zCEzD4eZC3Y_#gH8^AP@B;0^*W%Ja8?eSO=+>%e{gZx??L+}7_ra4v{Hgdb79e+Rx- zkAG~h_ki=*(LR(<|9&61c_*Fzbsg;ZBHH6H(wV;pxII385%@IH@73v#05|1RpX0!7 ze|;7BvSt6bLioRg@b`gFi6bbT?cF9Wh0@odBiZHs9PpE955*r7-N3J=^WdU9Hv`8h zbDqD|pIhZPJ13p3j)SdZ0Pw;%fgP#4B!GQ{PT8H2@L{)HGDzLa<#L~=_s z^0=}V_d8z3>p|WN%XqWikuRC;ufaAn)-+61s>#=w0aoS<`RZUmeCEJC(R_(_Nfm7n znJP$~)qB^mB)&EAQl-J>JH6zUN<=X2nL-0l=AbjxPqf<#KJFZ!YuB5AUXf z8hY=V4S+Y8r}6r7wagp4pv(boRsv1w4+8HkIZz7u?7~%>gMyd5E4nK9hJr{gwO zZVYYmcG6{dgze<0!gb+$b6Qs=-9d`OSH>&(3To66RRGCmkTz|#@#Q;mj{DmIi{#wt zbgjVl)h5E*-M*6!NH694_P*~?_|p6#DF}GshpIqWZ@!Wp1If7ZC}1|7YEt>a3_K;+ zB1!Nll>yAU>G_~{SuH>}N#}BCIvNL$7Np~thNaj_0@kXW$GDP`U-=: 0: 0c 94 a8 00 jmp 0x150 ; 0x150 <__ctors_end> - 4: 0c 94 34 05 jmp 0xa68 ; 0xa68 <__vector_1> + 4: 0c 94 94 05 jmp 0xb28 ; 0xb28 <__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> + 18: 0c 94 10 05 jmp 0xa20 ; 0xa20 <__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> @@ -63,7 +63,7 @@ Disassembly of section .text: 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> + 62: a5 d4 rcall .+2378 ; 0x9ae <__stack+0x54f> 64: e8 00 .word 0x00e8 ; ???? 66: 00 e8 ldi r16, 0x80 ; 128 68: 76 48 sbci r23, 0x86 ; 134 @@ -183,7 +183,7 @@ Disassembly of section .text: 14c: 3d 27 eor r19, r29 0000014e <__ctors_start>: - 14e: ab 05 cpc r26, r11 + 14e: 09 06 cpc r0, r25 00000150 <__ctors_end>: 150: 11 24 eor r1, r1 @@ -197,8 +197,8 @@ Disassembly of section .text: 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 + 162: ec ee ldi r30, 0xEC ; 236 + 164: f5 e1 ldi r31, 0x15 ; 21 166: 02 c0 rjmp .+4 ; 0x16c <__do_copy_data+0x10> 168: 05 90 lpm r0, Z+ 16a: 0d 92 st X+, r0 @@ -227,12 +227,12 @@ Disassembly of section .text: 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__> + 18e: 0e 94 40 08 call 0x1080 ; 0x1080 <__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> + 19c: 0c 94 f4 0a jmp 0x15e8 ; 0x15e8 <_exit> 000001a0 <__bad_interrupt>: 1a0: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> @@ -1306,7 +1306,7 @@ int main(void) 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 + 3c2: ab 97 sbiw r28, 0x2b ; 43 3c4: 0f b6 in r0, 0x3f ; 63 3c6: f8 94 cli 3c8: de bf out 0x3e, r29 ; 62 @@ -1314,8 +1314,8 @@ int main(void) 3cc: cd bf out 0x3d, r28 ; 61 setup(); 3ce: 0e 94 d2 00 call 0x1a4 ; 0x1a4 <_Z5setupv> - int16_t target_temp = 25; - 3d2: 29 e1 ldi r18, 0x19 ; 25 + int16_t target_temp = 20; + 3d2: 24 e1 ldi r18, 0x14 ; 20 3d4: 30 e0 ldi r19, 0x00 ; 0 3d6: 39 a7 std Y+41, r19 ; 0x29 3d8: 28 a7 std Y+40, r18 ; 0x28 @@ -1376,583 +1376,420 @@ int main(void) return ADCW; 40c: 84 b0 in r8, 0x04 ; 4 40e: 95 b0 in r9, 0x05 ; 5 + float pwm_value = 0; + while(1) + { + uint16_t v0 = a.get(0); + uint16_t v1 = a.get(1); + if(v0 > 1000 || v1 > 1000 || v0 < 5 || v1 < 5) { + 410: 99 ee ldi r25, 0xE9 ; 233 + 412: a9 16 cp r10, r25 + 414: 93 e0 ldi r25, 0x03 ; 3 + 416: b9 06 cpc r11, r25 + 418: 68 f4 brcc .+26 ; 0x434 + 41a: e9 ee ldi r30, 0xE9 ; 233 + 41c: 8e 16 cp r8, r30 + 41e: e3 e0 ldi r30, 0x03 ; 3 + 420: 9e 06 cpc r9, r30 + 422: 40 f4 brcc .+16 ; 0x434 + 424: f5 e0 ldi r31, 0x05 ; 5 + 426: af 16 cp r10, r31 + 428: b1 04 cpc r11, r1 + 42a: 20 f0 brcs .+8 ; 0x434 + 42c: 25 e0 ldi r18, 0x05 ; 5 + 42e: 82 16 cp r8, r18 + 430: 91 04 cpc r9, r1 + 432: 78 f4 brcc .+30 ; 0x452 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 434: 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; } + 436: bc 9a sbi 0x17, 4 ; 23 + } + } + //out1::toggle(); + } + void stop() { + pwm[0] = 0; pwm[1] = 0; pwm[2] = 0; pwm[3] = 0; pwm[4] = 0; pwm[5] = 0; pwm[6] = 0; + 438: 10 92 cc 01 sts 0x01CC, r1 + 43c: 10 92 cd 01 sts 0x01CD, r1 + 440: 10 92 ce 01 sts 0x01CE, r1 + 444: 10 92 cf 01 sts 0x01CF, r1 + 448: 10 92 d0 01 sts 0x01D0, r1 + 44c: 10 92 d1 01 sts 0x01D1, r1 + 450: ff cf rjmp .-2 ; 0x450 } float convert(uint16_t v, uint8_t pin) { - float m=((this->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 + float c1 = this->table[pin][0]; + 452: e7 e9 ldi r30, 0x97 ; 151 + 454: f1 e0 ldi r31, 0x01 ; 1 + 456: 60 81 ld r22, Z + 458: 71 81 ldd r23, Z+1 ; 0x01 + 45a: 80 e0 ldi r24, 0x00 ; 0 + 45c: 90 e0 ldi r25, 0x00 ; 0 + 45e: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> + 462: 6a a3 std Y+34, r22 ; 0x22 + 464: 7b a3 std Y+35, r23 ; 0x23 + 466: 8c a3 std Y+36, r24 ; 0x24 + 468: 9d a3 std Y+37, r25 ; 0x25 + float v1 = this->table[pin][1]; + 46a: e9 e9 ldi r30, 0x99 ; 153 + 46c: f1 e0 ldi r31, 0x01 ; 1 + 46e: 60 81 ld r22, Z + 470: 71 81 ldd r23, Z+1 ; 0x01 + 472: 80 e0 ldi r24, 0x00 ; 0 + 474: 90 e0 ldi r25, 0x00 ; 0 + 476: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> + 47a: 26 2e mov r2, r22 + 47c: 37 2e mov r3, r23 + 47e: 08 2f mov r16, r24 + 480: 19 2f mov r17, r25 + + float c2 = this->table[pin][2]; + 482: eb e9 ldi r30, 0x9B ; 155 + 484: f1 e0 ldi r31, 0x01 ; 1 + 486: 60 81 ld r22, Z + 488: 71 81 ldd r23, Z+1 ; 0x01 + 48a: 80 e0 ldi r24, 0x00 ; 0 + 48c: 90 e0 ldi r25, 0x00 ; 0 + 48e: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> + 492: 9b 01 movw r18, r22 + 494: ac 01 movw r20, r24 + float v2 = this->table[pin][3]; + float m = ((c1 - c2) / (v1 - v2)); + 496: ba a1 ldd r27, Y+34 ; 0x22 + 498: ab a1 ldd r26, Y+35 ; 0x23 + 49a: fc a1 ldd r31, Y+36 ; 0x24 + 49c: ed a1 ldd r30, Y+37 ; 0x25 + 49e: 6b 2f mov r22, r27 + 4a0: 7a 2f mov r23, r26 + 4a2: 8f 2f mov r24, r31 + 4a4: 9e 2f mov r25, r30 + 4a6: 0e 94 28 06 call 0xc50 ; 0xc50 <__subsf3> + 4aa: 6b 01 movw r12, r22 + 4ac: 7c 01 movw r14, r24 + float convert(uint16_t v, uint8_t pin) { + float c1 = this->table[pin][0]; + float v1 = this->table[pin][1]; + + float c2 = this->table[pin][2]; + float v2 = this->table[pin][3]; + 4ae: ed e9 ldi r30, 0x9D ; 157 + 4b0: f1 e0 ldi r31, 0x01 ; 1 + 4b2: 60 81 ld r22, Z + 4b4: 71 81 ldd r23, Z+1 ; 0x01 + 4b6: 80 e0 ldi r24, 0x00 ; 0 + 4b8: 90 e0 ldi r25, 0x00 ; 0 + 4ba: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> + 4be: 9b 01 movw r18, r22 + 4c0: ac 01 movw r20, r24 + float m = ((c1 - c2) / (v1 - v2)); + 4c2: 62 2d mov r22, r2 + 4c4: 73 2d mov r23, r3 + 4c6: 80 2f mov r24, r16 + 4c8: 91 2f mov r25, r17 + 4ca: 0e 94 28 06 call 0xc50 ; 0xc50 <__subsf3> + 4ce: 9b 01 movw r18, r22 + 4d0: ac 01 movw r20, r24 + 4d2: c7 01 movw r24, r14 + 4d4: b6 01 movw r22, r12 + 4d6: 0e 94 91 06 call 0xd22 ; 0xd22 <__divsf3> + 4da: d6 2e mov r13, r22 + 4dc: c7 2e mov r12, r23 + 4de: e8 2e mov r14, r24 + 4e0: f9 2e mov r15, r25 + 4e2: 46 2e mov r4, r22 + 4e4: 57 2e mov r5, r23 + 4e6: 68 2e mov r6, r24 + 4e8: 79 2e mov r7, r25 + + return (m * (float)v) + (-m * v1) + c1; + 4ea: b5 01 movw r22, r10 + 4ec: 80 e0 ldi r24, 0x00 ; 0 + 4ee: 90 e0 ldi r25, 0x00 ; 0 + 4f0: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> + 4f4: 9b 01 movw r18, r22 + 4f6: ac 01 movw r20, r24 + 4f8: 6d 2d mov r22, r13 + 4fa: 7c 2d mov r23, r12 + 4fc: 8e 2d mov r24, r14 + 4fe: 9f 2d mov r25, r15 + 500: 0e 94 db 07 call 0xfb6 ; 0xfb6 <__mulsf3> + 504: 6b 01 movw r12, r22 + 506: 7c 01 movw r14, r24 + 508: a3 01 movw r20, r6 + 50a: 92 01 movw r18, r4 + 50c: 50 58 subi r21, 0x80 ; 128 + 50e: 62 2d mov r22, r2 + 510: 73 2d mov r23, r3 + 512: 80 2f mov r24, r16 + 514: 91 2f mov r25, r17 + 516: 0e 94 db 07 call 0xfb6 ; 0xfb6 <__mulsf3> + 51a: 9b 01 movw r18, r22 + 51c: ac 01 movw r20, r24 + 51e: c7 01 movw r24, r14 + 520: b6 01 movw r22, r12 + 522: 0e 94 29 06 call 0xc52 ; 0xc52 <__addsf3> + 526: 9b 01 movw r18, r22 + 528: ac 01 movw r20, r24 + 52a: ba a1 ldd r27, Y+34 ; 0x22 + 52c: ab a1 ldd r26, Y+35 ; 0x23 + 52e: fc a1 ldd r31, Y+36 ; 0x24 + 530: ed a1 ldd r30, Y+37 ; 0x25 + 532: 6b 2f mov r22, r27 + 534: 7a 2f mov r23, r26 + 536: 8f 2f mov r24, r31 + 538: 9e 2f mov r25, r30 + 53a: 0e 94 29 06 call 0xc52 ; 0xc52 <__addsf3> + 53e: 6a a3 std Y+34, r22 ; 0x22 + 540: 7b a3 std Y+35, r23 ; 0x23 + 542: 8c a3 std Y+36, r24 ; 0x24 + 544: 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 c1 = this->table[pin][0]; + 546: ef e9 ldi r30, 0x9F ; 159 + 548: f1 e0 ldi r31, 0x01 ; 1 + 54a: 60 81 ld r22, Z + 54c: 71 81 ldd r23, Z+1 ; 0x01 + 54e: 80 e0 ldi r24, 0x00 ; 0 + 550: 90 e0 ldi r25, 0x00 ; 0 + 552: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> + 556: 6e a3 std Y+38, r22 ; 0x26 + 558: 7f a3 std Y+39, r23 ; 0x27 + 55a: 8a a7 std Y+42, r24 ; 0x2a + 55c: 9b a7 std Y+43, r25 ; 0x2b + float v1 = this->table[pin][1]; + 55e: e1 ea ldi r30, 0xA1 ; 161 + 560: f1 e0 ldi r31, 0x01 ; 1 + 562: 60 81 ld r22, Z + 564: 71 81 ldd r23, Z+1 ; 0x01 + 566: 80 e0 ldi r24, 0x00 ; 0 + 568: 90 e0 ldi r25, 0x00 ; 0 + 56a: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> + 56e: 26 2e mov r2, r22 + 570: 37 2e mov r3, r23 + 572: 08 2f mov r16, r24 + 574: 19 2f mov r17, r25 + + float c2 = this->table[pin][2]; + 576: e3 ea ldi r30, 0xA3 ; 163 + 578: f1 e0 ldi r31, 0x01 ; 1 + 57a: 60 81 ld r22, Z + 57c: 71 81 ldd r23, Z+1 ; 0x01 + 57e: 80 e0 ldi r24, 0x00 ; 0 + 580: 90 e0 ldi r25, 0x00 ; 0 + 582: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> + 586: 9b 01 movw r18, r22 + 588: ac 01 movw r20, r24 + float v2 = this->table[pin][3]; + float m = ((c1 - c2) / (v1 - v2)); + 58a: be a1 ldd r27, Y+38 ; 0x26 + 58c: af a1 ldd r26, Y+39 ; 0x27 + 58e: fa a5 ldd r31, Y+42 ; 0x2a + 590: eb a5 ldd r30, Y+43 ; 0x2b + 592: 6b 2f mov r22, r27 + 594: 7a 2f mov r23, r26 + 596: 8f 2f mov r24, r31 + 598: 9e 2f mov r25, r30 + 59a: 0e 94 28 06 call 0xc50 ; 0xc50 <__subsf3> + 59e: 6b 01 movw r12, r22 + 5a0: 7c 01 movw r14, r24 + float convert(uint16_t v, uint8_t pin) { + float c1 = this->table[pin][0]; + float v1 = this->table[pin][1]; + + float c2 = this->table[pin][2]; + float v2 = this->table[pin][3]; + 5a2: e5 ea ldi r30, 0xA5 ; 165 + 5a4: f1 e0 ldi r31, 0x01 ; 1 + 5a6: 60 81 ld r22, Z + 5a8: 71 81 ldd r23, Z+1 ; 0x01 + 5aa: 80 e0 ldi r24, 0x00 ; 0 + 5ac: 90 e0 ldi r25, 0x00 ; 0 + 5ae: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> + 5b2: 9b 01 movw r18, r22 + 5b4: ac 01 movw r20, r24 + float m = ((c1 - c2) / (v1 - v2)); + 5b6: 62 2d mov r22, r2 + 5b8: 73 2d mov r23, r3 + 5ba: 80 2f mov r24, r16 + 5bc: 91 2f mov r25, r17 + 5be: 0e 94 28 06 call 0xc50 ; 0xc50 <__subsf3> + 5c2: 9b 01 movw r18, r22 + 5c4: ac 01 movw r20, r24 + 5c6: c7 01 movw r24, r14 + 5c8: b6 01 movw r22, r12 + 5ca: 0e 94 91 06 call 0xd22 ; 0xd22 <__divsf3> + 5ce: d6 2e mov r13, r22 + 5d0: c7 2e mov r12, r23 + 5d2: e8 2e mov r14, r24 + 5d4: f9 2e mov r15, r25 + 5d6: 46 2e mov r4, r22 + 5d8: 57 2e mov r5, r23 + 5da: 68 2e mov r6, r24 + 5dc: 79 2e mov r7, r25 + + return (m * (float)v) + (-m * v1) + c1; + 5de: b4 01 movw r22, r8 + 5e0: 80 e0 ldi r24, 0x00 ; 0 + 5e2: 90 e0 ldi r25, 0x00 ; 0 + 5e4: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> + 5e8: 9b 01 movw r18, r22 + 5ea: ac 01 movw r20, r24 + 5ec: 6d 2d mov r22, r13 + 5ee: 7c 2d mov r23, r12 + 5f0: 8e 2d mov r24, r14 + 5f2: 9f 2d mov r25, r15 + 5f4: 0e 94 db 07 call 0xfb6 ; 0xfb6 <__mulsf3> + 5f8: 6b 01 movw r12, r22 + 5fa: 7c 01 movw r14, r24 + 5fc: a3 01 movw r20, r6 + 5fe: 92 01 movw r18, r4 + 600: 50 58 subi r21, 0x80 ; 128 + 602: 62 2d mov r22, r2 + 604: 73 2d mov r23, r3 + 606: 80 2f mov r24, r16 + 608: 91 2f mov r25, r17 + 60a: 0e 94 db 07 call 0xfb6 ; 0xfb6 <__mulsf3> + 60e: 9b 01 movw r18, r22 + 610: ac 01 movw r20, r24 + 612: c7 01 movw r24, r14 + 614: b6 01 movw r22, r12 + 616: 0e 94 29 06 call 0xc52 ; 0xc52 <__addsf3> + 61a: 9b 01 movw r18, r22 + 61c: ac 01 movw r20, r24 + 61e: be a1 ldd r27, Y+38 ; 0x26 + 620: af a1 ldd r26, Y+39 ; 0x27 + 622: fa a5 ldd r31, Y+42 ; 0x2a + 624: eb a5 ldd r30, Y+43 ; 0x2b + 626: 6b 2f mov r22, r27 + 628: 7a 2f mov r23, r26 + 62a: 8f 2f mov r24, r31 + 62c: 9e 2f mov r25, r30 + 62e: 0e 94 29 06 call 0xc52 ; 0xc52 <__addsf3> + 632: 6e a3 std Y+38, r22 ; 0x26 + 634: 7f a3 std Y+39, r23 ; 0x27 + 636: d8 2e mov r13, r24 + 638: c9 2e mov r12, r25 + o.stop(); + while(true) {}; + } 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 + 63a: 76 2f mov r23, r22 + 63c: 6f a1 ldd r22, Y+39 ; 0x27 + 63e: 27 2f mov r18, r23 + 640: 36 2f mov r19, r22 + 642: 4d 2d mov r20, r13 + 644: 5c 2d mov r21, r12 + 646: ba a1 ldd r27, Y+34 ; 0x22 + 648: ab a1 ldd r26, Y+35 ; 0x23 + 64a: fc a1 ldd r31, Y+36 ; 0x24 + 64c: ed a1 ldd r30, Y+37 ; 0x25 + 64e: 6b 2f mov r22, r27 + 650: 7a 2f mov r23, r26 + 652: 8f 2f mov r24, r31 + 654: 9e 2f mov r25, r30 + 656: 0e 94 29 06 call 0xc52 ; 0xc52 <__addsf3> + 65a: 20 e0 ldi r18, 0x00 ; 0 + 65c: 30 e0 ldi r19, 0x00 ; 0 + 65e: 40 e0 ldi r20, 0x00 ; 0 + 660: 5f e3 ldi r21, 0x3F ; 63 + 662: 0e 94 db 07 call 0xfb6 ; 0xfb6 <__mulsf3> + 666: 76 2e mov r7, r22 + 668: 67 2e mov r6, r23 + 66a: 58 2e mov r5, r24 + 66c: 49 2e mov r4, r25 } 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 + 66e: e8 ec ldi r30, 0xC8 ; 200 + 670: f1 e0 ldi r31, 0x01 ; 1 + 672: 80 81 ld r24, Z + 674: 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 + 676: 2f ef ldi r18, 0xFF ; 255 + 678: 3f ef ldi r19, 0xFF ; 255 + 67a: 31 83 std Z+1, r19 ; 0x01 + 67c: 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> + 67e: 8f 3f cpi r24, 0xFF ; 255 + 680: 3f ef ldi r19, 0xFF ; 255 + 682: 93 07 cpc r25, r19 + 684: 11 f0 breq .+4 ; 0x68a <__stack+0x22b> target_temp = temp; - 5c4: 99 a7 std Y+41, r25 ; 0x29 - 5c6: 88 a7 std Y+40, r24 ; 0x28 + 686: 99 a7 std Y+41, r25 ; 0x29 + 688: 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 + 68a: 68 a5 ldd r22, Y+40 ; 0x28 + 68c: 79 a5 ldd r23, Y+41 ; 0x29 + 68e: 6b 5f subi r22, 0xFB ; 251 + 690: 7f 4f sbci r23, 0xFF ; 255 + 692: 88 27 eor r24, r24 + 694: 77 fd sbrc r23, 7 + 696: 80 95 com r24 + 698: 98 2f mov r25, r24 + 69a: 0e 94 27 07 call 0xe4e ; 0xe4e <__floatsisf> + 69e: 27 2d mov r18, r7 + 6a0: 36 2d mov r19, r6 + 6a2: 45 2d mov r20, r5 + 6a4: 54 2d mov r21, r4 + 6a6: 0e 94 28 06 call 0xc50 ; 0xc50 <__subsf3> + 6aa: f6 2e mov r15, r22 + 6ac: e7 2e mov r14, r23 + 6ae: 38 2e mov r3, r24 + 6b0: 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> + 6b2: 20 e0 ldi r18, 0x00 ; 0 + 6b4: 30 e0 ldi r19, 0x00 ; 0 + 6b6: a9 01 movw r20, r18 + 6b8: 0e 94 8d 06 call 0xd1a ; 0xd1a <__cmpsf2> + 6bc: 88 23 and r24, r24 + 6be: 0c f4 brge .+2 ; 0x6c2 <__stack+0x263> + 6c0: 99 c1 rjmp .+818 ; 0x9f4 <__stack+0x595> 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; } - 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; } - 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 - 628: 5d 9b sbis 0x0b, 5 ; 11 - 62a: fe cf rjmp .-4 ; 0x628 <__stack+0x1c9> - UDR = c; - 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; } - 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; } - 630: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 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> + 6c2: 20 e0 ldi r18, 0x00 ; 0 + 6c4: 30 e0 ldi r19, 0x00 ; 0 + 6c6: 40 ea ldi r20, 0xA0 ; 160 + 6c8: 51 e4 ldi r21, 0x41 ; 65 + 6ca: 6f 2d mov r22, r15 + 6cc: 7e 2d mov r23, r14 + 6ce: 83 2d mov r24, r3 + 6d0: 92 2d mov r25, r2 + 6d2: 0e 94 d7 07 call 0xfae ; 0xfae <__gesf2> + 6d6: 18 16 cp r1, r24 + 6d8: 0c f4 brge .+2 ; 0x6dc <__stack+0x27d> + 6da: 91 c1 rjmp .+802 ; 0x9fe <__stack+0x59f> + 6dc: 3f 2d mov r19, r15 + 6de: 2e 2d mov r18, r14 + 6e0: 93 2d mov r25, r3 + 6e2: 82 2d mov r24, r2 + 6e4: 90 c1 rjmp .+800 ; 0xa06 <__stack+0x5a7> namespace avrlib { struct portb @@ -1976,385 +1813,305 @@ namespace avrlib { 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 + 6ee: 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 + 6f0: 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 + 6f2: bb 9a sbi 0x17, 3 ; 23 init(); this->led = l; send("Uart done!\n"); } void send(const char *text) { while (*text) - 6fa: 86 e7 ldi r24, 0x76 ; 118 + 6f4: 81 91 ld r24, Z+ + 6f6: 81 11 cpse r24, r1 + 6f8: f6 cf rjmp .-20 ; 0x6e6 <__stack+0x287> + o.setPwm(0, pwm_value); + char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); + 6fa: 8e 01 movw r16, r28 + 6fc: 09 5e subi r16, 0xE9 ; 233 + 6fe: 1f 4f sbci r17, 0xFF ; 255 + 700: 22 e0 ldi r18, 0x02 ; 2 + 702: 4a e0 ldi r20, 0x0A ; 10 + 704: 6f 2d mov r22, r15 + 706: 7e 2d mov r23, r14 + 708: 83 2d mov r24, r3 + 70a: 92 2d mov r25, r2 + 70c: 0e 94 44 08 call 0x1088 ; 0x1088 + 710: fc 01 movw r30, r24 + 712: 20 81 ld r18, Z + 714: 22 23 and r18, r18 + 716: 59 f0 breq .+22 ; 0x72e <__stack+0x2cf> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + 718: 31 96 adiw r30, 0x01 ; 1 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 + 71a: 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 + 71c: 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> + 71e: 5d 9b sbis 0x0b, 5 ; 11 + 720: fe cf rjmp .-4 ; 0x71e <__stack+0x2bf> UDR = c; - 704: 8c b9 out 0x0c, r24 ; 12 + 722: 2c b9 out 0x0c, r18 ; 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 + 724: 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 + 726: 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> + 728: 21 91 ld r18, Z+ + 72a: 21 11 cpse r18, r1 + 72c: f6 cf rjmp .-20 ; 0x71a <__stack+0x2bb> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 72e: 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; } + 730: 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 + 732: 5d 9b sbis 0x0b, 5 ; 11 + 734: fe cf rjmp .-4 ; 0x732 <__stack+0x2d3> + UDR = c; + 736: 8b e3 ldi r24, 0x3B ; 59 + 738: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 73a: 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; } + 73c: bb 9a sbi 0x17, 3 ; 23 + 73e: 0f 2e mov r0, r31 + 740: fa e6 ldi r31, 0x6A ; 106 + 742: ef 2e mov r14, r31 + 744: f1 e0 ldi r31, 0x01 ; 1 + 746: ff 2e mov r15, r31 + 748: f0 2d mov r31, r0 + 74a: f7 01 movw r30, r14 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 74c: 83 e6 ldi r24, 0x63 ; 99 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 74e: 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; } + 750: 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 + 752: 5d 9b sbis 0x0b, 5 ; 11 + 754: fe cf rjmp .-4 ; 0x752 <__stack+0x2f3> + UDR = c; + 756: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 758: 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; } + 75a: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 75c: 81 91 ld r24, Z+ + 75e: 81 11 cpse r24, r1 + 760: f6 cf rjmp .-20 ; 0x74e <__stack+0x2ef> + 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(";"); - 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> + 762: b4 01 movw r22, r8 + 764: 6a 0d add r22, r10 + 766: 7b 1d adc r23, r11 + 768: 80 e0 ldi r24, 0x00 ; 0 + 76a: 90 e0 ldi r25, 0x00 ; 0 + 76c: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> + 770: 20 e0 ldi r18, 0x00 ; 0 + 772: 30 e0 ldi r19, 0x00 ; 0 + 774: 40 e0 ldi r20, 0x00 ; 0 + 776: 5f e3 ldi r21, 0x3F ; 63 + 778: 0e 94 db 07 call 0xfb6 ; 0xfb6 <__mulsf3> + 77c: 8e 01 movw r16, r28 + 77e: 04 5f subi r16, 0xF4 ; 244 + 780: 1f 4f sbci r17, 0xFF ; 255 + 782: 22 e0 ldi r18, 0x02 ; 2 + 784: 4a e0 ldi r20, 0x0A ; 10 + 786: 0e 94 44 08 call 0x1088 ; 0x1088 + 78a: fc 01 movw r30, r24 + 78c: 20 81 ld r18, Z + 78e: 22 23 and r18, r18 + 790: 59 f0 breq .+22 ; 0x7a8 <__stack+0x349> l.off(l.YELLOW); r.send("#### End Bootup ###########################################\n"); l.on(l.GREEN); } int main(void) - 728: 31 96 adiw r30, 0x01 ; 1 + 792: 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 + 794: 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 + 796: 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> + 798: 5d 9b sbis 0x0b, 5 ; 11 + 79a: fe cf rjmp .-4 ; 0x798 <__stack+0x339> UDR = c; - 732: 2c b9 out 0x0c, r18 ; 12 + 79c: 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 + 79e: 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 + 7a0: 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> + 7a2: 21 91 ld r18, Z+ + 7a4: 21 11 cpse r18, r1 + 7a6: f6 cf rjmp .-20 ; 0x794 <__stack+0x335> 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 + 7a8: 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 + 7aa: 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> + 7ac: 5d 9b sbis 0x0b, 5 ; 11 + 7ae: fe cf rjmp .-4 ; 0x7ac <__stack+0x34d> UDR = c; + 7b0: 8b e3 ldi r24, 0x3B ; 59 7b2: 8c b9 out 0x0c, r24 ; 12 namespace avrlib { @@ -2370,204 +2127,241 @@ namespace avrlib { static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } 7b6: bb 9a sbi 0x17, 3 ; 23 + 7b8: ee e6 ldi r30, 0x6E ; 110 + 7ba: f1 e0 ldi r31, 0x01 ; 1 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> + 7bc: 86 e7 ldi r24, 0x76 ; 118 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 7be: 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; } + 7c0: 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 + 7c2: 5d 9b sbis 0x0b, 5 ; 11 + 7c4: fe cf rjmp .-4 ; 0x7c2 <__stack+0x363> + UDR = c; + 7c6: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 7c8: 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; } + 7ca: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 7cc: 81 91 ld r24, Z+ + 7ce: 81 11 cpse r24, r1 + 7d0: f6 cf rjmp .-20 ; 0x7be <__stack+0x35f> + } + 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(";"); - 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> + 7d2: 4a e0 ldi r20, 0x0A ; 10 + 7d4: 50 e0 ldi r21, 0x00 ; 0 + 7d6: be 01 movw r22, r28 + 7d8: 64 5f subi r22, 0xF4 ; 244 + 7da: 7f 4f sbci r23, 0xFF ; 255 + 7dc: c5 01 movw r24, r10 + 7de: 0e 94 65 08 call 0x10ca ; 0x10ca + 7e2: fc 01 movw r30, r24 + 7e4: 20 81 ld r18, Z + 7e6: 22 23 and r18, r18 + 7e8: 59 f0 breq .+22 ; 0x800 <__stack+0x3a1> l.off(l.YELLOW); r.send("#### End Bootup ###########################################\n"); l.on(l.GREEN); } int main(void) - 7dc: 31 96 adiw r30, 0x01 ; 1 + 7ea: 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 + 7ec: 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 + 7ee: 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> + 7f0: 5d 9b sbis 0x0b, 5 ; 11 + 7f2: fe cf rjmp .-4 ; 0x7f0 <__stack+0x391> UDR = c; - 7e6: 2c b9 out 0x0c, r18 ; 12 + 7f4: 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 + 7f6: 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 + 7f8: 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> + 7fa: 21 91 ld r18, Z+ + 7fc: 21 11 cpse r18, r1 + 7fe: f6 cf rjmp .-20 ; 0x7ec <__stack+0x38d> 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 + 800: 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 + 802: 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> + 804: 5d 9b sbis 0x0b, 5 ; 11 + 806: fe cf rjmp .-4 ; 0x804 <__stack+0x3a5> UDR = c; - 7fa: 8b e3 ldi r24, 0x3B ; 59 - 7fc: 8c b9 out 0x0c, r24 ; 12 + 808: 8b e3 ldi r24, 0x3B ; 59 + 80a: 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 + 80c: 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 + 80e: bb 9a sbi 0x17, 3 ; 23 + 810: e2 e7 ldi r30, 0x72 ; 114 + 812: 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 + 814: 86 e7 ldi r24, 0x76 ; 118 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 + 816: 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 + 818: 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> + 81a: 5d 9b sbis 0x0b, 5 ; 11 + 81c: fe cf rjmp .-4 ; 0x81a <__stack+0x3bb> UDR = c; - 810: 8c b9 out 0x0c, r24 ; 12 + 81e: 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 + 820: 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 + 822: 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> + 824: 81 91 ld r24, Z+ + 826: 81 11 cpse r24, r1 + 828: f6 cf rjmp .-20 ; 0x816 <__stack+0x3b7> + 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(";"); - 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 + 82a: 4a e0 ldi r20, 0x0A ; 10 + 82c: 50 e0 ldi r21, 0x00 ; 0 + 82e: be 01 movw r22, r28 + 830: 64 5f subi r22, 0xF4 ; 244 + 832: 7f 4f sbci r23, 0xFF ; 255 + 834: c4 01 movw r24, r8 + 836: 0e 94 65 08 call 0x10ca ; 0x10ca 83a: fc 01 movw r30, r24 83c: 20 81 ld r18, Z 83e: 22 23 and r18, r18 @@ -2665,335 +2459,315 @@ namespace avrlib { 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 + 868: 83 e6 ldi r24, 0x63 ; 99 + 86a: f7 01 movw r30, r14 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 + 86c: 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 + 86e: 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> + 870: 5d 9b sbis 0x0b, 5 ; 11 + 872: fe cf rjmp .-4 ; 0x870 <__stack+0x411> UDR = c; - 876: 8c b9 out 0x0c, r24 ; 12 + 874: 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 + 876: 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 + 878: 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> + 87a: 81 91 ld r24, Z+ + 87c: 81 11 cpse r24, r1 + 87e: f6 cf rjmp .-20 ; 0x86c <__stack+0x40d> + 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(";"); - 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> + 880: 8e 01 movw r16, r28 + 882: 0f 5f subi r16, 0xFF ; 255 + 884: 1f 4f sbci r17, 0xFF ; 255 + 886: 22 e0 ldi r18, 0x02 ; 2 + 888: 4a e0 ldi r20, 0x0A ; 10 + 88a: 67 2d mov r22, r7 + 88c: 76 2d mov r23, r6 + 88e: 85 2d mov r24, r5 + 890: 94 2d mov r25, r4 + 892: 0e 94 44 08 call 0x1088 ; 0x1088 + 896: fc 01 movw r30, r24 + 898: 20 81 ld r18, Z + 89a: 22 23 and r18, r18 + 89c: 59 f0 breq .+22 ; 0x8b4 <__stack+0x455> l.off(l.YELLOW); r.send("#### End Bootup ###########################################\n"); l.on(l.GREEN); } int main(void) - 8a4: 31 96 adiw r30, 0x01 ; 1 + 89e: 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 + 8a0: 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 + 8a2: 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> + 8a4: 5d 9b sbis 0x0b, 5 ; 11 + 8a6: fe cf rjmp .-4 ; 0x8a4 <__stack+0x445> UDR = c; - 8ae: 2c b9 out 0x0c, r18 ; 12 + 8a8: 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 + 8aa: 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 + 8ac: 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> + 8ae: 21 91 ld r18, Z+ + 8b0: 21 11 cpse r18, r1 + 8b2: f6 cf rjmp .-20 ; 0x8a0 <__stack+0x441> 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 + 8b4: 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 + 8b6: 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> + 8b8: 5d 9b sbis 0x0b, 5 ; 11 + 8ba: fe cf rjmp .-4 ; 0x8b8 <__stack+0x459> UDR = c; - 8c2: 8b e3 ldi r24, 0x3B ; 59 - 8c4: 8c b9 out 0x0c, r24 ; 12 + 8bc: 8b e3 ldi r24, 0x3B ; 59 + 8be: 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 + 8c0: 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 + 8c2: bb 9a sbi 0x17, 3 ; 23 + 8c4: e6 e7 ldi r30, 0x76 ; 118 + 8c6: 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 + 8c8: 83 e6 ldi r24, 0x63 ; 99 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 + 8ca: 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 + 8cc: 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> + 8ce: 5d 9b sbis 0x0b, 5 ; 11 + 8d0: fe cf rjmp .-4 ; 0x8ce <__stack+0x46f> UDR = c; - 8d8: 8c b9 out 0x0c, r24 ; 12 + 8d2: 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 + 8d4: 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 + 8d6: 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> + 8d8: 81 91 ld r24, Z+ + 8da: 81 11 cpse r24, r1 + 8dc: f6 cf rjmp .-20 ; 0x8ca <__stack+0x46b> + 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("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); + 8de: 8e 01 movw r16, r28 + 8e0: 0f 5f subi r16, 0xFF ; 255 + 8e2: 1f 4f sbci r17, 0xFF ; 255 + 8e4: 22 e0 ldi r18, 0x02 ; 2 + 8e6: 4a e0 ldi r20, 0x0A ; 10 + 8e8: fa a1 ldd r31, Y+34 ; 0x22 + 8ea: eb a1 ldd r30, Y+35 ; 0x23 + 8ec: 5c a1 ldd r21, Y+36 ; 0x24 + 8ee: 3d a1 ldd r19, Y+37 ; 0x25 + 8f0: 6f 2f mov r22, r31 + 8f2: 7e 2f mov r23, r30 + 8f4: 85 2f mov r24, r21 + 8f6: 93 2f mov r25, r19 + 8f8: 0e 94 44 08 call 0x1088 ; 0x1088 + 8fc: fc 01 movw r30, r24 + 8fe: 20 81 ld r18, Z + 900: 22 23 and r18, r18 + 902: 59 f0 breq .+22 ; 0x91a <__stack+0x4bb> l.off(l.YELLOW); r.send("#### End Bootup ###########################################\n"); l.on(l.GREEN); } int main(void) - 8f8: 31 96 adiw r30, 0x01 ; 1 + 904: 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 + 906: 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 + 908: 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> + 90a: 5d 9b sbis 0x0b, 5 ; 11 + 90c: fe cf rjmp .-4 ; 0x90a <__stack+0x4ab> UDR = c; - 902: 8c b9 out 0x0c, r24 ; 12 + 90e: 2c b9 out 0x0c, r18 ; 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 + 910: 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 + 912: 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> + 914: 21 91 ld r18, Z+ + 916: 21 11 cpse r18, r1 + 918: f6 cf rjmp .-20 ; 0x906 <__stack+0x4a7> 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 + 91a: c3 9a sbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } @@ -3001,2088 +2775,2544 @@ namespace avrlib { 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> + 91e: 5d 9b sbis 0x0b, 5 ; 11 + 920: fe cf rjmp .-4 ; 0x91e <__stack+0x4bf> UDR = c; - b02: 8c b9 out 0x0c, r24 ; 12 + 922: 8b e3 ldi r24, 0x3B ; 59 + 924: 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 + 926: 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 + 928: bb 9a sbi 0x17, 3 ; 23 + 92a: ea e7 ldi r30, 0x7A ; 122 + 92c: f1 e0 ldi r31, 0x01 ; 1 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> + 92e: 83 e6 ldi r24, 0x63 ; 99 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 930: 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; } + 932: 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 + 934: 5d 9b sbis 0x0b, 5 ; 11 + 936: fe cf rjmp .-4 ; 0x934 <__stack+0x4d5> + UDR = c; + 938: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 93a: 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; } + 93c: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 93e: 81 91 ld r24, Z+ + 940: 81 11 cpse r24, r1 + 942: f6 cf rjmp .-20 ; 0x930 <__stack+0x4d1> + 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("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); + r.send("c1="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";"); + 944: 8e 01 movw r16, r28 + 946: 0f 5f subi r16, 0xFF ; 255 + 948: 1f 4f sbci r17, 0xFF ; 255 + 94a: 22 e0 ldi r18, 0x02 ; 2 + 94c: 4a e0 ldi r20, 0x0A ; 10 + 94e: fe a1 ldd r31, Y+38 ; 0x26 + 950: ef a1 ldd r30, Y+39 ; 0x27 + 952: 6f 2f mov r22, r31 + 954: 7e 2f mov r23, r30 + 956: 8d 2d mov r24, r13 + 958: 9c 2d mov r25, r12 + 95a: 0e 94 44 08 call 0x1088 ; 0x1088 + 95e: fc 01 movw r30, r24 + 960: 20 81 ld r18, Z + 962: 22 23 and r18, r18 + 964: 59 f0 breq .+22 ; 0x97c <__stack+0x51d> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + 966: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 968: 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; } + 96a: 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 + 96c: 5d 9b sbis 0x0b, 5 ; 11 + 96e: fe cf rjmp .-4 ; 0x96c <__stack+0x50d> + UDR = c; + 970: 2c b9 out 0x0c, r18 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 972: 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; } + 974: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 976: 21 91 ld r18, Z+ + 978: 21 11 cpse r18, r1 + 97a: f6 cf rjmp .-20 ; 0x968 <__stack+0x509> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 97c: 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; } + 97e: 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 + 980: 5d 9b sbis 0x0b, 5 ; 11 + 982: fe cf rjmp .-4 ; 0x980 <__stack+0x521> + UDR = c; + 984: 8b e3 ldi r24, 0x3B ; 59 + 986: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 988: 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; } + 98a: bb 9a sbi 0x17, 3 ; 23 + 98c: ee e7 ldi r30, 0x7E ; 126 + 98e: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 990: 88 e6 ldi r24, 0x68 ; 104 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 992: 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; } + 994: 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 + 996: 5d 9b sbis 0x0b, 5 ; 11 + 998: fe cf rjmp .-4 ; 0x996 <__stack+0x537> + UDR = c; + 99a: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 99c: 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; } + 99e: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 9a0: 81 91 ld r24, Z+ + 9a2: 81 11 cpse r24, r1 + 9a4: f6 cf rjmp .-20 ; 0x992 <__stack+0x533> + r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); + r.send("c1="); 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;"); + 9a6: 9a 9b sbis 0x13, 2 ; 19 + 9a8: 03 c0 rjmp .+6 ; 0x9b0 <__stack+0x551> + 9aa: e2 e6 ldi r30, 0x62 ; 98 + 9ac: f1 e0 ldi r31, 0x01 ; 1 + 9ae: 02 c0 rjmp .+4 ; 0x9b4 <__stack+0x555> + 9b0: eb e5 ldi r30, 0x5B ; 91 + 9b2: f1 e0 ldi r31, 0x01 ; 1 + 9b4: 80 81 ld r24, Z + 9b6: 88 23 and r24, r24 + 9b8: 59 f0 breq .+22 ; 0x9d0 <__stack+0x571> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + 9ba: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 9bc: 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; } + 9be: 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 + 9c0: 5d 9b sbis 0x0b, 5 ; 11 + 9c2: fe cf rjmp .-4 ; 0x9c0 <__stack+0x561> + UDR = c; + 9c4: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 9c6: 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; } + 9c8: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 9ca: 81 91 ld r24, Z+ + 9cc: 81 11 cpse r24, r1 + 9ce: f6 cf rjmp .-20 ; 0x9bc <__stack+0x55d> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 9d0: 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; } + 9d2: 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 + 9d4: 5d 9b sbis 0x0b, 5 ; 11 + 9d6: fe cf rjmp .-4 ; 0x9d4 <__stack+0x575> + UDR = c; + 9d8: 8a e0 ldi r24, 0x0A ; 10 + 9da: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 9dc: 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; } + 9de: 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); + 9e0: ff ef ldi r31, 0xFF ; 255 + 9e2: 21 ee ldi r18, 0xE1 ; 225 + 9e4: 34 e0 ldi r19, 0x04 ; 4 + 9e6: f1 50 subi r31, 0x01 ; 1 + 9e8: 20 40 sbci r18, 0x00 ; 0 + 9ea: 30 40 sbci r19, 0x00 ; 0 + 9ec: e1 f7 brne .-8 ; 0x9e6 <__stack+0x587> + 9ee: 00 c0 rjmp .+0 ; 0x9f0 <__stack+0x591> + 9f0: 00 00 nop +{ + setup(); + int16_t target_temp = 20; + float pwm_value = 0; + while(1) + 9f2: f3 cc rjmp .-1562 ; 0x3da + if(ausg < 0) + ausg = 0; + if(ausg > 5) + ausg = 5; + if(val < 0) + val = 0; + 9f4: 30 e0 ldi r19, 0x00 ; 0 + 9f6: 20 e0 ldi r18, 0x00 ; 0 + 9f8: 90 e0 ldi r25, 0x00 ; 0 + 9fa: 80 e0 ldi r24, 0x00 ; 0 + 9fc: 04 c0 rjmp .+8 ; 0xa06 <__stack+0x5a7> + if(val > 20) + val = 20; + 9fe: 30 e0 ldi r19, 0x00 ; 0 + a00: 20 e0 ldi r18, 0x00 ; 0 + a02: 90 ea ldi r25, 0xA0 ; 160 + a04: 81 e4 ldi r24, 0x41 ; 65 + this->pwm[ausg] = (uint8_t)val; + a06: 48 2f mov r20, r24 + a08: 63 2f mov r22, r19 + a0a: 72 2f mov r23, r18 + a0c: 89 2f mov r24, r25 + a0e: 94 2f mov r25, r20 + a10: 0e 94 f9 06 call 0xdf2 ; 0xdf2 <__fixunssfsi> + a14: 60 93 cb 01 sts 0x01CB, r22 + a18: e5 e8 ldi r30, 0x85 ; 133 + a1a: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + a1c: 80 e7 ldi r24, 0x70 ; 112 + a1e: 63 ce rjmp .-826 ; 0x6e6 <__stack+0x287> + +00000a20 <__vector_6>: + r.send("\n"); + _delay_ms(100); + } +} + +ISR(TIMER1_COMPA_vect) { + a20: 1f 92 push r1 + a22: 0f 92 push r0 + a24: 0f b6 in r0, 0x3f ; 63 + a26: 0f 92 push r0 + a28: 11 24 eor r1, r1 + a2a: 2f 93 push r18 + a2c: 3f 93 push r19 + a2e: 4f 93 push r20 + a30: 5f 93 push r21 + a32: 6f 93 push r22 + a34: 7f 93 push r23 + a36: 8f 93 push r24 + a38: 9f 93 push r25 + a3a: af 93 push r26 + a3c: bf 93 push r27 + a3e: ef 93 push r30 + a40: ff 93 push r31 + if(ausg > 5) + ausg = 5; + return this->pwm[ausg]; + } + void timer() { + if (this->pct++ >= 20) { + a42: 80 91 ca 01 lds r24, 0x01CA + a46: 84 31 cpi r24, 0x14 ; 20 + a48: 08 f4 brcc .+2 ; 0xa4c <__vector_6+0x2c> + a4a: 51 c0 rjmp .+162 ; 0xaee <__vector_6+0xce> + this->pct=0; + a4c: 10 92 ca 01 sts 0x01CA, r1 + a50: 51 c0 rjmp .+162 ; 0xaf4 <__vector_6+0xd4> + } + for(uint8_t i = 0; i < 6; i++) { + if(this->pwm[i] >= this->pct && this->pwm[i] != 0) { + a52: 82 2f mov r24, r18 + a54: 91 91 ld r25, Z+ + a56: 6c 91 ld r22, X + a58: 96 17 cp r25, r22 + a5a: 18 f1 brcs .+70 ; 0xaa2 <__vector_6+0x82> + a5c: 99 23 and r25, r25 + a5e: 09 f1 breq .+66 ; 0xaa2 <__vector_6+0x82> + this->on((1< + a66: 66 0f add r22, r22 + a68: 77 1f adc r23, r23 + a6a: 0a 94 dec r0 + a6c: e2 f7 brpl .-8 ; 0xa66 <__vector_6+0x46> + a6e: cb 01 movw r24, r22 + if(ausg & OUT6) { + out6::make_low(); + } + } + void on(uint8_t ausg = 255) { + if(ausg & OUT1) { + a70: 60 ff sbrs r22, 0 + a72: 02 c0 rjmp .+4 ; 0xa78 <__vector_6+0x58> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + a74: 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; } + a76: a2 9a sbi 0x14, 2 ; 20 + out1::make_high(); + } + if(ausg & OUT2) { + a78: 81 ff sbrs r24, 1 + a7a: 02 c0 rjmp .+4 ; 0xa80 <__vector_6+0x60> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + a7c: 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; } + a7e: a3 9a sbi 0x14, 3 ; 20 + out2::make_high(); + } + if(ausg & OUT3) { + a80: 82 ff sbrs r24, 2 + a82: 02 c0 rjmp .+4 ; 0xa88 <__vector_6+0x68> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + a84: 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; } + a86: a4 9a sbi 0x14, 4 ; 20 + out3::make_high(); + } + if(ausg & OUT4) { + a88: 83 ff sbrs r24, 3 + a8a: 02 c0 rjmp .+4 ; 0xa90 <__vector_6+0x70> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + a8c: 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; } + a8e: a5 9a sbi 0x14, 5 ; 20 + out4::make_high(); + } + if(ausg & OUT5) { + a90: 84 ff sbrs r24, 4 + a92: 02 c0 rjmp .+4 ; 0xa98 <__vector_6+0x78> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + a94: 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; } + a96: a6 9a sbi 0x14, 6 ; 20 + out5::make_high(); + } + if(ausg & OUT6) { + a98: 85 ff sbrs r24, 5 + a9a: 22 c0 rjmp .+68 ; 0xae0 <__vector_6+0xc0> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + a9c: 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; } + a9e: a7 9a sbi 0x14, 7 ; 20 + aa0: 1f c0 rjmp .+62 ; 0xae0 <__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< + aa6: 66 0f add r22, r22 + aa8: 77 1f adc r23, r23 + aaa: 8a 95 dec r24 + aac: e2 f7 brpl .-8 ; 0xaa6 <__vector_6+0x86> + aae: cb 01 movw r24, r22 + public: + SSR() { + init(); + } + void off(uint8_t ausg = 255) { + if(ausg & OUT1) { + ab0: 60 ff sbrs r22, 0 + ab2: 02 c0 rjmp .+4 ; 0xab8 <__vector_6+0x98> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + ab4: 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; } + ab6: a2 9a sbi 0x14, 2 ; 20 + out1::make_low(); + } + if(ausg & OUT2) { + ab8: 81 ff sbrs r24, 1 + aba: 02 c0 rjmp .+4 ; 0xac0 <__vector_6+0xa0> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + abc: 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; } + abe: a3 9a sbi 0x14, 3 ; 20 + out2::make_low(); + } + if(ausg & OUT3) { + ac0: 82 ff sbrs r24, 2 + ac2: 02 c0 rjmp .+4 ; 0xac8 <__vector_6+0xa8> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + ac4: 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; } + ac6: a4 9a sbi 0x14, 4 ; 20 + out3::make_low(); + } + if(ausg & OUT4) { + ac8: 83 ff sbrs r24, 3 + aca: 02 c0 rjmp .+4 ; 0xad0 <__vector_6+0xb0> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + acc: 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; } + ace: a5 9a sbi 0x14, 5 ; 20 + out4::make_low(); + } + if(ausg & OUT5) { + ad0: 84 ff sbrs r24, 4 + ad2: 02 c0 rjmp .+4 ; 0xad8 <__vector_6+0xb8> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + ad4: 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; } + ad6: a6 9a sbi 0x14, 6 ; 20 + out5::make_low(); + } + if(ausg & OUT6) { + ad8: 85 ff sbrs r24, 5 + ada: 02 c0 rjmp .+4 ; 0xae0 <__vector_6+0xc0> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + adc: 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; } + ade: a7 9a sbi 0x14, 7 ; 20 + ae0: 2f 5f subi r18, 0xFF ; 255 + ae2: 3f 4f sbci r19, 0xFF ; 255 + } + void timer() { + if (this->pct++ >= 20) { + this->pct=0; + } + for(uint8_t i = 0; i < 6; i++) { + ae4: 26 30 cpi r18, 0x06 ; 6 + ae6: 31 05 cpc r19, r1 + ae8: 09 f0 breq .+2 ; 0xaec <__vector_6+0xcc> + aea: b3 cf rjmp .-154 ; 0xa52 <__vector_6+0x32> + aec: 0c c0 rjmp .+24 ; 0xb06 <__vector_6+0xe6> + if(ausg > 5) + ausg = 5; + return this->pwm[ausg]; + } + void timer() { + if (this->pct++ >= 20) { + aee: 8f 5f subi r24, 0xFF ; 255 + af0: 80 93 ca 01 sts 0x01CA, r24 + af4: eb ec ldi r30, 0xCB ; 203 + af6: f1 e0 ldi r31, 0x01 ; 1 + af8: 20 e0 ldi r18, 0x00 ; 0 + afa: 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) { + afc: aa ec ldi r26, 0xCA ; 202 + afe: b1 e0 ldi r27, 0x01 ; 1 + this->on((1<off((1< + o.timer(); +} + b06: ff 91 pop r31 + b08: ef 91 pop r30 + b0a: bf 91 pop r27 + b0c: af 91 pop r26 + b0e: 9f 91 pop r25 + b10: 8f 91 pop r24 + b12: 7f 91 pop r23 + b14: 6f 91 pop r22 + b16: 5f 91 pop r21 + b18: 4f 91 pop r20 + b1a: 3f 91 pop r19 + b1c: 2f 91 pop r18 + b1e: 0f 90 pop r0 + b20: 0f be out 0x3f, r0 ; 63 + b22: 0f 90 pop r0 + b24: 1f 90 pop r1 + b26: 18 95 reti + +00000b28 <__vector_1>: + +ISR(INT0_vect) { + b28: 1f 92 push r1 + b2a: 0f 92 push r0 + b2c: 0f b6 in r0, 0x3f ; 63 + b2e: 0f 92 push r0 + b30: 11 24 eor r1, r1 + b32: 8f 93 push r24 + } + void intr() { + GIFR = (1<: +#include "hardware/pin.hpp" + +template +class SSR { + public: + SSR() { + b44: fc 01 movw r30, r24 + b46: 11 92 st Z+, r1 + b48: 86 e0 ldi r24, 0x06 ; 6 + b4a: df 01 movw r26, r30 + b4c: 1d 92 st X+, r1 + b4e: 8a 95 dec r24 + b50: e9 f7 brne .-6 ; 0xb4c <_ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC1Ev+0x8> + b52: a2 9a sbi 0x14, 2 ; 20 + b54: a3 9a sbi 0x14, 3 ; 20 + b56: a4 9a sbi 0x14, 4 ; 20 + b58: a5 9a sbi 0x14, 5 ; 20 + b5a: a6 9a sbi 0x14, 6 ; 20 + b5c: a7 9a sbi 0x14, 7 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + b5e: 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; } + b60: a2 9a sbi 0x14, 2 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + b62: 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; } + b64: a3 9a sbi 0x14, 3 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + b66: 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; } + b68: a4 9a sbi 0x14, 4 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + b6a: 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; } + b6c: a5 9a sbi 0x14, 5 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + b6e: 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; } + b70: a6 9a sbi 0x14, 6 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + b72: 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; } + b74: a7 9a sbi 0x14, 7 ; 20 + b76: 08 95 ret + +00000b78 <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE>: +#define USART_H_ + +template +class Usart { + public: + Usart(ledclass l) { + b78: cf 93 push r28 + b7a: df 93 push r29 + b7c: 1f 92 push r1 + b7e: cd b7 in r28, 0x3d ; 61 + b80: de b7 in r29, 0x3e ; 62 + b82: 69 83 std Y+1, r22 ; 0x01 + b84: bc 9a sbi 0x17, 4 ; 23 + b86: bb 9a sbi 0x17, 3 ; 23 + b88: ba 9a sbi 0x17, 2 ; 23 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b8a: 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; } + b8c: bc 9a sbi 0x17, 4 ; 23 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b8e: 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; } + b90: bb 9a sbi 0x17, 3 ; 23 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b92: 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; } + b94: ba 9a sbi 0x17, 2 ; 23 + b96: 2f ef ldi r18, 0xFF ; 255 + b98: 3f ef ldi r19, 0xFF ; 255 + b9a: fc 01 movw r30, r24 + b9c: 32 83 std Z+2, r19 ; 0x02 + b9e: 21 83 std Z+1, r18 ; 0x01 + this->temp = -1; + return t; + } + private: + void init() { + UCSRA = 0; + ba0: 1b b8 out 0x0b, r1 ; 11 + UCSRB = (1<led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + bb4: 85 e5 ldi r24, 0x55 ; 85 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + bb6: 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; } + bb8: 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 + bba: 5d 9b sbis 0x0b, 5 ; 11 + bbc: fe cf rjmp .-4 ; 0xbba <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE+0x42> + UDR = c; + bbe: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + bc0: 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; } + bc2: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + bc4: 81 91 ld r24, Z+ + bc6: 81 11 cpse r24, r1 + bc8: f6 cf rjmp .-20 ; 0xbb6 <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE+0x3e> public: Usart(ledclass l) { init(); this->led = l; send("Uart done!\n"); } - b0e: 0f 90 pop r0 - b10: df 91 pop r29 - b12: cf 91 pop r28 - b14: 08 95 ret + bca: 0f 90 pop r0 + bcc: df 91 pop r29 + bce: cf 91 pop r28 + bd0: 08 95 ret -00000b16 <_ZN6ButtonIN6avrlib5portdELi2EEC1E3LedINS0_5portbELi4ELi3ELi2EE>: +00000bd2 <_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 + bd2: cf 93 push r28 + bd4: df 93 push r29 + bd6: 1f 92 push r1 + bd8: cd b7 in r28, 0x3d ; 61 + bda: de b7 in r29, 0x3e ; 62 + bdc: 69 83 std Y+1, r22 ; 0x01 + bde: bc 9a sbi 0x17, 4 ; 23 + be0: bb 9a sbi 0x17, 3 ; 23 + be2: ba 9a sbi 0x17, 2 ; 23 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - b28: c4 98 cbi 0x18, 4 ; 24 + be4: 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; } - b2a: bc 9a sbi 0x17, 4 ; 23 + be6: bc 9a sbi 0x17, 4 ; 23 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - b2c: c3 98 cbi 0x18, 3 ; 24 + be8: 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; } - b2e: bb 9a sbi 0x17, 3 ; 23 + bea: bb 9a sbi 0x17, 3 ; 23 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - b30: c2 98 cbi 0x18, 2 ; 24 + bec: 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; } - b32: ba 9a sbi 0x17, 2 ; 23 + bee: ba 9a sbi 0x17, 2 ; 23 static uint8_t pin() { return PIND; } static void pin(uint8_t v) { PIND = v; } static uint8_t dir() { return DDRD; } static void dir(uint8_t v) { DDRD = v; } - b34: 8a 98 cbi 0x11, 2 ; 17 + bf0: 8a 98 cbi 0x11, 2 ; 17 namespace avrlib { struct portd { 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 + bf2: 92 98 cbi 0x12, 2 ; 18 + bf4: 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 + bf6: 0f 90 pop r0 + bf8: df 91 pop r29 + bfa: cf 91 pop r28 + bfc: 08 95 ret -00000b42 <_ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv>: - b42: bc 9a sbi 0x17, 4 ; 23 - b44: bb 9a sbi 0x17, 3 ; 23 - b46: ba 9a sbi 0x17, 2 ; 23 +00000bfe <_ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv>: + bfe: bc 9a sbi 0x17, 4 ; 23 + c00: bb 9a sbi 0x17, 3 ; 23 + c02: ba 9a sbi 0x17, 2 ; 23 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - b48: c4 98 cbi 0x18, 4 ; 24 + c04: 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; } - b4a: bc 9a sbi 0x17, 4 ; 23 + c06: bc 9a sbi 0x17, 4 ; 23 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - b4c: c3 98 cbi 0x18, 3 ; 24 + c08: 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; } - b4e: bb 9a sbi 0x17, 3 ; 23 + c0a: bb 9a sbi 0x17, 3 ; 23 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - b50: c2 98 cbi 0x18, 2 ; 24 + c0c: 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; } - b52: ba 9a sbi 0x17, 2 ; 23 - b54: 08 95 ret + c0e: ba 9a sbi 0x17, 2 ; 23 + c10: 08 95 ret -00000b56 <_GLOBAL__sub_I_l>: +00000c12 <_GLOBAL__sub_I_l>: template class Led { public: Led() { init(); - b56: 81 ed ldi r24, 0xD1 ; 209 - b58: 91 e0 ldi r25, 0x01 ; 1 - b5a: 0e 94 a1 05 call 0xb42 ; 0xb42 <_ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv> + c12: 81 ed ldi r24, 0xD1 ; 209 + c14: 91 e0 ldi r25, 0x01 ; 1 + c16: 0e 94 ff 05 call 0xbfe ; 0xbfe <_ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv> #include "peripheral.h" #include 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> + c1a: 8a ec ldi r24, 0xCA ; 202 + c1c: 91 e0 ldi r25, 0x01 ; 1 + c1e: 0e 94 a2 05 call 0xb44 ; 0xb44 <_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> + c22: 60 e0 ldi r22, 0x00 ; 0 + c24: 87 ec ldi r24, 0xC7 ; 199 + c26: 91 e0 ldi r25, 0x01 ; 1 + c28: 0e 94 bc 05 call 0xb78 ; 0xb78 <_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]; + c2c: 80 e3 ldi r24, 0x30 ; 48 + c2e: e0 e6 ldi r30, 0x60 ; 96 + c30: f0 e0 ldi r31, 0x00 ; 0 + c32: a7 e9 ldi r26, 0x97 ; 151 + c34: b1 e0 ldi r27, 0x01 ; 1 + c36: 01 90 ld r0, Z+ + c38: 0d 92 st X+, r0 + c3a: 8a 95 dec r24 + c3c: e1 f7 brne .-8 ; 0xc36 <_GLOBAL__sub_I_l+0x24> + + return (m * (float)v) + (-m * v1) + c1; } private: void init() { ADCSRA = (1< - b92: 08 95 ret + c44: 60 e0 ldi r22, 0x00 ; 0 + c46: 86 e9 ldi r24, 0x96 ; 150 + c48: 91 e0 ldi r25, 0x01 ; 1 + c4a: 0e 94 e9 05 call 0xbd2 ; 0xbd2 <_ZN6ButtonIN6avrlib5portdELi2EEC1E3LedINS0_5portbELi4ELi3ELi2EE> + c4e: 08 95 ret -00000b94 <__subsf3>: - b94: 50 58 subi r21, 0x80 ; 128 +00000c50 <__subsf3>: + c50: 50 58 subi r21, 0x80 ; 128 -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> +00000c52 <__addsf3>: + c52: bb 27 eor r27, r27 + c54: aa 27 eor r26, r26 + c56: 0e d0 rcall .+28 ; 0xc74 <__addsf3x> + c58: 70 c1 rjmp .+736 ; 0xf3a <__fp_round> + c5a: 61 d1 rcall .+706 ; 0xf1e <__fp_pscA> + c5c: 30 f0 brcs .+12 ; 0xc6a <__addsf3+0x18> + c5e: 66 d1 rcall .+716 ; 0xf2c <__fp_pscB> + c60: 20 f0 brcs .+8 ; 0xc6a <__addsf3+0x18> + c62: 31 f4 brne .+12 ; 0xc70 <__addsf3+0x1e> + c64: 9f 3f cpi r25, 0xFF ; 255 + c66: 11 f4 brne .+4 ; 0xc6c <__addsf3+0x1a> + c68: 1e f4 brtc .+6 ; 0xc70 <__addsf3+0x1e> + c6a: 56 c1 rjmp .+684 ; 0xf18 <__fp_nan> + c6c: 0e f4 brtc .+2 ; 0xc70 <__addsf3+0x1e> + c6e: e0 95 com r30 + c70: e7 fb bst r30, 7 + c72: 4c c1 rjmp .+664 ; 0xf0c <__fp_inf> -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 +00000c74 <__addsf3x>: + c74: e9 2f mov r30, r25 + c76: 72 d1 rcall .+740 ; 0xf5c <__fp_split3> + c78: 80 f3 brcs .-32 ; 0xc5a <__addsf3+0x8> + c7a: ba 17 cp r27, r26 + c7c: 62 07 cpc r22, r18 + c7e: 73 07 cpc r23, r19 + c80: 84 07 cpc r24, r20 + c82: 95 07 cpc r25, r21 + c84: 18 f0 brcs .+6 ; 0xc8c <__addsf3x+0x18> + c86: 71 f4 brne .+28 ; 0xca4 <__addsf3x+0x30> + c88: 9e f5 brtc .+102 ; 0xcf0 <__addsf3x+0x7c> + c8a: 8a c1 rjmp .+788 ; 0xfa0 <__fp_zero> + c8c: 0e f4 brtc .+2 ; 0xc90 <__addsf3x+0x1c> + c8e: e0 95 com r30 + c90: 0b 2e mov r0, r27 + c92: ba 2f mov r27, r26 + c94: a0 2d mov r26, r0 + c96: 0b 01 movw r0, r22 + c98: b9 01 movw r22, r18 + c9a: 90 01 movw r18, r0 + c9c: 0c 01 movw r0, r24 + c9e: ca 01 movw r24, r20 + ca0: a0 01 movw r20, r0 + ca2: 11 24 eor r1, r1 + ca4: ff 27 eor r31, r31 + ca6: 59 1b sub r21, r25 + ca8: 99 f0 breq .+38 ; 0xcd0 <__addsf3x+0x5c> + caa: 59 3f cpi r21, 0xF9 ; 249 + cac: 50 f4 brcc .+20 ; 0xcc2 <__addsf3x+0x4e> + cae: 50 3e cpi r21, 0xE0 ; 224 + cb0: 68 f1 brcs .+90 ; 0xd0c <__addsf3x+0x98> + cb2: 1a 16 cp r1, r26 + cb4: f0 40 sbci r31, 0x00 ; 0 + cb6: a2 2f mov r26, r18 + cb8: 23 2f mov r18, r19 + cba: 34 2f mov r19, r20 + cbc: 44 27 eor r20, r20 + cbe: 58 5f subi r21, 0xF8 ; 248 + cc0: f3 cf rjmp .-26 ; 0xca8 <__addsf3x+0x34> + cc2: 46 95 lsr r20 + cc4: 37 95 ror r19 + cc6: 27 95 ror r18 + cc8: a7 95 ror r26 + cca: f0 40 sbci r31, 0x00 ; 0 + ccc: 53 95 inc r21 + cce: c9 f7 brne .-14 ; 0xcc2 <__addsf3x+0x4e> + cd0: 7e f4 brtc .+30 ; 0xcf0 <__addsf3x+0x7c> + cd2: 1f 16 cp r1, r31 + cd4: ba 0b sbc r27, r26 + cd6: 62 0b sbc r22, r18 + cd8: 73 0b sbc r23, r19 + cda: 84 0b sbc r24, r20 + cdc: ba f0 brmi .+46 ; 0xd0c <__addsf3x+0x98> + cde: 91 50 subi r25, 0x01 ; 1 + ce0: a1 f0 breq .+40 ; 0xd0a <__addsf3x+0x96> + ce2: ff 0f add r31, r31 + ce4: bb 1f adc r27, r27 + ce6: 66 1f adc r22, r22 + ce8: 77 1f adc r23, r23 + cea: 88 1f adc r24, r24 + cec: c2 f7 brpl .-16 ; 0xcde <__addsf3x+0x6a> + cee: 0e c0 rjmp .+28 ; 0xd0c <__addsf3x+0x98> + cf0: ba 0f add r27, r26 + cf2: 62 1f adc r22, r18 + cf4: 73 1f adc r23, r19 + cf6: 84 1f adc r24, r20 + cf8: 48 f4 brcc .+18 ; 0xd0c <__addsf3x+0x98> + cfa: 87 95 ror r24 + cfc: 77 95 ror r23 + cfe: 67 95 ror r22 + d00: b7 95 ror r27 + d02: f7 95 ror r31 + d04: 9e 3f cpi r25, 0xFE ; 254 + d06: 08 f0 brcs .+2 ; 0xd0a <__addsf3x+0x96> + d08: b3 cf rjmp .-154 ; 0xc70 <__addsf3+0x1e> + d0a: 93 95 inc r25 + d0c: 88 0f add r24, r24 + d0e: 08 f0 brcs .+2 ; 0xd12 <__addsf3x+0x9e> + d10: 99 27 eor r25, r25 + d12: ee 0f add r30, r30 + d14: 97 95 ror r25 + d16: 87 95 ror r24 + d18: 08 95 ret -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 +00000d1a <__cmpsf2>: + d1a: d4 d0 rcall .+424 ; 0xec4 <__fp_cmp> + d1c: 08 f4 brcc .+2 ; 0xd20 <__cmpsf2+0x6> + d1e: 81 e0 ldi r24, 0x01 ; 1 + d20: 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 +00000d22 <__divsf3>: + d22: 0c d0 rcall .+24 ; 0xd3c <__divsf3x> + d24: 0a c1 rjmp .+532 ; 0xf3a <__fp_round> + d26: 02 d1 rcall .+516 ; 0xf2c <__fp_pscB> + d28: 40 f0 brcs .+16 ; 0xd3a <__divsf3+0x18> + d2a: f9 d0 rcall .+498 ; 0xf1e <__fp_pscA> + d2c: 30 f0 brcs .+12 ; 0xd3a <__divsf3+0x18> + d2e: 21 f4 brne .+8 ; 0xd38 <__divsf3+0x16> + d30: 5f 3f cpi r21, 0xFF ; 255 + d32: 19 f0 breq .+6 ; 0xd3a <__divsf3+0x18> + d34: eb c0 rjmp .+470 ; 0xf0c <__fp_inf> + d36: 51 11 cpse r21, r1 + d38: 34 c1 rjmp .+616 ; 0xfa2 <__fp_szero> + d3a: ee c0 rjmp .+476 ; 0xf18 <__fp_nan> -00000cbe <__floatunsisf>: - cbe: e8 94 clt - cc0: 09 c0 rjmp .+18 ; 0xcd4 <__floatsisf+0x12> +00000d3c <__divsf3x>: + d3c: 0f d1 rcall .+542 ; 0xf5c <__fp_split3> + d3e: 98 f3 brcs .-26 ; 0xd26 <__divsf3+0x4> -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 +00000d40 <__divsf3_pse>: + d40: 99 23 and r25, r25 + d42: c9 f3 breq .-14 ; 0xd36 <__divsf3+0x14> + d44: 55 23 and r21, r21 + d46: b1 f3 breq .-20 ; 0xd34 <__divsf3+0x12> + d48: 95 1b sub r25, r21 + d4a: 55 0b sbc r21, r21 + d4c: bb 27 eor r27, r27 + d4e: aa 27 eor r26, r26 + d50: 62 17 cp r22, r18 + d52: 73 07 cpc r23, r19 + d54: 84 07 cpc r24, r20 + d56: 38 f0 brcs .+14 ; 0xd66 <__divsf3_pse+0x26> + d58: 9f 5f subi r25, 0xFF ; 255 + d5a: 5f 4f sbci r21, 0xFF ; 255 + d5c: 22 0f add r18, r18 + d5e: 33 1f adc r19, r19 + d60: 44 1f adc r20, r20 + d62: aa 1f adc r26, r26 + d64: a9 f3 breq .-22 ; 0xd50 <__divsf3_pse+0x10> + d66: 33 d0 rcall .+102 ; 0xdce <__divsf3_pse+0x8e> + d68: 0e 2e mov r0, r30 + d6a: 3a f0 brmi .+14 ; 0xd7a <__divsf3_pse+0x3a> + d6c: e0 e8 ldi r30, 0x80 ; 128 + d6e: 30 d0 rcall .+96 ; 0xdd0 <__divsf3_pse+0x90> + d70: 91 50 subi r25, 0x01 ; 1 + d72: 50 40 sbci r21, 0x00 ; 0 + d74: e6 95 lsr r30 + d76: 00 1c adc r0, r0 + d78: ca f7 brpl .-14 ; 0xd6c <__divsf3_pse+0x2c> + d7a: 29 d0 rcall .+82 ; 0xdce <__divsf3_pse+0x8e> + d7c: fe 2f mov r31, r30 + d7e: 27 d0 rcall .+78 ; 0xdce <__divsf3_pse+0x8e> + d80: 66 0f add r22, r22 + d82: 77 1f adc r23, r23 + d84: 88 1f adc r24, r24 + d86: bb 1f adc r27, r27 + d88: 26 17 cp r18, r22 + d8a: 37 07 cpc r19, r23 + d8c: 48 07 cpc r20, r24 + d8e: ab 07 cpc r26, r27 + d90: b0 e8 ldi r27, 0x80 ; 128 + d92: 09 f0 breq .+2 ; 0xd96 <__divsf3_pse+0x56> + d94: bb 0b sbc r27, r27 + d96: 80 2d mov r24, r0 + d98: bf 01 movw r22, r30 + d9a: ff 27 eor r31, r31 + d9c: 93 58 subi r25, 0x83 ; 131 + d9e: 5f 4f sbci r21, 0xFF ; 255 + da0: 2a f0 brmi .+10 ; 0xdac <__divsf3_pse+0x6c> + da2: 9e 3f cpi r25, 0xFE ; 254 + da4: 51 05 cpc r21, r1 + da6: 68 f0 brcs .+26 ; 0xdc2 <__divsf3_pse+0x82> + da8: b1 c0 rjmp .+354 ; 0xf0c <__fp_inf> + daa: fb c0 rjmp .+502 ; 0xfa2 <__fp_szero> + dac: 5f 3f cpi r21, 0xFF ; 255 + dae: ec f3 brlt .-6 ; 0xdaa <__divsf3_pse+0x6a> + db0: 98 3e cpi r25, 0xE8 ; 232 + db2: dc f3 brlt .-10 ; 0xdaa <__divsf3_pse+0x6a> + db4: 86 95 lsr r24 + db6: 77 95 ror r23 + db8: 67 95 ror r22 + dba: b7 95 ror r27 + dbc: f7 95 ror r31 + dbe: 9f 5f subi r25, 0xFF ; 255 + dc0: c9 f7 brne .-14 ; 0xdb4 <__divsf3_pse+0x74> + dc2: 88 0f add r24, r24 + dc4: 91 1d adc r25, r1 + dc6: 96 95 lsr r25 + dc8: 87 95 ror r24 + dca: 97 f9 bld r25, 7 + dcc: 08 95 ret + dce: e1 e0 ldi r30, 0x01 ; 1 + dd0: 66 0f add r22, r22 + dd2: 77 1f adc r23, r23 + dd4: 88 1f adc r24, r24 + dd6: bb 1f adc r27, r27 + dd8: 62 17 cp r22, r18 + dda: 73 07 cpc r23, r19 + ddc: 84 07 cpc r24, r20 + dde: ba 07 cpc r27, r26 + de0: 20 f0 brcs .+8 ; 0xdea <__divsf3_pse+0xaa> + de2: 62 1b sub r22, r18 + de4: 73 0b sbc r23, r19 + de6: 84 0b sbc r24, r20 + de8: ba 0b sbc r27, r26 + dea: ee 1f adc r30, r30 + dec: 88 f7 brcc .-30 ; 0xdd0 <__divsf3_pse+0x90> + dee: e0 95 com r30 + df0: 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 +00000df2 <__fixunssfsi>: + df2: bc d0 rcall .+376 ; 0xf6c <__fp_splitA> + df4: 88 f0 brcs .+34 ; 0xe18 <__fixunssfsi+0x26> + df6: 9f 57 subi r25, 0x7F ; 127 + df8: 90 f0 brcs .+36 ; 0xe1e <__fixunssfsi+0x2c> + dfa: b9 2f mov r27, r25 + dfc: 99 27 eor r25, r25 + dfe: b7 51 subi r27, 0x17 ; 23 + e00: a0 f0 brcs .+40 ; 0xe2a <__fixunssfsi+0x38> + e02: d1 f0 breq .+52 ; 0xe38 <__fixunssfsi+0x46> + e04: 66 0f add r22, r22 + e06: 77 1f adc r23, r23 + e08: 88 1f adc r24, r24 + e0a: 99 1f adc r25, r25 + e0c: 1a f0 brmi .+6 ; 0xe14 <__fixunssfsi+0x22> + e0e: ba 95 dec r27 + e10: c9 f7 brne .-14 ; 0xe04 <__fixunssfsi+0x12> + e12: 12 c0 rjmp .+36 ; 0xe38 <__fixunssfsi+0x46> + e14: b1 30 cpi r27, 0x01 ; 1 + e16: 81 f0 breq .+32 ; 0xe38 <__fixunssfsi+0x46> + e18: c3 d0 rcall .+390 ; 0xfa0 <__fp_zero> + e1a: b1 e0 ldi r27, 0x01 ; 1 + e1c: 08 95 ret + e1e: c0 c0 rjmp .+384 ; 0xfa0 <__fp_zero> + e20: 67 2f mov r22, r23 + e22: 78 2f mov r23, r24 + e24: 88 27 eor r24, r24 + e26: b8 5f subi r27, 0xF8 ; 248 + e28: 39 f0 breq .+14 ; 0xe38 <__fixunssfsi+0x46> + e2a: b9 3f cpi r27, 0xF9 ; 249 + e2c: cc f3 brlt .-14 ; 0xe20 <__fixunssfsi+0x2e> + e2e: 86 95 lsr r24 + e30: 77 95 ror r23 + e32: 67 95 ror r22 + e34: b3 95 inc r27 + e36: d9 f7 brne .-10 ; 0xe2e <__fixunssfsi+0x3c> + e38: 3e f4 brtc .+14 ; 0xe48 <__fixunssfsi+0x56> + e3a: 90 95 com r25 + e3c: 80 95 com r24 + e3e: 70 95 com r23 + e40: 61 95 neg r22 + e42: 7f 4f sbci r23, 0xFF ; 255 + e44: 8f 4f sbci r24, 0xFF ; 255 + e46: 9f 4f sbci r25, 0xFF ; 255 + e48: 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 +00000e4a <__floatunsisf>: + e4a: e8 94 clt + e4c: 09 c0 rjmp .+18 ; 0xe60 <__floatsisf+0x12> -00000d8c <__fp_nan>: - d8c: 9f ef ldi r25, 0xFF ; 255 - d8e: 80 ec ldi r24, 0xC0 ; 192 - d90: 08 95 ret +00000e4e <__floatsisf>: + e4e: 97 fb bst r25, 7 + e50: 3e f4 brtc .+14 ; 0xe60 <__floatsisf+0x12> + e52: 90 95 com r25 + e54: 80 95 com r24 + e56: 70 95 com r23 + e58: 61 95 neg r22 + e5a: 7f 4f sbci r23, 0xFF ; 255 + e5c: 8f 4f sbci r24, 0xFF ; 255 + e5e: 9f 4f sbci r25, 0xFF ; 255 + e60: 99 23 and r25, r25 + e62: a9 f0 breq .+42 ; 0xe8e <__floatsisf+0x40> + e64: f9 2f mov r31, r25 + e66: 96 e9 ldi r25, 0x96 ; 150 + e68: bb 27 eor r27, r27 + e6a: 93 95 inc r25 + e6c: f6 95 lsr r31 + e6e: 87 95 ror r24 + e70: 77 95 ror r23 + e72: 67 95 ror r22 + e74: b7 95 ror r27 + e76: f1 11 cpse r31, r1 + e78: f8 cf rjmp .-16 ; 0xe6a <__floatsisf+0x1c> + e7a: fa f4 brpl .+62 ; 0xeba <__floatsisf+0x6c> + e7c: bb 0f add r27, r27 + e7e: 11 f4 brne .+4 ; 0xe84 <__floatsisf+0x36> + e80: 60 ff sbrs r22, 0 + e82: 1b c0 rjmp .+54 ; 0xeba <__floatsisf+0x6c> + e84: 6f 5f subi r22, 0xFF ; 255 + e86: 7f 4f sbci r23, 0xFF ; 255 + e88: 8f 4f sbci r24, 0xFF ; 255 + e8a: 9f 4f sbci r25, 0xFF ; 255 + e8c: 16 c0 rjmp .+44 ; 0xeba <__floatsisf+0x6c> + e8e: 88 23 and r24, r24 + e90: 11 f0 breq .+4 ; 0xe96 <__floatsisf+0x48> + e92: 96 e9 ldi r25, 0x96 ; 150 + e94: 11 c0 rjmp .+34 ; 0xeb8 <__floatsisf+0x6a> + e96: 77 23 and r23, r23 + e98: 21 f0 breq .+8 ; 0xea2 <__floatsisf+0x54> + e9a: 9e e8 ldi r25, 0x8E ; 142 + e9c: 87 2f mov r24, r23 + e9e: 76 2f mov r23, r22 + ea0: 05 c0 rjmp .+10 ; 0xeac <__floatsisf+0x5e> + ea2: 66 23 and r22, r22 + ea4: 71 f0 breq .+28 ; 0xec2 <__floatsisf+0x74> + ea6: 96 e8 ldi r25, 0x86 ; 134 + ea8: 86 2f mov r24, r22 + eaa: 70 e0 ldi r23, 0x00 ; 0 + eac: 60 e0 ldi r22, 0x00 ; 0 + eae: 2a f0 brmi .+10 ; 0xeba <__floatsisf+0x6c> + eb0: 9a 95 dec r25 + eb2: 66 0f add r22, r22 + eb4: 77 1f adc r23, r23 + eb6: 88 1f adc r24, r24 + eb8: da f7 brpl .-10 ; 0xeb0 <__floatsisf+0x62> + eba: 88 0f add r24, r24 + ebc: 96 95 lsr r25 + ebe: 87 95 ror r24 + ec0: 97 f9 bld r25, 7 + ec2: 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 +00000ec4 <__fp_cmp>: + ec4: 99 0f add r25, r25 + ec6: 00 08 sbc r0, r0 + ec8: 55 0f add r21, r21 + eca: aa 0b sbc r26, r26 + ecc: e0 e8 ldi r30, 0x80 ; 128 + ece: fe ef ldi r31, 0xFE ; 254 + ed0: 16 16 cp r1, r22 + ed2: 17 06 cpc r1, r23 + ed4: e8 07 cpc r30, r24 + ed6: f9 07 cpc r31, r25 + ed8: c0 f0 brcs .+48 ; 0xf0a <__fp_cmp+0x46> + eda: 12 16 cp r1, r18 + edc: 13 06 cpc r1, r19 + ede: e4 07 cpc r30, r20 + ee0: f5 07 cpc r31, r21 + ee2: 98 f0 brcs .+38 ; 0xf0a <__fp_cmp+0x46> + ee4: 62 1b sub r22, r18 + ee6: 73 0b sbc r23, r19 + ee8: 84 0b sbc r24, r20 + eea: 95 0b sbc r25, r21 + eec: 39 f4 brne .+14 ; 0xefc <__fp_cmp+0x38> + eee: 0a 26 eor r0, r26 + ef0: 61 f0 breq .+24 ; 0xf0a <__fp_cmp+0x46> + ef2: 23 2b or r18, r19 + ef4: 24 2b or r18, r20 + ef6: 25 2b or r18, r21 + ef8: 21 f4 brne .+8 ; 0xf02 <__fp_cmp+0x3e> + efa: 08 95 ret + efc: 0a 26 eor r0, r26 + efe: 09 f4 brne .+2 ; 0xf02 <__fp_cmp+0x3e> + f00: a1 40 sbci r26, 0x01 ; 1 + f02: a6 95 lsr r26 + f04: 8f ef ldi r24, 0xFF ; 255 + f06: 81 1d adc r24, r1 + f08: 81 1d adc r24, r1 + f0a: 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 +00000f0c <__fp_inf>: + f0c: 97 f9 bld r25, 7 + f0e: 9f 67 ori r25, 0x7F ; 127 + f10: 80 e8 ldi r24, 0x80 ; 128 + f12: 70 e0 ldi r23, 0x00 ; 0 + f14: 60 e0 ldi r22, 0x00 ; 0 f16: 08 95 ret -00000f18 <__tablejump2__>: - f18: ee 0f add r30, r30 - f1a: ff 1f adc r31, r31 +00000f18 <__fp_nan>: + f18: 9f ef ldi r25, 0xFF ; 255 + f1a: 80 ec ldi r24, 0xC0 ; 192 + f1c: 08 95 ret -00000f1c <__tablejump__>: - f1c: 05 90 lpm r0, Z+ - f1e: f4 91 lpm r31, Z - f20: e0 2d mov r30, r0 - f22: 09 94 ijmp +00000f1e <__fp_pscA>: + f1e: 00 24 eor r0, r0 + f20: 0a 94 dec r0 + f22: 16 16 cp r1, r22 + f24: 17 06 cpc r1, r23 + f26: 18 06 cpc r1, r24 + f28: 09 06 cpc r0, r25 + f2a: 08 95 ret -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 +00000f2c <__fp_pscB>: + f2c: 00 24 eor r0, r0 + f2e: 0a 94 dec r0 + f30: 12 16 cp r1, r18 + f32: 13 06 cpc r1, r19 + f34: 14 06 cpc r1, r20 + f36: 05 06 cpc r0, r21 + f38: 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 +00000f3a <__fp_round>: + f3a: 09 2e mov r0, r25 + f3c: 03 94 inc r0 + f3e: 00 0c add r0, r0 + f40: 11 f4 brne .+4 ; 0xf46 <__fp_round+0xc> + f42: 88 23 and r24, r24 + f44: 52 f0 brmi .+20 ; 0xf5a <__fp_round+0x20> + f46: bb 0f add r27, r27 + f48: 40 f4 brcc .+16 ; 0xf5a <__fp_round+0x20> + f4a: bf 2b or r27, r31 + f4c: 11 f4 brne .+4 ; 0xf52 <__fp_round+0x18> + f4e: 60 ff sbrs r22, 0 + f50: 04 c0 rjmp .+8 ; 0xf5a <__fp_round+0x20> + f52: 6f 5f subi r22, 0xFF ; 255 + f54: 7f 4f sbci r23, 0xFF ; 255 + f56: 8f 4f sbci r24, 0xFF ; 255 + f58: 9f 4f sbci r25, 0xFF ; 255 + f5a: 08 95 ret -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 +00000f5c <__fp_split3>: + f5c: 57 fd sbrc r21, 7 + f5e: 90 58 subi r25, 0x80 ; 128 + f60: 44 0f add r20, r20 + f62: 55 1f adc r21, r21 + f64: 59 f0 breq .+22 ; 0xf7c <__fp_splitA+0x10> + f66: 5f 3f cpi r21, 0xFF ; 255 + f68: 71 f0 breq .+28 ; 0xf86 <__fp_splitA+0x1a> + f6a: 47 95 ror r20 -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 +00000f6c <__fp_splitA>: + f6c: 88 0f add r24, r24 + f6e: 97 fb bst r25, 7 + f70: 99 1f adc r25, r25 + f72: 61 f0 breq .+24 ; 0xf8c <__fp_splitA+0x20> + f74: 9f 3f cpi r25, 0xFF ; 255 + f76: 79 f0 breq .+30 ; 0xf96 <__fp_splitA+0x2a> + f78: 87 95 ror r24 + f7a: 08 95 ret + f7c: 12 16 cp r1, r18 + f7e: 13 06 cpc r1, r19 + f80: 14 06 cpc r1, r20 + f82: 55 1f adc r21, r21 + f84: f2 cf rjmp .-28 ; 0xf6a <__fp_split3+0xe> + f86: 46 95 lsr r20 + f88: f1 df rcall .-30 ; 0xf6c <__fp_splitA> + f8a: 08 c0 rjmp .+16 ; 0xf9c <__fp_splitA+0x30> + f8c: 16 16 cp r1, r22 + f8e: 17 06 cpc r1, r23 + f90: 18 06 cpc r1, r24 + f92: 99 1f adc r25, r25 + f94: f1 cf rjmp .-30 ; 0xf78 <__fp_splitA+0xc> + f96: 86 95 lsr r24 + f98: 71 05 cpc r23, r1 + f9a: 61 05 cpc r22, r1 + f9c: 08 94 sec + f9e: 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 +00000fa0 <__fp_zero>: + fa0: e8 94 clt -0000145c <_exit>: - 145c: f8 94 cli +00000fa2 <__fp_szero>: + fa2: bb 27 eor r27, r27 + fa4: 66 27 eor r22, r22 + fa6: 77 27 eor r23, r23 + fa8: cb 01 movw r24, r22 + faa: 97 f9 bld r25, 7 + fac: 08 95 ret -0000145e <__stop_program>: - 145e: ff cf rjmp .-2 ; 0x145e <__stop_program> +00000fae <__gesf2>: + fae: 8a df rcall .-236 ; 0xec4 <__fp_cmp> + fb0: 08 f4 brcc .+2 ; 0xfb4 <__gesf2+0x6> + fb2: 8f ef ldi r24, 0xFF ; 255 + fb4: 08 95 ret + +00000fb6 <__mulsf3>: + fb6: 0b d0 rcall .+22 ; 0xfce <__mulsf3x> + fb8: c0 cf rjmp .-128 ; 0xf3a <__fp_round> + fba: b1 df rcall .-158 ; 0xf1e <__fp_pscA> + fbc: 28 f0 brcs .+10 ; 0xfc8 <__mulsf3+0x12> + fbe: b6 df rcall .-148 ; 0xf2c <__fp_pscB> + fc0: 18 f0 brcs .+6 ; 0xfc8 <__mulsf3+0x12> + fc2: 95 23 and r25, r21 + fc4: 09 f0 breq .+2 ; 0xfc8 <__mulsf3+0x12> + fc6: a2 cf rjmp .-188 ; 0xf0c <__fp_inf> + fc8: a7 cf rjmp .-178 ; 0xf18 <__fp_nan> + fca: 11 24 eor r1, r1 + fcc: ea cf rjmp .-44 ; 0xfa2 <__fp_szero> + +00000fce <__mulsf3x>: + fce: c6 df rcall .-116 ; 0xf5c <__fp_split3> + fd0: a0 f3 brcs .-24 ; 0xfba <__mulsf3+0x4> + +00000fd2 <__mulsf3_pse>: + fd2: 95 9f mul r25, r21 + fd4: d1 f3 breq .-12 ; 0xfca <__mulsf3+0x14> + fd6: 95 0f add r25, r21 + fd8: 50 e0 ldi r21, 0x00 ; 0 + fda: 55 1f adc r21, r21 + fdc: 62 9f mul r22, r18 + fde: f0 01 movw r30, r0 + fe0: 72 9f mul r23, r18 + fe2: bb 27 eor r27, r27 + fe4: f0 0d add r31, r0 + fe6: b1 1d adc r27, r1 + fe8: 63 9f mul r22, r19 + fea: aa 27 eor r26, r26 + fec: f0 0d add r31, r0 + fee: b1 1d adc r27, r1 + ff0: aa 1f adc r26, r26 + ff2: 64 9f mul r22, r20 + ff4: 66 27 eor r22, r22 + ff6: b0 0d add r27, r0 + ff8: a1 1d adc r26, r1 + ffa: 66 1f adc r22, r22 + ffc: 82 9f mul r24, r18 + ffe: 22 27 eor r18, r18 + 1000: b0 0d add r27, r0 + 1002: a1 1d adc r26, r1 + 1004: 62 1f adc r22, r18 + 1006: 73 9f mul r23, r19 + 1008: b0 0d add r27, r0 + 100a: a1 1d adc r26, r1 + 100c: 62 1f adc r22, r18 + 100e: 83 9f mul r24, r19 + 1010: a0 0d add r26, r0 + 1012: 61 1d adc r22, r1 + 1014: 22 1f adc r18, r18 + 1016: 74 9f mul r23, r20 + 1018: 33 27 eor r19, r19 + 101a: a0 0d add r26, r0 + 101c: 61 1d adc r22, r1 + 101e: 23 1f adc r18, r19 + 1020: 84 9f mul r24, r20 + 1022: 60 0d add r22, r0 + 1024: 21 1d adc r18, r1 + 1026: 82 2f mov r24, r18 + 1028: 76 2f mov r23, r22 + 102a: 6a 2f mov r22, r26 + 102c: 11 24 eor r1, r1 + 102e: 9f 57 subi r25, 0x7F ; 127 + 1030: 50 40 sbci r21, 0x00 ; 0 + 1032: 8a f0 brmi .+34 ; 0x1056 <__mulsf3_pse+0x84> + 1034: e1 f0 breq .+56 ; 0x106e <__mulsf3_pse+0x9c> + 1036: 88 23 and r24, r24 + 1038: 4a f0 brmi .+18 ; 0x104c <__mulsf3_pse+0x7a> + 103a: ee 0f add r30, r30 + 103c: ff 1f adc r31, r31 + 103e: bb 1f adc r27, r27 + 1040: 66 1f adc r22, r22 + 1042: 77 1f adc r23, r23 + 1044: 88 1f adc r24, r24 + 1046: 91 50 subi r25, 0x01 ; 1 + 1048: 50 40 sbci r21, 0x00 ; 0 + 104a: a9 f7 brne .-22 ; 0x1036 <__mulsf3_pse+0x64> + 104c: 9e 3f cpi r25, 0xFE ; 254 + 104e: 51 05 cpc r21, r1 + 1050: 70 f0 brcs .+28 ; 0x106e <__mulsf3_pse+0x9c> + 1052: 5c cf rjmp .-328 ; 0xf0c <__fp_inf> + 1054: a6 cf rjmp .-180 ; 0xfa2 <__fp_szero> + 1056: 5f 3f cpi r21, 0xFF ; 255 + 1058: ec f3 brlt .-6 ; 0x1054 <__mulsf3_pse+0x82> + 105a: 98 3e cpi r25, 0xE8 ; 232 + 105c: dc f3 brlt .-10 ; 0x1054 <__mulsf3_pse+0x82> + 105e: 86 95 lsr r24 + 1060: 77 95 ror r23 + 1062: 67 95 ror r22 + 1064: b7 95 ror r27 + 1066: f7 95 ror r31 + 1068: e7 95 ror r30 + 106a: 9f 5f subi r25, 0xFF ; 255 + 106c: c1 f7 brne .-16 ; 0x105e <__mulsf3_pse+0x8c> + 106e: fe 2b or r31, r30 + 1070: 88 0f add r24, r24 + 1072: 91 1d adc r25, r1 + 1074: 96 95 lsr r25 + 1076: 87 95 ror r24 + 1078: 97 f9 bld r25, 7 + 107a: 08 95 ret + +0000107c <__tablejump2__>: + 107c: ee 0f add r30, r30 + 107e: ff 1f adc r31, r31 + +00001080 <__tablejump__>: + 1080: 05 90 lpm r0, Z+ + 1082: f4 91 lpm r31, Z + 1084: e0 2d mov r30, r0 + 1086: 09 94 ijmp + +00001088 : + 1088: ef 92 push r14 + 108a: 0f 93 push r16 + 108c: 1f 93 push r17 + 108e: cf 93 push r28 + 1090: c0 2f mov r28, r16 + 1092: 47 ff sbrs r20, 7 + 1094: 02 c0 rjmp .+4 ; 0x109a + 1096: 34 e1 ldi r19, 0x14 ; 20 + 1098: 01 c0 rjmp .+2 ; 0x109c + 109a: 34 e0 ldi r19, 0x04 ; 4 + 109c: e4 2f mov r30, r20 + 109e: ff 27 eor r31, r31 + 10a0: e7 fd sbrc r30, 7 + 10a2: f0 95 com r31 + 10a4: f7 ff sbrs r31, 7 + 10a6: 03 c0 rjmp .+6 ; 0x10ae + 10a8: f1 95 neg r31 + 10aa: e1 95 neg r30 + 10ac: f1 09 sbc r31, r1 + 10ae: e3 2e mov r14, r19 + 10b0: 02 2f mov r16, r18 + 10b2: 2e 2f mov r18, r30 + 10b4: 4c 2f mov r20, r28 + 10b6: 51 2f mov r21, r17 + 10b8: 0e 94 7b 08 call 0x10f6 ; 0x10f6 + 10bc: 8c 2f mov r24, r28 + 10be: 91 2f mov r25, r17 + 10c0: cf 91 pop r28 + 10c2: 1f 91 pop r17 + 10c4: 0f 91 pop r16 + 10c6: ef 90 pop r14 + 10c8: 08 95 ret + +000010ca : + 10ca: fb 01 movw r30, r22 + 10cc: 9f 01 movw r18, r30 + 10ce: 42 30 cpi r20, 0x02 ; 2 + 10d0: 74 f0 brlt .+28 ; 0x10ee + 10d2: 45 32 cpi r20, 0x25 ; 37 + 10d4: 64 f4 brge .+24 ; 0x10ee + 10d6: 64 2f mov r22, r20 + 10d8: 77 27 eor r23, r23 + 10da: 0e 94 e0 0a call 0x15c0 ; 0x15c0 <__udivmodhi4> + 10de: 80 5d subi r24, 0xD0 ; 208 + 10e0: 8a 33 cpi r24, 0x3A ; 58 + 10e2: 0c f0 brlt .+2 ; 0x10e6 + 10e4: 89 5d subi r24, 0xD9 ; 217 + 10e6: 81 93 st Z+, r24 + 10e8: cb 01 movw r24, r22 + 10ea: 00 97 sbiw r24, 0x00 ; 0 + 10ec: a1 f7 brne .-24 ; 0x10d6 + 10ee: 10 82 st Z, r1 + 10f0: c9 01 movw r24, r18 + 10f2: 0c 94 d0 0a jmp 0x15a0 ; 0x15a0 + +000010f6 : + 10f6: 6f 92 push r6 + 10f8: 7f 92 push r7 + 10fa: 9f 92 push r9 + 10fc: af 92 push r10 + 10fe: bf 92 push r11 + 1100: cf 92 push r12 + 1102: df 92 push r13 + 1104: ef 92 push r14 + 1106: ff 92 push r15 + 1108: 0f 93 push r16 + 110a: 1f 93 push r17 + 110c: cf 93 push r28 + 110e: df 93 push r29 + 1110: cd b7 in r28, 0x3d ; 61 + 1112: de b7 in r29, 0x3e ; 62 + 1114: 29 97 sbiw r28, 0x09 ; 9 + 1116: 0f b6 in r0, 0x3f ; 63 + 1118: f8 94 cli + 111a: de bf out 0x3e, r29 ; 62 + 111c: 0f be out 0x3f, r0 ; 63 + 111e: cd bf out 0x3d, r28 ; 61 + 1120: 6a 01 movw r12, r20 + 1122: b2 2e mov r11, r18 + 1124: 10 2f mov r17, r16 + 1126: 0c 33 cpi r16, 0x3C ; 60 + 1128: 18 f4 brcc .+6 ; 0x1130 + 112a: f0 2e mov r15, r16 + 112c: f3 94 inc r15 + 112e: 02 c0 rjmp .+4 ; 0x1134 + 1130: 5c e3 ldi r21, 0x3C ; 60 + 1132: f5 2e mov r15, r21 + 1134: 0f 2d mov r16, r15 + 1136: 27 e0 ldi r18, 0x07 ; 7 + 1138: ae 01 movw r20, r28 + 113a: 4f 5f subi r20, 0xFF ; 255 + 113c: 5f 4f sbci r21, 0xFF ; 255 + 113e: 0e 94 f8 09 call 0x13f0 ; 0x13f0 <__ftoa_engine> + 1142: 79 81 ldd r23, Y+1 ; 0x01 + 1144: 27 2f mov r18, r23 + 1146: 29 70 andi r18, 0x09 ; 9 + 1148: 21 30 cpi r18, 0x01 ; 1 + 114a: 31 f0 breq .+12 ; 0x1158 + 114c: e1 fc sbrc r14, 1 + 114e: 06 c0 rjmp .+12 ; 0x115c + 1150: e0 fe sbrs r14, 0 + 1152: 06 c0 rjmp .+12 ; 0x1160 + 1154: 60 e2 ldi r22, 0x20 ; 32 + 1156: 05 c0 rjmp .+10 ; 0x1162 + 1158: 6d e2 ldi r22, 0x2D ; 45 + 115a: 03 c0 rjmp .+6 ; 0x1162 + 115c: 6b e2 ldi r22, 0x2B ; 43 + 115e: 01 c0 rjmp .+2 ; 0x1162 + 1160: 60 e0 ldi r22, 0x00 ; 0 + 1162: 73 ff sbrs r23, 3 + 1164: 3d c0 rjmp .+122 ; 0x11e0 + 1166: 66 23 and r22, r22 + 1168: 11 f0 breq .+4 ; 0x116e + 116a: 84 e0 ldi r24, 0x04 ; 4 + 116c: 01 c0 rjmp .+2 ; 0x1170 + 116e: 83 e0 ldi r24, 0x03 ; 3 + 1170: 8b 15 cp r24, r11 + 1172: 10 f4 brcc .+4 ; 0x1178 + 1174: b8 1a sub r11, r24 + 1176: 01 c0 rjmp .+2 ; 0x117a + 1178: b1 2c mov r11, r1 + 117a: e4 fc sbrc r14, 4 + 117c: 0b c0 rjmp .+22 ; 0x1194 + 117e: 8b 2d mov r24, r11 + 1180: f6 01 movw r30, r12 + 1182: 90 e2 ldi r25, 0x20 ; 32 + 1184: 02 c0 rjmp .+4 ; 0x118a + 1186: 91 93 st Z+, r25 + 1188: 81 50 subi r24, 0x01 ; 1 + 118a: 81 11 cpse r24, r1 + 118c: fc cf rjmp .-8 ; 0x1186 + 118e: cb 0c add r12, r11 + 1190: d1 1c adc r13, r1 + 1192: b1 2c mov r11, r1 + 1194: 66 23 and r22, r22 + 1196: 19 f0 breq .+6 ; 0x119e + 1198: d6 01 movw r26, r12 + 119a: 6d 93 st X+, r22 + 119c: 6d 01 movw r12, r26 + 119e: e2 fe sbrs r14, 2 + 11a0: 0a c0 rjmp .+20 ; 0x11b6 + 11a2: 8e e4 ldi r24, 0x4E ; 78 + 11a4: f6 01 movw r30, r12 + 11a6: 80 83 st Z, r24 + 11a8: 91 e4 ldi r25, 0x41 ; 65 + 11aa: 91 83 std Z+1, r25 ; 0x01 + 11ac: 82 83 std Z+2, r24 ; 0x02 + 11ae: f3 e0 ldi r31, 0x03 ; 3 + 11b0: cf 0e add r12, r31 + 11b2: d1 1c adc r13, r1 + 11b4: 0c c0 rjmp .+24 ; 0x11ce + 11b6: 8e e6 ldi r24, 0x6E ; 110 + 11b8: d6 01 movw r26, r12 + 11ba: 8c 93 st X, r24 + 11bc: 91 e6 ldi r25, 0x61 ; 97 + 11be: 11 96 adiw r26, 0x01 ; 1 + 11c0: 9c 93 st X, r25 + 11c2: 11 97 sbiw r26, 0x01 ; 1 + 11c4: 12 96 adiw r26, 0x02 ; 2 + 11c6: 8c 93 st X, r24 + 11c8: b3 e0 ldi r27, 0x03 ; 3 + 11ca: cb 0e add r12, r27 + 11cc: d1 1c adc r13, r1 + 11ce: 8b 2d mov r24, r11 + 11d0: f6 01 movw r30, r12 + 11d2: 90 e2 ldi r25, 0x20 ; 32 + 11d4: 02 c0 rjmp .+4 ; 0x11da + 11d6: 91 93 st Z+, r25 + 11d8: 81 50 subi r24, 0x01 ; 1 + 11da: 81 11 cpse r24, r1 + 11dc: fc cf rjmp .-8 ; 0x11d6 + 11de: 40 c0 rjmp .+128 ; 0x1260 + 11e0: 72 ff sbrs r23, 2 + 11e2: 45 c0 rjmp .+138 ; 0x126e + 11e4: 66 23 and r22, r22 + 11e6: 11 f0 breq .+4 ; 0x11ec + 11e8: 84 e0 ldi r24, 0x04 ; 4 + 11ea: 01 c0 rjmp .+2 ; 0x11ee + 11ec: 83 e0 ldi r24, 0x03 ; 3 + 11ee: 8b 15 cp r24, r11 + 11f0: 10 f4 brcc .+4 ; 0x11f6 + 11f2: b8 1a sub r11, r24 + 11f4: 01 c0 rjmp .+2 ; 0x11f8 + 11f6: b1 2c mov r11, r1 + 11f8: e4 fc sbrc r14, 4 + 11fa: 0b c0 rjmp .+22 ; 0x1212 + 11fc: 8b 2d mov r24, r11 + 11fe: f6 01 movw r30, r12 + 1200: 90 e2 ldi r25, 0x20 ; 32 + 1202: 02 c0 rjmp .+4 ; 0x1208 + 1204: 91 93 st Z+, r25 + 1206: 81 50 subi r24, 0x01 ; 1 + 1208: 81 11 cpse r24, r1 + 120a: fc cf rjmp .-8 ; 0x1204 + 120c: cb 0c add r12, r11 + 120e: d1 1c adc r13, r1 + 1210: b1 2c mov r11, r1 + 1212: 66 23 and r22, r22 + 1214: 19 f0 breq .+6 ; 0x121c + 1216: f6 01 movw r30, r12 + 1218: 61 93 st Z+, r22 + 121a: 6f 01 movw r12, r30 + 121c: e2 fe sbrs r14, 2 + 121e: 0e c0 rjmp .+28 ; 0x123c + 1220: 89 e4 ldi r24, 0x49 ; 73 + 1222: d6 01 movw r26, r12 + 1224: 8c 93 st X, r24 + 1226: 8e e4 ldi r24, 0x4E ; 78 + 1228: 11 96 adiw r26, 0x01 ; 1 + 122a: 8c 93 st X, r24 + 122c: 11 97 sbiw r26, 0x01 ; 1 + 122e: 86 e4 ldi r24, 0x46 ; 70 + 1230: 12 96 adiw r26, 0x02 ; 2 + 1232: 8c 93 st X, r24 + 1234: b3 e0 ldi r27, 0x03 ; 3 + 1236: cb 0e add r12, r27 + 1238: d1 1c adc r13, r1 + 123a: 0a c0 rjmp .+20 ; 0x1250 + 123c: 89 e6 ldi r24, 0x69 ; 105 + 123e: f6 01 movw r30, r12 + 1240: 80 83 st Z, r24 + 1242: 8e e6 ldi r24, 0x6E ; 110 + 1244: 81 83 std Z+1, r24 ; 0x01 + 1246: 86 e6 ldi r24, 0x66 ; 102 + 1248: 82 83 std Z+2, r24 ; 0x02 + 124a: f3 e0 ldi r31, 0x03 ; 3 + 124c: cf 0e add r12, r31 + 124e: d1 1c adc r13, r1 + 1250: 8b 2d mov r24, r11 + 1252: f6 01 movw r30, r12 + 1254: 90 e2 ldi r25, 0x20 ; 32 + 1256: 02 c0 rjmp .+4 ; 0x125c + 1258: 91 93 st Z+, r25 + 125a: 81 50 subi r24, 0x01 ; 1 + 125c: 81 11 cpse r24, r1 + 125e: fc cf rjmp .-8 ; 0x1258 + 1260: f6 01 movw r30, r12 + 1262: eb 0d add r30, r11 + 1264: f1 1d adc r31, r1 + 1266: 10 82 st Z, r1 + 1268: 2e ef ldi r18, 0xFE ; 254 + 126a: 3f ef ldi r19, 0xFF ; 255 + 126c: ac c0 rjmp .+344 ; 0x13c6 + 126e: a1 e0 ldi r26, 0x01 ; 1 + 1270: 61 11 cpse r22, r1 + 1272: 01 c0 rjmp .+2 ; 0x1276 + 1274: a0 e0 ldi r26, 0x00 ; 0 + 1276: 4a 2f mov r20, r26 + 1278: 50 e0 ldi r21, 0x00 ; 0 + 127a: 18 16 cp r1, r24 + 127c: 19 06 cpc r1, r25 + 127e: 24 f4 brge .+8 ; 0x1288 + 1280: 9c 01 movw r18, r24 + 1282: 2f 5f subi r18, 0xFF ; 255 + 1284: 3f 4f sbci r19, 0xFF ; 255 + 1286: 02 c0 rjmp .+4 ; 0x128c + 1288: 21 e0 ldi r18, 0x01 ; 1 + 128a: 30 e0 ldi r19, 0x00 ; 0 + 128c: 24 0f add r18, r20 + 128e: 35 1f adc r19, r21 + 1290: 11 23 and r17, r17 + 1292: 29 f0 breq .+10 ; 0x129e + 1294: 41 2f mov r20, r17 + 1296: 50 e0 ldi r21, 0x00 ; 0 + 1298: 4f 5f subi r20, 0xFF ; 255 + 129a: 5f 4f sbci r21, 0xFF ; 255 + 129c: 02 c0 rjmp .+4 ; 0x12a2 + 129e: 40 e0 ldi r20, 0x00 ; 0 + 12a0: 50 e0 ldi r21, 0x00 ; 0 + 12a2: 42 0f add r20, r18 + 12a4: 53 1f adc r21, r19 + 12a6: 2b 2d mov r18, r11 + 12a8: 30 e0 ldi r19, 0x00 ; 0 + 12aa: 42 17 cp r20, r18 + 12ac: 53 07 cpc r21, r19 + 12ae: 14 f4 brge .+4 ; 0x12b4 + 12b0: b4 1a sub r11, r20 + 12b2: 01 c0 rjmp .+2 ; 0x12b6 + 12b4: b1 2c mov r11, r1 + 12b6: 3e 2d mov r19, r14 + 12b8: 30 71 andi r19, 0x10 ; 16 + 12ba: e4 fc sbrc r14, 4 + 12bc: 0d c0 rjmp .+26 ; 0x12d8 + 12be: e3 fc sbrc r14, 3 + 12c0: 0b c0 rjmp .+22 ; 0x12d8 + 12c2: 2b 2d mov r18, r11 + 12c4: f6 01 movw r30, r12 + 12c6: 40 e2 ldi r20, 0x20 ; 32 + 12c8: 02 c0 rjmp .+4 ; 0x12ce + 12ca: 41 93 st Z+, r20 + 12cc: 21 50 subi r18, 0x01 ; 1 + 12ce: 21 11 cpse r18, r1 + 12d0: fc cf rjmp .-8 ; 0x12ca + 12d2: cb 0c add r12, r11 + 12d4: d1 1c adc r13, r1 + 12d6: b1 2c mov r11, r1 + 12d8: aa 23 and r26, r26 + 12da: 19 f0 breq .+6 ; 0x12e2 + 12dc: d6 01 movw r26, r12 + 12de: 6d 93 st X+, r22 + 12e0: 6d 01 movw r12, r26 + 12e2: 31 11 cpse r19, r1 + 12e4: 0b c0 rjmp .+22 ; 0x12fc + 12e6: 2b 2d mov r18, r11 + 12e8: f6 01 movw r30, r12 + 12ea: 30 e3 ldi r19, 0x30 ; 48 + 12ec: 02 c0 rjmp .+4 ; 0x12f2 + 12ee: 31 93 st Z+, r19 + 12f0: 21 50 subi r18, 0x01 ; 1 + 12f2: 21 11 cpse r18, r1 + 12f4: fc cf rjmp .-8 ; 0x12ee + 12f6: cb 0c add r12, r11 + 12f8: d1 1c adc r13, r1 + 12fa: b1 2c mov r11, r1 + 12fc: f8 0e add r15, r24 + 12fe: 0a 81 ldd r16, Y+2 ; 0x02 + 1300: 40 e1 ldi r20, 0x10 ; 16 + 1302: a4 2e mov r10, r20 + 1304: a7 22 and r10, r23 + 1306: 74 ff sbrs r23, 4 + 1308: 03 c0 rjmp .+6 ; 0x1310 + 130a: 01 33 cpi r16, 0x31 ; 49 + 130c: 09 f4 brne .+2 ; 0x1310 + 130e: fa 94 dec r15 + 1310: 1f 14 cp r1, r15 + 1312: 2c f4 brge .+10 ; 0x131e + 1314: 2f 2d mov r18, r15 + 1316: 29 30 cpi r18, 0x09 ; 9 + 1318: 18 f0 brcs .+6 ; 0x1320 + 131a: 28 e0 ldi r18, 0x08 ; 8 + 131c: 01 c0 rjmp .+2 ; 0x1320 + 131e: 21 e0 ldi r18, 0x01 ; 1 + 1320: ac 01 movw r20, r24 + 1322: 97 ff sbrs r25, 7 + 1324: 02 c0 rjmp .+4 ; 0x132a + 1326: 40 e0 ldi r20, 0x00 ; 0 + 1328: 50 e0 ldi r21, 0x00 ; 0 + 132a: 60 e0 ldi r22, 0x00 ; 0 + 132c: 70 e0 ldi r23, 0x00 ; 0 + 132e: 3e e2 ldi r19, 0x2E ; 46 + 1330: 93 2e mov r9, r19 + 1332: fc 01 movw r30, r24 + 1334: e2 1b sub r30, r18 + 1336: f1 09 sbc r31, r1 + 1338: 9f 01 movw r18, r30 + 133a: dc 01 movw r26, r24 + 133c: a4 1b sub r26, r20 + 133e: b5 0b sbc r27, r21 + 1340: fe 01 movw r30, r28 + 1342: 31 96 adiw r30, 0x01 ; 1 + 1344: ea 0f add r30, r26 + 1346: fb 1f adc r31, r27 + 1348: a1 2f mov r26, r17 + 134a: b0 e0 ldi r27, 0x00 ; 0 + 134c: 66 24 eor r6, r6 + 134e: 77 24 eor r7, r7 + 1350: 6a 1a sub r6, r26 + 1352: 7b 0a sbc r7, r27 + 1354: 4f 3f cpi r20, 0xFF ; 255 + 1356: 1f ef ldi r17, 0xFF ; 255 + 1358: 51 07 cpc r21, r17 + 135a: 19 f4 brne .+6 ; 0x1362 + 135c: d6 01 movw r26, r12 + 135e: 9d 92 st X+, r9 + 1360: 6d 01 movw r12, r26 + 1362: 84 17 cp r24, r20 + 1364: 95 07 cpc r25, r21 + 1366: 54 f0 brlt .+20 ; 0x137c + 1368: 24 17 cp r18, r20 + 136a: 35 07 cpc r19, r21 + 136c: 3c f4 brge .+14 ; 0x137c + 136e: 7f 01 movw r14, r30 + 1370: e6 0e add r14, r22 + 1372: f7 1e adc r15, r23 + 1374: d7 01 movw r26, r14 + 1376: 11 96 adiw r26, 0x01 ; 1 + 1378: 1c 91 ld r17, X + 137a: 01 c0 rjmp .+2 ; 0x137e + 137c: 10 e3 ldi r17, 0x30 ; 48 + 137e: 41 50 subi r20, 0x01 ; 1 + 1380: 51 09 sbc r21, r1 + 1382: 6f 5f subi r22, 0xFF ; 255 + 1384: 7f 4f sbci r23, 0xFF ; 255 + 1386: 46 15 cp r20, r6 + 1388: 57 05 cpc r21, r7 + 138a: 24 f0 brlt .+8 ; 0x1394 + 138c: d6 01 movw r26, r12 + 138e: 1d 93 st X+, r17 + 1390: 6d 01 movw r12, r26 + 1392: e0 cf rjmp .-64 ; 0x1354 + 1394: 48 17 cp r20, r24 + 1396: 59 07 cpc r21, r25 + 1398: 39 f4 brne .+14 ; 0x13a8 + 139a: 06 33 cpi r16, 0x36 ; 54 + 139c: 20 f4 brcc .+8 ; 0x13a6 + 139e: 05 33 cpi r16, 0x35 ; 53 + 13a0: 19 f4 brne .+6 ; 0x13a8 + 13a2: a1 10 cpse r10, r1 + 13a4: 01 c0 rjmp .+2 ; 0x13a8 + 13a6: 11 e3 ldi r17, 0x31 ; 49 + 13a8: f6 01 movw r30, r12 + 13aa: 11 93 st Z+, r17 + 13ac: 8b 2d mov r24, r11 + 13ae: df 01 movw r26, r30 + 13b0: 90 e2 ldi r25, 0x20 ; 32 + 13b2: 02 c0 rjmp .+4 ; 0x13b8 + 13b4: 9d 93 st X+, r25 + 13b6: 81 50 subi r24, 0x01 ; 1 + 13b8: 81 11 cpse r24, r1 + 13ba: fc cf rjmp .-8 ; 0x13b4 + 13bc: eb 0d add r30, r11 + 13be: f1 1d adc r31, r1 + 13c0: 10 82 st Z, r1 + 13c2: 20 e0 ldi r18, 0x00 ; 0 + 13c4: 30 e0 ldi r19, 0x00 ; 0 + 13c6: c9 01 movw r24, r18 + 13c8: 29 96 adiw r28, 0x09 ; 9 + 13ca: 0f b6 in r0, 0x3f ; 63 + 13cc: f8 94 cli + 13ce: de bf out 0x3e, r29 ; 62 + 13d0: 0f be out 0x3f, r0 ; 63 + 13d2: cd bf out 0x3d, r28 ; 61 + 13d4: df 91 pop r29 + 13d6: cf 91 pop r28 + 13d8: 1f 91 pop r17 + 13da: 0f 91 pop r16 + 13dc: ff 90 pop r15 + 13de: ef 90 pop r14 + 13e0: df 90 pop r13 + 13e2: cf 90 pop r12 + 13e4: bf 90 pop r11 + 13e6: af 90 pop r10 + 13e8: 9f 90 pop r9 + 13ea: 7f 90 pop r7 + 13ec: 6f 90 pop r6 + 13ee: 08 95 ret + +000013f0 <__ftoa_engine>: + 13f0: 28 30 cpi r18, 0x08 ; 8 + 13f2: 08 f0 brcs .+2 ; 0x13f6 <__ftoa_engine+0x6> + 13f4: 27 e0 ldi r18, 0x07 ; 7 + 13f6: 33 27 eor r19, r19 + 13f8: da 01 movw r26, r20 + 13fa: 99 0f add r25, r25 + 13fc: 31 1d adc r19, r1 + 13fe: 87 fd sbrc r24, 7 + 1400: 91 60 ori r25, 0x01 ; 1 + 1402: 00 96 adiw r24, 0x00 ; 0 + 1404: 61 05 cpc r22, r1 + 1406: 71 05 cpc r23, r1 + 1408: 39 f4 brne .+14 ; 0x1418 <__ftoa_engine+0x28> + 140a: 32 60 ori r19, 0x02 ; 2 + 140c: 2e 5f subi r18, 0xFE ; 254 + 140e: 3d 93 st X+, r19 + 1410: 30 e3 ldi r19, 0x30 ; 48 + 1412: 2a 95 dec r18 + 1414: e1 f7 brne .-8 ; 0x140e <__ftoa_engine+0x1e> + 1416: 08 95 ret + 1418: 9f 3f cpi r25, 0xFF ; 255 + 141a: 30 f0 brcs .+12 ; 0x1428 <__ftoa_engine+0x38> + 141c: 80 38 cpi r24, 0x80 ; 128 + 141e: 71 05 cpc r23, r1 + 1420: 61 05 cpc r22, r1 + 1422: 09 f0 breq .+2 ; 0x1426 <__ftoa_engine+0x36> + 1424: 3c 5f subi r19, 0xFC ; 252 + 1426: 3c 5f subi r19, 0xFC ; 252 + 1428: 3d 93 st X+, r19 + 142a: 91 30 cpi r25, 0x01 ; 1 + 142c: 08 f0 brcs .+2 ; 0x1430 <__ftoa_engine+0x40> + 142e: 80 68 ori r24, 0x80 ; 128 + 1430: 91 1d adc r25, r1 + 1432: df 93 push r29 + 1434: cf 93 push r28 + 1436: 1f 93 push r17 + 1438: 0f 93 push r16 + 143a: ff 92 push r15 + 143c: ef 92 push r14 + 143e: 19 2f mov r17, r25 + 1440: 98 7f andi r25, 0xF8 ; 248 + 1442: 96 95 lsr r25 + 1444: e9 2f mov r30, r25 + 1446: 96 95 lsr r25 + 1448: 96 95 lsr r25 + 144a: e9 0f add r30, r25 + 144c: ff 27 eor r31, r31 + 144e: e2 55 subi r30, 0x52 ; 82 + 1450: ff 4f sbci r31, 0xFF ; 255 + 1452: 99 27 eor r25, r25 + 1454: 33 27 eor r19, r19 + 1456: ee 24 eor r14, r14 + 1458: ff 24 eor r15, r15 + 145a: a7 01 movw r20, r14 + 145c: e7 01 movw r28, r14 + 145e: 05 90 lpm r0, Z+ + 1460: 08 94 sec + 1462: 07 94 ror r0 + 1464: 28 f4 brcc .+10 ; 0x1470 <__ftoa_engine+0x80> + 1466: 36 0f add r19, r22 + 1468: e7 1e adc r14, r23 + 146a: f8 1e adc r15, r24 + 146c: 49 1f adc r20, r25 + 146e: 51 1d adc r21, r1 + 1470: 66 0f add r22, r22 + 1472: 77 1f adc r23, r23 + 1474: 88 1f adc r24, r24 + 1476: 99 1f adc r25, r25 + 1478: 06 94 lsr r0 + 147a: a1 f7 brne .-24 ; 0x1464 <__ftoa_engine+0x74> + 147c: 05 90 lpm r0, Z+ + 147e: 07 94 ror r0 + 1480: 28 f4 brcc .+10 ; 0x148c <__ftoa_engine+0x9c> + 1482: e7 0e add r14, r23 + 1484: f8 1e adc r15, r24 + 1486: 49 1f adc r20, r25 + 1488: 56 1f adc r21, r22 + 148a: c1 1d adc r28, r1 + 148c: 77 0f add r23, r23 + 148e: 88 1f adc r24, r24 + 1490: 99 1f adc r25, r25 + 1492: 66 1f adc r22, r22 + 1494: 06 94 lsr r0 + 1496: a1 f7 brne .-24 ; 0x1480 <__ftoa_engine+0x90> + 1498: 05 90 lpm r0, Z+ + 149a: 07 94 ror r0 + 149c: 28 f4 brcc .+10 ; 0x14a8 <__ftoa_engine+0xb8> + 149e: f8 0e add r15, r24 + 14a0: 49 1f adc r20, r25 + 14a2: 56 1f adc r21, r22 + 14a4: c7 1f adc r28, r23 + 14a6: d1 1d adc r29, r1 + 14a8: 88 0f add r24, r24 + 14aa: 99 1f adc r25, r25 + 14ac: 66 1f adc r22, r22 + 14ae: 77 1f adc r23, r23 + 14b0: 06 94 lsr r0 + 14b2: a1 f7 brne .-24 ; 0x149c <__ftoa_engine+0xac> + 14b4: 05 90 lpm r0, Z+ + 14b6: 07 94 ror r0 + 14b8: 20 f4 brcc .+8 ; 0x14c2 <__ftoa_engine+0xd2> + 14ba: 49 0f add r20, r25 + 14bc: 56 1f adc r21, r22 + 14be: c7 1f adc r28, r23 + 14c0: d8 1f adc r29, r24 + 14c2: 99 0f add r25, r25 + 14c4: 66 1f adc r22, r22 + 14c6: 77 1f adc r23, r23 + 14c8: 88 1f adc r24, r24 + 14ca: 06 94 lsr r0 + 14cc: a9 f7 brne .-22 ; 0x14b8 <__ftoa_engine+0xc8> + 14ce: 84 91 lpm r24, Z + 14d0: 10 95 com r17 + 14d2: 17 70 andi r17, 0x07 ; 7 + 14d4: 41 f0 breq .+16 ; 0x14e6 <__ftoa_engine+0xf6> + 14d6: d6 95 lsr r29 + 14d8: c7 95 ror r28 + 14da: 57 95 ror r21 + 14dc: 47 95 ror r20 + 14de: f7 94 ror r15 + 14e0: e7 94 ror r14 + 14e2: 1a 95 dec r17 + 14e4: c1 f7 brne .-16 ; 0x14d6 <__ftoa_engine+0xe6> + 14e6: e4 e5 ldi r30, 0x54 ; 84 + 14e8: f0 e0 ldi r31, 0x00 ; 0 + 14ea: 68 94 set + 14ec: 15 90 lpm r1, Z+ + 14ee: 15 91 lpm r17, Z+ + 14f0: 35 91 lpm r19, Z+ + 14f2: 65 91 lpm r22, Z+ + 14f4: 95 91 lpm r25, Z+ + 14f6: 05 90 lpm r0, Z+ + 14f8: 7f e2 ldi r23, 0x2F ; 47 + 14fa: 73 95 inc r23 + 14fc: e1 18 sub r14, r1 + 14fe: f1 0a sbc r15, r17 + 1500: 43 0b sbc r20, r19 + 1502: 56 0b sbc r21, r22 + 1504: c9 0b sbc r28, r25 + 1506: d0 09 sbc r29, r0 + 1508: c0 f7 brcc .-16 ; 0x14fa <__ftoa_engine+0x10a> + 150a: e1 0c add r14, r1 + 150c: f1 1e adc r15, r17 + 150e: 43 1f adc r20, r19 + 1510: 56 1f adc r21, r22 + 1512: c9 1f adc r28, r25 + 1514: d0 1d adc r29, r0 + 1516: 7e f4 brtc .+30 ; 0x1536 <__ftoa_engine+0x146> + 1518: 70 33 cpi r23, 0x30 ; 48 + 151a: 11 f4 brne .+4 ; 0x1520 <__ftoa_engine+0x130> + 151c: 8a 95 dec r24 + 151e: e6 cf rjmp .-52 ; 0x14ec <__ftoa_engine+0xfc> + 1520: e8 94 clt + 1522: 01 50 subi r16, 0x01 ; 1 + 1524: 30 f0 brcs .+12 ; 0x1532 <__ftoa_engine+0x142> + 1526: 08 0f add r16, r24 + 1528: 0a f4 brpl .+2 ; 0x152c <__ftoa_engine+0x13c> + 152a: 00 27 eor r16, r16 + 152c: 02 17 cp r16, r18 + 152e: 08 f4 brcc .+2 ; 0x1532 <__ftoa_engine+0x142> + 1530: 20 2f mov r18, r16 + 1532: 23 95 inc r18 + 1534: 02 2f mov r16, r18 + 1536: 7a 33 cpi r23, 0x3A ; 58 + 1538: 28 f0 brcs .+10 ; 0x1544 <__ftoa_engine+0x154> + 153a: 79 e3 ldi r23, 0x39 ; 57 + 153c: 7d 93 st X+, r23 + 153e: 2a 95 dec r18 + 1540: e9 f7 brne .-6 ; 0x153c <__ftoa_engine+0x14c> + 1542: 10 c0 rjmp .+32 ; 0x1564 <__ftoa_engine+0x174> + 1544: 7d 93 st X+, r23 + 1546: 2a 95 dec r18 + 1548: 89 f6 brne .-94 ; 0x14ec <__ftoa_engine+0xfc> + 154a: 06 94 lsr r0 + 154c: 97 95 ror r25 + 154e: 67 95 ror r22 + 1550: 37 95 ror r19 + 1552: 17 95 ror r17 + 1554: 17 94 ror r1 + 1556: e1 18 sub r14, r1 + 1558: f1 0a sbc r15, r17 + 155a: 43 0b sbc r20, r19 + 155c: 56 0b sbc r21, r22 + 155e: c9 0b sbc r28, r25 + 1560: d0 09 sbc r29, r0 + 1562: 98 f0 brcs .+38 ; 0x158a <__ftoa_engine+0x19a> + 1564: 23 95 inc r18 + 1566: 7e 91 ld r23, -X + 1568: 73 95 inc r23 + 156a: 7a 33 cpi r23, 0x3A ; 58 + 156c: 08 f0 brcs .+2 ; 0x1570 <__ftoa_engine+0x180> + 156e: 70 e3 ldi r23, 0x30 ; 48 + 1570: 7c 93 st X, r23 + 1572: 20 13 cpse r18, r16 + 1574: b8 f7 brcc .-18 ; 0x1564 <__ftoa_engine+0x174> + 1576: 7e 91 ld r23, -X + 1578: 70 61 ori r23, 0x10 ; 16 + 157a: 7d 93 st X+, r23 + 157c: 30 f0 brcs .+12 ; 0x158a <__ftoa_engine+0x19a> + 157e: 83 95 inc r24 + 1580: 71 e3 ldi r23, 0x31 ; 49 + 1582: 7d 93 st X+, r23 + 1584: 70 e3 ldi r23, 0x30 ; 48 + 1586: 2a 95 dec r18 + 1588: e1 f7 brne .-8 ; 0x1582 <__ftoa_engine+0x192> + 158a: 11 24 eor r1, r1 + 158c: ef 90 pop r14 + 158e: ff 90 pop r15 + 1590: 0f 91 pop r16 + 1592: 1f 91 pop r17 + 1594: cf 91 pop r28 + 1596: df 91 pop r29 + 1598: 99 27 eor r25, r25 + 159a: 87 fd sbrc r24, 7 + 159c: 90 95 com r25 + 159e: 08 95 ret + +000015a0 : + 15a0: dc 01 movw r26, r24 + 15a2: fc 01 movw r30, r24 + 15a4: 67 2f mov r22, r23 + 15a6: 71 91 ld r23, Z+ + 15a8: 77 23 and r23, r23 + 15aa: e1 f7 brne .-8 ; 0x15a4 + 15ac: 32 97 sbiw r30, 0x02 ; 2 + 15ae: 04 c0 rjmp .+8 ; 0x15b8 + 15b0: 7c 91 ld r23, X + 15b2: 6d 93 st X+, r22 + 15b4: 70 83 st Z, r23 + 15b6: 62 91 ld r22, -Z + 15b8: ae 17 cp r26, r30 + 15ba: bf 07 cpc r27, r31 + 15bc: c8 f3 brcs .-14 ; 0x15b0 + 15be: 08 95 ret + +000015c0 <__udivmodhi4>: + 15c0: aa 1b sub r26, r26 + 15c2: bb 1b sub r27, r27 + 15c4: 51 e1 ldi r21, 0x11 ; 17 + 15c6: 07 c0 rjmp .+14 ; 0x15d6 <__udivmodhi4_ep> + +000015c8 <__udivmodhi4_loop>: + 15c8: aa 1f adc r26, r26 + 15ca: bb 1f adc r27, r27 + 15cc: a6 17 cp r26, r22 + 15ce: b7 07 cpc r27, r23 + 15d0: 10 f0 brcs .+4 ; 0x15d6 <__udivmodhi4_ep> + 15d2: a6 1b sub r26, r22 + 15d4: b7 0b sbc r27, r23 + +000015d6 <__udivmodhi4_ep>: + 15d6: 88 1f adc r24, r24 + 15d8: 99 1f adc r25, r25 + 15da: 5a 95 dec r21 + 15dc: a9 f7 brne .-22 ; 0x15c8 <__udivmodhi4_loop> + 15de: 80 95 com r24 + 15e0: 90 95 com r25 + 15e2: bc 01 movw r22, r24 + 15e4: cd 01 movw r24, r26 + 15e6: 08 95 ret + +000015e8 <_exit>: + 15e8: f8 94 cli + +000015ea <__stop_program>: + 15ea: ff cf rjmp .-2 ; 0x15ea <__stop_program> diff --git a/USBLaminator/USBLaminator/Debug/USBLaminator.map b/USBLaminator/USBLaminator/Debug/USBLaminator.map index 45ee1b5..c9aa419 100644 --- a/USBLaminator/USBLaminator/Debug/USBLaminator.map +++ b/USBLaminator/USBLaminator/Debug/USBLaminator.map @@ -6,6 +6,10 @@ c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu- 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(divsf3.o) + USBLaminator.o (__divsf3) +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(divsf3x.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(divsf3.o) (__divsf3x) 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) @@ -32,8 +36,6 @@ c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu- 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) @@ -54,6 +56,8 @@ c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu- 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) +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) + 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) (__udivmodhi4) Discarded input sections @@ -69,6 +73,10 @@ Discarded input sections .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\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(divsf3.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(divsf3.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(divsf3x.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(divsf3x.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) @@ -95,17 +103,6 @@ Discarded input sections .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\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 @@ -180,6 +177,17 @@ Discarded input sections .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\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) + .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) Memory Configuration @@ -296,7 +304,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .rela.plt *(.rela.plt) -.text 0x00000000 0x1460 +.text 0x00000000 0x15ec *(.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 @@ -380,115 +388,122 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .text._Z5setupv 0x000001a4 0x216 USBLaminator.o 0x000001a4 _Z5setupv - .text.main 0x000003ba 0x5a6 USBLaminator.o + .text.main 0x000003ba 0x666 USBLaminator.o 0x000003ba main .text.__vector_6 - 0x00000960 0x108 USBLaminator.o - 0x00000960 __vector_6 + 0x00000a20 0x108 USBLaminator.o + 0x00000a20 __vector_6 .text.__vector_1 - 0x00000a68 0x20 USBLaminator.o - 0x00000a68 __vector_1 + 0x00000b28 0x1c USBLaminator.o + 0x00000b28 __vector_1 .text._ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC2Ev - 0x00000a88 0x34 USBLaminator.o - 0x00000a88 _ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC2Ev - 0x00000a88 _ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC1Ev + 0x00000b44 0x34 USBLaminator.o + 0x00000b44 _ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC2Ev + 0x00000b44 _ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC1Ev .text._ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC2E3LedINS0_5portbELi4ELi3ELi2EE - 0x00000abc 0x5a USBLaminator.o - 0x00000abc _ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE - 0x00000abc _ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC2E3LedINS0_5portbELi4ELi3ELi2EE + 0x00000b78 0x5a USBLaminator.o + 0x00000b78 _ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE + 0x00000b78 _ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC2E3LedINS0_5portbELi4ELi3ELi2EE .text._ZN6ButtonIN6avrlib5portdELi2EEC2E3LedINS0_5portbELi4ELi3ELi2EE - 0x00000b16 0x2c USBLaminator.o - 0x00000b16 _ZN6ButtonIN6avrlib5portdELi2EEC1E3LedINS0_5portbELi4ELi3ELi2EE - 0x00000b16 _ZN6ButtonIN6avrlib5portdELi2EEC2E3LedINS0_5portbELi4ELi3ELi2EE + 0x00000bd2 0x2c USBLaminator.o + 0x00000bd2 _ZN6ButtonIN6avrlib5portdELi2EEC1E3LedINS0_5portbELi4ELi3ELi2EE + 0x00000bd2 _ZN6ButtonIN6avrlib5portdELi2EEC2E3LedINS0_5portbELi4ELi3ELi2EE .text._ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv - 0x00000b42 0x14 USBLaminator.o - 0x00000b42 _ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv + 0x00000bfe 0x14 USBLaminator.o + 0x00000bfe _ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv .text._GLOBAL__sub_I_l - 0x00000b56 0x3e USBLaminator.o + 0x00000c12 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 + 0x00000c50 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) + 0x00000c50 __subsf3 + 0x00000c52 __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 + 0x00000c5a 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) + 0x00000c74 __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 + 0x00000d1a 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) + 0x00000d1a __nesf2 + 0x00000d1a __eqsf2 + 0x00000d1a __cmpsf2 + 0x00000d1a __ltsf2 + 0x00000d1a __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 + 0x00000d22 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(divsf3.o) + 0x00000d22 __divsf3 .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 + 0x00000d26 0xcc 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(divsf3x.o) + 0x00000d3c __divsf3x + 0x00000d40 __divsf3_pse .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 + 0x00000df2 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) + 0x00000df2 __fixunssfsi .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 + 0x00000e4a 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) + 0x00000e4a __floatunsisf + 0x00000e4e __floatsisf .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 + 0x00000ec4 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) + 0x00000ec4 __fp_cmp .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 + 0x00000f0c 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) + 0x00000f0c __fp_inf .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 + 0x00000f18 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) + 0x00000f18 __fp_nan .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 + 0x00000f1e 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) + 0x00000f1e __fp_pscA .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 + 0x00000f2c 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) + 0x00000f2c __fp_pscB .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 + 0x00000f3a 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) + 0x00000f3a __fp_round .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 + 0x00000f5c 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) + 0x00000f5c __fp_split3 + 0x00000f6c __fp_splitA .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 + 0x00000fa0 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) + 0x00000fa0 __fp_zero + 0x00000fa2 __fp_szero .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 + 0x00000fae 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) + 0x00000fae __gesf2 + 0x00000fae __gtsf2 + .text.avr-libc.fplib + 0x00000fb6 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) + 0x00000fb6 __mulsf3 + .text.avr-libc.fplib + 0x00000fba 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) + 0x00000fce __mulsf3x + 0x00000fd2 __mulsf3_pse + .text.libgcc 0x0000107c 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) + 0x0000107c __tablejump2__ + 0x00001080 __tablejump__ + .text.avr-libc + 0x00001088 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) + 0x00001088 dtostrf + .text.avr-libc + 0x000010ca 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) + 0x000010ca utoa + .text.avr-libc + 0x000010f6 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) + 0x000010f6 dtoa_prf + .text.avr-libc + 0x000013f0 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) + 0x000013f0 __ftoa_engine + .text.avr-libc + 0x000015a0 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) + 0x000015a0 strrev .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) + 0x000015c0 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) + 0x000015c0 __udivmodhi4 + 0x000015e8 . = ALIGN (0x2) *(.fini9) - .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 0x000015e8 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) + 0x000015e8 _exit + 0x000015e8 exit *(.fini9) *(.fini8) *(.fini8) @@ -507,11 +522,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .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 0x000015e8 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) - 0x00001460 _etext = . + 0x000015ec _etext = . -.data 0x00800060 0x136 load address 0x00001460 +.data 0x00800060 0x136 load address 0x000015ec 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 @@ -519,6 +534,8 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .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(divsf3.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(divsf3x.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) @@ -532,7 +549,6 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .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) @@ -543,6 +559,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .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 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*) *(.rodata) .rodata 0x00800060 0x30 USBLaminator.o @@ -567,8 +584,8 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.bss*) *(COMMON) 0x008001d2 PROVIDE (__bss_end, .) - 0x00001460 __data_load_start = LOADADDR (.data) - 0x00001596 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x000015ec __data_load_start = LOADADDR (.data) + 0x00001722 __data_load_end = (__data_load_start + SIZEOF (.data)) .noinit 0x008001d2 0x0 0x008001d2 PROVIDE (__noinit_start, .) @@ -596,7 +613,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .user_signatures *(.user_signatures*) -.stab 0x00000000 0x2ac0 +.stab 0x00000000 0x3018 *(.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) @@ -605,42 +622,46 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 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) + .stab 0x00000c90 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(divsf3.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) + .stab 0x00000cd8 0x510 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(divsf3x.o) + 0x51c (size before relaxing) + .stab 0x000011e8 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 0x00001428 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 0x00001740 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 0x00001920 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 0x00001998 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 0x000019ec 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 0x00001a70 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 0x00001af4 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 0x00001bf0 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 0x00001dc4 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 0x00001e54 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 0x00001ec0 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 0x00001f08 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) + .stab 0x000023dc 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) + .stab 0x00002508 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) + .stab 0x00002f40 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 0x798 +.stabstr 0x00000000 0x855 *(.stabstr) - .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 + .stabstr 0x00000000 0x855 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) @@ -685,11 +706,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x74a7 +.debug_info 0x00000000 0x756b *(.debug_info) - .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) + .debug_info 0x00000000 0x72ba USBLaminator.o + .debug_info 0x000072ba 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 0x000073db 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 0x659 @@ -698,11 +719,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .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 0xb6d +.debug_line 0x00000000 0xb99 *(.debug_line) - .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_line 0x00000000 0x8b3 USBLaminator.o + .debug_line 0x000008b3 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 0x00000949 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 0x1d8 *(.debug_frame) @@ -710,20 +731,20 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .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 0x1908 +.debug_str 0x00000000 0x1945 *(.debug_str) - .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) + .debug_str 0x00000000 0x185a USBLaminator.o + 0x18c2 (size before relaxing) + .debug_str 0x0000185a 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) + .debug_str 0x000018d5 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 0x18cf +.debug_loc 0x00000000 0x1a95 *(.debug_loc) - .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_loc 0x00000000 0x1479 USBLaminator.o + .debug_loc 0x00001479 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 0x00001581 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) diff --git a/USBLaminator/USBLaminator/Debug/USBLaminator.srec b/USBLaminator/USBLaminator/Debug/USBLaminator.srec index 2a66e2a..28c2bf0 100644 --- a/USBLaminator/USBLaminator/Debug/USBLaminator.srec +++ b/USBLaminator/USBLaminator/Debug/USBLaminator.srec @@ -1,6 +1,6 @@ S01400005553424C616D696E61746F722E737265637F -S11300000C94A8000C9434050C94D0000C94D000EB -S11300100C94D0000C94D0000C94B0040C94D00038 +S11300000C94A8000C9494050C94D0000C94D0008B +S11300100C94D0000C94D0000C9410050C94D000D7 S11300200C94D0000C94D0000C94D0000C94D0000C S11300300C94D0000C94D0000C94D0000C94D000FC S11300400C94D0000C94D0000C94D0000C94D000EC @@ -19,12 +19,12 @@ S1130100902E0300943577050080841E080000209B S11301104E0A000000C80C333333330F986E128339 S11301201141EF8D2114893BE65516CFFEE6DB180D S1130130D1844B381BF77C1D901DA4BBE4242032D2 -S113014084725E228100C9F124ECA1E53D27AB0550 +S113014084725E228100C9F124ECA1E53D270906F1 S113015011241FBECFE5D4E0DEBFCDBF11E0A0E681 -S1130160B0E0E0E6F4E102C005900D92A639B107D3 +S1130160B0E0ECEEF5E102C005900D92A639B107BE S1130170D9F721E0A6E9B1E001C01D92A23DB20782 S1130180E1F711E0C0E5D1E004C02297FE010E942E -S11301908E07CE34D107C9F70E94DD010C942E0AD4 +S11301904008CE34D107C9F70E94DD010C94F40A5B S11301A00C940000CF93C49ABC9AAA98A29AAB98D4 S11301B0A39AAC98A49AAD98A59AAE98A69AAF982B S11301C0A79AE1E9F0E083E2C39ABB9A5D9BFECF74 @@ -59,290 +59,315 @@ S11303808111F6CFC29ABA9A16C0C498BC9AC39A7D S1130390BB9AEFE3F1E083E2C9CF379A2FEF81EE06 S11303A094E0215080409040E1F700C00000ECE46C S11303B0F1E083E2C6CFCF910895CF93DF93CDB719 -S11303C0DEB7A9970FB6F894DEBF0FBECDBF0E946B -S11303D0D20029E130E039A728A787B1887F87B9FF +S11303C0DEB7AB970FB6F894DEBF0FBECDBF0E9469 +S11303D0D20024E130E039A728A787B1887F87B904 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 +S113041099EEA91693E0B90668F4E9EE8E16E3E0C6 +S11304209E0640F4F5E0AF16B10420F025E08216F4 +S1130430910478F4C49ABC9A1092CC011092CD0124 +S11304401092CE011092CF011092D0011092D101DE +S1130450FFCFE7E9F1E06081718180E090E00E94E4 +S113046025076AA37BA38CA39DA3E9E9F1E060813E +S1130470718180E090E00E942507262E372E082FF8 +S1130480192FEBE9F1E06081718180E090E00E9436 +S113049025079B01AC01BAA1ABA1FCA1EDA16B2F77 +S11304A07A2F8F2F9E2F0E9428066B017C01EDE985 +S11304B0F1E06081718180E090E00E9425079B015A +S11304C0AC01622D732D802F912F0E9428069B0171 +S11304D0AC01C701B6010E949106D62EC72EE82EA4 +S11304E0F92E462E572E682E792EB50180E090E025 +S11304F00E9425079B01AC016D2D7C2D8E2D9F2D17 +S11305000E94DB076B017C01A30192015058622D0C +S1130510732D802F912F0E94DB079B01AC01C70133 +S1130520B6010E9429069B01AC01BAA1ABA1FCA1B2 +S1130530EDA16B2F7A2F8F2F9E2F0E9429066AA37D +S11305407BA38CA39DA3EFE9F1E06081718180E03E +S113055090E00E9425076EA37FA38AA79BA7E1EAE8 +S1130560F1E06081718180E090E00E942507262EF1 +S1130570372E082F192FE3EAF1E06081718180E0C2 +S113058090E00E9425079B01AC01BEA1AFA1FAA592 +S1130590EBA56B2F7A2F8F2F9E2F0E9428066B01BD +S11305A07C01E5EAF1E06081718180E090E00E94E5 +S11305B025079B01AC01622D732D802F912F0E9482 +S11305C028069B01AC01C701B6010E949106D62EF4 +S11305D0C72EE82EF92E462E572E682E792EB401FA +S11305E080E090E00E9425079B01AC016D2D7C2DDD +S11305F08E2D9F2D0E94DB076B017C01A3019201CC +S11306005058622D732D802F912F0E94DB079B0180 +S1130610AC01C701B6010E9429069B01AC01BEA131 +S1130620AFA1FAA5EBA56B2F7A2F8F2F9E2F0E94D7 +S113063029066EA37FA3D82EC92E762F6FA1272F4C +S1130640362F4D2D5C2DBAA1ABA1FCA1EDA16B2FD2 +S11306507A2F8F2F9E2F0E94290620E030E040E061 +S11306605FE30E94DB07762E672E582E492EE8ECB6 +S1130670F1E0808191812FEF3FEF318320838F3F21 +S11306803FEF930711F099A788A768A579A56B5F39 +S11306907F4F882777FD8095982F0E942707272D65 +S11306A0362D452D542D0E942806F62EE72E382E81 +S11306B0292E20E030E0A9010E948D0688230CF445 +S11306C099C120E030E040EA51E46F2D7E2D832D66 +S11306D0922D0E94D70718160CF491C13F2D2E2D90 +S11306E0932D822D90C1C39ABB9A5D9BFECF8CB98A +S11306F0C398BB9A81918111F6CF8E01095E1F4F79 +S113070022E04AE06F2D7E2D832D922D0E94440815 +S1130710FC012081222359F03196C39ABB9A5D9B38 +S1130720FECF2CB9C398BB9A21912111F6CFC39A5D +S1130730BB9A5D9BFECF8BE38CB9C398BB9A0F2EFB +S1130740FAE6EF2EF1E0FF2EF02DF70183E6C39ACF +S1130750BB9A5D9BFECF8CB9C398BB9A81918111E2 +S1130760F6CFB4016A0D7B1D80E090E00E9425075E +S113077020E030E040E05FE30E94DB078E01045F8D +S11307801F4F22E04AE00E944408FC0120812223FA +S113079059F03196C39ABB9A5D9BFECF2CB9C3988E +S11307A0BB9A21912111F6CFC39ABB9A5D9BFECFD0 +S11307B08BE38CB9C398BB9AEEE6F1E086E7C39A63 +S11307C0BB9A5D9BFECF8CB9C398BB9A8191811172 +S11307D0F6CF4AE050E0BE01645F7F4FC5010E943E +S11307E06508FC012081222359F03196C39ABB9AF3 +S11307F05D9BFECF2CB9C398BB9A21912111F6CFF2 +S1130800C39ABB9A5D9BFECF8BE38CB9C398BB9A0A +S1130810E2E7F1E086E7C39ABB9A5D9BFECF8CB911 +S1130820C398BB9A81918111F6CF4AE050E0BE0192 +S1130830645F7F4FC4010E946508FC01208122236C 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 +S11308608BE38CB9C398BB9A83E6F701C39ABB9A0E +S11308705D9BFECF8CB9C398BB9A81918111F6CF51 +S11308808E010F5F1F4F22E04AE0672D762D852DE4 +S1130890942D0E944408FC012081222359F03196B2 +S11308A0C39ABB9A5D9BFECF2CB9C398BB9A219186 +S11308B02111F6CFC39ABB9A5D9BFECF8BE38CB913 +S11308C0C398BB9AE6E7F1E083E6C39ABB9A5D9BC3 +S11308D0FECF8CB9C398BB9A81918111F6CF8E015A +S11308E00F5F1F4F22E04AE0FAA1EBA15CA13DA1FA +S11308F06F2F7E2F852F932F0E944408FC012081A7 +S1130900222359F03196C39ABB9A5D9BFECF2CB932 +S1130910C398BB9A21912111F6CFC39ABB9A5D9BD0 +S1130920FECF8BE38CB9C398BB9AEAE7F1E083E688 +S1130930C39ABB9A5D9BFECF8CB9C398BB9A819135 +S11309408111F6CF8E010F5F1F4F22E04AE0FEA116 +S1130950EFA16F2F7E2F8D2D9C2D0E944408FC014A +S11309602081222359F03196C39ABB9A5D9BFECF16 +S11309702CB9C398BB9A21912111F6CFC39ABB9A83 +S11309805D9BFECF8BE38CB9C398BB9AEEE7F1E095 +S113099088E6C39ABB9A5D9BFECF8CB9C398BB9A79 +S11309A081918111F6CF9A9B03C0E2E6F1E002C087 +S11309B0EBE5F1E08081882359F03196C39ABB9A24 +S11309C05D9BFECF8CB9C398BB9A81918111F6CF00 +S11309D0C39ABB9A5D9BFECF8AE08CB9C398BB9A3D +S11309E0FFEF21EE34E0F15020403040E1F700C049 +S11309F00000F3CC30E020E090E080E004C030E080 +S1130A0020E090EA81E4482F632F722F892F942FDE +S1130A100E94F9066093CB01E5E8F1E080E763CE3C +S1130A201F920F920FB60F9211242F933F934F935F +S1130A305F936F937F938F939F93AF93BF93EF9342 +S1130A40FF938091CA01843108F451C01092CA0105 +S1130A5051C0822F91916C91961718F1992309F145 +S1130A60BA01022E02C0660F771F0A94E2F7CB0187 +S1130A7060FF02C0AA9AA29A81FF02C0AB9AA39A0D +S1130A8082FF02C0AC9AA49A83FF02C0AD9AA59AD1 +S1130A9084FF02C0AE9AA69A85FF22C0AF9AA79A95 +S1130AA01FC0BA0102C0660F771F8A95E2F7CB0117 +S1130AB060FF02C0AA98A29A81FF02C0AB98A39AD1 +S1130AC082FF02C0AC98A49A83FF02C0AD98A59A95 +S1130AD084FF02C0AE98A69A85FF02C0AF98A79A79 +S1130AE02F5F3F4F2630310509F0B3CF0CC08F5F25 +S1130AF08093CA01EBECF1E020E030E0AAECB1E035 +S1130B0041E050E0A6CFFF91EF91BF91AF919F914B +S1130B108F917F916F915F914F913F912F910F90A2 +S1130B200FBE0F901F9018951F920F920FB60F9241 +S1130B3011248F9380E48ABF8F910F900FBE0F9082 +S1130B401F901895FC01119286E0DF011D928A9591 +S1130B50E9F7A29AA39AA49AA59AA69AA79AAA98F8 +S1130B60A29AAB98A39AAC98A49AAD98A59AAE9879 +S1130B70A69AAF98A79A0895CF93DF931F92CDB703 +S1130B80DEB76983BC9ABB9ABA9AC498BC9AC398D4 +S1130B90BB9AC298BA9A2FEF3FEFFC0132832183AC +S1130BA01BB888E08AB986EA80BD10BC89E189B99E +S1130BB0EAE8F1E085E5C39ABB9A5D9BFECF8CB968 +S1130BC0C398BB9A81918111F6CF0F90DF91CF9199 +S1130BD00895CF93DF931F92CDB7DEB76983BC9A94 +S1130BE0BB9ABA9AC498BC9AC398BB9AC298BA9A48 +S1130BF08A989298929A0F90DF91CF910895BC9A17 +S1130C00BB9ABA9AC498BC9AC398BB9AC298BA9A27 +S1130C10089581ED91E00E94FF058AEC91E00E9425 +S1130C20A20560E087EC91E00E94BC0580E3E0E669 +S1130C30F0E0A7E9B1E001900D928A95E1F784E034 +S1130C4086B917B860E086E991E00E94E905089545 +S1130C505058BB27AA270ED070C161D130F066D19D +S1130C6020F031F49F3F11F41EF456C10EF4E095C8 +S1130C70E7FB4CC1E92F72D180F3BA1762077307FF +S1130C808407950718F071F49EF58AC10EF4E09577 +S1130C900B2EBA2FA02D0B01B90190010C01CA0132 +S1130CA0A0011124FF27591B99F0593F50F4503EDD +S1130CB068F11A16F040A22F232F342F4427585FCF +S1130CC0F3CF469537952795A795F0405395C9F7E7 +S1130CD07EF41F16BA0B620B730B840BBAF091509F +S1130CE0A1F0FF0FBB1F661F771F881FC2F70EC03E +S1130CF0BA0F621F731F841F48F487957795679511 +S1130D00B795F7959E3F08F0B3CF9395880F08F0F9 +S1130D109927EE0F979587950895D4D008F481E02C +S1130D2008950CD00AC102D140F0F9D030F021F47A +S1130D305F3F19F0EBC0511134C1EEC00FD198F3ED +S1130D409923C9F35523B1F3951B550BBB27AA2748 +S1130D5062177307840738F09F5F5F4F220F331FBA +S1130D60441FAA1FA9F333D00E2E3AF0E0E830D086 +S1130D7091505040E695001CCAF729D0FE2F27D089 +S1130D80660F771F881FBB1F261737074807AB0757 +S1130D90B0E809F0BB0B802DBF01FF2793585F4FCC +S1130DA02AF09E3F510568F0B1C0FBC05F3FECF3F1 +S1130DB0983EDCF3869577956795B795F7959F5F91 +S1130DC0C9F7880F911D9695879597F90895E1E0E5 +S1130DD0660F771F881FBB1F621773078407BA0744 +S1130DE020F0621B730B840BBA0BEE1F88F7E0959F +S1130DF00895BCD088F09F5790F0B92F9927B75128 +S1130E00A0F0D1F0660F771F881F991F1AF0BA95CA +S1130E10C9F712C0B13081F0C3D0B1E00895C0C0A9 +S1130E20672F782F8827B85F39F0B93FCCF38695C0 +S1130E3077956795B395D9F73EF49095809570951D +S1130E4061957F4F8F4F9F4F0895E89409C097FB9A +S1130E503EF490958095709561957F4F8F4F9F4F8D +S1130E609923A9F0F92F96E9BB279395F6958795D1 +S1130E7077956795B795F111F8CFFAF4BB0F11F494 +S1130E8060FF1BC06F5F7F4F8F4F9F4F16C088233B +S1130E9011F096E911C0772321F09EE8872F762F71 +S1130EA005C0662371F096E8862F70E060E02AF0B2 +S1130EB09A95660F771F881FDAF7880F969587959E +S1130EC097F90895990F0008550FAA0BE0E8FEEF73 +S1130ED016161706E807F907C0F012161306E407FA +S1130EE0F50798F0621B730B840B950B39F40A26F3 +S1130EF061F0232B242B252B21F408950A2609F4D1 +S1130F00A140A6958FEF811D811D089597F99F67D4 +S1130F1080E870E060E008959FEF80EC089500247D +S1130F200A941616170618060906089500240A944A +S1130F3012161306140605060895092E0394000CD0 +S1130F4011F4882352F0BB0F40F4BF2B11F460FF5F +S1130F5004C06F5F7F4F8F4F9F4F089557FD905888 +S1130F60440F551F59F05F3F71F04795880F97FB69 +S1130F70991F61F09F3F79F0879508951216130623 +S1130F801406551FF2CF4695F1DF08C01616170652 +S1130F901806991FF1CF8695710561050894089587 +S1130FA0E894BB2766277727CB0197F908958ADF52 +S1130FB008F48FEF08950BD0C0CFB1DF28F0B6DF6F +S1130FC018F0952309F0A2CFA7CF1124EACFC6DFEA +S1130FD0A0F3959FD1F3950F50E0551F629FF00148 +S1130FE0729FBB27F00DB11D639FAA27F00DB11DA1 +S1130FF0AA1F649F6627B00DA11D661F829F22272A +S1131000B00DA11D621F739FB00DA11D621F839FB0 +S1131010A00D611D221F749F3327A00D611D231F86 +S1131020849F600D211D822F762F6A2F11249F57D4 +S113103050408AF0E1F088234AF0EE0FFF1FBB1FF7 +S1131040661F771F881F91505040A9F79E3F510596 +S113105070F05CCFA6CF5F3FECF3983EDCF386954F +S113106077956795B795F795E7959F5FC1F7FE2B41 +S1131070880F911D9695879597F90895EE0FFF1F98 +S11310800590F491E02D0994EF920F931F93CF9361 +S1131090C02F47FF02C034E101C034E0E42FFF2732 +S11310A0E7FDF095F7FF03C0F195E195F109E32E13 +S11310B0022F2E2F4C2F512F0E947B088C2F912F03 +S11310C0CF911F910F91EF900895FB019F01423042 +S11310D074F0453264F4642F77270E94E00A805D3F +S11310E08A330CF0895D8193CB010097A1F71082BC +S11310F0C9010C94D00A6F927F929F92AF92BF92D3 +S1131100CF92DF92EF92FF920F931F93CF93DF93CF +S1131110CDB7DEB729970FB6F894DEBF0FBECDBFAB +S11311206A01B22E102F0C3318F4F02EF39402C07F +S11311305CE3F52E0F2D27E0AE014F5F5F4F0E9459 +S1131140F8097981272F2970213031F0E1FC06C09C +S1131150E0FE06C060E205C06DE203C06BE201C0C0 +S113116060E073FF3DC0662311F084E001C083E0BA +S11311708B1510F4B81A01C0B12CE4FC0BC08B2DF4 +S1131180F60190E202C0919381508111FCCFCB0C07 +S1131190D11CB12C662319F0D6016D936D01E2FECA +S11311A00AC08EE4F601808391E491838283F3E0A4 +S11311B0CF0ED11C0CC08EE6D6018C9391E611960D +S11311C09C93119712968C93B3E0CB0ED11C8B2D6C +S11311D0F60190E202C0919381508111FCCF40C08E +S11311E072FF45C0662311F084E001C083E08B15D3 +S11311F010F4B81A01C0B12CE4FC0BC08B2DF6011D +S113120090E202C0919381508111FCCFCB0CD11C90 +S1131210B12C662319F0F60161936F01E2FE0EC052 +S113122089E4D6018C938EE411968C93119786E40D +S113123012968C93B3E0CB0ED11C0AC089E6F6015A +S113124080838EE6818386E68283F3E0CF0ED11C11 +S11312508B2DF60190E202C0919381508111FCCF55 +S1131260F601EB0DF11D10822EEF3FEFACC0A1E0B3 +S1131270611101C0A0E04A2F50E01816190624F4A9 +S11312809C012F5F3F4F02C021E030E0240F351F47 +S1131290112329F0412F50E04F5F5F4F02C040E01F +S11312A050E0420F531F2B2D30E04217530714F424 +S11312B0B41A01C0B12C3E2D3071E4FC0DC0E3FC26 +S11312C00BC02B2DF60140E202C0419321502111A5 +S11312D0FCCFCB0CD11CB12CAA2319F0D6016D93F1 +S11312E06D0131110BC02B2DF60130E302C0319397 +S11312F021502111FCCFCB0CD11CB12CF80E0A814A +S113130040E1A42EA72274FF03C0013309F4FA9428 +S11313101F142CF42F2D293018F028E001C021E0EF +S1131320AC0197FF02C040E050E060E070E03EE2B4 +S1131330932EFC01E21BF1099F01DC01A41BB50BF8 +S1131340FE013196EA0FFB1FA12FB0E0662477243B +S11313506A1A7B0A4F3F1FEF510719F4D6019D9279 +S11313606D018417950754F0241735073CF47F0169 +S1131370E60EF71ED70111961C9101C010E34150EF +S113138051096F5F7F4F4615570524F0D6011D9311 +S11313906D01E0CF4817590739F4063320F40533BB +S11313A019F4A11001C011E3F60111938B2DDF0193 +S11313B090E202C09D9381508111FCCFEB0DF11D91 +S11313C0108220E030E0C90129960FB6F894DEBF00 +S11313D00FBECDBFDF91CF911F910F91FF90EF9082 +S11313E0DF90CF90BF90AF909F907F906F900895C3 +S11313F0283008F027E03327DA01990F311D87FDE3 +S1131400916000966105710539F432602E5F3D9359 +S113141030E32A95E1F708959F3F30F08038710555 +S1131420610509F03C5F3C5F3D93913008F08068B2 +S1131430911DDF93CF931F930F93FF92EF92192F78 +S1131440987F9695E92F96959695E90FFF27E25593 +S1131450FF4F99273327EE24FF24A701E7010590C6 +S11314600894079428F4360FE71EF81E491F511DEF +S1131470660F771F881F991F0694A1F7059007949C +S113148028F4E70EF81E491F561FC11D770F881F49 +S1131490991F661F0694A1F70590079428F4F80E87 +S11314A0491F561FC71FD11D880F991F661F771F1D +S11314B00694A1F70590079420F4490F561FC71FFF +S11314C0D81F990F661F771F881F0694A9F7849168 +S11314D01095177041F0D695C79557954795F79491 +S11314E0E7941A95C1F7E4E5F0E068941590159136 +S11314F035916591959105907FE27395E118F10A14 +S1131500430B560BC90BD009C0F7E10CF11E431F66 +S1131510561FC91FD01D7EF4703311F48A95E6CF8F +S1131520E894015030F0080F0AF40027021708F479 +S1131530202F2395022F7A3328F079E37D932A957F +S1131540E9F710C07D932A9589F6069497956795D7 +S1131550379517951794E118F10A430B560BC90BED +S1131560D00998F023957E9173957A3308F070E34F +S11315707C932013B8F77E9170617D9330F083954E +S113158071E37D9370E32A95E1F71124EF90FF90C6 +S11315900F911F91CF91DF91992787FD9095089521 +S11315A0DC01FC01672F71917723E1F7329704C0C6 +S11315B07C916D9370836291AE17BF07C8F3089551 +S11315C0AA1BBB1B51E107C0AA1FBB1FA617B70765 +S11315D010F0A61BB70B881F991F5A95A9F7809581 +S10F15E09095BC01CD010895F894FFCF54 +S11315EC1F00FC01C80080011F00F801C800700135 +S11315FC00000000000000000000000000000000DB +S113160C00000000000000000000000000000000CA +S113161C2323232320426567696E20426F6F747500 +S113162C7020232323232323232323232323232330 +S113163C232323232323232323232323232323236A +S113164C23232323232323232323230A0023205468 +S113165C657374204F75747075740A002320536578 +S113166C7475702054696D65720A002323204F75BC +S113167C7470757420496E697420446F6E65210A08 +S113168C002323232320456E6420426F6F747570EE +S113169C202323232323232323232323232323230D +S11316AC23232323232323232323232323232323FA +S11316BC2323232323232323232323230A00232029 +S11316CC5365747570204144430A00232053657498 +S11316DC757020427574746F6E0A006D6F6E3D30B8 +S11316EC3B006D6F6E3D313B00636D3D0076303DCC +S11316FC0076313D0063303D0063313D00686F6E10 +S113170C3D303B0070776D3D005561727420646F01 +S109171C6E65210A0000C5 S9030000FC diff --git a/USBLaminator/USBLaminator/USBLaminator.cpp b/USBLaminator/USBLaminator/USBLaminator.cpp index 52859a9..962b249 100644 --- a/USBLaminator/USBLaminator/USBLaminator.cpp +++ b/USBLaminator/USBLaminator/USBLaminator.cpp @@ -38,12 +38,17 @@ void setup() int main(void) { setup(); - int16_t target_temp = 25; + int16_t target_temp = 20; float pwm_value = 0; while(1) { uint16_t v0 = a.get(0); uint16_t v1 = a.get(1); + if(v0 > 1000 || v1 > 1000 || v0 < 5 || v1 < 5) { + l.on(l.RED); + o.stop(); + while(true) {}; + } float t0 = a.convert(v0, 0); float t1 = a.convert(v1, 1); float tm = (t0+t1)/2; @@ -58,8 +63,8 @@ int main(void) 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(";"); + r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); + r.send("c1="); 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;"); diff --git a/USBLaminator/USBLaminator/io/ADC.hpp b/USBLaminator/USBLaminator/io/ADC.hpp index fe895a1..fe4a576 100644 --- a/USBLaminator/USBLaminator/io/ADC.hpp +++ b/USBLaminator/USBLaminator/io/ADC.hpp @@ -32,8 +32,14 @@ class Adc { return ADCW; } float convert(uint16_t v, uint8_t pin) { - 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]; + float c1 = this->table[pin][0]; + float v1 = this->table[pin][1]; + + float c2 = this->table[pin][2]; + float v2 = this->table[pin][3]; + float m = ((c1 - c2) / (v1 - v2)); + + return (m * (float)v) + (-m * v1) + c1; } private: void init() { @@ -45,8 +51,8 @@ class Adc { } } const uint16_t table[6][4] = { - {26, 144, 180, 84}, //ADC-Wert=144 @ 26°C, 84 @ 180°C - {26, 144, 180, 84}, //ADC-Wert=144 @ 26°C, 84 @ 180°C + {31, 508, 200, 384}, //ADC-Wert=520 @ 31°C, 84 @ 180°C + {31, 504, 200, 368}, //ADC-Wert=144 @ 26°C, 84 @ 180°C {0,0,0,0}, {0,0,0,0}, {0,0,0,0}, diff --git a/USBLaminator/USBLaminator/io/SSR.hpp b/USBLaminator/USBLaminator/io/SSR.hpp index 92d48a0..f291cb5 100644 --- a/USBLaminator/USBLaminator/io/SSR.hpp +++ b/USBLaminator/USBLaminator/io/SSR.hpp @@ -169,6 +169,9 @@ class SSR { } //out1::toggle(); } + void stop() { + pwm[0] = 0; pwm[1] = 0; pwm[2] = 0; pwm[3] = 0; pwm[4] = 0; pwm[5] = 0; pwm[6] = 0; + } static const uint8_t OUT1 = (1<<0); static const uint8_t OUT2 = (1<<1); static const uint8_t OUT3 = (1<<2); diff --git a/USBLaminator/USBLaminator/io/button.hpp b/USBLaminator/USBLaminator/io/button.hpp index 6311030..f10944c 100644 --- a/USBLaminator/USBLaminator/io/button.hpp +++ b/USBLaminator/USBLaminator/io/button.hpp @@ -26,7 +26,7 @@ class Button { } void intr() { GIFR = (1<