diff --git a/Button/Button.atsuo b/Button/Button.atsuo index 88004ff..97a7d10 100644 Binary files a/Button/Button.atsuo and b/Button/Button.atsuo differ diff --git a/Button/Button/Button.cpp b/Button/Button/Button.cpp index 8823268..4eae6f7 100644 --- a/Button/Button/Button.cpp +++ b/Button/Button/Button.cpp @@ -24,7 +24,7 @@ outclass o; //////////////////// LED ////////////////////////////////////////// typedef Led ledclass; ledclass l; -///////////////////////// UART //////////////////////////////////// +/*///////////////////////// UART //////////////////////////////////// typedef Uart<9600> uartclass; uartclass u; ///////////////////////// SPI ///////////////////////////////////// @@ -32,11 +32,11 @@ typedef Spi spiclass; spiclass s; ///////////////////////// CAN ///////////////////////////////////// typedef Can canclass; -canclass c; +canclass c;*/ uint8_t button_id = 1; -void init() { +/*void init() { l.color(l.YELLOW); u.send("Init Start...\r\n"); @@ -62,15 +62,31 @@ void init() { } l.color(l.WHITE); -} +}*/ int main(void) -{ - init(); - +{ + //init(); +while(1) { + l.setColor(0xAA,0xFE,0x63); + /*for(uint16_t i=0; i<0xFF; i++) { + asm volatile ("nop"); + }*/ + _delay_ms(350); + l.setColor(0xFE,0xFE,0xFE); + /*for(uint16_t i=0; i<0xFF; i++) { + asm volatile ("nop"); + }*/ + _delay_ms(350); + l.rainbow(5); +} while(1) { - CANMessage m; + _delay_ms(2000); + + _delay_ms(2000); + + /*CANMessage m; if(0xff != c.can_get_message(&m)) { if(m.data[0] == button_id) { switch(m.data[1]) { @@ -85,14 +101,19 @@ int main(void) break; } } - } - u.send("Stuff!\r\n"); + }*/ + + //u.send("Stuff!\r\n"); //o.AudioOn(); //c.can_send_message(&m); //_delay_ms(1); //o.AudioOff(); - l.rainbow(5); - _delay_ms(10000); + + //_delay_ms(10000); } +} +ISR(TIMER2_COMP_vect) { + //l.color(l.RED); + //l.timer(); } \ No newline at end of file diff --git a/Button/Button/Button.cppproj b/Button/Button/Button.cppproj index 534371e..003c052 100644 --- a/Button/Button/Button.cppproj +++ b/Button/Button/Button.cppproj @@ -45,7 +45,7 @@ 0000000000000 127.0.0.1 - 51031 + 56835 False @@ -53,7 +53,7 @@ 249000 1000000 - 150000 + 250000 false false 0 @@ -116,43 +116,43 @@ - True - True - True - True - True - True - - - DEBUG - - - Optimize most (-O3) - True - True - Default (-g2) - True - True - True - - - DEBUG - - - Optimize for size (-Os) - True - True - Default (-g2) - True - -std=c++11 - - - libm - - - <segmentname>=<address>, for example .boot=0xff - Default (-Wa,-g) - + True + True + True + True + True + True + + + DEBUG + + + Optimize most (-O3) + True + True + Default (-g2) + True + True + True + + + DEBUG + + + Optimize for size (-Os) + True + True + Default (-g2) + True + -std=c++11 + + + libm + + + <segmentname>=<address>, for example .boot=0xff + Default (-Wa,-g) + diff --git a/Button/Button/Debug/Button.elf b/Button/Button/Debug/Button.elf index b825d2c..be3b884 100644 Binary files a/Button/Button/Debug/Button.elf and b/Button/Button/Debug/Button.elf differ diff --git a/Button/Button/Debug/Button.hex b/Button/Button/Debug/Button.hex index 34fec10..9915310 100644 --- a/Button/Button/Debug/Button.hex +++ b/Button/Button/Debug/Button.hex @@ -1,236 +1,34 @@ :100000000C942B000C9453000C9453000C9453004C -:100010000C9453000C9453000C9453000C94530014 +:100010000C94D5000C9453000C9453000C94530092 :100020000C9453000C9453000C9453000C94530004 :100030000C9453000C9453000C9453000C945300F4 :100040000C9453000C9453000C9453000C945300E4 -:100050000C945300020411241FBECFE5D8E0DEBF8C -:10006000CDBF10E0A0E6B0E0E6E1FEE002C0059002 -:100070000D92AC3EB107D9F720E0ACEEB0E001C084 -:100080001D92A23FB207E1F710E0C6E5D0E004C040 -:100090002297FE010E943004C435D107C9F70E949F -:1000A000AE030C9409070C9400005D9BFECF8CB945 -:1000B00080E00895CF93DF93EC0102C00E945500C9 -:1000C00089918111FBCFDF91CF910895BD9A089559 -:1000D000BF9A089580FF02C0A89A01C0A898A09A6C -:1000E00081FF02C0A99A01C0A998A19A82FF02C00B -:1000F000AA9A01C0AA98A29A0895BF92CF92DF92BD -:10010000EF92FF920F931F93CF93DF93D82EC62EBB -:10011000B42EC0E0D0E019C01E2D8D2D0E946A00C3 -:100120001F5F1F3FD1F700E010E005C08C2D0E943B -:100130006A000F5F1F4F0C171D07C4F3F394FB10E9 -:10014000EBCF2196CF3FD10519F0EC2EF12CF7CF54 -:10015000DF91CF911F910F91FF90EF90DF90CF90A3 -:10016000BF900895EF92FF920F931F93CF93DF9369 -:10017000CDB7DEB7E2970FB6F894DEBF0FBECDBFA6 -:10018000E62E1F926F9381E690E09F938F938E01EE -:100190000F5F1F4F1F930F930E943404C8010E94EA -:1001A0005A00EFB80F900F900F900F900F900F9094 -:1001B000779BFECF8FB118E0F12CFF0CC7980E94FF -:1001C0006800E7FE02C0C59A01C0C5980E9466009B -:1001D00085E08A95F1F70000B69B02C081E0F82A1D -:1001E00085E08A95F1F70000C79A0E9468008AE0CE -:1001F0008A95F1F700C0EE0C1150F9F61F92FF92AC -:100200002BE630E03F932F938E010F5F1F4F1F931C -:100210000F930E943404C8010E945A000F900F905F -:100220000F900F900F900F908F2DE2960FB6F894CD -:10023000DEBF0FBECDBFDF91CF911F910F91FF9019 -:10024000EF900895C498BC9A0895C49ABC9A0895F2 -:10025000FF920F931F93CF93DF931F92CDB7DEB71B -:10026000F82E092F162F49830E94220162E08F2D5C -:10027000902F0E94B200612F8F2D902F0E94B2000C -:100280004981642F8F2D902F0E94B2000F90DF9133 -:10029000CF911F910F91FF900C942501CF93DF9385 -:1002A000EC010E94220160ECCE010E94B2008FE9B5 -:1002B0009FE00197F1F700C000000E9425018FE345 -:1002C0009CE90197F1F700C0000047E06AE2CE0127 -:1002D0000E94280140E969E2CE010E94280142E023 -:1002E00068E2CE010E94280143E06BE2CE010E9449 -:1002F000280140E660E6CE010E94280140E660E762 -:10030000CE010E94280140E060E2CE010E94280157 -:1003100040E061E2CE010E94280140E062E2CE01AD -:100320000E94280140E063E2CE010E94280140E0E3 -:1003300064E2CE010E94280140E065E2CE010E9405 -:10034000280140E066E2CE010E94280140E067E219 -:10035000CE010E94280140E06CE0CE01DF91CF91F8 -:100360000C942801AF92BF92CF92DF92EF92FF924E -:100370000F931F93CF93DF931F92CDB7DEB76C011E -:100380008B010E94220160EAC6010E94B2006FEF59 -:10039000C6010E94B20089836FEFC6010E94B200BD -:1003A0000E942501898182FF09C0898184FF08C0DC -:1003B000898186FD5EC034E0B32E04C0B12C02C03A -:1003C00022E0B22E0E9422016B2D6064C6010E94C1 -:1003D000B200F8016081718193E0769567959A95F6 -:1003E000E1F7C6010E94B200F80160816295660FD4 -:1003F000607EC6010E94B20060E0C6010E94B200A9 -:1004000060E0C6010E94B200F801A380F8E0FA158E -:1004100010F488E0A82EF80182816A2D882329F043 -:100420006064C6010E94B20012C0C6010E94B20000 -:10043000E12CF12C0AC0F801EE0DFF1D6481C6010C -:100440000E94B200FFEFEF1AFF0AEA14A0F30E9425 -:10045000250100000E942201B11002C061E802C023 -:100460006B2D6068C6010E94B2000E94250181E0E8 -:1004700001C080E00F90DF91CF911F910F91FF900D -:10048000EF90DF90CF90BF90AF900895CF93DF9320 -:10049000CDB7DEB72C970FB6F894DEBF0FBECDBF39 -:1004A0002D898B899C899A8389831B822C83CE0119 -:1004B0004696FC01DE01159680E090E030E004C035 -:1004C00040814D930196329682179307CCF3BE017B -:1004D0006F5F7F4F89899A890E94B2012C960FB66F -:1004E000F894DEBF0FBECDBFDF91CF910895FF928C -:1004F0000F931F93CF93DF9300D0CDB7DEB7F82EC5 -:10050000092F162F2A8349830E94220165E08F2D2F -:10051000902F0E94B200612F8F2D902F0E94B20069 -:100520004981642F8F2D902F0E94B2002A81622F63 -:100530008F2D902F0E94B2000F900F90DF91CF91DE -:100540001F910F91FF900C942501AF92BF92CF9213 -:10055000DF92EF92FF920F931F93CF93DF931F923F -:10056000CDB7DEB76C018B010E94220160EBC601A2 -:100570000E94B2006FEFC6010E94B200B82E6FEF6A -:10058000C6010E94B2000E942501B982898186FFBE -:1005900004C00E94220160E906C0898187FF5DC016 -:1005A0000E94220164E9C6010E94B2006FEFC601F9 -:1005B0000E94B20028E0829FC0011124F8019183BB -:1005C00080836FEFC6010E94B200482F50E065E0C3 -:1005D000569547956A95E1F7F80120813181242BE2 -:1005E000352B318320836FEFC6010E94B2006FEF7D -:1005F000C6010E94B2006FEFC6010E94B2007FE008 -:10060000A72EA822F801A382E12CF12C0BC06FEFDA -:10061000C6010E94B200F801EE0DFF1D8483FFEFBA -:10062000EF1AFF0AEA1498F30E942501898183FFDB -:1006300004C081E0F801828302C0F801128289813E -:1006400020E086FF02C041E001C042E06CE2C6014A -:100650000E9477028B2D877001C08FEF0F90DF9182 -:10066000CF911F910F91FF90EF90DF90CF90BF90AF -:10067000AF900895CF93DF93CDB7DEB72C970FB629 -:10068000F894DEBF0FBECDBF86E00E946A0088E707 -:1006900090E00E945A0088E890E00E945A00809101 -:1006A00060001F928F931F9281E08F9382E08F935F -:1006B0001F921F928CEE90E09F938F930E944602B0 -:1006C0002FEF83ED90E3215080409040E1F700C090 -:1006D000000085EA90E00E945A000FB6F894DEBF51 -:1006E0000FBECDBFBE016F5F7F4F8CEE90E00E94CA -:1006F000A5028F3F51F49FEF21EE84E091502040FE -:100700008040E1F700C00000EDCF8D81823089F498 -:100710008EEB90E00E945A008E810E94550088EE78 -:1007200090E00E945A009E81809160009813DACF79 -:100730000CC081ED90E00E945A008D810E9455000E -:1007400088EE90E00E945A00CDCF2C960FB6F89418 -:10075000DEBF0FBECDBFDF91CF9108950E943A0357 -:100760004AE064E086E00E947D0085ED90E00E9412 -:100770005A0045E066E084E00E947D0045E062E0CA -:1007800086E00E947D0045E063E082E00E947D00FB -:1007900045E061E083E00E947D0045E065E081E0A6 -:1007A0000E947D0045E064E085E00E947D002AEA29 -:1007B00036EE86E991E02150304080409040D9F7F4 -:1007C0000000D3CF87E689B988E08AB986E880BD82 -:1007D0008EED90E00E945A000E946600C5980E942B -:1007E00066000E946800C7980E946800BC9A0E9438 -:1007F0002501BE98C698C698BE9A80E58DB981E05D -:100800008EB908951F93CF93DF93A59AAD98A59ABB -:10081000A49AAC98A49AA29AA19AA09A17E619B998 -:10082000D8E0DAB9C6E8C0BD8EED90E00E945A006B -:100830008EEE90E00E94E2038CEE90E00E94E203D4 -:1008400019B9DAB9C0BD8EED90E00E945A008CEE65 -:1008500090E0DF91CF911F910C944E01EE0FFF1F9E -:100860000590F491E02D0994AEE0B0E0EAE3F4E005 -:100870000C94E0060D891E8986E08C831A83098317 -:100880008FEF9FE79E838D83CE014996AC016F89E0 -:10089000788DCE0101960E945604EF81F885E00F15 -:1008A000F11F10822E96E4E00C94FC06ACE0B0E060 -:1008B000ECE5F4E00C94D2067C016B018A01FC01AA -:1008C00017821682838181FFC6C188248394912C6C -:1008D0008C0E9D1EF7019381F60193FD859193FF88 -:1008E00081916F01882309F4B2C1853239F493FDF7 -:1008F000859193FF81916F01853229F4B70190E0D2 -:100900000E944806E7CF512C312C20E02032A8F479 -:100910008B3261F028F4803251F0833271F40BC0D5 -:100920008D3239F0803349F4216028C02260246080 -:1009300025C0286023C0206121C027FD27C0382F93 -:1009400030533A3078F426FF06C0FAE05F9E300D4F -:100950001124532E13C08AE0389E300D1124332EFB -:1009600020620CC08E3221F426FD71C1206406C0C5 -:100970008C3611F4206802C0883641F4F60193FDEC -:10098000859193FF81916F018111C0CF982F95546C -:10099000933018F09052933028F40C5F1F4FFFE310 -:1009A000F9830DC0833631F0833771F0833509F058 -:1009B0005EC023C0F801808189830E5F1F4F4424ED -:1009C0004394512C540115C03801F2E06F0E711C94 -:1009D000F801A080B18026FF03C0652D70E002C041 -:1009E0006FEF7FEFC5012C870E943D062C0183012C -:1009F0002C856FE7262E222218C03801F2E06F0EF8 -:100A0000711CF801A080B18026FF03C0652D70E045 -:100A100002C06FEF7FEFC5012C870E9432062C01C8 -:100A20002C8550E8252E222A830123FC1CC006C0F9 -:100A3000B70180E290E00E9448063A94832D90E04E -:100A400048165906A8F30FC0F50127FC859127FE2B -:100A500081915F01B70190E00E94480631103A94FD -:100A6000F1E04F1A51084114510471F7EDC084367A -:100A700011F0893641F5F80127FF07C060817181C7 -:100A8000828193810C5F1F4F08C06081718188272C -:100A900077FD8095982F0E5F1F4F4FE6B42EB22240 -:100AA00097FF09C090958095709561957F4F8F4F06 -:100AB0009F4FF0E8BF2A2AE030E0A4010E947406AC -:100AC000A82EA81843C0853731F43FEEB32EB222CA -:100AD0002AE030E024C099EFB92EB2228F36B9F067 -:100AE00020F4883509F0B3C00DC0803721F0883775 -:100AF00009F0ADC002C020E1B22AB4FE0BC084E010 -:100B0000B82A08C024FF09C0E6E0BE2A06C028E0D3 -:100B100030E005C020E130E002C020E132E0F80121 -:100B2000B7FE07C060817181828193810C5F1F4F86 -:100B300006C06081718180E090E00E5F1F4FA401CC -:100B40000E947406A82EA818FFE7BF22B6FE0BC0AD -:100B50002B2D2E7FA51450F4B4FE0AC0B2FC08C0A1 -:100B60002B2D2E7E05C07A2C2B2D03C07A2C01C094 -:100B7000752C24FF0DC0FE01EA0DF11D808180332C -:100B800011F4297E09C022FF06C07394739404C037 -:100B9000822F867809F0739423FD14C020FF0FC0C4 -:100BA0005A2C731460F4530C5718732C08C0B701F7 -:100BB00080E290E02C870E94480673942C85731481 -:100BC000B0F304C0731410F4371801C0312C24FFA3 -:100BD00012C0B70180E390E02C870E9448062C8564 -:100BE00022FF1EC021FF03C088E590E002C088E715 -:100BF00090E0B7010CC0822F867891F021FD02C0F1 -:100C000080E201C08BE227FD8DE2B70190E00E94F7 -:100C1000480606C0B70180E390E00E9448065A9457 -:100C2000A514C0F3AA94F401EA0DF11DB701808167 -:100C300090E00E944806A110F5CF06C0B70180E2FF -:100C400090E00E9448063A943110F8CF43CEF70165 -:100C50002681378102C02FEF3FEFC9012C96E2E1D8 -:100C60000C94EE06FC010590615070400110D8F71D -:100C7000809590958E0F9F1F0895FC0161507040E4 -:100C800001900110D8F7809590958E0F9F1F0895C1 -:100C90000F931F93CF93DF938C01EB018B8181FD29 -:100CA00003C00FEF1FEF1AC082FF0DC02E813F81DE -:100CB0008C819D812817390764F4E881F9810193BB -:100CC000F983E88306C0E885F985802F0995892B8B -:100CD00041F78E819F8101969F838E83C801DF91AA -:100CE000CF911F910F910895FA01AA27283051F151 -:100CF000203181F1E8946F936E7F6E5F7F4F8F4F4D -:100D00009F4FAF4FB1E03ED0B4E03CD0670F781FAB -:100D1000891F9A1FA11D680F791F8A1F911DA11D90 -:100D20006A0F711D811D911DA11D20D009F46894C9 -:100D30003F912AE0269F11243019305D3193DEF671 -:100D4000CF010895462F4770405D4193B3E00FD027 -:100D5000C9F7F6CF462F4F70405D4A3318F0495D12 -:100D600031FD4052419302D0A9F7EACFB4E0A695F5 -:100D70009795879577956795BA95C9F70097610517 -:100D8000710508959B01AC010A2E0694579547956D -:100D900037952795BA95C9F7620F731F841F951F62 -:100DA000A01D08952F923F924F925F926F927F9273 -:100DB0008F929F92AF92BF92CF92DF92EF92FF926B -:100DC0000F931F93CF93DF93CDB7DEB7CA1BDB0B17 -:100DD0000FB6F894DEBF0FBECDBF09942A883988BC -:100DE00048885F846E847D848C849B84AA84B984C3 -:100DF000C884DF80EE80FD800C811B81AA81B981CF -:100E0000CE0FD11D0FB6F894DEBF0FBECDBFED01E2 -:060E10000895F894FFCFE5 -:100E1600012D3E2030782530327800203C2D2030C0 -:100E260078253032780D0A00496E69742053746152 -:100E360072742E2E2E0D0A002D3E20427574746F8C -:100E46006E20494420416E6E6F756E63656D656EEA -:100E5600743A0D0A005761697420666F72204D61FD -:100E6600737465722041636B2E2E2E0D0A003C2D85 -:100E760020427574746F6E2049442041636B3A209A -:100E8600003C2D20005374756666210D0A005561DD -:0C0E9600727420646F6E65210D0A00006C +:100050000C945300DF0011241FBECFE5D8E0DEBFB3 +:10006000CDBF10E0A0E6B0E0EEEFF1E002C00590F9 +:100070000D92A236B107D9F720E0A2E6B0E001C0A8 +:100080001D92A636B207E1F710E0C6E5D0E004C045 +:100090002297FE010E94F900C435D107C9F70E94DA +:1000A0009B000C94FD000C94000080FF02C0A89AF5 +:1000B00001C0A898A09A81FF02C0A99A01C0A9987E +:1000C000A19A82FF02C0AA9A01C0AA98A29A089592 +:1000D000CF92DF92EF92FF920F931F93CF93DF9314 +:1000E000D82EC62EC0E0D0E019C08D2D0E9455003C +:1000F0001F5F1F3FD1F700E010E005C08C2D0E946C +:1001000055000F5F1F4F0C171D07C4F3FA9411F031 +:100110001E2DEBCF2196CF3FD10521F0EC2E85E0AF +:10012000F82EF6CFDF91CF911F910F91FF90EF90B6 +:10013000DF90CF9008951AEACEEFD3E610936200D5 +:10014000C0936300D09364002FEF86E191E12150CA +:1001500080409040E1F700C00000C0936200C0936F +:100160006300C09364002FEF86E191E1215080404D +:100170009040E1F700C0000066E084E00E94680063 +:1001800062E086E00E94680063E082E00E9468000E +:1001900061E083E00E94680065E081E00E94680001 +:1001A00064E085E00E946800C9CF1F920F920FB6ED +:1001B0000F9211240F900FBE0F901F901895A59AC3 +:1001C000AD98A59AA49AAC98A49A10926200109245 +:1001D000630010926400A29AA19AA09A12BC85E0D2 +:1001E00085BD14BC13BC80E889BF78940895EE0FD8 +:0E01F000FF1F0590F491E02D0994F894FFCFC5 +:0201FE000100FE :00000001FF diff --git a/Button/Button/Debug/Button.lss b/Button/Button/Debug/Button.lss index e57bb31..2768df5 100644 --- a/Button/Button/Debug/Button.lss +++ b/Button/Button/Debug/Button.lss @@ -3,33 +3,33 @@ Button.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .text 00000e16 00000000 00000000 00000094 2**1 + 0 .text 000001fe 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .data 0000008c 00800060 00000e16 00000eaa 2**0 + 1 .data 00000002 00800060 000001fe 00000292 2**0 CONTENTS, ALLOC, LOAD, DATA - 2 .bss 00000006 008000ec 008000ec 00000f36 2**0 + 2 .bss 00000004 00800062 00800062 00000294 2**0 ALLOC - 3 .stab 00000c84 00000000 00000000 00000f38 2**2 + 3 .stab 000006cc 00000000 00000000 00000294 2**2 CONTENTS, READONLY, DEBUGGING - 4 .stabstr 000001aa 00000000 00000000 00001bbc 2**0 + 4 .stabstr 00000082 00000000 00000000 00000960 2**0 CONTENTS, READONLY, DEBUGGING - 5 .comment 0000002f 00000000 00000000 00001d66 2**0 + 5 .comment 0000002f 00000000 00000000 000009e2 2**0 CONTENTS, READONLY - 6 .debug_aranges 00000110 00000000 00000000 00001d95 2**0 + 6 .debug_aranges 00000040 00000000 00000000 00000a11 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_info 00003e52 00000000 00000000 00001ea5 2**0 + 7 .debug_info 00001454 00000000 00000000 00000a51 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_abbrev 000009b4 00000000 00000000 00005cf7 2**0 + 8 .debug_abbrev 0000037f 00000000 00000000 00001ea5 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_line 00000b5e 00000000 00000000 000066ab 2**0 + 9 .debug_line 00000289 00000000 00000000 00002224 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_frame 00000344 00000000 00000000 0000720c 2**2 + 10 .debug_frame 00000098 00000000 00000000 000024b0 2**2 CONTENTS, READONLY, DEBUGGING - 11 .debug_str 00001822 00000000 00000000 00007550 2**0 + 11 .debug_str 00000ac2 00000000 00000000 00002548 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 00001083 00000000 00000000 00008d72 2**0 + 12 .debug_loc 00000210 00000000 00000000 0000300a 2**0 CONTENTS, READONLY, DEBUGGING - 13 .debug_ranges 00000150 00000000 00000000 00009df5 2**0 + 13 .debug_ranges 00000078 00000000 00000000 0000321a 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -39,7 +39,7 @@ Disassembly of section .text: 4: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> 8: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> c: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> - 10: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> + 10: 0c 94 d5 00 jmp 0x1aa ; 0x1aa <__vector_4> 14: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> 18: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> 1c: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> @@ -58,7 +58,7 @@ Disassembly of section .text: 50: 0c 94 53 00 jmp 0xa6 ; 0xa6 <__bad_interrupt> 00000054 <__ctors_start>: - 54: 02 04 cpc r0, r2 + 54: df 00 .word 0x00df ; ???? 00000056 <__ctors_end>: 56: 11 24 eor r1, r1 @@ -72,18 +72,18 @@ Disassembly of section .text: 62: 10 e0 ldi r17, 0x00 ; 0 64: a0 e6 ldi r26, 0x60 ; 96 66: b0 e0 ldi r27, 0x00 ; 0 - 68: e6 e1 ldi r30, 0x16 ; 22 - 6a: fe e0 ldi r31, 0x0E ; 14 + 68: ee ef ldi r30, 0xFE ; 254 + 6a: f1 e0 ldi r31, 0x01 ; 1 6c: 02 c0 rjmp .+4 ; 0x72 <__do_copy_data+0x10> 6e: 05 90 lpm r0, Z+ 70: 0d 92 st X+, r0 - 72: ac 3e cpi r26, 0xEC ; 236 + 72: a2 36 cpi r26, 0x62 ; 98 74: b1 07 cpc r27, r17 76: d9 f7 brne .-10 ; 0x6e <__do_copy_data+0xc> 00000078 <__do_clear_bss>: 78: 20 e0 ldi r18, 0x00 ; 0 - 7a: ac ee ldi r26, 0xEC ; 236 + 7a: a2 e6 ldi r26, 0x62 ; 98 7c: b0 e0 ldi r27, 0x00 ; 0 7e: 01 c0 rjmp .+2 ; 0x82 <.do_clear_bss_start> @@ -91,7 +91,7 @@ Disassembly of section .text: 80: 1d 92 st X+, r1 00000082 <.do_clear_bss_start>: - 82: a2 3f cpi r26, 0xF2 ; 242 + 82: a6 36 cpi r26, 0x66 ; 102 84: b2 07 cpc r27, r18 86: e1 f7 brne .-8 ; 0x80 <.do_clear_bss_loop> @@ -102,2510 +102,371 @@ Disassembly of section .text: 8e: 04 c0 rjmp .+8 ; 0x98 <__do_global_ctors+0x10> 90: 22 97 sbiw r28, 0x02 ; 2 92: fe 01 movw r30, r28 - 94: 0e 94 30 04 call 0x860 ; 0x860 <__tablejump__> + 94: 0e 94 f9 00 call 0x1f2 ; 0x1f2 <__tablejump__> 98: c4 35 cpi r28, 0x54 ; 84 9a: d1 07 cpc r29, r17 9c: c9 f7 brne .-14 ; 0x90 <__do_global_ctors+0x8> - 9e: 0e 94 ae 03 call 0x75c ; 0x75c
- a2: 0c 94 09 07 jmp 0xe12 ; 0xe12 <_exit> + 9e: 0e 94 9b 00 call 0x136 ; 0x136
+ a2: 0c 94 fd 00 jmp 0x1fa ; 0x1fa <_exit> 000000a6 <__bad_interrupt>: a6: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> -000000aa <_ZN4UartILm9600EE12uart_putcharEh.isra.1>: - UBRRL = (F_CPU / (baudrate * 16L) - 1); //Teiler wird gesetzt - UCSRB = /*(1< - UDR = c; - ae: 8c b9 out 0x0c, r24 ; 12 - return 0; - } - b0: 80 e0 ldi r24, 0x00 ; 0 - b2: 08 95 ret - -000000b4 <_ZN4UartILm9600EE4sendEPKc.isra.2>: - public: - Uart() { - init(); - send("Uart done!\r\n"); - } - void send(const char *text) { - b4: cf 93 push r28 - b6: df 93 push r29 - b8: ec 01 movw r28, r24 - ba: 02 c0 rjmp .+4 ; 0xc0 <_ZN4UartILm9600EE4sendEPKc.isra.2+0xc> - while (*text) - { - uart_putchar(*text); - bc: 0e 94 55 00 call 0xaa ; 0xaa <_ZN4UartILm9600EE12uart_putcharEh.isra.1> - Uart() { - init(); - send("Uart done!\r\n"); - } - void send(const char *text) { - while (*text) - c0: 89 91 ld r24, Y+ - c2: 81 11 cpse r24, r1 - c4: fb cf rjmp .-10 ; 0xbc <_ZN4UartILm9600EE4sendEPKc.isra.2+0x8> - { - uart_putchar(*text); - text++; - } - } - c6: df 91 pop r29 - c8: cf 91 pop r28 - ca: 08 95 ret - -000000cc <_ZN6avrlib3pinINS_5portbELh5EE6outputEb.part.22>: - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - cc: bd 9a sbi 0x17, 5 ; 23 - ce: 08 95 ret - -000000d0 <_ZN6avrlib3pinINS_5portbELh7EE6outputEb.part.23>: - d0: bf 9a sbi 0x17, 7 ; 23 - d2: 08 95 ret - -000000d4 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.12>: +000000aa <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.10>: public: Led() { init(); } void color(uint8_t mask) { (mask & (1<<0)) ? blue::make_high() : blue::make_low(); - d4: 80 ff sbrs r24, 0 - d6: 02 c0 rjmp .+4 ; 0xdc <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.12+0x8> + aa: 80 ff sbrs r24, 0 + ac: 02 c0 rjmp .+4 ; 0xb2 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.10+0x8> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - d8: a8 9a sbi 0x15, 0 ; 21 - da: 01 c0 rjmp .+2 ; 0xde <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.12+0xa> - dc: a8 98 cbi 0x15, 0 ; 21 + ae: a8 9a sbi 0x15, 0 ; 21 + b0: 01 c0 rjmp .+2 ; 0xb4 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.10+0xa> + b2: a8 98 cbi 0x15, 0 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - de: a0 9a sbi 0x14, 0 ; 20 + b4: a0 9a sbi 0x14, 0 ; 20 (mask & (1<<1)) ? green::make_high() : green::make_low(); - e0: 81 ff sbrs r24, 1 - e2: 02 c0 rjmp .+4 ; 0xe8 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.12+0x14> + b6: 81 ff sbrs r24, 1 + b8: 02 c0 rjmp .+4 ; 0xbe <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.10+0x14> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - e4: a9 9a sbi 0x15, 1 ; 21 - e6: 01 c0 rjmp .+2 ; 0xea <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.12+0x16> - e8: a9 98 cbi 0x15, 1 ; 21 + ba: a9 9a sbi 0x15, 1 ; 21 + bc: 01 c0 rjmp .+2 ; 0xc0 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.10+0x16> + be: a9 98 cbi 0x15, 1 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - ea: a1 9a sbi 0x14, 1 ; 20 + c0: a1 9a sbi 0x14, 1 ; 20 (mask & (1<<2)) ? red::make_high() : red::make_low(); - ec: 82 ff sbrs r24, 2 - ee: 02 c0 rjmp .+4 ; 0xf4 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.12+0x20> + c2: 82 ff sbrs r24, 2 + c4: 02 c0 rjmp .+4 ; 0xca <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.10+0x20> namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - f0: aa 9a sbi 0x15, 2 ; 21 - f2: 01 c0 rjmp .+2 ; 0xf6 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.12+0x22> - f4: aa 98 cbi 0x15, 2 ; 21 + c6: aa 9a sbi 0x15, 2 ; 21 + c8: 01 c0 rjmp .+2 ; 0xcc <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.10+0x22> + ca: aa 98 cbi 0x15, 2 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - f6: a2 9a sbi 0x14, 2 ; 20 - f8: 08 95 ret + cc: a2 9a sbi 0x14, 2 ; 20 + ce: 08 95 ret -000000fa <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.13>: +000000d0 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.11.constprop.18>: fade(GREEN, CYAN, time); fade(CYAN, BLUE, time); fade(BLUE, MAGENTA, time); fade(MAGENTA, RED, time); } void fade(uint8_t from, uint8_t to, uint8_t dur) { - fa: bf 92 push r11 - fc: cf 92 push r12 - fe: df 92 push r13 - 100: ef 92 push r14 - 102: ff 92 push r15 - 104: 0f 93 push r16 - 106: 1f 93 push r17 - 108: cf 93 push r28 - 10a: df 93 push r29 - 10c: d8 2e mov r13, r24 - 10e: c6 2e mov r12, r22 - 110: b4 2e mov r11, r20 + d0: cf 92 push r12 + d2: df 92 push r13 + d4: ef 92 push r14 + d6: ff 92 push r15 + d8: 0f 93 push r16 + da: 1f 93 push r17 + dc: cf 93 push r28 + de: df 93 push r29 + e0: d8 2e mov r13, r24 + e2: c6 2e mov r12, r22 for (uint8_t i=0;i<0xFF;i++) { for(uint8_t k=0;k - fade(BLUE, MAGENTA, time); - fade(MAGENTA, RED, time); - } - void fade(uint8_t from, uint8_t to, uint8_t dur) { - for (uint8_t i=0;i<0xFF;i++) { - for(uint8_t k=0;k color(from); - 11a: 8d 2d mov r24, r13 - 11c: 0e 94 6a 00 call 0xd4 ; 0xd4 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.12> + ea: 8d 2d mov r24, r13 + ec: 0e 94 55 00 call 0xaa ; 0xaa <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.10> fade(MAGENTA, RED, time); } void fade(uint8_t from, uint8_t to, uint8_t dur) { for (uint8_t i=0;i<0xFF;i++) { for(uint8_t k=0;k - 126: 00 e0 ldi r16, 0x00 ; 0 - 128: 10 e0 ldi r17, 0x00 ; 0 - 12a: 05 c0 rjmp .+10 ; 0x136 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.13+0x3c> + f0: 1f 5f subi r17, 0xFF ; 255 + f2: 1f 3f cpi r17, 0xFF ; 255 + f4: d1 f7 brne .-12 ; 0xea <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.11.constprop.18+0x1a> + f6: 00 e0 ldi r16, 0x00 ; 0 + f8: 10 e0 ldi r17, 0x00 ; 0 + fa: 05 c0 rjmp .+10 ; 0x106 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.11.constprop.18+0x36> color(from); } for (int j=0;j + fc: 8c 2d mov r24, r12 + fe: 0e 94 55 00 call 0xaa ; 0xaa <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.10> for (uint8_t i=0;i<0xFF;i++) { for(uint8_t k=0;k + 102: 0f 5f subi r16, 0xFF ; 255 + 104: 1f 4f sbci r17, 0xFF ; 255 + 106: 0c 17 cp r16, r28 + 108: 1d 07 cpc r17, r29 + 10a: c4 f3 brlt .-16 ; 0xfc <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.11.constprop.18+0x2c> + 10c: fa 94 dec r15 fade(BLUE, MAGENTA, time); fade(MAGENTA, RED, time); } void fade(uint8_t from, uint8_t to, uint8_t dur) { for (uint8_t i=0;i<0xFF;i++) { for(uint8_t k=0;k - 142: 21 96 adiw r28, 0x01 ; 1 + 10e: 11 f0 breq .+4 ; 0x114 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.11.constprop.18+0x44> + fade(GREEN, CYAN, time); fade(CYAN, BLUE, time); fade(BLUE, MAGENTA, time); fade(MAGENTA, RED, time); } void fade(uint8_t from, uint8_t to, uint8_t dur) { + 110: 1e 2d mov r17, r14 + 112: eb cf rjmp .-42 ; 0xea <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.11.constprop.18+0x1a> + 114: 21 96 adiw r28, 0x01 ; 1 for (uint8_t i=0;i<0xFF;i++) { - 144: cf 3f cpi r28, 0xFF ; 255 - 146: d1 05 cpc r29, r1 - 148: 19 f0 breq .+6 ; 0x150 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.13+0x56> - 14a: ec 2e mov r14, r28 + 116: cf 3f cpi r28, 0xFF ; 255 + 118: d1 05 cpc r29, r1 + 11a: 21 f0 breq .+8 ; 0x124 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.11.constprop.18+0x54> + 11c: ec 2e mov r14, r28 for(uint8_t k=0;k + 11e: 85 e0 ldi r24, 0x05 ; 5 + 120: f8 2e mov r15, r24 + 122: f6 cf rjmp .-20 ; 0x110 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.11.constprop.18+0x40> for (int j=0;j: - cs::make_low(); - } - void CSOff() { - cs::make_high(); - } - uint8_t send(uint8_t data) { - 164: ef 92 push r14 - 166: ff 92 push r15 - 168: 0f 93 push r16 - 16a: 1f 93 push r17 - 16c: cf 93 push r28 - 16e: df 93 push r29 - 170: cd b7 in r28, 0x3d ; 61 - 172: de b7 in r29, 0x3e ; 62 - 174: e2 97 sbiw r28, 0x32 ; 50 - 176: 0f b6 in r0, 0x3f ; 63 - 178: f8 94 cli - 17a: de bf out 0x3e, r29 ; 62 - 17c: 0f be out 0x3f, r0 ; 63 - 17e: cd bf out 0x3d, r28 ; 61 - 180: e6 2e mov r14, r22 - char t[50]; - sprintf(t, "-> 0x%02x", data); - 182: 1f 92 push r1 - 184: 6f 93 push r22 - 186: 81 e6 ldi r24, 0x61 ; 97 - 188: 90 e0 ldi r25, 0x00 ; 0 - 18a: 9f 93 push r25 - 18c: 8f 93 push r24 - 18e: 8e 01 movw r16, r28 - 190: 0f 5f subi r16, 0xFF ; 255 - 192: 1f 4f sbci r17, 0xFF ; 255 - 194: 1f 93 push r17 - 196: 0f 93 push r16 - 198: 0e 94 34 04 call 0x868 ; 0x868 - u.send(t); - 19c: c8 01 movw r24, r16 - 19e: 0e 94 5a 00 call 0xb4 ; 0xb4 <_ZN4UartILm9600EE4sendEPKc.isra.2> - } - return datain; - } - uint8_t send_hard(uint8_t data) { - // Sendet ein Byte - SPDR = data; - 1a2: ef b8 out 0x0f, r14 ; 15 - 1a4: 0f 90 pop r0 - 1a6: 0f 90 pop r0 - 1a8: 0f 90 pop r0 - 1aa: 0f 90 pop r0 - 1ac: 0f 90 pop r0 - 1ae: 0f 90 pop r0 - - // Wartet bis Byte gesendet wurde - loop_until_bit_is_set(SPSR, SPIF); - 1b0: 77 9b sbis 0x0e, 7 ; 14 - 1b2: fe cf rjmp .-4 ; 0x1b0 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh+0x4c> - - return SPDR; - 1b4: 8f b1 in r24, 0x0f ; 15 - 1b6: 18 e0 ldi r17, 0x08 ; 8 - void init_spi() { - SPCR = (1<0; a--) { //das Byte wird Bitweise nacheinander Gesendet MSB zuerst - datain<<=1; //Schieben um das Richtige Bit zusetzen - 1ba: ff 0c add r15, r15 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 1bc: c7 98 cbi 0x18, 7 ; 24 - 1be: 0e 94 68 00 call 0xd0 ; 0xd0 <_ZN6avrlib3pinINS_5portbELh7EE6outputEb.part.23> - sck::make_low(); // Clock auf LOW - if (data & 0x80) { //Ist Bit a in Byte gesetzt - 1c2: e7 fe sbrs r14, 7 - 1c4: 02 c0 rjmp .+4 ; 0x1ca <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh+0x66> - 1c6: c5 9a sbi 0x18, 5 ; 24 - 1c8: 01 c0 rjmp .+2 ; 0x1cc <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh+0x68> - 1ca: c5 98 cbi 0x18, 5 ; 24 - 1cc: 0e 94 66 00 call 0xcc ; 0xcc <_ZN6avrlib3pinINS_5portbELh5EE6outputEb.part.22> +00000136
: + static const uint8_t RED = 4; + static const uint8_t MAGENTA = 5; + static const uint8_t YELLOW = 6; + static const uint8_t WHITE = 7; + void setColor(uint8_t cr, uint8_t cg, uint8_t cb) { + r = cr; + 136: 1a ea ldi r17, 0xAA ; 170 + g = cg; + 138: ce ef ldi r28, 0xFE ; 254 + b = cb; + 13a: d3 e6 ldi r29, 0x63 ; 99 + static const uint8_t RED = 4; + static const uint8_t MAGENTA = 5; + static const uint8_t YELLOW = 6; + static const uint8_t WHITE = 7; + void setColor(uint8_t cr, uint8_t cg, uint8_t cb) { + r = cr; + 13c: 10 93 62 00 sts 0x0062, r17 + g = cg; + 140: c0 93 63 00 sts 0x0063, r28 + b = cb; + 144: d0 93 64 00 sts 0x0064, r29 #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 1d0: 85 e0 ldi r24, 0x05 ; 5 - 1d2: 8a 95 dec r24 - 1d4: f1 f7 brne .-4 ; 0x1d2 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh+0x6e> - 1d6: 00 00 nop - } - else{ - mosi::make_low(); //Set Output Low - } - _delay_us(1); - if(miso::read()) //Lesen des Pegels - 1d8: b6 9b sbis 0x16, 6 ; 22 - 1da: 02 c0 rjmp .+4 ; 0x1e0 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh+0x7c> - { - datain |= 1; - 1dc: 81 e0 ldi r24, 0x01 ; 1 - 1de: f8 2a or r15, r24 - 1e0: 85 e0 ldi r24, 0x05 ; 5 - 1e2: 8a 95 dec r24 - 1e4: f1 f7 brne .-4 ; 0x1e2 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh+0x7e> - 1e6: 00 00 nop - 1e8: c7 9a sbi 0x18, 7 ; 24 - 1ea: 0e 94 68 00 call 0xd0 ; 0xd0 <_ZN6avrlib3pinINS_5portbELh7EE6outputEb.part.23> - 1ee: 8a e0 ldi r24, 0x0A ; 10 - 1f0: 8a 95 dec r24 - 1f2: f1 f7 brne .-4 ; 0x1f0 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh+0x8c> - 1f4: 00 c0 rjmp .+0 ; 0x1f6 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh+0x92> - } - _delay_us(1); - sck::make_high(); // Clock auf High - _delay_us(2); - data<<=1; //Schiebe um nächstes Bit zusenden - 1f6: ee 0c add r14, r14 - 1f8: 11 50 subi r17, 0x01 ; 1 - SPCR = (1<0; a--) { //das Byte wird Bitweise nacheinander Gesendet MSB zuerst - 1fa: f9 f6 brne .-66 ; 0x1ba <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh+0x56> - uint8_t r; - if(mode == 0) { - r = send_hard(data); - } - r = send_soft(data); - sprintf(t, " <- 0x%02x\r\n", r); - 1fc: 1f 92 push r1 - 1fe: ff 92 push r15 - 200: 2b e6 ldi r18, 0x6B ; 107 - 202: 30 e0 ldi r19, 0x00 ; 0 - 204: 3f 93 push r19 - 206: 2f 93 push r18 - 208: 8e 01 movw r16, r28 - 20a: 0f 5f subi r16, 0xFF ; 255 - 20c: 1f 4f sbci r17, 0xFF ; 255 - 20e: 1f 93 push r17 - 210: 0f 93 push r16 - 212: 0e 94 34 04 call 0x868 ; 0x868 - u.send(t); - 216: c8 01 movw r24, r16 - 218: 0e 94 5a 00 call 0xb4 ; 0xb4 <_ZN4UartILm9600EE4sendEPKc.isra.2> - return r; - 21c: 0f 90 pop r0 - 21e: 0f 90 pop r0 - 220: 0f 90 pop r0 - 222: 0f 90 pop r0 - 224: 0f 90 pop r0 - 226: 0f 90 pop r0 - } - 228: 8f 2d mov r24, r15 - 22a: e2 96 adiw r28, 0x32 ; 50 - 22c: 0f b6 in r0, 0x3f ; 63 - 22e: f8 94 cli - 230: de bf out 0x3e, r29 ; 62 - 232: 0f be out 0x3f, r0 ; 63 - 234: cd bf out 0x3d, r28 ; 61 - 236: df 91 pop r29 - 238: cf 91 pop r28 - 23a: 1f 91 pop r17 - 23c: 0f 91 pop r16 - 23e: ff 90 pop r15 - 240: ef 90 pop r14 - 242: 08 95 ret - -00000244 <_ZN6avrlib3pinINS_5portbELh4EE8make_lowEv>: - 244: c4 98 cbi 0x18, 4 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 246: bc 9a sbi 0x17, 4 ; 23 - 248: 08 95 ret - -0000024a <_ZN6avrlib3pinINS_5portbELh4EE9make_highEv>: -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 24a: c4 9a sbi 0x18, 4 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 24c: bc 9a sbi 0x17, 4 ; 23 - 24e: 08 95 ret - -00000250 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E22mcp2515_write_registerEhh>: - mcp2515_write_register( TXRTSCTRL, 0 ); - - // Device zurueck in den normalen Modus versetzten - mcp2515_bit_modify( CANCTRL, 0xE0, 0); - } - void mcp2515_write_register( uint8_t adress, uint8_t data ) { - 250: ff 92 push r15 - 252: 0f 93 push r16 - 254: 1f 93 push r17 - 256: cf 93 push r28 - 258: df 93 push r29 - 25a: 1f 92 push r1 - 25c: cd b7 in r28, 0x3d ; 61 - 25e: de b7 in r29, 0x3e ; 62 - 260: f8 2e mov r15, r24 - 262: 09 2f mov r16, r25 - 264: 16 2f mov r17, r22 - public: - Spi() { - init(); - } - void CSOn() { - cs::make_low(); - 266: 49 83 std Y+1, r20 ; 0x01 - 268: 0e 94 22 01 call 0x244 ; 0x244 <_ZN6avrlib3pinINS_5portbELh4EE8make_lowEv> - // /CS des MCP2515 auf Low ziehen - s.CSOn(); - - s.send(SPI_WRITE); - 26c: 62 e0 ldi r22, 0x02 ; 2 - 26e: 8f 2d mov r24, r15 - 270: 90 2f mov r25, r16 - 272: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - s.send(adress); - 276: 61 2f mov r22, r17 - 278: 8f 2d mov r24, r15 - 27a: 90 2f mov r25, r16 - 27c: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - s.send(data); - 280: 49 81 ldd r20, Y+1 ; 0x01 - 282: 64 2f mov r22, r20 - 284: 8f 2d mov r24, r15 - 286: 90 2f mov r25, r16 - 288: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - - // /CS Leitung wieder freigeben - s.CSOff(); - } - 28c: 0f 90 pop r0 - 28e: df 91 pop r29 - 290: cf 91 pop r28 - 292: 1f 91 pop r17 - 294: 0f 91 pop r16 - 296: ff 90 pop r15 - } - void CSOff() { - cs::make_high(); - 298: 0c 94 25 01 jmp 0x24a ; 0x24a <_ZN6avrlib3pinINS_5portbELh4EE9make_highEv> - -0000029c <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E8init_canEv>: - return (status & 0x07); - } - private: - spiclass s; - uart u; - void init_can() { - 29c: cf 93 push r28 - 29e: df 93 push r29 - 2a0: ec 01 movw r28, r24 - public: - Spi() { - init(); - } - void CSOn() { - cs::make_low(); - 2a2: 0e 94 22 01 call 0x244 ; 0x244 <_ZN6avrlib3pinINS_5portbELh4EE8make_lowEv> - - // MCP2515 per Software Reset zuruecksetzten, - // danach ist der MCP2515 im Configuration Mode - s.CSOn(); - s.send( SPI_RESET ); - 2a6: 60 ec ldi r22, 0xC0 ; 192 - 2a8: ce 01 movw r24, r28 - 2aa: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - #else - //round up by default - __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); - #endif - - __builtin_avr_delay_cycles(__ticks_dc); - 2ae: 8f e9 ldi r24, 0x9F ; 159 - 2b0: 9f e0 ldi r25, 0x0F ; 15 - 2b2: 01 97 sbiw r24, 0x01 ; 1 - 2b4: f1 f7 brne .-4 ; 0x2b2 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E8init_canEv+0x16> - 2b6: 00 c0 rjmp .+0 ; 0x2b8 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E8init_canEv+0x1c> - 2b8: 00 00 nop - } - void CSOff() { - cs::make_high(); - 2ba: 0e 94 25 01 call 0x24a ; 0x24a <_ZN6avrlib3pinINS_5portbELh4EE9make_highEv> - 2be: 8f e3 ldi r24, 0x3F ; 63 - 2c0: 9c e9 ldi r25, 0x9C ; 156 - 2c2: 01 97 sbiw r24, 0x01 ; 1 - 2c4: f1 f7 brne .-4 ; 0x2c2 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E8init_canEv+0x26> - 2c6: 00 c0 rjmp .+0 ; 0x2c8 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E8init_canEv+0x2c> - 2c8: 00 00 nop - * Bus speed = 1 / (Total # of TQ) * TQ - * = 1 / 8 * TQ = 125 kHz - */ - - // BRP = 7 - mcp2515_write_register( CNF1, (1< - - // Prop Seg und Phase Seg1 einstellen - mcp2515_write_register( CNF2, (1< - - // Wake-up Filter deaktivieren, Phase Seg2 einstellen - mcp2515_write_register( CNF3, (1< - - // Aktivieren der Rx Buffer Interrupts - mcp2515_write_register( CANINTE, (1< - /* - * Einstellen der Filter - */ - - // Buffer 0 : Empfangen aller Nachrichten - mcp2515_write_register( RXB0CTRL, (1< - - // Buffer 1 : Empfangen aller Nachrichten - mcp2515_write_register( RXB1CTRL, (1< - - // Alle Bits der Empfangsmaske loeschen, - // damit werden alle Nachrichten empfangen - mcp2515_write_register( RXM0SIDH, 0 ); //return; - 306: 40 e0 ldi r20, 0x00 ; 0 - 308: 60 e2 ldi r22, 0x20 ; 32 - 30a: ce 01 movw r24, r28 - 30c: 0e 94 28 01 call 0x250 ; 0x250 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E22mcp2515_write_registerEhh> - mcp2515_write_register( RXM0SIDL, 0 ); //return; - 310: 40 e0 ldi r20, 0x00 ; 0 - 312: 61 e2 ldi r22, 0x21 ; 33 - 314: ce 01 movw r24, r28 - 316: 0e 94 28 01 call 0x250 ; 0x250 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E22mcp2515_write_registerEhh> - mcp2515_write_register( RXM0EID8, 0 ); - 31a: 40 e0 ldi r20, 0x00 ; 0 - 31c: 62 e2 ldi r22, 0x22 ; 34 - 31e: ce 01 movw r24, r28 - 320: 0e 94 28 01 call 0x250 ; 0x250 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E22mcp2515_write_registerEhh> - mcp2515_write_register( RXM0EID0, 0 ); - 324: 40 e0 ldi r20, 0x00 ; 0 - 326: 63 e2 ldi r22, 0x23 ; 35 - 328: ce 01 movw r24, r28 - 32a: 0e 94 28 01 call 0x250 ; 0x250 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E22mcp2515_write_registerEhh> - - mcp2515_write_register( RXM1SIDH, 0 ); //return; - 32e: 40 e0 ldi r20, 0x00 ; 0 - 330: 64 e2 ldi r22, 0x24 ; 36 - 332: ce 01 movw r24, r28 - 334: 0e 94 28 01 call 0x250 ; 0x250 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E22mcp2515_write_registerEhh> - mcp2515_write_register( RXM1SIDL, 0 ); //return; - 338: 40 e0 ldi r20, 0x00 ; 0 - 33a: 65 e2 ldi r22, 0x25 ; 37 - 33c: ce 01 movw r24, r28 - 33e: 0e 94 28 01 call 0x250 ; 0x250 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E22mcp2515_write_registerEhh> - mcp2515_write_register( RXM1EID8, 0 ); - 342: 40 e0 ldi r20, 0x00 ; 0 - 344: 66 e2 ldi r22, 0x26 ; 38 - 346: ce 01 movw r24, r28 - 348: 0e 94 28 01 call 0x250 ; 0x250 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E22mcp2515_write_registerEhh> - mcp2515_write_register( RXM1EID0, 0 ); - 34c: 40 e0 ldi r20, 0x00 ; 0 - 34e: 67 e2 ldi r22, 0x27 ; 39 - 350: ce 01 movw r24, r28 - 352: 0e 94 28 01 call 0x250 ; 0x250 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E22mcp2515_write_registerEhh> - /* - * Einstellen der Pin Funktionen - */ - - // Deaktivieren der Pins RXnBF Pins (High Impedance State) - mcp2515_write_register( BFPCTRL, 0 ); return; - 356: 40 e0 ldi r20, 0x00 ; 0 - 358: 6c e0 ldi r22, 0x0C ; 12 - 35a: ce 01 movw r24, r28 - // TXnRTS Bits als Inputs schalten - mcp2515_write_register( TXRTSCTRL, 0 ); - - // Device zurueck in den normalen Modus versetzten - mcp2515_bit_modify( CANCTRL, 0xE0, 0); - } - 35c: df 91 pop r29 - 35e: cf 91 pop r28 - /* - * Einstellen der Pin Funktionen - */ - - // Deaktivieren der Pins RXnBF Pins (High Impedance State) - mcp2515_write_register( BFPCTRL, 0 ); return; - 360: 0c 94 28 01 jmp 0x250 ; 0x250 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E22mcp2515_write_registerEhh> - -00000364 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E16can_send_messageEP10CANMessage>: - m.data[i] = (uint8_t)va_arg(params, unsigned int); - } - va_end(params); - return can_send_message(&m); - } - uint8_t can_send_message(CANMessage *p_message) { - 364: af 92 push r10 - 366: bf 92 push r11 - 368: cf 92 push r12 - 36a: df 92 push r13 - 36c: ef 92 push r14 - 36e: ff 92 push r15 - 370: 0f 93 push r16 - 372: 1f 93 push r17 - 374: cf 93 push r28 - 376: df 93 push r29 - 378: 1f 92 push r1 - 37a: cd b7 in r28, 0x3d ; 61 - 37c: de b7 in r29, 0x3e ; 62 - 37e: 6c 01 movw r12, r24 - 380: 8b 01 movw r16, r22 - public: - Spi() { - init(); - } - void CSOn() { - cs::make_low(); - 382: 0e 94 22 01 call 0x244 ; 0x244 <_ZN6avrlib3pinINS_5portbELh4EE8make_lowEv> - uint8_t status, address; - - // Status des MCP2515 auslesen - s.CSOn(); - s.send(SPI_READ_STATUS); - 386: 60 ea ldi r22, 0xA0 ; 160 - 388: c6 01 movw r24, r12 - 38a: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - status = s.send(0xff); - 38e: 6f ef ldi r22, 0xFF ; 255 - 390: c6 01 movw r24, r12 - 392: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - 396: 89 83 std Y+1, r24 ; 0x01 - s.send(0xff); - 398: 6f ef ldi r22, 0xFF ; 255 - 39a: c6 01 movw r24, r12 - 39c: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - } - void CSOff() { - cs::make_high(); - 3a0: 0e 94 25 01 call 0x24a ; 0x24a <_ZN6avrlib3pinINS_5portbELh4EE9make_highEv> - * 2 TXB0CNTRL.TXREQ - * 4 TXB1CNTRL.TXREQ - * 6 TXB2CNTRL.TXREQ - */ - - if (bit_is_clear(status, 2)) { - 3a4: 89 81 ldd r24, Y+1 ; 0x01 - 3a6: 82 ff sbrs r24, 2 - 3a8: 09 c0 rjmp .+18 ; 0x3bc <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E16can_send_messageEP10CANMessage+0x58> - address = 0x00; - } - else if (bit_is_clear(status, 4)) { - 3aa: 89 81 ldd r24, Y+1 ; 0x01 - 3ac: 84 ff sbrs r24, 4 - 3ae: 08 c0 rjmp .+16 ; 0x3c0 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E16can_send_messageEP10CANMessage+0x5c> - address = 0x02; - } - else if (bit_is_clear(status, 6)) { - 3b0: 89 81 ldd r24, Y+1 ; 0x01 - 3b2: 86 fd sbrc r24, 6 - 3b4: 5e c0 rjmp .+188 ; 0x472 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E16can_send_messageEP10CANMessage+0x10e> - address = 0x04; - 3b6: 34 e0 ldi r19, 0x04 ; 4 - 3b8: b3 2e mov r11, r19 - 3ba: 04 c0 rjmp .+8 ; 0x3c4 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E16can_send_messageEP10CANMessage+0x60> - * 4 TXB1CNTRL.TXREQ - * 6 TXB2CNTRL.TXREQ - */ - - if (bit_is_clear(status, 2)) { - address = 0x00; - 3bc: b1 2c mov r11, r1 - 3be: 02 c0 rjmp .+4 ; 0x3c4 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E16can_send_messageEP10CANMessage+0x60> - } - else if (bit_is_clear(status, 4)) { - address = 0x02; - 3c0: 22 e0 ldi r18, 0x02 ; 2 - 3c2: b2 2e mov r11, r18 - public: - Spi() { - init(); - } - void CSOn() { - cs::make_low(); - 3c4: 0e 94 22 01 call 0x244 ; 0x244 <_ZN6avrlib3pinINS_5portbELh4EE8make_lowEv> - Nachricht kann nicht verschickt werden */ - return 0; - } - - s.CSOn(); // CS Low - s.send(SPI_WRITE_TX | address); - 3c8: 6b 2d mov r22, r11 - 3ca: 60 64 ori r22, 0x40 ; 64 - 3cc: c6 01 movw r24, r12 - 3ce: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - - // Standard ID einstellen - s.send((uint8_t) (p_message->id>>3)); - 3d2: f8 01 movw r30, r16 - 3d4: 60 81 ld r22, Z - 3d6: 71 81 ldd r23, Z+1 ; 0x01 - 3d8: 93 e0 ldi r25, 0x03 ; 3 - 3da: 76 95 lsr r23 - 3dc: 67 95 ror r22 - 3de: 9a 95 dec r25 - 3e0: e1 f7 brne .-8 ; 0x3da <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E16can_send_messageEP10CANMessage+0x76> - 3e2: c6 01 movw r24, r12 - 3e4: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - s.send((uint8_t) (p_message->id<<5)); - 3e8: f8 01 movw r30, r16 - 3ea: 60 81 ld r22, Z - 3ec: 62 95 swap r22 - 3ee: 66 0f add r22, r22 - 3f0: 60 7e andi r22, 0xE0 ; 224 - 3f2: c6 01 movw r24, r12 - 3f4: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - - // Extended ID - s.send(0x00); - 3f8: 60 e0 ldi r22, 0x00 ; 0 - 3fa: c6 01 movw r24, r12 - 3fc: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - s.send(0x00); - 400: 60 e0 ldi r22, 0x00 ; 0 - 402: c6 01 movw r24, r12 - 404: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - - uint8_t length = p_message->length; - 408: f8 01 movw r30, r16 - 40a: a3 80 ldd r10, Z+3 ; 0x03 - 40c: f8 e0 ldi r31, 0x08 ; 8 - 40e: fa 15 cp r31, r10 - 410: 10 f4 brcc .+4 ; 0x416 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E16can_send_messageEP10CANMessage+0xb2> - 412: 88 e0 ldi r24, 0x08 ; 8 - 414: a8 2e mov r10, r24 - if (length > 8) { - length = 8; - } - - // Ist die Nachricht ein "Remote Transmit Request" ? - if (p_message->rtr) - 416: f8 01 movw r30, r16 - 418: 82 81 ldd r24, Z+2 ; 0x02 - { - /* Ein RTR hat zwar eine Laenge, - aber enthaelt keine Daten */ - - // Nachrichten Laenge + RTR einstellen - s.send((1< 8) { - length = 8; - } - - // Ist die Nachricht ein "Remote Transmit Request" ? - if (p_message->rtr) - 41c: 88 23 and r24, r24 - 41e: 29 f0 breq .+10 ; 0x42a <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E16can_send_messageEP10CANMessage+0xc6> - { - /* Ein RTR hat zwar eine Laenge, - aber enthaelt keine Daten */ - - // Nachrichten Laenge + RTR einstellen - s.send((1< - 428: 12 c0 rjmp .+36 ; 0x44e <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E16can_send_messageEP10CANMessage+0xea> - } - else - { - // Nachrichten Laenge einstellen - s.send(length); - 42a: c6 01 movw r24, r12 - 42c: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - - // Daten - for (uint8_t i=0;i - m.data[i] = (uint8_t)va_arg(params, unsigned int); - } - va_end(params); - return can_send_message(&m); - } - uint8_t can_send_message(CANMessage *p_message) { - 436: f8 01 movw r30, r16 - 438: ee 0d add r30, r14 - 43a: ff 1d adc r31, r15 - // Nachrichten Laenge einstellen - s.send(length); - - // Daten - for (uint8_t i=0;idata[i]); - 43c: 64 81 ldd r22, Z+4 ; 0x04 - 43e: c6 01 movw r24, r12 - 440: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - 444: ff ef ldi r31, 0xFF ; 255 - 446: ef 1a sub r14, r31 - 448: ff 0a sbc r15, r31 - { - // Nachrichten Laenge einstellen - s.send(length); - - // Daten - for (uint8_t i=0;i - } - void CSOff() { - cs::make_high(); - 44e: 0e 94 25 01 call 0x24a ; 0x24a <_ZN6avrlib3pinINS_5portbELh4EE9make_highEv> - s.send(p_message->data[i]); - } - } - s.CSOff(); // CS auf High - - asm volatile ("nop"); - 452: 00 00 nop - public: - Spi() { - init(); - } - void CSOn() { - cs::make_low(); - 454: 0e 94 22 01 call 0x244 ; 0x244 <_ZN6avrlib3pinINS_5portbELh4EE8make_lowEv> - - /* CAN Nachricht verschicken - die letzten drei Bit im RTS Kommando geben an welcher - Puffer gesendet werden soll */ - s.CSOn(); // CS wieder Low - if (address == 0x00) { - 458: b1 10 cpse r11, r1 - 45a: 02 c0 rjmp .+4 ; 0x460 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E16can_send_messageEP10CANMessage+0xfc> - s.send(SPI_RTS | 0x01); - 45c: 61 e8 ldi r22, 0x81 ; 129 - 45e: 02 c0 rjmp .+4 ; 0x464 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E16can_send_messageEP10CANMessage+0x100> - } else { - s.send(SPI_RTS | address); - 460: 6b 2d mov r22, r11 - 462: 60 68 ori r22, 0x80 ; 128 - 464: c6 01 movw r24, r12 - 466: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - } - void CSOff() { - cs::make_high(); - 46a: 0e 94 25 01 call 0x24a ; 0x24a <_ZN6avrlib3pinINS_5portbELh4EE9make_highEv> - } - s.CSOff(); // CS auf High - - return 1; - 46e: 81 e0 ldi r24, 0x01 ; 1 - 470: 01 c0 rjmp .+2 ; 0x474 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E16can_send_messageEP10CANMessage+0x110> - address = 0x04; - } - else { - /* Alle Puffer sind belegt, - Nachricht kann nicht verschickt werden */ - return 0; - 472: 80 e0 ldi r24, 0x00 ; 0 - s.send(SPI_RTS | address); - } - s.CSOff(); // CS auf High - - return 1; - } - 474: 0f 90 pop r0 - 476: df 91 pop r29 - 478: cf 91 pop r28 - 47a: 1f 91 pop r17 - 47c: 0f 91 pop r16 - 47e: ff 90 pop r15 - 480: ef 90 pop r14 - 482: df 90 pop r13 - 484: cf 90 pop r12 - 486: bf 90 pop r11 - 488: af 90 pop r10 - 48a: 08 95 ret - -0000048c <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E4sendEjhz>: -class Can { - public: - Can() { - init_can(); - } - uint8_t send(uint16_t id, uint8_t size, ...) { - 48c: cf 93 push r28 - 48e: df 93 push r29 - 490: cd b7 in r28, 0x3d ; 61 - 492: de b7 in r29, 0x3e ; 62 - 494: 2c 97 sbiw r28, 0x0c ; 12 - 496: 0f b6 in r0, 0x3f ; 63 - 498: f8 94 cli - 49a: de bf out 0x3e, r29 ; 62 - 49c: 0f be out 0x3f, r0 ; 63 - 49e: cd bf out 0x3d, r28 ; 61 - 4a0: 2d 89 ldd r18, Y+21 ; 0x15 - va_list params; - CANMessage m; - m.id = id; - 4a2: 8b 89 ldd r24, Y+19 ; 0x13 - 4a4: 9c 89 ldd r25, Y+20 ; 0x14 - 4a6: 9a 83 std Y+2, r25 ; 0x02 - 4a8: 89 83 std Y+1, r24 ; 0x01 - m.rtr = 0; - 4aa: 1b 82 std Y+3, r1 ; 0x03 - m.length = size; - 4ac: 2c 83 std Y+4, r18 ; 0x04 - va_start(params, size); - 4ae: ce 01 movw r24, r28 - 4b0: 46 96 adiw r24, 0x16 ; 22 - 4b2: fc 01 movw r30, r24 - 4b4: de 01 movw r26, r28 - 4b6: 15 96 adiw r26, 0x05 ; 5 - for(int i=0;i - m.data[i] = (uint8_t)va_arg(params, unsigned int); - 4c0: 40 81 ld r20, Z - 4c2: 4d 93 st X+, r20 - CANMessage m; - m.id = id; - m.rtr = 0; - m.length = size; - va_start(params, size); - for(int i=0;i - m.data[i] = (uint8_t)va_arg(params, unsigned int); - } - va_end(params); - return can_send_message(&m); - 4ce: be 01 movw r22, r28 - 4d0: 6f 5f subi r22, 0xFF ; 255 - 4d2: 7f 4f sbci r23, 0xFF ; 255 - 4d4: 89 89 ldd r24, Y+17 ; 0x11 - 4d6: 9a 89 ldd r25, Y+18 ; 0x12 - 4d8: 0e 94 b2 01 call 0x364 ; 0x364 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E16can_send_messageEP10CANMessage> - } - 4dc: 2c 96 adiw r28, 0x0c ; 12 - 4de: 0f b6 in r0, 0x3f ; 63 - 4e0: f8 94 cli - 4e2: de bf out 0x3e, r29 ; 62 - 4e4: 0f be out 0x3f, r0 ; 63 - 4e6: cd bf out 0x3d, r28 ; 61 - 4e8: df 91 pop r29 - 4ea: cf 91 pop r28 - 4ec: 08 95 ret - -000004ee <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E18mcp2515_bit_modifyEhhh>: - // /CS Leitung wieder freigeben - s.CSOff(); - - return data; - } - void mcp2515_bit_modify(uint8_t adress, uint8_t mask, uint8_t data) { - 4ee: ff 92 push r15 - 4f0: 0f 93 push r16 - 4f2: 1f 93 push r17 - 4f4: cf 93 push r28 - 4f6: df 93 push r29 - 4f8: 00 d0 rcall .+0 ; 0x4fa <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E18mcp2515_bit_modifyEhhh+0xc> - 4fa: cd b7 in r28, 0x3d ; 61 - 4fc: de b7 in r29, 0x3e ; 62 - 4fe: f8 2e mov r15, r24 - 500: 09 2f mov r16, r25 - 502: 16 2f mov r17, r22 - public: - Spi() { - init(); - } - void CSOn() { - cs::make_low(); - 504: 2a 83 std Y+2, r18 ; 0x02 - 506: 49 83 std Y+1, r20 ; 0x01 - 508: 0e 94 22 01 call 0x244 ; 0x244 <_ZN6avrlib3pinINS_5portbELh4EE8make_lowEv> - // /CS des MCP2515 auf Low ziehen - s.CSOn(); - - s.send(SPI_BIT_MODIFY); - 50c: 65 e0 ldi r22, 0x05 ; 5 - 50e: 8f 2d mov r24, r15 - 510: 90 2f mov r25, r16 - 512: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - s.send(adress); - 516: 61 2f mov r22, r17 - 518: 8f 2d mov r24, r15 - 51a: 90 2f mov r25, r16 - 51c: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - s.send(mask); - 520: 49 81 ldd r20, Y+1 ; 0x01 - 522: 64 2f mov r22, r20 - 524: 8f 2d mov r24, r15 - 526: 90 2f mov r25, r16 - 528: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - s.send(data); - 52c: 2a 81 ldd r18, Y+2 ; 0x02 - 52e: 62 2f mov r22, r18 - 530: 8f 2d mov r24, r15 - 532: 90 2f mov r25, r16 - 534: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - - // /CS Leitung wieder freigeben - s.CSOff(); - } - 538: 0f 90 pop r0 - 53a: 0f 90 pop r0 - 53c: df 91 pop r29 - 53e: cf 91 pop r28 - 540: 1f 91 pop r17 - 542: 0f 91 pop r16 - 544: ff 90 pop r15 - } - void CSOff() { - cs::make_high(); - 546: 0c 94 25 01 jmp 0x24a ; 0x24a <_ZN6avrlib3pinINS_5portbELh4EE9make_highEv> - -0000054a <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E15can_get_messageEP10CANMessage>: - } - s.CSOff(); // CS auf High - - return 1; - } - uint8_t can_get_message(CANMessage *p_message) { - 54a: af 92 push r10 - 54c: bf 92 push r11 - 54e: cf 92 push r12 - 550: df 92 push r13 - 552: ef 92 push r14 - 554: ff 92 push r15 - 556: 0f 93 push r16 - 558: 1f 93 push r17 - 55a: cf 93 push r28 - 55c: df 93 push r29 - 55e: 1f 92 push r1 - 560: cd b7 in r28, 0x3d ; 61 - 562: de b7 in r29, 0x3e ; 62 - 564: 6c 01 movw r12, r24 - 566: 8b 01 movw r16, r22 - public: - Spi() { - init(); - } - void CSOn() { - cs::make_low(); - 568: 0e 94 22 01 call 0x244 ; 0x244 <_ZN6avrlib3pinINS_5portbELh4EE8make_lowEv> - uint8_t data; - - // /CS des MCP2515 auf Low ziehen - s.CSOn(); - - s.send(SPI_RX_STATUS); - 56c: 60 eb ldi r22, 0xB0 ; 176 - 56e: c6 01 movw r24, r12 - 570: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - - data = s.send(0xff); - 574: 6f ef ldi r22, 0xFF ; 255 - 576: c6 01 movw r24, r12 - 578: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - 57c: b8 2e mov r11, r24 - - // Die Daten werden noch einmal wiederholt gesendet, - // man braucht also nur eins der beiden Bytes auswerten. - s.send(0xff); - 57e: 6f ef ldi r22, 0xFF ; 255 - 580: c6 01 movw r24, r12 - 582: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - } - void CSOff() { - cs::make_high(); - 586: 0e 94 25 01 call 0x24a ; 0x24a <_ZN6avrlib3pinINS_5portbELh4EE9make_highEv> - - return 1; - } - uint8_t can_get_message(CANMessage *p_message) { - // Status auslesen - uint8_t status = mcp2515_read_rx_status(); - 58a: b9 82 std Y+1, r11 ; 0x01 - - if (bit_is_set(status, 6)) - 58c: 89 81 ldd r24, Y+1 ; 0x01 - 58e: 86 ff sbrs r24, 6 - 590: 04 c0 rjmp .+8 ; 0x59a <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E15can_get_messageEP10CANMessage+0x50> - public: - Spi() { - init(); - } - void CSOn() { - cs::make_low(); - 592: 0e 94 22 01 call 0x244 ; 0x244 <_ZN6avrlib3pinINS_5portbELh4EE8make_lowEv> - { - // Nachricht in Puffer 0 - - s.CSOn(); // CS Low - s.send(SPI_READ_RX); - 596: 60 e9 ldi r22, 0x90 ; 144 - 598: 06 c0 rjmp .+12 ; 0x5a6 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E15can_get_messageEP10CANMessage+0x5c> - } - else if (bit_is_set(status, 7)) - 59a: 89 81 ldd r24, Y+1 ; 0x01 - 59c: 87 ff sbrs r24, 7 - 59e: 5d c0 rjmp .+186 ; 0x65a <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E15can_get_messageEP10CANMessage+0x110> - 5a0: 0e 94 22 01 call 0x244 ; 0x244 <_ZN6avrlib3pinINS_5portbELh4EE8make_lowEv> - { - // Nachricht in Puffer 1 - - s.CSOn(); // CS Low - s.send(SPI_READ_RX | 0x04); - 5a4: 64 e9 ldi r22, 0x94 ; 148 - 5a6: c6 01 movw r24, r12 - 5a8: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - /* Fehler: Keine neue Nachricht vorhanden */ - return 0xff; - } - - // Standard ID auslesen - p_message->id = (uint16_t) s.send(0xff) << 3; - 5ac: 6f ef ldi r22, 0xFF ; 255 - 5ae: c6 01 movw r24, r12 - 5b0: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - 5b4: 28 e0 ldi r18, 0x08 ; 8 - 5b6: 82 9f mul r24, r18 - 5b8: c0 01 movw r24, r0 - 5ba: 11 24 eor r1, r1 - 5bc: f8 01 movw r30, r16 - 5be: 91 83 std Z+1, r25 ; 0x01 - 5c0: 80 83 st Z, r24 - p_message->id |= (uint16_t) s.send(0xff) >> 5; - 5c2: 6f ef ldi r22, 0xFF ; 255 - 5c4: c6 01 movw r24, r12 - 5c6: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - 5ca: 48 2f mov r20, r24 - 5cc: 50 e0 ldi r21, 0x00 ; 0 - 5ce: 65 e0 ldi r22, 0x05 ; 5 - 5d0: 56 95 lsr r21 - 5d2: 47 95 ror r20 - 5d4: 6a 95 dec r22 - 5d6: e1 f7 brne .-8 ; 0x5d0 <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E15can_get_messageEP10CANMessage+0x86> - 5d8: f8 01 movw r30, r16 - 5da: 20 81 ld r18, Z - 5dc: 31 81 ldd r19, Z+1 ; 0x01 - 5de: 24 2b or r18, r20 - 5e0: 35 2b or r19, r21 - 5e2: 31 83 std Z+1, r19 ; 0x01 - 5e4: 20 83 st Z, r18 - - s.send(0xff); - 5e6: 6f ef ldi r22, 0xFF ; 255 - 5e8: c6 01 movw r24, r12 - 5ea: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - s.send(0xff); - 5ee: 6f ef ldi r22, 0xFF ; 255 - 5f0: c6 01 movw r24, r12 - 5f2: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - - // Laenge auslesen - uint8_t length = s.send(0xff) & 0x0f; - 5f6: 6f ef ldi r22, 0xFF ; 255 - 5f8: c6 01 movw r24, r12 - 5fa: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - 5fe: 7f e0 ldi r23, 0x0F ; 15 - 600: a7 2e mov r10, r23 - 602: a8 22 and r10, r24 - p_message->length = length; - 604: f8 01 movw r30, r16 - 606: a3 82 std Z+3, r10 ; 0x03 - - // Daten auslesen - for (uint8_t i=0;i - p_message->data[i] = s.send(0xff); - 60e: 6f ef ldi r22, 0xFF ; 255 - 610: c6 01 movw r24, r12 - 612: 0e 94 b2 00 call 0x164 ; 0x164 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh> - } - s.CSOff(); // CS auf High - - return 1; - } - uint8_t can_get_message(CANMessage *p_message) { - 616: f8 01 movw r30, r16 - 618: ee 0d add r30, r14 - 61a: ff 1d adc r31, r15 - uint8_t length = s.send(0xff) & 0x0f; - p_message->length = length; - - // Daten auslesen - for (uint8_t i=0;idata[i] = s.send(0xff); - 61c: 84 83 std Z+4, r24 ; 0x04 - 61e: ff ef ldi r31, 0xFF ; 255 - 620: ef 1a sub r14, r31 - 622: ff 0a sbc r15, r31 - // Laenge auslesen - uint8_t length = s.send(0xff) & 0x0f; - p_message->length = length; - - // Daten auslesen - for (uint8_t i=0;i - } - void CSOff() { - cs::make_high(); - 628: 0e 94 25 01 call 0x24a ; 0x24a <_ZN6avrlib3pinINS_5portbELh4EE9make_highEv> - p_message->data[i] = s.send(0xff); - } - - s.CSOff(); - - if (bit_is_set(status,3)) { - 62c: 89 81 ldd r24, Y+1 ; 0x01 - 62e: 83 ff sbrs r24, 3 - 630: 04 c0 rjmp .+8 ; 0x63a <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E15can_get_messageEP10CANMessage+0xf0> - p_message->rtr = 1; - 632: 81 e0 ldi r24, 0x01 ; 1 - 634: f8 01 movw r30, r16 - 636: 82 83 std Z+2, r24 ; 0x02 - 638: 02 c0 rjmp .+4 ; 0x63e <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E15can_get_messageEP10CANMessage+0xf4> - } else { - p_message->rtr = 0; - 63a: f8 01 movw r30, r16 - 63c: 12 82 std Z+2, r1 ; 0x02 - } - - // Interrupt Flag loeschen - if (bit_is_set(status,6)) { - 63e: 89 81 ldd r24, Y+1 ; 0x01 - mcp2515_bit_modify(CANINTF, (1<rtr = 0; - } - - // Interrupt Flag loeschen - if (bit_is_set(status,6)) { - 642: 86 ff sbrs r24, 6 - 644: 02 c0 rjmp .+4 ; 0x64a <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E15can_get_messageEP10CANMessage+0x100> - mcp2515_bit_modify(CANINTF, (1< - } else { - mcp2515_bit_modify(CANINTF, (1< - } - - return (status & 0x07); - 654: 8b 2d mov r24, r11 - 656: 87 70 andi r24, 0x07 ; 7 - 658: 01 c0 rjmp .+2 ; 0x65c <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E15can_get_messageEP10CANMessage+0x112> - s.CSOn(); // CS Low - s.send(SPI_READ_RX | 0x04); - } - else { - /* Fehler: Keine neue Nachricht vorhanden */ - return 0xff; - 65a: 8f ef ldi r24, 0xFF ; 255 - } else { - mcp2515_bit_modify(CANINTF, (1<: -typedef Can canclass; -canclass c; - -uint8_t button_id = 1; - -void init() { - 674: cf 93 push r28 - 676: df 93 push r29 - 678: cd b7 in r28, 0x3d ; 61 - 67a: de b7 in r29, 0x3e ; 62 - 67c: 2c 97 sbiw r28, 0x0c ; 12 - 67e: 0f b6 in r0, 0x3f ; 63 - 680: f8 94 cli - 682: de bf out 0x3e, r29 ; 62 - 684: 0f be out 0x3f, r0 ; 63 - 686: cd bf out 0x3d, r28 ; 61 - l.color(l.YELLOW); - 688: 86 e0 ldi r24, 0x06 ; 6 - 68a: 0e 94 6a 00 call 0xd4 ; 0xd4 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.12> - u.send("Init Start...\r\n"); - 68e: 88 e7 ldi r24, 0x78 ; 120 - 690: 90 e0 ldi r25, 0x00 ; 0 - 692: 0e 94 5a 00 call 0xb4 ; 0xb4 <_ZN4UartILm9600EE4sendEPKc.isra.2> - - u.send("-> Button ID Announcement:\r\n"); - 696: 88 e8 ldi r24, 0x88 ; 136 - 698: 90 e0 ldi r25, 0x00 ; 0 - 69a: 0e 94 5a 00 call 0xb4 ; 0xb4 <_ZN4UartILm9600EE4sendEPKc.isra.2> - c.send(CAN_MASTER, 2, CAN_SEND_BUTTON_ID, button_id); - 69e: 80 91 60 00 lds r24, 0x0060 - 6a2: 1f 92 push r1 - 6a4: 8f 93 push r24 - 6a6: 1f 92 push r1 - 6a8: 81 e0 ldi r24, 0x01 ; 1 - 6aa: 8f 93 push r24 - 6ac: 82 e0 ldi r24, 0x02 ; 2 - 6ae: 8f 93 push r24 - 6b0: 1f 92 push r1 - 6b2: 1f 92 push r1 - 6b4: 8c ee ldi r24, 0xEC ; 236 - 6b6: 90 e0 ldi r25, 0x00 ; 0 - 6b8: 9f 93 push r25 - 6ba: 8f 93 push r24 - 6bc: 0e 94 46 02 call 0x48c ; 0x48c <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E4sendEjhz> - 6c0: 2f ef ldi r18, 0xFF ; 255 - 6c2: 83 ed ldi r24, 0xD3 ; 211 - 6c4: 90 e3 ldi r25, 0x30 ; 48 - 6c6: 21 50 subi r18, 0x01 ; 1 - 6c8: 80 40 sbci r24, 0x00 ; 0 - 6ca: 90 40 sbci r25, 0x00 ; 0 - 6cc: e1 f7 brne .-8 ; 0x6c6 <_Z4initv+0x52> - 6ce: 00 c0 rjmp .+0 ; 0x6d0 <_Z4initv+0x5c> - 6d0: 00 00 nop - _delay_ms(1000); - - u.send("Wait for Master Ack...\r\n"); - 6d2: 85 ea ldi r24, 0xA5 ; 165 - 6d4: 90 e0 ldi r25, 0x00 ; 0 - 6d6: 0e 94 5a 00 call 0xb4 ; 0xb4 <_ZN4UartILm9600EE4sendEPKc.isra.2> - 6da: 0f b6 in r0, 0x3f ; 63 - 6dc: f8 94 cli - 6de: de bf out 0x3e, r29 ; 62 - 6e0: 0f be out 0x3f, r0 ; 63 - 6e2: cd bf out 0x3d, r28 ; 61 - while(true) { - CANMessage m; - if(0xff == c.can_get_message(&m)) { - 6e4: be 01 movw r22, r28 - 6e6: 6f 5f subi r22, 0xFF ; 255 - 6e8: 7f 4f sbci r23, 0xFF ; 255 - 6ea: 8c ee ldi r24, 0xEC ; 236 - 6ec: 90 e0 ldi r25, 0x00 ; 0 - 6ee: 0e 94 a5 02 call 0x54a ; 0x54a <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E15can_get_messageEP10CANMessage> - 6f2: 8f 3f cpi r24, 0xFF ; 255 - 6f4: 51 f4 brne .+20 ; 0x70a <_Z4initv+0x96> - 6f6: 9f ef ldi r25, 0xFF ; 255 - 6f8: 21 ee ldi r18, 0xE1 ; 225 - 6fa: 84 e0 ldi r24, 0x04 ; 4 - 6fc: 91 50 subi r25, 0x01 ; 1 - 6fe: 20 40 sbci r18, 0x00 ; 0 - 700: 80 40 sbci r24, 0x00 ; 0 - 702: e1 f7 brne .-8 ; 0x6fc <_Z4initv+0x88> - 704: 00 c0 rjmp .+0 ; 0x706 <_Z4initv+0x92> - 706: 00 00 nop - 708: ed cf rjmp .-38 ; 0x6e4 <_Z4initv+0x70> - _delay_ms(100); - continue; - } - if(m.data[0] == CAN_GET_BUTTON_ID) { - 70a: 8d 81 ldd r24, Y+5 ; 0x05 - 70c: 82 30 cpi r24, 0x02 ; 2 - 70e: 89 f4 brne .+34 ; 0x732 <_Z4initv+0xbe> - u.send("<- Button ID Ack: "); u.send(m.data[1]); u.send("\r\n"); - 710: 8e eb ldi r24, 0xBE ; 190 - 712: 90 e0 ldi r25, 0x00 ; 0 - 714: 0e 94 5a 00 call 0xb4 ; 0xb4 <_ZN4UartILm9600EE4sendEPKc.isra.2> - void send(uint8_t wert) { - uart_putchar(wert); - 718: 8e 81 ldd r24, Y+6 ; 0x06 - 71a: 0e 94 55 00 call 0xaa ; 0xaa <_ZN4UartILm9600EE12uart_putcharEh.isra.1> - 71e: 88 ee ldi r24, 0xE8 ; 232 - 720: 90 e0 ldi r25, 0x00 ; 0 - 722: 0e 94 5a 00 call 0xb4 ; 0xb4 <_ZN4UartILm9600EE4sendEPKc.isra.2> - if(m.data[1] == button_id) { - 726: 9e 81 ldd r25, Y+6 ; 0x06 - 728: 80 91 60 00 lds r24, 0x0060 - 72c: 98 13 cpse r25, r24 - 72e: da cf rjmp .-76 ; 0x6e4 <_Z4initv+0x70> - 730: 0c c0 rjmp .+24 ; 0x74a <_Z4initv+0xd6> - break; - } - } else { - u.send("<- "); u.send(m.data[0]); u.send("\r\n"); - 732: 81 ed ldi r24, 0xD1 ; 209 - 734: 90 e0 ldi r25, 0x00 ; 0 - 736: 0e 94 5a 00 call 0xb4 ; 0xb4 <_ZN4UartILm9600EE4sendEPKc.isra.2> - 73a: 8d 81 ldd r24, Y+5 ; 0x05 - 73c: 0e 94 55 00 call 0xaa ; 0xaa <_ZN4UartILm9600EE12uart_putcharEh.isra.1> - 740: 88 ee ldi r24, 0xE8 ; 232 - 742: 90 e0 ldi r25, 0x00 ; 0 - 744: 0e 94 5a 00 call 0xb4 ; 0xb4 <_ZN4UartILm9600EE4sendEPKc.isra.2> - 748: cd cf rjmp .-102 ; 0x6e4 <_Z4initv+0x70> - } - } - - -} - 74a: 2c 96 adiw r28, 0x0c ; 12 - 74c: 0f b6 in r0, 0x3f ; 63 - 74e: f8 94 cli - 750: de bf out 0x3e, r29 ; 62 - 752: 0f be out 0x3f, r0 ; 63 - 754: cd bf out 0x3d, r28 ; 61 - 756: df 91 pop r29 - 758: cf 91 pop r28 - 75a: 08 95 ret - -0000075c
: - -int main(void) -{ - init(); - 75c: 0e 94 3a 03 call 0x674 ; 0x674 <_Z4initv> - - - l.fade(l.YELLOW, l.RED, 10); - 760: 4a e0 ldi r20, 0x0A ; 10 - 762: 64 e0 ldi r22, 0x04 ; 4 - 764: 86 e0 ldi r24, 0x06 ; 6 - 766: 0e 94 7d 00 call 0xfa ; 0xfa <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.13> - - while(1) - { - u.send("Stuff!\r\n"); - 76a: 85 ed ldi r24, 0xD5 ; 213 - 76c: 90 e0 ldi r25, 0x00 ; 0 - 76e: 0e 94 5a 00 call 0xb4 ; 0xb4 <_ZN4UartILm9600EE4sendEPKc.isra.2> + 148: 2f ef ldi r18, 0xFF ; 255 + 14a: 86 e1 ldi r24, 0x16 ; 22 + 14c: 91 e1 ldi r25, 0x11 ; 17 + 14e: 21 50 subi r18, 0x01 ; 1 + 150: 80 40 sbci r24, 0x00 ; 0 + 152: 90 40 sbci r25, 0x00 ; 0 + 154: e1 f7 brne .-8 ; 0x14e + 156: 00 c0 rjmp .+0 ; 0x158 + 158: 00 00 nop + static const uint8_t RED = 4; + static const uint8_t MAGENTA = 5; + static const uint8_t YELLOW = 6; + static const uint8_t WHITE = 7; + void setColor(uint8_t cr, uint8_t cg, uint8_t cb) { + r = cr; + 15a: c0 93 62 00 sts 0x0062, r28 + g = cg; + 15e: c0 93 63 00 sts 0x0063, r28 + b = cb; + 162: c0 93 64 00 sts 0x0064, r28 + 166: 2f ef ldi r18, 0xFF ; 255 + 168: 86 e1 ldi r24, 0x16 ; 22 + 16a: 91 e1 ldi r25, 0x11 ; 17 + 16c: 21 50 subi r18, 0x01 ; 1 + 16e: 80 40 sbci r24, 0x00 ; 0 + 170: 90 40 sbci r25, 0x00 ; 0 + 172: e1 f7 brne .-8 ; 0x16c + 174: 00 c0 rjmp .+0 ; 0x176 + 176: 00 00 nop (mask & (1<<0)) ? blue::make_high() : blue::make_low(); (mask & (1<<1)) ? green::make_high() : green::make_low(); (mask & (1<<2)) ? red::make_high() : red::make_low(); } void rainbow(uint8_t time) { fade(RED, YELLOW, time); - 772: 45 e0 ldi r20, 0x05 ; 5 - 774: 66 e0 ldi r22, 0x06 ; 6 - 776: 84 e0 ldi r24, 0x04 ; 4 - 778: 0e 94 7d 00 call 0xfa ; 0xfa <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.13> + 178: 66 e0 ldi r22, 0x06 ; 6 + 17a: 84 e0 ldi r24, 0x04 ; 4 + 17c: 0e 94 68 00 call 0xd0 ; 0xd0 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.11.constprop.18> fade(YELLOW, GREEN, time); - 77c: 45 e0 ldi r20, 0x05 ; 5 - 77e: 62 e0 ldi r22, 0x02 ; 2 - 780: 86 e0 ldi r24, 0x06 ; 6 - 782: 0e 94 7d 00 call 0xfa ; 0xfa <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.13> + 180: 62 e0 ldi r22, 0x02 ; 2 + 182: 86 e0 ldi r24, 0x06 ; 6 + 184: 0e 94 68 00 call 0xd0 ; 0xd0 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.11.constprop.18> fade(GREEN, CYAN, time); - 786: 45 e0 ldi r20, 0x05 ; 5 - 788: 63 e0 ldi r22, 0x03 ; 3 - 78a: 82 e0 ldi r24, 0x02 ; 2 - 78c: 0e 94 7d 00 call 0xfa ; 0xfa <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.13> + 188: 63 e0 ldi r22, 0x03 ; 3 + 18a: 82 e0 ldi r24, 0x02 ; 2 + 18c: 0e 94 68 00 call 0xd0 ; 0xd0 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.11.constprop.18> fade(CYAN, BLUE, time); - 790: 45 e0 ldi r20, 0x05 ; 5 - 792: 61 e0 ldi r22, 0x01 ; 1 - 794: 83 e0 ldi r24, 0x03 ; 3 - 796: 0e 94 7d 00 call 0xfa ; 0xfa <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.13> + 190: 61 e0 ldi r22, 0x01 ; 1 + 192: 83 e0 ldi r24, 0x03 ; 3 + 194: 0e 94 68 00 call 0xd0 ; 0xd0 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.11.constprop.18> fade(BLUE, MAGENTA, time); - 79a: 45 e0 ldi r20, 0x05 ; 5 - 79c: 65 e0 ldi r22, 0x05 ; 5 - 79e: 81 e0 ldi r24, 0x01 ; 1 - 7a0: 0e 94 7d 00 call 0xfa ; 0xfa <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.13> + 198: 65 e0 ldi r22, 0x05 ; 5 + 19a: 81 e0 ldi r24, 0x01 ; 1 + 19c: 0e 94 68 00 call 0xd0 ; 0xd0 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.11.constprop.18> fade(MAGENTA, RED, time); - 7a4: 45 e0 ldi r20, 0x05 ; 5 - 7a6: 64 e0 ldi r22, 0x04 ; 4 - 7a8: 85 e0 ldi r24, 0x05 ; 5 - 7aa: 0e 94 7d 00 call 0xfa ; 0xfa <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.13> - 7ae: 2a ea ldi r18, 0xAA ; 170 - 7b0: 36 ee ldi r19, 0xE6 ; 230 - 7b2: 86 e9 ldi r24, 0x96 ; 150 - 7b4: 91 e0 ldi r25, 0x01 ; 1 - 7b6: 21 50 subi r18, 0x01 ; 1 - 7b8: 30 40 sbci r19, 0x00 ; 0 - 7ba: 80 40 sbci r24, 0x00 ; 0 - 7bc: 90 40 sbci r25, 0x00 ; 0 - 7be: d9 f7 brne .-10 ; 0x7b6 - 7c0: 00 00 nop - 7c2: d3 cf rjmp .-90 ; 0x76a + 1a0: 64 e0 ldi r22, 0x04 ; 4 + 1a2: 85 e0 ldi r24, 0x05 ; 5 + 1a4: 0e 94 68 00 call 0xd0 ; 0xd0 <_ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.11.constprop.18> + 1a8: c9 cf rjmp .-110 ; 0x13c -000007c4 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEEC1Ev>: - } - private: - void init() { - UBRRL = (F_CPU / (baudrate * 16L) - 1); //Teiler wird gesetzt - 7c4: 87 e6 ldi r24, 0x67 ; 103 - 7c6: 89 b9 out 0x09, r24 ; 9 - UCSRB = /*(1< -class Uart { - public: - Uart() { - init(); - send("Uart done!\r\n"); - 7d0: 8e ed ldi r24, 0xDE ; 222 - 7d2: 90 e0 ldi r25, 0x00 ; 0 - 7d4: 0e 94 5a 00 call 0xb4 ; 0xb4 <_ZN4UartILm9600EE4sendEPKc.isra.2> - 7d8: 0e 94 66 00 call 0xcc ; 0xcc <_ZN6avrlib3pinINS_5portbELh5EE6outputEb.part.22> -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 7dc: c5 98 cbi 0x18, 5 ; 24 - 7de: 0e 94 66 00 call 0xcc ; 0xcc <_ZN6avrlib3pinINS_5portbELh5EE6outputEb.part.22> - 7e2: 0e 94 68 00 call 0xd0 ; 0xd0 <_ZN6avrlib3pinINS_5portbELh7EE6outputEb.part.23> - 7e6: c7 98 cbi 0x18, 7 ; 24 - 7e8: 0e 94 68 00 call 0xd0 ; 0xd0 <_ZN6avrlib3pinINS_5portbELh7EE6outputEb.part.23> - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 7ec: bc 9a sbi 0x17, 4 ; 23 - mosi::make_output(); - mosi::make_low(); - sck::make_output(); - sck::make_low(); - cs::make_output(); - cs::make_high(); - 7ee: 0e 94 25 01 call 0x24a ; 0x24a <_ZN6avrlib3pinINS_5portbELh4EE9make_highEv> - 7f2: be 98 cbi 0x17, 6 ; 23 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 7f4: c6 98 cbi 0x18, 6 ; 24 - 7f6: c6 98 cbi 0x18, 6 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 7f8: be 9a sbi 0x17, 6 ; 23 - miso::make_input(); - miso::make_low(); - } - void init_spi() { - SPCR = (1<: - //o.AudioOff(); +000001aa <__vector_4>: - l.rainbow(5); - _delay_ms(10000); + + //_delay_ms(10000); } - 804: 1f 93 push r17 - 806: cf 93 push r28 - 808: df 93 push r29 - 80a: a5 9a sbi 0x14, 5 ; 20 +} +ISR(TIMER2_COMP_vect) { + 1aa: 1f 92 push r1 + 1ac: 0f 92 push r0 + 1ae: 0f b6 in r0, 0x3f ; 63 + 1b0: 0f 92 push r0 + 1b2: 11 24 eor r1, r1 + //l.color(l.RED); + //l.timer(); + 1b4: 0f 90 pop r0 + 1b6: 0f be out 0x3f, r0 ; 63 + 1b8: 0f 90 pop r0 + 1ba: 1f 90 pop r1 + 1bc: 18 95 reti + +000001be <_GLOBAL__sub_I_o>: + 1be: a5 9a sbi 0x14, 5 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 80c: ad 98 cbi 0x15, 5 ; 21 + 1c0: ad 98 cbi 0x15, 5 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 80e: a5 9a sbi 0x14, 5 ; 20 - 810: a4 9a sbi 0x14, 4 ; 20 + 1c2: a5 9a sbi 0x14, 5 ; 20 + 1c4: a4 9a sbi 0x14, 4 ; 20 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 812: ac 98 cbi 0x15, 4 ; 21 + 1c6: ac 98 cbi 0x15, 4 ; 21 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 814: a4 9a sbi 0x14, 4 ; 20 - 816: a2 9a sbi 0x14, 2 ; 20 - 818: a1 9a sbi 0x14, 1 ; 20 - 81a: a0 9a sbi 0x14, 0 ; 20 - void send(uint8_t wert) { - uart_putchar(wert); - } - private: + 1c8: a4 9a sbi 0x14, 4 ; 20 +#include + +template +class Led { + public: + Led() { + 1ca: 10 92 62 00 sts 0x0062, r1 + 1ce: 10 92 63 00 sts 0x0063, r1 + 1d2: 10 92 64 00 sts 0x0064, r1 + 1d6: a2 9a sbi 0x14, 2 ; 20 + 1d8: a1 9a sbi 0x14, 1 ; 20 + 1da: a0 9a sbi 0x14, 0 ; 20 + // Clock source: System Clock + // Clock value: 500,000 kHz + // Mode: Normal top=0xFF + // OC2 output: Disconnected + // Timer Period: 0,512 ms + ASSR=0< -class Uart { - public: - Uart() { - init(); - send("Uart done!\r\n"); - 828: 8e ed ldi r24, 0xDE ; 222 - 82a: 90 e0 ldi r25, 0x00 ; 0 - 82c: 0e 94 5a 00 call 0xb4 ; 0xb4 <_ZN4UartILm9600EE4sendEPKc.isra.2> -///////////////////////// UART //////////////////////////////////// -typedef Uart<9600> uartclass; -uartclass u; -///////////////////////// SPI ///////////////////////////////////// -typedef Spi spiclass; -spiclass s; - 830: 8e ee ldi r24, 0xEE ; 238 - 832: 90 e0 ldi r25, 0x00 ; 0 - 834: 0e 94 e2 03 call 0x7c4 ; 0x7c4 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEEC1Ev> -} CANMessage; + red::make_output(); + green::make_output(); + blue::make_output(); + inton(); + sei(); + 1ea: 78 94 sei + 1ec: 08 95 ret -template -class Can { - public: - Can() { - 838: 8c ee ldi r24, 0xEC ; 236 - 83a: 90 e0 ldi r25, 0x00 ; 0 - 83c: 0e 94 e2 03 call 0x7c4 ; 0x7c4 <_ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEEC1Ev> - void send(uint8_t wert) { - uart_putchar(wert); - } - private: - void init() { - UBRRL = (F_CPU / (baudrate * 16L) - 1); //Teiler wird gesetzt - 840: 19 b9 out 0x09, r17 ; 9 - UCSRB = /*(1< -class Uart { - public: - Uart() { - init(); - send("Uart done!\r\n"); - 846: 8e ed ldi r24, 0xDE ; 222 - 848: 90 e0 ldi r25, 0x00 ; 0 - 84a: 0e 94 5a 00 call 0xb4 ; 0xb4 <_ZN4UartILm9600EE4sendEPKc.isra.2> - init_can(); - 84e: 8c ee ldi r24, 0xEC ; 236 - 850: 90 e0 ldi r25, 0x00 ; 0 - //o.AudioOff(); - - l.rainbow(5); - _delay_ms(10000); - } - 852: df 91 pop r29 - 854: cf 91 pop r28 - 856: 1f 91 pop r17 - 858: 0c 94 4e 01 jmp 0x29c ; 0x29c <_ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E8init_canEv> +000001ee <__tablejump2__>: + 1ee: ee 0f add r30, r30 + 1f0: ff 1f adc r31, r31 -0000085c <__tablejump2__>: - 85c: ee 0f add r30, r30 - 85e: ff 1f adc r31, r31 +000001f2 <__tablejump__>: + 1f2: 05 90 lpm r0, Z+ + 1f4: f4 91 lpm r31, Z + 1f6: e0 2d mov r30, r0 + 1f8: 09 94 ijmp -00000860 <__tablejump__>: - 860: 05 90 lpm r0, Z+ - 862: f4 91 lpm r31, Z - 864: e0 2d mov r30, r0 - 866: 09 94 ijmp +000001fa <_exit>: + 1fa: f8 94 cli -00000868 : - 868: ae e0 ldi r26, 0x0E ; 14 - 86a: b0 e0 ldi r27, 0x00 ; 0 - 86c: ea e3 ldi r30, 0x3A ; 58 - 86e: f4 e0 ldi r31, 0x04 ; 4 - 870: 0c 94 e0 06 jmp 0xdc0 ; 0xdc0 <__prologue_saves__+0x1c> - 874: 0d 89 ldd r16, Y+21 ; 0x15 - 876: 1e 89 ldd r17, Y+22 ; 0x16 - 878: 86 e0 ldi r24, 0x06 ; 6 - 87a: 8c 83 std Y+4, r24 ; 0x04 - 87c: 1a 83 std Y+2, r17 ; 0x02 - 87e: 09 83 std Y+1, r16 ; 0x01 - 880: 8f ef ldi r24, 0xFF ; 255 - 882: 9f e7 ldi r25, 0x7F ; 127 - 884: 9e 83 std Y+6, r25 ; 0x06 - 886: 8d 83 std Y+5, r24 ; 0x05 - 888: ce 01 movw r24, r28 - 88a: 49 96 adiw r24, 0x19 ; 25 - 88c: ac 01 movw r20, r24 - 88e: 6f 89 ldd r22, Y+23 ; 0x17 - 890: 78 8d ldd r23, Y+24 ; 0x18 - 892: ce 01 movw r24, r28 - 894: 01 96 adiw r24, 0x01 ; 1 - 896: 0e 94 56 04 call 0x8ac ; 0x8ac - 89a: ef 81 ldd r30, Y+7 ; 0x07 - 89c: f8 85 ldd r31, Y+8 ; 0x08 - 89e: e0 0f add r30, r16 - 8a0: f1 1f adc r31, r17 - 8a2: 10 82 st Z, r1 - 8a4: 2e 96 adiw r28, 0x0e ; 14 - 8a6: e4 e0 ldi r30, 0x04 ; 4 - 8a8: 0c 94 fc 06 jmp 0xdf8 ; 0xdf8 <__epilogue_restores__+0x1c> - -000008ac : - 8ac: ac e0 ldi r26, 0x0C ; 12 - 8ae: b0 e0 ldi r27, 0x00 ; 0 - 8b0: ec e5 ldi r30, 0x5C ; 92 - 8b2: f4 e0 ldi r31, 0x04 ; 4 - 8b4: 0c 94 d2 06 jmp 0xda4 ; 0xda4 <__prologue_saves__> - 8b8: 7c 01 movw r14, r24 - 8ba: 6b 01 movw r12, r22 - 8bc: 8a 01 movw r16, r20 - 8be: fc 01 movw r30, r24 - 8c0: 17 82 std Z+7, r1 ; 0x07 - 8c2: 16 82 std Z+6, r1 ; 0x06 - 8c4: 83 81 ldd r24, Z+3 ; 0x03 - 8c6: 81 ff sbrs r24, 1 - 8c8: c6 c1 rjmp .+908 ; 0xc56 - 8ca: 88 24 eor r8, r8 - 8cc: 83 94 inc r8 - 8ce: 91 2c mov r9, r1 - 8d0: 8c 0e add r8, r28 - 8d2: 9d 1e adc r9, r29 - 8d4: f7 01 movw r30, r14 - 8d6: 93 81 ldd r25, Z+3 ; 0x03 - 8d8: f6 01 movw r30, r12 - 8da: 93 fd sbrc r25, 3 - 8dc: 85 91 lpm r24, Z+ - 8de: 93 ff sbrs r25, 3 - 8e0: 81 91 ld r24, Z+ - 8e2: 6f 01 movw r12, r30 - 8e4: 88 23 and r24, r24 - 8e6: 09 f4 brne .+2 ; 0x8ea - 8e8: b2 c1 rjmp .+868 ; 0xc4e - 8ea: 85 32 cpi r24, 0x25 ; 37 - 8ec: 39 f4 brne .+14 ; 0x8fc - 8ee: 93 fd sbrc r25, 3 - 8f0: 85 91 lpm r24, Z+ - 8f2: 93 ff sbrs r25, 3 - 8f4: 81 91 ld r24, Z+ - 8f6: 6f 01 movw r12, r30 - 8f8: 85 32 cpi r24, 0x25 ; 37 - 8fa: 29 f4 brne .+10 ; 0x906 - 8fc: b7 01 movw r22, r14 - 8fe: 90 e0 ldi r25, 0x00 ; 0 - 900: 0e 94 48 06 call 0xc90 ; 0xc90 - 904: e7 cf rjmp .-50 ; 0x8d4 - 906: 51 2c mov r5, r1 - 908: 31 2c mov r3, r1 - 90a: 20 e0 ldi r18, 0x00 ; 0 - 90c: 20 32 cpi r18, 0x20 ; 32 - 90e: a8 f4 brcc .+42 ; 0x93a - 910: 8b 32 cpi r24, 0x2B ; 43 - 912: 61 f0 breq .+24 ; 0x92c - 914: 28 f4 brcc .+10 ; 0x920 - 916: 80 32 cpi r24, 0x20 ; 32 - 918: 51 f0 breq .+20 ; 0x92e - 91a: 83 32 cpi r24, 0x23 ; 35 - 91c: 71 f4 brne .+28 ; 0x93a - 91e: 0b c0 rjmp .+22 ; 0x936 - 920: 8d 32 cpi r24, 0x2D ; 45 - 922: 39 f0 breq .+14 ; 0x932 - 924: 80 33 cpi r24, 0x30 ; 48 - 926: 49 f4 brne .+18 ; 0x93a - 928: 21 60 ori r18, 0x01 ; 1 - 92a: 28 c0 rjmp .+80 ; 0x97c - 92c: 22 60 ori r18, 0x02 ; 2 - 92e: 24 60 ori r18, 0x04 ; 4 - 930: 25 c0 rjmp .+74 ; 0x97c - 932: 28 60 ori r18, 0x08 ; 8 - 934: 23 c0 rjmp .+70 ; 0x97c - 936: 20 61 ori r18, 0x10 ; 16 - 938: 21 c0 rjmp .+66 ; 0x97c - 93a: 27 fd sbrc r18, 7 - 93c: 27 c0 rjmp .+78 ; 0x98c - 93e: 38 2f mov r19, r24 - 940: 30 53 subi r19, 0x30 ; 48 - 942: 3a 30 cpi r19, 0x0A ; 10 - 944: 78 f4 brcc .+30 ; 0x964 - 946: 26 ff sbrs r18, 6 - 948: 06 c0 rjmp .+12 ; 0x956 - 94a: fa e0 ldi r31, 0x0A ; 10 - 94c: 5f 9e mul r5, r31 - 94e: 30 0d add r19, r0 - 950: 11 24 eor r1, r1 - 952: 53 2e mov r5, r19 - 954: 13 c0 rjmp .+38 ; 0x97c - 956: 8a e0 ldi r24, 0x0A ; 10 - 958: 38 9e mul r3, r24 - 95a: 30 0d add r19, r0 - 95c: 11 24 eor r1, r1 - 95e: 33 2e mov r3, r19 - 960: 20 62 ori r18, 0x20 ; 32 - 962: 0c c0 rjmp .+24 ; 0x97c - 964: 8e 32 cpi r24, 0x2E ; 46 - 966: 21 f4 brne .+8 ; 0x970 - 968: 26 fd sbrc r18, 6 - 96a: 71 c1 rjmp .+738 ; 0xc4e - 96c: 20 64 ori r18, 0x40 ; 64 - 96e: 06 c0 rjmp .+12 ; 0x97c - 970: 8c 36 cpi r24, 0x6C ; 108 - 972: 11 f4 brne .+4 ; 0x978 - 974: 20 68 ori r18, 0x80 ; 128 - 976: 02 c0 rjmp .+4 ; 0x97c - 978: 88 36 cpi r24, 0x68 ; 104 - 97a: 41 f4 brne .+16 ; 0x98c - 97c: f6 01 movw r30, r12 - 97e: 93 fd sbrc r25, 3 - 980: 85 91 lpm r24, Z+ - 982: 93 ff sbrs r25, 3 - 984: 81 91 ld r24, Z+ - 986: 6f 01 movw r12, r30 - 988: 81 11 cpse r24, r1 - 98a: c0 cf rjmp .-128 ; 0x90c - 98c: 98 2f mov r25, r24 - 98e: 95 54 subi r25, 0x45 ; 69 - 990: 93 30 cpi r25, 0x03 ; 3 - 992: 18 f0 brcs .+6 ; 0x99a - 994: 90 52 subi r25, 0x20 ; 32 - 996: 93 30 cpi r25, 0x03 ; 3 - 998: 28 f4 brcc .+10 ; 0x9a4 - 99a: 0c 5f subi r16, 0xFC ; 252 - 99c: 1f 4f sbci r17, 0xFF ; 255 - 99e: ff e3 ldi r31, 0x3F ; 63 - 9a0: f9 83 std Y+1, r31 ; 0x01 - 9a2: 0d c0 rjmp .+26 ; 0x9be - 9a4: 83 36 cpi r24, 0x63 ; 99 - 9a6: 31 f0 breq .+12 ; 0x9b4 - 9a8: 83 37 cpi r24, 0x73 ; 115 - 9aa: 71 f0 breq .+28 ; 0x9c8 - 9ac: 83 35 cpi r24, 0x53 ; 83 - 9ae: 09 f0 breq .+2 ; 0x9b2 - 9b0: 5e c0 rjmp .+188 ; 0xa6e - 9b2: 23 c0 rjmp .+70 ; 0x9fa - 9b4: f8 01 movw r30, r16 - 9b6: 80 81 ld r24, Z - 9b8: 89 83 std Y+1, r24 ; 0x01 - 9ba: 0e 5f subi r16, 0xFE ; 254 - 9bc: 1f 4f sbci r17, 0xFF ; 255 - 9be: 44 24 eor r4, r4 - 9c0: 43 94 inc r4 - 9c2: 51 2c mov r5, r1 - 9c4: 54 01 movw r10, r8 - 9c6: 15 c0 rjmp .+42 ; 0x9f2 - 9c8: 38 01 movw r6, r16 - 9ca: f2 e0 ldi r31, 0x02 ; 2 - 9cc: 6f 0e add r6, r31 - 9ce: 71 1c adc r7, r1 - 9d0: f8 01 movw r30, r16 - 9d2: a0 80 ld r10, Z - 9d4: b1 80 ldd r11, Z+1 ; 0x01 - 9d6: 26 ff sbrs r18, 6 - 9d8: 03 c0 rjmp .+6 ; 0x9e0 - 9da: 65 2d mov r22, r5 - 9dc: 70 e0 ldi r23, 0x00 ; 0 - 9de: 02 c0 rjmp .+4 ; 0x9e4 - 9e0: 6f ef ldi r22, 0xFF ; 255 - 9e2: 7f ef ldi r23, 0xFF ; 255 - 9e4: c5 01 movw r24, r10 - 9e6: 2c 87 std Y+12, r18 ; 0x0c - 9e8: 0e 94 3d 06 call 0xc7a ; 0xc7a - 9ec: 2c 01 movw r4, r24 - 9ee: 83 01 movw r16, r6 - 9f0: 2c 85 ldd r18, Y+12 ; 0x0c - 9f2: 6f e7 ldi r22, 0x7F ; 127 - 9f4: 26 2e mov r2, r22 - 9f6: 22 22 and r2, r18 - 9f8: 18 c0 rjmp .+48 ; 0xa2a - 9fa: 38 01 movw r6, r16 - 9fc: f2 e0 ldi r31, 0x02 ; 2 - 9fe: 6f 0e add r6, r31 - a00: 71 1c adc r7, r1 - a02: f8 01 movw r30, r16 - a04: a0 80 ld r10, Z - a06: b1 80 ldd r11, Z+1 ; 0x01 - a08: 26 ff sbrs r18, 6 - a0a: 03 c0 rjmp .+6 ; 0xa12 - a0c: 65 2d mov r22, r5 - a0e: 70 e0 ldi r23, 0x00 ; 0 - a10: 02 c0 rjmp .+4 ; 0xa16 - a12: 6f ef ldi r22, 0xFF ; 255 - a14: 7f ef ldi r23, 0xFF ; 255 - a16: c5 01 movw r24, r10 - a18: 2c 87 std Y+12, r18 ; 0x0c - a1a: 0e 94 32 06 call 0xc64 ; 0xc64 - a1e: 2c 01 movw r4, r24 - a20: 2c 85 ldd r18, Y+12 ; 0x0c - a22: 50 e8 ldi r21, 0x80 ; 128 - a24: 25 2e mov r2, r21 - a26: 22 2a or r2, r18 - a28: 83 01 movw r16, r6 - a2a: 23 fc sbrc r2, 3 - a2c: 1c c0 rjmp .+56 ; 0xa66 - a2e: 06 c0 rjmp .+12 ; 0xa3c - a30: b7 01 movw r22, r14 - a32: 80 e2 ldi r24, 0x20 ; 32 - a34: 90 e0 ldi r25, 0x00 ; 0 - a36: 0e 94 48 06 call 0xc90 ; 0xc90 - a3a: 3a 94 dec r3 - a3c: 83 2d mov r24, r3 - a3e: 90 e0 ldi r25, 0x00 ; 0 - a40: 48 16 cp r4, r24 - a42: 59 06 cpc r5, r25 - a44: a8 f3 brcs .-22 ; 0xa30 - a46: 0f c0 rjmp .+30 ; 0xa66 - a48: f5 01 movw r30, r10 - a4a: 27 fc sbrc r2, 7 - a4c: 85 91 lpm r24, Z+ - a4e: 27 fe sbrs r2, 7 - a50: 81 91 ld r24, Z+ - a52: 5f 01 movw r10, r30 - a54: b7 01 movw r22, r14 - a56: 90 e0 ldi r25, 0x00 ; 0 - a58: 0e 94 48 06 call 0xc90 ; 0xc90 - a5c: 31 10 cpse r3, r1 - a5e: 3a 94 dec r3 - a60: f1 e0 ldi r31, 0x01 ; 1 - a62: 4f 1a sub r4, r31 - a64: 51 08 sbc r5, r1 - a66: 41 14 cp r4, r1 - a68: 51 04 cpc r5, r1 - a6a: 71 f7 brne .-36 ; 0xa48 - a6c: ed c0 rjmp .+474 ; 0xc48 - a6e: 84 36 cpi r24, 0x64 ; 100 - a70: 11 f0 breq .+4 ; 0xa76 - a72: 89 36 cpi r24, 0x69 ; 105 - a74: 41 f5 brne .+80 ; 0xac6 - a76: f8 01 movw r30, r16 - a78: 27 ff sbrs r18, 7 - a7a: 07 c0 rjmp .+14 ; 0xa8a - a7c: 60 81 ld r22, Z - a7e: 71 81 ldd r23, Z+1 ; 0x01 - a80: 82 81 ldd r24, Z+2 ; 0x02 - a82: 93 81 ldd r25, Z+3 ; 0x03 - a84: 0c 5f subi r16, 0xFC ; 252 - a86: 1f 4f sbci r17, 0xFF ; 255 - a88: 08 c0 rjmp .+16 ; 0xa9a - a8a: 60 81 ld r22, Z - a8c: 71 81 ldd r23, Z+1 ; 0x01 - a8e: 88 27 eor r24, r24 - a90: 77 fd sbrc r23, 7 - a92: 80 95 com r24 - a94: 98 2f mov r25, r24 - a96: 0e 5f subi r16, 0xFE ; 254 - a98: 1f 4f sbci r17, 0xFF ; 255 - a9a: 4f e6 ldi r20, 0x6F ; 111 - a9c: b4 2e mov r11, r20 - a9e: b2 22 and r11, r18 - aa0: 97 ff sbrs r25, 7 - aa2: 09 c0 rjmp .+18 ; 0xab6 - aa4: 90 95 com r25 - aa6: 80 95 com r24 - aa8: 70 95 com r23 - aaa: 61 95 neg r22 - aac: 7f 4f sbci r23, 0xFF ; 255 - aae: 8f 4f sbci r24, 0xFF ; 255 - ab0: 9f 4f sbci r25, 0xFF ; 255 - ab2: f0 e8 ldi r31, 0x80 ; 128 - ab4: bf 2a or r11, r31 - ab6: 2a e0 ldi r18, 0x0A ; 10 - ab8: 30 e0 ldi r19, 0x00 ; 0 - aba: a4 01 movw r20, r8 - abc: 0e 94 74 06 call 0xce8 ; 0xce8 <__ultoa_invert> - ac0: a8 2e mov r10, r24 - ac2: a8 18 sub r10, r8 - ac4: 43 c0 rjmp .+134 ; 0xb4c - ac6: 85 37 cpi r24, 0x75 ; 117 - ac8: 31 f4 brne .+12 ; 0xad6 - aca: 3f ee ldi r19, 0xEF ; 239 - acc: b3 2e mov r11, r19 - ace: b2 22 and r11, r18 - ad0: 2a e0 ldi r18, 0x0A ; 10 - ad2: 30 e0 ldi r19, 0x00 ; 0 - ad4: 24 c0 rjmp .+72 ; 0xb1e - ad6: 99 ef ldi r25, 0xF9 ; 249 - ad8: b9 2e mov r11, r25 - ada: b2 22 and r11, r18 - adc: 8f 36 cpi r24, 0x6F ; 111 - ade: b9 f0 breq .+46 ; 0xb0e - ae0: 20 f4 brcc .+8 ; 0xaea - ae2: 88 35 cpi r24, 0x58 ; 88 - ae4: 09 f0 breq .+2 ; 0xae8 - ae6: b3 c0 rjmp .+358 ; 0xc4e - ae8: 0d c0 rjmp .+26 ; 0xb04 - aea: 80 37 cpi r24, 0x70 ; 112 - aec: 21 f0 breq .+8 ; 0xaf6 - aee: 88 37 cpi r24, 0x78 ; 120 - af0: 09 f0 breq .+2 ; 0xaf4 - af2: ad c0 rjmp .+346 ; 0xc4e - af4: 02 c0 rjmp .+4 ; 0xafa - af6: 20 e1 ldi r18, 0x10 ; 16 - af8: b2 2a or r11, r18 - afa: b4 fe sbrs r11, 4 - afc: 0b c0 rjmp .+22 ; 0xb14 - afe: 84 e0 ldi r24, 0x04 ; 4 - b00: b8 2a or r11, r24 - b02: 08 c0 rjmp .+16 ; 0xb14 - b04: 24 ff sbrs r18, 4 - b06: 09 c0 rjmp .+18 ; 0xb1a - b08: e6 e0 ldi r30, 0x06 ; 6 - b0a: be 2a or r11, r30 - b0c: 06 c0 rjmp .+12 ; 0xb1a - b0e: 28 e0 ldi r18, 0x08 ; 8 - b10: 30 e0 ldi r19, 0x00 ; 0 - b12: 05 c0 rjmp .+10 ; 0xb1e - b14: 20 e1 ldi r18, 0x10 ; 16 - b16: 30 e0 ldi r19, 0x00 ; 0 - b18: 02 c0 rjmp .+4 ; 0xb1e - b1a: 20 e1 ldi r18, 0x10 ; 16 - b1c: 32 e0 ldi r19, 0x02 ; 2 - b1e: f8 01 movw r30, r16 - b20: b7 fe sbrs r11, 7 - b22: 07 c0 rjmp .+14 ; 0xb32 - b24: 60 81 ld r22, Z - b26: 71 81 ldd r23, Z+1 ; 0x01 - b28: 82 81 ldd r24, Z+2 ; 0x02 - b2a: 93 81 ldd r25, Z+3 ; 0x03 - b2c: 0c 5f subi r16, 0xFC ; 252 - b2e: 1f 4f sbci r17, 0xFF ; 255 - b30: 06 c0 rjmp .+12 ; 0xb3e - b32: 60 81 ld r22, Z - b34: 71 81 ldd r23, Z+1 ; 0x01 - b36: 80 e0 ldi r24, 0x00 ; 0 - b38: 90 e0 ldi r25, 0x00 ; 0 - b3a: 0e 5f subi r16, 0xFE ; 254 - b3c: 1f 4f sbci r17, 0xFF ; 255 - b3e: a4 01 movw r20, r8 - b40: 0e 94 74 06 call 0xce8 ; 0xce8 <__ultoa_invert> - b44: a8 2e mov r10, r24 - b46: a8 18 sub r10, r8 - b48: ff e7 ldi r31, 0x7F ; 127 - b4a: bf 22 and r11, r31 - b4c: b6 fe sbrs r11, 6 - b4e: 0b c0 rjmp .+22 ; 0xb66 - b50: 2b 2d mov r18, r11 - b52: 2e 7f andi r18, 0xFE ; 254 - b54: a5 14 cp r10, r5 - b56: 50 f4 brcc .+20 ; 0xb6c - b58: b4 fe sbrs r11, 4 - b5a: 0a c0 rjmp .+20 ; 0xb70 - b5c: b2 fc sbrc r11, 2 - b5e: 08 c0 rjmp .+16 ; 0xb70 - b60: 2b 2d mov r18, r11 - b62: 2e 7e andi r18, 0xEE ; 238 - b64: 05 c0 rjmp .+10 ; 0xb70 - b66: 7a 2c mov r7, r10 - b68: 2b 2d mov r18, r11 - b6a: 03 c0 rjmp .+6 ; 0xb72 - b6c: 7a 2c mov r7, r10 - b6e: 01 c0 rjmp .+2 ; 0xb72 - b70: 75 2c mov r7, r5 - b72: 24 ff sbrs r18, 4 - b74: 0d c0 rjmp .+26 ; 0xb90 - b76: fe 01 movw r30, r28 - b78: ea 0d add r30, r10 - b7a: f1 1d adc r31, r1 - b7c: 80 81 ld r24, Z - b7e: 80 33 cpi r24, 0x30 ; 48 - b80: 11 f4 brne .+4 ; 0xb86 - b82: 29 7e andi r18, 0xE9 ; 233 - b84: 09 c0 rjmp .+18 ; 0xb98 - b86: 22 ff sbrs r18, 2 - b88: 06 c0 rjmp .+12 ; 0xb96 - b8a: 73 94 inc r7 - b8c: 73 94 inc r7 - b8e: 04 c0 rjmp .+8 ; 0xb98 - b90: 82 2f mov r24, r18 - b92: 86 78 andi r24, 0x86 ; 134 - b94: 09 f0 breq .+2 ; 0xb98 - b96: 73 94 inc r7 - b98: 23 fd sbrc r18, 3 - b9a: 14 c0 rjmp .+40 ; 0xbc4 - b9c: 20 ff sbrs r18, 0 - b9e: 0f c0 rjmp .+30 ; 0xbbe - ba0: 5a 2c mov r5, r10 - ba2: 73 14 cp r7, r3 - ba4: 60 f4 brcc .+24 ; 0xbbe - ba6: 53 0c add r5, r3 - ba8: 57 18 sub r5, r7 - baa: 73 2c mov r7, r3 - bac: 08 c0 rjmp .+16 ; 0xbbe - bae: b7 01 movw r22, r14 - bb0: 80 e2 ldi r24, 0x20 ; 32 - bb2: 90 e0 ldi r25, 0x00 ; 0 - bb4: 2c 87 std Y+12, r18 ; 0x0c - bb6: 0e 94 48 06 call 0xc90 ; 0xc90 - bba: 73 94 inc r7 - bbc: 2c 85 ldd r18, Y+12 ; 0x0c - bbe: 73 14 cp r7, r3 - bc0: b0 f3 brcs .-20 ; 0xbae - bc2: 04 c0 rjmp .+8 ; 0xbcc - bc4: 73 14 cp r7, r3 - bc6: 10 f4 brcc .+4 ; 0xbcc - bc8: 37 18 sub r3, r7 - bca: 01 c0 rjmp .+2 ; 0xbce - bcc: 31 2c mov r3, r1 - bce: 24 ff sbrs r18, 4 - bd0: 12 c0 rjmp .+36 ; 0xbf6 - bd2: b7 01 movw r22, r14 - bd4: 80 e3 ldi r24, 0x30 ; 48 - bd6: 90 e0 ldi r25, 0x00 ; 0 - bd8: 2c 87 std Y+12, r18 ; 0x0c - bda: 0e 94 48 06 call 0xc90 ; 0xc90 - bde: 2c 85 ldd r18, Y+12 ; 0x0c - be0: 22 ff sbrs r18, 2 - be2: 1e c0 rjmp .+60 ; 0xc20 - be4: 21 ff sbrs r18, 1 - be6: 03 c0 rjmp .+6 ; 0xbee - be8: 88 e5 ldi r24, 0x58 ; 88 - bea: 90 e0 ldi r25, 0x00 ; 0 - bec: 02 c0 rjmp .+4 ; 0xbf2 - bee: 88 e7 ldi r24, 0x78 ; 120 - bf0: 90 e0 ldi r25, 0x00 ; 0 - bf2: b7 01 movw r22, r14 - bf4: 0c c0 rjmp .+24 ; 0xc0e - bf6: 82 2f mov r24, r18 - bf8: 86 78 andi r24, 0x86 ; 134 - bfa: 91 f0 breq .+36 ; 0xc20 - bfc: 21 fd sbrc r18, 1 - bfe: 02 c0 rjmp .+4 ; 0xc04 - c00: 80 e2 ldi r24, 0x20 ; 32 - c02: 01 c0 rjmp .+2 ; 0xc06 - c04: 8b e2 ldi r24, 0x2B ; 43 - c06: 27 fd sbrc r18, 7 - c08: 8d e2 ldi r24, 0x2D ; 45 - c0a: b7 01 movw r22, r14 - c0c: 90 e0 ldi r25, 0x00 ; 0 - c0e: 0e 94 48 06 call 0xc90 ; 0xc90 - c12: 06 c0 rjmp .+12 ; 0xc20 - c14: b7 01 movw r22, r14 - c16: 80 e3 ldi r24, 0x30 ; 48 - c18: 90 e0 ldi r25, 0x00 ; 0 - c1a: 0e 94 48 06 call 0xc90 ; 0xc90 - c1e: 5a 94 dec r5 - c20: a5 14 cp r10, r5 - c22: c0 f3 brcs .-16 ; 0xc14 - c24: aa 94 dec r10 - c26: f4 01 movw r30, r8 - c28: ea 0d add r30, r10 - c2a: f1 1d adc r31, r1 - c2c: b7 01 movw r22, r14 - c2e: 80 81 ld r24, Z - c30: 90 e0 ldi r25, 0x00 ; 0 - c32: 0e 94 48 06 call 0xc90 ; 0xc90 - c36: a1 10 cpse r10, r1 - c38: f5 cf rjmp .-22 ; 0xc24 - c3a: 06 c0 rjmp .+12 ; 0xc48 - c3c: b7 01 movw r22, r14 - c3e: 80 e2 ldi r24, 0x20 ; 32 - c40: 90 e0 ldi r25, 0x00 ; 0 - c42: 0e 94 48 06 call 0xc90 ; 0xc90 - c46: 3a 94 dec r3 - c48: 31 10 cpse r3, r1 - c4a: f8 cf rjmp .-16 ; 0xc3c - c4c: 43 ce rjmp .-890 ; 0x8d4 - c4e: f7 01 movw r30, r14 - c50: 26 81 ldd r18, Z+6 ; 0x06 - c52: 37 81 ldd r19, Z+7 ; 0x07 - c54: 02 c0 rjmp .+4 ; 0xc5a - c56: 2f ef ldi r18, 0xFF ; 255 - c58: 3f ef ldi r19, 0xFF ; 255 - c5a: c9 01 movw r24, r18 - c5c: 2c 96 adiw r28, 0x0c ; 12 - c5e: e2 e1 ldi r30, 0x12 ; 18 - c60: 0c 94 ee 06 jmp 0xddc ; 0xddc <__epilogue_restores__> - -00000c64 : - c64: fc 01 movw r30, r24 - c66: 05 90 lpm r0, Z+ - c68: 61 50 subi r22, 0x01 ; 1 - c6a: 70 40 sbci r23, 0x00 ; 0 - c6c: 01 10 cpse r0, r1 - c6e: d8 f7 brcc .-10 ; 0xc66 - c70: 80 95 com r24 - c72: 90 95 com r25 - c74: 8e 0f add r24, r30 - c76: 9f 1f adc r25, r31 - c78: 08 95 ret - -00000c7a : - c7a: fc 01 movw r30, r24 - c7c: 61 50 subi r22, 0x01 ; 1 - c7e: 70 40 sbci r23, 0x00 ; 0 - c80: 01 90 ld r0, Z+ - c82: 01 10 cpse r0, r1 - c84: d8 f7 brcc .-10 ; 0xc7c - c86: 80 95 com r24 - c88: 90 95 com r25 - c8a: 8e 0f add r24, r30 - c8c: 9f 1f adc r25, r31 - c8e: 08 95 ret - -00000c90 : - c90: 0f 93 push r16 - c92: 1f 93 push r17 - c94: cf 93 push r28 - c96: df 93 push r29 - c98: 8c 01 movw r16, r24 - c9a: eb 01 movw r28, r22 - c9c: 8b 81 ldd r24, Y+3 ; 0x03 - c9e: 81 fd sbrc r24, 1 - ca0: 03 c0 rjmp .+6 ; 0xca8 - ca2: 0f ef ldi r16, 0xFF ; 255 - ca4: 1f ef ldi r17, 0xFF ; 255 - ca6: 1a c0 rjmp .+52 ; 0xcdc - ca8: 82 ff sbrs r24, 2 - caa: 0d c0 rjmp .+26 ; 0xcc6 - cac: 2e 81 ldd r18, Y+6 ; 0x06 - cae: 3f 81 ldd r19, Y+7 ; 0x07 - cb0: 8c 81 ldd r24, Y+4 ; 0x04 - cb2: 9d 81 ldd r25, Y+5 ; 0x05 - cb4: 28 17 cp r18, r24 - cb6: 39 07 cpc r19, r25 - cb8: 64 f4 brge .+24 ; 0xcd2 - cba: e8 81 ld r30, Y - cbc: f9 81 ldd r31, Y+1 ; 0x01 - cbe: 01 93 st Z+, r16 - cc0: f9 83 std Y+1, r31 ; 0x01 - cc2: e8 83 st Y, r30 - cc4: 06 c0 rjmp .+12 ; 0xcd2 - cc6: e8 85 ldd r30, Y+8 ; 0x08 - cc8: f9 85 ldd r31, Y+9 ; 0x09 - cca: 80 2f mov r24, r16 - ccc: 09 95 icall - cce: 89 2b or r24, r25 - cd0: 41 f7 brne .-48 ; 0xca2 - cd2: 8e 81 ldd r24, Y+6 ; 0x06 - cd4: 9f 81 ldd r25, Y+7 ; 0x07 - cd6: 01 96 adiw r24, 0x01 ; 1 - cd8: 9f 83 std Y+7, r25 ; 0x07 - cda: 8e 83 std Y+6, r24 ; 0x06 - cdc: c8 01 movw r24, r16 - cde: df 91 pop r29 - ce0: cf 91 pop r28 - ce2: 1f 91 pop r17 - ce4: 0f 91 pop r16 - ce6: 08 95 ret - -00000ce8 <__ultoa_invert>: - ce8: fa 01 movw r30, r20 - cea: aa 27 eor r26, r26 - cec: 28 30 cpi r18, 0x08 ; 8 - cee: 51 f1 breq .+84 ; 0xd44 <__ultoa_invert+0x5c> - cf0: 20 31 cpi r18, 0x10 ; 16 - cf2: 81 f1 breq .+96 ; 0xd54 <__ultoa_invert+0x6c> - cf4: e8 94 clt - cf6: 6f 93 push r22 - cf8: 6e 7f andi r22, 0xFE ; 254 - cfa: 6e 5f subi r22, 0xFE ; 254 - cfc: 7f 4f sbci r23, 0xFF ; 255 - cfe: 8f 4f sbci r24, 0xFF ; 255 - d00: 9f 4f sbci r25, 0xFF ; 255 - d02: af 4f sbci r26, 0xFF ; 255 - d04: b1 e0 ldi r27, 0x01 ; 1 - d06: 3e d0 rcall .+124 ; 0xd84 <__ultoa_invert+0x9c> - d08: b4 e0 ldi r27, 0x04 ; 4 - d0a: 3c d0 rcall .+120 ; 0xd84 <__ultoa_invert+0x9c> - d0c: 67 0f add r22, r23 - d0e: 78 1f adc r23, r24 - d10: 89 1f adc r24, r25 - d12: 9a 1f adc r25, r26 - d14: a1 1d adc r26, r1 - d16: 68 0f add r22, r24 - d18: 79 1f adc r23, r25 - d1a: 8a 1f adc r24, r26 - d1c: 91 1d adc r25, r1 - d1e: a1 1d adc r26, r1 - d20: 6a 0f add r22, r26 - d22: 71 1d adc r23, r1 - d24: 81 1d adc r24, r1 - d26: 91 1d adc r25, r1 - d28: a1 1d adc r26, r1 - d2a: 20 d0 rcall .+64 ; 0xd6c <__ultoa_invert+0x84> - d2c: 09 f4 brne .+2 ; 0xd30 <__ultoa_invert+0x48> - d2e: 68 94 set - d30: 3f 91 pop r19 - d32: 2a e0 ldi r18, 0x0A ; 10 - d34: 26 9f mul r18, r22 - d36: 11 24 eor r1, r1 - d38: 30 19 sub r19, r0 - d3a: 30 5d subi r19, 0xD0 ; 208 - d3c: 31 93 st Z+, r19 - d3e: de f6 brtc .-74 ; 0xcf6 <__ultoa_invert+0xe> - d40: cf 01 movw r24, r30 - d42: 08 95 ret - d44: 46 2f mov r20, r22 - d46: 47 70 andi r20, 0x07 ; 7 - d48: 40 5d subi r20, 0xD0 ; 208 - d4a: 41 93 st Z+, r20 - d4c: b3 e0 ldi r27, 0x03 ; 3 - d4e: 0f d0 rcall .+30 ; 0xd6e <__ultoa_invert+0x86> - d50: c9 f7 brne .-14 ; 0xd44 <__ultoa_invert+0x5c> - d52: f6 cf rjmp .-20 ; 0xd40 <__ultoa_invert+0x58> - d54: 46 2f mov r20, r22 - d56: 4f 70 andi r20, 0x0F ; 15 - d58: 40 5d subi r20, 0xD0 ; 208 - d5a: 4a 33 cpi r20, 0x3A ; 58 - d5c: 18 f0 brcs .+6 ; 0xd64 <__ultoa_invert+0x7c> - d5e: 49 5d subi r20, 0xD9 ; 217 - d60: 31 fd sbrc r19, 1 - d62: 40 52 subi r20, 0x20 ; 32 - d64: 41 93 st Z+, r20 - d66: 02 d0 rcall .+4 ; 0xd6c <__ultoa_invert+0x84> - d68: a9 f7 brne .-22 ; 0xd54 <__ultoa_invert+0x6c> - d6a: ea cf rjmp .-44 ; 0xd40 <__ultoa_invert+0x58> - d6c: b4 e0 ldi r27, 0x04 ; 4 - d6e: a6 95 lsr r26 - d70: 97 95 ror r25 - d72: 87 95 ror r24 - d74: 77 95 ror r23 - d76: 67 95 ror r22 - d78: ba 95 dec r27 - d7a: c9 f7 brne .-14 ; 0xd6e <__ultoa_invert+0x86> - d7c: 00 97 sbiw r24, 0x00 ; 0 - d7e: 61 05 cpc r22, r1 - d80: 71 05 cpc r23, r1 - d82: 08 95 ret - d84: 9b 01 movw r18, r22 - d86: ac 01 movw r20, r24 - d88: 0a 2e mov r0, r26 - d8a: 06 94 lsr r0 - d8c: 57 95 ror r21 - d8e: 47 95 ror r20 - d90: 37 95 ror r19 - d92: 27 95 ror r18 - d94: ba 95 dec r27 - d96: c9 f7 brne .-14 ; 0xd8a <__ultoa_invert+0xa2> - d98: 62 0f add r22, r18 - d9a: 73 1f adc r23, r19 - d9c: 84 1f adc r24, r20 - d9e: 95 1f adc r25, r21 - da0: a0 1d adc r26, r0 - da2: 08 95 ret - -00000da4 <__prologue_saves__>: - da4: 2f 92 push r2 - da6: 3f 92 push r3 - da8: 4f 92 push r4 - daa: 5f 92 push r5 - dac: 6f 92 push r6 - dae: 7f 92 push r7 - db0: 8f 92 push r8 - db2: 9f 92 push r9 - db4: af 92 push r10 - db6: bf 92 push r11 - db8: cf 92 push r12 - dba: df 92 push r13 - dbc: ef 92 push r14 - dbe: ff 92 push r15 - dc0: 0f 93 push r16 - dc2: 1f 93 push r17 - dc4: cf 93 push r28 - dc6: df 93 push r29 - dc8: cd b7 in r28, 0x3d ; 61 - dca: de b7 in r29, 0x3e ; 62 - dcc: ca 1b sub r28, r26 - dce: db 0b sbc r29, r27 - dd0: 0f b6 in r0, 0x3f ; 63 - dd2: f8 94 cli - dd4: de bf out 0x3e, r29 ; 62 - dd6: 0f be out 0x3f, r0 ; 63 - dd8: cd bf out 0x3d, r28 ; 61 - dda: 09 94 ijmp - -00000ddc <__epilogue_restores__>: - ddc: 2a 88 ldd r2, Y+18 ; 0x12 - dde: 39 88 ldd r3, Y+17 ; 0x11 - de0: 48 88 ldd r4, Y+16 ; 0x10 - de2: 5f 84 ldd r5, Y+15 ; 0x0f - de4: 6e 84 ldd r6, Y+14 ; 0x0e - de6: 7d 84 ldd r7, Y+13 ; 0x0d - de8: 8c 84 ldd r8, Y+12 ; 0x0c - dea: 9b 84 ldd r9, Y+11 ; 0x0b - dec: aa 84 ldd r10, Y+10 ; 0x0a - dee: b9 84 ldd r11, Y+9 ; 0x09 - df0: c8 84 ldd r12, Y+8 ; 0x08 - df2: df 80 ldd r13, Y+7 ; 0x07 - df4: ee 80 ldd r14, Y+6 ; 0x06 - df6: fd 80 ldd r15, Y+5 ; 0x05 - df8: 0c 81 ldd r16, Y+4 ; 0x04 - dfa: 1b 81 ldd r17, Y+3 ; 0x03 - dfc: aa 81 ldd r26, Y+2 ; 0x02 - dfe: b9 81 ldd r27, Y+1 ; 0x01 - e00: ce 0f add r28, r30 - e02: d1 1d adc r29, r1 - e04: 0f b6 in r0, 0x3f ; 63 - e06: f8 94 cli - e08: de bf out 0x3e, r29 ; 62 - e0a: 0f be out 0x3f, r0 ; 63 - e0c: cd bf out 0x3d, r28 ; 61 - e0e: ed 01 movw r28, r26 - e10: 08 95 ret - -00000e12 <_exit>: - e12: f8 94 cli - -00000e14 <__stop_program>: - e14: ff cf rjmp .-2 ; 0xe14 <__stop_program> +000001fc <__stop_program>: + 1fc: ff cf rjmp .-2 ; 0x1fc <__stop_program> diff --git a/Button/Button/Debug/Button.map b/Button/Button/Debug/Button.map index 89be892..f4bed08 100644 --- a/Button/Button/Debug/Button.map +++ b/Button/Button/Debug/Button.map @@ -10,41 +10,11 @@ c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu- Button.o (__do_global_ctors) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o) (__tablejump__) -c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(sprintf.o) - Button.o (sprintf) -c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(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/avr5\libc.a(sprintf.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/avr5\libc.a(strnlen_P.o) - c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) (strnlen_P) -c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(strnlen.o) - c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) (strnlen) -c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(fputc.o) - c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) (fputc) -c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(ultoa_invert.o) - c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) (__ultoa_invert) -c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_prologue.o) - c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(sprintf.o) (__prologue_saves__) -c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_epilogue.o) - c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(sprintf.o) (__epilogue_restores__) Discarded input sections .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm32a.o - .group 0x00000000 0x8 Button.o - .group 0x00000000 0x8 Button.o - .group 0x00000000 0x8 Button.o - .group 0x00000000 0x8 Button.o - .group 0x00000000 0x8 Button.o - .group 0x00000000 0x8 Button.o - .group 0x00000000 0x8 Button.o - .group 0x00000000 0x8 Button.o - .group 0x00000000 0x8 Button.o - .group 0x00000000 0x8 Button.o - .group 0x00000000 0x8 Button.o - .group 0x00000000 0x8 Button.o .text 0x00000000 0x0 Button.o - .text._ZN3LedIN6avrlib5portcELi2ELi1ELi0EE9timer_intEv - 0x00000000 0x76 Button.o .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) .text.libgcc.mul @@ -109,40 +79,6 @@ Discarded input sections 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) .text.libgcc.fmul 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) - .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(sprintf.o) - .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(sprintf.o) - .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(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/avr5\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/avr5\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/avr5\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/avr5\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/avr5\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/avr5\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/avr5\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/avr5\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/avr5\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/avr5\libgcc.a(_prologue.o) - .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_prologue.o) - .text.libgcc.mul - 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_prologue.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/avr5\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/avr5\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/avr5\libgcc.a(_prologue.o) - .text.libgcc.fmul - 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_prologue.o) - .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_epilogue.o) - .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_epilogue.o) - .text.libgcc.mul - 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_epilogue.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/avr5\libgcc.a(_epilogue.o) - .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_epilogue.o) - .text.libgcc.builtins - 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_epilogue.o) - .text.libgcc.fmul - 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_epilogue.o) Memory Configuration @@ -259,7 +195,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .rela.plt *(.rela.plt) -.text 0x00000000 0xe74 +.text 0x00000000 0x1fe *(.vectors) .vectors 0x00000000 0x54 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm32a.o 0x00000000 __vector_default @@ -329,7 +265,6 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x000000a6 __vector_19 0x000000a6 __vector_7 0x000000a6 __vector_5 - 0x000000a6 __vector_4 0x000000a6 __vector_9 0x000000a6 __vector_2 0x000000a6 __vector_15 @@ -341,90 +276,26 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x000000a6 __vector_20 0x000000aa . = ALIGN (0x2) *(.text.*) - .text._ZN4UartILm9600EE12uart_putcharEh.isra.1 - 0x000000aa 0xa Button.o - .text._ZN4UartILm9600EE4sendEPKc.isra.2 - 0x000000b4 0x18 Button.o - .text._ZN6avrlib3pinINS_5portbELh5EE6outputEb.part.20 - 0x000000cc 0x4 Button.o - .text._ZN6avrlib3pinINS_5portbELh7EE6outputEb.part.21 - 0x000000d0 0x4 Button.o - .text._ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh - 0x000000d4 0x26 Button.o - 0x000000d4 _ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh - .text._ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.11.constprop.32 - 0x000000fa 0x66 Button.o - .text._ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh - 0x00000160 0xe0 Button.o - 0x00000160 _ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEE4sendEh - .text._ZN6avrlib3pinINS_5portbELh4EE8make_lowEv - 0x00000240 0x6 Button.o - 0x00000240 _ZN6avrlib3pinINS_5portbELh4EE8make_lowEv - .text._ZN6avrlib3pinINS_5portbELh4EE9make_highEv - 0x00000246 0x6 Button.o - 0x00000246 _ZN6avrlib3pinINS_5portbELh4EE9make_highEv - .text._ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E22mcp2515_write_registerEhh - 0x0000024c 0x4c Button.o - 0x0000024c _ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E22mcp2515_write_registerEhh - .text._ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E8init_canEv - 0x00000298 0xc8 Button.o - 0x00000298 _ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E8init_canEv - .text._ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E18mcp2515_bit_modifyEhhh - 0x00000360 0x5c Button.o - 0x00000360 _ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E18mcp2515_bit_modifyEhhh - .text._ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E15can_get_messageEP10CANMessage - 0x000003bc 0x12a Button.o - 0x000003bc _ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E15can_get_messageEP10CANMessage - .text._ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E16can_send_messageEP10CANMessage - 0x000004e6 0x128 Button.o - 0x000004e6 _ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E16can_send_messageEP10CANMessage - .text._ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E4sendEjhz - 0x0000060e 0x62 Button.o - 0x0000060e _ZN3CanI3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEES4_E4sendEjhz - .text._Z4initv - 0x00000670 0xee Button.o - 0x00000670 _Z4initv + .text._ZN3LedIN6avrlib5portcELi2ELi1ELi0EE5colorEh.isra.10 + 0x000000aa 0x26 Button.o + .text._ZN3LedIN6avrlib5portcELi2ELi1ELi0EE4fadeEhhh.isra.11.constprop.18 + 0x000000d0 0x66 Button.o .text.startup.main - 0x0000075e 0xae Button.o - 0x0000075e main - .text._ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEEC2Ev - 0x0000080c 0x40 Button.o - 0x0000080c _ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEEC1Ev - 0x0000080c _ZN3SpiIN6avrlib5portbELi4ELi6ELi5ELi7ELi0E4UartILm9600EEEC2Ev + 0x00000136 0x74 Button.o + 0x00000136 main + .text.__vector_4 + 0x000001aa 0x14 Button.o + 0x000001aa __vector_4 .text.startup._GLOBAL__sub_I_o - 0x0000084c 0x6e Button.o - .text.libgcc 0x000008ba 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) - 0x000008ba __tablejump2__ - 0x000008be __tablejump__ - .text.avr-libc - 0x000008c6 0x44 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(sprintf.o) - 0x000008c6 sprintf - .text.avr-libc - 0x0000090a 0x3b8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) - 0x0000090a vfprintf - .text.avr-libc - 0x00000cc2 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/avr5\libc.a(strnlen_P.o) - 0x00000cc2 strnlen_P - .text.avr-libc - 0x00000cd8 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/avr5\libc.a(strnlen.o) - 0x00000cd8 strnlen - .text.avr-libc - 0x00000cee 0x58 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(fputc.o) - 0x00000cee fputc - .text.avr-libc - 0x00000d46 0xbc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(ultoa_invert.o) - 0x00000d46 __ultoa_invert - .text.libgcc.prologue - 0x00000e02 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/avr5\libgcc.a(_prologue.o) - 0x00000e02 __prologue_saves__ - .text.libgcc.prologue - 0x00000e3a 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/avr5\libgcc.a(_epilogue.o) - 0x00000e3a __epilogue_restores__ - 0x00000e70 . = ALIGN (0x2) + 0x000001be 0x30 Button.o + .text.libgcc 0x000001ee 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) + 0x000001ee __tablejump2__ + 0x000001f2 __tablejump__ + 0x000001fa . = ALIGN (0x2) *(.fini9) - .fini9 0x00000e70 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) - 0x00000e70 _exit - 0x00000e70 exit + .fini9 0x000001fa 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) + 0x000001fa _exit + 0x000001fa exit *(.fini9) *(.fini8) *(.fini8) @@ -443,11 +314,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00000e70 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) + .fini0 0x000001fa 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) *(.fini0) - 0x00000e74 _etext = . + 0x000001fe _etext = . -.data 0x00800060 0x8c load address 0x00000e74 +.data 0x00800060 0x2 load address 0x000001fe 0x00800060 PROVIDE (__data_start, .) *(.data) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm32a.o @@ -458,47 +329,33 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .data 0x00800061 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_clear_bss.o) .data 0x00800061 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o) .data 0x00800061 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) - .data 0x00800061 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(sprintf.o) - .data 0x00800061 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) - .data 0x00800061 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(strnlen_P.o) - .data 0x00800061 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(strnlen.o) - .data 0x00800061 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(fputc.o) - .data 0x00800061 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(ultoa_invert.o) - .data 0x00800061 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_prologue.o) - .data 0x00800061 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_epilogue.o) *(.data*) *(.rodata) *(.rodata*) - .rodata.str1.1 - 0x00800061 0x8a Button.o - 0x8d (size before relaxing) *(.gnu.linkonce.d*) - 0x008000ec . = ALIGN (0x2) - *fill* 0x008000eb 0x1 - 0x008000ec _edata = . - 0x008000ec PROVIDE (__data_end, .) + 0x00800062 . = ALIGN (0x2) + *fill* 0x00800061 0x1 + 0x00800062 _edata = . + 0x00800062 PROVIDE (__data_end, .) -.bss 0x008000ec 0x6 - 0x008000ec PROVIDE (__bss_start, .) +.bss 0x00800062 0x4 + 0x00800062 PROVIDE (__bss_start, .) *(.bss) - .bss 0x008000ec 0x6 Button.o - 0x008000ec c - 0x008000ee s - 0x008000ef u - 0x008000f0 l - 0x008000f1 o + .bss 0x00800062 0x4 Button.o + 0x00800062 l + 0x00800065 o *(.bss*) *(COMMON) - 0x008000f2 PROVIDE (__bss_end, .) - 0x00000e74 __data_load_start = LOADADDR (.data) - 0x00000f00 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00800066 PROVIDE (__bss_end, .) + 0x000001fe __data_load_start = LOADADDR (.data) + 0x00000200 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x008000f2 0x0 - 0x008000f2 PROVIDE (__noinit_start, .) +.noinit 0x00800066 0x0 + 0x00800066 PROVIDE (__noinit_start, .) *(.noinit*) - 0x008000f2 PROVIDE (__noinit_end, .) - 0x008000f2 _end = . - 0x008000f2 PROVIDE (__heap_start, .) + 0x00800066 PROVIDE (__noinit_end, .) + 0x00800066 _end = . + 0x00800066 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -519,19 +376,13 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .user_signatures *(.user_signatures*) -.stab 0x00000000 0xc84 +.stab 0x00000000 0x6cc *(.stab) .stab 0x00000000 0x6cc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm32a.o - .stab 0x000006cc 0x9c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(strnlen_P.o) - 0xa8 (size before relaxing) - .stab 0x00000768 0x9c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(strnlen.o) - 0xa8 (size before relaxing) - .stab 0x00000804 0x480 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(ultoa_invert.o) - 0x48c (size before relaxing) -.stabstr 0x00000000 0x1aa +.stabstr 0x00000000 0x82 *(.stabstr) - .stabstr 0x00000000 0x1aa c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm32a.o + .stabstr 0x00000000 0x82 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm32a.o .stab.excl *(.stab.excl) @@ -549,9 +400,6 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.comment) .comment 0x00000000 0x2f Button.o 0x30 (size before relaxing) - .comment 0x00000000 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(sprintf.o) - .comment 0x00000000 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(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/avr5\libc.a(fputc.o) .debug *(.debug) @@ -565,66 +413,39 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x118 +.debug_aranges 0x00000000 0x40 *(.debug_aranges) .debug_aranges - 0x00000000 0xb8 Button.o - .debug_aranges - 0x000000b8 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(sprintf.o) - .debug_aranges - 0x000000d8 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) - .debug_aranges - 0x000000f8 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(fputc.o) + 0x00000000 0x40 Button.o .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x3ee6 +.debug_info 0x00000000 0x1454 *(.debug_info) - .debug_info 0x00000000 0x3625 Button.o - .debug_info 0x00003625 0x204 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(sprintf.o) - .debug_info 0x00003829 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/avr5\libc.a(vfprintf_std.o) - .debug_info 0x00003d72 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/avr5\libc.a(fputc.o) + .debug_info 0x00000000 0x1454 Button.o *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x9ed +.debug_abbrev 0x00000000 0x37f *(.debug_abbrev) - .debug_abbrev 0x00000000 0x5fc Button.o - .debug_abbrev 0x000005fc 0x12a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(sprintf.o) - .debug_abbrev 0x00000726 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/avr5\libc.a(vfprintf_std.o) - .debug_abbrev 0x000008fc 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/avr5\libc.a(fputc.o) + .debug_abbrev 0x00000000 0x37f Button.o -.debug_line 0x00000000 0xb8d +.debug_line 0x00000000 0x289 *(.debug_line) - .debug_line 0x00000000 0x667 Button.o - .debug_line 0x00000667 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/avr5\libc.a(sprintf.o) - .debug_line 0x000007b5 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/avr5\libc.a(vfprintf_std.o) - .debug_line 0x00000ab3 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/avr5\libc.a(fputc.o) + .debug_line 0x00000000 0x289 Button.o -.debug_frame 0x00000000 0x3a8 +.debug_frame 0x00000000 0x98 *(.debug_frame) - .debug_frame 0x00000000 0x2f4 Button.o - .debug_frame 0x000002f4 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(sprintf.o) - .debug_frame 0x00000324 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/avr5\libc.a(vfprintf_std.o) - .debug_frame 0x00000370 0x38 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(fputc.o) + .debug_frame 0x00000000 0x98 Button.o -.debug_str 0x00000000 0x1898 +.debug_str 0x00000000 0xac2 *(.debug_str) - .debug_str 0x00000000 0x170f Button.o - 0x1785 (size before relaxing) - .debug_str 0x0000170f 0x7d c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(sprintf.o) - 0x127 (size before relaxing) - .debug_str 0x0000178c 0xbf c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) - 0x198 (size before relaxing) - .debug_str 0x0000184b 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/avr5\libc.a(fputc.o) - 0xf8 (size before relaxing) + .debug_str 0x00000000 0xac2 Button.o + 0xb07 (size before relaxing) -.debug_loc 0x00000000 0x1218 +.debug_loc 0x00000000 0x210 *(.debug_loc) - .debug_loc 0x00000000 0xbe7 Button.o - .debug_loc 0x00000be7 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/avr5\libc.a(sprintf.o) - .debug_loc 0x00000c08 0x51d c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) - .debug_loc 0x00001125 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/avr5\libc.a(fputc.o) + .debug_loc 0x00000000 0x210 Button.o .debug_macinfo *(.debug_macinfo) @@ -632,12 +453,9 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x168 +.debug_ranges 0x00000000 0x78 *(.debug_ranges) - .debug_ranges 0x00000000 0x138 Button.o - .debug_ranges 0x00000138 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(sprintf.o) - .debug_ranges 0x00000148 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) - .debug_ranges 0x00000158 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(fputc.o) + .debug_ranges 0x00000000 0x78 Button.o .debug_macro *(.debug_macro) diff --git a/Button/Button/Debug/Button.srec b/Button/Button/Debug/Button.srec index 1e1919c..04ad386 100644 --- a/Button/Button/Debug/Button.srec +++ b/Button/Button/Debug/Button.srec @@ -1,237 +1,35 @@ S00E0000427574746F6E2E737265639A S11300000C942B000C9453000C9453000C94530048 -S11300100C9453000C9453000C9453000C94530010 +S11300100C94D5000C9453000C9453000C9453008E S11300200C9453000C9453000C9453000C94530000 S11300300C9453000C9453000C9453000C945300F0 S11300400C9453000C9453000C9453000C945300E0 -S11300500C945300020411241FBECFE5D8E0DEBF88 -S1130060CDBF10E0A0E6B0E0E6E1FEE002C00590FE -S11300700D92AC3EB107D9F720E0ACEEB0E001C080 -S11300801D92A23FB207E1F710E0C6E5D0E004C03C -S11300902297FE010E943004C435D107C9F70E949B -S11300A0AE030C9409070C9400005D9BFECF8CB941 -S11300B080E00895CF93DF93EC0102C00E945500C5 -S11300C089918111FBCFDF91CF910895BD9A089555 -S11300D0BF9A089580FF02C0A89A01C0A898A09A68 -S11300E081FF02C0A99A01C0A998A19A82FF02C007 -S11300F0AA9A01C0AA98A29A0895BF92CF92DF92B9 -S1130100EF92FF920F931F93CF93DF93D82EC62EB7 -S1130110B42EC0E0D0E019C01E2D8D2D0E946A00BF -S11301201F5F1F3FD1F700E010E005C08C2D0E9437 -S11301306A000F5F1F4F0C171D07C4F3F394FB10E5 -S1130140EBCF2196CF3FD10519F0EC2EF12CF7CF50 -S1130150DF91CF911F910F91FF90EF90DF90CF909F -S1130160BF900895EF92FF920F931F93CF93DF9365 -S1130170CDB7DEB7E2970FB6F894DEBF0FBECDBFA2 -S1130180E62E1F926F9381E690E09F938F938E01EA -S11301900F5F1F4F1F930F930E943404C8010E94E6 -S11301A05A00EFB80F900F900F900F900F900F9090 -S11301B0779BFECF8FB118E0F12CFF0CC7980E94FB -S11301C06800E7FE02C0C59A01C0C5980E94660097 -S11301D085E08A95F1F70000B69B02C081E0F82A19 -S11301E085E08A95F1F70000C79A0E9468008AE0CA -S11301F08A95F1F700C0EE0C1150F9F61F92FF92A8 -S11302002BE630E03F932F938E010F5F1F4F1F9318 -S11302100F930E943404C8010E945A000F900F905B -S11302200F900F900F900F908F2DE2960FB6F894C9 -S1130230DEBF0FBECDBFDF91CF911F910F91FF9015 -S1130240EF900895C498BC9A0895C49ABC9A0895EE -S1130250FF920F931F93CF93DF931F92CDB7DEB717 -S1130260F82E092F162F49830E94220162E08F2D58 -S1130270902F0E94B200612F8F2D902F0E94B20008 -S11302804981642F8F2D902F0E94B2000F90DF912F -S1130290CF911F910F91FF900C942501CF93DF9381 -S11302A0EC010E94220160ECCE010E94B2008FE9B1 -S11302B09FE00197F1F700C000000E9425018FE341 -S11302C09CE90197F1F700C0000047E06AE2CE0123 -S11302D00E94280140E969E2CE010E94280142E01F -S11302E068E2CE010E94280143E06BE2CE010E9445 -S11302F0280140E660E6CE010E94280140E660E75E -S1130300CE010E94280140E060E2CE010E94280153 -S113031040E061E2CE010E94280140E062E2CE01A9 -S11303200E94280140E063E2CE010E94280140E0DF -S113033064E2CE010E94280140E065E2CE010E9401 -S1130340280140E066E2CE010E94280140E067E215 -S1130350CE010E94280140E06CE0CE01DF91CF91F4 -S11303600C942801AF92BF92CF92DF92EF92FF924A -S11303700F931F93CF93DF931F92CDB7DEB76C011A -S11303808B010E94220160EAC6010E94B2006FEF55 -S1130390C6010E94B20089836FEFC6010E94B200B9 -S11303A00E942501898182FF09C0898184FF08C0D8 -S11303B0898186FD5EC034E0B32E04C0B12C02C036 -S11303C022E0B22E0E9422016B2D6064C6010E94BD -S11303D0B200F8016081718193E0769567959A95F2 -S11303E0E1F7C6010E94B200F80160816295660FD0 -S11303F0607EC6010E94B20060E0C6010E94B200A5 -S113040060E0C6010E94B200F801A380F8E0FA158A -S113041010F488E0A82EF80182816A2D882329F03F -S11304206064C6010E94B20012C0C6010E94B200FC -S1130430E12CF12C0AC0F801EE0DFF1D6481C60108 -S11304400E94B200FFEFEF1AFF0AEA14A0F30E9421 -S1130450250100000E942201B11002C061E802C01F -S11304606B2D6068C6010E94B2000E94250181E0E4 -S113047001C080E00F90DF91CF911F910F91FF9009 -S1130480EF90DF90CF90BF90AF900895CF93DF931C -S1130490CDB7DEB72C970FB6F894DEBF0FBECDBF35 -S11304A02D898B899C899A8389831B822C83CE0115 -S11304B04696FC01DE01159680E090E030E004C031 -S11304C040814D930196329682179307CCF3BE0177 -S11304D06F5F7F4F89899A890E94B2012C960FB66B -S11304E0F894DEBF0FBECDBFDF91CF910895FF9288 -S11304F00F931F93CF93DF9300D0CDB7DEB7F82EC1 -S1130500092F162F2A8349830E94220165E08F2D2B -S1130510902F0E94B200612F8F2D902F0E94B20065 -S11305204981642F8F2D902F0E94B2002A81622F5F -S11305308F2D902F0E94B2000F900F90DF91CF91DA -S11305401F910F91FF900C942501AF92BF92CF920F -S1130550DF92EF92FF920F931F93CF93DF931F923B -S1130560CDB7DEB76C018B010E94220160EBC6019E -S11305700E94B2006FEFC6010E94B200B82E6FEF66 -S1130580C6010E94B2000E942501B982898186FFBA -S113059004C00E94220160E906C0898187FF5DC012 -S11305A00E94220164E9C6010E94B2006FEFC601F5 -S11305B00E94B20028E0829FC0011124F8019183B7 -S11305C080836FEFC6010E94B200482F50E065E0BF -S11305D0569547956A95E1F7F80120813181242BDE -S11305E0352B318320836FEFC6010E94B2006FEF79 -S11305F0C6010E94B2006FEFC6010E94B2007FE004 -S1130600A72EA822F801A382E12CF12C0BC06FEFD6 -S1130610C6010E94B200F801EE0DFF1D8483FFEFB6 -S1130620EF1AFF0AEA1498F30E942501898183FFD7 -S113063004C081E0F801828302C0F801128289813A -S113064020E086FF02C041E001C042E06CE2C60146 -S11306500E9477028B2D877001C08FEF0F90DF917E -S1130660CF911F910F91FF90EF90DF90CF90BF90AB -S1130670AF900895CF93DF93CDB7DEB72C970FB625 -S1130680F894DEBF0FBECDBF86E00E946A0088E703 -S113069090E00E945A0088E890E00E945A008091FD -S11306A060001F928F931F9281E08F9382E08F935B -S11306B01F921F928CEE90E09F938F930E944602AC -S11306C02FEF83ED90E3215080409040E1F700C08C -S11306D0000085EA90E00E945A000FB6F894DEBF4D -S11306E00FBECDBFBE016F5F7F4F8CEE90E00E94C6 -S11306F0A5028F3F51F49FEF21EE84E091502040FA -S11307008040E1F700C00000EDCF8D81823089F494 -S11307108EEB90E00E945A008E810E94550088EE74 -S113072090E00E945A009E81809160009813DACF75 -S11307300CC081ED90E00E945A008D810E9455000A -S113074088EE90E00E945A00CDCF2C960FB6F89414 -S1130750DEBF0FBECDBFDF91CF9108950E943A0353 -S11307604AE064E086E00E947D0085ED90E00E940E -S11307705A0045E066E084E00E947D0045E062E0C6 -S113078086E00E947D0045E063E082E00E947D00F7 -S113079045E061E083E00E947D0045E065E081E0A2 -S11307A00E947D0045E064E085E00E947D002AEA25 -S11307B036EE86E991E02150304080409040D9F7F0 -S11307C00000D3CF87E689B988E08AB986E880BD7E -S11307D08EED90E00E945A000E946600C5980E9427 -S11307E066000E946800C7980E946800BC9A0E9434 -S11307F02501BE98C698C698BE9A80E58DB981E059 -S11308008EB908951F93CF93DF93A59AAD98A59AB7 -S1130810A49AAC98A49AA29AA19AA09A17E619B994 -S1130820D8E0DAB9C6E8C0BD8EED90E00E945A0067 -S11308308EEE90E00E94E2038CEE90E00E94E203D0 -S113084019B9DAB9C0BD8EED90E00E945A008CEE61 -S113085090E0DF91CF911F910C944E01EE0FFF1F9A -S11308600590F491E02D0994AEE0B0E0EAE3F4E001 -S11308700C94E0060D891E8986E08C831A83098313 -S11308808FEF9FE79E838D83CE014996AC016F89DC -S1130890788DCE0101960E945604EF81F885E00F11 -S11308A0F11F10822E96E4E00C94FC06ACE0B0E05C -S11308B0ECE5F4E00C94D2067C016B018A01FC01A6 -S11308C017821682838181FFC6C188248394912C68 -S11308D08C0E9D1EF7019381F60193FD859193FF84 -S11308E081916F01882309F4B2C1853239F493FDF3 -S11308F0859193FF81916F01853229F4B70190E0CE -S11309000E944806E7CF512C312C20E02032A8F475 -S11309108B3261F028F4803251F0833271F40BC0D1 -S11309208D3239F0803349F4216028C0226024607C -S113093025C0286023C0206121C027FD27C0382F8F -S113094030533A3078F426FF06C0FAE05F9E300D4B -S11309501124532E13C08AE0389E300D1124332EF7 -S113096020620CC08E3221F426FD71C1206406C0C1 -S11309708C3611F4206802C0883641F4F60193FDE8 -S1130980859193FF81916F018111C0CF982F955468 -S1130990933018F09052933028F40C5F1F4FFFE30C -S11309A0F9830DC0833631F0833771F0833509F054 -S11309B05EC023C0F801808189830E5F1F4F4424E9 -S11309C04394512C540115C03801F2E06F0E711C90 -S11309D0F801A080B18026FF03C0652D70E002C03D -S11309E06FEF7FEFC5012C870E943D062C01830128 -S11309F02C856FE7262E222218C03801F2E06F0EF4 -S1130A00711CF801A080B18026FF03C0652D70E041 -S1130A1002C06FEF7FEFC5012C870E9432062C01C4 -S1130A202C8550E8252E222A830123FC1CC006C0F5 -S1130A30B70180E290E00E9448063A94832D90E04A -S1130A4048165906A8F30FC0F50127FC859127FE27 -S1130A5081915F01B70190E00E94480631103A94F9 -S1130A60F1E04F1A51084114510471F7EDC0843676 -S1130A7011F0893641F5F80127FF07C060817181C3 -S1130A80828193810C5F1F4F08C060817181882728 -S1130A9077FD8095982F0E5F1F4F4FE6B42EB2223C -S1130AA097FF09C090958095709561957F4F8F4F02 -S1130AB09F4FF0E8BF2A2AE030E0A4010E947406A8 -S1130AC0A82EA81843C0853731F43FEEB32EB222C6 -S1130AD02AE030E024C099EFB92EB2228F36B9F063 -S1130AE020F4883509F0B3C00DC0803721F0883771 -S1130AF009F0ADC002C020E1B22AB4FE0BC084E00C -S1130B00B82A08C024FF09C0E6E0BE2A06C028E0CF -S1130B1030E005C020E130E002C020E132E0F8011D -S1130B20B7FE07C060817181828193810C5F1F4F82 -S1130B3006C06081718180E090E00E5F1F4FA401C8 -S1130B400E947406A82EA818FFE7BF22B6FE0BC0A9 -S1130B502B2D2E7FA51450F4B4FE0AC0B2FC08C09D -S1130B602B2D2E7E05C07A2C2B2D03C07A2C01C090 -S1130B70752C24FF0DC0FE01EA0DF11D8081803328 -S1130B8011F4297E09C022FF06C07394739404C033 -S1130B90822F867809F0739423FD14C020FF0FC0C0 -S1130BA05A2C731460F4530C5718732C08C0B701F3 -S1130BB080E290E02C870E94480673942C8573147D -S1130BC0B0F304C0731410F4371801C0312C24FF9F -S1130BD012C0B70180E390E02C870E9448062C8560 -S1130BE022FF1EC021FF03C088E590E002C088E711 -S1130BF090E0B7010CC0822F867891F021FD02C0ED -S1130C0080E201C08BE227FD8DE2B70190E00E94F3 -S1130C10480606C0B70180E390E00E9448065A9453 -S1130C20A514C0F3AA94F401EA0DF11DB701808163 -S1130C3090E00E944806A110F5CF06C0B70180E2FB -S1130C4090E00E9448063A943110F8CF43CEF70161 -S1130C502681378102C02FEF3FEFC9012C96E2E1D4 -S1130C600C94EE06FC010590615070400110D8F719 -S1130C70809590958E0F9F1F0895FC0161507040E0 -S1130C8001900110D8F7809590958E0F9F1F0895BD -S1130C900F931F93CF93DF938C01EB018B8181FD25 -S1130CA003C00FEF1FEF1AC082FF0DC02E813F81DA -S1130CB08C819D812817390764F4E881F9810193B7 -S1130CC0F983E88306C0E885F985802F0995892B87 -S1130CD041F78E819F8101969F838E83C801DF91A6 -S1130CE0CF911F910F910895FA01AA27283051F14D -S1130CF0203181F1E8946F936E7F6E5F7F4F8F4F49 -S1130D009F4FAF4FB1E03ED0B4E03CD0670F781FA7 -S1130D10891F9A1FA11D680F791F8A1F911DA11D8C -S1130D206A0F711D811D911DA11D20D009F46894C5 -S1130D303F912AE0269F11243019305D3193DEF66D -S1130D40CF010895462F4770405D4193B3E00FD023 -S1130D50C9F7F6CF462F4F70405D4A3318F0495D0E -S1130D6031FD4052419302D0A9F7EACFB4E0A695F1 -S1130D709795879577956795BA95C9F70097610513 -S1130D80710508959B01AC010A2E06945795479569 -S1130D9037952795BA95C9F7620F731F841F951F5E -S1130DA0A01D08952F923F924F925F926F927F926F -S1130DB08F929F92AF92BF92CF92DF92EF92FF9267 -S1130DC00F931F93CF93DF93CDB7DEB7CA1BDB0B13 -S1130DD00FB6F894DEBF0FBECDBF09942A883988B8 -S1130DE048885F846E847D848C849B84AA84B984BF -S1130DF0C884DF80EE80FD800C811B81AA81B981CB -S1130E00CE0FD11D0FB6F894DEBF0FBECDBFED01DE -S1090E100895F894FFCFE1 -S1130E16012D3E2030782530327800203C2D2030BC -S1130E2678253032780D0A00496E6974205374614E -S1130E3672742E2E2E0D0A002D3E20427574746F88 -S1130E466E20494420416E6E6F756E63656D656EE6 -S1130E56743A0D0A005761697420666F72204D61F9 -S1130E66737465722041636B2E2E2E0D0A003C2D81 -S1130E7620427574746F6E2049442041636B3A2096 -S1130E86003C2D20005374756666210D0A005561D9 -S10F0E96727420646F6E65210D0A000068 +S11300500C945300DF0011241FBECFE5D8E0DEBFAF +S1130060CDBF10E0A0E6B0E0EEEFF1E002C00590F5 +S11300700D92A236B107D9F720E0A2E6B0E001C0A4 +S11300801D92A636B207E1F710E0C6E5D0E004C041 +S11300902297FE010E94F900C435D107C9F70E94D6 +S11300A09B000C94FD000C94000080FF02C0A89AF1 +S11300B001C0A898A09A81FF02C0A99A01C0A9987A +S11300C0A19A82FF02C0AA9A01C0AA98A29A08958E +S11300D0CF92DF92EF92FF920F931F93CF93DF9310 +S11300E0D82EC62EC0E0D0E019C08D2D0E94550038 +S11300F01F5F1F3FD1F700E010E005C08C2D0E9468 +S113010055000F5F1F4F0C171D07C4F3FA9411F02D +S11301101E2DEBCF2196CF3FD10521F0EC2E85E0AB +S1130120F82EF6CFDF91CF911F910F91FF90EF90B2 +S1130130DF90CF9008951AEACEEFD3E610936200D1 +S1130140C0936300D09364002FEF86E191E12150C6 +S113015080409040E1F700C00000C0936200C0936B +S11301606300C09364002FEF86E191E12150804049 +S11301709040E1F700C0000066E084E00E9468005F +S113018062E086E00E94680063E082E00E9468000A +S113019061E083E00E94680065E081E00E946800FD +S11301A064E085E00E946800C9CF1F920F920FB6E9 +S11301B00F9211240F900FBE0F901F901895A59ABF +S11301C0AD98A59AA49AAC98A49A10926200109241 +S11301D0630010926400A29AA19AA09A12BC85E0CE +S11301E085BD14BC13BC80E889BF78940895EE0FD4 +S11101F0FF1F0590F491E02D0994F894FFCFC1 +S10501FE0100FA S9030000FC diff --git a/Button/Button/Led.hpp b/Button/Button/Led.hpp index b56c362..f2840fa 100644 --- a/Button/Button/Led.hpp +++ b/Button/Button/Led.hpp @@ -17,7 +17,7 @@ class Led { Led() { init(); } - static void color(uint8_t mask) { + void color(uint8_t mask) { (mask & (1<<0)) ? blue::make_high() : blue::make_low(); (mask & (1<<1)) ? green::make_high() : green::make_low(); (mask & (1<<2)) ? red::make_high() : red::make_low(); @@ -50,40 +50,35 @@ class Led { static const uint8_t MAGENTA = 5; static const uint8_t YELLOW = 6; static const uint8_t WHITE = 7; - static void setColor(uint8_t cr, uint8_t cg, uint8_t cb) { + void setColor(uint8_t cr, uint8_t cg, uint8_t cb) { r = cr; g = cg; b = cb; } - private: - static void init() { - r = 0; - g = 0; - b = 0; - red::make_output(); - green::make_output(); - blue::make_output(); - - // Timer/Counter 0 initialization - // Clock source: System Clock - // Clock value: 16000,000 kHz - // Mode: Normal top=0xFF - // OC0 output: Disconnected - // Timer Period: 0,016 ms - TCCR0=(0< red; - const typedef avrlib::pin green; - const typedef avrlib::pin blue; - static uint8_t r; - static uint8_t g; - static uint8_t b; /* TIMER0_OVF_vect */ - static void timer_int() __asm__("__vector_11") __attribute__((__signal__, __used__)) { + void timer() { for(uint8_t i=0;i<0xFF;i++) { uint8_t rgb = 0; if(i red; + const typedef avrlib::pin green; + const typedef avrlib::pin blue; + uint8_t r = 0; + uint8_t g = 0; + uint8_t b = 0; };