diff --git a/Mainboard/Mainboard.atsuo b/Mainboard/Mainboard.atsuo index 386f49d..999052e 100644 Binary files a/Mainboard/Mainboard.atsuo and b/Mainboard/Mainboard.atsuo differ diff --git a/Mainboard/Mainboard/Debug/Mainboard.d b/Mainboard/Mainboard/Debug/Mainboard.d index 960d4aa..2a4f5bd 100644 --- a/Mainboard/Mainboard/Debug/Mainboard.d +++ b/Mainboard/Mainboard/Debug/Mainboard.d @@ -15,11 +15,14 @@ Mainboard.d Mainboard.o: .././Mainboard.c .././config.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/string.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h \ .././led.h .././rs232.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdio.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdarg.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h \ - .././usb.h + .././usb.h .././usb_user.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/pgmspace.h \ + .././usb_user_config.h .././config.h: @@ -55,6 +58,10 @@ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8- c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h: +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/string.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h: + .././led.h: .././rs232.h: @@ -63,6 +70,10 @@ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8- c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdarg.h: -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h: - .././usb.h: + +.././usb_user.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/pgmspace.h: + +.././usb_user_config.h: diff --git a/Mainboard/Mainboard/Debug/Mainboard.elf b/Mainboard/Mainboard/Debug/Mainboard.elf index bf68df4..0647faf 100644 Binary files a/Mainboard/Mainboard/Debug/Mainboard.elf and b/Mainboard/Mainboard/Debug/Mainboard.elf differ diff --git a/Mainboard/Mainboard/Debug/Mainboard.hex b/Mainboard/Mainboard/Debug/Mainboard.hex index b5fc9b3..d0abcd2 100644 --- a/Mainboard/Mainboard/Debug/Mainboard.hex +++ b/Mainboard/Mainboard/Debug/Mainboard.hex @@ -1,245 +1,326 @@ -:100000000C9461000C947E000C947E000C947E0095 -:100010000C947E000C947E000C947E000C947E0068 -:100020000C947E000C947E000C947E000C9434039F -:100030000C945C030C947E000C947E000C947E0067 -:100040000C947E000C947E000C947E000C947E0038 -:100050000C947E000C947E000C947E000C947E0028 -:100060000C947E000C947E000C947E000C947E0018 -:100070000C947E0012010002FF000010ADDEEEBE07 +:100000000C9469000C9486000C9486000C94860075 +:100010000C9486000C9486000C9486000C94860048 +:100020000C9486000C9486000C9486000C944E036D +:100030000C9473030C9486000C9486000C94860038 +:100040000C9486000C9486000C9486000C94860018 +:100050000C9486000C9486000C9486000C94860008 +:100060000C9486000C9486000C9486000C948600F8 +:100070000C94860012010002FF000010ADDEEEBEFF :1000800000010102030104030904140342006C008F :10009000750062006200460069007300680000009D :1000A00020034800610063006B00650072002D00B2 :1000B0004A0065006F007000610072006400790002 -:1000C000000011241FBECFEFD4E0DEBFCDBF11E092 -:1000D000A0E0B1E0E6EFFEE002C005900D92AE3385 -:1000E000B107D9F721E0AEE3B1E001C01D92AA3417 -:1000F000B207E1F70E9433010C9479070C940000D9 -:1001000095B19F7195B995B18295880F807E982B96 -:1001100095B9089584B1806E84B9089586E090E021 -:100120000E94800078940E948A000E944E010E94E2 -:10013000BA0108952F923F924F925F926F927F92F1 -:100140008F929F92AF92BF92CF92DF92EF92FF92E7 -:100150000F931F93CF93DF937C018B015A01C0E073 -:10016000D0E0212C312C422C532C2CC0862C972CE7 -:10017000C7010E9480008FEF881A980A8FEF8816B7 -:100180009104B1F71C161D065CF4842C952CC80153 -:100190000E9480008FEF881A980A8C169D06B9F786 -:1001A0008FEFC81AD80ACA14DB0421F407C0610112 -:1001B0006C2E7D2ECF3FD105CCF2E4CF2196CF3FE0 -:1001C000D10521F01A141B0494F3F8CFDF91CF91DD -:1001D0001F910F91FF90EF90DF90CF90BF90AF9065 -:1001E0009F908F907F906F905F904F903F902F9057 -:1001F0000895C82F4AE050E064E070E087E090E0A6 -:100200000E949A004C2F50E066E070E084E090E09D -:100210000E949A004C2F50E062E070E086E090E08F -:100220000E949A004C2F50E063E070E082E090E082 -:100230000E949A004C2F50E061E070E083E090E073 -:100240000E949A004C2F50E065E070E081E090E061 -:100250000E949A004C2F50E064E070E085E090E04E -:100260000E949A00CFCF0E948E0082E090E00E9410 -:1002700080008CE30E94F900CF93C82F8A3019F4D4 -:100280008DE00E943C01E8ECF0E0908195FFFDCF0D -:10029000C093CE0080E090E0CF91089586E08093F7 -:1002A000CA00E9ECF0E080818860808387E6809373 -:1002B000CC0080E091E0909347018093460108953F -:1002C000CF93DF93CDB7DEB760970FB6F894DEBF5C -:1002D0000FBECDBF2CE0E5E1F1E0DE01119601900B -:1002E0000D922A95E1F71D861E861F86188AFC014D -:1002F0002081233C51F48181813049F460E1CE01B9 -:1003000001960E94E20281E003C080E001C080E02B -:1003100060960FB6F894DEBF0FBECDBFDF91CF91D0 -:100320000895CF93DF93CDB7DEB7A0970FB6F894BB -:10033000DEBF0FBECDBF8130A1F440E2BE016F5FD2 -:100340007F4F0E94BD02882361F018A2CE01019662 -:100350000E94540740E2BE016F5F7F4F81E80E9418 -:100360000503A0960FB6F894DEBF0FBECDBFDF9198 -:10037000CF9108950E94BD01089580EA8093D8002E -:1003800086E089BD09B400FEFDCF80E88093D800E7 -:100390001092E00010923E018FEF80930E013C9886 -:1003A00088E08093E20008952F923F924F925F92EF -:1003B0007F928F929F92AF92CF92DF92EF92FF92B5 -:1003C0000F931F93CF93DF93282F90E06CE070E0A2 -:1003D0000E940A06FC01EB5DFE4F822F90E06CE06C -:1003E00070E00E940A06895D9E4F41E00F2EF9EEF3 -:1003F000CF2ED12CF02D0F2EFBEEEF2EF12CF02D69 -:10040000AA24A3940CEE10E06DEE70E00F2EF0EF36 -:100410004F2E512CF02D6894992492F8812C6894D9 -:10042000772474F8DF0120812F3F59F1E6014883DA -:10043000E701A8822081E80128831C019C0121504A -:100440003109E9012881203841F0203441F020327F -:1004500041F0203141F4372D07C030E405C030E3CE -:1004600003C030E201C0382DE1012881232BEB01CC -:1004700028832C9120FF03C0D2011C9202C0E2010C -:1004800098824F5F33960396453061F6EAEEF0E0CE -:100490008EE180831082DF91CF911F910F91FF90A9 -:1004A000EF90DF90CF90AF909F908F907F905F9074 -:1004B0004F903F902F900895E8EEF0E08081857096 -:1004C000E9F30895AF92BF92CF92DF92EF92FF923D -:1004D0000F931F93CF93DF93D82ED62FC72FE42FE0 -:1004E000F0E02E173F0710F4C22E01C0C42E0E9468 -:1004F0005C020D2F1C2F6894AA24A4F80F2EF8EE8E -:10050000EF2EF12CF02D0F2EFEEFBF2EF02DC1EFB0 -:10051000D0E02C2D80E18C1508F42A2D2223D9F06F -:10052000F801922FDD2011F0808101C08491888331 -:10053000915031969111F6CF622F615070E06F5F4C -:100540007F4F060F171FC21AF701B082C11007C0F4 -:10055000203129F007C0F701B082CC2019F00E94A9 -:100560005C02D7CFDF91CF911F910F91FF90EF9059 -:10057000DF90CF90BF90AF9008958093E900909165 -:10058000F200941708F4492F4423D1F0362FE62FB8 -:10059000F72FA1EFB0E09C9191939E2F931B94179E -:1005A000D0F39091F20091110BC021E030E002C035 -:1005B000220F331F8A95E2F7EAEEF0E020831082E3 -:1005C000842F08956623E9F01092E900E8EEF0E048 -:1005D000208120FFFDCF2091F200211114C0282F8F -:1005E000E82FF92FA1EFB0E081918C938E2F821B21 -:1005F0008617D0F3E8EEF0E080818E7F808381E083 -:10060000089580E0089580E00895CF93DF93442318 -:1006100029F18093E900E8EEF0E0808180FFFDCFD2 -:100620008091F20081111CC0962FE62FF72FA8EEC3 -:10063000B0E0C1EFD0E08C9185FF02C0808188835B -:1006400031968E2F891B8417B0F3E8EEF0E080819D -:100650008E7F80838FE7808381E003C080E001C0CC -:1006600080E0DF91CF9108951F920F920FB60F9205 -:1006700011248F93EF93FF93E1EEF0E080811082DD -:1006800083FF12C01092E90081E08093EB0010928A -:10069000EC0082E18093ED0088E08093F0001092FE -:1006A0003E018FEF80930E01FF91EF918F910F909C -:1006B0000FBE0F901F9018951F920F920FB60F92BA -:1006C00011243F924F925F926F927F928F929F92EE -:1006D000AF92BF92CF92DF92EF92FF920F931F9350 -:1006E0002F933F934F935F936F937F938F939F933A -:1006F000AF93BF93EF93FF93CF93DF93CDB7DEB765 -:100700002A97DEBFCDBF8091F40080FF4CC21092CB -:10071000E9008091E80083FF13C2E1EFF0E08081FF -:10072000898380818A83208130E03C832B834081D0 -:10073000942F80E0822B932B9C838B83208130E04D -:100740003E832D834081942F80E0822B932B9E83C8 -:100750008D83208130E038872F834081942F80E083 -:10076000822B932B98878F8382EF8093E8008A8176 -:10077000863009F024C18B819C81811523E092078A -:1007800009F4FBC048F4811551E0950779F0811513 -:10079000924009F010C124C08130B3E09B0709F4F6 -:1007A000F6C08230934009F006C1FBC0E4E7F0E0F8 -:1007B00044912F813885BF0180E00E94620202C20D -:1007C0009A2F50815F3F09F49B2F490F8150339638 -:1007D0008111F6CF2F5F3F4F2230310539F410C021 -:1007E00020E030E040E014E0A1E0B0E0C9016CE0BE -:1007F00070E00E940A06FC01EB5DFE4F812FE0CF06 -:10080000842F880F880F880F841B0F2EFBE1EF2E9B -:10081000F02DE80E8E2D90E00E941C06082F192F57 -:1008200089E0D8018C9382E011968C9311971296EF -:10083000EC92129713961C92139714968C9314971C -:1008400081E015968C93159716961C92169780EC5E -:1008500017968C9317978AEF18968C93F801399610 -:100860001A86198644E0A12C88248394F82C9A2CAB -:100870000F2EF9E07F2EF02DDD24DA940F2EF7E015 -:10088000BF2EF02D0F2EF5E0CF2EF02D68946624AC -:1008900061F80F2EF3E05F2EF02D56C07F2DDC01A6 -:1008A0002C912F3F09F4792D670F51500396511168 -:1008B000F5CF70824183428213826483D58216828F -:1008C000D782108639966623C1F1832F932D6CE071 -:1008D00070E00E940A069C012A5D3E4F482CC90127 -:1008E000B90161507109DB015C915F3F01F1B08298 -:1008F000C182652F679566276795642962835134A5 -:1009000041F0503441F0513841F0503841F4562D07 -:1009100007C05F2D05C05F2D03C0562D01C0552DAA -:100920005383DC018C91848315821682379643941D -:100930002D5F3F4FB5E04B12D2CFA985BA851196F6 -:10094000BA87A987129771F04984342D3A84842D8F -:10095000932D6CE070E00E940A068B5D9E4F542F31 -:100960006A2D9CCF2F8138854E2DB80181E00E94E1 -:100970006202C8010E94B70625C1E6E8F0E0449192 -:100980002F813885BF0180E00E9462021BC1EAE826 -:10099000F0E044912F813885BF0180E00E9462021F -:1009A00011C1E0EAF0E044912F813885BF0180E079 -:1009B0000E94620207C181E28093EB0003C185308F -:1009C00071F48EEF8093E800E8EEF0E0808180FF24 -:1009D000FDCF8B819C8180688093E300F3C08930D8 -:1009E000C1F49981911160C08B819C81019769F458 -:1009F00081E080933E018EEF8093E80010920E011B -:100A000080910E010E94D401DDC081E28093EB0051 -:100A1000D9C0883089F49981903809F057C0E8EE40 -:100A2000F0E0808180FFFDCF80913E018093F10056 -:100A30008EEF8093E800C6C081111CC0E8EEF0E0A4 -:100A4000808180FFFDCF8981823859F48D81E9EE64 -:100A5000F0E080838091EB0085FB882780F910828D -:100A600001C080E0E1EFF0E0808310828EEF8093A0 -:100A7000E800A8C08B30C1F48981803211F0811167 -:100A800055C08D819E818230910550F480930E0176 -:100A90008EEF8093E80080910E010E94D40192C0F5 -:100AA00081E28093EB008EC08A3081F489818038A6 -:100AB000E9F5E8EEF0E0808180FFFDCF80910E0146 -:100AC0008093F1008EEF8093E8007CC0813011F0BC -:100AD000833061F58981823049F58B819C81892B36 -:100AE00029F58D819E818F779927382F31503430A9 -:100AF000E8F43EEF3093E8008093E9002A81233048 -:100B000021F481E28093EB005DC099E19093EB00CA -:100B100021E030E0F90102C0EE0FFF1F8A95E2F7F5 -:100B2000CF01EAEEF0E0808310824CC0CE01019646 -:100B30000E946001811146C081E28093EB0042C0B7 -:100B400081E28093EB002FC0F22E408150E0022E14 -:100B500002C0559547950A94E2F740FF1BC0DB01A0 -:100B60002C93D6018C9182FF13C08091F2008823D0 -:100B700041F06091F20070E0822F0E949101F092AA -:100B8000E900E8EEF0E089EF80838FE780831AC008 -:100B9000D8019C932F5F3F4F25303105A9F681E2A4 -:100BA0008093EB000FC021E030E0E4EFF0E069EE6D -:100BB00070E00F2EF8EECF2ED12CF02D0BEE10E0C2 -:100BC00091E2C2CF2A960FB6F894DEBF0FBECDBF1A -:100BD000DF91CF91FF91EF91BF91AF919F918F9155 -:100BE0007F916F915F914F913F912F911F910F9145 -:100BF000FF90EF90DF90CF90BF90AF909F908F903D -:100C00007F906F905F904F903F900F900FBE0F902E -:100C10001F9018955527002480FF02C0060E571F0D -:100C2000660F771F6115710521F0969587950097DE -:100C300099F7952F802D08950F931F93CF93DF93EE -:100C40008230910510F482E090E0E0914201F09151 -:100C5000430120E030E0C0E0D0E023C0408151817A -:100C600048175907A8F04817590761F48281938102 -:100C7000209719F09B838A832EC090934301809321 -:100C8000420129C02115310529F04217530710F000 -:100C9000A90102C0BE01DF0102811381EF019A01A7 -:100CA000F8013097D9F62115310509F1281B390BC8 -:100CB0002430310590F412968D919C911397611513 -:100CC000710521F0FB019383828304C0909343015B -:100CD00080934201FD01329644C0FD01E20FF31FF3 -:100CE00081939193225031092D933C933AC02091E6 -:100CF000400130914101232B41F4209111013091A9 -:100D00001201309341012093400120910F01309155 -:100D100010012115310541F42DB73EB74091130163 -:100D200050911401241B350BE0914001F0914101D9 -:100D3000E217F307A0F42E1B3F0B2817390778F0B2 -:100D4000AC014E5F5F4F2417350748F04E0F5F1F11 -:100D500050934101409340018193919302C0E0E0A0 -:100D6000F0E0CF01DF91CF911F910F910895EF92A5 -:100D7000FF920F931F93CF93DF93009709F48FC0D7 -:100D8000DC01129713961C921E921297E09042017A -:100D9000F0904301E114F10489F42D913C911197F5 -:100DA000280F391F809140019091410182179307CC -:100DB00089F5B0934101A093400171C0E70120E0A3 -:100DC00030E001C0EA01CA17DB0738F44A815B81D1 -:100DD0009E0141155105B1F722C0BC016250710955 -:100DE000FB01D383C28300811181AC01400F511FED -:100DF0004C175D0761F448815981400F511F4E5FC8 -:100E00005F4F518340834A815B8153834283211525 -:100E1000310529F4B0934301A093420140C0F90188 -:100E2000B383A283E90169917991C60FD71FAC17EB -:100E3000BD0779F4DC015E914E91460F571F4E5F5E -:100E40005F4F5183408312968D919C9113979383AA -:100E50008283A0E0B0E002C0D7017C01F70182816B -:100E600093810097C9F7C701029620813181820FD3 -:100E7000931F20914001309141012817390779F4DF -:100E8000109729F4109243011092420104C0139666 -:100E90001C921E921297F0924101E0924001CDB750 -:100EA000DEB7E6E00C946A07DC016C9161566A31AA -:100EB00008F0605E6F5B6D93C1F708952A883988EA -:100EC00048885F846E847D848C849B84AA84B984E2 -:100ED000C884DF80EE80FD800C811B81AA81B981EE -:100EE000CE0FD11D0FB6F894DEBF0FBECDBFED0102 -:060EF0000895F894FFCF05 -:100EF60000000002000000003C0100000000FF00AE -:100F0600004A01200056657273696F6E20312E30DB -:100F16000000000000802002812002FF2002FF2046 -:0E0F260002FF2002FF2002FF2002FF20020037 +:1000C00000000E03300030003000300030003100FE +:1000D000000011241FBECFEFD4E0DEBFCDBF11E082 +:1000E000A0E0B1E0EEEDF3E102C005900D92AC3678 +:1000F000B107D9F721E0ACE6B1E001C01D92A83705 +:10010000B207E1F70E94F6000C94ED090C94000090 +:1001100095B19F7195B995B18295880F807E982B86 +:1001200095B9089584B1806E84B908950E94CF0175 +:10013000811106C086E090E00E948800379B10C0C5 +:100140000E94CF01823021F483E090E00E94880079 +:100150000E94CF01833051F782E090E00E94880036 +:10016000089586E090E00E94880078940E949200B2 +:100170000E9443010E94BC013F98479A0E9496004A +:100180000895CF93DF93EC01E82FFD2FDF010D9051 +:100190000020E9F71197AE1BBF0BAD3130F08DE0B9 +:1001A0008D8F8AE08E8F1F8E08C0FE01EA0FF11D31 +:1001B0008DE080838AE08183128285E090E00E9456 +:1001C0008800CE010E9455010E94CF01833039F48E +:1001D0000E94D201882319F0CE010E94BF0182E063 +:1001E00090E00E948800DF91CF910895CF93DF9334 +:1001F000CDB7DEB7A0970FB6F894DEBF0FBECDBF68 +:100200000E94B10082E090E00E948800D12C0F2E65 +:10021000F4E4EF2EF1E0FF2EF02D6894CC24C5F825 +:100220008E010F5F1F4F8D2DD3941F928F93FF92DE +:10023000EF921F92CF921F930F930E94FD06C80169 +:100240000E94C1002FEF89E698E121508040904044 +:10025000E1F700C000000FB6F894DEBF0FBECDBFBF +:10026000E2CFCF93C82F8A3019F48DE00E9431017C +:10027000E8ECF0E0908195FFFDCFC093CE0080E0E8 +:1002800090E0CF91089586E08093CA00E9ECF0E019 +:1002900080818860808387E68093CC0080E091E055 +:1002A000909375018093740108959F938F9380E0DC +:1002B00091E09F938F930E94EB060F900F900F9009 +:1002C0000F900895CF93DF93CDB7DEB760970FB649 +:1002D000F894DEBF0FBECDBF2CE0E4E1F1E0DE011B +:1002E000119601900D922A95E1F71D861E861F86B4 +:1002F000188AFC012081233C51F48181813049F42A +:1003000060E1CE0101960E94FC0281E003C080E022 +:1003100001C080E060960FB6F894DEBF0FBECDBF7F +:10032000DF91CF910895CF93DF93CDB7DEB7A0973C +:100330000FB6F894DEBF0FBECDBF8130A1F440E20E +:10034000BE016F5F7F4F0E94D702882361F018A221 +:10035000CE0101960E94E10640E2BE016F5F7F4F31 +:1003600082E80E941F03A0960FB6F894DEBF0FBE6E +:10037000CDBFDF91CF9108950E94D5010895E82F58 +:10038000F92FDF010D900020E9F71197AD014E1B09 +:100390005F0B682F792F82E80E941F0308950E9447 +:1003A000640208950E947202089580EA8093D80042 +:1003B00086E089BD09B400FEFDCF80E88093D800B7 +:1003C0001092E00010926C013C9888E08093E2006B +:1003D00008952F923F924F925F927F928F929F92B9 +:1003E000AF92CF92DF92EF92FF920F931F93CF9332 +:1003F000DF93E4E2F1E086E291E041E00F2EF9EED6 +:10040000CF2ED12CF02D0F2EFBEEEF2EF12CF02D58 +:10041000AA24A3940CEE10E06DEE70E00F2EF0EF26 +:100420004F2E512CF02D6894992492F8812C6894C9 +:10043000772474F8DF0120812F3F59F1E6014883CA +:10044000E701A8822081E80128831C019C0121503A +:100450003109E9012881203841F0203441F020326F +:1004600041F0203141F4372D07C030E405C030E3BE +:1004700003C030E201C0382DE1012881232BEB01BC +:1004800028832C9120FF03C0D2011C9202C0E201FC +:1004900098824F5F33960396453061F6EAEEF0E0BE +:1004A0008EE180831082DF91CF911F910F91FF9099 +:1004B000EF90DF90CF90AF909F908F907F905F9064 +:1004C0004F903F902F9008958091E300882334F45B +:1004D00080916C01811104C082E0089580E008954C +:1004E00083E008958091E80081700895E8EEF0E0DF +:1004F00080818570E9F30895AF92BF92CF92DF9229 +:10050000EF92FF920F931F93CF93DF93D82ED62FA6 +:10051000C72FE42FF0E02E173F0710F4C22E01C0C2 +:10052000C42E0E9476020D2F1C2F6894AA24A4F8D2 +:100530000F2EF8EEEF2EF12CF02D0F2EFEEFBF2E2A +:10054000F02DC1EFD0E02C2D80E18C1508F42A2D80 +:100550002223D9F0F801922FDD2011F0808101C013 +:1005600084918883915031969111F6CF622F61501A +:1005700070E06F5F7F4F060F171FC21AF701B0823E +:10058000C11007C0203129F007C0F701B082CC208C +:1005900019F00E947602D7CFDF91CF911F910F9172 +:1005A000FF90EF90DF90CF90BF90AF900895809331 +:1005B000E9009091F200941708F4492F4423D1F0F8 +:1005C000362FE62FF72FA1EFB0E09C9191939E2F4D +:1005D000931B9417D0F39091F20091110BC021E07E +:1005E00030E002C0220F331F8A95E2F7EAEEF0E016 +:1005F00020831082842F08956623E9F01092E90089 +:10060000E8EEF0E0208120FFFDCF2091F2002111E3 +:1006100014C0282FE82FF92FA1EFB0E081918C931F +:100620008E2F821B8617D0F3E8EEF0E080818E7F5C +:10063000808381E0089580E0089580E00895CF935D +:10064000DF93442329F18093E900E8EEF0E0808114 +:1006500080FFFDCF8091F20081111CC0962FE62F04 +:10066000F72FA8EEB0E0C1EFD0E08C9185FF02C07B +:100670008081888331968E2F891B8417B0F3E8EE32 +:10068000F0E080818E7F80838FE7808381E003C0EC +:1006900080E001C080E0DF91CF9108951F920F921A +:1006A0000FB60F9211248F93EF93FF93E1EEF0E0DA +:1006B0008081108283FF0FC01092E90081E0809357 +:1006C000EB001092EC0082E18093ED0088E08093D3 +:1006D000F00010926C01FF91EF918F910F900FBE7F +:1006E0000F901F9018951F920F920FB60F92112422 +:1006F000BF92CF92DF92EF92FF920F931F932F93AF +:100700003F934F935F936F937F938F939F93AF9399 +:10071000BF93EF93FF93CF93DF93CDB7DEB72897C7 +:10072000DEBFCDBF8091F40080FFE4C11092E900EC +:100730008091E80083FFABC1E1EFF0E08081898325 +:1007400080818A83208130E03C832B834081942FF9 +:1007500080E0822B932B9C838B83208130E03E832F +:100760002D834081942F80E0822B932B9E838D8359 +:10077000208130E038872F834081942F80E0822BC6 +:10078000932B98878F8382EF8093E8008A8186304D +:1007900009F0ECC08B819C81811523E0920709F45C +:1007A000B9C048F4811551E0950789F08115924050 +:1007B00009F0D8C016C08230B3E09B0709F4BEC070 +:1007C00008F4B2C08330934009F0CCC0C1C0E4E764 +:1007D000F0E044912F813885BF0180E00E947C02C7 +:1007E00098C1E4E2F1E080E391E0F12C41E050E0D7 +:1007F000242F30813F3F09F4252FF20E3396E8175E +:10080000F907B1F78F2D880F880F880F8F190F2EDA +:10081000F2E1EF2EF02DE80E8E2D90E00E94A9055A +:10082000082F192F89E0D8018C9392E011969C93A0 +:1008300011971296EC92129713961C92139791E0CF +:1008400014969C93149715969C93159716961C9244 +:10085000169790EC17969C9317979AEF18969C937F +:100860001897F801399619968C9384E08183128247 +:100870001382F4828FEF8583168287831086FF2090 +:10088000F1F1F801729625E231E091E00F2EF7E0E8 +:10089000FF2EF02D55E0CC24C3946894DD24D1F8CC +:1008A0000F2EF3E0BF2EF02DB901D90111978C91D5 +:1008B0008F3F01F1F0825183482F47954427479598 +:1008C000492B4283813441F0803441F0813841F03A +:1008D000803841F48D2D07C08C2D05C08C2D03C0B0 +:1008E0008D2D01C08B2D8383DB018C918483158238 +:1008F000168237969F5F2D5F3F4F9530A9F62F8167 +:1009000038854E2DB80181E00E947C02C8010E940A +:100910004406FFC0E6E8F0E044912F813885BF012E +:1009200080E00E947C02F5C0EAE8F0E044912F816B +:100930003885BF0180E00E947C02EBC0E0EAF0E075 +:1009400044912F813885BF0180E00E947C02E1C084 +:10095000E2ECF0E044912F813885BF0180E00E94F5 +:100960007C02D7C081E28093EB00D3C0853071F464 +:100970008EEF8093E800E8EEF0E0808180FFFDCF0D +:100980008B819C8180688093E300C3C08930A1F48F +:100990008981811172C08B819C81019749F481E02A +:1009A00080936C018EEF8093E8000E94E901B1C052 +:1009B00081E28093EB00ADC0883089F48981803872 +:1009C00009F05BC0E8EEF0E0808180FFFDCF809110 +:1009D0006C018093F1008EEF8093E8009AC0811142 +:1009E0001CC0E8EEF0E0808180FFFDCF8981823875 +:1009F00059F48D81E9EEF0E080838091EB0085FB76 +:100A0000882780F9108201C080E0E1EFF0E0808368 +:100A100010828EEF8093E8007CC0813011F083302B +:100A200061F58981823049F58B819C81892B29F57B +:100A30008D819E818F779927382F31503430E8F49B +:100A40003EEF3093E8008093E9002A81233021F4BF +:100A500081E28093EB005DC099E19093EB0021E08F +:100A600030E0F90102C0EE0FFF1F8A95E2F7CF01D7 +:100A7000EAEEF0E0808310824CC0CE0101960E9425 +:100A80006201811146C081E28093EB0042C081E2A5 +:100A90008093EB002FC0F22E408150E0022E02C066 +:100AA000559547950A94E2F740FF1BC0DB012C9354 +:100AB000D6018C9182FF13C08091F200882341F00F +:100AC0006091F20070E0822F0E949301F092E900A1 +:100AD000E8EEF0E089EF80838FE780831AC0D801C9 +:100AE0009C932F5F3F4F25303105A9F681E280931B +:100AF000EB000FC021E030E0E4EFF0E069EE70E0E1 +:100B00000F2EF8EECF2ED12CF02D0BEE10E091E24F +:100B1000C2CF28960FB6F894DEBF0FBECDBFDF91CF +:100B2000CF91FF91EF91BF91AF919F918F917F9165 +:100B30006F915F914F913F912F911F910F91FF9076 +:100B4000EF90DF90CF90BF900F900FBE0F901F904F +:100B500018950F931F93CF93DF938230910510F474 +:100B600082E090E0E0917001F091710120E030E0CE +:100B7000C0E0D0E023C04081518148175907A8F058 +:100B80004817590761F482819381209719F09B835C +:100B90008A832EC0909371018093700129C0211522 +:100BA000310529F04217530710F0A90102C0BE0118 +:100BB000DF0102811381EF019A01F8013097D9F624 +:100BC0002115310509F1281B390B2430310590F42A +:100BD00012968D919C9113976115710521F0FB017F +:100BE0009383828304C09093710180937001FD010F +:100BF000329644C0FD01E20FF31F8193919322507E +:100C000031092D933C933AC020916E0130916F01D0 +:100C1000232B41F4209110013091110130936F0189 +:100C200020936E0120910E0130910F0121153105A5 +:100C300041F42DB73EB74091120150911301241B8E +:100C4000350BE0916E01F0916F01E217F307A0F40C +:100C50002E1B3F0B2817390778F0AC014E5F5F4F12 +:100C60002417350748F04E0F5F1F50936F014093D4 +:100C70006E018193919302C0E0E0F0E0CF01DF913B +:100C8000CF911F910F910895EF92FF920F931F93B1 +:100C9000CF93DF93009709F48FC0DC01129713966E +:100CA0001C921E921297E0907001F0907101E11475 +:100CB000F10489F42D913C911197280F391F8091EF +:100CC0006E0190916F018217930789F5B0936F01C0 +:100CD000A0936E0171C0E70120E030E001C0EA019D +:100CE000CA17DB0738F44A815B819E014115510523 +:100CF000B1F722C0BC0162507109FB01D383C283EA +:100D000000811181AC01400F511F4C175D0761F448 +:100D100048815981400F511F4E5F5F4F518340837F +:100D20004A815B81538342832115310529F4B093B5 +:100D30007101A093700140C0F901B383A283E9015E +:100D400069917991C60FD71FAC17BD0779F4DC0103 +:100D50005E914E91460F571F4E5F5F4F5183408308 +:100D600012968D919C91139793838283A0E0B0E0BB +:100D700002C0D7017C01F701828193810097C9F7F6 +:100D8000C701029620813181820F931F20916E014D +:100D900030916F012817390779F4109729F41092D0 +:100DA00071011092700104C013961C921E9212974A +:100DB000F0926F01E0926E01CDB7DEB7E6E00C94E1 +:100DC000DE09DC016C9161566A3108F0605E6F5B90 +:100DD0006D93C1F70895A0E0B0E0E1EFF6E00C9468 +:100DE000C609CE010996AC016F8178858D819E81FF +:100DF0000E942D07E2E00C94E209AEE0B0E0E3E0EF +:100E0000F7E00C94C4090D891E898F89988D26E01E +:100E10002C831A83098397FF02C080E090E8019732 +:100E20009E838D83CE014B96AC01698D7A8DCE0168 +:100E300001960E942D074D815E8157FD0AC02F81CA +:100E40003885421753070CF49A01F801E20FF31F9B +:100E500010822E96E4E00C94E009ACE0B0E0E3E30D +:100E6000F7E00C94B6097C016B018A01FC01178242 +:100E70001682838181FFC8C188248394912C8C0EB3 +:100E80009D1EF7019381F60193FD859193FF81915A +:100E90006F01882309F4B4C1853239F493FD85913B +:100EA00093FF81916F01853229F4B70190E00E9490 +:100EB0002109E7CF512C312C20E02032A8F48B32CD +:100EC00061F028F4803251F0833271F40BC08D321E +:100ED00039F0803349F421602AC02260246027C0A1 +:100EE000286025C0206123C027FD29C0382F30533A +:100EF0003A3088F426FF07C0852D6AE00E94AD09CC +:100F0000582E530E14C0832D6AE00E94AD09382E6E +:100F1000330E20620CC08E3221F426FD71C1206494 +:100F200006C08C3611F4206802C0883641F4F60100 +:100F300093FD859193FF81916F018111BECF982F11 +:100F40009554933018F09052933028F40C5F1F4F53 +:100F5000FFE3F9830DC0833631F0833771F08335B9 +:100F600009F05EC023C0F801808189830E5F1F4FA6 +:100F700044244394512C540115C03801F2E06F0E03 +:100F8000711CF801A080B18026FF03C0652D70E0C0 +:100F900002C06FEF7FEFC5012C870E9416092C015C +:100FA00083012C856FE7262E222218C03801F2E03B +:100FB0006F0E711CF801A080B18026FF03C0652D63 +:100FC00070E002C06FEF7FEFC5012C870E940B0914 +:100FD0002C012C8550E8252E222A830123FC1CC0DD +:100FE00006C0B70180E290E00E9421093A94832D67 +:100FF00090E048165906A8F30FC0F50127FC85912B +:1010000027FE81915F01B70190E00E942109311014 +:101010003A94F1E04F1A51084114510471F7EDC0B0 +:10102000843611F0893641F5F80127FF07C0608149 +:101030007181828193810C5F1F4F08C06081718133 +:10104000882777FD8095982F0E5F1F4F4FE6B42EAF +:10105000B22297FF09C090958095709561957F4F5A +:101060008F4F9F4FF0E8BF2A2AE030E0A4010E9492 +:101070004D09A82EA81843C0853731F43FEEB32E92 +:10108000B2222AE030E024C099EFB92EB2228F3686 +:10109000B9F020F4883509F0B3C00DC0803721F0D5 +:1010A000883709F0ADC002C020E1B22AB4FE0BC0FF +:1010B00084E0B82A08C024FF09C0E6E0BE2A06C0C2 +:1010C00028E030E005C020E130E002C020E132E05D +:1010D000F801B7FE07C060817181828193810C5F46 +:1010E0001F4F06C06081718180E090E00E5F1F4F4E +:1010F000A4010E944D09A82EA818FFE7BF22B6FE42 +:101100000BC02B2D2E7FA51450F4B4FE0AC0B2FCE8 +:1011100008C02B2D2E7E05C07A2C2B2D03C07A2CD7 +:1011200001C0752C24FF0DC0FE01EA0DF11D808168 +:10113000803311F4297E09C022FF06C07394739492 +:1011400004C0822F867809F0739423FD14C020FF19 +:101150000FC05A2C731460F4530C5718732C08C02A +:10116000B70180E290E02C870E94210973942C85BE +:101170007314B0F304C0731410F4371801C0312C89 +:1011800024FF12C0B70180E390E02C870E94210960 +:101190002C8522FF1EC021FF03C088E590E002C01D +:1011A00088E790E0B7010CC0822F867891F021FD8E +:1011B00002C080E201C08BE227FD8DE2B70190E022 +:1011C0000E94210906C0B70180E390E00E94210936 +:1011D0005A94A514C0F3AA94F401EA0DF11DB701C5 +:1011E000808190E00E942109A110F5CF06C0B701CF +:1011F00080E290E00E9421093A943110F8CF41CE6C +:10120000F7012681378102C02FEF3FEFC9012C96ED +:10121000E2E10C94D209FC0105906150704001108C +:10122000D8F7809590958E0F9F1F0895FC0161500F +:10123000704001900110D8F7809590958E0F9F1FF8 +:1012400008950F931F93CF93DF938C01EB018B8154 +:1012500081FD03C00FEF1FEF1AC082FF0DC02E816A +:101260003F818C819D812817390764F4E881F981D9 +:101270000193F983E88306C0E885F985802F0995F5 +:10128000892B41F78E819F8101969F838E83C801B0 +:10129000DF91CF911F910F910895FA01AA2728306D +:1012A00061F1203191F1E8946F936E7F6E5F7F4F13 +:1012B0008F4F9F4FAF4FB1E040D0B4E03ED0670FAB +:1012C000781F891F9A1FA11D680F791F8A1F911D02 +:1012D000A11D6A0F711D811D911DA11D22D009F450 +:1012E00068943F91062E000C3019000C000C301948 +:1012F000305D3193CEF6CF010895462F4770405DA3 +:101300004193B3E00FD0C9F7F6CF462F4F70405D41 +:101310004A3318F0495D31FD4052419302D0A9F79C +:10132000EACFB4E0A6959795879577956795BA9596 +:10133000C9F700976105710508959B01AC010A2E5C +:1013400006945795479537952795BA95C9F7620F33 +:10135000731F841F951FA01D0895002480FD060E95 +:10136000660F11F08695D1F7802D08952F923F9248 +:101370004F925F926F927F928F929F92AF92BF92A5 +:10138000CF92DF92EF92FF920F931F93CF93DF9351 +:10139000CDB7DEB7CA1BDB0B0FB6F894DEBF0FBEAE +:1013A000CDBF09942A88398848885F846E847D84FB +:1013B0008C849B84AA84B984C884DF80EE80FD80FD +:1013C0000C811B81AA81B981CE0FD11D0FB6F89473 +:0E13D000DEBF0FBECDBFED010895F894FFCF34 +:1013DE0000000002000000003101000000000000CB +:1013EE007801200056657273696F6E20312E3000C1 +:1013FE0000000000802002812002C12002FF200296 +:10140E004E61636872696368742062656B6F6D6D9F +:10141E00656E2100626C61666F6F202564206963C2 +:10142E00682062696E2065696E206C616765722046 +:0C143E00646F6F6665722074657874003E :00000001FF diff --git a/Mainboard/Mainboard/Debug/Mainboard.lss b/Mainboard/Mainboard/Debug/Mainboard.lss index 1cbb1cc..a909567 100644 --- a/Mainboard/Mainboard/Debug/Mainboard.lss +++ b/Mainboard/Mainboard/Debug/Mainboard.lss @@ -3,2500 +3,3288 @@ Mainboard.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 0000003e 00800100 00000ef6 00000f8a 2**0 + 0 .data 0000006c 00800100 000013de 00001472 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 00000ef6 00000000 00000000 00000094 2**1 + 1 .text 000013de 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 0000000c 0080013e 0080013e 00000fc8 2**0 + 2 .bss 0000000c 0080016c 0080016c 000014de 2**0 ALLOC - 3 .stab 00000d2c 00000000 00000000 00000fc8 2**2 + 3 .stab 00000d2c 00000000 00000000 000014e0 2**2 CONTENTS, READONLY, DEBUGGING - 4 .stabstr 00000209 00000000 00000000 00001cf4 2**0 + 4 .stabstr 00000209 00000000 00000000 0000220c 2**0 CONTENTS, READONLY, DEBUGGING - 5 .comment 0000002f 00000000 00000000 00001efd 2**0 + 5 .comment 0000002f 00000000 00000000 00002415 2**0 CONTENTS, READONLY - 6 .debug_aranges 000001f0 00000000 00000000 00001f2c 2**0 + 6 .debug_aranges 00000238 00000000 00000000 00002444 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_info 000020ca 00000000 00000000 0000211c 2**0 + 7 .debug_info 000027b9 00000000 00000000 0000267c 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_abbrev 00000d9a 00000000 00000000 000041e6 2**0 + 8 .debug_abbrev 0000106c 00000000 00000000 00004e35 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_line 000010cf 00000000 00000000 00004f80 2**0 + 9 .debug_line 000013d1 00000000 00000000 00005ea1 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_frame 00000510 00000000 00000000 00006050 2**2 + 10 .debug_frame 00000584 00000000 00000000 00007274 2**2 CONTENTS, READONLY, DEBUGGING - 11 .debug_str 0000074d 00000000 00000000 00006560 2**0 + 11 .debug_str 00000817 00000000 00000000 000077f8 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 0000198b 00000000 00000000 00006cad 2**0 + 12 .debug_loc 00001a55 00000000 00000000 0000800f 2**0 CONTENTS, READONLY, DEBUGGING - 13 .debug_ranges 00000190 00000000 00000000 00008638 2**0 + 13 .debug_ranges 000001c8 00000000 00000000 00009a64 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: - 0: 0c 94 61 00 jmp 0xc2 ; 0xc2 <__ctors_end> - 4: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 8: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - c: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 10: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 14: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 18: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 1c: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 20: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 24: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 28: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 2c: 0c 94 34 03 jmp 0x668 ; 0x668 <__vector_11> - 30: 0c 94 5c 03 jmp 0x6b8 ; 0x6b8 <__vector_12> - 34: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 38: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 3c: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 40: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 44: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 48: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 4c: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 50: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 54: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 58: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 5c: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 60: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 64: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 68: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 6c: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> - 70: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt> + 0: 0c 94 69 00 jmp 0xd2 ; 0xd2 <__ctors_end> + 4: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 8: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 10: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 14: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 18: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 1c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 20: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 24: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 28: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 2c: 0c 94 4e 03 jmp 0x69c ; 0x69c <__vector_11> + 30: 0c 94 73 03 jmp 0x6e6 ; 0x6e6 <__vector_12> + 34: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 38: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 3c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 40: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 44: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 48: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 4c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 50: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 54: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 58: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 5c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 60: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 64: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 68: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 6c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 70: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> 00000074 : - 74: 12 01 00 02 ff 00 00 10 ad de ee be 00 01 01 02 ................ - 84: 03 01 .. + 74: 12 01 00 02 ff 00 00 10 ad de ee be 00 01 01 02 ................ + 84: 03 01 .. 00000086 : - 86: 04 03 09 04 .... + 86: 04 03 09 04 .... 0000008a : - 8a: 14 03 42 00 6c 00 75 00 62 00 62 00 46 00 69 00 ..B.l.u.b.b.F.i. - 9a: 73 00 68 00 00 00 s.h... + 8a: 14 03 42 00 6c 00 75 00 62 00 62 00 46 00 69 00 ..B.l.u.b.b.F.i. + 9a: 73 00 68 00 00 00 s.h... 000000a0 : - a0: 20 03 48 00 61 00 63 00 6b 00 65 00 72 00 2d 00 .H.a.c.k.e.r.-. - b0: 4a 00 65 00 6f 00 70 00 61 00 72 00 64 00 79 00 J.e.o.p.a.r.d.y. + a0: 20 03 48 00 61 00 63 00 6b 00 65 00 72 00 2d 00 .H.a.c.k.e.r.-. + b0: 4a 00 65 00 6f 00 70 00 61 00 72 00 64 00 79 00 J.e.o.p.a.r.d.y. ... -000000c2 <__ctors_end>: - c2: 11 24 eor r1, r1 - c4: 1f be out 0x3f, r1 ; 63 - c6: cf ef ldi r28, 0xFF ; 255 - c8: d4 e0 ldi r29, 0x04 ; 4 - ca: de bf out 0x3e, r29 ; 62 - cc: cd bf out 0x3d, r28 ; 61 +000000c2 : + c2: 0e 03 30 00 30 00 30 00 30 00 30 00 31 00 00 00 ..0.0.0.0.0.1... -000000ce <__do_copy_data>: - ce: 11 e0 ldi r17, 0x01 ; 1 - d0: a0 e0 ldi r26, 0x00 ; 0 - d2: b1 e0 ldi r27, 0x01 ; 1 - d4: e6 ef ldi r30, 0xF6 ; 246 - d6: fe e0 ldi r31, 0x0E ; 14 - d8: 02 c0 rjmp .+4 ; 0xde <__do_copy_data+0x10> - da: 05 90 lpm r0, Z+ - dc: 0d 92 st X+, r0 - de: ae 33 cpi r26, 0x3E ; 62 - e0: b1 07 cpc r27, r17 - e2: d9 f7 brne .-10 ; 0xda <__do_copy_data+0xc> +000000d2 <__ctors_end>: + d2: 11 24 eor r1, r1 + d4: 1f be out 0x3f, r1 ; 63 + d6: cf ef ldi r28, 0xFF ; 255 + d8: d4 e0 ldi r29, 0x04 ; 4 + da: de bf out 0x3e, r29 ; 62 + dc: cd bf out 0x3d, r28 ; 61 -000000e4 <__do_clear_bss>: - e4: 21 e0 ldi r18, 0x01 ; 1 - e6: ae e3 ldi r26, 0x3E ; 62 - e8: b1 e0 ldi r27, 0x01 ; 1 - ea: 01 c0 rjmp .+2 ; 0xee <.do_clear_bss_start> +000000de <__do_copy_data>: + de: 11 e0 ldi r17, 0x01 ; 1 + e0: a0 e0 ldi r26, 0x00 ; 0 + e2: b1 e0 ldi r27, 0x01 ; 1 + e4: ee ed ldi r30, 0xDE ; 222 + e6: f3 e1 ldi r31, 0x13 ; 19 + e8: 02 c0 rjmp .+4 ; 0xee <__do_copy_data+0x10> + ea: 05 90 lpm r0, Z+ + ec: 0d 92 st X+, r0 + ee: ac 36 cpi r26, 0x6C ; 108 + f0: b1 07 cpc r27, r17 + f2: d9 f7 brne .-10 ; 0xea <__do_copy_data+0xc> -000000ec <.do_clear_bss_loop>: - ec: 1d 92 st X+, r1 +000000f4 <__do_clear_bss>: + f4: 21 e0 ldi r18, 0x01 ; 1 + f6: ac e6 ldi r26, 0x6C ; 108 + f8: b1 e0 ldi r27, 0x01 ; 1 + fa: 01 c0 rjmp .+2 ; 0xfe <.do_clear_bss_start> -000000ee <.do_clear_bss_start>: - ee: aa 34 cpi r26, 0x4A ; 74 - f0: b2 07 cpc r27, r18 - f2: e1 f7 brne .-8 ; 0xec <.do_clear_bss_loop> - f4: 0e 94 33 01 call 0x266 ; 0x266
- f8: 0c 94 79 07 jmp 0xef2 ; 0xef2 <_exit> +000000fc <.do_clear_bss_loop>: + fc: 1d 92 st X+, r1 -000000fc <__bad_interrupt>: - fc: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> +000000fe <.do_clear_bss_start>: + fe: a8 37 cpi r26, 0x78 ; 120 + 100: b2 07 cpc r27, r18 + 102: e1 f7 brne .-8 ; 0xfc <.do_clear_bss_loop> + 104: 0e 94 f6 00 call 0x1ec ; 0x1ec
+ 108: 0c 94 ed 09 jmp 0x13da ; 0x13da <_exit> -00000100 : - 100: 95 b1 in r25, 0x05 ; 5 - 102: 9f 71 andi r25, 0x1F ; 31 - 104: 95 b9 out 0x05, r25 ; 5 - 106: 95 b1 in r25, 0x05 ; 5 - 108: 82 95 swap r24 - 10a: 88 0f add r24, r24 - 10c: 80 7e andi r24, 0xE0 ; 224 - 10e: 98 2b or r25, r24 - 110: 95 b9 out 0x05, r25 ; 5 - 112: 08 95 ret +0000010c <__bad_interrupt>: + 10c: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> -00000114 : - 114: 84 b1 in r24, 0x04 ; 4 - 116: 80 6e ori r24, 0xE0 ; 224 - 118: 84 b9 out 0x04, r24 ; 4 - 11a: 08 95 ret +00000110 : + int rgb = 0; + rgb |= (mask & (1<<0)) ? (1<<0) : (0<<0); + rgb |= (mask & (1<<1)) ? (1<<1) : (0<<1); + rgb |= (mask & (1<<2)) ? (1<<2) : (0<<2); + + PORTB &= ~((1<: - 11c: 86 e0 ldi r24, 0x06 ; 6 - 11e: 90 e0 ldi r25, 0x00 ; 0 - 120: 0e 94 80 00 call 0x100 ; 0x100 - 124: 78 94 sei - 126: 0e 94 8a 00 call 0x114 ; 0x114 - 12a: 0e 94 4e 01 call 0x29c ; 0x29c - 12e: 0e 94 ba 01 call 0x374 ; 0x374 - 132: 08 95 ret +00000124 : +} -00000134 : - 134: 2f 92 push r2 - 136: 3f 92 push r3 - 138: 4f 92 push r4 - 13a: 5f 92 push r5 - 13c: 6f 92 push r6 - 13e: 7f 92 push r7 - 140: 8f 92 push r8 - 142: 9f 92 push r9 - 144: af 92 push r10 - 146: bf 92 push r11 - 148: cf 92 push r12 - 14a: df 92 push r13 - 14c: ef 92 push r14 - 14e: ff 92 push r15 - 150: 0f 93 push r16 - 152: 1f 93 push r17 - 154: cf 93 push r28 - 156: df 93 push r29 - 158: 7c 01 movw r14, r24 - 15a: 8b 01 movw r16, r22 - 15c: 5a 01 movw r10, r20 - 15e: c0 e0 ldi r28, 0x00 ; 0 - 160: d0 e0 ldi r29, 0x00 ; 0 - 162: 21 2c mov r2, r1 - 164: 31 2c mov r3, r1 - 166: 42 2c mov r4, r2 - 168: 53 2c mov r5, r3 - 16a: 2c c0 rjmp .+88 ; 0x1c4 - 16c: 86 2c mov r8, r6 - 16e: 97 2c mov r9, r7 - 170: c7 01 movw r24, r14 - 172: 0e 94 80 00 call 0x100 ; 0x100 - 176: 8f ef ldi r24, 0xFF ; 255 - 178: 88 1a sub r8, r24 - 17a: 98 0a sbc r9, r24 - 17c: 8f ef ldi r24, 0xFF ; 255 - 17e: 88 16 cp r8, r24 - 180: 91 04 cpc r9, r1 - 182: b1 f7 brne .-20 ; 0x170 - 184: 1c 16 cp r1, r28 - 186: 1d 06 cpc r1, r29 - 188: 5c f4 brge .+22 ; 0x1a0 - 18a: 84 2c mov r8, r4 - 18c: 95 2c mov r9, r5 - 18e: c8 01 movw r24, r16 - 190: 0e 94 80 00 call 0x100 ; 0x100 - 194: 8f ef ldi r24, 0xFF ; 255 - 196: 88 1a sub r8, r24 - 198: 98 0a sbc r9, r24 - 19a: 8c 16 cp r8, r28 - 19c: 9d 06 cpc r9, r29 - 19e: b9 f7 brne .-18 ; 0x18e - 1a0: 8f ef ldi r24, 0xFF ; 255 - 1a2: c8 1a sub r12, r24 - 1a4: d8 0a sbc r13, r24 - 1a6: ca 14 cp r12, r10 - 1a8: db 04 cpc r13, r11 - 1aa: 21 f4 brne .+8 ; 0x1b4 - 1ac: 07 c0 rjmp .+14 ; 0x1bc - 1ae: 61 01 movw r12, r2 - 1b0: 6c 2e mov r6, r28 - 1b2: 7d 2e mov r7, r29 - 1b4: cf 3f cpi r28, 0xFF ; 255 - 1b6: d1 05 cpc r29, r1 - 1b8: cc f2 brlt .-78 ; 0x16c - 1ba: e4 cf rjmp .-56 ; 0x184 - 1bc: 21 96 adiw r28, 0x01 ; 1 - 1be: cf 3f cpi r28, 0xFF ; 255 - 1c0: d1 05 cpc r29, r1 - 1c2: 21 f0 breq .+8 ; 0x1cc - 1c4: 1a 14 cp r1, r10 - 1c6: 1b 04 cpc r1, r11 - 1c8: 94 f3 brlt .-28 ; 0x1ae - 1ca: f8 cf rjmp .-16 ; 0x1bc - 1cc: df 91 pop r29 - 1ce: cf 91 pop r28 - 1d0: 1f 91 pop r17 - 1d2: 0f 91 pop r16 - 1d4: ff 90 pop r15 - 1d6: ef 90 pop r14 - 1d8: df 90 pop r13 - 1da: cf 90 pop r12 - 1dc: bf 90 pop r11 - 1de: af 90 pop r10 - 1e0: 9f 90 pop r9 - 1e2: 8f 90 pop r8 - 1e4: 7f 90 pop r7 - 1e6: 6f 90 pop r6 - 1e8: 5f 90 pop r5 - 1ea: 4f 90 pop r4 - 1ec: 3f 90 pop r3 - 1ee: 2f 90 pop r2 - 1f0: 08 95 ret +void init_led() +{ + DDRB |= (1<: - 1f2: c8 2f mov r28, r24 - 1f4: 4a e0 ldi r20, 0x0A ; 10 - 1f6: 50 e0 ldi r21, 0x00 ; 0 - 1f8: 64 e0 ldi r22, 0x04 ; 4 - 1fa: 70 e0 ldi r23, 0x00 ; 0 - 1fc: 87 e0 ldi r24, 0x07 ; 7 - 1fe: 90 e0 ldi r25, 0x00 ; 0 - 200: 0e 94 9a 00 call 0x134 ; 0x134 - 204: 4c 2f mov r20, r28 - 206: 50 e0 ldi r21, 0x00 ; 0 - 208: 66 e0 ldi r22, 0x06 ; 6 - 20a: 70 e0 ldi r23, 0x00 ; 0 - 20c: 84 e0 ldi r24, 0x04 ; 4 - 20e: 90 e0 ldi r25, 0x00 ; 0 - 210: 0e 94 9a 00 call 0x134 ; 0x134 - 214: 4c 2f mov r20, r28 - 216: 50 e0 ldi r21, 0x00 ; 0 - 218: 62 e0 ldi r22, 0x02 ; 2 - 21a: 70 e0 ldi r23, 0x00 ; 0 - 21c: 86 e0 ldi r24, 0x06 ; 6 - 21e: 90 e0 ldi r25, 0x00 ; 0 - 220: 0e 94 9a 00 call 0x134 ; 0x134 - 224: 4c 2f mov r20, r28 - 226: 50 e0 ldi r21, 0x00 ; 0 - 228: 63 e0 ldi r22, 0x03 ; 3 - 22a: 70 e0 ldi r23, 0x00 ; 0 - 22c: 82 e0 ldi r24, 0x02 ; 2 - 22e: 90 e0 ldi r25, 0x00 ; 0 - 230: 0e 94 9a 00 call 0x134 ; 0x134 - 234: 4c 2f mov r20, r28 - 236: 50 e0 ldi r21, 0x00 ; 0 - 238: 61 e0 ldi r22, 0x01 ; 1 - 23a: 70 e0 ldi r23, 0x00 ; 0 - 23c: 83 e0 ldi r24, 0x03 ; 3 - 23e: 90 e0 ldi r25, 0x00 ; 0 - 240: 0e 94 9a 00 call 0x134 ; 0x134 - 244: 4c 2f mov r20, r28 - 246: 50 e0 ldi r21, 0x00 ; 0 - 248: 65 e0 ldi r22, 0x05 ; 5 - 24a: 70 e0 ldi r23, 0x00 ; 0 - 24c: 81 e0 ldi r24, 0x01 ; 1 - 24e: 90 e0 ldi r25, 0x00 ; 0 - 250: 0e 94 9a 00 call 0x134 ; 0x134 - 254: 4c 2f mov r20, r28 - 256: 50 e0 ldi r21, 0x00 ; 0 - 258: 64 e0 ldi r22, 0x04 ; 4 - 25a: 70 e0 ldi r23, 0x00 ; 0 - 25c: 85 e0 ldi r24, 0x05 ; 5 - 25e: 90 e0 ldi r25, 0x00 ; 0 - 260: 0e 94 9a 00 call 0x134 ; 0x134 - 264: cf cf rjmp .-98 ; 0x204 +0000012c : +#include "rs232.h" +#include "usb.h" -00000266
: - 266: 0e 94 8e 00 call 0x11c ; 0x11c - 26a: 82 e0 ldi r24, 0x02 ; 2 - 26c: 90 e0 ldi r25, 0x00 ; 0 - 26e: 0e 94 80 00 call 0x100 ; 0x100 - 272: 8c e3 ldi r24, 0x3C ; 60 - 274: 0e 94 f9 00 call 0x1f2 ; 0x1f2 +void wait_for_usb() { + while(true) { + if(usb_getstatus() == USB_STATUS_DISCONNECTED) { + 12c: 0e 94 cf 01 call 0x39e ; 0x39e + 130: 81 11 cpse r24, r1 + 132: 06 c0 rjmp .+12 ; 0x140 + led(YELLOW); + 134: 86 e0 ldi r24, 0x06 ; 6 + 136: 90 e0 ldi r25, 0x00 ; 0 + 138: 0e 94 88 00 call 0x110 ; 0x110 + if(!(PINC & (1< + return; + } + } + if(usb_getstatus() == USB_STATUS_ENUMERATED) { + 140: 0e 94 cf 01 call 0x39e ; 0x39e + 144: 82 30 cpi r24, 0x02 ; 2 + 146: 21 f4 brne .+8 ; 0x150 + led(CYAN); + 148: 83 e0 ldi r24, 0x03 ; 3 + 14a: 90 e0 ldi r25, 0x00 ; 0 + 14c: 0e 94 88 00 call 0x110 ; 0x110 + } + if(usb_getstatus() == USB_STATUS_CONFIGURED) { + 150: 0e 94 cf 01 call 0x39e ; 0x39e + 154: 83 30 cpi r24, 0x03 ; 3 + 156: 51 f7 brne .-44 ; 0x12c + led(GREEN); + 158: 82 e0 ldi r24, 0x02 ; 2 + 15a: 90 e0 ldi r25, 0x00 ; 0 + 15c: 0e 94 88 00 call 0x110 ; 0x110 + 160: 08 95 ret -00000278 : - 278: cf 93 push r28 - 27a: c8 2f mov r28, r24 - 27c: 8a 30 cpi r24, 0x0A ; 10 - 27e: 19 f4 brne .+6 ; 0x286 - 280: 8d e0 ldi r24, 0x0D ; 13 - 282: 0e 94 3c 01 call 0x278 ; 0x278 - 286: e8 ec ldi r30, 0xC8 ; 200 - 288: f0 e0 ldi r31, 0x00 ; 0 - 28a: 90 81 ld r25, Z - 28c: 95 ff sbrs r25, 5 - 28e: fd cf rjmp .-6 ; 0x28a - 290: c0 93 ce 00 sts 0x00CE, r28 - 294: 80 e0 ldi r24, 0x00 ; 0 - 296: 90 e0 ldi r25, 0x00 ; 0 - 298: cf 91 pop r28 - 29a: 08 95 ret +00000162 : + } +} -0000029c : - 29c: 86 e0 ldi r24, 0x06 ; 6 - 29e: 80 93 ca 00 sts 0x00CA, r24 - 2a2: e9 ec ldi r30, 0xC9 ; 201 - 2a4: f0 e0 ldi r31, 0x00 ; 0 - 2a6: 80 81 ld r24, Z - 2a8: 88 60 ori r24, 0x08 ; 8 - 2aa: 80 83 st Z, r24 - 2ac: 87 e6 ldi r24, 0x67 ; 103 - 2ae: 80 93 cc 00 sts 0x00CC, r24 - 2b2: 80 e0 ldi r24, 0x00 ; 0 - 2b4: 91 e0 ldi r25, 0x01 ; 1 - 2b6: 90 93 47 01 sts 0x0147, r25 - 2ba: 80 93 46 01 sts 0x0146, r24 - 2be: 08 95 ret +void init() +{ + led(YELLOW); + 162: 86 e0 ldi r24, 0x06 ; 6 + 164: 90 e0 ldi r25, 0x00 ; 0 + 166: 0e 94 88 00 call 0x110 ; 0x110 + sei(); + 16a: 78 94 sei + init_led(); + 16c: 0e 94 92 00 call 0x124 ; 0x124 + init_rs232(); + 170: 0e 94 43 01 call 0x286 ; 0x286 + init_usb(); + 174: 0e 94 bc 01 call 0x378 ; 0x378 + DDRC &= ~(1< + 180: 08 95 ret -000002c0 : - 2c0: cf 93 push r28 - 2c2: df 93 push r29 - 2c4: cd b7 in r28, 0x3d ; 61 - 2c6: de b7 in r29, 0x3e ; 62 - 2c8: 60 97 sbiw r28, 0x10 ; 16 - 2ca: 0f b6 in r0, 0x3f ; 63 - 2cc: f8 94 cli - 2ce: de bf out 0x3e, r29 ; 62 - 2d0: 0f be out 0x3f, r0 ; 63 - 2d2: cd bf out 0x3d, r28 ; 61 - 2d4: 2c e0 ldi r18, 0x0C ; 12 - 2d6: e5 e1 ldi r30, 0x15 ; 21 - 2d8: f1 e0 ldi r31, 0x01 ; 1 - 2da: de 01 movw r26, r28 - 2dc: 11 96 adiw r26, 0x01 ; 1 - 2de: 01 90 ld r0, Z+ - 2e0: 0d 92 st X+, r0 - 2e2: 2a 95 dec r18 - 2e4: e1 f7 brne .-8 ; 0x2de - 2e6: 1d 86 std Y+13, r1 ; 0x0d - 2e8: 1e 86 std Y+14, r1 ; 0x0e - 2ea: 1f 86 std Y+15, r1 ; 0x0f - 2ec: 18 8a std Y+16, r1 ; 0x10 - 2ee: fc 01 movw r30, r24 - 2f0: 20 81 ld r18, Z - 2f2: 23 3c cpi r18, 0xC3 ; 195 - 2f4: 51 f4 brne .+20 ; 0x30a - 2f6: 81 81 ldd r24, Z+1 ; 0x01 - 2f8: 81 30 cpi r24, 0x01 ; 1 - 2fa: 49 f4 brne .+18 ; 0x30e - 2fc: 60 e1 ldi r22, 0x10 ; 16 - 2fe: ce 01 movw r24, r28 - 300: 01 96 adiw r24, 0x01 ; 1 - 302: 0e 94 e2 02 call 0x5c4 ; 0x5c4 - 306: 81 e0 ldi r24, 0x01 ; 1 - 308: 03 c0 rjmp .+6 ; 0x310 - 30a: 80 e0 ldi r24, 0x00 ; 0 - 30c: 01 c0 rjmp .+2 ; 0x310 - 30e: 80 e0 ldi r24, 0x00 ; 0 - 310: 60 96 adiw r28, 0x10 ; 16 - 312: 0f b6 in r0, 0x3f ; 63 - 314: f8 94 cli - 316: de bf out 0x3e, r29 ; 62 - 318: 0f be out 0x3f, r0 ; 63 - 31a: cd bf out 0x3d, r28 ; 61 - 31c: df 91 pop r29 - 31e: cf 91 pop r28 - 320: 08 95 ret +00000182 : +} -00000322 : - 322: cf 93 push r28 - 324: df 93 push r29 - 326: cd b7 in r28, 0x3d ; 61 - 328: de b7 in r29, 0x3e ; 62 - 32a: a0 97 sbiw r28, 0x20 ; 32 - 32c: 0f b6 in r0, 0x3f ; 63 - 32e: f8 94 cli - 330: de bf out 0x3e, r29 ; 62 - 332: 0f be out 0x3f, r0 ; 63 - 334: cd bf out 0x3d, r28 ; 61 - 336: 81 30 cpi r24, 0x01 ; 1 - 338: a1 f4 brne .+40 ; 0x362 - 33a: 40 e2 ldi r20, 0x20 ; 32 - 33c: be 01 movw r22, r28 - 33e: 6f 5f subi r22, 0xFF ; 255 - 340: 7f 4f sbci r23, 0xFF ; 255 - 342: 0e 94 bd 02 call 0x57a ; 0x57a - 346: 88 23 and r24, r24 - 348: 61 f0 breq .+24 ; 0x362 - 34a: 18 a2 std Y+32, r1 ; 0x20 - 34c: ce 01 movw r24, r28 - 34e: 01 96 adiw r24, 0x01 ; 1 - 350: 0e 94 54 07 call 0xea8 ; 0xea8 - 354: 40 e2 ldi r20, 0x20 ; 32 - 356: be 01 movw r22, r28 - 358: 6f 5f subi r22, 0xFF ; 255 - 35a: 7f 4f sbci r23, 0xFF ; 255 - 35c: 81 e8 ldi r24, 0x81 ; 129 - 35e: 0e 94 05 03 call 0x60a ; 0x60a - 362: a0 96 adiw r28, 0x20 ; 32 - 364: 0f b6 in r0, 0x3f ; 63 - 366: f8 94 cli - 368: de bf out 0x3e, r29 ; 62 - 36a: 0f be out 0x3f, r0 ; 63 - 36c: cd bf out 0x3d, r28 ; 61 - 36e: df 91 pop r29 - 370: cf 91 pop r28 - 372: 08 95 ret +void send(char * text) { + 182: cf 93 push r28 + 184: df 93 push r29 + 186: ec 01 movw r28, r24 + uint8_t l = strlen(text); + 188: e8 2f mov r30, r24 + 18a: fd 2f mov r31, r29 + 18c: df 01 movw r26, r30 + 18e: 0d 90 ld r0, X+ + 190: 00 20 and r0, r0 + 192: e9 f7 brne .-6 ; 0x18e + 194: 11 97 sbiw r26, 0x01 ; 1 + 196: ae 1b sub r26, r30 + 198: bf 0b sbc r27, r31 + if(l >= 29) { + 19a: ad 31 cpi r26, 0x1D ; 29 + 19c: 30 f0 brcs .+12 ; 0x1aa + text[29] = 13; + 19e: 8d e0 ldi r24, 0x0D ; 13 + 1a0: 8d 8f std Y+29, r24 ; 0x1d + text[30] = 10; + 1a2: 8a e0 ldi r24, 0x0A ; 10 + 1a4: 8e 8f std Y+30, r24 ; 0x1e + text[31] = 0; + 1a6: 1f 8e std Y+31, r1 ; 0x1f + 1a8: 08 c0 rjmp .+16 ; 0x1ba + } else { + text[l] = 13; + 1aa: fe 01 movw r30, r28 + 1ac: ea 0f add r30, r26 + 1ae: f1 1d adc r31, r1 + 1b0: 8d e0 ldi r24, 0x0D ; 13 + 1b2: 80 83 st Z, r24 + text[l+1] = 10; + 1b4: 8a e0 ldi r24, 0x0A ; 10 + 1b6: 81 83 std Z+1, r24 ; 0x01 + text[l+2] = 0; + 1b8: 12 82 std Z+2, r1 ; 0x02 + } + led(MAGENTA); + 1ba: 85 e0 ldi r24, 0x05 ; 5 + 1bc: 90 e0 ldi r25, 0x00 ; 0 + 1be: 0e 94 88 00 call 0x110 ; 0x110 + rs232_send(text); + 1c2: ce 01 movw r24, r28 + 1c4: 0e 94 55 01 call 0x2aa ; 0x2aa + if(usb_getstatus() == USB_STATUS_CONFIGURED && usb_ready()) { + 1c8: 0e 94 cf 01 call 0x39e ; 0x39e + 1cc: 83 30 cpi r24, 0x03 ; 3 + 1ce: 39 f4 brne .+14 ; 0x1de + 1d0: 0e 94 d2 01 call 0x3a4 ; 0x3a4 + 1d4: 88 23 and r24, r24 + 1d6: 19 f0 breq .+6 ; 0x1de + usb_send(text); + 1d8: ce 01 movw r24, r28 + 1da: 0e 94 bf 01 call 0x37e ; 0x37e + } + led(GREEN); + 1de: 82 e0 ldi r24, 0x02 ; 2 + 1e0: 90 e0 ldi r25, 0x00 ; 0 + 1e2: 0e 94 88 00 call 0x110 ; 0x110 +} + 1e6: df 91 pop r29 + 1e8: cf 91 pop r28 + 1ea: 08 95 ret -00000374 : - 374: 0e 94 bd 01 call 0x37a ; 0x37a - 378: 08 95 ret +000001ec
: + led(RED); + _delay_ms(2000); +} -0000037a : - 37a: 80 ea ldi r24, 0xA0 ; 160 - 37c: 80 93 d8 00 sts 0x00D8, r24 - 380: 86 e0 ldi r24, 0x06 ; 6 - 382: 89 bd out 0x29, r24 ; 41 - 384: 09 b4 in r0, 0x29 ; 41 - 386: 00 fe sbrs r0, 0 - 388: fd cf rjmp .-6 ; 0x384 - 38a: 80 e8 ldi r24, 0x80 ; 128 - 38c: 80 93 d8 00 sts 0x00D8, r24 - 390: 10 92 e0 00 sts 0x00E0, r1 - 394: 10 92 3e 01 sts 0x013E, r1 - 398: 8f ef ldi r24, 0xFF ; 255 - 39a: 80 93 0e 01 sts 0x010E, r24 - 39e: 3c 98 cbi 0x07, 4 ; 7 - 3a0: 88 e0 ldi r24, 0x08 ; 8 - 3a2: 80 93 e2 00 sts 0x00E2, r24 - 3a6: 08 95 ret +int main(void) +{ + 1ec: cf 93 push r28 + 1ee: df 93 push r29 + 1f0: cd b7 in r28, 0x3d ; 61 + 1f2: de b7 in r29, 0x3e ; 62 + 1f4: a0 97 sbiw r28, 0x20 ; 32 + 1f6: 0f b6 in r0, 0x3f ; 63 + 1f8: f8 94 cli + 1fa: de bf out 0x3e, r29 ; 62 + 1fc: 0f be out 0x3f, r0 ; 63 + 1fe: cd bf out 0x3d, r28 ; 61 + init(); + 200: 0e 94 b1 00 call 0x162 ; 0x162 + + led(GREEN); + 204: 82 e0 ldi r24, 0x02 ; 2 + 206: 90 e0 ldi r25, 0x00 ; 0 + 208: 0e 94 88 00 call 0x110 ; 0x110 + char text[32]; + uint8_t i=0; + 20c: d1 2c mov r13, r1 + while(1) + { + snprintf(text, 32, "blafoo %d ich bin ein lager doofer text",i++); + 20e: 0f 2e mov r0, r31 + 210: f4 e4 ldi r31, 0x44 ; 68 + 212: ef 2e mov r14, r31 + 214: f1 e0 ldi r31, 0x01 ; 1 + 216: ff 2e mov r15, r31 + 218: f0 2d mov r31, r0 + 21a: 68 94 set + 21c: cc 24 eor r12, r12 + 21e: c5 f8 bld r12, 5 + 220: 8e 01 movw r16, r28 + 222: 0f 5f subi r16, 0xFF ; 255 + 224: 1f 4f sbci r17, 0xFF ; 255 + 226: 8d 2d mov r24, r13 + 228: d3 94 inc r13 + 22a: 1f 92 push r1 + 22c: 8f 93 push r24 + 22e: ff 92 push r15 + 230: ef 92 push r14 + 232: 1f 92 push r1 + 234: cf 92 push r12 + 236: 1f 93 push r17 + 238: 0f 93 push r16 + 23a: 0e 94 fd 06 call 0xdfa ; 0xdfa + send(text); + 23e: c8 01 movw r24, r16 + 240: 0e 94 c1 00 call 0x182 ; 0x182 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif -000003a8 : - 3a8: 2f 92 push r2 - 3aa: 3f 92 push r3 - 3ac: 4f 92 push r4 - 3ae: 5f 92 push r5 - 3b0: 7f 92 push r7 - 3b2: 8f 92 push r8 - 3b4: 9f 92 push r9 - 3b6: af 92 push r10 - 3b8: cf 92 push r12 - 3ba: df 92 push r13 + __builtin_avr_delay_cycles(__ticks_dc); + 244: 2f ef ldi r18, 0xFF ; 255 + 246: 89 e6 ldi r24, 0x69 ; 105 + 248: 98 e1 ldi r25, 0x18 ; 24 + 24a: 21 50 subi r18, 0x01 ; 1 + 24c: 80 40 sbci r24, 0x00 ; 0 + 24e: 90 40 sbci r25, 0x00 ; 0 + 250: e1 f7 brne .-8 ; 0x24a + 252: 00 c0 rjmp .+0 ; 0x254 + 254: 00 00 nop + 256: 0f b6 in r0, 0x3f ; 63 + 258: f8 94 cli + 25a: de bf out 0x3e, r29 ; 62 + 25c: 0f be out 0x3f, r0 ; 63 + 25e: cd bf out 0x3d, r28 ; 61 + 260: e2 cf rjmp .-60 ; 0x226 + +00000262 : +int uart_putchar(char c, FILE *stream); +static FILE rs232 = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE); + + +int uart_putchar(char c, FILE *stream) +{ + 262: cf 93 push r28 + 264: c8 2f mov r28, r24 + if (c == '\n') { + 266: 8a 30 cpi r24, 0x0A ; 10 + 268: 19 f4 brne .+6 ; 0x270 + uart_putchar('\r', stream); //Warten solange bis Zeichen gesendet wurde + 26a: 8d e0 ldi r24, 0x0D ; 13 + 26c: 0e 94 31 01 call 0x262 ; 0x262 + } + loop_until_bit_is_set(UCSR1A, UDRE1); //Ausgabe des Zeichens + 270: e8 ec ldi r30, 0xC8 ; 200 + 272: f0 e0 ldi r31, 0x00 ; 0 + 274: 90 81 ld r25, Z + 276: 95 ff sbrs r25, 5 + 278: fd cf rjmp .-6 ; 0x274 + UDR1 = c; + 27a: c0 93 ce 00 sts 0x00CE, r28 + return (0); +} + 27e: 80 e0 ldi r24, 0x00 ; 0 + 280: 90 e0 ldi r25, 0x00 ; 0 + 282: cf 91 pop r28 + 284: 08 95 ret + +00000286 : + +void init_rs232() +{ + UCSR1C = (1 << UCSZ11) |(1 << UCSZ10); //8N1 + 286: 86 e0 ldi r24, 0x06 ; 6 + 288: 80 93 ca 00 sts 0x00CA, r24 + UCSR1B |= /*(1<: +} + +void rs232_send(char * text) { + fprintf(&rs232, text); + 2aa: 9f 93 push r25 + 2ac: 8f 93 push r24 + 2ae: 80 e0 ldi r24, 0x00 ; 0 + 2b0: 91 e0 ldi r25, 0x01 ; 1 + 2b2: 9f 93 push r25 + 2b4: 8f 93 push r24 + 2b6: 0e 94 eb 06 call 0xdd6 ; 0xdd6 + 2ba: 0f 90 pop r0 + 2bc: 0f 90 pop r0 + 2be: 0f 90 pop r0 + 2c0: 0f 90 pop r0 + 2c2: 08 95 ret + +000002c4 : +#ifdef USERDEFCONTROLS // see usbconfig.h +//----------------------------------------------------------------------------- +// Handle user defined control requests +// "ucr" contains the data of the control request +// function has to return "true", if request is handled (otherwise "false") +bool usb_controlrequest(struct usb_control_request *ucr) { + 2c4: cf 93 push r28 + 2c6: df 93 push r29 + 2c8: cd b7 in r28, 0x3d ; 61 + 2ca: de b7 in r29, 0x3e ; 62 + 2cc: 60 97 sbiw r28, 0x10 ; 16 + 2ce: 0f b6 in r0, 0x3f ; 63 + 2d0: f8 94 cli + 2d2: de bf out 0x3e, r29 ; 62 + 2d4: 0f be out 0x3f, r0 ; 63 + 2d6: cd bf out 0x3d, r28 ; 61 + #define USER_REQUESTTYPE 0xC3 // a user defined request type (means, no standard request) + #define USER_REQUESTVERSION 0x01 // a self defined request: get version info + bool Result; + const char VersionInfo[ENDPOINT0_SIZE] = {"Version 1.0"}; + 2d8: 2c e0 ldi r18, 0x0C ; 12 + 2da: e4 e1 ldi r30, 0x14 ; 20 + 2dc: f1 e0 ldi r31, 0x01 ; 1 + 2de: de 01 movw r26, r28 + 2e0: 11 96 adiw r26, 0x01 ; 1 + 2e2: 01 90 ld r0, Z+ + 2e4: 0d 92 st X+, r0 + 2e6: 2a 95 dec r18 + 2e8: e1 f7 brne .-8 ; 0x2e2 + 2ea: 1d 86 std Y+13, r1 ; 0x0d + 2ec: 1e 86 std Y+14, r1 ; 0x0e + 2ee: 1f 86 std Y+15, r1 ; 0x0f + 2f0: 18 8a std Y+16, r1 ; 0x10 + + Result=false; + if (ucr->bmRequestType == USER_REQUESTTYPE) { + 2f2: fc 01 movw r30, r24 + 2f4: 20 81 ld r18, Z + 2f6: 23 3c cpi r18, 0xC3 ; 195 + 2f8: 51 f4 brne .+20 ; 0x30e + // handle the requests (only one defined in this example) + switch (ucr->bRequest) { + 2fa: 81 81 ldd r24, Z+1 ; 0x01 + 2fc: 81 30 cpi r24, 0x01 ; 1 + 2fe: 49 f4 brne .+18 ; 0x312 + case USER_REQUESTVERSION: // request for version info) + usb_txdata_control((uint8_t *)VersionInfo,sizeof(VersionInfo)); + 300: 60 e1 ldi r22, 0x10 ; 16 + 302: ce 01 movw r24, r28 + 304: 01 96 adiw r24, 0x01 ; 1 + 306: 0e 94 fc 02 call 0x5f8 ; 0x5f8 + Result=true; + 30a: 81 e0 ldi r24, 0x01 ; 1 + break; + 30c: 03 c0 rjmp .+6 ; 0x314 + #define USER_REQUESTTYPE 0xC3 // a user defined request type (means, no standard request) + #define USER_REQUESTVERSION 0x01 // a self defined request: get version info + bool Result; + const char VersionInfo[ENDPOINT0_SIZE] = {"Version 1.0"}; + + Result=false; + 30e: 80 e0 ldi r24, 0x00 ; 0 + 310: 01 c0 rjmp .+2 ; 0x314 + 312: 80 e0 ldi r24, 0x00 ; 0 + Result=true; + break; + } + } + return Result; // true means, request is handled +} + 314: 60 96 adiw r28, 0x10 ; 16 + 316: 0f b6 in r0, 0x3f ; 63 + 318: f8 94 cli + 31a: de bf out 0x3e, r29 ; 62 + 31c: 0f be out 0x3f, r0 ; 63 + 31e: cd bf out 0x3d, r28 ; 61 + 320: df 91 pop r29 + 322: cf 91 pop r28 + 324: 08 95 ret + +00000326 : +#endif + +//----------------------------------------------------------------------------- +// handle of endpoint interrupt for incoming data +// "datasize" contains the number of bytes in the USB FIFO buffer +void usb_ep(uint8_t endpoint, uint16_t datasize) { + 326: cf 93 push r28 + 328: df 93 push r29 + 32a: cd b7 in r28, 0x3d ; 61 + 32c: de b7 in r29, 0x3e ; 62 + 32e: a0 97 sbiw r28, 0x20 ; 32 + 330: 0f b6 in r0, 0x3f ; 63 + 332: f8 94 cli + 334: de bf out 0x3e, r29 ; 62 + 336: 0f be out 0x3f, r0 ; 63 + 338: cd bf out 0x3d, r28 ; 61 + #define BUFSIZE 32 // USB FIFO buffer size (see usb_user_config.h at "endpoints") + + char buf[BUFSIZE]; // buffer for received data from host and data to transmit to host + uint8_t n; + + if (endpoint == RXENDPOINT) { // data from host by our defined data receive endpoint + 33a: 81 30 cpi r24, 0x01 ; 1 + 33c: a1 f4 brne .+40 ; 0x366 + n=usb_rxdata(endpoint, (uint8_t *)buf, sizeof(buf)); // read data into buffer + 33e: 40 e2 ldi r20, 0x20 ; 32 + 340: be 01 movw r22, r28 + 342: 6f 5f subi r22, 0xFF ; 255 + 344: 7f 4f sbci r23, 0xFF ; 255 + 346: 0e 94 d7 02 call 0x5ae ; 0x5ae + if (n) { // data read into local buffer + 34a: 88 23 and r24, r24 + 34c: 61 f0 breq .+24 ; 0x366 + buf[BUFSIZE-1]=0; // for security: terminate string + 34e: 18 a2 std Y+32, r1 ; 0x20 + //resi(buf); + strupr(buf); // upper case string + 350: ce 01 movw r24, r28 + 352: 01 96 adiw r24, 0x01 ; 1 + 354: 0e 94 e1 06 call 0xdc2 ; 0xdc2 + // response to host with converted string + usb_txdata(TXENDPOINT, (uint8_t *)buf, sizeof(buf)); // transfer data to host*/ + 358: 40 e2 ldi r20, 0x20 ; 32 + 35a: be 01 movw r22, r28 + 35c: 6f 5f subi r22, 0xFF ; 255 + 35e: 7f 4f sbci r23, 0xFF ; 255 + 360: 82 e8 ldi r24, 0x82 ; 130 + 362: 0e 94 1f 03 call 0x63e ; 0x63e + } + } +} + 366: a0 96 adiw r28, 0x20 ; 32 + 368: 0f b6 in r0, 0x3f ; 63 + 36a: f8 94 cli + 36c: de bf out 0x3e, r29 ; 62 + 36e: 0f be out 0x3f, r0 ; 63 + 370: cd bf out 0x3d, r28 ; 61 + 372: df 91 pop r29 + 374: cf 91 pop r28 + 376: 08 95 ret + +00000378 : + +void init_usb() { + usb_init(); + 378: 0e 94 d5 01 call 0x3aa ; 0x3aa + 37c: 08 95 ret + +0000037e : + +void usb_send(char* text) { + #define RXENDPOINT 0x01 + #define TXENDPOINT 0x82 + #define ITENDPOINT 0x83 + usb_txdata(TXENDPOINT, (uint8_t *)text, strlen(text)); + 37e: e8 2f mov r30, r24 + 380: f9 2f mov r31, r25 + 382: df 01 movw r26, r30 + 384: 0d 90 ld r0, X+ + 386: 00 20 and r0, r0 + 388: e9 f7 brne .-6 ; 0x384 + 38a: 11 97 sbiw r26, 0x01 ; 1 + 38c: ad 01 movw r20, r26 + 38e: 4e 1b sub r20, r30 + 390: 5f 0b sbc r21, r31 + 392: 68 2f mov r22, r24 + 394: 79 2f mov r23, r25 + 396: 82 e8 ldi r24, 0x82 ; 130 + 398: 0e 94 1f 03 call 0x63e ; 0x63e + 39c: 08 95 ret + +0000039e : +} + +uint8_t usb_getstatus() { + return usb_status(); + 39e: 0e 94 64 02 call 0x4c8 ; 0x4c8 +} + 3a2: 08 95 ret + +000003a4 : + +uint8_t usb_ready() { + return usb_is_ready(); + 3a4: 0e 94 72 02 call 0x4e4 ; 0x4e4 + 3a8: 08 95 ret + +000003aa : + UHWCON = _BV(UVREGE); // enable PAD regulator + #endif + #ifdef MEGA6 + UHWCON = _BV(UIMOD)|_BV(UVREGE); // set device mode, enable PAD regulator + #endif + USBCON = _BV(USBE) | _BV(FRZCLK); // enable USB + 3aa: 80 ea ldi r24, 0xA0 ; 160 + 3ac: 80 93 d8 00 sts 0x00D8, r24 + #if (F_CPU==16000000) + // 16MHz + #ifdef MEGA2 + PLLCSR = _BV(PLLE) | _BV(PLLP0); // config PLL, 16 MHz xtal + 3b0: 86 e0 ldi r24, 0x06 ; 6 + 3b2: 89 bd out 0x29, r24 ; 41 + PLLCSR = _BV(PLLE); // config PLL, 8 MHz xtal + #endif + + #endif + + while (!(PLLCSR & _BV(PLOCK))) ; // wait for PLL lock + 3b4: 09 b4 in r0, 0x29 ; 41 + 3b6: 00 fe sbrs r0, 0 + 3b8: fd cf rjmp .-6 ; 0x3b4 + #ifdef MEGA4_6 + USBCON = _BV(USBE)|_BV(OTGPADE); // start USB clock + #else + USBCON = _BV(USBE); // start USB clock + 3ba: 80 e8 ldi r24, 0x80 ; 128 + 3bc: 80 93 d8 00 sts 0x00D8, r24 + #endif + UDCON = 0; // enable attach resistor + 3c0: 10 92 e0 00 sts 0x00E0, r1 + usb_conf = 0; + 3c4: 10 92 6c 01 sts 0x016C, r1 + #if (NUMINTERFACES>1) + usb_if = 0xFF; + #endif + #ifdef MEGA2 + // port for VBUS detection + VBUSDIR &= ~_BV(VBUSPIN); // port as input + 3c8: 3c 98 cbi 0x07, 4 ; 7 + #endif + UDIEN = _BV(EORSTE); // enable "end of reset" interrupt + 3ca: 88 e0 ldi r24, 0x08 ; 8 + 3cc: 80 93 e2 00 sts 0x00E2, r24 + 3d0: 08 95 ret + +000003d2 : #if (NUMINTERFACES>1) void usb_endpoints(uint8_t ifnumber) // with interface number #else void usb_endpoints(void) #endif { - 3bc: ef 92 push r14 - 3be: ff 92 push r15 - 3c0: 0f 93 push r16 - 3c2: 1f 93 push r17 - 3c4: cf 93 push r28 - 3c6: df 93 push r29 - 3c8: 28 2f mov r18, r24 -//----------------------------------------------------------------------------- -// Initializing Endpoints -//----------------------------------------------------------------------------- - -#if (NUMINTERFACES>1) -void usb_endpoints(uint8_t ifnumber) // with interface number - 3ca: 90 e0 ldi r25, 0x00 ; 0 - 3cc: 6c e0 ldi r22, 0x0C ; 12 - 3ce: 70 e0 ldi r23, 0x00 ; 0 - 3d0: 0e 94 0a 06 call 0xc14 ; 0xc14 <__mulhi3> - 3d4: fc 01 movw r30, r24 - 3d6: eb 5d subi r30, 0xDB ; 219 - 3d8: fe 4f sbci r31, 0xFE ; 254 - 3da: 82 2f mov r24, r18 - 3dc: 90 e0 ldi r25, 0x00 ; 0 - 3de: 6c e0 ldi r22, 0x0C ; 12 - 3e0: 70 e0 ldi r23, 0x00 ; 0 - 3e2: 0e 94 0a 06 call 0xc14 ; 0xc14 <__mulhi3> - 3e6: 89 5d subi r24, 0xD9 ; 217 - 3e8: 9e 4f sbci r25, 0xFE ; 254 - 3ea: 41 e0 ldi r20, 0x01 ; 1 + 3d2: 2f 92 push r2 + 3d4: 3f 92 push r3 + 3d6: 4f 92 push r4 + 3d8: 5f 92 push r5 + 3da: 7f 92 push r7 + 3dc: 8f 92 push r8 + 3de: 9f 92 push r9 + 3e0: af 92 push r10 + 3e2: cf 92 push r12 + 3e4: df 92 push r13 + 3e6: ef 92 push r14 + 3e8: ff 92 push r15 + 3ea: 0f 93 push r16 + 3ec: 1f 93 push r17 + 3ee: cf 93 push r28 + 3f0: df 93 push r29 + 3f2: e4 e2 ldi r30, 0x24 ; 36 + 3f4: f1 e0 ldi r31, 0x01 ; 1 + 3f6: 86 e2 ldi r24, 0x26 ; 38 + 3f8: 91 e0 ldi r25, 0x01 ; 1 + 3fa: 41 e0 ldi r20, 0x01 ; 1 #endif uint8_t i; for (i=0; i1) void usb_endpoints(uint8_t ifnumber) // with interface number - 424: df 01 movw r26, r30 +#else +void usb_endpoints(void) + 434: df 01 movw r26, r30 #define IN_TRANSFER EP_CONFIG[i].ep_type & 0x01 #endif uint8_t i; for (i=0; i + 436: 20 81 ld r18, Z + 438: 2f 3f cpi r18, 0xFF ; 255 + 43a: 59 f1 breq .+86 ; 0x492 UENUM = i+1; // select endpoint - 42c: e6 01 movw r28, r12 - 42e: 48 83 st Y, r20 + 43c: e6 01 movw r28, r12 + 43e: 48 83 st Y, r20 UECONX = _BV(EPEN); // enable endpoint - 430: e7 01 movw r28, r14 - 432: a8 82 st Y, r10 + 440: e7 01 movw r28, r14 + 442: a8 82 st Y, r10 UECFG0X = EPC.ep_type; // transfer type and direction - 434: 20 81 ld r18, Z - 436: e8 01 movw r28, r16 - 438: 28 83 st Y, r18 -//----------------------------------------------------------------------------- -// Initializing Endpoints + 444: 20 81 ld r18, Z + 446: e8 01 movw r28, r16 + 448: 28 83 st Y, r18 //----------------------------------------------------------------------------- #if (NUMINTERFACES>1) void usb_endpoints(uint8_t ifnumber) // with interface number - 43a: 1c 01 movw r2, r24 - 43c: 9c 01 movw r18, r24 - 43e: 21 50 subi r18, 0x01 ; 1 - 440: 31 09 sbc r19, r1 +#else +void usb_endpoints(void) + 44a: 1c 01 movw r2, r24 + 44c: 9c 01 movw r18, r24 + 44e: 21 50 subi r18, 0x01 ; 1 + 450: 31 09 sbc r19, r1 for (i=0; i - 44a: 20 34 cpi r18, 0x40 ; 64 - 44c: 41 f0 breq .+16 ; 0x45e - 44e: 20 32 cpi r18, 0x20 ; 32 - 450: 41 f0 breq .+16 ; 0x462 - 452: 20 31 cpi r18, 0x10 ; 16 - 454: 41 f4 brne .+16 ; 0x466 - 456: 37 2d mov r19, r7 - 458: 07 c0 rjmp .+14 ; 0x468 - 45a: 30 e4 ldi r19, 0x40 ; 64 - 45c: 05 c0 rjmp .+10 ; 0x468 - 45e: 30 e3 ldi r19, 0x30 ; 48 - 460: 03 c0 rjmp .+6 ; 0x468 - 462: 30 e2 ldi r19, 0x20 ; 32 - 464: 01 c0 rjmp .+2 ; 0x468 - 466: 38 2d mov r19, r8 - 468: e1 01 movw r28, r2 - 46a: 28 81 ld r18, Y - 46c: 23 2b or r18, r19 - 46e: eb 01 movw r28, r22 - 470: 28 83 st Y, r18 + 452: e9 01 movw r28, r18 + 454: 28 81 ld r18, Y + 456: 20 38 cpi r18, 0x80 ; 128 + 458: 41 f0 breq .+16 ; 0x46a + 45a: 20 34 cpi r18, 0x40 ; 64 + 45c: 41 f0 breq .+16 ; 0x46e + 45e: 20 32 cpi r18, 0x20 ; 32 + 460: 41 f0 breq .+16 ; 0x472 + 462: 20 31 cpi r18, 0x10 ; 16 + 464: 41 f4 brne .+16 ; 0x476 + 466: 37 2d mov r19, r7 + 468: 07 c0 rjmp .+14 ; 0x478 + 46a: 30 e4 ldi r19, 0x40 ; 64 + 46c: 05 c0 rjmp .+10 ; 0x478 + 46e: 30 e3 ldi r19, 0x30 ; 48 + 470: 03 c0 rjmp .+6 ; 0x478 + 472: 30 e2 ldi r19, 0x20 ; 32 + 474: 01 c0 rjmp .+2 ; 0x478 + 476: 38 2d mov r19, r8 + 478: e1 01 movw r28, r2 + 47a: 28 81 ld r18, Y + 47c: 23 2b or r18, r19 + 47e: eb 01 movw r28, r22 + 480: 28 83 st Y, r18 (EPC.ep_buffer); // bufer size and bank if (IN_TRANSFER) UEIENX = 0; // no interrupts handling for IN endpoints - 472: 2c 91 ld r18, X - 474: 20 ff sbrs r18, 0 - 476: 03 c0 rjmp .+6 ; 0x47e - 478: d2 01 movw r26, r4 - 47a: 1c 92 st X, r1 - 47c: 02 c0 rjmp .+4 ; 0x482 + 482: 2c 91 ld r18, X + 484: 20 ff sbrs r18, 0 + 486: 03 c0 rjmp .+6 ; 0x48e + 488: d2 01 movw r26, r4 + 48a: 1c 92 st X, r1 + 48c: 02 c0 rjmp .+4 ; 0x492 else UEIENX = _BV(RXOUTE); // interrupt handling for incoming data (OUT endpoint) - 47e: e2 01 movw r28, r4 - 480: 98 82 st Y, r9 - 482: 4f 5f subi r20, 0xFF ; 255 - 484: 33 96 adiw r30, 0x03 ; 3 - 486: 03 96 adiw r24, 0x03 ; 3 + 48e: e2 01 movw r28, r4 + 490: 98 82 st Y, r9 + 492: 4f 5f subi r20, 0xFF ; 255 + 494: 33 96 adiw r30, 0x03 ; 3 + 496: 03 96 adiw r24, 0x03 ; 3 #define EPC EP_CONFIG[i] #define IN_TRANSFER EP_CONFIG[i].ep_type & 0x01 #endif uint8_t i; for (i=0; i + 498: 45 30 cpi r20, 0x05 ; 5 + 49a: 61 f6 brne .-104 ; 0x434 } } #ifdef MEGA4_6 UERST = 0x7E; // endpoint FIFO reset for endpoint 1, 2, 3, 4, 5 and 6 #else UERST = 0x1E; // endpoint FIFO reset for endpoint 1, 2, 3 and 4 - 48c: ea ee ldi r30, 0xEA ; 234 - 48e: f0 e0 ldi r31, 0x00 ; 0 - 490: 8e e1 ldi r24, 0x1E ; 30 - 492: 80 83 st Z, r24 + 49c: ea ee ldi r30, 0xEA ; 234 + 49e: f0 e0 ldi r31, 0x00 ; 0 + 4a0: 8e e1 ldi r24, 0x1E ; 30 + 4a2: 80 83 st Z, r24 #endif UERST = 0; - 494: 10 82 st Z, r1 + 4a4: 10 82 st Z, r1 } - 496: df 91 pop r29 - 498: cf 91 pop r28 - 49a: 1f 91 pop r17 - 49c: 0f 91 pop r16 - 49e: ff 90 pop r15 - 4a0: ef 90 pop r14 - 4a2: df 90 pop r13 - 4a4: cf 90 pop r12 - 4a6: af 90 pop r10 - 4a8: 9f 90 pop r9 - 4aa: 8f 90 pop r8 - 4ac: 7f 90 pop r7 - 4ae: 5f 90 pop r5 - 4b0: 4f 90 pop r4 - 4b2: 3f 90 pop r3 - 4b4: 2f 90 pop r2 - 4b6: 08 95 ret + 4a6: df 91 pop r29 + 4a8: cf 91 pop r28 + 4aa: 1f 91 pop r17 + 4ac: 0f 91 pop r16 + 4ae: ff 90 pop r15 + 4b0: ef 90 pop r14 + 4b2: df 90 pop r13 + 4b4: cf 90 pop r12 + 4b6: af 90 pop r10 + 4b8: 9f 90 pop r9 + 4ba: 8f 90 pop r8 + 4bc: 7f 90 pop r7 + 4be: 5f 90 pop r5 + 4c0: 4f 90 pop r4 + 4c2: 3f 90 pop r3 + 4c4: 2f 90 pop r2 + 4c6: 08 95 ret -000004b8 : +000004c8 : + #ifdef MEGA2 + #ifdef VBUSDETECT + if (VBUSPORT & _BV(VBUSPIN)) { + r = USB_STATUS_CONNECTED; + #endif + if (UDADDR & _BV(ADDEN)) { + 4c8: 80 91 e3 00 lds r24, 0x00E3 + 4cc: 88 23 and r24, r24 + 4ce: 34 f4 brge .+12 ; 0x4dc + r = USB_STATUS_ENUMERATED; + if (usb_conf) r = USB_STATUS_CONFIGURED; + 4d0: 80 91 6c 01 lds r24, 0x016C + 4d4: 81 11 cpse r24, r1 + 4d6: 04 c0 rjmp .+8 ; 0x4e0 + #ifdef VBUSDETECT + if (VBUSPORT & _BV(VBUSPIN)) { + r = USB_STATUS_CONNECTED; + #endif + if (UDADDR & _BV(ADDEN)) { + r = USB_STATUS_ENUMERATED; + 4d8: 82 e0 ldi r24, 0x02 ; 2 + 4da: 08 95 ret + +uint8_t usb_status(void) +{ + uint8_t r; + + r = USB_STATUS_DISCONNECTED; + 4dc: 80 e0 ldi r24, 0x00 ; 0 + 4de: 08 95 ret + if (VBUSPORT & _BV(VBUSPIN)) { + r = USB_STATUS_CONNECTED; + #endif + if (UDADDR & _BV(ADDEN)) { + r = USB_STATUS_ENUMERATED; + if (usb_conf) r = USB_STATUS_CONFIGURED; + 4e0: 83 e0 ldi r24, 0x03 ; 3 + #ifdef VBUSDETECT + } + #endif + #endif + return r; +} + 4e2: 08 95 ret + +000004e4 : +{ + while (!(UEINTX & _BV(TXINI))); +} + +uint8_t usb_is_ready() { + return (UEINTX & _BV(TXINI)); + 4e4: 80 91 e8 00 lds r24, 0x00E8 +} + 4e8: 81 70 andi r24, 0x01 ; 1 + 4ea: 08 95 ret + +000004ec : void usb_wait_in(void) // wait for host, until it's ready to receive IN package { uint8_t i; do { i = UEINTX; - 4b8: e8 ee ldi r30, 0xE8 ; 232 - 4ba: f0 e0 ldi r31, 0x00 ; 0 - 4bc: 80 81 ld r24, Z + 4ec: e8 ee ldi r30, 0xE8 ; 232 + 4ee: f0 e0 ldi r31, 0x00 ; 0 + 4f0: 80 81 ld r24, Z } while (!(i & (_BV(TXINI)|_BV(RXOUTI)))); - 4be: 85 70 andi r24, 0x05 ; 5 - 4c0: e9 f3 breq .-6 ; 0x4bc + 4f2: 85 70 andi r24, 0x05 ; 5 + 4f4: e9 f3 breq .-6 ; 0x4f0 } - 4c2: 08 95 ret + 4f6: 08 95 ret -000004c4 : +000004f8 : void usb_desc_out(bool isRAM, const uint8_t *pgmaddr, uint8_t size, uint16_t maxsize) // return descriptor over endpoint 0 to host from flash memory or RAM { - 4c4: af 92 push r10 - 4c6: bf 92 push r11 - 4c8: cf 92 push r12 - 4ca: df 92 push r13 - 4cc: ef 92 push r14 - 4ce: ff 92 push r15 - 4d0: 0f 93 push r16 - 4d2: 1f 93 push r17 - 4d4: cf 93 push r28 - 4d6: df 93 push r29 - 4d8: d8 2e mov r13, r24 - 4da: d6 2f mov r29, r22 - 4dc: c7 2f mov r28, r23 + 4f8: af 92 push r10 + 4fa: bf 92 push r11 + 4fc: cf 92 push r12 + 4fe: df 92 push r13 + 500: ef 92 push r14 + 502: ff 92 push r15 + 504: 0f 93 push r16 + 506: 1f 93 push r17 + 508: cf 93 push r28 + 50a: df 93 push r29 + 50c: d8 2e mov r13, r24 + 50e: d6 2f mov r29, r22 + 510: c7 2f mov r28, r23 uint8_t i=0, len, n; const uint8_t *addr; addr=pgmaddr; len=size; if (len>maxsize) len=maxsize; - 4de: e4 2f mov r30, r20 - 4e0: f0 e0 ldi r31, 0x00 ; 0 - 4e2: 2e 17 cp r18, r30 - 4e4: 3f 07 cpc r19, r31 - 4e6: 10 f4 brcc .+4 ; 0x4ec - 4e8: c2 2e mov r12, r18 - 4ea: 01 c0 rjmp .+2 ; 0x4ee + 512: e4 2f mov r30, r20 + 514: f0 e0 ldi r31, 0x00 ; 0 + 516: 2e 17 cp r18, r30 + 518: 3f 07 cpc r19, r31 + 51a: 10 f4 brcc .+4 ; 0x520 <__stack+0x21> + 51c: c2 2e mov r12, r18 + 51e: 01 c0 rjmp .+2 ; 0x522 <__stack+0x23> { uint8_t i=0, len, n; const uint8_t *addr; addr=pgmaddr; len=size; - 4ec: c4 2e mov r12, r20 + 520: c4 2e mov r12, r20 if (len>maxsize) len=maxsize; do { usb_wait_in(); - 4ee: 0e 94 5c 02 call 0x4b8 ; 0x4b8 - 4f2: 0d 2f mov r16, r29 - 4f4: 1c 2f mov r17, r28 + 522: 0e 94 76 02 call 0x4ec ; 0x4ec + 526: 0d 2f mov r16, r29 + 528: 1c 2f mov r17, r28 if (i & _BV(RXOUTI)) return; // cancel // send IN package n = (len < ENDPOINT0_SIZE) ? len : ENDPOINT0_SIZE; - 4f6: 68 94 set - 4f8: aa 24 eor r10, r10 - 4fa: a4 f8 bld r10, 4 + 52a: 68 94 set + 52c: aa 24 eor r10, r10 + 52e: a4 f8 bld r10, 4 for (i = n; i; i--) UEDATX = isRAM ? *addr++ : pgm_read_byte(addr++); len -= n; USB_SEND_IN; - 4fc: 0f 2e mov r0, r31 - 4fe: f8 ee ldi r31, 0xE8 ; 232 - 500: ef 2e mov r14, r31 - 502: f1 2c mov r15, r1 - 504: f0 2d mov r31, r0 - 506: 0f 2e mov r0, r31 - 508: fe ef ldi r31, 0xFE ; 254 - 50a: bf 2e mov r11, r31 - 50c: f0 2d mov r31, r0 + 530: 0f 2e mov r0, r31 + 532: f8 ee ldi r31, 0xE8 ; 232 + 534: ef 2e mov r14, r31 + 536: f1 2c mov r15, r1 + 538: f0 2d mov r31, r0 + 53a: 0f 2e mov r0, r31 + 53c: fe ef ldi r31, 0xFE ; 254 + 53e: bf 2e mov r11, r31 + 540: f0 2d mov r31, r0 usb_wait_in(); if (i & _BV(RXOUTI)) return; // cancel // send IN package n = (len < ENDPOINT0_SIZE) ? len : ENDPOINT0_SIZE; for (i = n; i; i--) UEDATX = isRAM ? *addr++ : pgm_read_byte(addr++); - 50e: c1 ef ldi r28, 0xF1 ; 241 - 510: d0 e0 ldi r29, 0x00 ; 0 + 542: c1 ef ldi r28, 0xF1 ; 241 + 544: d0 e0 ldi r29, 0x00 ; 0 if (len>maxsize) len=maxsize; do { usb_wait_in(); if (i & _BV(RXOUTI)) return; // cancel // send IN package n = (len < ENDPOINT0_SIZE) ? len : ENDPOINT0_SIZE; - 512: 2c 2d mov r18, r12 - 514: 80 e1 ldi r24, 0x10 ; 16 - 516: 8c 15 cp r24, r12 - 518: 08 f4 brcc .+2 ; 0x51c <__stack+0x1d> - 51a: 2a 2d mov r18, r10 + 546: 2c 2d mov r18, r12 + 548: 80 e1 ldi r24, 0x10 ; 16 + 54a: 8c 15 cp r24, r12 + 54c: 08 f4 brcc .+2 ; 0x550 <__stack+0x51> + 54e: 2a 2d mov r18, r10 for (i = n; i; i--) - 51c: 22 23 and r18, r18 - 51e: d9 f0 breq .+54 ; 0x556 <__stack+0x57> - 520: f8 01 movw r30, r16 - 522: 92 2f mov r25, r18 + 550: 22 23 and r18, r18 + 552: d9 f0 breq .+54 ; 0x58a <__stack+0x8b> + 554: f8 01 movw r30, r16 + 556: 92 2f mov r25, r18 UEDATX = isRAM ? *addr++ : pgm_read_byte(addr++); - 524: dd 20 and r13, r13 - 526: 11 f0 breq .+4 ; 0x52c <__stack+0x2d> - 528: 80 81 ld r24, Z - 52a: 01 c0 rjmp .+2 ; 0x52e <__stack+0x2f> - 52c: 84 91 lpm r24, Z - 52e: 88 83 st Y, r24 + 558: dd 20 and r13, r13 + 55a: 11 f0 breq .+4 ; 0x560 <__stack+0x61> + 55c: 80 81 ld r24, Z + 55e: 01 c0 rjmp .+2 ; 0x562 <__stack+0x63> + 560: 84 91 lpm r24, Z + 562: 88 83 st Y, r24 do { usb_wait_in(); if (i & _BV(RXOUTI)) return; // cancel // send IN package n = (len < ENDPOINT0_SIZE) ? len : ENDPOINT0_SIZE; for (i = n; i; i--) - 530: 91 50 subi r25, 0x01 ; 1 - 532: 31 96 adiw r30, 0x01 ; 1 - 534: 91 11 cpse r25, r1 - 536: f6 cf rjmp .-20 ; 0x524 <__stack+0x25> + 564: 91 50 subi r25, 0x01 ; 1 + 566: 31 96 adiw r30, 0x01 ; 1 + 568: 91 11 cpse r25, r1 + 56a: f6 cf rjmp .-20 ; 0x558 <__stack+0x59> do { i = UEINTX; } while (!(i & (_BV(TXINI)|_BV(RXOUTI)))); } void usb_desc_out(bool isRAM, const uint8_t *pgmaddr, uint8_t size, uint16_t maxsize) - 538: 62 2f mov r22, r18 - 53a: 61 50 subi r22, 0x01 ; 1 - 53c: 70 e0 ldi r23, 0x00 ; 0 - 53e: 6f 5f subi r22, 0xFF ; 255 - 540: 7f 4f sbci r23, 0xFF ; 255 - 542: 06 0f add r16, r22 - 544: 17 1f adc r17, r23 + 56c: 62 2f mov r22, r18 + 56e: 61 50 subi r22, 0x01 ; 1 + 570: 70 e0 ldi r23, 0x00 ; 0 + 572: 6f 5f subi r22, 0xFF ; 255 + 574: 7f 4f sbci r23, 0xFF ; 255 + 576: 06 0f add r16, r22 + 578: 17 1f adc r17, r23 if (i & _BV(RXOUTI)) return; // cancel // send IN package n = (len < ENDPOINT0_SIZE) ? len : ENDPOINT0_SIZE; for (i = n; i; i--) UEDATX = isRAM ? *addr++ : pgm_read_byte(addr++); len -= n; - 546: c2 1a sub r12, r18 + 57a: c2 1a sub r12, r18 USB_SEND_IN; - 548: f7 01 movw r30, r14 - 54a: b0 82 st Z, r11 + 57c: f7 01 movw r30, r14 + 57e: b0 82 st Z, r11 } while (len || n == ENDPOINT0_SIZE); - 54c: c1 10 cpse r12, r1 - 54e: 07 c0 rjmp .+14 ; 0x55e <__stack+0x5f> - 550: 20 31 cpi r18, 0x10 ; 16 - 552: 29 f0 breq .+10 ; 0x55e <__stack+0x5f> - 554: 07 c0 rjmp .+14 ; 0x564 <__stack+0x65> + 580: c1 10 cpse r12, r1 + 582: 07 c0 rjmp .+14 ; 0x592 <__stack+0x93> + 584: 20 31 cpi r18, 0x10 ; 16 + 586: 29 f0 breq .+10 ; 0x592 <__stack+0x93> + 588: 07 c0 rjmp .+14 ; 0x598 <__stack+0x99> // send IN package n = (len < ENDPOINT0_SIZE) ? len : ENDPOINT0_SIZE; for (i = n; i; i--) UEDATX = isRAM ? *addr++ : pgm_read_byte(addr++); len -= n; USB_SEND_IN; - 556: f7 01 movw r30, r14 - 558: b0 82 st Z, r11 + 58a: f7 01 movw r30, r14 + 58c: b0 82 st Z, r11 } while (len || n == ENDPOINT0_SIZE); - 55a: cc 20 and r12, r12 - 55c: 19 f0 breq .+6 ; 0x564 <__stack+0x65> + 58e: cc 20 and r12, r12 + 590: 19 f0 breq .+6 ; 0x598 <__stack+0x99> addr=pgmaddr; len=size; if (len>maxsize) len=maxsize; do { usb_wait_in(); - 55e: 0e 94 5c 02 call 0x4b8 ; 0x4b8 - 562: d7 cf rjmp .-82 ; 0x512 <__stack+0x13> + 592: 0e 94 76 02 call 0x4ec ; 0x4ec + 596: d7 cf rjmp .-82 ; 0x546 <__stack+0x47> for (i = n; i; i--) UEDATX = isRAM ? *addr++ : pgm_read_byte(addr++); len -= n; USB_SEND_IN; } while (len || n == ENDPOINT0_SIZE); } - 564: df 91 pop r29 - 566: cf 91 pop r28 - 568: 1f 91 pop r17 - 56a: 0f 91 pop r16 - 56c: ff 90 pop r15 - 56e: ef 90 pop r14 - 570: df 90 pop r13 - 572: cf 90 pop r12 - 574: bf 90 pop r11 - 576: af 90 pop r10 - 578: 08 95 ret + 598: df 91 pop r29 + 59a: cf 91 pop r28 + 59c: 1f 91 pop r17 + 59e: 0f 91 pop r16 + 5a0: ff 90 pop r15 + 5a2: ef 90 pop r14 + 5a4: df 90 pop r13 + 5a6: cf 90 pop r12 + 5a8: bf 90 pop r11 + 5aa: af 90 pop r10 + 5ac: 08 95 ret -0000057a : +000005ae : uint16_t r, i; #else uint8_t r, i; #endif UENUM = endpoint; // select endpoint - 57a: 80 93 e9 00 sts 0x00E9, r24 + 5ae: 80 93 e9 00 sts 0x00E9, r24 #ifdef MEGA4_6 r = ((uint16_t)(UEBCHX)<<8)+UEBCLX; #else r = UEBCLX; - 57e: 90 91 f2 00 lds r25, 0x00F2 - 582: 94 17 cp r25, r20 - 584: 08 f4 brcc .+2 ; 0x588 - 586: 49 2f mov r20, r25 + 5b2: 90 91 f2 00 lds r25, 0x00F2 + 5b6: 94 17 cp r25, r20 + 5b8: 08 f4 brcc .+2 ; 0x5bc + 5ba: 49 2f mov r20, r25 #endif if (r>maxdatasize) r = maxdatasize; if (r) { // data available in input endpoint - 588: 44 23 and r20, r20 - 58a: d1 f0 breq .+52 ; 0x5c0 - 58c: 36 2f mov r19, r22 - 58e: e6 2f mov r30, r22 - 590: f7 2f mov r31, r23 + 5bc: 44 23 and r20, r20 + 5be: d1 f0 breq .+52 ; 0x5f4 + 5c0: 36 2f mov r19, r22 + 5c2: e6 2f mov r30, r22 + 5c4: f7 2f mov r31, r23 for (i=0; i + 5c6: a1 ef ldi r26, 0xF1 ; 241 + 5c8: b0 e0 ldi r27, 0x00 ; 0 + 5ca: 9c 91 ld r25, X + 5cc: 91 93 st Z+, r25 + 5ce: 9e 2f mov r25, r30 + 5d0: 93 1b sub r25, r19 + 5d2: 94 17 cp r25, r20 + 5d4: d0 f3 brcs .-12 ; 0x5ca #ifdef MEGA4_6 if ((((uint16_t)(UEBCHX)<<8)+UEBCLX)==0) { // buffer is empty #else if (UEBCLX==0) { // buffer is empty - 5a2: 90 91 f2 00 lds r25, 0x00F2 - 5a6: 91 11 cpse r25, r1 - 5a8: 0b c0 rjmp .+22 ; 0x5c0 + 5d6: 90 91 f2 00 lds r25, 0x00F2 + 5da: 91 11 cpse r25, r1 + 5dc: 0b c0 rjmp .+22 ; 0x5f4 #endif UERST = _BV(endpoint); // endpoint FIFO reset - 5aa: 21 e0 ldi r18, 0x01 ; 1 - 5ac: 30 e0 ldi r19, 0x00 ; 0 - 5ae: 02 c0 rjmp .+4 ; 0x5b4 - 5b0: 22 0f add r18, r18 - 5b2: 33 1f adc r19, r19 - 5b4: 8a 95 dec r24 - 5b6: e2 f7 brpl .-8 ; 0x5b0 - 5b8: ea ee ldi r30, 0xEA ; 234 - 5ba: f0 e0 ldi r31, 0x00 ; 0 - 5bc: 20 83 st Z, r18 + 5de: 21 e0 ldi r18, 0x01 ; 1 + 5e0: 30 e0 ldi r19, 0x00 ; 0 + 5e2: 02 c0 rjmp .+4 ; 0x5e8 + 5e4: 22 0f add r18, r18 + 5e6: 33 1f adc r19, r19 + 5e8: 8a 95 dec r24 + 5ea: e2 f7 brpl .-8 ; 0x5e4 + 5ec: ea ee ldi r30, 0xEA ; 234 + 5ee: f0 e0 ldi r31, 0x00 ; 0 + 5f0: 20 83 st Z, r18 UERST = 0; - 5be: 10 82 st Z, r1 + 5f2: 10 82 st Z, r1 } } return r; } - 5c0: 84 2f mov r24, r20 - 5c2: 08 95 ret + 5f4: 84 2f mov r24, r20 + 5f6: 08 95 ret -000005c4 : +000005f8 : bool usb_txdata_control(uint8_t *buffer, uint8_t datasize) { uint8_t i; if (datasize) { - 5c4: 66 23 and r22, r22 - 5c6: e9 f0 breq .+58 ; 0x602 + 5f8: 66 23 and r22, r22 + 5fa: e9 f0 breq .+58 ; 0x636 UENUM = 0; - 5c8: 10 92 e9 00 sts 0x00E9, r1 + 5fc: 10 92 e9 00 sts 0x00E9, r1 #define STALL UECONX = _BV(STALLRQ) | _BV(EPEN) static inline void usb_wait_in_ready(void) { while (!(UEINTX & _BV(TXINI))); - 5cc: e8 ee ldi r30, 0xE8 ; 232 - 5ce: f0 e0 ldi r31, 0x00 ; 0 - 5d0: 20 81 ld r18, Z - 5d2: 20 ff sbrs r18, 0 - 5d4: fd cf rjmp .-6 ; 0x5d0 + 600: e8 ee ldi r30, 0xE8 ; 232 + 602: f0 e0 ldi r31, 0x00 ; 0 + 604: 20 81 ld r18, Z + 606: 20 ff sbrs r18, 0 + 608: fd cf rjmp .-6 ; 0x604 UENUM = 0; usb_wait_in_ready(); #ifdef MEGA4_6 if ((((uint16_t)(UEBCHX)<<8)+UEBCLX)==0) { // buffer is empty #else if (UEBCLX==0) { // buffer is empty - 5d6: 20 91 f2 00 lds r18, 0x00F2 - 5da: 21 11 cpse r18, r1 - 5dc: 14 c0 rjmp .+40 ; 0x606 - 5de: 28 2f mov r18, r24 - 5e0: e8 2f mov r30, r24 - 5e2: f9 2f mov r31, r25 + 60a: 20 91 f2 00 lds r18, 0x00F2 + 60e: 21 11 cpse r18, r1 + 610: 14 c0 rjmp .+40 ; 0x63a + 612: 28 2f mov r18, r24 + 614: e8 2f mov r30, r24 + 616: f9 2f mov r31, r25 #endif for (i=0; i + 618: a1 ef ldi r26, 0xF1 ; 241 + 61a: b0 e0 ldi r27, 0x00 ; 0 + 61c: 81 91 ld r24, Z+ + 61e: 8c 93 st X, r24 + 620: 8e 2f mov r24, r30 + 622: 82 1b sub r24, r18 + 624: 86 17 cp r24, r22 + 626: d0 f3 brcs .-12 ; 0x61c UEINTX&=~_BV(TXINI); // necessary (in this order) (changed V1.1.1) - 5f4: e8 ee ldi r30, 0xE8 ; 232 - 5f6: f0 e0 ldi r31, 0x00 ; 0 - 5f8: 80 81 ld r24, Z - 5fa: 8e 7f andi r24, 0xFE ; 254 - 5fc: 80 83 st Z, r24 + 628: e8 ee ldi r30, 0xE8 ; 232 + 62a: f0 e0 ldi r31, 0x00 ; 0 + 62c: 80 81 ld r24, Z + 62e: 8e 7f andi r24, 0xFE ; 254 + 630: 80 83 st Z, r24 return true; - 5fe: 81 e0 ldi r24, 0x01 ; 1 - 600: 08 95 ret + 632: 81 e0 ldi r24, 0x01 ; 1 + 634: 08 95 ret } } return false; - 602: 80 e0 ldi r24, 0x00 ; 0 - 604: 08 95 ret - 606: 80 e0 ldi r24, 0x00 ; 0 + 636: 80 e0 ldi r24, 0x00 ; 0 + 638: 08 95 ret + 63a: 80 e0 ldi r24, 0x00 ; 0 } - 608: 08 95 ret + 63c: 08 95 ret -0000060a : +0000063e : #ifdef MEGA4_6 bool usb_txdata(uint8_t endpoint, uint8_t *buffer, uint16_t datasize) #else bool usb_txdata(uint8_t endpoint, uint8_t *buffer, uint8_t datasize) #endif { - 60a: cf 93 push r28 - 60c: df 93 push r29 + 63e: cf 93 push r28 + 640: df 93 push r29 uint16_t i; #else uint8_t i; #endif if (datasize) { - 60e: 44 23 and r20, r20 - 610: 29 f1 breq .+74 ; 0x65c + 642: 44 23 and r20, r20 + 644: 29 f1 breq .+74 ; 0x690 UENUM = endpoint; - 612: 80 93 e9 00 sts 0x00E9, r24 + 646: 80 93 e9 00 sts 0x00E9, r24 #define STALL UECONX = _BV(STALLRQ) | _BV(EPEN) static inline void usb_wait_in_ready(void) { while (!(UEINTX & _BV(TXINI))); - 616: e8 ee ldi r30, 0xE8 ; 232 - 618: f0 e0 ldi r31, 0x00 ; 0 - 61a: 80 81 ld r24, Z - 61c: 80 ff sbrs r24, 0 - 61e: fd cf rjmp .-6 ; 0x61a + 64a: e8 ee ldi r30, 0xE8 ; 232 + 64c: f0 e0 ldi r31, 0x00 ; 0 + 64e: 80 81 ld r24, Z + 650: 80 ff sbrs r24, 0 + 652: fd cf rjmp .-6 ; 0x64e UENUM = endpoint; usb_wait_in_ready(); #ifdef MEGA4_6 if ((((uint16_t)(UEBCHX)<<8)+UEBCLX)==0) { // buffer is empty #else if (UEBCLX==0) { // buffer is empty - 620: 80 91 f2 00 lds r24, 0x00F2 - 624: 81 11 cpse r24, r1 - 626: 1c c0 rjmp .+56 ; 0x660 - 628: 96 2f mov r25, r22 - 62a: e6 2f mov r30, r22 - 62c: f7 2f mov r31, r23 + 654: 80 91 f2 00 lds r24, 0x00F2 + 658: 81 11 cpse r24, r1 + 65a: 1c c0 rjmp .+56 ; 0x694 + 65c: 96 2f mov r25, r22 + 65e: e6 2f mov r30, r22 + 660: f7 2f mov r31, r23 #endif for (i=0; i - 63c: 80 81 ld r24, Z - 63e: 88 83 st Y, r24 - 640: 31 96 adiw r30, 0x01 ; 1 + 662: a8 ee ldi r26, 0xE8 ; 232 + 664: b0 e0 ldi r27, 0x00 ; 0 + 666: c1 ef ldi r28, 0xF1 ; 241 + 668: d0 e0 ldi r29, 0x00 ; 0 + 66a: 8c 91 ld r24, X + 66c: 85 ff sbrs r24, 5 + 66e: 02 c0 rjmp .+4 ; 0x674 + 670: 80 81 ld r24, Z + 672: 88 83 st Y, r24 + 674: 31 96 adiw r30, 0x01 ; 1 #ifdef MEGA4_6 if ((((uint16_t)(UEBCHX)<<8)+UEBCLX)==0) { // buffer is empty #else if (UEBCLX==0) { // buffer is empty #endif for (i=0; i + 676: 8e 2f mov r24, r30 + 678: 89 1b sub r24, r25 + 67a: 84 17 cp r24, r20 + 67c: b0 f3 brcs .-20 ; 0x66a if (UEINTX & _BV(RWAL)) UEDATX = buffer[i]; UEINTX&=~_BV(TXINI); // necessary (in this order) (changed V1.1.1) - 64a: e8 ee ldi r30, 0xE8 ; 232 - 64c: f0 e0 ldi r31, 0x00 ; 0 - 64e: 80 81 ld r24, Z - 650: 8e 7f andi r24, 0xFE ; 254 - 652: 80 83 st Z, r24 + 67e: e8 ee ldi r30, 0xE8 ; 232 + 680: f0 e0 ldi r31, 0x00 ; 0 + 682: 80 81 ld r24, Z + 684: 8e 7f andi r24, 0xFE ; 254 + 686: 80 83 st Z, r24 UEINTX=0x7F; // (uint8_t)~_BV(FIFOCON); - 654: 8f e7 ldi r24, 0x7F ; 127 - 656: 80 83 st Z, r24 + 688: 8f e7 ldi r24, 0x7F ; 127 + 68a: 80 83 st Z, r24 return true; - 658: 81 e0 ldi r24, 0x01 ; 1 - 65a: 03 c0 rjmp .+6 ; 0x662 + 68c: 81 e0 ldi r24, 0x01 ; 1 + 68e: 03 c0 rjmp .+6 ; 0x696 } } return false; - 65c: 80 e0 ldi r24, 0x00 ; 0 - 65e: 01 c0 rjmp .+2 ; 0x662 - 660: 80 e0 ldi r24, 0x00 ; 0 + 690: 80 e0 ldi r24, 0x00 ; 0 + 692: 01 c0 rjmp .+2 ; 0x696 + 694: 80 e0 ldi r24, 0x00 ; 0 } - 662: df 91 pop r29 - 664: cf 91 pop r28 - 666: 08 95 ret + 696: df 91 pop r29 + 698: cf 91 pop r28 + 69a: 08 95 ret -00000668 <__vector_11>: +0000069c <__vector_11>: // USB Device Interrupt //----------------------------------------------------------------------------- // Hardware interrupts of the USB controller ISR(USB_GEN_vect) { - 668: 1f 92 push r1 - 66a: 0f 92 push r0 - 66c: 0f b6 in r0, 0x3f ; 63 - 66e: 0f 92 push r0 - 670: 11 24 eor r1, r1 - 672: 8f 93 push r24 - 674: ef 93 push r30 - 676: ff 93 push r31 + 69c: 1f 92 push r1 + 69e: 0f 92 push r0 + 6a0: 0f b6 in r0, 0x3f ; 63 + 6a2: 0f 92 push r0 + 6a4: 11 24 eor r1, r1 + 6a6: 8f 93 push r24 + 6a8: ef 93 push r30 + 6aa: ff 93 push r31 uint8_t intbits; intbits = UDINT; // save flags - 678: e1 ee ldi r30, 0xE1 ; 225 - 67a: f0 e0 ldi r31, 0x00 ; 0 - 67c: 80 81 ld r24, Z + 6ac: e1 ee ldi r30, 0xE1 ; 225 + 6ae: f0 e0 ldi r31, 0x00 ; 0 + 6b0: 80 81 ld r24, Z UDINT = 0; // reset flags - 67e: 10 82 st Z, r1 + 6b2: 10 82 st Z, r1 if (intbits & _BV(EORSTI)) { // End Of Reset Interrupt Flag - 680: 83 ff sbrs r24, 3 - 682: 12 c0 rjmp .+36 ; 0x6a8 <__vector_11+0x40> + 6b4: 83 ff sbrs r24, 3 + 6b6: 0f c0 rjmp .+30 ; 0x6d6 <__vector_11+0x3a> // initialize endpoint 0 for control transfers UENUM = 0; - 684: 10 92 e9 00 sts 0x00E9, r1 + 6b8: 10 92 e9 00 sts 0x00E9, r1 UECONX = _BV(EPEN); - 688: 81 e0 ldi r24, 0x01 ; 1 - 68a: 80 93 eb 00 sts 0x00EB, r24 + 6bc: 81 e0 ldi r24, 0x01 ; 1 + 6be: 80 93 eb 00 sts 0x00EB, r24 UECFG0X = EP_TYPE_CONTROL; - 68e: 10 92 ec 00 sts 0x00EC, r1 + 6c2: 10 92 ec 00 sts 0x00EC, r1 UECFG1X = EP_SIZE(ENDPOINT0_SIZE) | EP_SINGLE_BUFFER; - 692: 82 e1 ldi r24, 0x12 ; 18 - 694: 80 93 ed 00 sts 0x00ED, r24 + 6c6: 82 e1 ldi r24, 0x12 ; 18 + 6c8: 80 93 ed 00 sts 0x00ED, r24 UEIENX = _BV(RXSTPE); // enable interrupt for incoming data - 698: 88 e0 ldi r24, 0x08 ; 8 - 69a: 80 93 f0 00 sts 0x00F0, r24 + 6cc: 88 e0 ldi r24, 0x08 ; 8 + 6ce: 80 93 f0 00 sts 0x00F0, r24 usb_conf = 0; - 69e: 10 92 3e 01 sts 0x013E, r1 + 6d2: 10 92 6c 01 sts 0x016C, r1 #if (NUMINTERFACES>1) usb_if = 0xFF; - 6a2: 8f ef ldi r24, 0xFF ; 255 - 6a4: 80 93 0e 01 sts 0x010E, r24 #endif } } - 6a8: ff 91 pop r31 - 6aa: ef 91 pop r30 - 6ac: 8f 91 pop r24 - 6ae: 0f 90 pop r0 - 6b0: 0f be out 0x3f, r0 ; 63 - 6b2: 0f 90 pop r0 - 6b4: 1f 90 pop r1 - 6b6: 18 95 reti + 6d6: ff 91 pop r31 + 6d8: ef 91 pop r30 + 6da: 8f 91 pop r24 + 6dc: 0f 90 pop r0 + 6de: 0f be out 0x3f, r0 ; 63 + 6e0: 0f 90 pop r0 + 6e2: 1f 90 pop r1 + 6e4: 18 95 reti -000006b8 <__vector_12>: +000006e6 <__vector_12>: // Endpoint Interrupts //----------------------------------------------------------------------------- // Interrupts, triggered by incoming data in an endpoint, are handled here. ISR(USB_COM_vect) { - 6b8: 1f 92 push r1 - 6ba: 0f 92 push r0 - 6bc: 0f b6 in r0, 0x3f ; 63 - 6be: 0f 92 push r0 - 6c0: 11 24 eor r1, r1 - 6c2: 3f 92 push r3 - 6c4: 4f 92 push r4 - 6c6: 5f 92 push r5 - 6c8: 6f 92 push r6 - 6ca: 7f 92 push r7 - 6cc: 8f 92 push r8 - 6ce: 9f 92 push r9 - 6d0: af 92 push r10 - 6d2: bf 92 push r11 - 6d4: cf 92 push r12 - 6d6: df 92 push r13 - 6d8: ef 92 push r14 - 6da: ff 92 push r15 - 6dc: 0f 93 push r16 - 6de: 1f 93 push r17 - 6e0: 2f 93 push r18 - 6e2: 3f 93 push r19 - 6e4: 4f 93 push r20 - 6e6: 5f 93 push r21 - 6e8: 6f 93 push r22 - 6ea: 7f 93 push r23 - 6ec: 8f 93 push r24 - 6ee: 9f 93 push r25 - 6f0: af 93 push r26 - 6f2: bf 93 push r27 - 6f4: ef 93 push r30 - 6f6: ff 93 push r31 - 6f8: cf 93 push r28 - 6fa: df 93 push r29 - 6fc: cd b7 in r28, 0x3d ; 61 - 6fe: de b7 in r29, 0x3e ; 62 - 700: 2a 97 sbiw r28, 0x0a ; 10 - 702: de bf out 0x3e, r29 ; 62 - 704: cd bf out 0x3d, r28 ; 61 + 6e6: 1f 92 push r1 + 6e8: 0f 92 push r0 + 6ea: 0f b6 in r0, 0x3f ; 63 + 6ec: 0f 92 push r0 + 6ee: 11 24 eor r1, r1 + 6f0: bf 92 push r11 + 6f2: cf 92 push r12 + 6f4: df 92 push r13 + 6f6: ef 92 push r14 + 6f8: ff 92 push r15 + 6fa: 0f 93 push r16 + 6fc: 1f 93 push r17 + 6fe: 2f 93 push r18 + 700: 3f 93 push r19 + 702: 4f 93 push r20 + 704: 5f 93 push r21 + 706: 6f 93 push r22 + 708: 7f 93 push r23 + 70a: 8f 93 push r24 + 70c: 9f 93 push r25 + 70e: af 93 push r26 + 710: bf 93 push r27 + 712: ef 93 push r30 + 714: ff 93 push r31 + 716: cf 93 push r28 + 718: df 93 push r29 + 71a: cd b7 in r28, 0x3d ; 61 + 71c: de b7 in r29, 0x3e ; 62 + 71e: 28 97 sbiw r28, 0x08 ; 8 + 720: de bf out 0x3e, r29 ; 62 + 722: cd bf out 0x3d, r28 ; 61 #if (USESN==2) // serial number in RAM struct usb_string_descriptor_ram buf; #endif struct usb_control_request ucr; if (UEINT & 0x01) { - 706: 80 91 f4 00 lds r24, 0x00F4 - 70a: 80 ff sbrs r24, 0 - 70c: 4c c2 rjmp .+1176 ; 0xba6 <__vector_12+0x4ee> + 724: 80 91 f4 00 lds r24, 0x00F4 + 728: 80 ff sbrs r24, 0 + 72a: e4 c1 rjmp .+968 ; 0xaf4 <__vector_12+0x40e> // handle interrupts of endpoint 0 (control transfers) UENUM = 0; - 70e: 10 92 e9 00 sts 0x00E9, r1 + 72c: 10 92 e9 00 sts 0x00E9, r1 intbits = UEINTX; // save interrupt flags of the endpoint - 712: 80 91 e8 00 lds r24, 0x00E8 + 730: 80 91 e8 00 lds r24, 0x00E8 if (intbits & _BV(RXSTPI)) { // control transfer, setup - 716: 83 ff sbrs r24, 3 - 718: 13 c2 rjmp .+1062 ; 0xb40 <__vector_12+0x488> + 734: 83 ff sbrs r24, 3 + 736: ab c1 rjmp .+854 ; 0xa8e <__vector_12+0x3a8> ucr.bmRequestType = UEDATX; - 71a: e1 ef ldi r30, 0xF1 ; 241 - 71c: f0 e0 ldi r31, 0x00 ; 0 - 71e: 80 81 ld r24, Z - 720: 89 83 std Y+1, r24 ; 0x01 + 738: e1 ef ldi r30, 0xF1 ; 241 + 73a: f0 e0 ldi r31, 0x00 ; 0 + 73c: 80 81 ld r24, Z + 73e: 89 83 std Y+1, r24 ; 0x01 ucr.bRequest = UEDATX; - 722: 80 81 ld r24, Z - 724: 8a 83 std Y+2, r24 ; 0x02 + 740: 80 81 ld r24, Z + 742: 8a 83 std Y+2, r24 ; 0x02 ucr.wValue = UEDATX; - 726: 20 81 ld r18, Z - 728: 30 e0 ldi r19, 0x00 ; 0 - 72a: 3c 83 std Y+4, r19 ; 0x04 - 72c: 2b 83 std Y+3, r18 ; 0x03 + 744: 20 81 ld r18, Z + 746: 30 e0 ldi r19, 0x00 ; 0 + 748: 3c 83 std Y+4, r19 ; 0x04 + 74a: 2b 83 std Y+3, r18 ; 0x03 ucr.wValue |= (UEDATX << 8); - 72e: 40 81 ld r20, Z - 730: 94 2f mov r25, r20 - 732: 80 e0 ldi r24, 0x00 ; 0 - 734: 82 2b or r24, r18 - 736: 93 2b or r25, r19 - 738: 9c 83 std Y+4, r25 ; 0x04 - 73a: 8b 83 std Y+3, r24 ; 0x03 + 74c: 40 81 ld r20, Z + 74e: 94 2f mov r25, r20 + 750: 80 e0 ldi r24, 0x00 ; 0 + 752: 82 2b or r24, r18 + 754: 93 2b or r25, r19 + 756: 9c 83 std Y+4, r25 ; 0x04 + 758: 8b 83 std Y+3, r24 ; 0x03 ucr.wIndex = UEDATX; - 73c: 20 81 ld r18, Z - 73e: 30 e0 ldi r19, 0x00 ; 0 - 740: 3e 83 std Y+6, r19 ; 0x06 - 742: 2d 83 std Y+5, r18 ; 0x05 + 75a: 20 81 ld r18, Z + 75c: 30 e0 ldi r19, 0x00 ; 0 + 75e: 3e 83 std Y+6, r19 ; 0x06 + 760: 2d 83 std Y+5, r18 ; 0x05 ucr.wIndex |= (UEDATX << 8); - 744: 40 81 ld r20, Z - 746: 94 2f mov r25, r20 - 748: 80 e0 ldi r24, 0x00 ; 0 - 74a: 82 2b or r24, r18 - 74c: 93 2b or r25, r19 - 74e: 9e 83 std Y+6, r25 ; 0x06 - 750: 8d 83 std Y+5, r24 ; 0x05 + 762: 40 81 ld r20, Z + 764: 94 2f mov r25, r20 + 766: 80 e0 ldi r24, 0x00 ; 0 + 768: 82 2b or r24, r18 + 76a: 93 2b or r25, r19 + 76c: 9e 83 std Y+6, r25 ; 0x06 + 76e: 8d 83 std Y+5, r24 ; 0x05 ucr.wLength = UEDATX; - 752: 20 81 ld r18, Z - 754: 30 e0 ldi r19, 0x00 ; 0 - 756: 38 87 std Y+8, r19 ; 0x08 - 758: 2f 83 std Y+7, r18 ; 0x07 + 770: 20 81 ld r18, Z + 772: 30 e0 ldi r19, 0x00 ; 0 + 774: 38 87 std Y+8, r19 ; 0x08 + 776: 2f 83 std Y+7, r18 ; 0x07 ucr.wLength |= (UEDATX << 8); - 75a: 40 81 ld r20, Z - 75c: 94 2f mov r25, r20 - 75e: 80 e0 ldi r24, 0x00 ; 0 - 760: 82 2b or r24, r18 - 762: 93 2b or r25, r19 - 764: 98 87 std Y+8, r25 ; 0x08 - 766: 8f 83 std Y+7, r24 ; 0x07 + 778: 40 81 ld r20, Z + 77a: 94 2f mov r25, r20 + 77c: 80 e0 ldi r24, 0x00 ; 0 + 77e: 82 2b or r24, r18 + 780: 93 2b or r25, r19 + 782: 98 87 std Y+8, r25 ; 0x08 + 784: 8f 83 std Y+7, r24 ; 0x07 UEINTX = ~(_BV(RXSTPI) | _BV(RXOUTI) | _BV(TXINI)); - 768: 82 ef ldi r24, 0xF2 ; 242 - 76a: 80 93 e8 00 sts 0x00E8, r24 + 786: 82 ef ldi r24, 0xF2 ; 242 + 788: 80 93 e8 00 sts 0x00E8, r24 if (ucr.bRequest == GET_DESCRIPTOR) { - 76e: 8a 81 ldd r24, Y+2 ; 0x02 - 770: 86 30 cpi r24, 0x06 ; 6 - 772: 09 f0 breq .+2 ; 0x776 <__vector_12+0xbe> - 774: 24 c1 rjmp .+584 ; 0x9be <__vector_12+0x306> + 78c: 8a 81 ldd r24, Y+2 ; 0x02 + 78e: 86 30 cpi r24, 0x06 ; 6 + 790: 09 f0 breq .+2 ; 0x794 <__vector_12+0xae> + 792: ec c0 rjmp .+472 ; 0x96c <__vector_12+0x286> switch (ucr.wValue) { - 776: 8b 81 ldd r24, Y+3 ; 0x03 - 778: 9c 81 ldd r25, Y+4 ; 0x04 - 77a: 81 15 cp r24, r1 - 77c: 23 e0 ldi r18, 0x03 ; 3 - 77e: 92 07 cpc r25, r18 - 780: 09 f4 brne .+2 ; 0x784 <__vector_12+0xcc> - 782: fb c0 rjmp .+502 ; 0x97a <__vector_12+0x2c2> - 784: 48 f4 brcc .+18 ; 0x798 <__vector_12+0xe0> - 786: 81 15 cp r24, r1 - 788: 51 e0 ldi r21, 0x01 ; 1 - 78a: 95 07 cpc r25, r21 - 78c: 79 f0 breq .+30 ; 0x7ac <__vector_12+0xf4> - 78e: 81 15 cp r24, r1 - 790: 92 40 sbci r25, 0x02 ; 2 - 792: 09 f0 breq .+2 ; 0x796 <__vector_12+0xde> - 794: 10 c1 rjmp .+544 ; 0x9b6 <__vector_12+0x2fe> - 796: 24 c0 rjmp .+72 ; 0x7e0 <__vector_12+0x128> - 798: 81 30 cpi r24, 0x01 ; 1 - 79a: b3 e0 ldi r27, 0x03 ; 3 - 79c: 9b 07 cpc r25, r27 - 79e: 09 f4 brne .+2 ; 0x7a2 <__vector_12+0xea> - 7a0: f6 c0 rjmp .+492 ; 0x98e <__vector_12+0x2d6> - 7a2: 82 30 cpi r24, 0x02 ; 2 - 7a4: 93 40 sbci r25, 0x03 ; 3 - 7a6: 09 f0 breq .+2 ; 0x7aa <__vector_12+0xf2> - 7a8: 06 c1 rjmp .+524 ; 0x9b6 <__vector_12+0x2fe> - 7aa: fb c0 rjmp .+502 ; 0x9a2 <__vector_12+0x2ea> + 794: 8b 81 ldd r24, Y+3 ; 0x03 + 796: 9c 81 ldd r25, Y+4 ; 0x04 + 798: 81 15 cp r24, r1 + 79a: 23 e0 ldi r18, 0x03 ; 3 + 79c: 92 07 cpc r25, r18 + 79e: 09 f4 brne .+2 ; 0x7a2 <__vector_12+0xbc> + 7a0: b9 c0 rjmp .+370 ; 0x914 <__vector_12+0x22e> + 7a2: 48 f4 brcc .+18 ; 0x7b6 <__vector_12+0xd0> + 7a4: 81 15 cp r24, r1 + 7a6: 51 e0 ldi r21, 0x01 ; 1 + 7a8: 95 07 cpc r25, r21 + 7aa: 89 f0 breq .+34 ; 0x7ce <__vector_12+0xe8> + 7ac: 81 15 cp r24, r1 + 7ae: 92 40 sbci r25, 0x02 ; 2 + 7b0: 09 f0 breq .+2 ; 0x7b4 <__vector_12+0xce> + 7b2: d8 c0 rjmp .+432 ; 0x964 <__vector_12+0x27e> + 7b4: 16 c0 rjmp .+44 ; 0x7e2 <__vector_12+0xfc> + 7b6: 82 30 cpi r24, 0x02 ; 2 + 7b8: b3 e0 ldi r27, 0x03 ; 3 + 7ba: 9b 07 cpc r25, r27 + 7bc: 09 f4 brne .+2 ; 0x7c0 <__vector_12+0xda> + 7be: be c0 rjmp .+380 ; 0x93c <__vector_12+0x256> + 7c0: 08 f4 brcc .+2 ; 0x7c4 <__vector_12+0xde> + 7c2: b2 c0 rjmp .+356 ; 0x928 <__vector_12+0x242> + 7c4: 83 30 cpi r24, 0x03 ; 3 + 7c6: 93 40 sbci r25, 0x03 ; 3 + 7c8: 09 f0 breq .+2 ; 0x7cc <__vector_12+0xe6> + 7ca: cc c0 rjmp .+408 ; 0x964 <__vector_12+0x27e> + 7cc: c1 c0 rjmp .+386 ; 0x950 <__vector_12+0x26a> case 0x0100: // device descriptor usb_desc_out(false,&device_descriptor[0],pgm_read_byte(&device_descriptor[0]),ucr.wLength); - 7ac: e4 e7 ldi r30, 0x74 ; 116 - 7ae: f0 e0 ldi r31, 0x00 ; 0 - 7b0: 44 91 lpm r20, Z - 7b2: 2f 81 ldd r18, Y+7 ; 0x07 - 7b4: 38 85 ldd r19, Y+8 ; 0x08 - 7b6: bf 01 movw r22, r30 - 7b8: 80 e0 ldi r24, 0x00 ; 0 - 7ba: 0e 94 62 02 call 0x4c4 ; 0x4c4 + 7ce: e4 e7 ldi r30, 0x74 ; 116 + 7d0: f0 e0 ldi r31, 0x00 ; 0 + 7d2: 44 91 lpm r20, Z + 7d4: 2f 81 ldd r18, Y+7 ; 0x07 + 7d6: 38 85 ldd r19, Y+8 ; 0x08 + 7d8: bf 01 movw r22, r30 + 7da: 80 e0 ldi r24, 0x00 ; 0 + 7dc: 0e 94 7c 02 call 0x4f8 ; 0x4f8 break; - 7be: 02 c2 rjmp .+1028 ; 0xbc4 <__vector_12+0x50c> - case 0x0200: // configuration descriptor - // get number of activated endpoints - n=0; - #if (NUMINTERFACES>1) - for (j=0; j - 7c8: 9b 2f mov r25, r27 - 7ca: 49 0f add r20, r25 - 7cc: 81 50 subi r24, 0x01 ; 1 - 7ce: 33 96 adiw r30, 0x03 ; 3 - 7d0: 81 11 cpse r24, r1 - 7d2: f6 cf rjmp .-20 ; 0x7c0 <__vector_12+0x108> - 7d4: 2f 5f subi r18, 0xFF ; 255 - 7d6: 3f 4f sbci r19, 0xFF ; 255 - break; - case 0x0200: // configuration descriptor - // get number of activated endpoints - n=0; - #if (NUMINTERFACES>1) - for (j=0; j - 7de: 10 c0 rjmp .+32 ; 0x800 <__vector_12+0x148> - ucr.wIndex |= (UEDATX << 8); - ucr.wLength = UEDATX; - ucr.wLength |= (UEDATX << 8); - UEINTX = ~(_BV(RXSTPI) | _BV(RXOUTI) | _BV(TXINI)); - if (ucr.bRequest == GET_DESCRIPTOR) { - switch (ucr.wValue) { - 7e0: 20 e0 ldi r18, 0x00 ; 0 - 7e2: 30 e0 ldi r19, 0x00 ; 0 - 7e4: 40 e0 ldi r20, 0x00 ; 0 + 7e0: 98 c1 rjmp .+816 ; 0xb12 <__vector_12+0x42c> + 7e2: e4 e2 ldi r30, 0x24 ; 36 + 7e4: f1 e0 ldi r31, 0x01 ; 1 //----------------------------------------------------------------------------- // Endpoint Interrupts //----------------------------------------------------------------------------- // Interrupts, triggered by incoming data in an endpoint, are handled here. ISR(USB_COM_vect) - 7e6: 14 e0 ldi r17, 0x04 ; 4 - case 0x0200: // configuration descriptor - // get number of activated endpoints + 7e6: 80 e3 ldi r24, 0x30 ; 48 + 7e8: 91 e0 ldi r25, 0x01 ; 1 + 7ea: f1 2c mov r15, r1 n=0; #if (NUMINTERFACES>1) for (j=0; j - 7f6: fc 01 movw r30, r24 - 7f8: eb 5d subi r30, 0xDB ; 219 - 7fa: fe 4f sbci r31, 0xFE ; 254 - 7fc: 81 2f mov r24, r17 - 7fe: e0 cf rjmp .-64 ; 0x7c0 <__vector_12+0x108> - for (j=0; j + 7f8: 25 2f mov r18, r21 + 7fa: f2 0e add r15, r18 + 7fc: 33 96 adiw r30, 0x03 ; 3 + 7fe: e8 17 cp r30, r24 + 800: f9 07 cpc r31, r25 + 802: b1 f7 brne .-20 ; 0x7f0 <__vector_12+0x10a> #endif s = sizeof(cfg_desc)+NUMINTERFACES*sizeof(if_desc)+n*sizeof(ep_desc); - 800: 84 2f mov r24, r20 - 802: 88 0f add r24, r24 - 804: 88 0f add r24, r24 - 806: 88 0f add r24, r24 - 808: 84 1b sub r24, r20 - 80a: 0f 2e mov r0, r31 - 80c: fb e1 ldi r31, 0x1B ; 27 - 80e: ef 2e mov r14, r31 - 810: f0 2d mov r31, r0 - 812: e8 0e add r14, r24 + 804: 8f 2d mov r24, r15 + 806: 88 0f add r24, r24 + 808: 88 0f add r24, r24 + 80a: 88 0f add r24, r24 + 80c: 8f 19 sub r24, r15 + 80e: 0f 2e mov r0, r31 + 810: f2 e1 ldi r31, 0x12 ; 18 + 812: ef 2e mov r14, r31 + 814: f0 2d mov r31, r0 + 816: e8 0e add r14, r24 cfg = malloc(s); // allocate memory - 814: 8e 2d mov r24, r14 - 816: 90 e0 ldi r25, 0x00 ; 0 - 818: 0e 94 1c 06 call 0xc38 ; 0xc38 - 81c: 08 2f mov r16, r24 - 81e: 19 2f mov r17, r25 + 818: 8e 2d mov r24, r14 + 81a: 90 e0 ldi r25, 0x00 ; 0 + 81c: 0e 94 a9 05 call 0xb52 ; 0xb52 + 820: 08 2f mov r16, r24 + 822: 19 2f mov r17, r25 // initialize configuration descriptor cfg->bLength = sizeof(cfg_desc); - 820: 89 e0 ldi r24, 0x09 ; 9 - 822: d8 01 movw r26, r16 - 824: 8c 93 st X, r24 + 824: 89 e0 ldi r24, 0x09 ; 9 + 826: d8 01 movw r26, r16 + 828: 8c 93 st X, r24 cfg->bDescriptorType = 2; - 826: 82 e0 ldi r24, 0x02 ; 2 - 828: 11 96 adiw r26, 0x01 ; 1 - 82a: 8c 93 st X, r24 - 82c: 11 97 sbiw r26, 0x01 ; 1 + 82a: 92 e0 ldi r25, 0x02 ; 2 + 82c: 11 96 adiw r26, 0x01 ; 1 + 82e: 9c 93 st X, r25 + 830: 11 97 sbiw r26, 0x01 ; 1 cfg->wTotalLength = s; - 82e: 12 96 adiw r26, 0x02 ; 2 - 830: ec 92 st X, r14 - 832: 12 97 sbiw r26, 0x02 ; 2 - 834: 13 96 adiw r26, 0x03 ; 3 - 836: 1c 92 st X, r1 - 838: 13 97 sbiw r26, 0x03 ; 3 + 832: 12 96 adiw r26, 0x02 ; 2 + 834: ec 92 st X, r14 + 836: 12 97 sbiw r26, 0x02 ; 2 + 838: 13 96 adiw r26, 0x03 ; 3 + 83a: 1c 92 st X, r1 + 83c: 13 97 sbiw r26, 0x03 ; 3 cfg->bNumInterfaces = NUMINTERFACES; - 83a: 14 96 adiw r26, 0x04 ; 4 - 83c: 8c 93 st X, r24 - 83e: 14 97 sbiw r26, 0x04 ; 4 + 83e: 91 e0 ldi r25, 0x01 ; 1 + 840: 14 96 adiw r26, 0x04 ; 4 + 842: 9c 93 st X, r25 + 844: 14 97 sbiw r26, 0x04 ; 4 cfg->bConfigurationValue = 1; - 840: 81 e0 ldi r24, 0x01 ; 1 - 842: 15 96 adiw r26, 0x05 ; 5 - 844: 8c 93 st X, r24 - 846: 15 97 sbiw r26, 0x05 ; 5 + 846: 15 96 adiw r26, 0x05 ; 5 + 848: 9c 93 st X, r25 + 84a: 15 97 sbiw r26, 0x05 ; 5 cfg->iConfiguration = 0; - 848: 16 96 adiw r26, 0x06 ; 6 - 84a: 1c 92 st X, r1 - 84c: 16 97 sbiw r26, 0x06 ; 6 + 84c: 16 96 adiw r26, 0x06 ; 6 + 84e: 1c 92 st X, r1 + 850: 16 97 sbiw r26, 0x06 ; 6 cfg->bmAttributes = POWERING; - 84e: 80 ec ldi r24, 0xC0 ; 192 - 850: 17 96 adiw r26, 0x07 ; 7 - 852: 8c 93 st X, r24 - 854: 17 97 sbiw r26, 0x07 ; 7 + 852: 90 ec ldi r25, 0xC0 ; 192 + 854: 17 96 adiw r26, 0x07 ; 7 + 856: 9c 93 st X, r25 + 858: 17 97 sbiw r26, 0x07 ; 7 cfg->bMaxPower = MAXPOWER>>1; - 856: 8a ef ldi r24, 0xFA ; 250 - 858: 18 96 adiw r26, 0x08 ; 8 - 85a: 8c 93 st X, r24 + 85a: 9a ef ldi r25, 0xFA ; 250 + 85c: 18 96 adiw r26, 0x08 ; 8 + 85e: 9c 93 st X, r25 + 860: 18 97 sbiw r26, 0x08 ; 8 // initialize interface descriptor ifp = (if_desc *)((uint16_t)(cfg)+sizeof(cfg_desc)); - 85c: f8 01 movw r30, r16 - 85e: 39 96 adiw r30, 0x09 ; 9 - 860: 1a 86 std Y+10, r1 ; 0x0a - 862: 19 86 std Y+9, r1 ; 0x09 -//----------------------------------------------------------------------------- -// Endpoint Interrupts -//----------------------------------------------------------------------------- -// Interrupts, triggered by incoming data in an endpoint, are handled here. - -ISR(USB_COM_vect) - 864: 44 e0 ldi r20, 0x04 ; 4 - 866: a1 2c mov r10, r1 - // initialize interface descriptor - ifp = (if_desc *)((uint16_t)(cfg)+sizeof(cfg_desc)); - #if (NUMINTERFACES>1) - for (j=0; jbLength = sizeof(if_desc); - 870: 0f 2e mov r0, r31 - 872: f9 e0 ldi r31, 0x09 ; 9 - 874: 7f 2e mov r7, r31 - 876: f0 2d mov r31, r0 + 866: 19 96 adiw r26, 0x09 ; 9 + 868: 8c 93 st X, r24 ifp->bDescriptorType = 4; + 86a: 84 e0 ldi r24, 0x04 ; 4 + 86c: 81 83 std Z+1, r24 ; 0x01 ifp->bInterfaceNumber = j; + 86e: 12 82 std Z+2, r1 ; 0x02 ifp->bAlternateSetting = 0; + 870: 13 82 std Z+3, r1 ; 0x03 ifp->bNumEndpoints = n; + 872: f4 82 std Z+4, r15 ; 0x04 ifp->bInterfaceClass = 0xFF; - 878: dd 24 eor r13, r13 - 87a: da 94 dec r13 - ifp->iInterface = 0; - epp = (ep_desc *)((uint16_t)(ifp)+sizeof(if_desc)); - if (n) { // endpoints - for (i=0; ibLength = sizeof(ep_desc); - 87c: 0f 2e mov r0, r31 - 87e: f7 e0 ldi r31, 0x07 ; 7 - 880: bf 2e mov r11, r31 - 882: f0 2d mov r31, r0 - epp->bDescriptorType = 5; - 884: 0f 2e mov r0, r31 - 886: f5 e0 ldi r31, 0x05 ; 5 - 888: cf 2e mov r12, r31 - 88a: f0 2d mov r31, r0 - epp->bEndpointAddress = (i+1)|(EPCO.ep_type<<7); - epp->bmAttributes = EP_TRANSFER(EPCO.ep_type); - 88c: 68 94 set - 88e: 66 24 eor r6, r6 - 890: 61 f8 bld r6, 1 - 892: 0f 2e mov r0, r31 - 894: f3 e0 ldi r31, 0x03 ; 3 - 896: 5f 2e mov r5, r31 - 898: f0 2d mov r31, r0 - 89a: 56 c0 rjmp .+172 ; 0x948 <__vector_12+0x290> - // initialize interface descriptor - ifp = (if_desc *)((uint16_t)(cfg)+sizeof(cfg_desc)); - #if (NUMINTERFACES>1) - for (j=0; j - 8a6: 79 2d mov r23, r9 - 8a8: 67 0f add r22, r23 - 8aa: 51 50 subi r21, 0x01 ; 1 - 8ac: 03 96 adiw r24, 0x03 ; 3 - 8ae: 51 11 cpse r21, r1 - 8b0: f5 cf rjmp .-22 ; 0x89c <__vector_12+0x1e4> - #else - j = 0; - #endif - ifp->bLength = sizeof(if_desc); - 8b2: 70 82 st Z, r7 - ifp->bDescriptorType = 4; - 8b4: 41 83 std Z+1, r20 ; 0x01 - ifp->bInterfaceNumber = j; - 8b6: 42 82 std Z+2, r4 ; 0x02 - ifp->bAlternateSetting = 0; - 8b8: 13 82 std Z+3, r1 ; 0x03 - ifp->bNumEndpoints = n; - 8ba: 64 83 std Z+4, r22 ; 0x04 - ifp->bInterfaceClass = 0xFF; - 8bc: d5 82 std Z+5, r13 ; 0x05 + 874: 8f ef ldi r24, 0xFF ; 255 + 876: 85 83 std Z+5, r24 ; 0x05 ifp->bInterfaceSubClass = 0x00; - 8be: 16 82 std Z+6, r1 ; 0x06 + 878: 16 82 std Z+6, r1 ; 0x06 ifp->bInterfaceProtocol = 0xFF; - 8c0: d7 82 std Z+7, r13 ; 0x07 + 87a: 87 83 std Z+7, r24 ; 0x07 ifp->iInterface = 0; - 8c2: 10 86 std Z+8, r1 ; 0x08 + 87c: 10 86 std Z+8, r1 ; 0x08 epp = (ep_desc *)((uint16_t)(ifp)+sizeof(if_desc)); - 8c4: 39 96 adiw r30, 0x09 ; 9 if (n) { // endpoints - 8c6: 66 23 and r22, r22 - 8c8: c1 f1 breq .+112 ; 0x93a <__vector_12+0x282> + 87e: ff 20 and r15, r15 + 880: f1 f1 breq .+124 ; 0x8fe <__vector_12+0x218> + ifp->bNumEndpoints = n; + ifp->bInterfaceClass = 0xFF; + ifp->bInterfaceSubClass = 0x00; + ifp->bInterfaceProtocol = 0xFF; + ifp->iInterface = 0; + epp = (ep_desc *)((uint16_t)(ifp)+sizeof(if_desc)); + 882: f8 01 movw r30, r16 + 884: 72 96 adiw r30, 0x12 ; 18 + 886: 25 e2 ldi r18, 0x25 ; 37 + 888: 31 e0 ldi r19, 0x01 ; 1 + 88a: 91 e0 ldi r25, 0x01 ; 1 + if (n) { // endpoints + for (i=0; ibLength = sizeof(ep_desc); + 88c: 0f 2e mov r0, r31 + 88e: f7 e0 ldi r31, 0x07 ; 7 + 890: ff 2e mov r15, r31 + 892: f0 2d mov r31, r0 + epp->bDescriptorType = 5; + 894: 55 e0 ldi r21, 0x05 ; 5 + epp->bEndpointAddress = (i+1)|(EPCO.ep_type<<7); + epp->bmAttributes = EP_TRANSFER(EPCO.ep_type); + 896: cc 24 eor r12, r12 + 898: c3 94 inc r12 + 89a: 68 94 set + 89c: dd 24 eor r13, r13 + 89e: d1 f8 bld r13, 1 + 8a0: 0f 2e mov r0, r31 + 8a2: f3 e0 ldi r31, 0x03 ; 3 + 8a4: bf 2e mov r11, r31 + 8a6: f0 2d mov r31, r0 //----------------------------------------------------------------------------- // Endpoint Interrupts //----------------------------------------------------------------------------- // Interrupts, triggered by incoming data in an endpoint, are handled here. ISR(USB_COM_vect) - 8ca: 83 2f mov r24, r19 - 8cc: 93 2d mov r25, r3 - 8ce: 6c e0 ldi r22, 0x0C ; 12 - 8d0: 70 e0 ldi r23, 0x00 ; 0 - 8d2: 0e 94 0a 06 call 0xc14 ; 0xc14 <__mulhi3> - 8d6: 9c 01 movw r18, r24 - 8d8: 2a 5d subi r18, 0xDA ; 218 - 8da: 3e 4f sbci r19, 0xFE ; 254 - 8dc: 48 2c mov r4, r8 - 8de: c9 01 movw r24, r18 - 8e0: b9 01 movw r22, r18 - 8e2: 61 50 subi r22, 0x01 ; 1 - 8e4: 71 09 sbc r23, r1 + 8a8: b9 01 movw r22, r18 + 8aa: d9 01 movw r26, r18 + 8ac: 11 97 sbiw r26, 0x01 ; 1 ifp->bInterfaceProtocol = 0xFF; ifp->iInterface = 0; epp = (ep_desc *)((uint16_t)(ifp)+sizeof(if_desc)); if (n) { // endpoints for (i=0; i + 8ae: 8c 91 ld r24, X + 8b0: 8f 3f cpi r24, 0xFF ; 255 + 8b2: 01 f1 breq .+64 ; 0x8f4 <__vector_12+0x20e> epp->bLength = sizeof(ep_desc); - 8ee: b0 82 st Z, r11 + 8b4: f0 82 st Z, r15 epp->bDescriptorType = 5; - 8f0: c1 82 std Z+1, r12 ; 0x01 + 8b6: 51 83 std Z+1, r21 ; 0x01 epp->bEndpointAddress = (i+1)|(EPCO.ep_type<<7); - 8f2: 65 2f mov r22, r21 - 8f4: 67 95 ror r22 - 8f6: 66 27 eor r22, r22 - 8f8: 67 95 ror r22 - 8fa: 64 29 or r22, r4 - 8fc: 62 83 std Z+2, r22 ; 0x02 + 8b8: 48 2f mov r20, r24 + 8ba: 47 95 ror r20 + 8bc: 44 27 eor r20, r20 + 8be: 47 95 ror r20 + 8c0: 49 2b or r20, r25 + 8c2: 42 83 std Z+2, r20 ; 0x02 epp->bmAttributes = EP_TRANSFER(EPCO.ep_type); - 8fe: 51 34 cpi r21, 0x41 ; 65 - 900: 41 f0 breq .+16 ; 0x912 <__vector_12+0x25a> - 902: 50 34 cpi r21, 0x40 ; 64 - 904: 41 f0 breq .+16 ; 0x916 <__vector_12+0x25e> - 906: 51 38 cpi r21, 0x81 ; 129 - 908: 41 f0 breq .+16 ; 0x91a <__vector_12+0x262> - 90a: 50 38 cpi r21, 0x80 ; 128 - 90c: 41 f4 brne .+16 ; 0x91e <__vector_12+0x266> - 90e: 56 2d mov r21, r6 - 910: 07 c0 rjmp .+14 ; 0x920 <__vector_12+0x268> - 912: 5f 2d mov r21, r15 - 914: 05 c0 rjmp .+10 ; 0x920 <__vector_12+0x268> - 916: 5f 2d mov r21, r15 - 918: 03 c0 rjmp .+6 ; 0x920 <__vector_12+0x268> - 91a: 56 2d mov r21, r6 - 91c: 01 c0 rjmp .+2 ; 0x920 <__vector_12+0x268> - 91e: 55 2d mov r21, r5 - 920: 53 83 std Z+3, r21 ; 0x03 + 8c4: 81 34 cpi r24, 0x41 ; 65 + 8c6: 41 f0 breq .+16 ; 0x8d8 <__vector_12+0x1f2> + 8c8: 80 34 cpi r24, 0x40 ; 64 + 8ca: 41 f0 breq .+16 ; 0x8dc <__vector_12+0x1f6> + 8cc: 81 38 cpi r24, 0x81 ; 129 + 8ce: 41 f0 breq .+16 ; 0x8e0 <__vector_12+0x1fa> + 8d0: 80 38 cpi r24, 0x80 ; 128 + 8d2: 41 f4 brne .+16 ; 0x8e4 <__vector_12+0x1fe> + 8d4: 8d 2d mov r24, r13 + 8d6: 07 c0 rjmp .+14 ; 0x8e6 <__vector_12+0x200> + 8d8: 8c 2d mov r24, r12 + 8da: 05 c0 rjmp .+10 ; 0x8e6 <__vector_12+0x200> + 8dc: 8c 2d mov r24, r12 + 8de: 03 c0 rjmp .+6 ; 0x8e6 <__vector_12+0x200> + 8e0: 8d 2d mov r24, r13 + 8e2: 01 c0 rjmp .+2 ; 0x8e6 <__vector_12+0x200> + 8e4: 8b 2d mov r24, r11 + 8e6: 83 83 std Z+3, r24 ; 0x03 epp->wMaxPacketSize = EPCO.ep_size; - 922: dc 01 movw r26, r24 - 924: 8c 91 ld r24, X - 926: 84 83 std Z+4, r24 ; 0x04 - 928: 15 82 std Z+5, r1 ; 0x05 + 8e8: db 01 movw r26, r22 + 8ea: 8c 91 ld r24, X + 8ec: 84 83 std Z+4, r24 ; 0x04 + 8ee: 15 82 std Z+5, r1 ; 0x05 epp->bInterval = 0; - 92a: 16 82 std Z+6, r1 ; 0x06 + 8f0: 16 82 std Z+6, r1 ; 0x06 epp = (ep_desc *)((uint16_t)(epp)+sizeof(ep_desc)); - 92c: 37 96 adiw r30, 0x07 ; 7 - 92e: 43 94 inc r4 - 930: 2d 5f subi r18, 0xFD ; 253 - 932: 3f 4f sbci r19, 0xFF ; 255 + 8f2: 37 96 adiw r30, 0x07 ; 7 + 8f4: 9f 5f subi r25, 0xFF ; 255 + 8f6: 2d 5f subi r18, 0xFD ; 253 + 8f8: 3f 4f sbci r19, 0xFF ; 255 ifp->bInterfaceSubClass = 0x00; ifp->bInterfaceProtocol = 0xFF; ifp->iInterface = 0; epp = (ep_desc *)((uint16_t)(ifp)+sizeof(if_desc)); if (n) { // endpoints for (i=0; i - 93a: a9 85 ldd r26, Y+9 ; 0x09 - 93c: ba 85 ldd r27, Y+10 ; 0x0a - 93e: 11 96 adiw r26, 0x01 ; 1 - 940: ba 87 std Y+10, r27 ; 0x0a - 942: a9 87 std Y+9, r26 ; 0x09 - cfg->bmAttributes = POWERING; - cfg->bMaxPower = MAXPOWER>>1; - // initialize interface descriptor - ifp = (if_desc *)((uint16_t)(cfg)+sizeof(cfg_desc)); - #if (NUMINTERFACES>1) - for (j=0; j - 948: 49 84 ldd r4, Y+9 ; 0x09 - n = 0; - for (i=0; i - 95a: 8b 5d subi r24, 0xDB ; 219 - 95c: 9e 4f sbci r25, 0xFE ; 254 - 95e: 54 2f mov r21, r20 - 960: 6a 2d mov r22, r10 - 962: 9c cf rjmp .-200 ; 0x89c <__vector_12+0x1e4> + 8fa: 95 30 cpi r25, 0x05 ; 5 + 8fc: a9 f6 brne .-86 ; 0x8a8 <__vector_12+0x1c2> #if (NUMINTERFACES>1) ifp = (if_desc *)epp; } #endif // finally usb_desc_out(true,(uint8_t *)cfg,s,ucr.wLength); - 964: 2f 81 ldd r18, Y+7 ; 0x07 - 966: 38 85 ldd r19, Y+8 ; 0x08 - 968: 4e 2d mov r20, r14 - 96a: b8 01 movw r22, r16 - 96c: 81 e0 ldi r24, 0x01 ; 1 - 96e: 0e 94 62 02 call 0x4c4 ; 0x4c4 + 8fe: 2f 81 ldd r18, Y+7 ; 0x07 + 900: 38 85 ldd r19, Y+8 ; 0x08 + 902: 4e 2d mov r20, r14 + 904: b8 01 movw r22, r16 + 906: 81 e0 ldi r24, 0x01 ; 1 + 908: 0e 94 7c 02 call 0x4f8 ; 0x4f8 free(cfg); - 972: c8 01 movw r24, r16 - 974: 0e 94 b7 06 call 0xd6e ; 0xd6e + 90c: c8 01 movw r24, r16 + 90e: 0e 94 44 06 call 0xc88 ; 0xc88 break; - 978: 25 c1 rjmp .+586 ; 0xbc4 <__vector_12+0x50c> + 912: ff c0 rjmp .+510 ; 0xb12 <__vector_12+0x42c> case 0x0300: // String 0 usb_desc_out(false,(uint8_t *)&string0.bLength,pgm_read_byte(&string0.bLength),ucr.wLength); - 97a: e6 e8 ldi r30, 0x86 ; 134 - 97c: f0 e0 ldi r31, 0x00 ; 0 - 97e: 44 91 lpm r20, Z - 980: 2f 81 ldd r18, Y+7 ; 0x07 - 982: 38 85 ldd r19, Y+8 ; 0x08 - 984: bf 01 movw r22, r30 - 986: 80 e0 ldi r24, 0x00 ; 0 - 988: 0e 94 62 02 call 0x4c4 ; 0x4c4 + 914: e6 e8 ldi r30, 0x86 ; 134 + 916: f0 e0 ldi r31, 0x00 ; 0 + 918: 44 91 lpm r20, Z + 91a: 2f 81 ldd r18, Y+7 ; 0x07 + 91c: 38 85 ldd r19, Y+8 ; 0x08 + 91e: bf 01 movw r22, r30 + 920: 80 e0 ldi r24, 0x00 ; 0 + 922: 0e 94 7c 02 call 0x4f8 ; 0x4f8 break; - 98c: 1b c1 rjmp .+566 ; 0xbc4 <__vector_12+0x50c> + 926: f5 c0 rjmp .+490 ; 0xb12 <__vector_12+0x42c> case 0x0301: // String 1 usb_desc_out(false,(uint8_t *)&string1.bLength,pgm_read_byte(&string1.bLength),ucr.wLength); - 98e: ea e8 ldi r30, 0x8A ; 138 - 990: f0 e0 ldi r31, 0x00 ; 0 - 992: 44 91 lpm r20, Z - 994: 2f 81 ldd r18, Y+7 ; 0x07 - 996: 38 85 ldd r19, Y+8 ; 0x08 - 998: bf 01 movw r22, r30 - 99a: 80 e0 ldi r24, 0x00 ; 0 - 99c: 0e 94 62 02 call 0x4c4 ; 0x4c4 + 928: ea e8 ldi r30, 0x8A ; 138 + 92a: f0 e0 ldi r31, 0x00 ; 0 + 92c: 44 91 lpm r20, Z + 92e: 2f 81 ldd r18, Y+7 ; 0x07 + 930: 38 85 ldd r19, Y+8 ; 0x08 + 932: bf 01 movw r22, r30 + 934: 80 e0 ldi r24, 0x00 ; 0 + 936: 0e 94 7c 02 call 0x4f8 ; 0x4f8 break; - 9a0: 11 c1 rjmp .+546 ; 0xbc4 <__vector_12+0x50c> + 93a: eb c0 rjmp .+470 ; 0xb12 <__vector_12+0x42c> case 0x0302: // String 2 usb_desc_out(false,(uint8_t *)&string2.bLength,pgm_read_byte(&string2.bLength),ucr.wLength); - 9a2: e0 ea ldi r30, 0xA0 ; 160 - 9a4: f0 e0 ldi r31, 0x00 ; 0 - 9a6: 44 91 lpm r20, Z - 9a8: 2f 81 ldd r18, Y+7 ; 0x07 - 9aa: 38 85 ldd r19, Y+8 ; 0x08 - 9ac: bf 01 movw r22, r30 - 9ae: 80 e0 ldi r24, 0x00 ; 0 - 9b0: 0e 94 62 02 call 0x4c4 ; 0x4c4 + 93c: e0 ea ldi r30, 0xA0 ; 160 + 93e: f0 e0 ldi r31, 0x00 ; 0 + 940: 44 91 lpm r20, Z + 942: 2f 81 ldd r18, Y+7 ; 0x07 + 944: 38 85 ldd r19, Y+8 ; 0x08 + 946: bf 01 movw r22, r30 + 948: 80 e0 ldi r24, 0x00 ; 0 + 94a: 0e 94 7c 02 call 0x4f8 ; 0x4f8 break; - 9b4: 07 c1 rjmp .+526 ; 0xbc4 <__vector_12+0x50c> + 94e: e1 c0 rjmp .+450 ; 0xb12 <__vector_12+0x42c> + #if (USESN>0) + case 0x0303: // String 3, serial number + #if (USESN==1) // Seriennummer im Flash + usb_desc_out(false,(uint8_t *)&string3.bLength,pgm_read_byte(&string3.bLength),ucr.wLength); + 950: e2 ec ldi r30, 0xC2 ; 194 + 952: f0 e0 ldi r31, 0x00 ; 0 + 954: 44 91 lpm r20, Z + 956: 2f 81 ldd r18, Y+7 ; 0x07 + 958: 38 85 ldd r19, Y+8 ; 0x08 + 95a: bf 01 movw r22, r30 + 95c: 80 e0 ldi r24, 0x00 ; 0 + 95e: 0e 94 7c 02 call 0x4f8 ; 0x4f8 + i++; + } + buf.bLength=2*i+2; // total length of the data set usb_desc_out(true,(uint8_t *)&buf,buf.bLength,ucr.wLength); #endif break; + 962: d7 c0 rjmp .+430 ; 0xb12 <__vector_12+0x42c> #endif default: STALL; // stall - 9b6: 81 e2 ldi r24, 0x21 ; 33 - 9b8: 80 93 eb 00 sts 0x00EB, r24 - 9bc: 03 c1 rjmp .+518 ; 0xbc4 <__vector_12+0x50c> + 964: 81 e2 ldi r24, 0x21 ; 33 + 966: 80 93 eb 00 sts 0x00EB, r24 + 96a: d3 c0 rjmp .+422 ; 0xb12 <__vector_12+0x42c> } return; } if (ucr.bRequest == SET_ADDRESS) { - 9be: 85 30 cpi r24, 0x05 ; 5 - 9c0: 71 f4 brne .+28 ; 0x9de <__vector_12+0x326> + 96c: 85 30 cpi r24, 0x05 ; 5 + 96e: 71 f4 brne .+28 ; 0x98c <__vector_12+0x2a6> USB_SEND_IN; - 9c2: 8e ef ldi r24, 0xFE ; 254 - 9c4: 80 93 e8 00 sts 0x00E8, r24 + 970: 8e ef ldi r24, 0xFE ; 254 + 972: 80 93 e8 00 sts 0x00E8, r24 #define STALL UECONX = _BV(STALLRQ) | _BV(EPEN) static inline void usb_wait_in_ready(void) { while (!(UEINTX & _BV(TXINI))); - 9c8: e8 ee ldi r30, 0xE8 ; 232 - 9ca: f0 e0 ldi r31, 0x00 ; 0 - 9cc: 80 81 ld r24, Z - 9ce: 80 ff sbrs r24, 0 - 9d0: fd cf rjmp .-6 ; 0x9cc <__vector_12+0x314> + 976: e8 ee ldi r30, 0xE8 ; 232 + 978: f0 e0 ldi r31, 0x00 ; 0 + 97a: 80 81 ld r24, Z + 97c: 80 ff sbrs r24, 0 + 97e: fd cf rjmp .-6 ; 0x97a <__vector_12+0x294> return; } if (ucr.bRequest == SET_ADDRESS) { USB_SEND_IN; usb_wait_in_ready(); UDADDR = ucr.wValue | _BV(ADDEN); - 9d2: 8b 81 ldd r24, Y+3 ; 0x03 - 9d4: 9c 81 ldd r25, Y+4 ; 0x04 - 9d6: 80 68 ori r24, 0x80 ; 128 - 9d8: 80 93 e3 00 sts 0x00E3, r24 - 9dc: f3 c0 rjmp .+486 ; 0xbc4 <__vector_12+0x50c> + 980: 8b 81 ldd r24, Y+3 ; 0x03 + 982: 9c 81 ldd r25, Y+4 ; 0x04 + 984: 80 68 ori r24, 0x80 ; 128 + 986: 80 93 e3 00 sts 0x00E3, r24 + 98a: c3 c0 rjmp .+390 ; 0xb12 <__vector_12+0x42c> return; } if (ucr.bRequest == SET_CONFIGURATION && ucr.bmRequestType == 0) { // another configuration will be chosen - 9de: 89 30 cpi r24, 0x09 ; 9 - 9e0: c1 f4 brne .+48 ; 0xa12 <__vector_12+0x35a> - 9e2: 99 81 ldd r25, Y+1 ; 0x01 - 9e4: 91 11 cpse r25, r1 - 9e6: 60 c0 rjmp .+192 ; 0xaa8 <__vector_12+0x3f0> + 98c: 89 30 cpi r24, 0x09 ; 9 + 98e: a1 f4 brne .+40 ; 0x9b8 <__vector_12+0x2d2> + 990: 89 81 ldd r24, Y+1 ; 0x01 + 992: 81 11 cpse r24, r1 + 994: 72 c0 rjmp .+228 ; 0xa7a <__vector_12+0x394> if (ucr.wValue==1) { // configuration 1 will be chosen - 9e8: 8b 81 ldd r24, Y+3 ; 0x03 - 9ea: 9c 81 ldd r25, Y+4 ; 0x04 - 9ec: 01 97 sbiw r24, 0x01 ; 1 - 9ee: 69 f4 brne .+26 ; 0xa0a <__vector_12+0x352> + 996: 8b 81 ldd r24, Y+3 ; 0x03 + 998: 9c 81 ldd r25, Y+4 ; 0x04 + 99a: 01 97 sbiw r24, 0x01 ; 1 + 99c: 49 f4 brne .+18 ; 0x9b0 <__vector_12+0x2ca> usb_conf = ucr.wValue; - 9f0: 81 e0 ldi r24, 0x01 ; 1 - 9f2: 80 93 3e 01 sts 0x013E, r24 + 99e: 81 e0 ldi r24, 0x01 ; 1 + 9a0: 80 93 6c 01 sts 0x016C, r24 USB_SEND_IN; - 9f6: 8e ef ldi r24, 0xFE ; 254 - 9f8: 80 93 e8 00 sts 0x00E8, r24 + 9a4: 8e ef ldi r24, 0xFE ; 254 + 9a6: 80 93 e8 00 sts 0x00E8, r24 #if (NUMINTERFACES==1) usb_endpoints(); // initialize endpoints + 9aa: 0e 94 e9 01 call 0x3d2 ; 0x3d2 + 9ae: b1 c0 rjmp .+354 ; 0xb12 <__vector_12+0x42c> #else usb_if = 0; // select interface 0 - 9fc: 10 92 0e 01 sts 0x010E, r1 usb_endpoints(usb_if); // initialize endpoints - a00: 80 91 0e 01 lds r24, 0x010E - a04: 0e 94 d4 01 call 0x3a8 ; 0x3a8 - a08: dd c0 rjmp .+442 ; 0xbc4 <__vector_12+0x50c> #endif } else { // other configurations are not supported in this version STALL; // stall - a0a: 81 e2 ldi r24, 0x21 ; 33 - a0c: 80 93 eb 00 sts 0x00EB, r24 - a10: d9 c0 rjmp .+434 ; 0xbc4 <__vector_12+0x50c> + 9b0: 81 e2 ldi r24, 0x21 ; 33 + 9b2: 80 93 eb 00 sts 0x00EB, r24 + 9b6: ad c0 rjmp .+346 ; 0xb12 <__vector_12+0x42c> } return; } if (ucr.bRequest == GET_CONFIGURATION && ucr.bmRequestType == 0x80) { - a12: 88 30 cpi r24, 0x08 ; 8 - a14: 89 f4 brne .+34 ; 0xa38 <__vector_12+0x380> - a16: 99 81 ldd r25, Y+1 ; 0x01 - a18: 90 38 cpi r25, 0x80 ; 128 - a1a: 09 f0 breq .+2 ; 0xa1e <__vector_12+0x366> - a1c: 57 c0 rjmp .+174 ; 0xacc <__vector_12+0x414> + 9b8: 88 30 cpi r24, 0x08 ; 8 + 9ba: 89 f4 brne .+34 ; 0x9de <__vector_12+0x2f8> + 9bc: 89 81 ldd r24, Y+1 ; 0x01 + 9be: 80 38 cpi r24, 0x80 ; 128 + 9c0: 09 f0 breq .+2 ; 0x9c4 <__vector_12+0x2de> + 9c2: 5b c0 rjmp .+182 ; 0xa7a <__vector_12+0x394> #define STALL UECONX = _BV(STALLRQ) | _BV(EPEN) static inline void usb_wait_in_ready(void) { while (!(UEINTX & _BV(TXINI))); - a1e: e8 ee ldi r30, 0xE8 ; 232 - a20: f0 e0 ldi r31, 0x00 ; 0 - a22: 80 81 ld r24, Z - a24: 80 ff sbrs r24, 0 - a26: fd cf rjmp .-6 ; 0xa22 <__vector_12+0x36a> + 9c4: e8 ee ldi r30, 0xE8 ; 232 + 9c6: f0 e0 ldi r31, 0x00 ; 0 + 9c8: 80 81 ld r24, Z + 9ca: 80 ff sbrs r24, 0 + 9cc: fd cf rjmp .-6 ; 0x9c8 <__vector_12+0x2e2> } return; } if (ucr.bRequest == GET_CONFIGURATION && ucr.bmRequestType == 0x80) { usb_wait_in_ready(); UEDATX = usb_conf; - a28: 80 91 3e 01 lds r24, 0x013E - a2c: 80 93 f1 00 sts 0x00F1, r24 + 9ce: 80 91 6c 01 lds r24, 0x016C + 9d2: 80 93 f1 00 sts 0x00F1, r24 USB_SEND_IN; - a30: 8e ef ldi r24, 0xFE ; 254 - a32: 80 93 e8 00 sts 0x00E8, r24 - a36: c6 c0 rjmp .+396 ; 0xbc4 <__vector_12+0x50c> + 9d6: 8e ef ldi r24, 0xFE ; 254 + 9d8: 80 93 e8 00 sts 0x00E8, r24 + 9dc: 9a c0 rjmp .+308 ; 0xb12 <__vector_12+0x42c> return; } if (ucr.bRequest == GET_STATUS) { - a38: 81 11 cpse r24, r1 - a3a: 1c c0 rjmp .+56 ; 0xa74 <__vector_12+0x3bc> + 9de: 81 11 cpse r24, r1 + 9e0: 1c c0 rjmp .+56 ; 0xa1a <__vector_12+0x334> #define STALL UECONX = _BV(STALLRQ) | _BV(EPEN) static inline void usb_wait_in_ready(void) { while (!(UEINTX & _BV(TXINI))); - a3c: e8 ee ldi r30, 0xE8 ; 232 - a3e: f0 e0 ldi r31, 0x00 ; 0 - a40: 80 81 ld r24, Z - a42: 80 ff sbrs r24, 0 - a44: fd cf rjmp .-6 ; 0xa40 <__vector_12+0x388> + 9e2: e8 ee ldi r30, 0xE8 ; 232 + 9e4: f0 e0 ldi r31, 0x00 ; 0 + 9e6: 80 81 ld r24, Z + 9e8: 80 ff sbrs r24, 0 + 9ea: fd cf rjmp .-6 ; 0x9e6 <__vector_12+0x300> } if (ucr.bRequest == GET_STATUS) { usb_wait_in_ready(); i = 0; #ifdef SUPPORT_ENDPOINT_HALT if (ucr.bmRequestType == 0x82) { - a46: 89 81 ldd r24, Y+1 ; 0x01 - a48: 82 38 cpi r24, 0x82 ; 130 - a4a: 59 f4 brne .+22 ; 0xa62 <__vector_12+0x3aa> + 9ec: 89 81 ldd r24, Y+1 ; 0x01 + 9ee: 82 38 cpi r24, 0x82 ; 130 + 9f0: 59 f4 brne .+22 ; 0xa08 <__vector_12+0x322> UENUM = ucr.wIndex; - a4c: 8d 81 ldd r24, Y+5 ; 0x05 - a4e: e9 ee ldi r30, 0xE9 ; 233 - a50: f0 e0 ldi r31, 0x00 ; 0 - a52: 80 83 st Z, r24 + 9f2: 8d 81 ldd r24, Y+5 ; 0x05 + 9f4: e9 ee ldi r30, 0xE9 ; 233 + 9f6: f0 e0 ldi r31, 0x00 ; 0 + 9f8: 80 83 st Z, r24 if (UECONX & _BV(STALLRQ)) i = 1; - a54: 80 91 eb 00 lds r24, 0x00EB - a58: 85 fb bst r24, 5 - a5a: 88 27 eor r24, r24 - a5c: 80 f9 bld r24, 0 + 9fa: 80 91 eb 00 lds r24, 0x00EB + 9fe: 85 fb bst r24, 5 + a00: 88 27 eor r24, r24 + a02: 80 f9 bld r24, 0 UENUM = 0; - a5e: 10 82 st Z, r1 - a60: 01 c0 rjmp .+2 ; 0xa64 <__vector_12+0x3ac> + a04: 10 82 st Z, r1 + a06: 01 c0 rjmp .+2 ; 0xa0a <__vector_12+0x324> USB_SEND_IN; return; } if (ucr.bRequest == GET_STATUS) { usb_wait_in_ready(); i = 0; - a62: 80 e0 ldi r24, 0x00 ; 0 + a08: 80 e0 ldi r24, 0x00 ; 0 UENUM = ucr.wIndex; if (UECONX & _BV(STALLRQ)) i = 1; UENUM = 0; } #endif UEDATX = i; - a64: e1 ef ldi r30, 0xF1 ; 241 - a66: f0 e0 ldi r31, 0x00 ; 0 - a68: 80 83 st Z, r24 + a0a: e1 ef ldi r30, 0xF1 ; 241 + a0c: f0 e0 ldi r31, 0x00 ; 0 + a0e: 80 83 st Z, r24 UEDATX = 0; - a6a: 10 82 st Z, r1 + a10: 10 82 st Z, r1 USB_SEND_IN; - a6c: 8e ef ldi r24, 0xFE ; 254 - a6e: 80 93 e8 00 sts 0x00E8, r24 - a72: a8 c0 rjmp .+336 ; 0xbc4 <__vector_12+0x50c> - return; - } - #if (NUMINTERFACES>1) - if (ucr.bRequest == SET_INTERFACE && (ucr.bmRequestType == 0x20 || ucr.bmRequestType == 0)) { // another interface will be chosen - a74: 8b 30 cpi r24, 0x0B ; 11 - a76: c1 f4 brne .+48 ; 0xaa8 <__vector_12+0x3f0> - a78: 89 81 ldd r24, Y+1 ; 0x01 - a7a: 80 32 cpi r24, 0x20 ; 32 - a7c: 11 f0 breq .+4 ; 0xa82 <__vector_12+0x3ca> - a7e: 81 11 cpse r24, r1 - a80: 55 c0 rjmp .+170 ; 0xb2c <__vector_12+0x474> - if (ucr.wIndex - usb_if = ucr.wIndex; - a8c: 80 93 0e 01 sts 0x010E, r24 - USB_SEND_IN; - a90: 8e ef ldi r24, 0xFE ; 254 - a92: 80 93 e8 00 sts 0x00E8, r24 - usb_endpoints(usb_if); // initialize endpoints - a96: 80 91 0e 01 lds r24, 0x010E - a9a: 0e 94 d4 01 call 0x3a8 ; 0x3a8 - a9e: 92 c0 rjmp .+292 ; 0xbc4 <__vector_12+0x50c> - } else { // other configurations are not supported in this version - STALL; // stall - aa0: 81 e2 ldi r24, 0x21 ; 33 - aa2: 80 93 eb 00 sts 0x00EB, r24 - aa6: 8e c0 rjmp .+284 ; 0xbc4 <__vector_12+0x50c> - } - return; - } - if (ucr.bRequest == GET_INTERFACE && ucr.bmRequestType == 0x80) { - aa8: 8a 30 cpi r24, 0x0A ; 10 - aaa: 81 f4 brne .+32 ; 0xacc <__vector_12+0x414> - aac: 89 81 ldd r24, Y+1 ; 0x01 - aae: 80 38 cpi r24, 0x80 ; 128 - ab0: e9 f5 brne .+122 ; 0xb2c <__vector_12+0x474> - -#define STALL UECONX = _BV(STALLRQ) | _BV(EPEN) - -static inline void usb_wait_in_ready(void) -{ - while (!(UEINTX & _BV(TXINI))); - ab2: e8 ee ldi r30, 0xE8 ; 232 - ab4: f0 e0 ldi r31, 0x00 ; 0 - ab6: 80 81 ld r24, Z - ab8: 80 ff sbrs r24, 0 - aba: fd cf rjmp .-6 ; 0xab6 <__vector_12+0x3fe> - } - return; - } - if (ucr.bRequest == GET_INTERFACE && ucr.bmRequestType == 0x80) { - usb_wait_in_ready(); - UEDATX = usb_if; - abc: 80 91 0e 01 lds r24, 0x010E - ac0: 80 93 f1 00 sts 0x00F1, r24 + a12: 8e ef ldi r24, 0xFE ; 254 + a14: 80 93 e8 00 sts 0x00E8, r24 + a18: 7c c0 rjmp .+248 ; 0xb12 <__vector_12+0x42c> USB_SEND_IN; - ac4: 8e ef ldi r24, 0xFE ; 254 - ac6: 80 93 e8 00 sts 0x00E8, r24 - aca: 7c c0 rjmp .+248 ; 0xbc4 <__vector_12+0x50c> return; } #endif #ifdef SUPPORT_ENDPOINT_HALT if ((ucr.bRequest == CLEAR_FEATURE || ucr.bRequest == SET_FEATURE) - acc: 81 30 cpi r24, 0x01 ; 1 - ace: 11 f0 breq .+4 ; 0xad4 <__vector_12+0x41c> - ad0: 83 30 cpi r24, 0x03 ; 3 - ad2: 61 f5 brne .+88 ; 0xb2c <__vector_12+0x474> + a1a: 81 30 cpi r24, 0x01 ; 1 + a1c: 11 f0 breq .+4 ; 0xa22 <__vector_12+0x33c> + a1e: 83 30 cpi r24, 0x03 ; 3 + a20: 61 f5 brne .+88 ; 0xa7a <__vector_12+0x394> && ucr.bmRequestType == 0x02 && ucr.wValue == 0) { - ad4: 89 81 ldd r24, Y+1 ; 0x01 - ad6: 82 30 cpi r24, 0x02 ; 2 - ad8: 49 f5 brne .+82 ; 0xb2c <__vector_12+0x474> - ada: 8b 81 ldd r24, Y+3 ; 0x03 - adc: 9c 81 ldd r25, Y+4 ; 0x04 - ade: 89 2b or r24, r25 - ae0: 29 f5 brne .+74 ; 0xb2c <__vector_12+0x474> + a22: 89 81 ldd r24, Y+1 ; 0x01 + a24: 82 30 cpi r24, 0x02 ; 2 + a26: 49 f5 brne .+82 ; 0xa7a <__vector_12+0x394> + a28: 8b 81 ldd r24, Y+3 ; 0x03 + a2a: 9c 81 ldd r25, Y+4 ; 0x04 + a2c: 89 2b or r24, r25 + a2e: 29 f5 brne .+74 ; 0xa7a <__vector_12+0x394> i = ucr.wIndex & 0x7F; - ae2: 8d 81 ldd r24, Y+5 ; 0x05 - ae4: 9e 81 ldd r25, Y+6 ; 0x06 - ae6: 8f 77 andi r24, 0x7F ; 127 - ae8: 99 27 eor r25, r25 + a30: 8d 81 ldd r24, Y+5 ; 0x05 + a32: 9e 81 ldd r25, Y+6 ; 0x06 + a34: 8f 77 andi r24, 0x7F ; 127 + a36: 99 27 eor r25, r25 if (i >= 1 && i <= MAX_ENDPOINT) { - aea: 38 2f mov r19, r24 - aec: 31 50 subi r19, 0x01 ; 1 - aee: 34 30 cpi r19, 0x04 ; 4 - af0: e8 f4 brcc .+58 ; 0xb2c <__vector_12+0x474> + a38: 38 2f mov r19, r24 + a3a: 31 50 subi r19, 0x01 ; 1 + a3c: 34 30 cpi r19, 0x04 ; 4 + a3e: e8 f4 brcc .+58 ; 0xa7a <__vector_12+0x394> USB_SEND_IN; - af2: 3e ef ldi r19, 0xFE ; 254 - af4: 30 93 e8 00 sts 0x00E8, r19 + a40: 3e ef ldi r19, 0xFE ; 254 + a42: 30 93 e8 00 sts 0x00E8, r19 UENUM = i; - af8: 80 93 e9 00 sts 0x00E9, r24 + a46: 80 93 e9 00 sts 0x00E9, r24 if (ucr.bRequest == SET_FEATURE) { - afc: 2a 81 ldd r18, Y+2 ; 0x02 - afe: 23 30 cpi r18, 0x03 ; 3 - b00: 21 f4 brne .+8 ; 0xb0a <__vector_12+0x452> + a4a: 2a 81 ldd r18, Y+2 ; 0x02 + a4c: 23 30 cpi r18, 0x03 ; 3 + a4e: 21 f4 brne .+8 ; 0xa58 <__vector_12+0x372> UECONX = _BV(STALLRQ)|_BV(EPEN); - b02: 81 e2 ldi r24, 0x21 ; 33 - b04: 80 93 eb 00 sts 0x00EB, r24 - b08: 5d c0 rjmp .+186 ; 0xbc4 <__vector_12+0x50c> + a50: 81 e2 ldi r24, 0x21 ; 33 + a52: 80 93 eb 00 sts 0x00EB, r24 + a56: 5d c0 rjmp .+186 ; 0xb12 <__vector_12+0x42c> } else { UECONX = _BV(STALLRQC)|_BV(RSTDT)|_BV(EPEN); - b0a: 99 e1 ldi r25, 0x19 ; 25 - b0c: 90 93 eb 00 sts 0x00EB, r25 + a58: 99 e1 ldi r25, 0x19 ; 25 + a5a: 90 93 eb 00 sts 0x00EB, r25 UERST = _BV(i); - b10: 21 e0 ldi r18, 0x01 ; 1 - b12: 30 e0 ldi r19, 0x00 ; 0 - b14: f9 01 movw r30, r18 - b16: 02 c0 rjmp .+4 ; 0xb1c <__vector_12+0x464> - b18: ee 0f add r30, r30 - b1a: ff 1f adc r31, r31 - b1c: 8a 95 dec r24 - b1e: e2 f7 brpl .-8 ; 0xb18 <__vector_12+0x460> - b20: cf 01 movw r24, r30 - b22: ea ee ldi r30, 0xEA ; 234 - b24: f0 e0 ldi r31, 0x00 ; 0 - b26: 80 83 st Z, r24 + a5e: 21 e0 ldi r18, 0x01 ; 1 + a60: 30 e0 ldi r19, 0x00 ; 0 + a62: f9 01 movw r30, r18 + a64: 02 c0 rjmp .+4 ; 0xa6a <__vector_12+0x384> + a66: ee 0f add r30, r30 + a68: ff 1f adc r31, r31 + a6a: 8a 95 dec r24 + a6c: e2 f7 brpl .-8 ; 0xa66 <__vector_12+0x380> + a6e: cf 01 movw r24, r30 + a70: ea ee ldi r30, 0xEA ; 234 + a72: f0 e0 ldi r31, 0x00 ; 0 + a74: 80 83 st Z, r24 UERST = 0; - b28: 10 82 st Z, r1 - b2a: 4c c0 rjmp .+152 ; 0xbc4 <__vector_12+0x50c> + a76: 10 82 st Z, r1 + a78: 4c c0 rjmp .+152 ; 0xb12 <__vector_12+0x42c> } } #endif #ifdef USERDEFCONTROLS // handle user defined control requests if (!usb_controlrequest(&ucr)) - b2c: ce 01 movw r24, r28 - b2e: 01 96 adiw r24, 0x01 ; 1 - b30: 0e 94 60 01 call 0x2c0 ; 0x2c0 - b34: 81 11 cpse r24, r1 - b36: 46 c0 rjmp .+140 ; 0xbc4 <__vector_12+0x50c> + a7a: ce 01 movw r24, r28 + a7c: 01 96 adiw r24, 0x01 ; 1 + a7e: 0e 94 62 01 call 0x2c4 ; 0x2c4 + a82: 81 11 cpse r24, r1 + a84: 46 c0 rjmp .+140 ; 0xb12 <__vector_12+0x42c> UECONX = _BV(STALLRQ) | _BV(EPEN); // stall - b38: 81 e2 ldi r24, 0x21 ; 33 - b3a: 80 93 eb 00 sts 0x00EB, r24 - b3e: 42 c0 rjmp .+132 ; 0xbc4 <__vector_12+0x50c> + a86: 81 e2 ldi r24, 0x21 ; 33 + a88: 80 93 eb 00 sts 0x00EB, r24 + a8c: 42 c0 rjmp .+132 ; 0xb12 <__vector_12+0x42c> return; #endif } UECONX = _BV(STALLRQ) | _BV(EPEN); // stall - b40: 81 e2 ldi r24, 0x21 ; 33 - b42: 80 93 eb 00 sts 0x00EB, r24 - b46: 2f c0 rjmp .+94 ; 0xba6 <__vector_12+0x4ee> - b48: f2 2e mov r15, r18 + a8e: 81 e2 ldi r24, 0x21 ; 33 + a90: 80 93 eb 00 sts 0x00EB, r24 + a94: 2f c0 rjmp .+94 ; 0xaf4 <__vector_12+0x40e> + a96: f2 2e mov r15, r18 } // handle interrupts for further endpoints for (i=1; i<=MAX_ENDPOINT; i++) { if (UEINT & _BV(i)) { - b4a: 40 81 ld r20, Z - b4c: 50 e0 ldi r21, 0x00 ; 0 - b4e: 02 2e mov r0, r18 - b50: 02 c0 rjmp .+4 ; 0xb56 <__vector_12+0x49e> - b52: 55 95 asr r21 - b54: 47 95 ror r20 - b56: 0a 94 dec r0 - b58: e2 f7 brpl .-8 ; 0xb52 <__vector_12+0x49a> - b5a: 40 ff sbrs r20, 0 - b5c: 1b c0 rjmp .+54 ; 0xb94 <__vector_12+0x4dc> + a98: 40 81 ld r20, Z + a9a: 50 e0 ldi r21, 0x00 ; 0 + a9c: 02 2e mov r0, r18 + a9e: 02 c0 rjmp .+4 ; 0xaa4 <__vector_12+0x3be> + aa0: 55 95 asr r21 + aa2: 47 95 ror r20 + aa4: 0a 94 dec r0 + aa6: e2 f7 brpl .-8 ; 0xaa0 <__vector_12+0x3ba> + aa8: 40 ff sbrs r20, 0 + aaa: 1b c0 rjmp .+54 ; 0xae2 <__vector_12+0x3fc> UENUM=i; // select endpoint - b5e: db 01 movw r26, r22 - b60: 2c 93 st X, r18 + aac: db 01 movw r26, r22 + aae: 2c 93 st X, r18 intbits = UEINTX; // save interrupt bits of the endpoint - b62: d6 01 movw r26, r12 - b64: 8c 91 ld r24, X + ab0: d6 01 movw r26, r12 + ab2: 8c 91 ld r24, X if (intbits & _BV(RXOUTI)) { // interrupt occured by incoming data - b66: 82 ff sbrs r24, 2 - b68: 13 c0 rjmp .+38 ; 0xb90 <__vector_12+0x4d8> + ab4: 82 ff sbrs r24, 2 + ab6: 13 c0 rjmp .+38 ; 0xade <__vector_12+0x3f8> #ifdef MEGA4_6 if (((uint16_t)(UEBCHX)<<8)+UEBCLX) { // data available in input endpoint usb_ep(i,((uint16_t)(UEBCHX)<<8)+UEBCLX); #else if (UEBCLX) { // data available in input endpoint - b6a: 80 91 f2 00 lds r24, 0x00F2 - b6e: 88 23 and r24, r24 - b70: 41 f0 breq .+16 ; 0xb82 <__vector_12+0x4ca> + ab8: 80 91 f2 00 lds r24, 0x00F2 + abc: 88 23 and r24, r24 + abe: 41 f0 breq .+16 ; 0xad0 <__vector_12+0x3ea> usb_ep(i,UEBCLX); - b72: 60 91 f2 00 lds r22, 0x00F2 - b76: 70 e0 ldi r23, 0x00 ; 0 - b78: 82 2f mov r24, r18 - b7a: 0e 94 91 01 call 0x322 ; 0x322 + ac0: 60 91 f2 00 lds r22, 0x00F2 + ac4: 70 e0 ldi r23, 0x00 ; 0 + ac6: 82 2f mov r24, r18 + ac8: 0e 94 93 01 call 0x326 ; 0x326 #endif UENUM=i; // reselect endpoint (if changed by handling routine) - b7e: f0 92 e9 00 sts 0x00E9, r15 + acc: f0 92 e9 00 sts 0x00E9, r15 } UEINTX = ~(_BV(RXOUTI)|_BV(STALLEDI)); // clear interrupt flags - b82: e8 ee ldi r30, 0xE8 ; 232 - b84: f0 e0 ldi r31, 0x00 ; 0 - b86: 89 ef ldi r24, 0xF9 ; 249 - b88: 80 83 st Z, r24 + ad0: e8 ee ldi r30, 0xE8 ; 232 + ad2: f0 e0 ldi r31, 0x00 ; 0 + ad4: 89 ef ldi r24, 0xF9 ; 249 + ad6: 80 83 st Z, r24 UEINTX = 0x7F; // free bank (FIFOCON), has to be executed after RXOUTI! - b8a: 8f e7 ldi r24, 0x7F ; 127 - b8c: 80 83 st Z, r24 - b8e: 1a c0 rjmp .+52 ; 0xbc4 <__vector_12+0x50c> + ad8: 8f e7 ldi r24, 0x7F ; 127 + ada: 80 83 st Z, r24 + adc: 1a c0 rjmp .+52 ; 0xb12 <__vector_12+0x42c> return; } STALL; // stall - b90: d8 01 movw r26, r16 - b92: 9c 93 st X, r25 - b94: 2f 5f subi r18, 0xFF ; 255 - b96: 3f 4f sbci r19, 0xFF ; 255 + ade: d8 01 movw r26, r16 + ae0: 9c 93 st X, r25 + ae2: 2f 5f subi r18, 0xFF ; 255 + ae4: 3f 4f sbci r19, 0xFF ; 255 } UECONX = _BV(STALLRQ) | _BV(EPEN); // stall } // handle interrupts for further endpoints for (i=1; i<=MAX_ENDPOINT; i++) { - b98: 25 30 cpi r18, 0x05 ; 5 - b9a: 31 05 cpc r19, r1 - b9c: a9 f6 brne .-86 ; 0xb48 <__vector_12+0x490> + ae6: 25 30 cpi r18, 0x05 ; 5 + ae8: 31 05 cpc r19, r1 + aea: a9 f6 brne .-86 ; 0xa96 <__vector_12+0x3b0> return; } STALL; // stall } } STALL; // stall - b9e: 81 e2 ldi r24, 0x21 ; 33 - ba0: 80 93 eb 00 sts 0x00EB, r24 - ba4: 0f c0 rjmp .+30 ; 0xbc4 <__vector_12+0x50c> + aec: 81 e2 ldi r24, 0x21 ; 33 + aee: 80 93 eb 00 sts 0x00EB, r24 + af2: 0f c0 rjmp .+30 ; 0xb12 <__vector_12+0x42c> USB_SEND_IN; return; } if (ucr.bRequest == GET_STATUS) { usb_wait_in_ready(); i = 0; - ba6: 21 e0 ldi r18, 0x01 ; 1 - ba8: 30 e0 ldi r19, 0x00 ; 0 + af4: 21 e0 ldi r18, 0x01 ; 1 + af6: 30 e0 ldi r19, 0x00 ; 0 UECONX = _BV(STALLRQ) | _BV(EPEN); // stall } // handle interrupts for further endpoints for (i=1; i<=MAX_ENDPOINT; i++) { if (UEINT & _BV(i)) { - baa: e4 ef ldi r30, 0xF4 ; 244 - bac: f0 e0 ldi r31, 0x00 ; 0 + af8: e4 ef ldi r30, 0xF4 ; 244 + afa: f0 e0 ldi r31, 0x00 ; 0 UENUM=i; // select endpoint - bae: 69 ee ldi r22, 0xE9 ; 233 - bb0: 70 e0 ldi r23, 0x00 ; 0 + afc: 69 ee ldi r22, 0xE9 ; 233 + afe: 70 e0 ldi r23, 0x00 ; 0 intbits = UEINTX; // save interrupt bits of the endpoint - bb2: 0f 2e mov r0, r31 - bb4: f8 ee ldi r31, 0xE8 ; 232 - bb6: cf 2e mov r12, r31 - bb8: d1 2c mov r13, r1 - bba: f0 2d mov r31, r0 + b00: 0f 2e mov r0, r31 + b02: f8 ee ldi r31, 0xE8 ; 232 + b04: cf 2e mov r12, r31 + b06: d1 2c mov r13, r1 + b08: f0 2d mov r31, r0 } UEINTX = ~(_BV(RXOUTI)|_BV(STALLEDI)); // clear interrupt flags UEINTX = 0x7F; // free bank (FIFOCON), has to be executed after RXOUTI! return; } STALL; // stall - bbc: 0b ee ldi r16, 0xEB ; 235 - bbe: 10 e0 ldi r17, 0x00 ; 0 - bc0: 91 e2 ldi r25, 0x21 ; 33 - bc2: c2 cf rjmp .-124 ; 0xb48 <__vector_12+0x490> + b0a: 0b ee ldi r16, 0xEB ; 235 + b0c: 10 e0 ldi r17, 0x00 ; 0 + b0e: 91 e2 ldi r25, 0x21 ; 33 + b10: c2 cf rjmp .-124 ; 0xa96 <__vector_12+0x3b0> } } STALL; // stall } - bc4: 2a 96 adiw r28, 0x0a ; 10 - bc6: 0f b6 in r0, 0x3f ; 63 - bc8: f8 94 cli - bca: de bf out 0x3e, r29 ; 62 - bcc: 0f be out 0x3f, r0 ; 63 - bce: cd bf out 0x3d, r28 ; 61 - bd0: df 91 pop r29 - bd2: cf 91 pop r28 - bd4: ff 91 pop r31 - bd6: ef 91 pop r30 - bd8: bf 91 pop r27 - bda: af 91 pop r26 - bdc: 9f 91 pop r25 - bde: 8f 91 pop r24 - be0: 7f 91 pop r23 - be2: 6f 91 pop r22 - be4: 5f 91 pop r21 - be6: 4f 91 pop r20 - be8: 3f 91 pop r19 - bea: 2f 91 pop r18 - bec: 1f 91 pop r17 - bee: 0f 91 pop r16 - bf0: ff 90 pop r15 - bf2: ef 90 pop r14 - bf4: df 90 pop r13 - bf6: cf 90 pop r12 - bf8: bf 90 pop r11 - bfa: af 90 pop r10 - bfc: 9f 90 pop r9 - bfe: 8f 90 pop r8 - c00: 7f 90 pop r7 - c02: 6f 90 pop r6 - c04: 5f 90 pop r5 - c06: 4f 90 pop r4 - c08: 3f 90 pop r3 - c0a: 0f 90 pop r0 - c0c: 0f be out 0x3f, r0 ; 63 - c0e: 0f 90 pop r0 - c10: 1f 90 pop r1 - c12: 18 95 reti + b12: 28 96 adiw r28, 0x08 ; 8 + b14: 0f b6 in r0, 0x3f ; 63 + b16: f8 94 cli + b18: de bf out 0x3e, r29 ; 62 + b1a: 0f be out 0x3f, r0 ; 63 + b1c: cd bf out 0x3d, r28 ; 61 + b1e: df 91 pop r29 + b20: cf 91 pop r28 + b22: ff 91 pop r31 + b24: ef 91 pop r30 + b26: bf 91 pop r27 + b28: af 91 pop r26 + b2a: 9f 91 pop r25 + b2c: 8f 91 pop r24 + b2e: 7f 91 pop r23 + b30: 6f 91 pop r22 + b32: 5f 91 pop r21 + b34: 4f 91 pop r20 + b36: 3f 91 pop r19 + b38: 2f 91 pop r18 + b3a: 1f 91 pop r17 + b3c: 0f 91 pop r16 + b3e: ff 90 pop r15 + b40: ef 90 pop r14 + b42: df 90 pop r13 + b44: cf 90 pop r12 + b46: bf 90 pop r11 + b48: 0f 90 pop r0 + b4a: 0f be out 0x3f, r0 ; 63 + b4c: 0f 90 pop r0 + b4e: 1f 90 pop r1 + b50: 18 95 reti -00000c14 <__mulhi3>: - c14: 55 27 eor r21, r21 - c16: 00 24 eor r0, r0 +00000b52 : + b52: 0f 93 push r16 + b54: 1f 93 push r17 + b56: cf 93 push r28 + b58: df 93 push r29 + b5a: 82 30 cpi r24, 0x02 ; 2 + b5c: 91 05 cpc r25, r1 + b5e: 10 f4 brcc .+4 ; 0xb64 + b60: 82 e0 ldi r24, 0x02 ; 2 + b62: 90 e0 ldi r25, 0x00 ; 0 + b64: e0 91 70 01 lds r30, 0x0170 + b68: f0 91 71 01 lds r31, 0x0171 + b6c: 20 e0 ldi r18, 0x00 ; 0 + b6e: 30 e0 ldi r19, 0x00 ; 0 + b70: c0 e0 ldi r28, 0x00 ; 0 + b72: d0 e0 ldi r29, 0x00 ; 0 + b74: 23 c0 rjmp .+70 ; 0xbbc + b76: 40 81 ld r20, Z + b78: 51 81 ldd r21, Z+1 ; 0x01 + b7a: 48 17 cp r20, r24 + b7c: 59 07 cpc r21, r25 + b7e: a8 f0 brcs .+42 ; 0xbaa + b80: 48 17 cp r20, r24 + b82: 59 07 cpc r21, r25 + b84: 61 f4 brne .+24 ; 0xb9e + b86: 82 81 ldd r24, Z+2 ; 0x02 + b88: 93 81 ldd r25, Z+3 ; 0x03 + b8a: 20 97 sbiw r28, 0x00 ; 0 + b8c: 19 f0 breq .+6 ; 0xb94 + b8e: 9b 83 std Y+3, r25 ; 0x03 + b90: 8a 83 std Y+2, r24 ; 0x02 + b92: 2e c0 rjmp .+92 ; 0xbf0 + b94: 90 93 71 01 sts 0x0171, r25 + b98: 80 93 70 01 sts 0x0170, r24 + b9c: 29 c0 rjmp .+82 ; 0xbf0 + b9e: 21 15 cp r18, r1 + ba0: 31 05 cpc r19, r1 + ba2: 29 f0 breq .+10 ; 0xbae + ba4: 42 17 cp r20, r18 + ba6: 53 07 cpc r21, r19 + ba8: 10 f0 brcs .+4 ; 0xbae + baa: a9 01 movw r20, r18 + bac: 02 c0 rjmp .+4 ; 0xbb2 + bae: be 01 movw r22, r28 + bb0: df 01 movw r26, r30 + bb2: 02 81 ldd r16, Z+2 ; 0x02 + bb4: 13 81 ldd r17, Z+3 ; 0x03 + bb6: ef 01 movw r28, r30 + bb8: 9a 01 movw r18, r20 + bba: f8 01 movw r30, r16 + bbc: 30 97 sbiw r30, 0x00 ; 0 + bbe: d9 f6 brne .-74 ; 0xb76 + bc0: 21 15 cp r18, r1 + bc2: 31 05 cpc r19, r1 + bc4: 09 f1 breq .+66 ; 0xc08 + bc6: 28 1b sub r18, r24 + bc8: 39 0b sbc r19, r25 + bca: 24 30 cpi r18, 0x04 ; 4 + bcc: 31 05 cpc r19, r1 + bce: 90 f4 brcc .+36 ; 0xbf4 + bd0: 12 96 adiw r26, 0x02 ; 2 + bd2: 8d 91 ld r24, X+ + bd4: 9c 91 ld r25, X + bd6: 13 97 sbiw r26, 0x03 ; 3 + bd8: 61 15 cp r22, r1 + bda: 71 05 cpc r23, r1 + bdc: 21 f0 breq .+8 ; 0xbe6 + bde: fb 01 movw r30, r22 + be0: 93 83 std Z+3, r25 ; 0x03 + be2: 82 83 std Z+2, r24 ; 0x02 + be4: 04 c0 rjmp .+8 ; 0xbee + be6: 90 93 71 01 sts 0x0171, r25 + bea: 80 93 70 01 sts 0x0170, r24 + bee: fd 01 movw r30, r26 + bf0: 32 96 adiw r30, 0x02 ; 2 + bf2: 44 c0 rjmp .+136 ; 0xc7c + bf4: fd 01 movw r30, r26 + bf6: e2 0f add r30, r18 + bf8: f3 1f adc r31, r19 + bfa: 81 93 st Z+, r24 + bfc: 91 93 st Z+, r25 + bfe: 22 50 subi r18, 0x02 ; 2 + c00: 31 09 sbc r19, r1 + c02: 2d 93 st X+, r18 + c04: 3c 93 st X, r19 + c06: 3a c0 rjmp .+116 ; 0xc7c + c08: 20 91 6e 01 lds r18, 0x016E + c0c: 30 91 6f 01 lds r19, 0x016F + c10: 23 2b or r18, r19 + c12: 41 f4 brne .+16 ; 0xc24 + c14: 20 91 10 01 lds r18, 0x0110 + c18: 30 91 11 01 lds r19, 0x0111 + c1c: 30 93 6f 01 sts 0x016F, r19 + c20: 20 93 6e 01 sts 0x016E, r18 + c24: 20 91 0e 01 lds r18, 0x010E + c28: 30 91 0f 01 lds r19, 0x010F + c2c: 21 15 cp r18, r1 + c2e: 31 05 cpc r19, r1 + c30: 41 f4 brne .+16 ; 0xc42 + c32: 2d b7 in r18, 0x3d ; 61 + c34: 3e b7 in r19, 0x3e ; 62 + c36: 40 91 12 01 lds r20, 0x0112 + c3a: 50 91 13 01 lds r21, 0x0113 + c3e: 24 1b sub r18, r20 + c40: 35 0b sbc r19, r21 + c42: e0 91 6e 01 lds r30, 0x016E + c46: f0 91 6f 01 lds r31, 0x016F + c4a: e2 17 cp r30, r18 + c4c: f3 07 cpc r31, r19 + c4e: a0 f4 brcc .+40 ; 0xc78 + c50: 2e 1b sub r18, r30 + c52: 3f 0b sbc r19, r31 + c54: 28 17 cp r18, r24 + c56: 39 07 cpc r19, r25 + c58: 78 f0 brcs .+30 ; 0xc78 + c5a: ac 01 movw r20, r24 + c5c: 4e 5f subi r20, 0xFE ; 254 + c5e: 5f 4f sbci r21, 0xFF ; 255 + c60: 24 17 cp r18, r20 + c62: 35 07 cpc r19, r21 + c64: 48 f0 brcs .+18 ; 0xc78 + c66: 4e 0f add r20, r30 + c68: 5f 1f adc r21, r31 + c6a: 50 93 6f 01 sts 0x016F, r21 + c6e: 40 93 6e 01 sts 0x016E, r20 + c72: 81 93 st Z+, r24 + c74: 91 93 st Z+, r25 + c76: 02 c0 rjmp .+4 ; 0xc7c + c78: e0 e0 ldi r30, 0x00 ; 0 + c7a: f0 e0 ldi r31, 0x00 ; 0 + c7c: cf 01 movw r24, r30 + c7e: df 91 pop r29 + c80: cf 91 pop r28 + c82: 1f 91 pop r17 + c84: 0f 91 pop r16 + c86: 08 95 ret -00000c18 <__mulhi3_loop>: - c18: 80 ff sbrs r24, 0 - c1a: 02 c0 rjmp .+4 ; 0xc20 <__mulhi3_skip1> - c1c: 06 0e add r0, r22 - c1e: 57 1f adc r21, r23 +00000c88 : + c88: ef 92 push r14 + c8a: ff 92 push r15 + c8c: 0f 93 push r16 + c8e: 1f 93 push r17 + c90: cf 93 push r28 + c92: df 93 push r29 + c94: 00 97 sbiw r24, 0x00 ; 0 + c96: 09 f4 brne .+2 ; 0xc9a + c98: 8f c0 rjmp .+286 ; 0xdb8 + c9a: dc 01 movw r26, r24 + c9c: 12 97 sbiw r26, 0x02 ; 2 + c9e: 13 96 adiw r26, 0x03 ; 3 + ca0: 1c 92 st X, r1 + ca2: 1e 92 st -X, r1 + ca4: 12 97 sbiw r26, 0x02 ; 2 + ca6: e0 90 70 01 lds r14, 0x0170 + caa: f0 90 71 01 lds r15, 0x0171 + cae: e1 14 cp r14, r1 + cb0: f1 04 cpc r15, r1 + cb2: 89 f4 brne .+34 ; 0xcd6 + cb4: 2d 91 ld r18, X+ + cb6: 3c 91 ld r19, X + cb8: 11 97 sbiw r26, 0x01 ; 1 + cba: 28 0f add r18, r24 + cbc: 39 1f adc r19, r25 + cbe: 80 91 6e 01 lds r24, 0x016E + cc2: 90 91 6f 01 lds r25, 0x016F + cc6: 82 17 cp r24, r18 + cc8: 93 07 cpc r25, r19 + cca: 89 f5 brne .+98 ; 0xd2e + ccc: b0 93 6f 01 sts 0x016F, r27 + cd0: a0 93 6e 01 sts 0x016E, r26 + cd4: 71 c0 rjmp .+226 ; 0xdb8 + cd6: e7 01 movw r28, r14 + cd8: 20 e0 ldi r18, 0x00 ; 0 + cda: 30 e0 ldi r19, 0x00 ; 0 + cdc: 01 c0 rjmp .+2 ; 0xce0 + cde: ea 01 movw r28, r20 + ce0: ca 17 cp r28, r26 + ce2: db 07 cpc r29, r27 + ce4: 38 f4 brcc .+14 ; 0xcf4 + ce6: 4a 81 ldd r20, Y+2 ; 0x02 + ce8: 5b 81 ldd r21, Y+3 ; 0x03 + cea: 9e 01 movw r18, r28 + cec: 41 15 cp r20, r1 + cee: 51 05 cpc r21, r1 + cf0: b1 f7 brne .-20 ; 0xcde + cf2: 22 c0 rjmp .+68 ; 0xd38 + cf4: bc 01 movw r22, r24 + cf6: 62 50 subi r22, 0x02 ; 2 + cf8: 71 09 sbc r23, r1 + cfa: fb 01 movw r30, r22 + cfc: d3 83 std Z+3, r29 ; 0x03 + cfe: c2 83 std Z+2, r28 ; 0x02 + d00: 00 81 ld r16, Z + d02: 11 81 ldd r17, Z+1 ; 0x01 + d04: ac 01 movw r20, r24 + d06: 40 0f add r20, r16 + d08: 51 1f adc r21, r17 + d0a: 4c 17 cp r20, r28 + d0c: 5d 07 cpc r21, r29 + d0e: 61 f4 brne .+24 ; 0xd28 + d10: 48 81 ld r20, Y + d12: 59 81 ldd r21, Y+1 ; 0x01 + d14: 40 0f add r20, r16 + d16: 51 1f adc r21, r17 + d18: 4e 5f subi r20, 0xFE ; 254 + d1a: 5f 4f sbci r21, 0xFF ; 255 + d1c: 51 83 std Z+1, r21 ; 0x01 + d1e: 40 83 st Z, r20 + d20: 4a 81 ldd r20, Y+2 ; 0x02 + d22: 5b 81 ldd r21, Y+3 ; 0x03 + d24: 53 83 std Z+3, r21 ; 0x03 + d26: 42 83 std Z+2, r20 ; 0x02 + d28: 21 15 cp r18, r1 + d2a: 31 05 cpc r19, r1 + d2c: 29 f4 brne .+10 ; 0xd38 + d2e: b0 93 71 01 sts 0x0171, r27 + d32: a0 93 70 01 sts 0x0170, r26 + d36: 40 c0 rjmp .+128 ; 0xdb8 + d38: f9 01 movw r30, r18 + d3a: b3 83 std Z+3, r27 ; 0x03 + d3c: a2 83 std Z+2, r26 ; 0x02 + d3e: e9 01 movw r28, r18 + d40: 69 91 ld r22, Y+ + d42: 79 91 ld r23, Y+ + d44: c6 0f add r28, r22 + d46: d7 1f adc r29, r23 + d48: ac 17 cp r26, r28 + d4a: bd 07 cpc r27, r29 + d4c: 79 f4 brne .+30 ; 0xd6c + d4e: dc 01 movw r26, r24 + d50: 5e 91 ld r21, -X + d52: 4e 91 ld r20, -X + d54: 46 0f add r20, r22 + d56: 57 1f adc r21, r23 + d58: 4e 5f subi r20, 0xFE ; 254 + d5a: 5f 4f sbci r21, 0xFF ; 255 + d5c: 51 83 std Z+1, r21 ; 0x01 + d5e: 40 83 st Z, r20 + d60: 12 96 adiw r26, 0x02 ; 2 + d62: 8d 91 ld r24, X+ + d64: 9c 91 ld r25, X + d66: 13 97 sbiw r26, 0x03 ; 3 + d68: 93 83 std Z+3, r25 ; 0x03 + d6a: 82 83 std Z+2, r24 ; 0x02 + d6c: a0 e0 ldi r26, 0x00 ; 0 + d6e: b0 e0 ldi r27, 0x00 ; 0 + d70: 02 c0 rjmp .+4 ; 0xd76 + d72: d7 01 movw r26, r14 + d74: 7c 01 movw r14, r24 + d76: f7 01 movw r30, r14 + d78: 82 81 ldd r24, Z+2 ; 0x02 + d7a: 93 81 ldd r25, Z+3 ; 0x03 + d7c: 00 97 sbiw r24, 0x00 ; 0 + d7e: c9 f7 brne .-14 ; 0xd72 + d80: c7 01 movw r24, r14 + d82: 02 96 adiw r24, 0x02 ; 2 + d84: 20 81 ld r18, Z + d86: 31 81 ldd r19, Z+1 ; 0x01 + d88: 82 0f add r24, r18 + d8a: 93 1f adc r25, r19 + d8c: 20 91 6e 01 lds r18, 0x016E + d90: 30 91 6f 01 lds r19, 0x016F + d94: 28 17 cp r18, r24 + d96: 39 07 cpc r19, r25 + d98: 79 f4 brne .+30 ; 0xdb8 + d9a: 10 97 sbiw r26, 0x00 ; 0 + d9c: 29 f4 brne .+10 ; 0xda8 + d9e: 10 92 71 01 sts 0x0171, r1 + da2: 10 92 70 01 sts 0x0170, r1 + da6: 04 c0 rjmp .+8 ; 0xdb0 + da8: 13 96 adiw r26, 0x03 ; 3 + daa: 1c 92 st X, r1 + dac: 1e 92 st -X, r1 + dae: 12 97 sbiw r26, 0x02 ; 2 + db0: f0 92 6f 01 sts 0x016F, r15 + db4: e0 92 6e 01 sts 0x016E, r14 + db8: cd b7 in r28, 0x3d ; 61 + dba: de b7 in r29, 0x3e ; 62 + dbc: e6 e0 ldi r30, 0x06 ; 6 + dbe: 0c 94 de 09 jmp 0x13bc ; 0x13bc <__epilogue_restores__+0x18> -00000c20 <__mulhi3_skip1>: - c20: 66 0f add r22, r22 - c22: 77 1f adc r23, r23 - c24: 61 15 cp r22, r1 - c26: 71 05 cpc r23, r1 - c28: 21 f0 breq .+8 ; 0xc32 <__mulhi3_exit> - c2a: 96 95 lsr r25 - c2c: 87 95 ror r24 - c2e: 00 97 sbiw r24, 0x00 ; 0 - c30: 99 f7 brne .-26 ; 0xc18 <__mulhi3_loop> +00000dc2 : + dc2: dc 01 movw r26, r24 + dc4: 6c 91 ld r22, X + dc6: 61 56 subi r22, 0x61 ; 97 + dc8: 6a 31 cpi r22, 0x1A ; 26 + dca: 08 f0 brcs .+2 ; 0xdce + dcc: 60 5e subi r22, 0xE0 ; 224 + dce: 6f 5b subi r22, 0xBF ; 191 + dd0: 6d 93 st X+, r22 + dd2: c1 f7 brne .-16 ; 0xdc4 + dd4: 08 95 ret -00000c32 <__mulhi3_exit>: - c32: 95 2f mov r25, r21 - c34: 80 2d mov r24, r0 - c36: 08 95 ret +00000dd6 : + dd6: a0 e0 ldi r26, 0x00 ; 0 + dd8: b0 e0 ldi r27, 0x00 ; 0 + dda: e1 ef ldi r30, 0xF1 ; 241 + ddc: f6 e0 ldi r31, 0x06 ; 6 + dde: 0c 94 c6 09 jmp 0x138c ; 0x138c <__prologue_saves__+0x20> + de2: ce 01 movw r24, r28 + de4: 09 96 adiw r24, 0x09 ; 9 + de6: ac 01 movw r20, r24 + de8: 6f 81 ldd r22, Y+7 ; 0x07 + dea: 78 85 ldd r23, Y+8 ; 0x08 + dec: 8d 81 ldd r24, Y+5 ; 0x05 + dee: 9e 81 ldd r25, Y+6 ; 0x06 + df0: 0e 94 2d 07 call 0xe5a ; 0xe5a + df4: e2 e0 ldi r30, 0x02 ; 2 + df6: 0c 94 e2 09 jmp 0x13c4 ; 0x13c4 <__epilogue_restores__+0x20> -00000c38 : - c38: 0f 93 push r16 - c3a: 1f 93 push r17 - c3c: cf 93 push r28 - c3e: df 93 push r29 - c40: 82 30 cpi r24, 0x02 ; 2 - c42: 91 05 cpc r25, r1 - c44: 10 f4 brcc .+4 ; 0xc4a - c46: 82 e0 ldi r24, 0x02 ; 2 - c48: 90 e0 ldi r25, 0x00 ; 0 - c4a: e0 91 42 01 lds r30, 0x0142 - c4e: f0 91 43 01 lds r31, 0x0143 - c52: 20 e0 ldi r18, 0x00 ; 0 - c54: 30 e0 ldi r19, 0x00 ; 0 - c56: c0 e0 ldi r28, 0x00 ; 0 - c58: d0 e0 ldi r29, 0x00 ; 0 - c5a: 23 c0 rjmp .+70 ; 0xca2 - c5c: 40 81 ld r20, Z - c5e: 51 81 ldd r21, Z+1 ; 0x01 - c60: 48 17 cp r20, r24 - c62: 59 07 cpc r21, r25 - c64: a8 f0 brcs .+42 ; 0xc90 - c66: 48 17 cp r20, r24 - c68: 59 07 cpc r21, r25 - c6a: 61 f4 brne .+24 ; 0xc84 - c6c: 82 81 ldd r24, Z+2 ; 0x02 - c6e: 93 81 ldd r25, Z+3 ; 0x03 - c70: 20 97 sbiw r28, 0x00 ; 0 - c72: 19 f0 breq .+6 ; 0xc7a - c74: 9b 83 std Y+3, r25 ; 0x03 - c76: 8a 83 std Y+2, r24 ; 0x02 - c78: 2e c0 rjmp .+92 ; 0xcd6 - c7a: 90 93 43 01 sts 0x0143, r25 - c7e: 80 93 42 01 sts 0x0142, r24 - c82: 29 c0 rjmp .+82 ; 0xcd6 - c84: 21 15 cp r18, r1 - c86: 31 05 cpc r19, r1 - c88: 29 f0 breq .+10 ; 0xc94 - c8a: 42 17 cp r20, r18 - c8c: 53 07 cpc r21, r19 - c8e: 10 f0 brcs .+4 ; 0xc94 - c90: a9 01 movw r20, r18 - c92: 02 c0 rjmp .+4 ; 0xc98 - c94: be 01 movw r22, r28 - c96: df 01 movw r26, r30 - c98: 02 81 ldd r16, Z+2 ; 0x02 - c9a: 13 81 ldd r17, Z+3 ; 0x03 - c9c: ef 01 movw r28, r30 - c9e: 9a 01 movw r18, r20 - ca0: f8 01 movw r30, r16 - ca2: 30 97 sbiw r30, 0x00 ; 0 - ca4: d9 f6 brne .-74 ; 0xc5c - ca6: 21 15 cp r18, r1 - ca8: 31 05 cpc r19, r1 - caa: 09 f1 breq .+66 ; 0xcee - cac: 28 1b sub r18, r24 - cae: 39 0b sbc r19, r25 - cb0: 24 30 cpi r18, 0x04 ; 4 - cb2: 31 05 cpc r19, r1 - cb4: 90 f4 brcc .+36 ; 0xcda - cb6: 12 96 adiw r26, 0x02 ; 2 - cb8: 8d 91 ld r24, X+ - cba: 9c 91 ld r25, X - cbc: 13 97 sbiw r26, 0x03 ; 3 - cbe: 61 15 cp r22, r1 - cc0: 71 05 cpc r23, r1 - cc2: 21 f0 breq .+8 ; 0xccc - cc4: fb 01 movw r30, r22 - cc6: 93 83 std Z+3, r25 ; 0x03 - cc8: 82 83 std Z+2, r24 ; 0x02 - cca: 04 c0 rjmp .+8 ; 0xcd4 - ccc: 90 93 43 01 sts 0x0143, r25 - cd0: 80 93 42 01 sts 0x0142, r24 - cd4: fd 01 movw r30, r26 - cd6: 32 96 adiw r30, 0x02 ; 2 - cd8: 44 c0 rjmp .+136 ; 0xd62 - cda: fd 01 movw r30, r26 - cdc: e2 0f add r30, r18 - cde: f3 1f adc r31, r19 - ce0: 81 93 st Z+, r24 - ce2: 91 93 st Z+, r25 - ce4: 22 50 subi r18, 0x02 ; 2 - ce6: 31 09 sbc r19, r1 - ce8: 2d 93 st X+, r18 - cea: 3c 93 st X, r19 - cec: 3a c0 rjmp .+116 ; 0xd62 - cee: 20 91 40 01 lds r18, 0x0140 - cf2: 30 91 41 01 lds r19, 0x0141 - cf6: 23 2b or r18, r19 - cf8: 41 f4 brne .+16 ; 0xd0a - cfa: 20 91 11 01 lds r18, 0x0111 - cfe: 30 91 12 01 lds r19, 0x0112 - d02: 30 93 41 01 sts 0x0141, r19 - d06: 20 93 40 01 sts 0x0140, r18 - d0a: 20 91 0f 01 lds r18, 0x010F - d0e: 30 91 10 01 lds r19, 0x0110 - d12: 21 15 cp r18, r1 - d14: 31 05 cpc r19, r1 - d16: 41 f4 brne .+16 ; 0xd28 - d18: 2d b7 in r18, 0x3d ; 61 - d1a: 3e b7 in r19, 0x3e ; 62 - d1c: 40 91 13 01 lds r20, 0x0113 - d20: 50 91 14 01 lds r21, 0x0114 - d24: 24 1b sub r18, r20 - d26: 35 0b sbc r19, r21 - d28: e0 91 40 01 lds r30, 0x0140 - d2c: f0 91 41 01 lds r31, 0x0141 - d30: e2 17 cp r30, r18 - d32: f3 07 cpc r31, r19 - d34: a0 f4 brcc .+40 ; 0xd5e - d36: 2e 1b sub r18, r30 - d38: 3f 0b sbc r19, r31 - d3a: 28 17 cp r18, r24 - d3c: 39 07 cpc r19, r25 - d3e: 78 f0 brcs .+30 ; 0xd5e - d40: ac 01 movw r20, r24 - d42: 4e 5f subi r20, 0xFE ; 254 - d44: 5f 4f sbci r21, 0xFF ; 255 - d46: 24 17 cp r18, r20 - d48: 35 07 cpc r19, r21 - d4a: 48 f0 brcs .+18 ; 0xd5e - d4c: 4e 0f add r20, r30 - d4e: 5f 1f adc r21, r31 - d50: 50 93 41 01 sts 0x0141, r21 - d54: 40 93 40 01 sts 0x0140, r20 - d58: 81 93 st Z+, r24 - d5a: 91 93 st Z+, r25 - d5c: 02 c0 rjmp .+4 ; 0xd62 - d5e: e0 e0 ldi r30, 0x00 ; 0 - d60: f0 e0 ldi r31, 0x00 ; 0 - d62: cf 01 movw r24, r30 - d64: df 91 pop r29 - d66: cf 91 pop r28 - d68: 1f 91 pop r17 - d6a: 0f 91 pop r16 - d6c: 08 95 ret +00000dfa : + dfa: ae e0 ldi r26, 0x0E ; 14 + dfc: b0 e0 ldi r27, 0x00 ; 0 + dfe: e3 e0 ldi r30, 0x03 ; 3 + e00: f7 e0 ldi r31, 0x07 ; 7 + e02: 0c 94 c4 09 jmp 0x1388 ; 0x1388 <__prologue_saves__+0x1c> + e06: 0d 89 ldd r16, Y+21 ; 0x15 + e08: 1e 89 ldd r17, Y+22 ; 0x16 + e0a: 8f 89 ldd r24, Y+23 ; 0x17 + e0c: 98 8d ldd r25, Y+24 ; 0x18 + e0e: 26 e0 ldi r18, 0x06 ; 6 + e10: 2c 83 std Y+4, r18 ; 0x04 + e12: 1a 83 std Y+2, r17 ; 0x02 + e14: 09 83 std Y+1, r16 ; 0x01 + e16: 97 ff sbrs r25, 7 + e18: 02 c0 rjmp .+4 ; 0xe1e + e1a: 80 e0 ldi r24, 0x00 ; 0 + e1c: 90 e8 ldi r25, 0x80 ; 128 + e1e: 01 97 sbiw r24, 0x01 ; 1 + e20: 9e 83 std Y+6, r25 ; 0x06 + e22: 8d 83 std Y+5, r24 ; 0x05 + e24: ce 01 movw r24, r28 + e26: 4b 96 adiw r24, 0x1b ; 27 + e28: ac 01 movw r20, r24 + e2a: 69 8d ldd r22, Y+25 ; 0x19 + e2c: 7a 8d ldd r23, Y+26 ; 0x1a + e2e: ce 01 movw r24, r28 + e30: 01 96 adiw r24, 0x01 ; 1 + e32: 0e 94 2d 07 call 0xe5a ; 0xe5a + e36: 4d 81 ldd r20, Y+5 ; 0x05 + e38: 5e 81 ldd r21, Y+6 ; 0x06 + e3a: 57 fd sbrc r21, 7 + e3c: 0a c0 rjmp .+20 ; 0xe52 + e3e: 2f 81 ldd r18, Y+7 ; 0x07 + e40: 38 85 ldd r19, Y+8 ; 0x08 + e42: 42 17 cp r20, r18 + e44: 53 07 cpc r21, r19 + e46: 0c f4 brge .+2 ; 0xe4a + e48: 9a 01 movw r18, r20 + e4a: f8 01 movw r30, r16 + e4c: e2 0f add r30, r18 + e4e: f3 1f adc r31, r19 + e50: 10 82 st Z, r1 + e52: 2e 96 adiw r28, 0x0e ; 14 + e54: e4 e0 ldi r30, 0x04 ; 4 + e56: 0c 94 e0 09 jmp 0x13c0 ; 0x13c0 <__epilogue_restores__+0x1c> -00000d6e : - d6e: ef 92 push r14 - d70: ff 92 push r15 - d72: 0f 93 push r16 - d74: 1f 93 push r17 - d76: cf 93 push r28 - d78: df 93 push r29 - d7a: 00 97 sbiw r24, 0x00 ; 0 - d7c: 09 f4 brne .+2 ; 0xd80 - d7e: 8f c0 rjmp .+286 ; 0xe9e - d80: dc 01 movw r26, r24 - d82: 12 97 sbiw r26, 0x02 ; 2 - d84: 13 96 adiw r26, 0x03 ; 3 - d86: 1c 92 st X, r1 - d88: 1e 92 st -X, r1 - d8a: 12 97 sbiw r26, 0x02 ; 2 - d8c: e0 90 42 01 lds r14, 0x0142 - d90: f0 90 43 01 lds r15, 0x0143 - d94: e1 14 cp r14, r1 - d96: f1 04 cpc r15, r1 - d98: 89 f4 brne .+34 ; 0xdbc - d9a: 2d 91 ld r18, X+ - d9c: 3c 91 ld r19, X - d9e: 11 97 sbiw r26, 0x01 ; 1 - da0: 28 0f add r18, r24 - da2: 39 1f adc r19, r25 - da4: 80 91 40 01 lds r24, 0x0140 - da8: 90 91 41 01 lds r25, 0x0141 - dac: 82 17 cp r24, r18 - dae: 93 07 cpc r25, r19 - db0: 89 f5 brne .+98 ; 0xe14 - db2: b0 93 41 01 sts 0x0141, r27 - db6: a0 93 40 01 sts 0x0140, r26 - dba: 71 c0 rjmp .+226 ; 0xe9e - dbc: e7 01 movw r28, r14 - dbe: 20 e0 ldi r18, 0x00 ; 0 - dc0: 30 e0 ldi r19, 0x00 ; 0 - dc2: 01 c0 rjmp .+2 ; 0xdc6 - dc4: ea 01 movw r28, r20 - dc6: ca 17 cp r28, r26 - dc8: db 07 cpc r29, r27 - dca: 38 f4 brcc .+14 ; 0xdda - dcc: 4a 81 ldd r20, Y+2 ; 0x02 - dce: 5b 81 ldd r21, Y+3 ; 0x03 - dd0: 9e 01 movw r18, r28 - dd2: 41 15 cp r20, r1 - dd4: 51 05 cpc r21, r1 - dd6: b1 f7 brne .-20 ; 0xdc4 - dd8: 22 c0 rjmp .+68 ; 0xe1e - dda: bc 01 movw r22, r24 - ddc: 62 50 subi r22, 0x02 ; 2 - dde: 71 09 sbc r23, r1 - de0: fb 01 movw r30, r22 - de2: d3 83 std Z+3, r29 ; 0x03 - de4: c2 83 std Z+2, r28 ; 0x02 - de6: 00 81 ld r16, Z - de8: 11 81 ldd r17, Z+1 ; 0x01 - dea: ac 01 movw r20, r24 - dec: 40 0f add r20, r16 - dee: 51 1f adc r21, r17 - df0: 4c 17 cp r20, r28 - df2: 5d 07 cpc r21, r29 - df4: 61 f4 brne .+24 ; 0xe0e - df6: 48 81 ld r20, Y - df8: 59 81 ldd r21, Y+1 ; 0x01 - dfa: 40 0f add r20, r16 - dfc: 51 1f adc r21, r17 - dfe: 4e 5f subi r20, 0xFE ; 254 - e00: 5f 4f sbci r21, 0xFF ; 255 - e02: 51 83 std Z+1, r21 ; 0x01 - e04: 40 83 st Z, r20 - e06: 4a 81 ldd r20, Y+2 ; 0x02 - e08: 5b 81 ldd r21, Y+3 ; 0x03 - e0a: 53 83 std Z+3, r21 ; 0x03 - e0c: 42 83 std Z+2, r20 ; 0x02 - e0e: 21 15 cp r18, r1 - e10: 31 05 cpc r19, r1 - e12: 29 f4 brne .+10 ; 0xe1e - e14: b0 93 43 01 sts 0x0143, r27 - e18: a0 93 42 01 sts 0x0142, r26 - e1c: 40 c0 rjmp .+128 ; 0xe9e - e1e: f9 01 movw r30, r18 - e20: b3 83 std Z+3, r27 ; 0x03 - e22: a2 83 std Z+2, r26 ; 0x02 - e24: e9 01 movw r28, r18 - e26: 69 91 ld r22, Y+ - e28: 79 91 ld r23, Y+ - e2a: c6 0f add r28, r22 - e2c: d7 1f adc r29, r23 - e2e: ac 17 cp r26, r28 - e30: bd 07 cpc r27, r29 - e32: 79 f4 brne .+30 ; 0xe52 - e34: dc 01 movw r26, r24 - e36: 5e 91 ld r21, -X - e38: 4e 91 ld r20, -X - e3a: 46 0f add r20, r22 - e3c: 57 1f adc r21, r23 - e3e: 4e 5f subi r20, 0xFE ; 254 - e40: 5f 4f sbci r21, 0xFF ; 255 - e42: 51 83 std Z+1, r21 ; 0x01 - e44: 40 83 st Z, r20 - e46: 12 96 adiw r26, 0x02 ; 2 - e48: 8d 91 ld r24, X+ - e4a: 9c 91 ld r25, X - e4c: 13 97 sbiw r26, 0x03 ; 3 - e4e: 93 83 std Z+3, r25 ; 0x03 - e50: 82 83 std Z+2, r24 ; 0x02 - e52: a0 e0 ldi r26, 0x00 ; 0 - e54: b0 e0 ldi r27, 0x00 ; 0 - e56: 02 c0 rjmp .+4 ; 0xe5c - e58: d7 01 movw r26, r14 - e5a: 7c 01 movw r14, r24 - e5c: f7 01 movw r30, r14 - e5e: 82 81 ldd r24, Z+2 ; 0x02 - e60: 93 81 ldd r25, Z+3 ; 0x03 - e62: 00 97 sbiw r24, 0x00 ; 0 - e64: c9 f7 brne .-14 ; 0xe58 - e66: c7 01 movw r24, r14 - e68: 02 96 adiw r24, 0x02 ; 2 - e6a: 20 81 ld r18, Z - e6c: 31 81 ldd r19, Z+1 ; 0x01 - e6e: 82 0f add r24, r18 - e70: 93 1f adc r25, r19 - e72: 20 91 40 01 lds r18, 0x0140 - e76: 30 91 41 01 lds r19, 0x0141 - e7a: 28 17 cp r18, r24 - e7c: 39 07 cpc r19, r25 - e7e: 79 f4 brne .+30 ; 0xe9e - e80: 10 97 sbiw r26, 0x00 ; 0 - e82: 29 f4 brne .+10 ; 0xe8e - e84: 10 92 43 01 sts 0x0143, r1 - e88: 10 92 42 01 sts 0x0142, r1 - e8c: 04 c0 rjmp .+8 ; 0xe96 - e8e: 13 96 adiw r26, 0x03 ; 3 - e90: 1c 92 st X, r1 - e92: 1e 92 st -X, r1 - e94: 12 97 sbiw r26, 0x02 ; 2 - e96: f0 92 41 01 sts 0x0141, r15 - e9a: e0 92 40 01 sts 0x0140, r14 - e9e: cd b7 in r28, 0x3d ; 61 - ea0: de b7 in r29, 0x3e ; 62 - ea2: e6 e0 ldi r30, 0x06 ; 6 - ea4: 0c 94 6a 07 jmp 0xed4 ; 0xed4 <__epilogue_restores__+0x18> +00000e5a : + e5a: ac e0 ldi r26, 0x0C ; 12 + e5c: b0 e0 ldi r27, 0x00 ; 0 + e5e: e3 e3 ldi r30, 0x33 ; 51 + e60: f7 e0 ldi r31, 0x07 ; 7 + e62: 0c 94 b6 09 jmp 0x136c ; 0x136c <__prologue_saves__> + e66: 7c 01 movw r14, r24 + e68: 6b 01 movw r12, r22 + e6a: 8a 01 movw r16, r20 + e6c: fc 01 movw r30, r24 + e6e: 17 82 std Z+7, r1 ; 0x07 + e70: 16 82 std Z+6, r1 ; 0x06 + e72: 83 81 ldd r24, Z+3 ; 0x03 + e74: 81 ff sbrs r24, 1 + e76: c8 c1 rjmp .+912 ; 0x1208 + e78: 88 24 eor r8, r8 + e7a: 83 94 inc r8 + e7c: 91 2c mov r9, r1 + e7e: 8c 0e add r8, r28 + e80: 9d 1e adc r9, r29 + e82: f7 01 movw r30, r14 + e84: 93 81 ldd r25, Z+3 ; 0x03 + e86: f6 01 movw r30, r12 + e88: 93 fd sbrc r25, 3 + e8a: 85 91 lpm r24, Z+ + e8c: 93 ff sbrs r25, 3 + e8e: 81 91 ld r24, Z+ + e90: 6f 01 movw r12, r30 + e92: 88 23 and r24, r24 + e94: 09 f4 brne .+2 ; 0xe98 + e96: b4 c1 rjmp .+872 ; 0x1200 + e98: 85 32 cpi r24, 0x25 ; 37 + e9a: 39 f4 brne .+14 ; 0xeaa + e9c: 93 fd sbrc r25, 3 + e9e: 85 91 lpm r24, Z+ + ea0: 93 ff sbrs r25, 3 + ea2: 81 91 ld r24, Z+ + ea4: 6f 01 movw r12, r30 + ea6: 85 32 cpi r24, 0x25 ; 37 + ea8: 29 f4 brne .+10 ; 0xeb4 + eaa: b7 01 movw r22, r14 + eac: 90 e0 ldi r25, 0x00 ; 0 + eae: 0e 94 21 09 call 0x1242 ; 0x1242 + eb2: e7 cf rjmp .-50 ; 0xe82 + eb4: 51 2c mov r5, r1 + eb6: 31 2c mov r3, r1 + eb8: 20 e0 ldi r18, 0x00 ; 0 + eba: 20 32 cpi r18, 0x20 ; 32 + ebc: a8 f4 brcc .+42 ; 0xee8 + ebe: 8b 32 cpi r24, 0x2B ; 43 + ec0: 61 f0 breq .+24 ; 0xeda + ec2: 28 f4 brcc .+10 ; 0xece + ec4: 80 32 cpi r24, 0x20 ; 32 + ec6: 51 f0 breq .+20 ; 0xedc + ec8: 83 32 cpi r24, 0x23 ; 35 + eca: 71 f4 brne .+28 ; 0xee8 + ecc: 0b c0 rjmp .+22 ; 0xee4 + ece: 8d 32 cpi r24, 0x2D ; 45 + ed0: 39 f0 breq .+14 ; 0xee0 + ed2: 80 33 cpi r24, 0x30 ; 48 + ed4: 49 f4 brne .+18 ; 0xee8 + ed6: 21 60 ori r18, 0x01 ; 1 + ed8: 2a c0 rjmp .+84 ; 0xf2e + eda: 22 60 ori r18, 0x02 ; 2 + edc: 24 60 ori r18, 0x04 ; 4 + ede: 27 c0 rjmp .+78 ; 0xf2e + ee0: 28 60 ori r18, 0x08 ; 8 + ee2: 25 c0 rjmp .+74 ; 0xf2e + ee4: 20 61 ori r18, 0x10 ; 16 + ee6: 23 c0 rjmp .+70 ; 0xf2e + ee8: 27 fd sbrc r18, 7 + eea: 29 c0 rjmp .+82 ; 0xf3e + eec: 38 2f mov r19, r24 + eee: 30 53 subi r19, 0x30 ; 48 + ef0: 3a 30 cpi r19, 0x0A ; 10 + ef2: 88 f4 brcc .+34 ; 0xf16 + ef4: 26 ff sbrs r18, 6 + ef6: 07 c0 rjmp .+14 ; 0xf06 + ef8: 85 2d mov r24, r5 + efa: 6a e0 ldi r22, 0x0A ; 10 + efc: 0e 94 ad 09 call 0x135a ; 0x135a <__mulqi3> + f00: 58 2e mov r5, r24 + f02: 53 0e add r5, r19 + f04: 14 c0 rjmp .+40 ; 0xf2e + f06: 83 2d mov r24, r3 + f08: 6a e0 ldi r22, 0x0A ; 10 + f0a: 0e 94 ad 09 call 0x135a ; 0x135a <__mulqi3> + f0e: 38 2e mov r3, r24 + f10: 33 0e add r3, r19 + f12: 20 62 ori r18, 0x20 ; 32 + f14: 0c c0 rjmp .+24 ; 0xf2e + f16: 8e 32 cpi r24, 0x2E ; 46 + f18: 21 f4 brne .+8 ; 0xf22 + f1a: 26 fd sbrc r18, 6 + f1c: 71 c1 rjmp .+738 ; 0x1200 + f1e: 20 64 ori r18, 0x40 ; 64 + f20: 06 c0 rjmp .+12 ; 0xf2e + f22: 8c 36 cpi r24, 0x6C ; 108 + f24: 11 f4 brne .+4 ; 0xf2a + f26: 20 68 ori r18, 0x80 ; 128 + f28: 02 c0 rjmp .+4 ; 0xf2e + f2a: 88 36 cpi r24, 0x68 ; 104 + f2c: 41 f4 brne .+16 ; 0xf3e + f2e: f6 01 movw r30, r12 + f30: 93 fd sbrc r25, 3 + f32: 85 91 lpm r24, Z+ + f34: 93 ff sbrs r25, 3 + f36: 81 91 ld r24, Z+ + f38: 6f 01 movw r12, r30 + f3a: 81 11 cpse r24, r1 + f3c: be cf rjmp .-132 ; 0xeba + f3e: 98 2f mov r25, r24 + f40: 95 54 subi r25, 0x45 ; 69 + f42: 93 30 cpi r25, 0x03 ; 3 + f44: 18 f0 brcs .+6 ; 0xf4c + f46: 90 52 subi r25, 0x20 ; 32 + f48: 93 30 cpi r25, 0x03 ; 3 + f4a: 28 f4 brcc .+10 ; 0xf56 + f4c: 0c 5f subi r16, 0xFC ; 252 + f4e: 1f 4f sbci r17, 0xFF ; 255 + f50: ff e3 ldi r31, 0x3F ; 63 + f52: f9 83 std Y+1, r31 ; 0x01 + f54: 0d c0 rjmp .+26 ; 0xf70 + f56: 83 36 cpi r24, 0x63 ; 99 + f58: 31 f0 breq .+12 ; 0xf66 + f5a: 83 37 cpi r24, 0x73 ; 115 + f5c: 71 f0 breq .+28 ; 0xf7a + f5e: 83 35 cpi r24, 0x53 ; 83 + f60: 09 f0 breq .+2 ; 0xf64 + f62: 5e c0 rjmp .+188 ; 0x1020 + f64: 23 c0 rjmp .+70 ; 0xfac + f66: f8 01 movw r30, r16 + f68: 80 81 ld r24, Z + f6a: 89 83 std Y+1, r24 ; 0x01 + f6c: 0e 5f subi r16, 0xFE ; 254 + f6e: 1f 4f sbci r17, 0xFF ; 255 + f70: 44 24 eor r4, r4 + f72: 43 94 inc r4 + f74: 51 2c mov r5, r1 + f76: 54 01 movw r10, r8 + f78: 15 c0 rjmp .+42 ; 0xfa4 + f7a: 38 01 movw r6, r16 + f7c: f2 e0 ldi r31, 0x02 ; 2 + f7e: 6f 0e add r6, r31 + f80: 71 1c adc r7, r1 + f82: f8 01 movw r30, r16 + f84: a0 80 ld r10, Z + f86: b1 80 ldd r11, Z+1 ; 0x01 + f88: 26 ff sbrs r18, 6 + f8a: 03 c0 rjmp .+6 ; 0xf92 + f8c: 65 2d mov r22, r5 + f8e: 70 e0 ldi r23, 0x00 ; 0 + f90: 02 c0 rjmp .+4 ; 0xf96 + f92: 6f ef ldi r22, 0xFF ; 255 + f94: 7f ef ldi r23, 0xFF ; 255 + f96: c5 01 movw r24, r10 + f98: 2c 87 std Y+12, r18 ; 0x0c + f9a: 0e 94 16 09 call 0x122c ; 0x122c + f9e: 2c 01 movw r4, r24 + fa0: 83 01 movw r16, r6 + fa2: 2c 85 ldd r18, Y+12 ; 0x0c + fa4: 6f e7 ldi r22, 0x7F ; 127 + fa6: 26 2e mov r2, r22 + fa8: 22 22 and r2, r18 + faa: 18 c0 rjmp .+48 ; 0xfdc + fac: 38 01 movw r6, r16 + fae: f2 e0 ldi r31, 0x02 ; 2 + fb0: 6f 0e add r6, r31 + fb2: 71 1c adc r7, r1 + fb4: f8 01 movw r30, r16 + fb6: a0 80 ld r10, Z + fb8: b1 80 ldd r11, Z+1 ; 0x01 + fba: 26 ff sbrs r18, 6 + fbc: 03 c0 rjmp .+6 ; 0xfc4 + fbe: 65 2d mov r22, r5 + fc0: 70 e0 ldi r23, 0x00 ; 0 + fc2: 02 c0 rjmp .+4 ; 0xfc8 + fc4: 6f ef ldi r22, 0xFF ; 255 + fc6: 7f ef ldi r23, 0xFF ; 255 + fc8: c5 01 movw r24, r10 + fca: 2c 87 std Y+12, r18 ; 0x0c + fcc: 0e 94 0b 09 call 0x1216 ; 0x1216 + fd0: 2c 01 movw r4, r24 + fd2: 2c 85 ldd r18, Y+12 ; 0x0c + fd4: 50 e8 ldi r21, 0x80 ; 128 + fd6: 25 2e mov r2, r21 + fd8: 22 2a or r2, r18 + fda: 83 01 movw r16, r6 + fdc: 23 fc sbrc r2, 3 + fde: 1c c0 rjmp .+56 ; 0x1018 + fe0: 06 c0 rjmp .+12 ; 0xfee + fe2: b7 01 movw r22, r14 + fe4: 80 e2 ldi r24, 0x20 ; 32 + fe6: 90 e0 ldi r25, 0x00 ; 0 + fe8: 0e 94 21 09 call 0x1242 ; 0x1242 + fec: 3a 94 dec r3 + fee: 83 2d mov r24, r3 + ff0: 90 e0 ldi r25, 0x00 ; 0 + ff2: 48 16 cp r4, r24 + ff4: 59 06 cpc r5, r25 + ff6: a8 f3 brcs .-22 ; 0xfe2 + ff8: 0f c0 rjmp .+30 ; 0x1018 + ffa: f5 01 movw r30, r10 + ffc: 27 fc sbrc r2, 7 + ffe: 85 91 lpm r24, Z+ + 1000: 27 fe sbrs r2, 7 + 1002: 81 91 ld r24, Z+ + 1004: 5f 01 movw r10, r30 + 1006: b7 01 movw r22, r14 + 1008: 90 e0 ldi r25, 0x00 ; 0 + 100a: 0e 94 21 09 call 0x1242 ; 0x1242 + 100e: 31 10 cpse r3, r1 + 1010: 3a 94 dec r3 + 1012: f1 e0 ldi r31, 0x01 ; 1 + 1014: 4f 1a sub r4, r31 + 1016: 51 08 sbc r5, r1 + 1018: 41 14 cp r4, r1 + 101a: 51 04 cpc r5, r1 + 101c: 71 f7 brne .-36 ; 0xffa + 101e: ed c0 rjmp .+474 ; 0x11fa + 1020: 84 36 cpi r24, 0x64 ; 100 + 1022: 11 f0 breq .+4 ; 0x1028 + 1024: 89 36 cpi r24, 0x69 ; 105 + 1026: 41 f5 brne .+80 ; 0x1078 + 1028: f8 01 movw r30, r16 + 102a: 27 ff sbrs r18, 7 + 102c: 07 c0 rjmp .+14 ; 0x103c + 102e: 60 81 ld r22, Z + 1030: 71 81 ldd r23, Z+1 ; 0x01 + 1032: 82 81 ldd r24, Z+2 ; 0x02 + 1034: 93 81 ldd r25, Z+3 ; 0x03 + 1036: 0c 5f subi r16, 0xFC ; 252 + 1038: 1f 4f sbci r17, 0xFF ; 255 + 103a: 08 c0 rjmp .+16 ; 0x104c + 103c: 60 81 ld r22, Z + 103e: 71 81 ldd r23, Z+1 ; 0x01 + 1040: 88 27 eor r24, r24 + 1042: 77 fd sbrc r23, 7 + 1044: 80 95 com r24 + 1046: 98 2f mov r25, r24 + 1048: 0e 5f subi r16, 0xFE ; 254 + 104a: 1f 4f sbci r17, 0xFF ; 255 + 104c: 4f e6 ldi r20, 0x6F ; 111 + 104e: b4 2e mov r11, r20 + 1050: b2 22 and r11, r18 + 1052: 97 ff sbrs r25, 7 + 1054: 09 c0 rjmp .+18 ; 0x1068 + 1056: 90 95 com r25 + 1058: 80 95 com r24 + 105a: 70 95 com r23 + 105c: 61 95 neg r22 + 105e: 7f 4f sbci r23, 0xFF ; 255 + 1060: 8f 4f sbci r24, 0xFF ; 255 + 1062: 9f 4f sbci r25, 0xFF ; 255 + 1064: f0 e8 ldi r31, 0x80 ; 128 + 1066: bf 2a or r11, r31 + 1068: 2a e0 ldi r18, 0x0A ; 10 + 106a: 30 e0 ldi r19, 0x00 ; 0 + 106c: a4 01 movw r20, r8 + 106e: 0e 94 4d 09 call 0x129a ; 0x129a <__ultoa_invert> + 1072: a8 2e mov r10, r24 + 1074: a8 18 sub r10, r8 + 1076: 43 c0 rjmp .+134 ; 0x10fe + 1078: 85 37 cpi r24, 0x75 ; 117 + 107a: 31 f4 brne .+12 ; 0x1088 + 107c: 3f ee ldi r19, 0xEF ; 239 + 107e: b3 2e mov r11, r19 + 1080: b2 22 and r11, r18 + 1082: 2a e0 ldi r18, 0x0A ; 10 + 1084: 30 e0 ldi r19, 0x00 ; 0 + 1086: 24 c0 rjmp .+72 ; 0x10d0 + 1088: 99 ef ldi r25, 0xF9 ; 249 + 108a: b9 2e mov r11, r25 + 108c: b2 22 and r11, r18 + 108e: 8f 36 cpi r24, 0x6F ; 111 + 1090: b9 f0 breq .+46 ; 0x10c0 + 1092: 20 f4 brcc .+8 ; 0x109c + 1094: 88 35 cpi r24, 0x58 ; 88 + 1096: 09 f0 breq .+2 ; 0x109a + 1098: b3 c0 rjmp .+358 ; 0x1200 + 109a: 0d c0 rjmp .+26 ; 0x10b6 + 109c: 80 37 cpi r24, 0x70 ; 112 + 109e: 21 f0 breq .+8 ; 0x10a8 + 10a0: 88 37 cpi r24, 0x78 ; 120 + 10a2: 09 f0 breq .+2 ; 0x10a6 + 10a4: ad c0 rjmp .+346 ; 0x1200 + 10a6: 02 c0 rjmp .+4 ; 0x10ac + 10a8: 20 e1 ldi r18, 0x10 ; 16 + 10aa: b2 2a or r11, r18 + 10ac: b4 fe sbrs r11, 4 + 10ae: 0b c0 rjmp .+22 ; 0x10c6 + 10b0: 84 e0 ldi r24, 0x04 ; 4 + 10b2: b8 2a or r11, r24 + 10b4: 08 c0 rjmp .+16 ; 0x10c6 + 10b6: 24 ff sbrs r18, 4 + 10b8: 09 c0 rjmp .+18 ; 0x10cc + 10ba: e6 e0 ldi r30, 0x06 ; 6 + 10bc: be 2a or r11, r30 + 10be: 06 c0 rjmp .+12 ; 0x10cc + 10c0: 28 e0 ldi r18, 0x08 ; 8 + 10c2: 30 e0 ldi r19, 0x00 ; 0 + 10c4: 05 c0 rjmp .+10 ; 0x10d0 + 10c6: 20 e1 ldi r18, 0x10 ; 16 + 10c8: 30 e0 ldi r19, 0x00 ; 0 + 10ca: 02 c0 rjmp .+4 ; 0x10d0 + 10cc: 20 e1 ldi r18, 0x10 ; 16 + 10ce: 32 e0 ldi r19, 0x02 ; 2 + 10d0: f8 01 movw r30, r16 + 10d2: b7 fe sbrs r11, 7 + 10d4: 07 c0 rjmp .+14 ; 0x10e4 + 10d6: 60 81 ld r22, Z + 10d8: 71 81 ldd r23, Z+1 ; 0x01 + 10da: 82 81 ldd r24, Z+2 ; 0x02 + 10dc: 93 81 ldd r25, Z+3 ; 0x03 + 10de: 0c 5f subi r16, 0xFC ; 252 + 10e0: 1f 4f sbci r17, 0xFF ; 255 + 10e2: 06 c0 rjmp .+12 ; 0x10f0 + 10e4: 60 81 ld r22, Z + 10e6: 71 81 ldd r23, Z+1 ; 0x01 + 10e8: 80 e0 ldi r24, 0x00 ; 0 + 10ea: 90 e0 ldi r25, 0x00 ; 0 + 10ec: 0e 5f subi r16, 0xFE ; 254 + 10ee: 1f 4f sbci r17, 0xFF ; 255 + 10f0: a4 01 movw r20, r8 + 10f2: 0e 94 4d 09 call 0x129a ; 0x129a <__ultoa_invert> + 10f6: a8 2e mov r10, r24 + 10f8: a8 18 sub r10, r8 + 10fa: ff e7 ldi r31, 0x7F ; 127 + 10fc: bf 22 and r11, r31 + 10fe: b6 fe sbrs r11, 6 + 1100: 0b c0 rjmp .+22 ; 0x1118 + 1102: 2b 2d mov r18, r11 + 1104: 2e 7f andi r18, 0xFE ; 254 + 1106: a5 14 cp r10, r5 + 1108: 50 f4 brcc .+20 ; 0x111e + 110a: b4 fe sbrs r11, 4 + 110c: 0a c0 rjmp .+20 ; 0x1122 + 110e: b2 fc sbrc r11, 2 + 1110: 08 c0 rjmp .+16 ; 0x1122 + 1112: 2b 2d mov r18, r11 + 1114: 2e 7e andi r18, 0xEE ; 238 + 1116: 05 c0 rjmp .+10 ; 0x1122 + 1118: 7a 2c mov r7, r10 + 111a: 2b 2d mov r18, r11 + 111c: 03 c0 rjmp .+6 ; 0x1124 + 111e: 7a 2c mov r7, r10 + 1120: 01 c0 rjmp .+2 ; 0x1124 + 1122: 75 2c mov r7, r5 + 1124: 24 ff sbrs r18, 4 + 1126: 0d c0 rjmp .+26 ; 0x1142 + 1128: fe 01 movw r30, r28 + 112a: ea 0d add r30, r10 + 112c: f1 1d adc r31, r1 + 112e: 80 81 ld r24, Z + 1130: 80 33 cpi r24, 0x30 ; 48 + 1132: 11 f4 brne .+4 ; 0x1138 + 1134: 29 7e andi r18, 0xE9 ; 233 + 1136: 09 c0 rjmp .+18 ; 0x114a + 1138: 22 ff sbrs r18, 2 + 113a: 06 c0 rjmp .+12 ; 0x1148 + 113c: 73 94 inc r7 + 113e: 73 94 inc r7 + 1140: 04 c0 rjmp .+8 ; 0x114a + 1142: 82 2f mov r24, r18 + 1144: 86 78 andi r24, 0x86 ; 134 + 1146: 09 f0 breq .+2 ; 0x114a + 1148: 73 94 inc r7 + 114a: 23 fd sbrc r18, 3 + 114c: 14 c0 rjmp .+40 ; 0x1176 + 114e: 20 ff sbrs r18, 0 + 1150: 0f c0 rjmp .+30 ; 0x1170 + 1152: 5a 2c mov r5, r10 + 1154: 73 14 cp r7, r3 + 1156: 60 f4 brcc .+24 ; 0x1170 + 1158: 53 0c add r5, r3 + 115a: 57 18 sub r5, r7 + 115c: 73 2c mov r7, r3 + 115e: 08 c0 rjmp .+16 ; 0x1170 + 1160: b7 01 movw r22, r14 + 1162: 80 e2 ldi r24, 0x20 ; 32 + 1164: 90 e0 ldi r25, 0x00 ; 0 + 1166: 2c 87 std Y+12, r18 ; 0x0c + 1168: 0e 94 21 09 call 0x1242 ; 0x1242 + 116c: 73 94 inc r7 + 116e: 2c 85 ldd r18, Y+12 ; 0x0c + 1170: 73 14 cp r7, r3 + 1172: b0 f3 brcs .-20 ; 0x1160 + 1174: 04 c0 rjmp .+8 ; 0x117e + 1176: 73 14 cp r7, r3 + 1178: 10 f4 brcc .+4 ; 0x117e + 117a: 37 18 sub r3, r7 + 117c: 01 c0 rjmp .+2 ; 0x1180 + 117e: 31 2c mov r3, r1 + 1180: 24 ff sbrs r18, 4 + 1182: 12 c0 rjmp .+36 ; 0x11a8 + 1184: b7 01 movw r22, r14 + 1186: 80 e3 ldi r24, 0x30 ; 48 + 1188: 90 e0 ldi r25, 0x00 ; 0 + 118a: 2c 87 std Y+12, r18 ; 0x0c + 118c: 0e 94 21 09 call 0x1242 ; 0x1242 + 1190: 2c 85 ldd r18, Y+12 ; 0x0c + 1192: 22 ff sbrs r18, 2 + 1194: 1e c0 rjmp .+60 ; 0x11d2 + 1196: 21 ff sbrs r18, 1 + 1198: 03 c0 rjmp .+6 ; 0x11a0 + 119a: 88 e5 ldi r24, 0x58 ; 88 + 119c: 90 e0 ldi r25, 0x00 ; 0 + 119e: 02 c0 rjmp .+4 ; 0x11a4 + 11a0: 88 e7 ldi r24, 0x78 ; 120 + 11a2: 90 e0 ldi r25, 0x00 ; 0 + 11a4: b7 01 movw r22, r14 + 11a6: 0c c0 rjmp .+24 ; 0x11c0 + 11a8: 82 2f mov r24, r18 + 11aa: 86 78 andi r24, 0x86 ; 134 + 11ac: 91 f0 breq .+36 ; 0x11d2 + 11ae: 21 fd sbrc r18, 1 + 11b0: 02 c0 rjmp .+4 ; 0x11b6 + 11b2: 80 e2 ldi r24, 0x20 ; 32 + 11b4: 01 c0 rjmp .+2 ; 0x11b8 + 11b6: 8b e2 ldi r24, 0x2B ; 43 + 11b8: 27 fd sbrc r18, 7 + 11ba: 8d e2 ldi r24, 0x2D ; 45 + 11bc: b7 01 movw r22, r14 + 11be: 90 e0 ldi r25, 0x00 ; 0 + 11c0: 0e 94 21 09 call 0x1242 ; 0x1242 + 11c4: 06 c0 rjmp .+12 ; 0x11d2 + 11c6: b7 01 movw r22, r14 + 11c8: 80 e3 ldi r24, 0x30 ; 48 + 11ca: 90 e0 ldi r25, 0x00 ; 0 + 11cc: 0e 94 21 09 call 0x1242 ; 0x1242 + 11d0: 5a 94 dec r5 + 11d2: a5 14 cp r10, r5 + 11d4: c0 f3 brcs .-16 ; 0x11c6 + 11d6: aa 94 dec r10 + 11d8: f4 01 movw r30, r8 + 11da: ea 0d add r30, r10 + 11dc: f1 1d adc r31, r1 + 11de: b7 01 movw r22, r14 + 11e0: 80 81 ld r24, Z + 11e2: 90 e0 ldi r25, 0x00 ; 0 + 11e4: 0e 94 21 09 call 0x1242 ; 0x1242 + 11e8: a1 10 cpse r10, r1 + 11ea: f5 cf rjmp .-22 ; 0x11d6 + 11ec: 06 c0 rjmp .+12 ; 0x11fa + 11ee: b7 01 movw r22, r14 + 11f0: 80 e2 ldi r24, 0x20 ; 32 + 11f2: 90 e0 ldi r25, 0x00 ; 0 + 11f4: 0e 94 21 09 call 0x1242 ; 0x1242 + 11f8: 3a 94 dec r3 + 11fa: 31 10 cpse r3, r1 + 11fc: f8 cf rjmp .-16 ; 0x11ee + 11fe: 41 ce rjmp .-894 ; 0xe82 + 1200: f7 01 movw r30, r14 + 1202: 26 81 ldd r18, Z+6 ; 0x06 + 1204: 37 81 ldd r19, Z+7 ; 0x07 + 1206: 02 c0 rjmp .+4 ; 0x120c + 1208: 2f ef ldi r18, 0xFF ; 255 + 120a: 3f ef ldi r19, 0xFF ; 255 + 120c: c9 01 movw r24, r18 + 120e: 2c 96 adiw r28, 0x0c ; 12 + 1210: e2 e1 ldi r30, 0x12 ; 18 + 1212: 0c 94 d2 09 jmp 0x13a4 ; 0x13a4 <__epilogue_restores__> -00000ea8 : - ea8: dc 01 movw r26, r24 - eaa: 6c 91 ld r22, X - eac: 61 56 subi r22, 0x61 ; 97 - eae: 6a 31 cpi r22, 0x1A ; 26 - eb0: 08 f0 brcs .+2 ; 0xeb4 - eb2: 60 5e subi r22, 0xE0 ; 224 - eb4: 6f 5b subi r22, 0xBF ; 191 - eb6: 6d 93 st X+, r22 - eb8: c1 f7 brne .-16 ; 0xeaa - eba: 08 95 ret +00001216 : + 1216: fc 01 movw r30, r24 + 1218: 05 90 lpm r0, Z+ + 121a: 61 50 subi r22, 0x01 ; 1 + 121c: 70 40 sbci r23, 0x00 ; 0 + 121e: 01 10 cpse r0, r1 + 1220: d8 f7 brcc .-10 ; 0x1218 + 1222: 80 95 com r24 + 1224: 90 95 com r25 + 1226: 8e 0f add r24, r30 + 1228: 9f 1f adc r25, r31 + 122a: 08 95 ret -00000ebc <__epilogue_restores__>: - ebc: 2a 88 ldd r2, Y+18 ; 0x12 - ebe: 39 88 ldd r3, Y+17 ; 0x11 - ec0: 48 88 ldd r4, Y+16 ; 0x10 - ec2: 5f 84 ldd r5, Y+15 ; 0x0f - ec4: 6e 84 ldd r6, Y+14 ; 0x0e - ec6: 7d 84 ldd r7, Y+13 ; 0x0d - ec8: 8c 84 ldd r8, Y+12 ; 0x0c - eca: 9b 84 ldd r9, Y+11 ; 0x0b - ecc: aa 84 ldd r10, Y+10 ; 0x0a - ece: b9 84 ldd r11, Y+9 ; 0x09 - ed0: c8 84 ldd r12, Y+8 ; 0x08 - ed2: df 80 ldd r13, Y+7 ; 0x07 - ed4: ee 80 ldd r14, Y+6 ; 0x06 - ed6: fd 80 ldd r15, Y+5 ; 0x05 - ed8: 0c 81 ldd r16, Y+4 ; 0x04 - eda: 1b 81 ldd r17, Y+3 ; 0x03 - edc: aa 81 ldd r26, Y+2 ; 0x02 - ede: b9 81 ldd r27, Y+1 ; 0x01 - ee0: ce 0f add r28, r30 - ee2: d1 1d adc r29, r1 - ee4: 0f b6 in r0, 0x3f ; 63 - ee6: f8 94 cli - ee8: de bf out 0x3e, r29 ; 62 - eea: 0f be out 0x3f, r0 ; 63 - eec: cd bf out 0x3d, r28 ; 61 - eee: ed 01 movw r28, r26 - ef0: 08 95 ret +0000122c : + 122c: fc 01 movw r30, r24 + 122e: 61 50 subi r22, 0x01 ; 1 + 1230: 70 40 sbci r23, 0x00 ; 0 + 1232: 01 90 ld r0, Z+ + 1234: 01 10 cpse r0, r1 + 1236: d8 f7 brcc .-10 ; 0x122e + 1238: 80 95 com r24 + 123a: 90 95 com r25 + 123c: 8e 0f add r24, r30 + 123e: 9f 1f adc r25, r31 + 1240: 08 95 ret -00000ef2 <_exit>: - ef2: f8 94 cli +00001242 : + 1242: 0f 93 push r16 + 1244: 1f 93 push r17 + 1246: cf 93 push r28 + 1248: df 93 push r29 + 124a: 8c 01 movw r16, r24 + 124c: eb 01 movw r28, r22 + 124e: 8b 81 ldd r24, Y+3 ; 0x03 + 1250: 81 fd sbrc r24, 1 + 1252: 03 c0 rjmp .+6 ; 0x125a + 1254: 0f ef ldi r16, 0xFF ; 255 + 1256: 1f ef ldi r17, 0xFF ; 255 + 1258: 1a c0 rjmp .+52 ; 0x128e + 125a: 82 ff sbrs r24, 2 + 125c: 0d c0 rjmp .+26 ; 0x1278 + 125e: 2e 81 ldd r18, Y+6 ; 0x06 + 1260: 3f 81 ldd r19, Y+7 ; 0x07 + 1262: 8c 81 ldd r24, Y+4 ; 0x04 + 1264: 9d 81 ldd r25, Y+5 ; 0x05 + 1266: 28 17 cp r18, r24 + 1268: 39 07 cpc r19, r25 + 126a: 64 f4 brge .+24 ; 0x1284 + 126c: e8 81 ld r30, Y + 126e: f9 81 ldd r31, Y+1 ; 0x01 + 1270: 01 93 st Z+, r16 + 1272: f9 83 std Y+1, r31 ; 0x01 + 1274: e8 83 st Y, r30 + 1276: 06 c0 rjmp .+12 ; 0x1284 + 1278: e8 85 ldd r30, Y+8 ; 0x08 + 127a: f9 85 ldd r31, Y+9 ; 0x09 + 127c: 80 2f mov r24, r16 + 127e: 09 95 icall + 1280: 89 2b or r24, r25 + 1282: 41 f7 brne .-48 ; 0x1254 + 1284: 8e 81 ldd r24, Y+6 ; 0x06 + 1286: 9f 81 ldd r25, Y+7 ; 0x07 + 1288: 01 96 adiw r24, 0x01 ; 1 + 128a: 9f 83 std Y+7, r25 ; 0x07 + 128c: 8e 83 std Y+6, r24 ; 0x06 + 128e: c8 01 movw r24, r16 + 1290: df 91 pop r29 + 1292: cf 91 pop r28 + 1294: 1f 91 pop r17 + 1296: 0f 91 pop r16 + 1298: 08 95 ret -00000ef4 <__stop_program>: - ef4: ff cf rjmp .-2 ; 0xef4 <__stop_program> +0000129a <__ultoa_invert>: + 129a: fa 01 movw r30, r20 + 129c: aa 27 eor r26, r26 + 129e: 28 30 cpi r18, 0x08 ; 8 + 12a0: 61 f1 breq .+88 ; 0x12fa <__ultoa_invert+0x60> + 12a2: 20 31 cpi r18, 0x10 ; 16 + 12a4: 91 f1 breq .+100 ; 0x130a <__ultoa_invert+0x70> + 12a6: e8 94 clt + 12a8: 6f 93 push r22 + 12aa: 6e 7f andi r22, 0xFE ; 254 + 12ac: 6e 5f subi r22, 0xFE ; 254 + 12ae: 7f 4f sbci r23, 0xFF ; 255 + 12b0: 8f 4f sbci r24, 0xFF ; 255 + 12b2: 9f 4f sbci r25, 0xFF ; 255 + 12b4: af 4f sbci r26, 0xFF ; 255 + 12b6: b1 e0 ldi r27, 0x01 ; 1 + 12b8: 40 d0 rcall .+128 ; 0x133a <__ultoa_invert+0xa0> + 12ba: b4 e0 ldi r27, 0x04 ; 4 + 12bc: 3e d0 rcall .+124 ; 0x133a <__ultoa_invert+0xa0> + 12be: 67 0f add r22, r23 + 12c0: 78 1f adc r23, r24 + 12c2: 89 1f adc r24, r25 + 12c4: 9a 1f adc r25, r26 + 12c6: a1 1d adc r26, r1 + 12c8: 68 0f add r22, r24 + 12ca: 79 1f adc r23, r25 + 12cc: 8a 1f adc r24, r26 + 12ce: 91 1d adc r25, r1 + 12d0: a1 1d adc r26, r1 + 12d2: 6a 0f add r22, r26 + 12d4: 71 1d adc r23, r1 + 12d6: 81 1d adc r24, r1 + 12d8: 91 1d adc r25, r1 + 12da: a1 1d adc r26, r1 + 12dc: 22 d0 rcall .+68 ; 0x1322 <__ultoa_invert+0x88> + 12de: 09 f4 brne .+2 ; 0x12e2 <__ultoa_invert+0x48> + 12e0: 68 94 set + 12e2: 3f 91 pop r19 + 12e4: 06 2e mov r0, r22 + 12e6: 00 0c add r0, r0 + 12e8: 30 19 sub r19, r0 + 12ea: 00 0c add r0, r0 + 12ec: 00 0c add r0, r0 + 12ee: 30 19 sub r19, r0 + 12f0: 30 5d subi r19, 0xD0 ; 208 + 12f2: 31 93 st Z+, r19 + 12f4: ce f6 brtc .-78 ; 0x12a8 <__ultoa_invert+0xe> + 12f6: cf 01 movw r24, r30 + 12f8: 08 95 ret + 12fa: 46 2f mov r20, r22 + 12fc: 47 70 andi r20, 0x07 ; 7 + 12fe: 40 5d subi r20, 0xD0 ; 208 + 1300: 41 93 st Z+, r20 + 1302: b3 e0 ldi r27, 0x03 ; 3 + 1304: 0f d0 rcall .+30 ; 0x1324 <__ultoa_invert+0x8a> + 1306: c9 f7 brne .-14 ; 0x12fa <__ultoa_invert+0x60> + 1308: f6 cf rjmp .-20 ; 0x12f6 <__ultoa_invert+0x5c> + 130a: 46 2f mov r20, r22 + 130c: 4f 70 andi r20, 0x0F ; 15 + 130e: 40 5d subi r20, 0xD0 ; 208 + 1310: 4a 33 cpi r20, 0x3A ; 58 + 1312: 18 f0 brcs .+6 ; 0x131a <__ultoa_invert+0x80> + 1314: 49 5d subi r20, 0xD9 ; 217 + 1316: 31 fd sbrc r19, 1 + 1318: 40 52 subi r20, 0x20 ; 32 + 131a: 41 93 st Z+, r20 + 131c: 02 d0 rcall .+4 ; 0x1322 <__ultoa_invert+0x88> + 131e: a9 f7 brne .-22 ; 0x130a <__ultoa_invert+0x70> + 1320: ea cf rjmp .-44 ; 0x12f6 <__ultoa_invert+0x5c> + 1322: b4 e0 ldi r27, 0x04 ; 4 + 1324: a6 95 lsr r26 + 1326: 97 95 ror r25 + 1328: 87 95 ror r24 + 132a: 77 95 ror r23 + 132c: 67 95 ror r22 + 132e: ba 95 dec r27 + 1330: c9 f7 brne .-14 ; 0x1324 <__ultoa_invert+0x8a> + 1332: 00 97 sbiw r24, 0x00 ; 0 + 1334: 61 05 cpc r22, r1 + 1336: 71 05 cpc r23, r1 + 1338: 08 95 ret + 133a: 9b 01 movw r18, r22 + 133c: ac 01 movw r20, r24 + 133e: 0a 2e mov r0, r26 + 1340: 06 94 lsr r0 + 1342: 57 95 ror r21 + 1344: 47 95 ror r20 + 1346: 37 95 ror r19 + 1348: 27 95 ror r18 + 134a: ba 95 dec r27 + 134c: c9 f7 brne .-14 ; 0x1340 <__ultoa_invert+0xa6> + 134e: 62 0f add r22, r18 + 1350: 73 1f adc r23, r19 + 1352: 84 1f adc r24, r20 + 1354: 95 1f adc r25, r21 + 1356: a0 1d adc r26, r0 + 1358: 08 95 ret + +0000135a <__mulqi3>: + 135a: 00 24 eor r0, r0 + +0000135c <__mulqi3_loop>: + 135c: 80 fd sbrc r24, 0 + 135e: 06 0e add r0, r22 + 1360: 66 0f add r22, r22 + 1362: 11 f0 breq .+4 ; 0x1368 <__mulqi3_exit> + 1364: 86 95 lsr r24 + 1366: d1 f7 brne .-12 ; 0x135c <__mulqi3_loop> + +00001368 <__mulqi3_exit>: + 1368: 80 2d mov r24, r0 + 136a: 08 95 ret + +0000136c <__prologue_saves__>: + 136c: 2f 92 push r2 + 136e: 3f 92 push r3 + 1370: 4f 92 push r4 + 1372: 5f 92 push r5 + 1374: 6f 92 push r6 + 1376: 7f 92 push r7 + 1378: 8f 92 push r8 + 137a: 9f 92 push r9 + 137c: af 92 push r10 + 137e: bf 92 push r11 + 1380: cf 92 push r12 + 1382: df 92 push r13 + 1384: ef 92 push r14 + 1386: ff 92 push r15 + 1388: 0f 93 push r16 + 138a: 1f 93 push r17 + 138c: cf 93 push r28 + 138e: df 93 push r29 + 1390: cd b7 in r28, 0x3d ; 61 + 1392: de b7 in r29, 0x3e ; 62 + 1394: ca 1b sub r28, r26 + 1396: db 0b sbc r29, r27 + 1398: 0f b6 in r0, 0x3f ; 63 + 139a: f8 94 cli + 139c: de bf out 0x3e, r29 ; 62 + 139e: 0f be out 0x3f, r0 ; 63 + 13a0: cd bf out 0x3d, r28 ; 61 + 13a2: 09 94 ijmp + +000013a4 <__epilogue_restores__>: + 13a4: 2a 88 ldd r2, Y+18 ; 0x12 + 13a6: 39 88 ldd r3, Y+17 ; 0x11 + 13a8: 48 88 ldd r4, Y+16 ; 0x10 + 13aa: 5f 84 ldd r5, Y+15 ; 0x0f + 13ac: 6e 84 ldd r6, Y+14 ; 0x0e + 13ae: 7d 84 ldd r7, Y+13 ; 0x0d + 13b0: 8c 84 ldd r8, Y+12 ; 0x0c + 13b2: 9b 84 ldd r9, Y+11 ; 0x0b + 13b4: aa 84 ldd r10, Y+10 ; 0x0a + 13b6: b9 84 ldd r11, Y+9 ; 0x09 + 13b8: c8 84 ldd r12, Y+8 ; 0x08 + 13ba: df 80 ldd r13, Y+7 ; 0x07 + 13bc: ee 80 ldd r14, Y+6 ; 0x06 + 13be: fd 80 ldd r15, Y+5 ; 0x05 + 13c0: 0c 81 ldd r16, Y+4 ; 0x04 + 13c2: 1b 81 ldd r17, Y+3 ; 0x03 + 13c4: aa 81 ldd r26, Y+2 ; 0x02 + 13c6: b9 81 ldd r27, Y+1 ; 0x01 + 13c8: ce 0f add r28, r30 + 13ca: d1 1d adc r29, r1 + 13cc: 0f b6 in r0, 0x3f ; 63 + 13ce: f8 94 cli + 13d0: de bf out 0x3e, r29 ; 62 + 13d2: 0f be out 0x3f, r0 ; 63 + 13d4: cd bf out 0x3d, r28 ; 61 + 13d6: ed 01 movw r28, r26 + 13d8: 08 95 ret + +000013da <_exit>: + 13da: f8 94 cli + +000013dc <__stop_program>: + 13dc: ff cf rjmp .-2 ; 0x13dc <__stop_program> diff --git a/Mainboard/Mainboard/Debug/Mainboard.map b/Mainboard/Mainboard/Debug/Mainboard.map index 7d5dd0a..c9738dc 100644 --- a/Mainboard/Mainboard/Debug/Mainboard.map +++ b/Mainboard/Mainboard/Debug/Mainboard.map @@ -1,11 +1,9 @@ Archive member included because of file (symbol) -c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) - usb_user.o (__mulhi3) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o (exit) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) - rs232.o (__do_copy_data) + Mainboard.o (__do_copy_data) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o) usb_user.o (__do_clear_bss) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) @@ -16,6 +14,8 @@ c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu- rs232.o (fprintf) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) rs232.o (__iob) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + Mainboard.o (snprintf) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) (vfprintf) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o) @@ -45,38 +45,23 @@ Discarded input sections .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o .text 0x00000000 0x0 led.o .bss 0x00000000 0x0 led.o + .text.fade 0x00000000 0xbe led.o + .text.led_rainbow + 0x00000000 0x74 led.o .text 0x00000000 0x0 Mainboard.o .bss 0x00000000 0x0 Mainboard.o + .text.resi 0x00000000 0x30 Mainboard.o .text 0x00000000 0x0 rs232.o .bss 0x00000000 0x0 rs232.o - .text.rs232_send - 0x00000000 0x1a rs232.o .text 0x00000000 0x0 usb.o .bss 0x00000000 0x0 usb.o - .text.usb_send - 0x00000000 0xc usb.o .text 0x00000000 0x0 usb_user.o - .text.usb_status - 0x00000000 0x1c usb_user.o .text.usb_configuration 0x00000000 0x6 usb_user.o - .text.usb_interface - 0x00000000 0x6 usb_user.o .text.usb_freebuffer 0x00000000 0x1e usb_user.o .text.usb_rxavail 0x00000000 0xa usb_user.o - .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) - .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) - .text.libgcc.div - 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) - .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) - .text.libgcc.prologue - 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) - .text.libgcc.builtins - 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) - .text.libgcc.fmul - 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) .text.libgcc.mul @@ -122,34 +107,22 @@ Discarded input sections .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strupr.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) - .text.avr-libc - 0x00000000 0x24 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) - .text.avr-libc - 0x00000000 0x3bc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o) - .text.avr-libc - 0x00000000 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen.o) - .text.avr-libc - 0x00000000 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) - .text.avr-libc - 0x00000000 0x58 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(ultoa_invert.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(ultoa_invert.o) - .text.avr-libc - 0x00000000 0xc0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(ultoa_invert.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o) - .text.libgcc.mul - 0x00000000 0x12 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o) .text.libgcc.div 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o) .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o) @@ -166,8 +139,6 @@ Discarded input sections .text.libgcc.div 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o) .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o) - .text.libgcc.prologue - 0x00000000 0x38 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o) .text.libgcc.builtins 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o) .text.libgcc.fmul @@ -302,7 +273,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .rela.plt *(.rela.plt) -.text 0x00000000 0xef6 +.text 0x00000000 0x13de *(.vectors) .vectors 0x00000000 0x74 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o 0x00000000 __vector_default @@ -310,41 +281,41 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.vectors) *(.progmem.gcc*) *(.progmem*) - .progmem.data 0x00000074 0x4e usb_user.o - 0x000000c2 . = ALIGN (0x2) - 0x000000c2 __trampolines_start = . + .progmem.data 0x00000074 0x5e usb_user.o + 0x000000d2 . = ALIGN (0x2) + 0x000000d2 __trampolines_start = . *(.trampolines) - .trampolines 0x000000c2 0x0 linker stubs + .trampolines 0x000000d2 0x0 linker stubs *(.trampolines*) - 0x000000c2 __trampolines_end = . + 0x000000d2 __trampolines_end = . *(.jumptables) *(.jumptables*) *(.lowtext) *(.lowtext*) - 0x000000c2 __ctors_start = . + 0x000000d2 __ctors_start = . *(.ctors) - 0x000000c2 __ctors_end = . - 0x000000c2 __dtors_start = . + 0x000000d2 __ctors_end = . + 0x000000d2 __dtors_start = . *(.dtors) - 0x000000c2 __dtors_end = . + 0x000000d2 __dtors_end = . SORT(*)(.ctors) SORT(*)(.dtors) *(.init0) - .init0 0x000000c2 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o - 0x000000c2 __init + .init0 0x000000d2 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o + 0x000000d2 __init *(.init0) *(.init1) *(.init1) *(.init2) - .init2 0x000000c2 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o + .init2 0x000000d2 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o *(.init2) *(.init3) *(.init3) *(.init4) - .init4 0x000000ce 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) - 0x000000ce __do_copy_data - .init4 0x000000e4 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o) - 0x000000e4 __do_clear_bss + .init4 0x000000de 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) + 0x000000de __do_copy_data + .init4 0x000000f4 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o) + 0x000000f4 __do_clear_bss *(.init4) *(.init5) *(.init5) @@ -355,112 +326,154 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.init8) *(.init8) *(.init9) - .init9 0x000000f4 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o + .init9 0x00000104 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o *(.init9) *(.text) - .text 0x000000fc 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o - 0x000000fc __vector_22 - 0x000000fc __vector_28 - 0x000000fc __vector_1 - 0x000000fc __vector_24 - 0x000000fc __bad_interrupt - 0x000000fc __vector_6 - 0x000000fc __vector_3 - 0x000000fc __vector_23 - 0x000000fc __vector_25 - 0x000000fc __vector_13 - 0x000000fc __vector_17 - 0x000000fc __vector_19 - 0x000000fc __vector_7 - 0x000000fc __vector_27 - 0x000000fc __vector_5 - 0x000000fc __vector_4 - 0x000000fc __vector_9 - 0x000000fc __vector_2 - 0x000000fc __vector_21 - 0x000000fc __vector_15 - 0x000000fc __vector_8 - 0x000000fc __vector_26 - 0x000000fc __vector_14 - 0x000000fc __vector_10 - 0x000000fc __vector_16 - 0x000000fc __vector_18 - 0x000000fc __vector_20 - 0x00000100 . = ALIGN (0x2) + .text 0x0000010c 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o + 0x0000010c __vector_22 + 0x0000010c __vector_28 + 0x0000010c __vector_1 + 0x0000010c __vector_24 + 0x0000010c __bad_interrupt + 0x0000010c __vector_6 + 0x0000010c __vector_3 + 0x0000010c __vector_23 + 0x0000010c __vector_25 + 0x0000010c __vector_13 + 0x0000010c __vector_17 + 0x0000010c __vector_19 + 0x0000010c __vector_7 + 0x0000010c __vector_27 + 0x0000010c __vector_5 + 0x0000010c __vector_4 + 0x0000010c __vector_9 + 0x0000010c __vector_2 + 0x0000010c __vector_21 + 0x0000010c __vector_15 + 0x0000010c __vector_8 + 0x0000010c __vector_26 + 0x0000010c __vector_14 + 0x0000010c __vector_10 + 0x0000010c __vector_16 + 0x0000010c __vector_18 + 0x0000010c __vector_20 + 0x00000110 . = ALIGN (0x2) *(.text.*) - .text.led 0x00000100 0x14 led.o - 0x00000100 led + .text.led 0x00000110 0x14 led.o + 0x00000110 led .text.init_led - 0x00000114 0x8 led.o - 0x00000114 init_led - .text.init 0x0000011c 0x18 Mainboard.o - 0x0000011c init - .text.fade 0x00000134 0xbe Mainboard.o - 0x00000134 fade - .text.programRainbow - 0x000001f2 0x74 Mainboard.o - 0x000001f2 programRainbow - .text.main 0x00000266 0x12 Mainboard.o - 0x00000266 main + 0x00000124 0x8 led.o + 0x00000124 init_led + .text.wait_for_usb + 0x0000012c 0x36 Mainboard.o + 0x0000012c wait_for_usb + .text.init 0x00000162 0x20 Mainboard.o + 0x00000162 init + .text.send 0x00000182 0x6a Mainboard.o + 0x00000182 send + .text.main 0x000001ec 0x76 Mainboard.o + 0x000001ec main .text.uart_putchar - 0x00000278 0x24 rs232.o - 0x00000278 uart_putchar + 0x00000262 0x24 rs232.o + 0x00000262 uart_putchar .text.init_rs232 - 0x0000029c 0x24 rs232.o - 0x0000029c init_rs232 + 0x00000286 0x24 rs232.o + 0x00000286 init_rs232 + .text.rs232_send + 0x000002aa 0x1a rs232.o + 0x000002aa rs232_send .text.usb_controlrequest - 0x000002c0 0x62 usb.o - 0x000002c0 usb_controlrequest - .text.usb_ep 0x00000322 0x52 usb.o - 0x00000322 usb_ep + 0x000002c4 0x62 usb.o + 0x000002c4 usb_controlrequest + .text.usb_ep 0x00000326 0x52 usb.o + 0x00000326 usb_ep .text.init_usb - 0x00000374 0x6 usb.o - 0x00000374 init_usb + 0x00000378 0x6 usb.o + 0x00000378 init_usb + .text.usb_send + 0x0000037e 0x20 usb.o + 0x0000037e usb_send + .text.usb_getstatus + 0x0000039e 0x6 usb.o + 0x0000039e usb_getstatus + .text.usb_ready + 0x000003a4 0x6 usb.o + 0x000003a4 usb_ready .text.usb_init - 0x0000037a 0x2e usb_user.o - 0x0000037a usb_init + 0x000003aa 0x28 usb_user.o + 0x000003aa usb_init .text.usb_endpoints - 0x000003a8 0x110 usb_user.o - 0x000003a8 usb_endpoints + 0x000003d2 0xf6 usb_user.o + 0x000003d2 usb_endpoints + .text.usb_status + 0x000004c8 0x1c usb_user.o + 0x000004c8 usb_status + .text.usb_is_ready + 0x000004e4 0x8 usb_user.o + 0x000004e4 usb_is_ready .text.usb_wait_in - 0x000004b8 0xc usb_user.o - 0x000004b8 usb_wait_in + 0x000004ec 0xc usb_user.o + 0x000004ec usb_wait_in .text.usb_desc_out - 0x000004c4 0xb6 usb_user.o - 0x000004c4 usb_desc_out + 0x000004f8 0xb6 usb_user.o + 0x000004f8 usb_desc_out .text.usb_rxdata - 0x0000057a 0x4a usb_user.o - 0x0000057a usb_rxdata + 0x000005ae 0x4a usb_user.o + 0x000005ae usb_rxdata .text.usb_txdata_control - 0x000005c4 0x46 usb_user.o - 0x000005c4 usb_txdata_control + 0x000005f8 0x46 usb_user.o + 0x000005f8 usb_txdata_control .text.usb_txdata - 0x0000060a 0x5e usb_user.o - 0x0000060a usb_txdata + 0x0000063e 0x5e usb_user.o + 0x0000063e usb_txdata .text.__vector_11 - 0x00000668 0x50 usb_user.o - 0x00000668 __vector_11 + 0x0000069c 0x4a usb_user.o + 0x0000069c __vector_11 .text.__vector_12 - 0x000006b8 0x55c usb_user.o - 0x000006b8 __vector_12 + 0x000006e6 0x46c usb_user.o + 0x000006e6 __vector_12 + .text.avr-libc + 0x00000b52 0x270 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + 0x00000b52 malloc + 0x00000c88 free + .text.avr-libc + 0x00000dc2 0x14 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strupr.o) + 0x00000dc2 strupr + .text.avr-libc + 0x00000dd6 0x24 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + 0x00000dd6 fprintf + .text.avr-libc + 0x00000dfa 0x60 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + 0x00000dfa snprintf + .text.avr-libc + 0x00000e5a 0x3bc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + 0x00000e5a vfprintf + .text.avr-libc + 0x00001216 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o) + 0x00001216 strnlen_P + .text.avr-libc + 0x0000122c 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen.o) + 0x0000122c strnlen + .text.avr-libc + 0x00001242 0x58 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + 0x00001242 fputc + .text.avr-libc + 0x0000129a 0xc0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(ultoa_invert.o) + 0x0000129a __ultoa_invert .text.libgcc.mul - 0x00000c14 0x24 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) - 0x00000c14 __mulhi3 - .text.avr-libc - 0x00000c38 0x270 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - 0x00000c38 malloc - 0x00000d6e free - .text.avr-libc - 0x00000ea8 0x14 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strupr.o) - 0x00000ea8 strupr + 0x0000135a 0x12 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o) + 0x0000135a __mulqi3 .text.libgcc.prologue - 0x00000ebc 0x36 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o) - 0x00000ebc __epilogue_restores__ - 0x00000ef2 . = ALIGN (0x2) + 0x0000136c 0x38 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o) + 0x0000136c __prologue_saves__ + .text.libgcc.prologue + 0x000013a4 0x36 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o) + 0x000013a4 __epilogue_restores__ + 0x000013da . = ALIGN (0x2) *(.fini9) - .fini9 0x00000ef2 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) - 0x00000ef2 _exit - 0x00000ef2 exit + .fini9 0x000013da 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) + 0x000013da _exit + 0x000013da exit *(.fini9) *(.fini8) *(.fini8) @@ -479,11 +492,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00000ef2 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) + .fini0 0x000013da 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) *(.fini0) - 0x00000ef6 _etext = . + 0x000013de _etext = . -.data 0x00800100 0x3e load address 0x00000ef6 +.data 0x00800100 0x6c load address 0x000013de 0x00800100 PROVIDE (__data_start, .) *(.data) .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o @@ -491,58 +504,59 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .data 0x00800100 0x0 Mainboard.o .data 0x00800100 0xe rs232.o .data 0x0080010e 0x0 usb.o - .data 0x0080010e 0x1 usb_user.o - .data 0x0080010f 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) - .data 0x0080010f 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) - .data 0x0080010f 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) - .data 0x0080010f 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o) - .data 0x0080010f 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - 0x0080010f __malloc_heap_end - 0x00800111 __malloc_heap_start - 0x00800113 __malloc_margin - .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strupr.o) - .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) - .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) - .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) - .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o) - .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen.o) - .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) - .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(ultoa_invert.o) - .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o) - .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o) - .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o) + .data 0x0080010e 0x0 usb_user.o + .data 0x0080010e 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) + .data 0x0080010e 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) + .data 0x0080010e 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o) + .data 0x0080010e 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + 0x0080010e __malloc_heap_end + 0x00800110 __malloc_heap_start + 0x00800112 __malloc_margin + .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strupr.o) + .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) + .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o) + .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen.o) + .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(ultoa_invert.o) + .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o) + .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o) + .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o) *(.data*) *(.rodata) - .rodata 0x00800115 0x10 usb.o - .rodata 0x00800125 0x18 usb_user.o + .rodata 0x00800114 0x10 usb.o + .rodata 0x00800124 0xc usb_user.o *(.rodata*) + .rodata.str1.1 + 0x00800130 0x3c Mainboard.o *(.gnu.linkonce.d*) - 0x0080013e . = ALIGN (0x2) - *fill* 0x0080013d 0x1 - 0x0080013e _edata = . - 0x0080013e PROVIDE (__data_end, .) + 0x0080016c . = ALIGN (0x2) + 0x0080016c _edata = . + 0x0080016c PROVIDE (__data_end, .) -.bss 0x0080013e 0xc - 0x0080013e PROVIDE (__bss_start, .) +.bss 0x0080016c 0xc + 0x0080016c PROVIDE (__bss_start, .) *(.bss) - .bss 0x0080013e 0x2 usb_user.o + .bss 0x0080016c 0x2 usb_user.o *(.bss*) *(COMMON) - COMMON 0x00800140 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - 0x00800140 __brkval - 0x00800142 __flp - COMMON 0x00800144 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) - 0x00800144 __iob - 0x0080014a PROVIDE (__bss_end, .) - 0x00000ef6 __data_load_start = LOADADDR (.data) - 0x00000f34 __data_load_end = (__data_load_start + SIZEOF (.data)) + COMMON 0x0080016e 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + 0x0080016e __brkval + 0x00800170 __flp + COMMON 0x00800172 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) + 0x00800172 __iob + 0x00800178 PROVIDE (__bss_end, .) + 0x000013de __data_load_start = LOADADDR (.data) + 0x0000144a __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x0080014a 0x0 - 0x0080014a PROVIDE (__noinit_start, .) +.noinit 0x00800178 0x0 + 0x00800178 PROVIDE (__noinit_start, .) *(.noinit*) - 0x0080014a PROVIDE (__noinit_end, .) - 0x0080014a _end = . - 0x0080014a PROVIDE (__heap_start, .) + 0x00800178 PROVIDE (__noinit_end, .) + 0x00800178 _end = . + 0x00800178 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -602,6 +616,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .comment 0x00000000 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) .comment 0x00000000 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) .comment 0x00000000 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) + .comment 0x00000000 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) .comment 0x00000000 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) .comment 0x00000000 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) @@ -617,118 +632,127 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x1f0 +.debug_aranges 0x00000000 0x238 *(.debug_aranges) .debug_aranges - 0x00000000 0x28 led.o + 0x00000000 0x38 led.o .debug_aranges - 0x00000028 0x38 Mainboard.o + 0x00000038 0x40 Mainboard.o .debug_aranges - 0x00000060 0x30 rs232.o + 0x00000078 0x30 rs232.o .debug_aranges - 0x00000090 0x38 usb.o + 0x000000a8 0x48 usb.o .debug_aranges - 0x000000c8 0x88 usb_user.o + 0x000000f0 0x88 usb_user.o .debug_aranges - 0x00000150 0x28 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + 0x00000178 0x28 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) .debug_aranges - 0x00000178 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + 0x000001a0 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) .debug_aranges - 0x00000198 0x18 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) + 0x000001c0 0x18 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) .debug_aranges - 0x000001b0 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + 0x000001d8 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) .debug_aranges - 0x000001d0 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + 0x000001f8 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .debug_aranges + 0x00000218 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x20ca +.debug_info 0x00000000 0x27b9 *(.debug_info) - .debug_info 0x00000000 0xb7 led.o - .debug_info 0x000000b7 0x34f Mainboard.o - .debug_info 0x00000406 0x232 rs232.o - .debug_info 0x00000638 0x41c usb.o - .debug_info 0x00000a54 0xa32 usb_user.o - .debug_info 0x00001486 0x23d c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - .debug_info 0x000016c3 0x1fc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) - .debug_info 0x000018bf 0x14e c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) - .debug_info 0x00001a0d 0x549 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) - .debug_info 0x00001f56 0x174 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + .debug_info 0x00000000 0x294 led.o + .debug_info 0x00000294 0x5ca Mainboard.o + .debug_info 0x0000085e 0x232 rs232.o + .debug_info 0x00000a90 0x47b usb.o + .debug_info 0x00000f0b 0xa4e usb_user.o + .debug_info 0x00001959 0x23d c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + .debug_info 0x00001b96 0x1fc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + .debug_info 0x00001d92 0x14e c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) + .debug_info 0x00001ee0 0x21c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + .debug_info 0x000020fc 0x549 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .debug_info 0x00002645 0x174 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0xd9a +.debug_abbrev 0x00000000 0x106c *(.debug_abbrev) - .debug_abbrev 0x00000000 0x85 led.o - .debug_abbrev 0x00000085 0x174 Mainboard.o - .debug_abbrev 0x000001f9 0x181 rs232.o - .debug_abbrev 0x0000037a 0x1b8 usb.o - .debug_abbrev 0x00000532 0x2ae usb_user.o - .debug_abbrev 0x000007e0 0xf9 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - .debug_abbrev 0x000008d9 0x139 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) - .debug_abbrev 0x00000a12 0xc1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) - .debug_abbrev 0x00000ad3 0x1d6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) - .debug_abbrev 0x00000ca9 0xf1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + .debug_abbrev 0x00000000 0x112 led.o + .debug_abbrev 0x00000112 0x234 Mainboard.o + .debug_abbrev 0x00000346 0x181 rs232.o + .debug_abbrev 0x000004c7 0x1fb usb.o + .debug_abbrev 0x000006c2 0x2b7 usb_user.o + .debug_abbrev 0x00000979 0xf9 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + .debug_abbrev 0x00000a72 0x139 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + .debug_abbrev 0x00000bab 0xc1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) + .debug_abbrev 0x00000c6c 0x139 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + .debug_abbrev 0x00000da5 0x1d6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .debug_abbrev 0x00000f7b 0xf1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) -.debug_line 0x00000000 0x10cf +.debug_line 0x00000000 0x13d1 *(.debug_line) - .debug_line 0x00000000 0xe0 led.o - .debug_line 0x000000e0 0x178 Mainboard.o - .debug_line 0x00000258 0x107 rs232.o - .debug_line 0x0000035f 0x140 usb.o - .debug_line 0x0000049f 0x485 usb_user.o - .debug_line 0x00000924 0x1c8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - .debug_line 0x00000aec 0x14a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) - .debug_line 0x00000c36 0xc1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) - .debug_line 0x00000cf7 0x2fe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) - .debug_line 0x00000ff5 0xda c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + .debug_line 0x00000000 0x150 led.o + .debug_line 0x00000150 0x2cf Mainboard.o + .debug_line 0x0000041f 0x107 rs232.o + .debug_line 0x00000526 0x164 usb.o + .debug_line 0x0000068a 0x43e usb_user.o + .debug_line 0x00000ac8 0x1c8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + .debug_line 0x00000c90 0x14a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + .debug_line 0x00000dda 0xc1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) + .debug_line 0x00000e9b 0x15e c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + .debug_line 0x00000ff9 0x2fe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .debug_line 0x000012f7 0xda c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) -.debug_frame 0x00000000 0x510 +.debug_frame 0x00000000 0x584 *(.debug_frame) - .debug_frame 0x00000000 0x34 led.o - .debug_frame 0x00000034 0xb0 Mainboard.o - .debug_frame 0x000000e4 0x5c rs232.o - .debug_frame 0x00000140 0x74 usb.o - .debug_frame 0x000001b4 0x244 usb_user.o - .debug_frame 0x000003f8 0x68 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - .debug_frame 0x00000460 0x2c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) - .debug_frame 0x0000048c 0x4c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) - .debug_frame 0x000004d8 0x38 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + .debug_frame 0x00000000 0xb0 led.o + .debug_frame 0x000000b0 0x80 Mainboard.o + .debug_frame 0x00000130 0x5c rs232.o + .debug_frame 0x0000018c 0x94 usb.o + .debug_frame 0x00000220 0x21c usb_user.o + .debug_frame 0x0000043c 0x68 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + .debug_frame 0x000004a4 0x2c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + .debug_frame 0x000004d0 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + .debug_frame 0x00000500 0x4c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .debug_frame 0x0000054c 0x38 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) -.debug_str 0x00000000 0x74d +.debug_str 0x00000000 0x817 *(.debug_str) - .debug_str 0x00000000 0x9e led.o - 0xd2 (size before relaxing) - .debug_str 0x0000009e 0x4c Mainboard.o - 0x118 (size before relaxing) - .debug_str 0x000000ea 0x59 rs232.o + .debug_str 0x00000000 0xb4 led.o + 0xe8 (size before relaxing) + .debug_str 0x000000b4 0x178 Mainboard.o + 0x251 (size before relaxing) + .debug_str 0x0000022c 0x40 rs232.o 0x135 (size before relaxing) - .debug_str 0x00000143 0x158 usb.o - 0x247 (size before relaxing) - .debug_str 0x0000029b 0x223 usb_user.o - 0x43a (size before relaxing) - .debug_str 0x000004be 0xcd c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + .debug_str 0x0000026c 0xd9 usb.o + 0x27f (size before relaxing) + .debug_str 0x00000345 0x1f3 usb_user.o + 0x431 (size before relaxing) + .debug_str 0x00000538 0xcd c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) 0x167 (size before relaxing) - .debug_str 0x0000058b 0x79 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + .debug_str 0x00000605 0x79 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) 0x12e (size before relaxing) - .debug_str 0x00000604 0x4b c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) + .debug_str 0x0000067e 0x4b c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) 0xf8 (size before relaxing) - .debug_str 0x0000064f 0xb1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .debug_str 0x000006c9 0x50 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + 0x130 (size before relaxing) + .debug_str 0x00000719 0xb1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) 0x198 (size before relaxing) - .debug_str 0x00000700 0x4d c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + .debug_str 0x000007ca 0x4d c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) 0xf8 (size before relaxing) -.debug_loc 0x00000000 0x198b +.debug_loc 0x00000000 0x1a55 *(.debug_loc) - .debug_loc 0x00000000 0x26 led.o - .debug_loc 0x00000026 0x27f Mainboard.o - .debug_loc 0x000002a5 0xee rs232.o - .debug_loc 0x00000393 0x1b9 usb.o - .debug_loc 0x0000054c 0x918 usb_user.o - .debug_loc 0x00000e64 0x4f8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - .debug_loc 0x0000135c 0x21 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) - .debug_loc 0x0000137d 0x51b c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) - .debug_loc 0x00001898 0xf3 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + .debug_loc 0x00000000 0x2a5 led.o + .debug_loc 0x000002a5 0x124 Mainboard.o + .debug_loc 0x000003c9 0xee rs232.o + .debug_loc 0x000004b7 0x1a9 usb.o + .debug_loc 0x00000660 0x85a usb_user.o + .debug_loc 0x00000eba 0x4f8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + .debug_loc 0x000013b2 0x21 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + .debug_loc 0x000013d3 0x74 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + .debug_loc 0x00001447 0x51b c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .debug_loc 0x00001962 0xf3 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) .debug_macinfo *(.debug_macinfo) @@ -736,17 +760,18 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x190 +.debug_ranges 0x00000000 0x1c8 *(.debug_ranges) - .debug_ranges 0x00000000 0x18 led.o - .debug_ranges 0x00000018 0x70 Mainboard.o - .debug_ranges 0x00000088 0x20 rs232.o - .debug_ranges 0x000000a8 0x28 usb.o - .debug_ranges 0x000000d0 0x78 usb_user.o - .debug_ranges 0x00000148 0x18 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - .debug_ranges 0x00000160 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) - .debug_ranges 0x00000170 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) - .debug_ranges 0x00000180 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + .debug_ranges 0x00000000 0x70 led.o + .debug_ranges 0x00000070 0x30 Mainboard.o + .debug_ranges 0x000000a0 0x20 rs232.o + .debug_ranges 0x000000c0 0x38 usb.o + .debug_ranges 0x000000f8 0x78 usb_user.o + .debug_ranges 0x00000170 0x18 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + .debug_ranges 0x00000188 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + .debug_ranges 0x00000198 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + .debug_ranges 0x000001a8 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .debug_ranges 0x000001b8 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) .debug_macro *(.debug_macro) diff --git a/Mainboard/Mainboard/Debug/Mainboard.srec b/Mainboard/Mainboard/Debug/Mainboard.srec index 44e8c77..e819904 100644 --- a/Mainboard/Mainboard/Debug/Mainboard.srec +++ b/Mainboard/Mainboard/Debug/Mainboard.srec @@ -1,246 +1,327 @@ S01100004D61696E626F6172642E7372656386 -S11300000C9461000C947E000C947E000C947E0091 -S11300100C947E000C947E000C947E000C947E0064 -S11300200C947E000C947E000C947E000C9434039B -S11300300C945C030C947E000C947E000C947E0063 -S11300400C947E000C947E000C947E000C947E0034 -S11300500C947E000C947E000C947E000C947E0024 -S11300600C947E000C947E000C947E000C947E0014 -S11300700C947E0012010002FF000010ADDEEEBE03 +S11300000C9469000C9486000C9486000C94860071 +S11300100C9486000C9486000C9486000C94860044 +S11300200C9486000C9486000C9486000C944E0369 +S11300300C9473030C9486000C9486000C94860034 +S11300400C9486000C9486000C9486000C94860014 +S11300500C9486000C9486000C9486000C94860004 +S11300600C9486000C9486000C9486000C948600F4 +S11300700C94860012010002FF000010ADDEEEBEFB S113008000010102030104030904140342006C008B S11300907500620062004600690073006800000099 S11300A020034800610063006B00650072002D00AE S11300B04A0065006F0070006100720064007900FE -S11300C0000011241FBECFEFD4E0DEBFCDBF11E08E -S11300D0A0E0B1E0E6EFFEE002C005900D92AE3381 -S11300E0B107D9F721E0AEE3B1E001C01D92AA3413 -S11300F0B207E1F70E9433010C9479070C940000D5 -S113010095B19F7195B995B18295880F807E982B92 -S113011095B9089584B1806E84B9089586E090E01D -S11301200E94800078940E948A000E944E010E94DE -S1130130BA0108952F923F924F925F926F927F92ED -S11301408F929F92AF92BF92CF92DF92EF92FF92E3 -S11301500F931F93CF93DF937C018B015A01C0E06F -S1130160D0E0212C312C422C532C2CC0862C972CE3 -S1130170C7010E9480008FEF881A980A8FEF8816B3 -S11301809104B1F71C161D065CF4842C952CC8014F -S11301900E9480008FEF881A980A8C169D06B9F782 -S11301A08FEFC81AD80ACA14DB0421F407C061010E -S11301B06C2E7D2ECF3FD105CCF2E4CF2196CF3FDC -S11301C0D10521F01A141B0494F3F8CFDF91CF91D9 -S11301D01F910F91FF90EF90DF90CF90BF90AF9061 -S11301E09F908F907F906F905F904F903F902F9053 -S11301F00895C82F4AE050E064E070E087E090E0A2 -S11302000E949A004C2F50E066E070E084E090E099 -S11302100E949A004C2F50E062E070E086E090E08B -S11302200E949A004C2F50E063E070E082E090E07E -S11302300E949A004C2F50E061E070E083E090E06F -S11302400E949A004C2F50E065E070E081E090E05D -S11302500E949A004C2F50E064E070E085E090E04A -S11302600E949A00CFCF0E948E0082E090E00E940C -S113027080008CE30E94F900CF93C82F8A3019F4D0 -S11302808DE00E943C01E8ECF0E0908195FFFDCF09 -S1130290C093CE0080E090E0CF91089586E08093F3 -S11302A0CA00E9ECF0E080818860808387E680936F -S11302B0CC0080E091E0909347018093460108953B -S11302C0CF93DF93CDB7DEB760970FB6F894DEBF58 -S11302D00FBECDBF2CE0E5E1F1E0DE011196019007 -S11302E00D922A95E1F71D861E861F86188AFC0149 -S11302F02081233C51F48181813049F460E1CE01B5 -S113030001960E94E20281E003C080E001C080E027 -S113031060960FB6F894DEBF0FBECDBFDF91CF91CC -S11303200895CF93DF93CDB7DEB7A0970FB6F894B7 -S1130330DEBF0FBECDBF8130A1F440E2BE016F5FCE -S11303407F4F0E94BD02882361F018A2CE0101965E -S11303500E94540740E2BE016F5F7F4F81E80E9414 -S11303600503A0960FB6F894DEBF0FBECDBFDF9194 -S1130370CF9108950E94BD01089580EA8093D8002A -S113038086E089BD09B400FEFDCF80E88093D800E3 -S11303901092E00010923E018FEF80930E013C9882 -S11303A088E08093E20008952F923F924F925F92EB -S11303B07F928F929F92AF92CF92DF92EF92FF92B1 -S11303C00F931F93CF93DF93282F90E06CE070E09E -S11303D00E940A06FC01EB5DFE4F822F90E06CE068 -S11303E070E00E940A06895D9E4F41E00F2EF9EEEF -S11303F0CF2ED12CF02D0F2EFBEEEF2EF12CF02D65 -S1130400AA24A3940CEE10E06DEE70E00F2EF0EF32 -S11304104F2E512CF02D6894992492F8812C6894D5 -S1130420772474F8DF0120812F3F59F1E6014883D6 -S1130430E701A8822081E80128831C019C01215046 -S11304403109E9012881203841F0203441F020327B -S113045041F0203141F4372D07C030E405C030E3CA -S113046003C030E201C0382DE1012881232BEB01C8 -S113047028832C9120FF03C0D2011C9202C0E20108 -S113048098824F5F33960396453061F6EAEEF0E0CA -S11304908EE180831082DF91CF911F910F91FF90A5 -S11304A0EF90DF90CF90AF909F908F907F905F9070 -S11304B04F903F902F900895E8EEF0E08081857092 -S11304C0E9F30895AF92BF92CF92DF92EF92FF9239 -S11304D00F931F93CF93DF93D82ED62FC72FE42FDC -S11304E0F0E02E173F0710F4C22E01C0C42E0E9464 -S11304F05C020D2F1C2F6894AA24A4F80F2EF8EE8A -S1130500EF2EF12CF02D0F2EFEEFBF2EF02DC1EFAC -S1130510D0E02C2D80E18C1508F42A2D2223D9F06B -S1130520F801922FDD2011F0808101C0849188832D -S1130530915031969111F6CF622F615070E06F5F48 -S11305407F4F060F171FC21AF701B082C11007C0F0 -S1130550203129F007C0F701B082CC2019F00E94A5 -S11305605C02D7CFDF91CF911F910F91FF90EF9055 -S1130570DF90CF90BF90AF9008958093E900909161 -S1130580F200941708F4492F4423D1F0362FE62FB4 -S1130590F72FA1EFB0E09C9191939E2F931B94179A -S11305A0D0F39091F20091110BC021E030E002C031 -S11305B0220F331F8A95E2F7EAEEF0E020831082DF -S11305C0842F08956623E9F01092E900E8EEF0E044 -S11305D0208120FFFDCF2091F200211114C0282F8B -S11305E0E82FF92FA1EFB0E081918C938E2F821B1D -S11305F08617D0F3E8EEF0E080818E7F808381E07F -S1130600089580E0089580E00895CF93DF93442314 -S113061029F18093E900E8EEF0E0808180FFFDCFCE -S11306208091F20081111CC0962FE62FF72FA8EEBF -S1130630B0E0C1EFD0E08C9185FF02C08081888357 -S113064031968E2F891B8417B0F3E8EEF0E0808199 -S11306508E7F80838FE7808381E003C080E001C0C8 -S113066080E0DF91CF9108951F920F920FB60F9201 -S113067011248F93EF93FF93E1EEF0E080811082D9 -S113068083FF12C01092E90081E08093EB00109286 -S1130690EC0082E18093ED0088E08093F0001092FA -S11306A03E018FEF80930E01FF91EF918F910F9098 -S11306B00FBE0F901F9018951F920F920FB60F92B6 -S11306C011243F924F925F926F927F928F929F92EA -S11306D0AF92BF92CF92DF92EF92FF920F931F934C -S11306E02F933F934F935F936F937F938F939F9336 -S11306F0AF93BF93EF93FF93CF93DF93CDB7DEB761 -S11307002A97DEBFCDBF8091F40080FF4CC21092C7 -S1130710E9008091E80083FF13C2E1EFF0E08081FB -S1130720898380818A83208130E03C832B834081CC -S1130730942F80E0822B932B9C838B83208130E049 -S11307403E832D834081942F80E0822B932B9E83C4 -S11307508D83208130E038872F834081942F80E07F -S1130760822B932B98878F8382EF8093E8008A8172 -S1130770863009F024C18B819C81811523E0920786 -S113078009F4FBC048F4811551E0950779F081150F -S1130790924009F010C124C08130B3E09B0709F4F2 -S11307A0F6C08230934009F006C1FBC0E4E7F0E0F4 -S11307B044912F813885BF0180E00E94620202C209 -S11307C09A2F50815F3F09F49B2F490F8150339634 -S11307D08111F6CF2F5F3F4F2230310539F410C01D -S11307E020E030E040E014E0A1E0B0E0C9016CE0BA -S11307F070E00E940A06FC01EB5DFE4F812FE0CF02 -S1130800842F880F880F880F841B0F2EFBE1EF2E97 -S1130810F02DE80E8E2D90E00E941C06082F192F53 -S113082089E0D8018C9382E011968C9311971296EB -S1130830EC92129713961C92139714968C93149718 -S113084081E015968C93159716961C92169780EC5A -S113085017968C9317978AEF18968C93F80139960C -S11308601A86198644E0A12C88248394F82C9A2CA7 -S11308700F2EF9E07F2EF02DDD24DA940F2EF7E011 -S1130880BF2EF02D0F2EF5E0CF2EF02D68946624A8 -S113089061F80F2EF3E05F2EF02D56C07F2DDC01A2 -S11308A02C912F3F09F4792D670F51500396511164 -S11308B0F5CF70824183428213826483D58216828B -S11308C0D782108639966623C1F1832F932D6CE06D -S11308D070E00E940A069C012A5D3E4F482CC90123 -S11308E0B90161507109DB015C915F3F01F1B08294 -S11308F0C182652F679566276795642962835134A1 -S113090041F0503441F0513841F0503841F4562D03 -S113091007C05F2D05C05F2D03C0562D01C0552DA6 -S11309205383DC018C918483158216823796439419 -S11309302D5F3F4FB5E04B12D2CFA985BA851196F2 -S1130940BA87A987129771F04984342D3A84842D8B -S1130950932D6CE070E00E940A068B5D9E4F542F2D -S11309606A2D9CCF2F8138854E2DB80181E00E94DD -S11309706202C8010E94B70625C1E6E8F0E044918E -S11309802F813885BF0180E00E9462021BC1EAE822 -S1130990F0E044912F813885BF0180E00E9462021B -S11309A011C1E0EAF0E044912F813885BF0180E075 -S11309B00E94620207C181E28093EB0003C185308B -S11309C071F48EEF8093E800E8EEF0E0808180FF20 -S11309D0FDCF8B819C8180688093E300F3C08930D4 -S11309E0C1F49981911160C08B819C81019769F454 -S11309F081E080933E018EEF8093E80010920E0117 -S1130A0080910E010E94D401DDC081E28093EB004D -S1130A10D9C0883089F49981903809F057C0E8EE3C -S1130A20F0E0808180FFFDCF80913E018093F10052 -S1130A308EEF8093E800C6C081111CC0E8EEF0E0A0 -S1130A40808180FFFDCF8981823859F48D81E9EE60 -S1130A50F0E080838091EB0085FB882780F9108289 -S1130A6001C080E0E1EFF0E0808310828EEF80939C -S1130A70E800A8C08B30C1F48981803211F0811163 -S1130A8055C08D819E818230910550F480930E0172 -S1130A908EEF8093E80080910E010E94D40192C0F1 -S1130AA081E28093EB008EC08A3081F489818038A2 -S1130AB0E9F5E8EEF0E0808180FFFDCF80910E0142 -S1130AC08093F1008EEF8093E8007CC0813011F0B8 -S1130AD0833061F58981823049F58B819C81892B32 -S1130AE029F58D819E818F779927382F31503430A5 -S1130AF0E8F43EEF3093E8008093E9002A81233044 -S1130B0021F481E28093EB005DC099E19093EB00C6 -S1130B1021E030E0F90102C0EE0FFF1F8A95E2F7F1 -S1130B20CF01EAEEF0E0808310824CC0CE01019642 -S1130B300E946001811146C081E28093EB0042C0B3 -S1130B4081E28093EB002FC0F22E408150E0022E10 -S1130B5002C0559547950A94E2F740FF1BC0DB019C -S1130B602C93D6018C9182FF13C08091F2008823CC -S1130B7041F06091F20070E0822F0E949101F092A6 -S1130B80E900E8EEF0E089EF80838FE780831AC004 -S1130B90D8019C932F5F3F4F25303105A9F681E2A0 -S1130BA08093EB000FC021E030E0E4EFF0E069EE69 -S1130BB070E00F2EF8EECF2ED12CF02D0BEE10E0BE -S1130BC091E2C2CF2A960FB6F894DEBF0FBECDBF16 -S1130BD0DF91CF91FF91EF91BF91AF919F918F9151 -S1130BE07F916F915F914F913F912F911F910F9141 -S1130BF0FF90EF90DF90CF90BF90AF909F908F9039 -S1130C007F906F905F904F903F900F900FBE0F902A -S1130C101F9018955527002480FF02C0060E571F09 -S1130C20660F771F6115710521F0969587950097DA -S1130C3099F7952F802D08950F931F93CF93DF93EA -S1130C408230910510F482E090E0E0914201F0914D -S1130C50430120E030E0C0E0D0E023C04081518176 -S1130C6048175907A8F04817590761F482819381FE -S1130C70209719F09B838A832EC09093430180931D -S1130C80420129C02115310529F04217530710F0FC -S1130C90A90102C0BE01DF0102811381EF019A01A3 -S1130CA0F8013097D9F62115310509F1281B390BC4 -S1130CB02430310590F412968D919C91139761150F -S1130CC0710521F0FB019383828304C09093430157 -S1130CD080934201FD01329644C0FD01E20FF31FEF -S1130CE081939193225031092D933C933AC02091E2 -S1130CF0400130914101232B41F4209111013091A5 -S1130D001201309341012093400120910F01309151 -S1130D1010012115310541F42DB73EB7409113015F -S1130D2050911401241B350BE0914001F0914101D5 -S1130D30E217F307A0F42E1B3F0B2817390778F0AE -S1130D40AC014E5F5F4F2417350748F04E0F5F1F0D -S1130D5050934101409340018193919302C0E0E09C -S1130D60F0E0CF01DF91CF911F910F910895EF92A1 -S1130D70FF920F931F93CF93DF93009709F48FC0D3 -S1130D80DC01129713961C921E921297E090420176 -S1130D90F0904301E114F10489F42D913C911197F1 -S1130DA0280F391F809140019091410182179307C8 -S1130DB089F5B0934101A093400171C0E70120E09F -S1130DC030E001C0EA01CA17DB0738F44A815B81CD -S1130DD09E0141155105B1F722C0BC016250710951 -S1130DE0FB01D383C28300811181AC01400F511FE9 -S1130DF04C175D0761F448815981400F511F4E5FC4 -S1130E005F4F518340834A815B8153834283211521 -S1130E10310529F4B0934301A093420140C0F90184 -S1130E20B383A283E90169917991C60FD71FAC17E7 -S1130E30BD0779F4DC015E914E91460F571F4E5F5A -S1130E405F4F5183408312968D919C9113979383A6 -S1130E508283A0E0B0E002C0D7017C01F701828167 -S1130E6093810097C9F7C701029620813181820FCF -S1130E70931F20914001309141012817390779F4DB -S1130E80109729F4109243011092420104C0139662 -S1130E901C921E921297F0924101E0924001CDB74C -S1130EA0DEB7E6E00C946A07DC016C9161566A31A6 -S1130EB008F0605E6F5B6D93C1F708952A883988E6 -S1130EC048885F846E847D848C849B84AA84B984DE -S1130ED0C884DF80EE80FD800C811B81AA81B981EA -S1130EE0CE0FD11D0FB6F894DEBF0FBECDBFED01FE -S1090EF00895F894FFCF01 -S1130EF600000002000000003C0100000000FF00AA -S1130F06004A01200056657273696F6E20312E30D7 -S1130F160000000000802002812002FF2002FF2042 -S1110F2602FF2002FF2002FF2002FF20020033 +S11300C000000E03300030003000300030003100FA +S11300D0000011241FBECFEFD4E0DEBFCDBF11E07E +S11300E0A0E0B1E0EEEDF3E102C005900D92AC3674 +S11300F0B107D9F721E0ACE6B1E001C01D92A83701 +S1130100B207E1F70E94F6000C94ED090C9400008C +S113011095B19F7195B995B18295880F807E982B82 +S113012095B9089584B1806E84B908950E94CF0171 +S1130130811106C086E090E00E948800379B10C0C1 +S11301400E94CF01823021F483E090E00E94880075 +S11301500E94CF01833051F782E090E00E94880032 +S1130160089586E090E00E94880078940E949200AE +S11301700E9443010E94BC013F98479A0E94960046 +S11301800895CF93DF93EC01E82FFD2FDF010D904D +S11301900020E9F71197AE1BBF0BAD3130F08DE0B5 +S11301A08D8F8AE08E8F1F8E08C0FE01EA0FF11D2D +S11301B08DE080838AE08183128285E090E00E9452 +S11301C08800CE010E9455010E94CF01833039F48A +S11301D00E94D201882319F0CE010E94BF0182E05F +S11301E090E00E948800DF91CF910895CF93DF9330 +S11301F0CDB7DEB7A0970FB6F894DEBF0FBECDBF64 +S11302000E94B10082E090E00E948800D12C0F2E61 +S1130210F4E4EF2EF1E0FF2EF02D6894CC24C5F821 +S11302208E010F5F1F4F8D2DD3941F928F93FF92DA +S1130230EF921F92CF921F930F930E94FD06C80165 +S11302400E94C1002FEF89E698E121508040904040 +S1130250E1F700C000000FB6F894DEBF0FBECDBFBB +S1130260E2CFCF93C82F8A3019F48DE00E94310178 +S1130270E8ECF0E0908195FFFDCFC093CE0080E0E4 +S113028090E0CF91089586E08093CA00E9ECF0E015 +S113029080818860808387E68093CC0080E091E051 +S11302A0909375018093740108959F938F9380E0D8 +S11302B091E09F938F930E94EB060F900F900F9005 +S11302C00F900895CF93DF93CDB7DEB760970FB645 +S11302D0F894DEBF0FBECDBF2CE0E4E1F1E0DE0117 +S11302E0119601900D922A95E1F71D861E861F86B0 +S11302F0188AFC012081233C51F48181813049F426 +S113030060E1CE0101960E94FC0281E003C080E01E +S113031001C080E060960FB6F894DEBF0FBECDBF7B +S1130320DF91CF910895CF93DF93CDB7DEB7A09738 +S11303300FB6F894DEBF0FBECDBF8130A1F440E20A +S1130340BE016F5F7F4F0E94D702882361F018A21D +S1130350CE0101960E94E10640E2BE016F5F7F4F2D +S113036082E80E941F03A0960FB6F894DEBF0FBE6A +S1130370CDBFDF91CF9108950E94D5010895E82F54 +S1130380F92FDF010D900020E9F71197AD014E1B05 +S11303905F0B682F792F82E80E941F0308950E9443 +S11303A0640208950E947202089580EA8093D8003E +S11303B086E089BD09B400FEFDCF80E88093D800B3 +S11303C01092E00010926C013C9888E08093E20067 +S11303D008952F923F924F925F927F928F929F92B5 +S11303E0AF92CF92DF92EF92FF920F931F93CF932E +S11303F0DF93E4E2F1E086E291E041E00F2EF9EED2 +S1130400CF2ED12CF02D0F2EFBEEEF2EF12CF02D54 +S1130410AA24A3940CEE10E06DEE70E00F2EF0EF22 +S11304204F2E512CF02D6894992492F8812C6894C5 +S1130430772474F8DF0120812F3F59F1E6014883C6 +S1130440E701A8822081E80128831C019C01215036 +S11304503109E9012881203841F0203441F020326B +S113046041F0203141F4372D07C030E405C030E3BA +S113047003C030E201C0382DE1012881232BEB01B8 +S113048028832C9120FF03C0D2011C9202C0E201F8 +S113049098824F5F33960396453061F6EAEEF0E0BA +S11304A08EE180831082DF91CF911F910F91FF9095 +S11304B0EF90DF90CF90AF909F908F907F905F9060 +S11304C04F903F902F9008958091E300882334F457 +S11304D080916C01811104C082E0089580E0089548 +S11304E083E008958091E80081700895E8EEF0E0DB +S11304F080818570E9F30895AF92BF92CF92DF9225 +S1130500EF92FF920F931F93CF93DF93D82ED62FA2 +S1130510C72FE42FF0E02E173F0710F4C22E01C0BE +S1130520C42E0E9476020D2F1C2F6894AA24A4F8CE +S11305300F2EF8EEEF2EF12CF02D0F2EFEEFBF2E26 +S1130540F02DC1EFD0E02C2D80E18C1508F42A2D7C +S11305502223D9F0F801922FDD2011F0808101C00F +S113056084918883915031969111F6CF622F615016 +S113057070E06F5F7F4F060F171FC21AF701B0823A +S1130580C11007C0203129F007C0F701B082CC2088 +S113059019F00E947602D7CFDF91CF911F910F916E +S11305A0FF90EF90DF90CF90BF90AF90089580932D +S11305B0E9009091F200941708F4492F4423D1F0F4 +S11305C0362FE62FF72FA1EFB0E09C9191939E2F49 +S11305D0931B9417D0F39091F20091110BC021E07A +S11305E030E002C0220F331F8A95E2F7EAEEF0E012 +S11305F020831082842F08956623E9F01092E90085 +S1130600E8EEF0E0208120FFFDCF2091F2002111DF +S113061014C0282FE82FF92FA1EFB0E081918C931B +S11306208E2F821B8617D0F3E8EEF0E080818E7F58 +S1130630808381E0089580E0089580E00895CF9359 +S1130640DF93442329F18093E900E8EEF0E0808110 +S113065080FFFDCF8091F20081111CC0962FE62F00 +S1130660F72FA8EEB0E0C1EFD0E08C9185FF02C077 +S11306708081888331968E2F891B8417B0F3E8EE2E +S1130680F0E080818E7F80838FE7808381E003C0E8 +S113069080E001C080E0DF91CF9108951F920F9216 +S11306A00FB60F9211248F93EF93FF93E1EEF0E0D6 +S11306B08081108283FF0FC01092E90081E0809353 +S11306C0EB001092EC0082E18093ED0088E08093CF +S11306D0F00010926C01FF91EF918F910F900FBE7B +S11306E00F901F9018951F920F920FB60F9211241E +S11306F0BF92CF92DF92EF92FF920F931F932F93AB +S11307003F934F935F936F937F938F939F93AF9395 +S1130710BF93EF93FF93CF93DF93CDB7DEB72897C3 +S1130720DEBFCDBF8091F40080FFE4C11092E900E8 +S11307308091E80083FFABC1E1EFF0E08081898321 +S113074080818A83208130E03C832B834081942FF5 +S113075080E0822B932B9C838B83208130E03E832B +S11307602D834081942F80E0822B932B9E838D8355 +S1130770208130E038872F834081942F80E0822BC2 +S1130780932B98878F8382EF8093E8008A81863049 +S113079009F0ECC08B819C81811523E0920709F458 +S11307A0B9C048F4811551E0950789F0811592404C +S11307B009F0D8C016C08230B3E09B0709F4BEC06C +S11307C008F4B2C08330934009F0CCC0C1C0E4E760 +S11307D0F0E044912F813885BF0180E00E947C02C3 +S11307E098C1E4E2F1E080E391E0F12C41E050E0D3 +S11307F0242F30813F3F09F4252FF20E3396E8175A +S1130800F907B1F78F2D880F880F880F8F190F2ED6 +S1130810F2E1EF2EF02DE80E8E2D90E00E94A90556 +S1130820082F192F89E0D8018C9392E011969C939C +S113083011971296EC92129713961C92139791E0CB +S113084014969C93149715969C93159716961C9240 +S1130850169790EC17969C9317979AEF18969C937B +S11308601897F801399619968C9384E08183128243 +S11308701382F4828FEF8583168287831086FF208C +S1130880F1F1F801729625E231E091E00F2EF7E0E4 +S1130890FF2EF02D55E0CC24C3946894DD24D1F8C8 +S11308A00F2EF3E0BF2EF02DB901D90111978C91D1 +S11308B08F3F01F1F0825183482F47954427479594 +S11308C0492B4283813441F0803441F0813841F036 +S11308D0803841F48D2D07C08C2D05C08C2D03C0AC +S11308E08D2D01C08B2D8383DB018C918483158234 +S11308F0168237969F5F2D5F3F4F9530A9F62F8163 +S113090038854E2DB80181E00E947C02C8010E9406 +S11309104406FFC0E6E8F0E044912F813885BF012A +S113092080E00E947C02F5C0EAE8F0E044912F8167 +S11309303885BF0180E00E947C02EBC0E0EAF0E071 +S113094044912F813885BF0180E00E947C02E1C080 +S1130950E2ECF0E044912F813885BF0180E00E94F1 +S11309607C02D7C081E28093EB00D3C0853071F460 +S11309708EEF8093E800E8EEF0E0808180FFFDCF09 +S11309808B819C8180688093E300C3C08930A1F48B +S11309908981811172C08B819C81019749F481E026 +S11309A080936C018EEF8093E8000E94E901B1C04E +S11309B081E28093EB00ADC0883089F4898180386E +S11309C009F05BC0E8EEF0E0808180FFFDCF80910C +S11309D06C018093F1008EEF8093E8009AC081113E +S11309E01CC0E8EEF0E0808180FFFDCF8981823871 +S11309F059F48D81E9EEF0E080838091EB0085FB72 +S1130A00882780F9108201C080E0E1EFF0E0808364 +S1130A1010828EEF8093E8007CC0813011F0833027 +S1130A2061F58981823049F58B819C81892B29F577 +S1130A308D819E818F779927382F31503430E8F497 +S1130A403EEF3093E8008093E9002A81233021F4BB +S1130A5081E28093EB005DC099E19093EB0021E08B +S1130A6030E0F90102C0EE0FFF1F8A95E2F7CF01D3 +S1130A70EAEEF0E0808310824CC0CE0101960E9421 +S1130A806201811146C081E28093EB0042C081E2A1 +S1130A908093EB002FC0F22E408150E0022E02C062 +S1130AA0559547950A94E2F740FF1BC0DB012C9350 +S1130AB0D6018C9182FF13C08091F200882341F00B +S1130AC06091F20070E0822F0E949301F092E9009D +S1130AD0E8EEF0E089EF80838FE780831AC0D801C5 +S1130AE09C932F5F3F4F25303105A9F681E2809317 +S1130AF0EB000FC021E030E0E4EFF0E069EE70E0DD +S1130B000F2EF8EECF2ED12CF02D0BEE10E091E24B +S1130B10C2CF28960FB6F894DEBF0FBECDBFDF91CB +S1130B20CF91FF91EF91BF91AF919F918F917F9161 +S1130B306F915F914F913F912F911F910F91FF9072 +S1130B40EF90DF90CF90BF900F900FBE0F901F904B +S1130B5018950F931F93CF93DF938230910510F470 +S1130B6082E090E0E0917001F091710120E030E0CA +S1130B70C0E0D0E023C04081518148175907A8F054 +S1130B804817590761F482819381209719F09B8358 +S1130B908A832EC0909371018093700129C021151E +S1130BA0310529F04217530710F0A90102C0BE0114 +S1130BB0DF0102811381EF019A01F8013097D9F620 +S1130BC02115310509F1281B390B2430310590F426 +S1130BD012968D919C9113976115710521F0FB017B +S1130BE09383828304C09093710180937001FD010B +S1130BF0329644C0FD01E20FF31F8193919322507A +S1130C0031092D933C933AC020916E0130916F01CC +S1130C10232B41F4209110013091110130936F0185 +S1130C2020936E0120910E0130910F0121153105A1 +S1130C3041F42DB73EB74091120150911301241B8A +S1130C40350BE0916E01F0916F01E217F307A0F408 +S1130C502E1B3F0B2817390778F0AC014E5F5F4F0E +S1130C602417350748F04E0F5F1F50936F014093D0 +S1130C706E018193919302C0E0E0F0E0CF01DF9137 +S1130C80CF911F910F910895EF92FF920F931F93AD +S1130C90CF93DF93009709F48FC0DC01129713966A +S1130CA01C921E921297E0907001F0907101E11471 +S1130CB0F10489F42D913C911197280F391F8091EB +S1130CC06E0190916F018217930789F5B0936F01BC +S1130CD0A0936E0171C0E70120E030E001C0EA0199 +S1130CE0CA17DB0738F44A815B819E01411551051F +S1130CF0B1F722C0BC0162507109FB01D383C283E6 +S1130D0000811181AC01400F511F4C175D0761F444 +S1130D1048815981400F511F4E5F5F4F518340837B +S1130D204A815B81538342832115310529F4B093B1 +S1130D307101A093700140C0F901B383A283E9015A +S1130D4069917991C60FD71FAC17BD0779F4DC01FF +S1130D505E914E91460F571F4E5F5F4F5183408304 +S1130D6012968D919C91139793838283A0E0B0E0B7 +S1130D7002C0D7017C01F701828193810097C9F7F2 +S1130D80C701029620813181820F931F20916E0149 +S1130D9030916F012817390779F4109729F41092CC +S1130DA071011092700104C013961C921E92129746 +S1130DB0F0926F01E0926E01CDB7DEB7E6E00C94DD +S1130DC0DE09DC016C9161566A3108F0605E6F5B8C +S1130DD06D93C1F70895A0E0B0E0E1EFF6E00C9464 +S1130DE0C609CE010996AC016F8178858D819E81FB +S1130DF00E942D07E2E00C94E209AEE0B0E0E3E0EB +S1130E00F7E00C94C4090D891E898F89988D26E01A +S1130E102C831A83098397FF02C080E090E801972E +S1130E209E838D83CE014B96AC01698D7A8DCE0164 +S1130E3001960E942D074D815E8157FD0AC02F81C6 +S1130E403885421753070CF49A01F801E20FF31F97 +S1130E5010822E96E4E00C94E009ACE0B0E0E3E309 +S1130E60F7E00C94B6097C016B018A01FC0117823E +S1130E701682838181FFC8C188248394912C8C0EAF +S1130E809D1EF7019381F60193FD859193FF819156 +S1130E906F01882309F4B4C1853239F493FD859137 +S1130EA093FF81916F01853229F4B70190E00E948C +S1130EB02109E7CF512C312C20E02032A8F48B32C9 +S1130EC061F028F4803251F0833271F40BC08D321A +S1130ED039F0803349F421602AC02260246027C09D +S1130EE0286025C0206123C027FD29C0382F305336 +S1130EF03A3088F426FF07C0852D6AE00E94AD09C8 +S1130F00582E530E14C0832D6AE00E94AD09382E6A +S1130F10330E20620CC08E3221F426FD71C1206490 +S1130F2006C08C3611F4206802C0883641F4F601FC +S1130F3093FD859193FF81916F018111BECF982F0D +S1130F409554933018F09052933028F40C5F1F4F4F +S1130F50FFE3F9830DC0833631F0833771F08335B5 +S1130F6009F05EC023C0F801808189830E5F1F4FA2 +S1130F7044244394512C540115C03801F2E06F0EFF +S1130F80711CF801A080B18026FF03C0652D70E0BC +S1130F9002C06FEF7FEFC5012C870E9416092C0158 +S1130FA083012C856FE7262E222218C03801F2E037 +S1130FB06F0E711CF801A080B18026FF03C0652D5F +S1130FC070E002C06FEF7FEFC5012C870E940B0910 +S1130FD02C012C8550E8252E222A830123FC1CC0D9 +S1130FE006C0B70180E290E00E9421093A94832D63 +S1130FF090E048165906A8F30FC0F50127FC859127 +S113100027FE81915F01B70190E00E942109311010 +S11310103A94F1E04F1A51084114510471F7EDC0AC +S1131020843611F0893641F5F80127FF07C0608145 +S11310307181828193810C5F1F4F08C0608171812F +S1131040882777FD8095982F0E5F1F4F4FE6B42EAB +S1131050B22297FF09C090958095709561957F4F56 +S11310608F4F9F4FF0E8BF2A2AE030E0A4010E948E +S11310704D09A82EA81843C0853731F43FEEB32E8E +S1131080B2222AE030E024C099EFB92EB2228F3682 +S1131090B9F020F4883509F0B3C00DC0803721F0D1 +S11310A0883709F0ADC002C020E1B22AB4FE0BC0FB +S11310B084E0B82A08C024FF09C0E6E0BE2A06C0BE +S11310C028E030E005C020E130E002C020E132E059 +S11310D0F801B7FE07C060817181828193810C5F42 +S11310E01F4F06C06081718180E090E00E5F1F4F4A +S11310F0A4010E944D09A82EA818FFE7BF22B6FE3E +S11311000BC02B2D2E7FA51450F4B4FE0AC0B2FCE4 +S113111008C02B2D2E7E05C07A2C2B2D03C07A2CD3 +S113112001C0752C24FF0DC0FE01EA0DF11D808164 +S1131130803311F4297E09C022FF06C0739473948E +S113114004C0822F867809F0739423FD14C020FF15 +S11311500FC05A2C731460F4530C5718732C08C026 +S1131160B70180E290E02C870E94210973942C85BA +S11311707314B0F304C0731410F4371801C0312C85 +S113118024FF12C0B70180E390E02C870E9421095C +S11311902C8522FF1EC021FF03C088E590E002C019 +S11311A088E790E0B7010CC0822F867891F021FD8A +S11311B002C080E201C08BE227FD8DE2B70190E01E +S11311C00E94210906C0B70180E390E00E94210932 +S11311D05A94A514C0F3AA94F401EA0DF11DB701C1 +S11311E0808190E00E942109A110F5CF06C0B701CB +S11311F080E290E00E9421093A943110F8CF41CE68 +S1131200F7012681378102C02FEF3FEFC9012C96E9 +S1131210E2E10C94D209FC01059061507040011088 +S1131220D8F7809590958E0F9F1F0895FC0161500B +S1131230704001900110D8F7809590958E0F9F1FF4 +S113124008950F931F93CF93DF938C01EB018B8150 +S113125081FD03C00FEF1FEF1AC082FF0DC02E8166 +S11312603F818C819D812817390764F4E881F981D5 +S11312700193F983E88306C0E885F985802F0995F1 +S1131280892B41F78E819F8101969F838E83C801AC +S1131290DF91CF911F910F910895FA01AA27283069 +S11312A061F1203191F1E8946F936E7F6E5F7F4F0F +S11312B08F4F9F4FAF4FB1E040D0B4E03ED0670FA7 +S11312C0781F891F9A1FA11D680F791F8A1F911DFE +S11312D0A11D6A0F711D811D911DA11D22D009F44C +S11312E068943F91062E000C3019000C000C301944 +S11312F0305D3193CEF6CF010895462F4770405D9F +S11313004193B3E00FD0C9F7F6CF462F4F70405D3D +S11313104A3318F0495D31FD4052419302D0A9F798 +S1131320EACFB4E0A6959795879577956795BA9592 +S1131330C9F700976105710508959B01AC010A2E58 +S113134006945795479537952795BA95C9F7620F2F +S1131350731F841F951FA01D0895002480FD060E91 +S1131360660F11F08695D1F7802D08952F923F9244 +S11313704F925F926F927F928F929F92AF92BF92A1 +S1131380CF92DF92EF92FF920F931F93CF93DF934D +S1131390CDB7DEB7CA1BDB0B0FB6F894DEBF0FBEAA +S11313A0CDBF09942A88398848885F846E847D84F7 +S11313B08C849B84AA84B984C884DF80EE80FD80F9 +S11313C00C811B81AA81B981CE0FD11D0FB6F8946F +S11113D0DEBF0FBECDBFED010895F894FFCF30 +S11313DE00000002000000003101000000000000C7 +S11313EE7801200056657273696F6E20312E3000BD +S11313FE00000000802002812002C12002FF200292 +S113140E4E61636872696368742062656B6F6D6D9B +S113141E656E2100626C61666F6F202564206963BE +S113142E682062696E2065696E206C616765722042 +S10F143E646F6F6665722074657874003A S9030000FC diff --git a/Mainboard/Mainboard/Debug/led.d b/Mainboard/Mainboard/Debug/led.d index babda42..10ac8e5 100644 --- a/Mainboard/Mainboard/Debug/led.d +++ b/Mainboard/Mainboard/Debug/led.d @@ -9,7 +9,8 @@ led.d led.o: .././led.c \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/common.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h \ + .././led.h c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h: @@ -32,3 +33,5 @@ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8- c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h: c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h: + +.././led.h: diff --git a/Mainboard/Mainboard/Debug/rs232.d b/Mainboard/Mainboard/Debug/rs232.d index 7022309..37c4dcc 100644 --- a/Mainboard/Mainboard/Debug/rs232.d +++ b/Mainboard/Mainboard/Debug/rs232.d @@ -15,9 +15,10 @@ rs232.d rs232.o: .././rs232.c .././config.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/string.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdio.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdarg.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h \ .././rs232.h .././config.h: @@ -54,10 +55,12 @@ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8- c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h: +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/string.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h: + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdio.h: c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdarg.h: -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h: - .././rs232.h: diff --git a/Mainboard/Mainboard/Debug/usb.d b/Mainboard/Mainboard/Debug/usb.d index 630deaa..2faead5 100644 --- a/Mainboard/Mainboard/Debug/usb.d +++ b/Mainboard/Mainboard/Debug/usb.d @@ -17,8 +17,11 @@ usb.d usb.o: .././usb.c .././config.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/string.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdio.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdarg.h \ .././usb_user_config.h .././usb_user.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/pgmspace.h + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/pgmspace.h \ + .././usb.h .././config.h: @@ -58,8 +61,14 @@ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8- c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h: +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdio.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdarg.h: + .././usb_user_config.h: .././usb_user.h: c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/pgmspace.h: + +.././usb.h: diff --git a/Mainboard/Mainboard/Debug/usb_user.d b/Mainboard/Mainboard/Debug/usb_user.d index f69773f..f914295 100644 --- a/Mainboard/Mainboard/Debug/usb_user.d +++ b/Mainboard/Mainboard/Debug/usb_user.d @@ -19,6 +19,7 @@ usb_user.d usb_user.o: .././usb_user.c \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/string.h \ .././usb_user.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/pgmspace.h @@ -62,6 +63,8 @@ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8- c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h: +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/string.h: + .././usb_user.h: c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/pgmspace.h: diff --git a/Mainboard/Mainboard/Mainboard.c b/Mainboard/Mainboard/Mainboard.c index 2d7721c..42e984b 100644 --- a/Mainboard/Mainboard/Mainboard.c +++ b/Mainboard/Mainboard/Mainboard.c @@ -11,6 +11,24 @@ #include "rs232.h" #include "usb.h" +void wait_for_usb() { + while(true) { + if(usb_getstatus() == USB_STATUS_DISCONNECTED) { + led(YELLOW); + if(!(PINC & (1<= 29) { + text[29] = 13; + text[30] = 10; + text[31] = 0; + } else { + text[l] = 13; + text[l+1] = 10; + text[l+2] = 0; } + led(MAGENTA); + rs232_send(text); + if(usb_getstatus() == USB_STATUS_CONFIGURED && usb_ready()) { + usb_send(text); + } + led(GREEN); +} + +void resi(char * text) { + _delay_ms(10); + send("Nachricht bekommen!"); + //send(text); + led(RED); + _delay_ms(2000); } int main(void) { init(); + led(GREEN); - char t[32]; + char text[32]; + uint8_t i=0; while(1) { - programRainbow(60); - t[0]=0; // clear response string buffer - sprintf(t, "test\r\n"); - rs232_send(t); - usb_send(t); + snprintf(text, 32, "blafoo %d ich bin ein lager doofer text",i++); + send(text); + _delay_ms(500); } } \ No newline at end of file diff --git a/Mainboard/Mainboard/config.h b/Mainboard/Mainboard/config.h index 6b70626..0c79d07 100644 --- a/Mainboard/Mainboard/config.h +++ b/Mainboard/Mainboard/config.h @@ -16,6 +16,7 @@ #include #include #include +#include #endif /* CONFIG_H_ */ \ No newline at end of file diff --git a/Mainboard/Mainboard/led.c b/Mainboard/Mainboard/led.c index ba948a6..50dba5f 100644 --- a/Mainboard/Mainboard/led.c +++ b/Mainboard/Mainboard/led.c @@ -6,6 +6,7 @@ */ #include +#include "led.h" void led(int mask) { int rgb = 0; @@ -20,4 +21,29 @@ void led(int mask) { void init_led() { DDRB |= (1< #include +#include #include "usb_user_config.h" // USB configuration #include "usb_user.h" // USB functions +#include "usb.h" #ifdef USERDEFCONTROLS // see usbconfig.h //----------------------------------------------------------------------------- @@ -41,7 +43,7 @@ bool usb_controlrequest(struct usb_control_request *ucr) { // "datasize" contains the number of bytes in the USB FIFO buffer void usb_ep(uint8_t endpoint, uint16_t datasize) { #define RXENDPOINT 0x01 // endpoint, used for data transfer host->device (defined in "usb_user_config.h") - #define TXENDPOINT 0x81 // endpoint, used for data transfer device->host + #define TXENDPOINT 0x82 // endpoint, used for data transfer device->host #define BUFSIZE 32 // USB FIFO buffer size (see usb_user_config.h at "endpoints") char buf[BUFSIZE]; // buffer for received data from host and data to transmit to host @@ -51,9 +53,10 @@ void usb_ep(uint8_t endpoint, uint16_t datasize) { n=usb_rxdata(endpoint, (uint8_t *)buf, sizeof(buf)); // read data into buffer if (n) { // data read into local buffer buf[BUFSIZE-1]=0; // for security: terminate string + //resi(buf); strupr(buf); // upper case string // response to host with converted string - usb_txdata(TXENDPOINT, (uint8_t *)buf, sizeof(buf)); // transfer data to host + usb_txdata(TXENDPOINT, (uint8_t *)buf, sizeof(buf)); // transfer data to host*/ } } } @@ -62,7 +65,17 @@ void init_usb() { usb_init(); } -void usb_send(char * text) { - #define TXENDPOINT 0x81 - usb_txdata(TXENDPOINT, (uint8_t *)text, sizeof(text)); +void usb_send(char* text) { + #define RXENDPOINT 0x01 + #define TXENDPOINT 0x82 + #define ITENDPOINT 0x83 + usb_txdata(TXENDPOINT, (uint8_t *)text, strlen(text)); +} + +uint8_t usb_getstatus() { + return usb_status(); +} + +uint8_t usb_ready() { + return usb_is_ready(); } \ No newline at end of file diff --git a/Mainboard/Mainboard/usb.h b/Mainboard/Mainboard/usb.h index e4ba5b6..c1b357f 100644 --- a/Mainboard/Mainboard/usb.h +++ b/Mainboard/Mainboard/usb.h @@ -9,9 +9,13 @@ #ifndef USB_H_ #define USB_H_ +#include "usb_user.h" + void init_usb(); void usb_send(char * text); - +uint8_t usb_getstatus(); +uint8_t usb_ready(); +void resi(char * text); #endif /* USB_H_ */ \ No newline at end of file diff --git a/Mainboard/Mainboard/usb_user.c b/Mainboard/Mainboard/usb_user.c index 5a2959f..adf7226 100644 --- a/Mainboard/Mainboard/usb_user.c +++ b/Mainboard/Mainboard/usb_user.c @@ -256,6 +256,10 @@ static inline void usb_wait_in_ready(void) while (!(UEINTX & _BV(TXINI))); } +uint8_t usb_is_ready() { + return (UEINTX & _BV(TXINI)); +} + void usb_wait_in(void) // wait for host, until it's ready to receive IN package { diff --git a/Mainboard/Mainboard/usb_user.h b/Mainboard/Mainboard/usb_user.h index f0ff408..825c725 100644 --- a/Mainboard/Mainboard/usb_user.h +++ b/Mainboard/Mainboard/usb_user.h @@ -249,4 +249,6 @@ bool usb_txdata(uint8_t endpoint, uint8_t *buffer, uint8_t datasize); void usb_freebuffer(uint8_t endpoint); +uint8_t usb_is_ready(); + #endif diff --git a/Mainboard/Mainboard/usb_user_config.h b/Mainboard/Mainboard/usb_user_config.h index e45d215..0243824 100644 --- a/Mainboard/Mainboard/usb_user_config.h +++ b/Mainboard/Mainboard/usb_user_config.h @@ -70,9 +70,9 @@ Changed: 2011-03-12 // USB Serial Number (optional) // will be a part of the descriptor and can be requested by the host -#define USESN 0 // Options: 0= no S/N; 1= S/N inside the flash memory; 2= S/N inside RAM +#define USESN 1 // Options: 0= no S/N; 1= S/N inside the flash memory; 2= S/N inside RAM #if (USESN==1) -#define STR_SERIAL_NUMBER L"000000" // your serial number, stored in flash memory +#define STR_SERIAL_NUMBER L"000001" // your serial number, stored in flash memory #endif // Vendor ID @@ -186,7 +186,7 @@ static const ep_config EP_CONFIG[MAX_ENDPOINT] = { #endif // modify the following lines for your purposes {EP_TYPE_BULK_OUT, 32, EP_SINGLE_BUFFER}, // one OUT and one IN endpoint with bulk transfer in this example - {EP_TYPE_BULK_IN, 32, EP_SINGLE_BUFFER}, + {EP_TYPE_BULK_IN, 32, EP_SINGLE_BUFFER}, {EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER}, {EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER} #ifdef MEGA4_6 // the following endpoints are only available on ATMEGAxxU4 and AT90USB64x/128x controllers @@ -197,10 +197,10 @@ static const ep_config EP_CONFIG[MAX_ENDPOINT] = { #if (NUMINTERFACES>1) },{ // modify the following lines for your purposes - {EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER}, - {EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER}, - {EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER}, - {EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER} + {EP_TYPE_INTERRUPT_IN, 32, EP_SINGLE_BUFFER}, + {EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER}, + {EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER}, + {EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER} #ifdef MEGA4_6 // the following endpoints are only available on ATMEGAxxU4 and AT90USB64x/128x controllers , {EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER},