From 4a5d49c28d2ba174bd0bde53528528acb3395ce6 Mon Sep 17 00:00:00 2001 From: PlexSheep Date: Thu, 26 Oct 2023 12:12:06 +0200 Subject: [PATCH] no delay --- .gitignore | 1 + src/blink/build/main.elf | Bin 15376 -> 0 bytes src/blink/build/main.hex | 214 --- src/blink/build/main.o | 2985 -------------------------------------- src/blink/main.c | 7 +- 5 files changed, 2 insertions(+), 3205 deletions(-) create mode 100644 .gitignore delete mode 100755 src/blink/build/main.elf delete mode 100644 src/blink/build/main.hex delete mode 100644 src/blink/build/main.o diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..51b1099 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +src/blink/build diff --git a/src/blink/build/main.elf b/src/blink/build/main.elf deleted file mode 100755 index a2f9ad48ee0fca0252f0b40de0fa98949db493fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15376 zcmcJW3v`v$mB-I_LqaZugaG0bb9osMNpka!50a3C5C|mXAz<6NKfQT+v$NIpTDRt_M)wDw^c3cu9Ei$Dr|9#Fqx%(cWt7~=5 zw{pMl{Qi5NefD|W@80uWcq}V-k!4vzA2v}aG{r+4N)aLu*LdL&HZezpiV4!*q$}XM zXo7l?pA9dne-xUqTBHpnc?981wvg_4ycYbwzrtrlocQS6uZBK*^TRhoyVKC#Ku}1x z5MfV8JpIwrpFjQKYoEP#a^=6-!(RQi`?EL0PJH<0q9HFyCYELv!ku0Z8mDQQ8r&Xy{##} zY_+uRXtj2pzu0HZM6WMd=65nir?%|Zhh8tjKn3}S^VESWb>aLY8CG(sr&9G{_mYmw8tar*&&_hF`wn(_ukn= zv!m~6?T2^nI+$Z!XrJ zbPTCkF#XkCEE{&j!~M%__bDsvx--y;Huww>`}JIow!V8&MtxTFHD`cqz8Sa+cQ0zy z%+-JVJB)aG{7L6o%wt*b@t?DXkAKI$-hBu6o!F zp{^r)bkA!#H+6P(_6+Erx9{1#XK>GPX{QxeHL!7@W1tsyU(fsYbnfx>+~?unb2BpU zIYm%C@7dS2r)!{Rugo1~Avy>82CSXrK_%65UmL3D+PZsR`@Z(QyJc-E`}bVUIUfsk zkJRtNuB|;C`#X+y=&`8VvZ1}beRsPai;j-oj)NU1q@Bj%!S+YnJKOtU_l-qQS67E` zEPNjRV_`<-V?hzrSnTd^Yj*h3N9B6daGGJMqY z^NUkXz7(@#IJ8>?y##-JlMSkj-VnVl@`x*C`1RBeE#mia7t#6P|T}C4s@+!Jf0- z$092tABue6+IflkO(W2Cj!F^ue!e{@w0m<3{2jCoF%cIHI(F*lOrM7CAiOrD zQc5G*`u}-C$+Q^}P5p6^RGJy_c>kIS)2D5YULXC#=WZTSw;bUQGBX7Ujk~fWE;hNINZf{(O^je`N0EeBh<%+ZNfg7d(4G&f ztWG6c7*1Ajz>QQMJ7x+lfw$sxH9!P8a1~+(URGd$5UpbDT&a)~l%FBD;3%$~gkn$N z%3Dyz-OH7?p^VRv3blhc??4I3;XZFbnUKeoBTzz%xN;my*lMo44rSs$aOD`3@G`C( zg)(U^SL&cluH#A~lqto1xtJBdK`%^*EH9wsU10l$)R7%8#Jj z(#w@6pxinj74JA_K)DScOgOwsJ(Oub;Yt#e+h5_zVJH#DxbhMd$J<=_DU|8&a^)2$ zGfr{kWhgUGbLCYivp(SpWjOnDt~?6mj^9beI~p6HM1IMAHbR**%#}x=%)Q8!O;GOq z3s>@?%(Kb$>m7~9pxhPAmDy0{hjL{Wl&HyEnF%HOCa%nZ5_3COBB3~Ea^(&vv2(aG z4@z7VSMG!oAIFusP!f{4vKUI@0=&wNTPGbEO8#!gj7yL&@0Al?S0@?&Qin zP_mxo%5o@+p5w|gDB1hCk_%<=i(FX)CFf+0Uio zUA;emvit+?vl2?)FSt?+CI1ty6hT?>Iadmy6rAD8QYeN0!<8jaioW5>0w~3oq~gsd z9m@SzxKA3Cl>zeh?tNdRLJk<_snyYG?l3h*m>P$qz<#N00 z8|rFAab`h`D9$J>h)GwMh3b+aiWe5ZRJ1aESpm)q>6AgILONyADIKSrWra(fxGXBb zIU}RMnXWDi)g=R$!dLf!t z_0lt!6|WNMnHlsdEP#zJ3q@uQbtfHVS#*m0yn-UgnXu*OEXN6)L7YL16F8GNlQ@%F zijnPMI4A=Q0J4H4FVLvJ5YgWlZ!THrPrAq=1I~*IM1BSooFT-j3-Ta}Arl-5^D%sd z`AD)bAD$~Sizwmzf&!6On30j5D>8DI=EGQ!l?@O4EhGD~jAA(BO!bzbn4O=KR}iZ% z7*L`Zk(Gs6$;v_lSy}Ljii#fnt1K&*0A7E+uQ&9!BXQH3J9 zw7IIfyu7MG6`~gw=j3LR*L)U&id512O7O-M*~^O^>4jK#@y@?5&}iN$uy((by5Onf zeevDHYLQxi+J%qW1H8LyEd=2G$&UcMA^8!2wrXmV-4010hAmd?1p`uUq)lZ z`K#f69%IFHKemgz{5V+L4W>r|>aYvim(#NWb=U>%xE)>+XukyIxs0n&R?h@Tw2O5( zt0w}AAI3#J4^X@r7xgqiaR)BcraJ7R8wK?wfE2rU7Uv==%EK;Rz?E`Rhg}>(K|KQ? z#V(HEteyZUehU}1|5yATE^7C$_!qdSy}#m5aZx*e#lOQv?fVsfjf>j#E2iD6+Vd-> z2~j(K#dfgT?<<}J9-yK;?BZ6i+Ut{G7qh@WQAWx0!LKk*1gl*>iFT0+ew*1BgVhdS z*=hH9irF6kpJrSJ{)BNgSncdp{bn$YfjaDB6ZlJwXn!kM?deIhi|t^wqgT8OtoHMY zX^*FN^NI(-YA>(&6|maLD}Dn!883C%#m`VyyLe^)2z)!U{|aTbgID(7fYtt8@gKly z_pbN?I1Vp$*u`a()y`en1Mz9NfZ0RAnT&4)t3A8&cYxK7UGZG7+OI2)1*_e<;(Neq zudX-~taj>(mx0wjUGe>3wM$p*0;@f`;y%paERy%LSv%yzb{V1^7bt`)k zSRZu%T>xI71#mW)zILhO{MCGLsz%sXv-$$;29GueZUE){{6>OTSwVf7yapJn#P!5=f;2L3VQr@&7#{wMH47VjBw4C7w#DaHff19<8D zUqJZ@#)Bv~F+Pm)BF3+xd?({$C=W3{iSjANKSQ~ijnDhw#iJj?Hu10ES&V-Pp2YY+ z!Dm=~YU^FbzXNY#{(k^hGad$i%lMB}pUuzzf?r^a=kTJN@ffsK!FU{a3F9#E6~p7z=s*fgP&)d0{)iq0`S+2v%udU{TgEvOTeEp z&I7;8xCnfL@oMk^#%sWRjNRaG82=D_mhn39TDxz(ttUI`NHOfLAe21UE3g7pxB&uPpFUW~cZs zGN$%_%6O?!pYs2d*{S{CGp6>xV!RUkC&tv?dyIbo`(?(|zh5yf1M7qGr}|Svv|Teoj znIGfBu!}|9x;6-FN5B-1ZsFA4Ti{7pZ+d>-2Y~A z(D)svc&tCaWd0N3|6gDp?+b%37)-fx|MB?j$1PSKH2yQ_yFiPNQ^4Fm3v8psiG#*N zlr=Q@{+UNqoruaUcb7I-x=Kn*8{F$-zxeMsx7Eva#Pk)G9R zCOHv0U6Z`mWbZY_dv#JAa&S6zAyyaSbRk|B5_Ca_b?UfI9oVTO$Lh$jI&!Rz9IGSa z*B8}#td1P3Bgg8hmaI2}1&N5-Q_ zRXtuuj@Oa#dyvm*X`^H)S4z`qql{$RPFbSHos^2xMkzWa zt9mjF73G>wrVw(8J8k4I7r9*EP8(H9rtorAr_eCSMeMXub-9e?5_Z~T9+Z$=w<(l@ zT&7MNRhJ7@E>dJoQBo);xis<9B1+y4Q2@CZDzPhR@PAW;#Eg9!Zw`#7Yxw^3;ZiBSONUKvtbgGa}^aE`W1Qg=z2vti>~u5NB0}OZRO@=EWJjrb$|o}@Rsob<3ie1lyPN~ zUprWOE|;1eSACD89hGBL$h_S&mzE1;<#D7}e!CwtVjksQ|fHCyhkC~2-{ zBTd;B=43BVFDfp`x<;>P-hI=hmNBXz!TQFsg{mZHI9=YKAXNKzlxC8zle~hQ?40HD z2Bq?aeXYBs-hU!le`zj@3$qITYMOGr!%Y~aw9VIoBdR|rc)bfB<_8^ub z&AzXCGSwb^(*m-x@(c2oeRrtnHsGs1F#a@KIeK(k^C~H;GHDujC ziikcn%0(=q8XvA{Dk;Ua3E!;fx>lEDXQJf0E2^xnrp8^{B%*5Tn%q&9waroZT{5cN zy}qip^j`3+55=)J7VXiyhP#yh-0edGJv&hp=Y!Bu{*#CKo$ z|2J7x{Wx|yG%C|qWICGg(t9~#{TMb9W%7$55eLPasfzMUHf^Wvgg%Dgm!<(%@7HMg z`yKh~!-36=Lj$h(iY$*+ICH-=_}!$FWwvrwri!bk;F(t-mDHhQ&>-qESwe3SqE@-c zv$kyl=`tA}h2Il;Fqo~~Th`-Zn}%mWRKa^t4EaX_# dD2kD2Jj*B1d+40#H(TzPnIgn4?S!lL`#%DcV+a5M diff --git a/src/blink/build/main.hex b/src/blink/build/main.hex deleted file mode 100644 index 07c7e1a..0000000 --- a/src/blink/build/main.hex +++ /dev/null @@ -1,214 +0,0 @@ -:100000000C9434000C943E000C943E000C943E0082 -:100010000C943E000C943E000C943E000C943E0068 -:100020000C943E000C943E000C943E000C943E0058 -:100030000C943E000C943E000C943E000C943E0048 -:100040000C943E000C943E000C943E000C943E0038 -:100050000C943E000C943E000C943E000C943E0028 -:100060000C943E000C943E0011241FBECFEFD8E04C -:10007000DEBFCDBF0E9440000C94A1060C9400008E -:100080000F931F93CF93DF93CDB7DEB7C057D1093E -:100090000FB6F894DEBF0FBECDBF84E290E02FEF25 -:1000A000FC01208385E290E0FC01208185E290E064 -:1000B0002062FC0120839E012D593F4F80E090E09B -:1000C000AAEFB3E4F90180839183A283B3838E0105 -:1000D00009591F4FCE018D599F4F20E030E04AE76C -:1000E00055E4FC0160817181828193810E940C063C -:1000F000DC01CB01F80180839183A283B383CE011D -:1001000089599F4F20E030E040E85FE3FC016081C7 -:100110007181828193810E94860581154CF4CE0104 -:1001200085599F4F21E030E0FC01318320836EC070 -:10013000CE0189599F4F20E03FEF4FE757E4FC0184 -:1001400060817181828193810E94070681300CF465 -:100150004BC0CE018D599F4F20E030E040E251E48A -:10016000FC0160817181828193810E940C06DC0117 -:10017000CB018E0105591F4FBC01CD010E948B059B -:10018000DC01CB01F8019183808325C0CE01835926 -:100190009F4F20E931E0FC0131832083CE01835958 -:1001A0009F4FFC01808191810197F1F79E012359B6 -:1001B0003F4FF901918380830000CE0185599F4F05 -:1001C0009E0125593F4FF90120813181215031098C -:1001D000FC0131832083CE0185599F4FFC01808132 -:1001E0009181009799F62DC08E0105591F4FCE01C0 -:1001F00089599F4FFC0160817181828193810E94A6 -:100200008B05DC01CB01F80191838083CE018159FC -:100210009F4F9E0125593F4FF90120813181FC01FB -:1002200031832083CE0181599F4FFC0180819181D0 -:100230000197F1F79E0121593F4FF9019183808386 -:10024000000085E290E0FC01208185E290E02F7DB6 -:10025000FC0120839E012B5A3F4F80E090E0AAEFE3 -:10026000B3E4F90180839183A283B3838E01075A9B -:100270001F4FCE018B5A9F4F20E030E04AE755E4F4 -:10028000FC0160817181828193810E940C06DC01F6 -:10029000CB01F80180839183A283B383CE01875A77 -:1002A0009F4F20E030E040E85FE3FC016081718116 -:1002B000828193810E94860581154CF4CE01835A78 -:1002C0009F4F21E030E0FC01318320836EC0CE01DE -:1002D000875A9F4F20E03FEF4FE757E4FC016081D2 -:1002E0007181828193810E94070681300CF44BC09A -:1002F000CE018B5A9F4F20E030E040E251E4FC01F8 -:1003000060817181828193810E940C06DC01CB01A6 -:100310008E01035A1F4FBC01CD010E948B05DC01E9 -:10032000CB01F8019183808325C0CE01815A9F4F74 -:1003300020E931E0FC0131832083CE01815A9F4FB7 -:10034000FC01808191810197F1F79E01215A3F4F75 -:10035000F901918380830000CE01835A9F4F9E0153 -:10036000235A3F4FF9012081318121503109FC018D -:1003700031832083CE01835A9F4FFC01808191817C -:10038000009799F62DC08E01035A1F4FCE01875A50 -:100390009F4FFC0160817181828193810E948B0556 -:1003A000DC01CB01F80191838083CE018F599F4FEF -:1003B0009E01235A3F4FF90120813181FC01318395 -:1003C0002083CE018F599F4FFC018081918101973D -:1003D000F1F79E012F593F4FF9019183808300006F -:1003E00085E290E0FC01208185E290E02061FC0143 -:1003F00020839E01295B3F4F80E090E0AAEFB3E4A9 -:10040000F90180839183A283B3838E01055B1F4F23 -:10041000CE01895B9F4F20E030E04AE755E4FC01C4 -:1004200060817181828193810E940C06DC01CB0185 -:10043000F80180839183A283B383CE01855B9F4FB4 -:1004400020E030E040E85FE3FC016081718182815F -:1004500093810E94860581154CF4CE01815B9F4FEC -:1004600021E030E0FC01318320836EC0CE01855B4A -:100470009F4F20E03FEF4FE757E4FC01608171811F -:10048000828193810E94070681300CF44BC0CE011B -:10049000895B9F4F20E030E040E251E4FC01608145 -:1004A0007181828193810E940C06DC01CB018E0157 -:1004B000015B1F4FBC01CD010E948B05DC01CB010C -:1004C000F8019183808325C0CE018F5A9F4F20E988 -:1004D00031E0FC0131832083CE018F5A9F4FFC0114 -:1004E000808191810197F1F79E012F5A3F4FF901C9 -:1004F000918380830000CE01815B9F4F9E01215B31 -:100500003F4FF9012081318121503109FC013183B4 -:100510002083CE01815B9F4FFC01808191810097F8 -:1005200099F62DC08E01015B1F4FCE01855B9F4F59 -:10053000FC0160817181828193810E948B05DC01C5 -:10054000CB01F80191838083CE018D5A9F4F9E018C -:10055000215B3F4FF90120813181FC0131832083F0 -:10056000CE018D5A9F4FFC01808191810197F1F757 -:100570009E012D5A3F4FF90191838083000085E24F -:1005800090E0FC01208185E290E02F7EFC01208339 -:1005900080E090E0AAEFB3E489AF9AAFABAFBCAF15 -:1005A00020E030E04AE755E469AD7AAD8BAD9CAD13 -:1005B0000E940C06DC01CB019E01235C3F4FF90138 -:1005C00080839183A283B38320E030E040E85FE33F -:1005D000CE01CD96FC0160817181828193810E9460 -:1005E000860581154CF4CE018F5B9F4F21E030E0F2 -:1005F000FC013183208368C020E03FEF4FE757E4E0 -:10060000CE01CD96FC0160817181828193810E942F -:10061000070681300CF447C020E030E040E251E4AE -:1006200069AD7AAD8BAD9CAD0E940C06DC01CB01AF -:100630008E010F5B1F4FBC01CD010E948B05DC01B9 -:10064000CB01F8019183808325C0CE018D5B9F4F44 -:1006500020E931E0FC0131832083CE018D5B9F4F87 -:10066000FC01808191810197F1F79E012D5B3F4F45 -:10067000F901918380830000CE018F5B9F4F9E0123 -:100680002F5B3F4FF9012081318121503109FC015D -:1006900031832083CE018F5B9F4FFC01808191814C -:1006A000009799F62CC08E010F5B1F4FCE01CD969F -:1006B000FC0160817181828193810E948B05DC0144 -:1006C000CB01F80191838083CE018B5B9F4F9E010C -:1006D0002F5B3F4FF90120813181FC013183208361 -:1006E000CE018B5B9F4FFC01808191810197F1F7D7 -:1006F0009E012B5B3F4FF90191838083000085E2CF -:1007000090E0FC01208185E290E02860FC012083DC -:1007100080E090E0AAEFB3E48BA79CA7ADA7BEA7AB -:1007200020E030E04AE755E46BA57CA58DA59EA5A9 -:100730000E940C06DC01CB018FA798ABA9ABBAAB2A -:1007400020E030E040E85FE36FA578A989A99AA985 -:100750000E94860581152CF481E090E09CAB8BAB68 -:1007600040C020E03FEF4FE757E46FA578A989A983 -:100770009AA90E940706813054F120E030E040E25F -:1007800051E46BA57CA58DA59EA50E940C06DC01FD -:10079000CB01BC01CD010E948B05DC01CB019CABE0 -:1007A0008BAB10C080E991E09EAB8DAB8DA99EA96B -:1007B0000197F1F79EAB8DAB00008BA99CA9019727 -:1007C0009CAB8BAB8BA99CA9009761F715C06FA55B -:1007D00078A989A99AA90E948B05DC01CB019CAB61 -:1007E0008BAB8BA99CA998AF8FAB8FA998AD0197C4 -:1007F000F1F798AF8FAB000085E290E0FC0120811B -:1008000085E290E0277FFC01208380E090E0AAEF62 -:10081000B3E48D8F9E8FAF8FB8A320E030E04AE71E -:1008200055E46D8D7E8D8F8D98A10E940C06DC01A4 -:10083000CB0189A39AA3ABA3BCA320E030E040E89E -:100840005FE369A17AA18BA19CA10E948605811515 -:100850002CF481E090E09EA38DA340C020E03FEF08 -:100860004FE757E469A17AA18BA19CA10E940706DA -:10087000813054F120E030E040E251E46D8D7E8D16 -:100880008F8D98A10E940C06DC01CB01BC01CD012B -:100890000E948B05DC01CB019EA38DA310C080E9D3 -:1008A00091E098A78FA38FA198A50197F1F798A73A -:1008B0008FA300008DA19EA101979EA38DA38DA162 -:1008C0009EA1009761F715C069A17AA18BA19CA197 -:1008D0000E948B05DC01CB019EA38DA38DA19EA15F -:1008E0009AA789A789A59AA50197F1F79AA789A739 -:1008F000000085E290E0FC01208185E290E0286024 -:10090000FC01208385E290E0FC01208185E290E0FB -:100910002061FC01208380E090E0AAEFB3E48F87A0 -:10092000988BA98BBA8B20E030E04AE755E46F85BD -:10093000788989899A890E940C06DC01CB018B8B0E -:100940009C8BAD8BBE8B20E030E040E85FE36B8991 -:100950007C898D899E890E94860581152CF481E011 -:1009600090E0988F8F8B40C020E03FEF4FE757E437 -:100970006B897C898D899E890E940706813054F19C -:1009800020E030E040E251E46F85788989899A89D6 -:100990000E940C06DC01CB01BC01CD010E948B053D -:1009A000DC01CB01988F8F8B10C080E991E09A8F8A -:1009B000898F898D9A8D0197F1F79A8F898F000021 -:1009C0008F89988D0197988F8F8B8F89988D00973D -:1009D00061F715C06B897C898D899E890E948B0582 -:1009E000DC01CB01988F8F8B8F89988D9C8F8B8F9B -:1009F0008B8D9C8D0197F1F79C8F8B8F000085E28A -:100A000090E0FC01208185E290E0277FFC012083BB -:100A100085E290E0FC01208185E290E02F7EFC01E0 -:100A2000208380E090E0AAEFB3E489839A83AB83CC -:100A3000BC8320E030E04AE755E469817A818B810C -:100A40009C810E940C06DC01CB018D839E83AF83C9 -:100A5000B88720E030E040E85FE36D817E818F81E0 -:100A600098850E94860581152CF481E090E09A8794 -:100A7000898740C020E03FEF4FE757E46D817E81DA -:100A80008F8198850E940706813054F120E030E084 -:100A900040E251E469817A818B819C810E940C063D -:100AA000DC01CB01BC01CD010E948B05DC01CB0137 -:100AB0009A87898710C080E991E09C878B878B8516 -:100AC0009C850197F1F79C878B87000089859A8523 -:100AD00001979A87898789859A85009761F715C05C -:100AE0006D817E818F8198850E948B05DC01CB0111 -:100AF0009A87898789859A859E878D878D859E852A -:100B00000197F1F79E878D870000CCCA0E94BA0535 -:100B100008F481E008950E94E60588F09F5798F058 -:100B2000B92F9927B751B0F0E1F0660F771F881FF2 -:100B3000991F1AF0BA95C9F714C0B13091F00E940C -:100B40000006B1E008950C940006672F782F8827DF -:100B5000B85F39F0B93FCCF3869577956795B39533 -:100B6000D9F73EF490958095709561957F4F8F4FA2 -:100B70009F4F0895990F0008550FAA0BE0E8FEEF6C -:100B800016161706E807F907C0F012161306E40751 -:100B9000F50798F0621B730B840B950B39F40A264A -:100BA00061F0232B242B252B21F408950A2609F428 -:100BB000A140A6958FEF811D811D089557FD905886 -:100BC000440F551F59F05F3F71F04795880F97FB11 -:100BD000991F61F09F3F79F08795089512161306CB -:100BE0001406551FF2CF4695F1DF08C016161706FA -:100BF0001806991FF1CF869571056105089408952F -:100C0000E894BB2766277727CB0197F908950E94C0 -:100C1000BA0508F48FEF08950E941F060C94900601 -:100C20000E94820638F00E94890620F0952311F078 -:100C30000C9479060C947F0611240C9401060E94F2 -:100C4000DE0570F3959FC1F3950F50E0551F629F2D -:100C5000F001729FBB27F00DB11D639FAA27F00D15 -:100C6000B11DAA1F649F6627B00DA11D661F829F3C -:100C70002227B00DA11D621F739FB00DA11D621F21 -:100C8000839FA00D611D221F749F3327A00D611D3E -:100C9000231F849F600D211D822F762F6A2F112420 -:100CA0009F5750409AF0F1F088234AF0EE0FFF1F53 -:100CB000BB1F661F771F881F91505040A9F79E3FAA -:100CC000510580F00C9479060C9401065F3FE4F323 -:100CD000983ED4F3869577956795B795F795E79500 -:100CE0009F5FC1F7FE2B880F911D9695879597F909 -:100CF000089597F99F6780E870E060E008959FEF9E -:100D000080EC089500240A941616170618060906A2 -:100D1000089500240A941216130614060506089571 -:100D2000092E0394000C11F4882352F0BB0F40F4F9 -:100D3000BF2B11F460FF04C06F5F7F4F8F4F9F4F39 -:060D40000895F894FFCFB6 -:00000001FF diff --git a/src/blink/build/main.o b/src/blink/build/main.o deleted file mode 100644 index ec979fb..0000000 --- a/src/blink/build/main.o +++ /dev/null @@ -1,2985 +0,0 @@ -# 0 "main.c" -# 1 "/home/plex/Documents/code/c/dhbw-sys/src/blink//" -# 0 "" -# 0 "" -# 1 "main.c" - -# 1 "/usr/avr/include/avr/io.h" 1 3 - -# 1 "/usr/avr/include/avr/io.h" 3 -/* Copyright (c) 2002,2003,2005,2006,2007 Marek Michalkiewicz, Joerg Wunsch - Copyright (c) 2007 Eric B. Weddington - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. */ - -/* $Id$ */ - -/** \file */ -/** \defgroup avr_io : AVR device-specific IO definitions - \code #include \endcode - - This header file includes the apropriate IO definitions for the - device that has been specified by the -mmcu= compiler - command-line switch. This is done by diverting to the appropriate - file <avr/ioXXXX.h> which should - never be included directly. Some register names common to all - AVR devices are defined directly within <avr/common.h>, - which is included in <avr/io.h>, - but most of the details come from the respective include file. - - Note that this file always includes the following files: - \code - #include - #include - #include - #include - \endcode - See \ref avr_sfr for more details about that header file. - - Included are definitions of the IO register set and their - respective bit values as specified in the Atmel documentation. - Note that inconsistencies in naming conventions, - so even identical functions sometimes get different names on - different devices. - - Also included are the specific names useable for interrupt - function definitions as documented - \ref avr_signames "here". - - Finally, the following macros are defined: - - - \b RAMEND -
- The last on-chip RAM address. -
- - \b XRAMEND -
- The last possible RAM location that is addressable. This is equal to - RAMEND for devices that do not allow for external RAM. For devices - that allow external RAM, this will be larger than RAMEND. -
- - \b E2END -
- The last EEPROM address. -
- - \b FLASHEND -
- The last byte address in the Flash program space. -
- - \b SPM_PAGESIZE -
- For devices with bootloader support, the flash pagesize - (in bytes) to be used for the \c SPM instruction. - - \b E2PAGESIZE -
- The size of the EEPROM page. - -*/ - - - - -# 1 "/usr/avr/include/avr/sfr_defs.h" 1 3 -/* Copyright (c) 2002, Marek Michalkiewicz - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. */ - -/* avr/sfr_defs.h - macros for accessing AVR special function registers */ - -/* $Id$ */ - - - - -/** \defgroup avr_sfr_notes Additional notes from - \ingroup avr_sfr - - The \c file is included by all of the \c - files, which use macros defined here to make the special function register - definitions look like C variables or simple constants, depending on the - _SFR_ASM_COMPAT define. Some examples from \c to - show how to define such macros: - -\code -#define PORTA _SFR_IO8(0x02) -#define EEAR _SFR_IO16(0x21) -#define UDR0 _SFR_MEM8(0xC6) -#define TCNT3 _SFR_MEM16(0x94) -#define CANIDT _SFR_MEM32(0xF0) -\endcode - - If \c _SFR_ASM_COMPAT is not defined, C programs can use names like - PORTA directly in C expressions (also on the left side of - assignment operators) and GCC will do the right thing (use short I/O - instructions if possible). The \c __SFR_OFFSET definition is not used in - any way in this case. - - Define \c _SFR_ASM_COMPAT as 1 to make these names work as simple constants - (addresses of the I/O registers). This is necessary when included in - preprocessed assembler (*.S) source files, so it is done automatically if - \c __ASSEMBLER__ is defined. By default, all addresses are defined as if - they were memory addresses (used in \c lds/sts instructions). To use these - addresses in \c in/out instructions, you must subtract 0x20 from them. - - For more backwards compatibility, insert the following at the start of your - old assembler source file: - -\code -#define __SFR_OFFSET 0 -\endcode - - This automatically subtracts 0x20 from I/O space addresses, but it's a - hack, so it is recommended to change your source: wrap such addresses in - macros defined here, as shown below. After this is done, the - __SFR_OFFSET definition is no longer necessary and can be removed. - - Real example - this code could be used in a boot loader that is portable - between devices with \c SPMCR at different addresses. - -\verbatim -: #define SPMCR _SFR_IO8(0x37) -: #define SPMCR _SFR_MEM8(0x68) -\endverbatim - -\code -#if _SFR_IO_REG_P(SPMCR) - out _SFR_IO_ADDR(SPMCR), r24 -#else - sts _SFR_MEM_ADDR(SPMCR), r24 -#endif -\endcode - - You can use the \c in/out/cbi/sbi/sbic/sbis instructions, without the - _SFR_IO_REG_P test, if you know that the register is in the I/O - space (as with \c SREG, for example). If it isn't, the assembler will - complain (I/O address out of range 0...0x3f), so this should be fairly - safe. - - If you do not define \c __SFR_OFFSET (so it will be 0x20 by default), all - special register addresses are defined as memory addresses (so \c SREG is - 0x5f), and (if code size and speed are not important, and you don't like - the ugly \#if above) you can always use lds/sts to access them. But, this - will not work if __SFR_OFFSET != 0x20, so use a different macro - (defined only if __SFR_OFFSET == 0x20) for safety: - -\code - sts _SFR_ADDR(SPMCR), r24 -\endcode - - In C programs, all 3 combinations of \c _SFR_ASM_COMPAT and - __SFR_OFFSET are supported - the \c _SFR_ADDR(SPMCR) macro can be - used to get the address of the \c SPMCR register (0x57 or 0x68 depending on - device). */ -# 125 "/usr/avr/include/avr/sfr_defs.h" 3 -/* These only work in C programs. */ -# 1 "/usr/avr/include/inttypes.h" 1 3 -/* Copyright (c) 2004,2005,2007,2012 Joerg Wunsch - Copyright (c) 2005, Carlos Lamas - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. */ - -/* $Id$ */ - - - - -# 1 "/usr/lib/gcc/avr/13.2.0/include/stdint.h" 1 3 4 -# 9 "/usr/lib/gcc/avr/13.2.0/include/stdint.h" 3 4 -# 1 "/usr/avr/include/stdint.h" 1 3 4 -/* Copyright (c) 2002,2004,2005 Marek Michalkiewicz - Copyright (c) 2005, Carlos Lamas - Copyright (c) 2005,2007 Joerg Wunsch - Copyright (c) 2013 Embecosm - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. */ - -/* $Id$ */ - -/* - * ISO/IEC 9899:1999 7.18 Integer types - */ - - - - -/** \file */ -/** \defgroup avr_stdint : Standard Integer Types - \code #include \endcode - - Use [u]intN_t if you need exactly N bits. - - Since these typedefs are mandated by the C99 standard, they are preferred - over rolling your own typedefs. */ - - -/* - * __USING_MINT8 is defined to 1 if the -mint8 option is in effect. - */ -# 64 "/usr/avr/include/stdint.h" 3 4 -/* Integer types */ -# 123 "/usr/avr/include/stdint.h" 3 4 -/* actual implementation goes here */ - -typedef signed int int8_t __attribute__((__mode__(__QI__))); -typedef unsigned int uint8_t __attribute__((__mode__(__QI__))); -typedef signed int int16_t __attribute__ ((__mode__ (__HI__))); -typedef unsigned int uint16_t __attribute__ ((__mode__ (__HI__))); -typedef signed int int32_t __attribute__ ((__mode__ (__SI__))); -typedef unsigned int uint32_t __attribute__ ((__mode__ (__SI__))); - -typedef signed int int64_t __attribute__((__mode__(__DI__))); -typedef unsigned int uint64_t __attribute__((__mode__(__DI__))); - - - - -/** \name Integer types capable of holding object pointers - These allow you to declare variables of the same size as a pointer. */ - -/*@{*/ - -/** \ingroup avr_stdint - Signed pointer compatible type. */ - -typedef int16_t intptr_t; - -/** \ingroup avr_stdint - Unsigned pointer compatible type. */ - -typedef uint16_t uintptr_t; - -/*@}*/ - -/** \name Minimum-width integer types - Integer types having at least the specified width */ - -/*@{*/ - -/** \ingroup avr_stdint - signed int with at least 8 bits. */ - -typedef int8_t int_least8_t; - -/** \ingroup avr_stdint - unsigned int with at least 8 bits. */ - -typedef uint8_t uint_least8_t; - -/** \ingroup avr_stdint - signed int with at least 16 bits. */ - -typedef int16_t int_least16_t; - -/** \ingroup avr_stdint - unsigned int with at least 16 bits. */ - -typedef uint16_t uint_least16_t; - -/** \ingroup avr_stdint - signed int with at least 32 bits. */ - -typedef int32_t int_least32_t; - -/** \ingroup avr_stdint - unsigned int with at least 32 bits. */ - -typedef uint32_t uint_least32_t; - - -/** \ingroup avr_stdint - signed int with at least 64 bits. - \note This type is not available when the compiler - option -mint8 is in effect. */ - -typedef int64_t int_least64_t; - -/** \ingroup avr_stdint - unsigned int with at least 64 bits. - \note This type is not available when the compiler - option -mint8 is in effect. */ - -typedef uint64_t uint_least64_t; - - -/*@}*/ - - -/** \name Fastest minimum-width integer types - Integer types being usually fastest having at least the specified width */ - -/*@{*/ - -/** \ingroup avr_stdint - fastest signed int with at least 8 bits. */ - -typedef int8_t int_fast8_t; - -/** \ingroup avr_stdint - fastest unsigned int with at least 8 bits. */ - -typedef uint8_t uint_fast8_t; - -/** \ingroup avr_stdint - fastest signed int with at least 16 bits. */ - -typedef int16_t int_fast16_t; - -/** \ingroup avr_stdint - fastest unsigned int with at least 16 bits. */ - -typedef uint16_t uint_fast16_t; - -/** \ingroup avr_stdint - fastest signed int with at least 32 bits. */ - -typedef int32_t int_fast32_t; - -/** \ingroup avr_stdint - fastest unsigned int with at least 32 bits. */ - -typedef uint32_t uint_fast32_t; - - -/** \ingroup avr_stdint - fastest signed int with at least 64 bits. - \note This type is not available when the compiler - option -mint8 is in effect. */ - -typedef int64_t int_fast64_t; - -/** \ingroup avr_stdint - fastest unsigned int with at least 64 bits. - \note This type is not available when the compiler - option -mint8 is in effect. */ - -typedef uint64_t uint_fast64_t; - - -/*@}*/ - - -/** \name Greatest-width integer types - Types designating integer data capable of representing any value of - any integer type in the corresponding signed or unsigned category */ - -/*@{*/ - - - - - - -/** \ingroup avr_stdint - largest signed int available. */ - -typedef int64_t intmax_t; - -/** \ingroup avr_stdint - largest unsigned int available. */ - -typedef uint64_t uintmax_t; - - -/*@}*/ - - -/* Helping macro */ -# 298 "/usr/avr/include/stdint.h" 3 4 -/** \name Limits of specified-width integer types - C++ implementations should define these macros only when - __STDC_LIMIT_MACROS is defined before is included */ - -/*@{*/ - -/** \ingroup avr_stdint - largest positive value an int8_t can hold. */ - - - -/** \ingroup avr_stdint - smallest negative value an int8_t can hold. */ -# 328 "/usr/avr/include/stdint.h" 3 4 -/** \ingroup avr_stdint - largest value an uint8_t can hold. */ - - - -/** \ingroup avr_stdint - largest positive value an int16_t can hold. */ - - - -/** \ingroup avr_stdint - smallest negative value an int16_t can hold. */ - - - -/** \ingroup avr_stdint - largest value an uint16_t can hold. */ - - - -/** \ingroup avr_stdint - largest positive value an int32_t can hold. */ - - - -/** \ingroup avr_stdint - smallest negative value an int32_t can hold. */ - - - -/** \ingroup avr_stdint - largest value an uint32_t can hold. */ - - - - - -/** \ingroup avr_stdint - largest positive value an int64_t can hold. */ - - - -/** \ingroup avr_stdint - smallest negative value an int64_t can hold. */ - - - -/** \ingroup avr_stdint - largest value an uint64_t can hold. */ - - - -/*@}*/ - -/** \name Limits of minimum-width integer types */ -/*@{*/ - -/** \ingroup avr_stdint - largest positive value an int_least8_t can hold. */ - - - -/** \ingroup avr_stdint - smallest negative value an int_least8_t can hold. */ - - - -/** \ingroup avr_stdint - largest value an uint_least8_t can hold. */ - - - -/** \ingroup avr_stdint - largest positive value an int_least16_t can hold. */ - - - -/** \ingroup avr_stdint - smallest negative value an int_least16_t can hold. */ - - - -/** \ingroup avr_stdint - largest value an uint_least16_t can hold. */ - - - -/** \ingroup avr_stdint - largest positive value an int_least32_t can hold. */ - - - -/** \ingroup avr_stdint - smallest negative value an int_least32_t can hold. */ - - - -/** \ingroup avr_stdint - largest value an uint_least32_t can hold. */ - - - -/** \ingroup avr_stdint - largest positive value an int_least64_t can hold. */ - - - -/** \ingroup avr_stdint - smallest negative value an int_least64_t can hold. */ - - - -/** \ingroup avr_stdint - largest value an uint_least64_t can hold. */ - - - -/*@}*/ - -/** \name Limits of fastest minimum-width integer types */ - -/*@{*/ - -/** \ingroup avr_stdint - largest positive value an int_fast8_t can hold. */ - - - -/** \ingroup avr_stdint - smallest negative value an int_fast8_t can hold. */ - - - -/** \ingroup avr_stdint - largest value an uint_fast8_t can hold. */ - - - -/** \ingroup avr_stdint - largest positive value an int_fast16_t can hold. */ - - - -/** \ingroup avr_stdint - smallest negative value an int_fast16_t can hold. */ - - - -/** \ingroup avr_stdint - largest value an uint_fast16_t can hold. */ - - - -/** \ingroup avr_stdint - largest positive value an int_fast32_t can hold. */ - - - -/** \ingroup avr_stdint - smallest negative value an int_fast32_t can hold. */ - - - -/** \ingroup avr_stdint - largest value an uint_fast32_t can hold. */ - - - -/** \ingroup avr_stdint - largest positive value an int_fast64_t can hold. */ - - - -/** \ingroup avr_stdint - smallest negative value an int_fast64_t can hold. */ - - - -/** \ingroup avr_stdint - largest value an uint_fast64_t can hold. */ - - - -/*@}*/ - -/** \name Limits of integer types capable of holding object pointers */ - -/*@{*/ - -/** \ingroup avr_stdint - largest positive value an intptr_t can hold. */ - - - -/** \ingroup avr_stdint - smallest negative value an intptr_t can hold. */ - - - -/** \ingroup avr_stdint - largest value an uintptr_t can hold. */ - - - -/*@}*/ - -/** \name Limits of greatest-width integer types */ - -/*@{*/ - -/** \ingroup avr_stdint - largest positive value an intmax_t can hold. */ - - - -/** \ingroup avr_stdint - smallest negative value an intmax_t can hold. */ - - - -/** \ingroup avr_stdint - largest value an uintmax_t can hold. */ - - - -/*@}*/ - -/** \name Limits of other integer types - C++ implementations should define these macros only when - __STDC_LIMIT_MACROS is defined before is included */ - -/*@{*/ - -/** \ingroup avr_stdint - largest positive value a ptrdiff_t can hold. */ - - - -/** \ingroup avr_stdint - smallest negative value a ptrdiff_t can hold. */ - - - - -/* Limits of sig_atomic_t */ -/* signal.h is currently not implemented (not avr/signal.h) */ - -/** \ingroup avr_stdint - largest positive value a sig_atomic_t can hold. */ - - - -/** \ingroup avr_stdint - smallest negative value a sig_atomic_t can hold. */ - - - - -/** \ingroup avr_stdint - largest value a size_t can hold. */ - - - - -/* Limits of wchar_t */ -/* wchar.h is currently not implemented */ -/* #define WCHAR_MAX */ -/* #define WCHAR_MIN */ - - -/* Limits of wint_t */ -/* wchar.h is currently not implemented */ -# 615 "/usr/avr/include/stdint.h" 3 4 -/** \name Macros for integer constants - C++ implementations should define these macros only when - __STDC_CONSTANT_MACROS is defined before is included. - - These definitions are valid for integer constants without suffix and - for macros defined as integer constant without suffix */ - -/* The GNU C preprocessor defines special macros in the implementation - namespace to allow a definition that works in #if expressions. */ -# 700 "/usr/avr/include/stdint.h" 3 4 -/*@}*/ -# 10 "/usr/lib/gcc/avr/13.2.0/include/stdint.h" 2 3 4 -# 38 "/usr/avr/include/inttypes.h" 2 3 - -/** \file */ -/** \defgroup avr_inttypes : Integer Type conversions - \code #include \endcode - - This header file includes the exact-width integer definitions from - , and extends them with additional facilities - provided by the implementation. - - Currently, the extensions include two additional integer types - that could hold a "far" pointer (i.e. a code pointer that can - address more than 64 KB), as well as standard names for all printf - and scanf formatting options that are supported by the \ref avr_stdio. - As the library does not support the full range of conversion - specifiers from ISO 9899:1999, only those conversions that are - actually implemented will be listed here. - - The idea behind these conversion macros is that, for each of the - types defined by , a macro will be supplied that portably - allows formatting an object of that type in printf() or scanf() - operations. Example: - - \code - #include - - uint8_t smallval; - int32_t longval; - ... - printf("The hexadecimal value of smallval is %" PRIx8 - ", the decimal value of longval is %" PRId32 ".\n", - smallval, longval); - \endcode -*/ - -/** \name Far pointers for memory access >64K */ - -/*@{*/ -/** \ingroup avr_inttypes - signed integer type that can hold a pointer > 64 KB */ -typedef int32_t int_farptr_t; - -/** \ingroup avr_inttypes - unsigned integer type that can hold a pointer > 64 KB */ -typedef uint32_t uint_farptr_t; -/*@}*/ - - - - -/** \name macros for printf and scanf format specifiers - - For C++, these are only included if __STDC_LIMIT_MACROS - is defined before including . - */ - -/*@{*/ -/** \ingroup avr_inttypes - decimal printf format for int8_t */ - -/** \ingroup avr_inttypes - decimal printf format for int_least8_t */ - -/** \ingroup avr_inttypes - decimal printf format for int_fast8_t */ - - -/** \ingroup avr_inttypes - integer printf format for int8_t */ - -/** \ingroup avr_inttypes - integer printf format for int_least8_t */ - -/** \ingroup avr_inttypes - integer printf format for int_fast8_t */ - - - -/** \ingroup avr_inttypes - decimal printf format for int16_t */ - -/** \ingroup avr_inttypes - decimal printf format for int_least16_t */ - -/** \ingroup avr_inttypes - decimal printf format for int_fast16_t */ - - -/** \ingroup avr_inttypes - integer printf format for int16_t */ - -/** \ingroup avr_inttypes - integer printf format for int_least16_t */ - -/** \ingroup avr_inttypes - integer printf format for int_fast16_t */ - - - -/** \ingroup avr_inttypes - decimal printf format for int32_t */ - -/** \ingroup avr_inttypes - decimal printf format for int_least32_t */ - -/** \ingroup avr_inttypes - decimal printf format for int_fast32_t */ - - -/** \ingroup avr_inttypes - integer printf format for int32_t */ - -/** \ingroup avr_inttypes - integer printf format for int_least32_t */ - -/** \ingroup avr_inttypes - integer printf format for int_fast32_t */ -# 173 "/usr/avr/include/inttypes.h" 3 -/** \ingroup avr_inttypes - decimal printf format for intptr_t */ - -/** \ingroup avr_inttypes - integer printf format for intptr_t */ - - -/** \ingroup avr_inttypes - octal printf format for uint8_t */ - -/** \ingroup avr_inttypes - octal printf format for uint_least8_t */ - -/** \ingroup avr_inttypes - octal printf format for uint_fast8_t */ - - -/** \ingroup avr_inttypes - decimal printf format for uint8_t */ - -/** \ingroup avr_inttypes - decimal printf format for uint_least8_t */ - -/** \ingroup avr_inttypes - decimal printf format for uint_fast8_t */ - - -/** \ingroup avr_inttypes - hexadecimal printf format for uint8_t */ - -/** \ingroup avr_inttypes - hexadecimal printf format for uint_least8_t */ - -/** \ingroup avr_inttypes - hexadecimal printf format for uint_fast8_t */ - - -/** \ingroup avr_inttypes - uppercase hexadecimal printf format for uint8_t */ - -/** \ingroup avr_inttypes - uppercase hexadecimal printf format for uint_least8_t */ - -/** \ingroup avr_inttypes - uppercase hexadecimal printf format for uint_fast8_t */ - - - -/** \ingroup avr_inttypes - octal printf format for uint16_t */ - -/** \ingroup avr_inttypes - octal printf format for uint_least16_t */ - -/** \ingroup avr_inttypes - octal printf format for uint_fast16_t */ - - -/** \ingroup avr_inttypes - decimal printf format for uint16_t */ - -/** \ingroup avr_inttypes - decimal printf format for uint_least16_t */ - -/** \ingroup avr_inttypes - decimal printf format for uint_fast16_t */ - - -/** \ingroup avr_inttypes - hexadecimal printf format for uint16_t */ - -/** \ingroup avr_inttypes - hexadecimal printf format for uint_least16_t */ - -/** \ingroup avr_inttypes - hexadecimal printf format for uint_fast16_t */ - - -/** \ingroup avr_inttypes - uppercase hexadecimal printf format for uint16_t */ - -/** \ingroup avr_inttypes - uppercase hexadecimal printf format for uint_least16_t */ - -/** \ingroup avr_inttypes - uppercase hexadecimal printf format for uint_fast16_t */ - - - -/** \ingroup avr_inttypes - octal printf format for uint32_t */ - -/** \ingroup avr_inttypes - octal printf format for uint_least32_t */ - -/** \ingroup avr_inttypes - octal printf format for uint_fast32_t */ - - -/** \ingroup avr_inttypes - decimal printf format for uint32_t */ - -/** \ingroup avr_inttypes - decimal printf format for uint_least32_t */ - -/** \ingroup avr_inttypes - decimal printf format for uint_fast32_t */ - - -/** \ingroup avr_inttypes - hexadecimal printf format for uint32_t */ - -/** \ingroup avr_inttypes - hexadecimal printf format for uint_least32_t */ - -/** \ingroup avr_inttypes - hexadecimal printf format for uint_fast32_t */ - - -/** \ingroup avr_inttypes - uppercase hexadecimal printf format for uint32_t */ - -/** \ingroup avr_inttypes - uppercase hexadecimal printf format for uint_least32_t */ - -/** \ingroup avr_inttypes - uppercase hexadecimal printf format for uint_fast32_t */ -# 328 "/usr/avr/include/inttypes.h" 3 -/** \ingroup avr_inttypes - octal printf format for uintptr_t */ - -/** \ingroup avr_inttypes - decimal printf format for uintptr_t */ - -/** \ingroup avr_inttypes - hexadecimal printf format for uintptr_t */ - -/** \ingroup avr_inttypes - uppercase hexadecimal printf format for uintptr_t */ - - - -/** \ingroup avr_inttypes - decimal scanf format for int8_t */ - -/** \ingroup avr_inttypes - decimal scanf format for int_least8_t */ - -/** \ingroup avr_inttypes - decimal scanf format for int_fast8_t */ - - -/** \ingroup avr_inttypes - generic-integer scanf format for int8_t */ - -/** \ingroup avr_inttypes - generic-integer scanf format for int_least8_t */ - -/** \ingroup avr_inttypes - generic-integer scanf format for int_fast8_t */ - - - -/** \ingroup avr_inttypes - decimal scanf format for int16_t */ - -/** \ingroup avr_inttypes - decimal scanf format for int_least16_t */ - -/** \ingroup avr_inttypes - decimal scanf format for int_fast16_t */ - - -/** \ingroup avr_inttypes - generic-integer scanf format for int16_t */ - -/** \ingroup avr_inttypes - generic-integer scanf format for int_least16_t */ - -/** \ingroup avr_inttypes - generic-integer scanf format for int_fast16_t */ - - - -/** \ingroup avr_inttypes - decimal scanf format for int32_t */ - -/** \ingroup avr_inttypes - decimal scanf format for int_least32_t */ - -/** \ingroup avr_inttypes - decimal scanf format for int_fast32_t */ - - -/** \ingroup avr_inttypes - generic-integer scanf format for int32_t */ - -/** \ingroup avr_inttypes - generic-integer scanf format for int_least32_t */ - -/** \ingroup avr_inttypes - generic-integer scanf format for int_fast32_t */ -# 420 "/usr/avr/include/inttypes.h" 3 -/** \ingroup avr_inttypes - decimal scanf format for intptr_t */ - -/** \ingroup avr_inttypes - generic-integer scanf format for intptr_t */ - - -/** \ingroup avr_inttypes - octal scanf format for uint8_t */ - -/** \ingroup avr_inttypes - octal scanf format for uint_least8_t */ - -/** \ingroup avr_inttypes - octal scanf format for uint_fast8_t */ - - -/** \ingroup avr_inttypes - decimal scanf format for uint8_t */ - -/** \ingroup avr_inttypes - decimal scanf format for uint_least8_t */ - -/** \ingroup avr_inttypes - decimal scanf format for uint_fast8_t */ - - -/** \ingroup avr_inttypes - hexadecimal scanf format for uint8_t */ - -/** \ingroup avr_inttypes - hexadecimal scanf format for uint_least8_t */ - -/** \ingroup avr_inttypes - hexadecimal scanf format for uint_fast8_t */ - - -/** \ingroup avr_inttypes - octal scanf format for uint16_t */ - -/** \ingroup avr_inttypes - octal scanf format for uint_least16_t */ - -/** \ingroup avr_inttypes - octal scanf format for uint_fast16_t */ - - -/** \ingroup avr_inttypes - decimal scanf format for uint16_t */ - -/** \ingroup avr_inttypes - decimal scanf format for uint_least16_t */ - -/** \ingroup avr_inttypes - decimal scanf format for uint_fast16_t */ - - -/** \ingroup avr_inttypes - hexadecimal scanf format for uint16_t */ - -/** \ingroup avr_inttypes - hexadecimal scanf format for uint_least16_t */ - -/** \ingroup avr_inttypes - hexadecimal scanf format for uint_fast16_t */ - - - -/** \ingroup avr_inttypes - octal scanf format for uint32_t */ - -/** \ingroup avr_inttypes - octal scanf format for uint_least32_t */ - -/** \ingroup avr_inttypes - octal scanf format for uint_fast32_t */ - - -/** \ingroup avr_inttypes - decimal scanf format for uint32_t */ - -/** \ingroup avr_inttypes - decimal scanf format for uint_least32_t */ - -/** \ingroup avr_inttypes - decimal scanf format for uint_fast32_t */ - - -/** \ingroup avr_inttypes - hexadecimal scanf format for uint32_t */ - -/** \ingroup avr_inttypes - hexadecimal scanf format for uint_least32_t */ - -/** \ingroup avr_inttypes - hexadecimal scanf format for uint_fast32_t */ -# 539 "/usr/avr/include/inttypes.h" 3 -/** \ingroup avr_inttypes - octal scanf format for uintptr_t */ - -/** \ingroup avr_inttypes - decimal scanf format for uintptr_t */ - -/** \ingroup avr_inttypes - hexadecimal scanf format for uintptr_t */ - - -/*@}*/ -# 127 "/usr/avr/include/avr/sfr_defs.h" 2 3 -# 194 "/usr/avr/include/avr/sfr_defs.h" 3 -/** \name Bit manipulation */ - -/*@{*/ -/** \def _BV - \ingroup avr_sfr - - \code #include \endcode - - Converts a bit number into a byte value. - - \note The bit shift is performed by the compiler which then inserts the - result into the code. Thus, there is no run-time overhead when using - _BV(). */ - - - -/*@}*/ -# 219 "/usr/avr/include/avr/sfr_defs.h" 3 -/** \name IO register bit manipulation */ - -/*@{*/ - - - -/** \def bit_is_set - \ingroup avr_sfr - - \code #include \endcode - - Test whether bit \c bit in IO register \c sfr is set. - This will return a 0 if the bit is clear, and non-zero - if the bit is set. */ - - - -/** \def bit_is_clear - \ingroup avr_sfr - - \code #include \endcode - - Test whether bit \c bit in IO register \c sfr is clear. - This will return non-zero if the bit is clear, and a 0 - if the bit is set. */ - - - -/** \def loop_until_bit_is_set - \ingroup avr_sfr - - \code #include \endcode - - Wait until bit \c bit in IO register \c sfr is set. */ - - - -/** \def loop_until_bit_is_clear - \ingroup avr_sfr - - \code #include \endcode - - Wait until bit \c bit in IO register \c sfr is clear. */ - - - -/*@}*/ -# 100 "/usr/avr/include/avr/io.h" 2 3 -# 272 "/usr/avr/include/avr/io.h" 3 -# 1 "/usr/avr/include/avr/iom328p.h" 1 3 -/* Copyright (c) 2007 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. -*/ - -/* $Id: iom328p.h 2444 2014-08-11 22:10:47Z joerg_wunsch $ */ - -/* avr/iom328p.h - definitions for ATmega328P. */ - -/* This file should only be included from , never directly. */ -# 52 "/usr/avr/include/avr/iom328p.h" 3 -/* Registers and associated bit numbers */ -# 799 "/usr/avr/include/avr/iom328p.h" 3 -/* Interrupt Vectors */ -/* Interrupt Vector 0 is the reset vector. */ -# 881 "/usr/avr/include/avr/iom328p.h" 3 -/* Constants */ -# 893 "/usr/avr/include/avr/iom328p.h" 3 -/* Fuses */ - - -/* Low Fuse Byte */ -# 907 "/usr/avr/include/avr/iom328p.h" 3 -/* High Fuse Byte */ -# 918 "/usr/avr/include/avr/iom328p.h" 3 -/* Extended Fuse Byte */ - - - - - - - -/* Lock Bits */ - - - - - -/* Signature */ -# 273 "/usr/avr/include/avr/io.h" 2 3 -# 627 "/usr/avr/include/avr/io.h" 3 -# 1 "/usr/avr/include/avr/portpins.h" 1 3 -/* Copyright (c) 2003 Theodore A. Roth - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. */ - -/* $Id$ */ - - - - -/* This file should only be included from , never directly. */ - - - - - -/* Define Generic PORTn, DDn, and PINn values. */ - -/* Port Data Register (generic) */ -# 54 "/usr/avr/include/avr/portpins.h" 3 -/* Port Data Direction Register (generic) */ -# 64 "/usr/avr/include/avr/portpins.h" 3 -/* Port Input Pins (generic) */ -# 74 "/usr/avr/include/avr/portpins.h" 3 -/* Define PORTxn an Pxn values for all possible port pins if not defined already by io.h. */ - -/* PORT A */ -# 119 "/usr/avr/include/avr/portpins.h" 3 -/* PORT B */ -# 162 "/usr/avr/include/avr/portpins.h" 3 -/* PORT C */ -# 205 "/usr/avr/include/avr/portpins.h" 3 -/* PORT D */ -# 248 "/usr/avr/include/avr/portpins.h" 3 -/* PORT E */ -# 291 "/usr/avr/include/avr/portpins.h" 3 -/* PORT F */ -# 334 "/usr/avr/include/avr/portpins.h" 3 -/* PORT G */ -# 377 "/usr/avr/include/avr/portpins.h" 3 -/* PORT H */ -# 420 "/usr/avr/include/avr/portpins.h" 3 -/* PORT J */ -# 463 "/usr/avr/include/avr/portpins.h" 3 -/* PORT K */ -# 506 "/usr/avr/include/avr/portpins.h" 3 -/* PORT L */ -# 628 "/usr/avr/include/avr/io.h" 2 3 - -# 1 "/usr/avr/include/avr/common.h" 1 3 -/* Copyright (c) 2007 Eric B. Weddington - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. */ - -/* $Id$ */ - - - - - -# 1 "/usr/avr/include/avr/sfr_defs.h" 1 3 -/* Copyright (c) 2002, Marek Michalkiewicz - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. */ - -/* avr/sfr_defs.h - macros for accessing AVR special function registers */ - -/* $Id$ */ -# 38 "/usr/avr/include/avr/common.h" 2 3 - -/* -This purpose of this header is to define registers that have not been -previously defined in the individual device IO header files, and to define -other symbols that are common across AVR device families. - -This file is designed to be included in after the individual -device IO header files, and after - -*/ - -/*------------ Registers Not Previously Defined ------------*/ - -/* -These are registers that are not previously defined in the individual -IO header files, OR they are defined here because they are used in parts of -avr-libc even if a device is not selected but a general architecture has -been selected. -*/ - - -/* -Stack pointer register. - -AVR architecture 1 has no RAM, thus no stack pointer. - -All other architectures do have a stack pointer. Some devices have only -less than 256 bytes of possible RAM locations (128 Bytes of SRAM -and no option for external RAM), thus SPH is officially "reserved" -for them. -*/ -# 98 "/usr/avr/include/avr/common.h" 3 -/* Status Register */ -# 108 "/usr/avr/include/avr/common.h" 3 -/* SREG bit definitions */ -# 206 "/usr/avr/include/avr/common.h" 3 -/*------------ Common Symbols ------------*/ - -/* -Generic definitions for registers that are common across multiple AVR devices -and families. -*/ - -/* Pointer registers definitions */ -# 224 "/usr/avr/include/avr/common.h" 3 -/* Status Register */ -# 234 "/usr/avr/include/avr/common.h" 3 -/* Stack Pointer (combined) Register */ -# 244 "/usr/avr/include/avr/common.h" 3 -/* Stack Pointer High Register */ -# 255 "/usr/avr/include/avr/common.h" 3 -/* Stack Pointer Low Register */ -# 265 "/usr/avr/include/avr/common.h" 3 -/* RAMPD Register */ -# 275 "/usr/avr/include/avr/common.h" 3 -/* RAMPX Register */ -# 285 "/usr/avr/include/avr/common.h" 3 -/* RAMPY Register */ -# 295 "/usr/avr/include/avr/common.h" 3 -/* RAMPZ Register */ -# 305 "/usr/avr/include/avr/common.h" 3 -/* Extended Indirect Register */ -# 315 "/usr/avr/include/avr/common.h" 3 -/*------------ Workaround to old compilers (4.1.2 and earlier) ------------*/ -# 630 "/usr/avr/include/avr/io.h" 2 3 - -# 1 "/usr/avr/include/avr/version.h" 1 3 -/* Copyright (c) 2005, Joerg Wunsch -*- c -*- - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. */ - -/* $Id$ */ - -/** \defgroup avr_version : avr-libc version macros - \code #include \endcode - - This header file defines macros that contain version numbers and - strings describing the current version of avr-libc. - - The version number itself basically consists of three pieces that - are separated by a dot: the major number, the minor number, and - the revision number. For development versions (which use an odd - minor number), the string representation additionally gets the - date code (YYYYMMDD) appended. - - This file will also be included by \c . That way, - portable tests can be implemented using \c that can be - used in code that wants to remain backwards-compatible to library - versions prior to the date when the library version API had been - added, as referenced but undefined C preprocessor macros - automatically evaluate to 0. -*/ - - - - -/** \ingroup avr_version - String literal representation of the current library version. */ - - -/** \ingroup avr_version - Numerical representation of the current library version. - - In the numerical representation, the major number is multiplied by - 10000, the minor number by 100, and all three parts are then - added. It is intented to provide a monotonically increasing - numerical value that can easily be used in numerical checks. - */ - - -/** \ingroup avr_version - String literal representation of the release date. */ - - -/** \ingroup avr_version - Numerical representation of the release date. */ - - -/** \ingroup avr_version - Library major version number. */ - - -/** \ingroup avr_version - Library minor version number. */ - - -/** \ingroup avr_version - Library revision number. */ -# 632 "/usr/avr/include/avr/io.h" 2 3 - - - - - -/* Include fuse.h after individual IO header files. */ -# 1 "/usr/avr/include/avr/fuse.h" 1 3 -/* Copyright (c) 2007, Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. */ - -/* $Id$ */ - -/* avr/fuse.h - Fuse API */ - - - - -/* This file must be explicitly included by . */ - - - - - -/** \file */ -/** \defgroup avr_fuse : Fuse Support - - \par Introduction - - The Fuse API allows a user to specify the fuse settings for the specific - AVR device they are compiling for. These fuse settings will be placed - in a special section in the ELF output file, after linking. - - Programming tools can take advantage of the fuse information embedded in - the ELF file, by extracting this information and determining if the fuses - need to be programmed before programming the Flash and EEPROM memories. - This also allows a single ELF file to contain all the - information needed to program an AVR. - - To use the Fuse API, include the header file, which in turn - automatically includes the individual I/O header file and the - file. These other two files provides everything necessary to set the AVR - fuses. - - \par Fuse API - - Each I/O header file must define the FUSE_MEMORY_SIZE macro which is - defined to the number of fuse bytes that exist in the AVR device. - - A new type, __fuse_t, is defined as a structure. The number of fields in - this structure are determined by the number of fuse bytes in the - FUSE_MEMORY_SIZE macro. - - If FUSE_MEMORY_SIZE == 1, there is only a single field: byte, of type - unsigned char. - - If FUSE_MEMORY_SIZE == 2, there are two fields: low, and high, of type - unsigned char. - - If FUSE_MEMORY_SIZE == 3, there are three fields: low, high, and extended, - of type unsigned char. - - If FUSE_MEMORY_SIZE > 3, there is a single field: byte, which is an array - of unsigned char with the size of the array being FUSE_MEMORY_SIZE. - - A convenience macro, FUSEMEM, is defined as a GCC attribute for a - custom-named section of ".fuse". - - A convenience macro, FUSES, is defined that declares a variable, __fuse, of - type __fuse_t with the attribute defined by FUSEMEM. This variable - allows the end user to easily set the fuse data. - - \note If a device-specific I/O header file has previously defined FUSEMEM, - then FUSEMEM is not redefined. If a device-specific I/O header file has - previously defined FUSES, then FUSES is not redefined. - - Each AVR device I/O header file has a set of defined macros which specify the - actual fuse bits available on that device. The AVR fuses have inverted - values, logical 1 for an unprogrammed (disabled) bit and logical 0 for a - programmed (enabled) bit. The defined macros for each individual fuse - bit represent this in their definition by a bit-wise inversion of a mask. - For example, the FUSE_EESAVE fuse in the ATmega128 is defined as: - \code - #define FUSE_EESAVE ~_BV(3) - \endcode - \note The _BV macro creates a bit mask from a bit number. It is then - inverted to represent logical values for a fuse memory byte. - - To combine the fuse bits macros together to represent a whole fuse byte, - use the bitwise AND operator, like so: - \code - (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN) - \endcode - - Each device I/O header file also defines macros that provide default values - for each fuse byte that is available. LFUSE_DEFAULT is defined for a Low - Fuse byte. HFUSE_DEFAULT is defined for a High Fuse byte. EFUSE_DEFAULT - is defined for an Extended Fuse byte. - - If FUSE_MEMORY_SIZE > 3, then the I/O header file defines macros that - provide default values for each fuse byte like so: - FUSE0_DEFAULT - FUSE1_DEFAULT - FUSE2_DEFAULT - FUSE3_DEFAULT - FUSE4_DEFAULT - .... - - \par API Usage Example - - Putting all of this together is easy. Using C99's designated initializers: - - \code - #include - - FUSES = - { - .low = LFUSE_DEFAULT, - .high = (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN), - .extended = EFUSE_DEFAULT, - }; - - int main(void) - { - return 0; - } - \endcode - - Or, using the variable directly instead of the FUSES macro, - - \code - #include - - __fuse_t __fuse __attribute__((section (".fuse"))) = - { - .low = LFUSE_DEFAULT, - .high = (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN), - .extended = EFUSE_DEFAULT, - }; - - int main(void) - { - return 0; - } - \endcode - - If you are compiling in C++, you cannot use the designated intializers so - you must do: - - \code - #include - - FUSES = - { - LFUSE_DEFAULT, // .low - (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN), // .high - EFUSE_DEFAULT, // .extended - }; - - int main(void) - { - return 0; - } - \endcode - - - However there are a number of caveats that you need to be aware of to - use this API properly. - - Be sure to include to get all of the definitions for the API. - The FUSES macro defines a global variable to store the fuse data. This - variable is assigned to its own linker section. Assign the desired fuse - values immediately in the variable initialization. - - The .fuse section in the ELF file will get its values from the initial - variable assignment ONLY. This means that you can NOT assign values to - this variable in functions and the new values will not be put into the - ELF .fuse section. - - The global variable is declared in the FUSES macro has two leading - underscores, which means that it is reserved for the "implementation", - meaning the library, so it will not conflict with a user-named variable. - - You must initialize ALL fields in the __fuse_t structure. This is because - the fuse bits in all bytes default to a logical 1, meaning unprogrammed. - Normal uninitialized data defaults to all locgial zeros. So it is vital that - all fuse bytes are initialized, even with default data. If they are not, - then the fuse bits may not programmed to the desired settings. - - Be sure to have the -mmcu=device flag in your compile command line and - your linker command line to have the correct device selected and to have - the correct I/O header file included when you include . - - You can print out the contents of the .fuse section in the ELF file by - using this command line: - \code - avr-objdump -s -j .fuse - \endcode - The section contents shows the address on the left, then the data going from - lower address to a higher address, left to right. - -*/ -# 239 "/usr/avr/include/avr/fuse.h" 3 -typedef struct -{ - unsigned char low; - unsigned char high; - unsigned char extended; -} __fuse_t; -# 639 "/usr/avr/include/avr/io.h" 2 3 - -/* Include lock.h after individual IO header files. */ -# 1 "/usr/avr/include/avr/lock.h" 1 3 -/* Copyright (c) 2007, Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. */ - -/* $Id$ */ - -/* avr/lock.h - Lock Bits API */ - - - - - -/** \file */ -/** \defgroup avr_lock : Lockbit Support - - \par Introduction - - The Lockbit API allows a user to specify the lockbit settings for the - specific AVR device they are compiling for. These lockbit settings will be - placed in a special section in the ELF output file, after linking. - - Programming tools can take advantage of the lockbit information embedded in - the ELF file, by extracting this information and determining if the lockbits - need to be programmed after programming the Flash and EEPROM memories. - This also allows a single ELF file to contain all the - information needed to program an AVR. - - To use the Lockbit API, include the header file, which in turn - automatically includes the individual I/O header file and the - file. These other two files provides everything necessary to set the AVR - lockbits. - - \par Lockbit API - - Each I/O header file may define up to 3 macros that controls what kinds - of lockbits are available to the user. - - If __LOCK_BITS_EXIST is defined, then two lock bits are available to the - user and 3 mode settings are defined for these two bits. - - If __BOOT_LOCK_BITS_0_EXIST is defined, then the two BLB0 lock bits are - available to the user and 4 mode settings are defined for these two bits. - - If __BOOT_LOCK_BITS_1_EXIST is defined, then the two BLB1 lock bits are - available to the user and 4 mode settings are defined for these two bits. - - If __BOOT_LOCK_APPLICATION_TABLE_BITS_EXIST is defined then two lock bits - are available to set the locking mode for the Application Table Section - (which is used in the XMEGA family). - - If __BOOT_LOCK_APPLICATION_BITS_EXIST is defined then two lock bits are - available to set the locking mode for the Application Section (which is used - in the XMEGA family). - - If __BOOT_LOCK_BOOT_BITS_EXIST is defined then two lock bits are available - to set the locking mode for the Boot Loader Section (which is used in the - XMEGA family). - - The AVR lockbit modes have inverted values, logical 1 for an unprogrammed - (disabled) bit and logical 0 for a programmed (enabled) bit. The defined - macros for each individual lock bit represent this in their definition by a - bit-wise inversion of a mask. For example, the LB_MODE_3 macro is defined - as: - \code - #define LB_MODE_3 (0xFC) -` \endcode - - To combine the lockbit mode macros together to represent a whole byte, - use the bitwise AND operator, like so: - \code - (LB_MODE_3 & BLB0_MODE_2) - \endcode - - also defines a macro that provides a default lockbit value: - LOCKBITS_DEFAULT which is defined to be 0xFF. - - See the AVR device specific datasheet for more details about these - lock bits and the available mode settings. - - A convenience macro, LOCKMEM, is defined as a GCC attribute for a - custom-named section of ".lock". - - A convenience macro, LOCKBITS, is defined that declares a variable, __lock, - of type unsigned char with the attribute defined by LOCKMEM. This variable - allows the end user to easily set the lockbit data. - - \note If a device-specific I/O header file has previously defined LOCKMEM, - then LOCKMEM is not redefined. If a device-specific I/O header file has - previously defined LOCKBITS, then LOCKBITS is not redefined. LOCKBITS is - currently known to be defined in the I/O header files for the XMEGA devices. - - \par API Usage Example - - Putting all of this together is easy: - - \code - #include - - LOCKBITS = (LB_MODE_1 & BLB0_MODE_3 & BLB1_MODE_4); - - int main(void) - { - return 0; - } - \endcode - - Or: - - \code - #include - - unsigned char __lock __attribute__((section (".lock"))) = - (LB_MODE_1 & BLB0_MODE_3 & BLB1_MODE_4); - - int main(void) - { - return 0; - } - \endcode - - - - However there are a number of caveats that you need to be aware of to - use this API properly. - - Be sure to include to get all of the definitions for the API. - The LOCKBITS macro defines a global variable to store the lockbit data. This - variable is assigned to its own linker section. Assign the desired lockbit - values immediately in the variable initialization. - - The .lock section in the ELF file will get its values from the initial - variable assignment ONLY. This means that you can NOT assign values to - this variable in functions and the new values will not be put into the - ELF .lock section. - - The global variable is declared in the LOCKBITS macro has two leading - underscores, which means that it is reserved for the "implementation", - meaning the library, so it will not conflict with a user-named variable. - - You must initialize the lockbit variable to some meaningful value, even - if it is the default value. This is because the lockbits default to a - logical 1, meaning unprogrammed. Normal uninitialized data defaults to all - locgial zeros. So it is vital that all lockbits are initialized, even with - default data. If they are not, then the lockbits may not programmed to the - desired settings and can possibly put your device into an unrecoverable - state. - - Be sure to have the -mmcu=device flag in your compile command line and - your linker command line to have the correct device selected and to have - the correct I/O header file included when you include . - - You can print out the contents of the .lock section in the ELF file by - using this command line: - \code - avr-objdump -s -j .lock - \endcode - -*/ -# 197 "/usr/avr/include/avr/lock.h" 3 -/* Lock Bit Modes */ -# 642 "/usr/avr/include/avr/io.h" 2 3 -# 3 "main.c" 2 -# 1 "/usr/avr/include/util/delay.h" 1 3 -/* Copyright (c) 2002, Marek Michalkiewicz - Copyright (c) 2004,2005,2007 Joerg Wunsch - Copyright (c) 2007 Florin-Viorel Petrov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. */ - -/* $Id$ */ -# 44 "/usr/avr/include/util/delay.h" 3 -# 1 "/usr/avr/include/inttypes.h" 1 3 -/* Copyright (c) 2004,2005,2007,2012 Joerg Wunsch - Copyright (c) 2005, Carlos Lamas - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. */ - -/* $Id$ */ -# 45 "/usr/avr/include/util/delay.h" 2 3 -# 1 "/usr/avr/include/util/delay_basic.h" 1 3 -/* Copyright (c) 2002, Marek Michalkiewicz - Copyright (c) 2007 Joerg Wunsch - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. */ - -/* $Id$ */ - - - - -# 1 "/usr/avr/include/inttypes.h" 1 3 -/* Copyright (c) 2004,2005,2007,2012 Joerg Wunsch - Copyright (c) 2005, Carlos Lamas - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. */ - -/* $Id$ */ -# 38 "/usr/avr/include/util/delay_basic.h" 2 3 - - -static __inline__ void _delay_loop_1(uint8_t __count) __attribute__((__always_inline__)); -static __inline__ void _delay_loop_2(uint16_t __count) __attribute__((__always_inline__)); - - -/** \file */ -/** \defgroup util_delay_basic : Basic busy-wait delay loops - \code - #include - \endcode - - The functions in this header file implement simple delay loops - that perform a busy-waiting. They are typically used to - facilitate short delays in the program execution. They are - implemented as count-down loops with a well-known CPU cycle - count per loop iteration. As such, no other processing can - occur simultaneously. It should be kept in mind that the - functions described here do not disable interrupts. - - In general, for long delays, the use of hardware timers is - much preferrable, as they free the CPU, and allow for - concurrent processing of other events while the timer is - running. However, in particular for very short delays, the - overhead of setting up a hardware timer is too much compared - to the overall delay time. - - Two inline functions are provided for the actual delay algorithms. - -*/ - -/** \ingroup util_delay_basic - - Delay loop using an 8-bit counter \c __count, so up to 256 - iterations are possible. (The value 256 would have to be passed - as 0.) The loop executes three CPU cycles per iteration, not - including the overhead the compiler needs to setup the counter - register. - - Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds - can be achieved. -*/ -void -_delay_loop_1(uint8_t __count) -{ - __asm__ volatile ( - "1: dec %0" "\n\t" - "brne 1b" - : "=r" (__count) - : "0" (__count) - ); -} - -/** \ingroup util_delay_basic - - Delay loop using a 16-bit counter \c __count, so up to 65536 - iterations are possible. (The value 65536 would have to be - passed as 0.) The loop executes four CPU cycles per iteration, - not including the overhead the compiler requires to setup the - counter register pair. - - Thus, at a CPU speed of 1 MHz, delays of up to about 262.1 - milliseconds can be achieved. - */ -void -_delay_loop_2(uint16_t __count) -{ - __asm__ volatile ( - "1: sbiw %0,1" "\n\t" - "brne 1b" - : "=w" (__count) - : "0" (__count) - ); -} -# 46 "/usr/avr/include/util/delay.h" 2 3 -# 1 "/usr/avr/include/math.h" 1 3 -/* Copyright (c) 2002,2007-2009 Michael Stumpf - - Portions of documentation Copyright (c) 1990 - 1994 - The Regents of the University of California. - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. */ - -/* $Id$ */ - -/* - math.h - mathematical functions - - Author : Michael Stumpf - Michael.Stumpf@t-online.de - - __ATTR_CONST__ added by marekm@linux.org.pl for functions - that "do not examine any values except their arguments, and have - no effects except the return value", for better optimization by gcc. - */ - - - - -/** \file */ -/** \defgroup avr_math : Mathematics - \code #include \endcode - - This header file declares basic mathematics constants and - functions. - - \par Notes: - - In order to access the functions declared herein, it is usually - also required to additionally link against the library \c libm.a. - See also the related \ref faq_libm "FAQ entry". - - Math functions do not raise exceptions and do not change the - \c errno variable. Therefore the majority of them are declared - with const attribute, for better optimization by GCC. */ - - -/** \ingroup avr_math */ -/*@{*/ - -/** The constant \a e. */ - - -/** The logarithm of the \a e to base 2. */ - - -/** The logarithm of the \a e to base 10. */ - - -/** The natural logarithm of the 2. */ - - -/** The natural logarithm of the 10. */ - - -/** The constant \a pi. */ - - -/** The constant \a pi/2. */ - - -/** The constant \a pi/4. */ - - -/** The constant \a 1/pi. */ - - -/** The constant \a 2/pi. */ - - -/** The constant \a 2/sqrt(pi). */ - - -/** The square root of 2. */ - - -/** The constant \a 1/sqrt(2). */ - - -/** NAN constant. */ - - -/** INFINITY constant. */ -# 124 "/usr/avr/include/math.h" 3 -/** - The cos() function returns the cosine of \a __x, measured in radians. - */ -extern double cos(double __x) __attribute__((__const__)); - - -/** - The sin() function returns the sine of \a __x, measured in radians. - */ -extern double sin(double __x) __attribute__((__const__)); - - -/** - The tan() function returns the tangent of \a __x, measured in radians. - */ -extern double tan(double __x) __attribute__((__const__)); - - -/** - The fabs() function computes the absolute value of a floating-point - number \a __x. - */ -extern double fabs(double __x) __attribute__((__const__)); - - -/** - The function fmod() returns the floating-point remainder of __x / - __y. - */ -extern double fmod(double __x, double __y) __attribute__((__const__)); - - -/** - The modf() function breaks the argument \a __x into integral and - fractional parts, each of which has the same sign as the argument. - It stores the integral part as a double in the object pointed to by - \a __iptr. - - The modf() function returns the signed fractional part of \a __x. - - \note This implementation skips writing by zero pointer. However, - the GCC 4.3 can replace this function with inline code that does not - permit to use NULL address for the avoiding of storing. - */ -extern double modf(double __x, double *__iptr); - -/** An alias for modf(). */ -extern float modff (float __x, float *__iptr); - -/** - The sqrt() function returns the non-negative square root of \a __x. - */ -extern double sqrt(double __x) __attribute__((__const__)); - -/** An alias for sqrt(). */ -extern float sqrtf (float) __attribute__((__const__)); - -/** - The cbrt() function returns the cube root of \a __x. - */ -extern double cbrt(double __x) __attribute__((__const__)); - - -/** - The hypot() function returns sqrt(__x*__x + __y*__y). This - is the length of the hypotenuse of a right triangle with sides of - length \a __x and \a __y, or the distance of the point (\a __x, \a - __y) from the origin. Using this function instead of the direct - formula is wise, since the error is much smaller. No underflow with - small \a __x and \a __y. No overflow if result is in range. - */ -extern double hypot (double __x, double __y) __attribute__((__const__)); - - -/** - The function square() returns __x * __x. - - \note This function does not belong to the C standard definition. - */ -extern double square(double __x) __attribute__((__const__)); - - -/** - The floor() function returns the largest integral value less than or - equal to \a __x, expressed as a floating-point number. - */ -extern double floor(double __x) __attribute__((__const__)); - - -/** - The ceil() function returns the smallest integral value greater than - or equal to \a __x, expressed as a floating-point number. - */ -extern double ceil(double __x) __attribute__((__const__)); - - -/** - The frexp() function breaks a floating-point number into a normalized - fraction and an integral power of 2. It stores the integer in the \c - int object pointed to by \a __pexp. - - If \a __x is a normal float point number, the frexp() function - returns the value \c v, such that \c v has a magnitude in the - interval [1/2, 1) or zero, and \a __x equals \c v times 2 raised to - the power \a __pexp. If \a __x is zero, both parts of the result are - zero. If \a __x is not a finite number, the frexp() returns \a __x as - is and stores 0 by \a __pexp. - - \note This implementation permits a zero pointer as a directive to - skip a storing the exponent. - */ -extern double frexp(double __x, int *__pexp); - - -/** - The ldexp() function multiplies a floating-point number by an integral - power of 2. It returns the value of \a __x times 2 raised to the power - \a __exp. - */ -extern double ldexp(double __x, int __exp) __attribute__((__const__)); - - -/** - The exp() function returns the exponential value of \a __x. - */ -extern double exp(double __x) __attribute__((__const__)); - - -/** - The cosh() function returns the hyperbolic cosine of \a __x. - */ -extern double cosh(double __x) __attribute__((__const__)); - - -/** - The sinh() function returns the hyperbolic sine of \a __x. - */ -extern double sinh(double __x) __attribute__((__const__)); - - -/** - The tanh() function returns the hyperbolic tangent of \a __x. - */ -extern double tanh(double __x) __attribute__((__const__)); - - -/** - The acos() function computes the principal value of the arc cosine of - \a __x. The returned value is in the range [0, pi] radians. A domain - error occurs for arguments not in the range [-1, +1]. - */ -extern double acos(double __x) __attribute__((__const__)); - - -/** - The asin() function computes the principal value of the arc sine of - \a __x. The returned value is in the range [-pi/2, pi/2] radians. A - domain error occurs for arguments not in the range [-1, +1]. - */ -extern double asin(double __x) __attribute__((__const__)); - - -/** - The atan() function computes the principal value of the arc tangent - of \a __x. The returned value is in the range [-pi/2, pi/2] radians. - */ -extern double atan(double __x) __attribute__((__const__)); - - -/** - The atan2() function computes the principal value of the arc tangent - of __y / __x, using the signs of both arguments to determine - the quadrant of the return value. The returned value is in the range - [-pi, +pi] radians. - */ -extern double atan2(double __y, double __x) __attribute__((__const__)); - - -/** - The log() function returns the natural logarithm of argument \a __x. - */ -extern double log(double __x) __attribute__((__const__)); - - -/** - The log10() function returns the logarithm of argument \a __x to base 10. - */ -extern double log10(double __x) __attribute__((__const__)); - - -/** - The function pow() returns the value of \a __x to the exponent \a __y. - */ -extern double pow(double __x, double __y) __attribute__((__const__)); - - -/** - The function isnan() returns 1 if the argument \a __x represents a - "not-a-number" (NaN) object, otherwise 0. - */ -extern int isnan(double __x) __attribute__((__const__)); - - -/** - The function isinf() returns 1 if the argument \a __x is positive - infinity, -1 if \a __x is negative infinity, and 0 otherwise. - - \note The GCC 4.3 can replace this function with inline code that - returns the 1 value for both infinities (gcc bug #35509). - */ -extern int isinf(double __x) __attribute__((__const__)); - - -/** - The isfinite() function returns a nonzero value if \a __x is finite: - not plus or minus infinity, and not NaN. - */ -__attribute__((__const__)) static inline int isfinite (double __x) -{ - unsigned char __exp; - __asm__ ( - "mov %0, %C1 \n\t" - "lsl %0 \n\t" - "mov %0, %D1 \n\t" - "rol %0 " - : "=r" (__exp) - : "r" (__x) ); - return __exp != 0xff; -} - - -/** - The copysign() function returns \a __x but with the sign of \a __y. - They work even if \a __x or \a __y are NaN or zero. -*/ -__attribute__((__const__)) static inline double copysign (double __x, double __y) -{ - __asm__ ( - "bst %D2, 7 \n\t" - "bld %D0, 7 " - : "=r" (__x) - : "0" (__x), "r" (__y) ); - return __x; -} - - -/** - The signbit() function returns a nonzero value if the value of \a __x - has its sign bit set. This is not the same as `\a __x < 0.0', - because IEEE 754 floating point allows zero to be signed. The - comparison `-0.0 < 0.0' is false, but `signbit (-0.0)' will return a - nonzero value. - */ -extern int signbit (double __x) __attribute__((__const__)); - - -/** - The fdim() function returns max(__x - __y, 0). If \a __x or - \a __y or both are NaN, NaN is returned. - */ -extern double fdim (double __x, double __y) __attribute__((__const__)); - - -/** - The fma() function performs floating-point multiply-add. This is the - operation (__x * __y) + __z, but the intermediate result is - not rounded to the destination type. This can sometimes improve the - precision of a calculation. - */ -extern double fma (double __x, double __y, double __z) __attribute__((__const__)); - - -/** - The fmax() function returns the greater of the two values \a __x and - \a __y. If an argument is NaN, the other argument is returned. If - both arguments are NaN, NaN is returned. - */ -extern double fmax (double __x, double __y) __attribute__((__const__)); - - -/** - The fmin() function returns the lesser of the two values \a __x and - \a __y. If an argument is NaN, the other argument is returned. If - both arguments are NaN, NaN is returned. - */ -extern double fmin (double __x, double __y) __attribute__((__const__)); - - -/** - The trunc() function rounds \a __x to the nearest integer not larger - in absolute value. - */ -extern double trunc (double __x) __attribute__((__const__)); - - -/** - The round() function rounds \a __x to the nearest integer, but rounds - halfway cases away from zero (instead of to the nearest even integer). - Overflow is impossible. - - \return The rounded value. If \a __x is an integral or infinite, \a - __x itself is returned. If \a __x is \c NaN, then \c NaN is returned. - */ -extern double round (double __x) __attribute__((__const__)); - - -/** - The lround() function rounds \a __x to the nearest integer, but rounds - halfway cases away from zero (instead of to the nearest even integer). - This function is similar to round() function, but it differs in type of - return value and in that an overflow is possible. - - \return The rounded long integer value. If \a __x is not a finite number - or an overflow was, this realization returns the \c LONG_MIN value - (0x80000000). - */ -extern long lround (double __x) __attribute__((__const__)); - - -/** - The lrint() function rounds \a __x to the nearest integer, rounding the - halfway cases to the even integer direction. (That is both 1.5 and 2.5 - values are rounded to 2). This function is similar to rint() function, - but it differs in type of return value and in that an overflow is - possible. - - \return The rounded long integer value. If \a __x is not a finite - number or an overflow was, this realization returns the \c LONG_MIN - value (0x80000000). - */ -extern long lrint (double __x) __attribute__((__const__)); - - - - - - -/*@}*/ -# 47 "/usr/avr/include/util/delay.h" 2 3 - -/** \file */ -/** \defgroup util_delay : Convenience functions for busy-wait delay loops - \code - #define F_CPU 1000000UL // 1 MHz - //#define F_CPU 14.7456E6 - #include - \endcode - - \note As an alternative method, it is possible to pass the - F_CPU macro down to the compiler from the Makefile. - Obviously, in that case, no \c \#define statement should be - used. - - The functions in this header file are wrappers around the basic - busy-wait functions from . They are meant as - convenience functions where actual time values can be specified - rather than a number of cycles to wait for. The idea behind is - that compile-time constant expressions will be eliminated by - compiler optimization so floating-point expressions can be used - to calculate the number of delay cycles needed based on the CPU - frequency passed by the macro F_CPU. - - \note In order for these functions to work as intended, compiler - optimizations must be enabled, and the delay time - must be an expression that is a known constant at - compile-time. If these requirements are not met, the resulting - delay will be much longer (and basically unpredictable), and - applications that otherwise do not use floating-point calculations - will experience severe code bloat by the floating-point library - routines linked into the application. - - The functions available allow the specification of microsecond, and - millisecond delays directly, using the application-supplied macro - F_CPU as the CPU clock frequency (in Hertz). - -*/ - - -static __inline__ void _delay_us(double __us) __attribute__((__always_inline__)); -static __inline__ void _delay_ms(double __ms) __attribute__((__always_inline__)); -# 118 "/usr/avr/include/util/delay.h" 3 -# 1 "/usr/avr/include/math.h" 1 3 -/* Copyright (c) 2002,2007-2009 Michael Stumpf - - Portions of documentation Copyright (c) 1990 - 1994 - The Regents of the University of California. - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of the copyright holders nor the names of - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. */ - -/* $Id$ */ - -/* - math.h - mathematical functions - - Author : Michael Stumpf - Michael.Stumpf@t-online.de - - __ATTR_CONST__ added by marekm@linux.org.pl for functions - that "do not examine any values except their arguments, and have - no effects except the return value", for better optimization by gcc. - */ -# 119 "/usr/avr/include/util/delay.h" 2 3 - - -/** - \ingroup util_delay - - Perform a delay of \c __ms milliseconds, using _delay_loop_2(). - - The macro F_CPU is supposed to be defined to a - constant defining the CPU clock frequency (in Hertz). - - The maximal possible delay is 262.14 ms / F_CPU in MHz. - - When the user request delay which exceed the maximum possible one, - _delay_ms() provides a decreased resolution functionality. In this - mode _delay_ms() will work with a resolution of 1/10 ms, providing - delays up to 6.5535 seconds (independent from CPU frequency). The - user will not be informed about decreased resolution. - - If the avr-gcc toolchain has __builtin_avr_delay_cycles() - support, maximal possible delay is 4294967.295 ms/ F_CPU in MHz. For - values greater than the maximal possible delay, overflows results in - no delay i.e., 0ms. - - Conversion of \c __ms into clock cycles may not always result in - integer. By default, the clock cycles rounded up to next - integer. This ensures that the user gets at least \c __ms - microseconds of delay. - - Alternatively, by defining the macro \c __DELAY_ROUND_DOWN__, or - \c __DELAY_ROUND_CLOSEST__, before including this header file, the - algorithm can be made to round down, or round to closest integer, - respectively. - - \note - - The implementation of _delay_ms() based on - __builtin_avr_delay_cycles() is not backward compatible with older - implementations. In order to get functionality backward compatible - with previous versions, the macro \c "__DELAY_BACKWARD_COMPATIBLE__" - must be defined before including this header file. Also, the - backward compatible algorithm will be chosen if the code is - compiled in a freestanding environment (GCC option - \c -ffreestanding), as the math functions required for rounding are - not available to the compiler then. - - */ -void -_delay_ms(double __ms) -{ - double __tmp ; - - - - uint32_t __ticks_dc; - extern void __builtin_avr_delay_cycles(unsigned long); - __tmp = (( -# 174 "/usr/avr/include/util/delay.h" - 16000000UL /* CPU Frequency*/ -# 174 "/usr/avr/include/util/delay.h" 3 - ) / 1e3) * __ms; -# 183 "/usr/avr/include/util/delay.h" 3 - //round up by default - __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); - - - __builtin_avr_delay_cycles(__ticks_dc); -# 210 "/usr/avr/include/util/delay.h" 3 -} - -/** - \ingroup util_delay - - Perform a delay of \c __us microseconds, using _delay_loop_1(). - - The macro F_CPU is supposed to be defined to a - constant defining the CPU clock frequency (in Hertz). - - The maximal possible delay is 768 us / F_CPU in MHz. - - If the user requests a delay greater than the maximal possible one, - _delay_us() will automatically call _delay_ms() instead. The user - will not be informed about this case. - - If the avr-gcc toolchain has __builtin_avr_delay_cycles() - support, maximal possible delay is 4294967.295 us/ F_CPU in MHz. For - values greater than the maximal possible delay, overflow results in - no delay i.e., 0us. - - Conversion of \c __us into clock cycles may not always result in - integer. By default, the clock cycles rounded up to next - integer. This ensures that the user gets at least \c __us - microseconds of delay. - - Alternatively, by defining the macro \c __DELAY_ROUND_DOWN__, or - \c __DELAY_ROUND_CLOSEST__, before including this header file, the - algorithm can be made to round down, or round to closest integer, - respectively. - - \note - - The implementation of _delay_ms() based on - __builtin_avr_delay_cycles() is not backward compatible with older - implementations. In order to get functionality backward compatible - with previous versions, the macro \c __DELAY_BACKWARD_COMPATIBLE__ - must be defined before including this header file. Also, the - backward compatible algorithm will be chosen if the code is - compiled in a freestanding environment (GCC option - \c -ffreestanding), as the math functions required for rounding are - not available to the compiler then. - - */ -void -_delay_us(double __us) -{ - double __tmp ; - - - - uint32_t __ticks_dc; - extern void __builtin_avr_delay_cycles(unsigned long); - __tmp = (( -# 263 "/usr/avr/include/util/delay.h" - 16000000UL /* CPU Frequency*/ -# 263 "/usr/avr/include/util/delay.h" 3 - ) / 1e6) * __us; -# 272 "/usr/avr/include/util/delay.h" 3 - //round up by default - __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); - - - __builtin_avr_delay_cycles(__ticks_dc); -# 299 "/usr/avr/include/util/delay.h" 3 -} -# 4 "main.c" 2 - - -# 5 "main.c" -int main(void) { - while (1) { - } -} diff --git a/src/blink/main.c b/src/blink/main.c index bd3b0a6..12624ad 100644 --- a/src/blink/main.c +++ b/src/blink/main.c @@ -13,27 +13,22 @@ int main(void) PORTB |= (1<