diff --git a/V2/Programm/Programm.atsuo b/V2/Programm/Programm.atsuo index b520818..e26d134 100644 Binary files a/V2/Programm/Programm.atsuo and b/V2/Programm/Programm.atsuo differ diff --git a/V2/Programm/Programm/Debug/Programm.elf b/V2/Programm/Programm/Debug/Programm.elf index d519eca..2d600b4 100644 Binary files a/V2/Programm/Programm/Debug/Programm.elf and b/V2/Programm/Programm/Debug/Programm.elf differ diff --git a/V2/Programm/Programm/Debug/Programm.hex b/V2/Programm/Programm/Debug/Programm.hex index e58700f..19ab06e 100644 --- a/V2/Programm/Programm/Debug/Programm.hex +++ b/V2/Programm/Programm/Debug/Programm.hex @@ -12,177 +12,184 @@ :1000B0000C94A6000C94A6000C94A6000C94A60028 :1000C0000C94A6000C94A6000C94A6000C94A60018 :1000D0000C94A6000C94A6000C94A6000C94A60008 -:1000E0000C94A6000C94C702C70211241FBECFEFC8 +:1000E0000C94A6000C94CF02CF0211241FBECFEFB8 :1000F000D1E2DEBFCDBF00E00CBF12E0A0E0B2E075 -:10010000ECE9FBE000E00BBF02C007900D92A630C7 -:10011000B107D9F722E0A6E0B2E001C01D92A930F4 +:10010000E0E1FCE000E00BBF02C007900D92A630DA +:10011000B107D9F722E0A6E0B2E001C01D92AB30F2 :10012000B207E1F710E0CAEED0E000E006C0229787 -:100130000109FE010BBF0E94F402C83ED10780E016 -:100140000807A9F70E94D0010C94CC050C9400007C +:100130000109FE010BBF0E942E03C83ED10780E0DB +:100140000807A9F70E94CD010C9406060C94000044 :10015000E5E0F1E08081806180830895EBE0F1E0EB -:10016000808180628083089598E087FF02C0A09A12 -:1001700001C0A098989AA19A999A880F00C000C0CF -:100180000000A198999A915081F70895CF93C82FB4 -:100190004098892F81700E94B4008C2F0E94B40077 -:1001A000409ACF910895382F98E080E02091050182 -:1001B00037FF02C0206401C02F7B20930501880F08 -:1001C0002091030123FD816020910501206220938D -:1001D0000501330F00C000C00000209105012F7DF4 -:1001E00020930501915011F70895EBE0F1E0808133 -:1001F0008068808383ED90E00197F1F700C00000F4 -:1002000080818F7780830895EBE0F1E090819F7B80 -:10021000908390819F7D90838BB90C94F50081E051 -:100220000E9404018FE39FE10197F1F700C00000F5 -:100230000895CF93C82F90910B01906490930B0178 -:1002400090910B019F7D90930B011BB81AB80E94EF -:10025000F50099B18FEF8AB9CA30E9F4892F80553A -:10026000803110F480E80EC0903110F480EC0AC0A8 -:10027000892F8054803110F480E904C0905190316E -:1002800060F580ED0E9404018FE99FE00197F1F78E -:1002900000C0000022C09F3011F480EC0BC09F34DE -:1002A00011F480E907C09F3111F480ED03C09F3540 -:1002B00049F480E80E9404018FE99FE00197F1F77B -:1002C00000C0000090910B019F7B90930B010E9456 -:1002D000AE00CBB9CF910C94F500CF9108950F9358 -:1002E0001F93CF93DF93CDB7DEB72A970FB6F8945D -:1002F000DEBF0FBECDBF9F938F9380E092E09F93B0 -:100300008F938E010F5F1F4F1F930F930E94F80270 -:100310000F900F900F900F900F900F9011C0843E90 -:1003200011F481EE0BC0863F11F48FEE07C08C3FB5 -:1003300011F485EF03C08F3D09F482EE0E9419018C -:10034000F80181918F018111EACF2A960FB6F894B6 -:10035000DEBF0FBECDBFDF91CF911F910F910895EA -:100360001F93CF93DF93182FC92FE5E0F1E0208191 -:100370002F7E20830E946F018C2F0E94D300D82FE4 -:1003800080E0C82F812F0E94D300C82B0E94A800B4 -:10039000CE010E946F01CE01DF91CF911F91089590 -:1003A00088EC92E80E94B00181E89AEC0E94B001CA -:1003B00083E89AEC0E94B001809105018F7E8093C2 -:1003C00005018091030186958695869591E08927A0 -:1003D000817090E00E946F012FEF39E582E692E094 -:1003E0002150304080409040D9F700C0000080E0AC -:1003F00091E00E94C600109228012FEF39E688E1B3 -:10040000215030408040E1F700C00000F6CF1F933C -:10041000CF93DF93A198999A409A389AA098989A86 -:10042000EAE0F1E080818860808381E880932001A8 -:1004300089E080932101C8E2D1E01882188280818E -:1004400080688083808180648083808180628083F3 -:100450001FEF1AB98FEF99EF0197F1F700C0000075 -:1004600088E30E9404018FE19EE40197F1F700C048 -:1004700000000E94F5008FED91E00197F1F700C0B8 -:1004800000000E94F5008FED91E00197F1F700C0A8 -:1004900000000E94F5008FED91E00197F1F700C098 -:1004A000000080E00E9404018FE39FE10197F1F7D3 -:1004B00000C000000E940F0184E00E9404019FEF31 -:1004C00021EE84E0915020408040E1F700C0000020 -:1004D0008CE00E9404018FE39FE10197F1F700C0D7 -:1004E00000000E940F0180E091E00E94C600188386 -:1004F000DF91CF911F9108952FEF81EE94E021506D -:1005000080409040E1F700C0000080E290EC0E9443 -:10051000B00187ED90E80E94B0018BEA92EC0E9456 -:10052000B00181E89AEC0E94B00180E090EE0E9458 -:10053000B00180E098EC0E94B0012FEF87EA91E6CD -:10054000215080409040E1F700C000000E940F0160 -:1005500087EF94EC0E94B00180E296EA0E94B0011D -:1005600087E294E90E94B00182E296EC0E94B00119 -:1005700080E698E90E94B0012FEF87EA91E62150CA -:1005800080409040E1F700C000000C940F010F93F1 -:100590001F93CF93DF9387E092E00E94070205E06C -:1005A00011E0F80180818F7B8083C4E0D1E08881F5 -:1005B0008064888380818F7D808388818062888346 -:1005C0000E94A8008881806188838881877F8883D2 -:1005D000F8018081877F808386E092E0DF91CF9170 -:1005E0001F910F910C947C020790F691E02D1994C5 -:1005F0000F931F93CF93DF93CDB7DEB72E970FB630 -:10060000F894DEBF0FBECDBF0E891F8986E08C83B4 -:100610001A8309838FEF9FE79E838D83CE014A96CD -:10062000AC01688D798DCE0101960E942703EF8180 -:10063000F885E00FF11F10822E960FB6F894DEBFFA -:100640000FBECDBFDF91CF911F910F9108952F92D3 -:100650003F924F925F926F927F928F929F92AF9252 -:10066000BF92CF92DF92EF92FF920F931F93CF939F -:10067000DF93CDB7DEB72C970FB6F894DEBF0FBE71 -:10068000CDBF7C016B018A01FC0117821682838138 -:1006900081FFC6C188248394912C8C0E9D1EF70186 -:1006A0009381F60193FD859193FF81916F018823DA -:1006B00009F4B2C1853239F493FD859193FF81919C -:1006C0006F01853229F4B70190E00E944205E7CF1F -:1006D000512C312C20E02032A8F48B3261F028F428 -:1006E000803251F0833271F40BC08D3239F0803397 -:1006F00049F4216028C02260246025C0286023C0FE -:10070000206121C027FD27C0382F30533A3078F4BC -:1007100026FF06C0FAE05F9E300D1124532E13C051 -:100720008AE0389E300D1124332E20620CC08E32A8 -:1007300021F426FD71C1206406C08C3611F42068B6 -:1007400002C0883641F4F60193FD859193FF8191B3 -:100750006F018111C0CF982F9554933018F09052AB -:10076000933028F40C5F1F4FFFE3F9830DC08336ED -:1007700031F0833771F0833509F05EC023C0F80192 -:10078000808189830E5F1F4F44244394512C540170 -:1007900015C03801F2E06F0E711CF801A080B18025 -:1007A00026FF03C0652D70E002C06FEF7FEFC5012B -:1007B0002C870E9437052C0183012C856FE7262E9C -:1007C000222218C03801F2E06F0E711CF801A080DF -:1007D000B18026FF03C0652D70E002C06FEF7FEF90 -:1007E000C5012C870E942C052C012C8550E8252E54 -:1007F000222A830123FC1CC006C0B70180E290E0DE -:100800000E9442053A94832D90E048165906A8F3B9 -:100810000FC0F50127FC859127FE81915F01B7018B -:1008200090E00E94420531103A94F1E04F1A5108CD -:100830004114510471F7EDC0843611F0893641F549 -:10084000F80127FF07C060817181828193810C5F6D -:100850001F4F08C060817181882777FD8095982F90 -:100860000E5F1F4F4FE6B42EB22297FF09C090953E -:100870008095709561957F4F8F4F9F4FF0E8BF2A0D -:100880002AE030E0A4010E946E05A82EA81843C0FB -:10089000853731F43FEEB32EB2222AE030E024C097 -:1008A00099EFB92EB2228F36B9F020F4883509F0CD -:1008B000B3C00DC0803721F0883709F0ADC002C049 -:1008C00020E1B22AB4FE0BC084E0B82A08C024FF9D -:1008D00009C0E6E0BE2A06C028E030E005C020E1FD -:1008E00030E002C020E132E0F801B7FE07C06081CD -:1008F0007181828193810C5F1F4F06C0608171817D -:1009000080E090E00E5F1F4FA4010E946E05A82EAC -:10091000A818FFE7BF22B6FE0BC02B2D2E7FA51413 -:1009200050F4B4FE0AC0B2FC08C02B2D2E7E05C0C8 -:100930007A2C2B2D03C07A2C01C0752C24FF0DC0FE -:10094000FE01EA0DF11D8081803311F4297E09C07A -:1009500022FF06C07394739404C0822F867809F036 -:10096000739423FD14C020FF0FC05A2C731460F43D -:10097000530C5718732C08C0B70180E290E02C8705 -:100980000E94420573942C857314B0F304C0731451 -:1009900010F4371801C0312C24FF12C0B70180E3D6 -:1009A00090E02C870E9442052C8522FF1EC021FF6B -:1009B00003C088E590E002C088E790E0B7010CC072 -:1009C000822F867891F021FD02C080E201C08BE287 -:1009D00027FD8DE2B70190E00E94420506C0B701F5 -:1009E00080E390E00E9442055A94A514C0F3AA94B3 -:1009F000F401EA0DF11DB701808190E00E944205EB -:100A0000A110F5CF06C0B70180E290E00E94420538 -:100A10003A943110F8CF43CEF7012681378102C0D6 -:100A20002FEF3FEFC9012C960FB6F894DEBF0FBE33 -:100A3000CDBFDF91CF911F910F91FF90EF90DF908D -:100A4000CF90BF90AF909F908F907F906F905F906E -:100A50004F903F902F900895FC0105906150704099 -:100A60000110D8F7809590958E0F9F1F0895FC0177 -:100A70006150704001900110D8F7809590958E0FCD -:100A80009F1F08950F931F93CF93DF938C01EB016A -:100A90008B8181FD03C00FEF1FEF1AC082FF0DC0D5 -:100AA0002E813F818C819D812817390764F4E8816C -:100AB000F9810193F983E88306C0E885F985802FE1 -:100AC0001995892B41F78E819F8101969F838E8393 -:100AD000C801DF91CF911F910F910895FA01AA27C4 -:100AE000283051F1203181F1E8946F936E7F6E5F71 -:100AF0007F4F8F4F9F4FAF4FB1E03ED0B4E03CD01F -:100B0000670F781F891F9A1FA11D680F791F8A1F01 -:100B1000911DA11D6A0F711D811D911DA11D20D068 -:100B200009F468943F912AE0269F11243019305D22 -:100B30003193DEF6CF010895462F4770405D419313 -:100B4000B3E00FD0C9F7F6CF462F4F70405D4A3360 -:100B500018F0495D31FD4052419302D0A9F7EACF28 -:100B6000B4E0A6959795879577956795BA95C9F757 -:100B700000976105710508959B01AC010A2E06944A -:100B80005795479537952795BA95C9F7620F731F03 -:0C0B9000841F951FA01D0895F894FFCF4E -:060B9C0025303458200052 +:100160008081806280830895809105018F7E8093D5 +:1001700005018091030183FFFCCF089598E087FF7C +:1001800002C0A09A01C0A098989AA19A999A880F43 +:1001900000C000C00000A198999A915081F708957D +:1001A000382F98E080E02091050137FF02C02064DD +:1001B00001C02F7B20930501880F2091030123FDAF +:1001C000816020910501206220930501330F00C05A +:1001D00000C00000209105012F7D20930501915062 +:1001E00011F70895EBE0F1E080818068808383ED72 +:1001F00090E00197F1F700C0000080818F77808345 +:100200000895EBE0F1E090819F7B908390819F7D4A +:1002100090838BB90C94F20081E00E9401018FE37E +:100220009FE10197F1F700C000000895CF93C82F18 +:1002300090910B01906490930B0190910B019F7D25 +:1002400090930B011BB81AB80E94F20099B18FEF7E +:100250008AB9CA30E9F4892F8055803110F480E8DA +:100260000EC0903110F480EC0AC0892F8054803188 +:1002700010F480E904C09051903160F580ED0E9447 +:1002800001018FE99FE00197F1F700C0000022C053 +:100290009F3011F480EC0BC09F3411F480E907C04B +:1002A0009F3111F480ED03C09F3549F480E80E942E +:1002B00001018FE99FE00197F1F700C000009091E4 +:1002C0000B019F7B90930B010E94AE00CBB9CF91A5 +:1002D0000C94F200CF9108950F931F93CF93DF9367 +:1002E000CDB7DEB72A970FB6F894DEBF0FBECDBFED +:1002F0009F938F9380E092E09F938F938E010F5F87 +:100300001F4F1F930F930E9432030F900F900F9077 +:100310000F900F900F9011C0843E11F481EE0BC02E +:10032000863F11F48FEE07C08C3F11F485EF03C0B8 +:100330008F3D09F482EE0E941601F80181918F0130 +:100340008111EACF2A960FB6F894DEBF0FBECDBF5B +:10035000DF91CF911F910F9108951F93CF93DF935A +:10036000182FC92FE5E0F1E020812F7E20830E9425 +:100370006C018C2F0E94D000D82F80E0C82F812FD5 +:100380000E94D000C82B0E94A800CE010E946C01E0 +:10039000CE01DF91CF911F9108950E940C0188E357 +:1003A00092E80E94AD010E94B4008AEA98EB0E9494 +:1003B000AD010E94B4008AEA98EB0E94AD010E9450 +:1003C000B4008AEA98EB0E94AD010E94B4008DE26D +:1003D00098EB0E94AD012FEF39E582E692E02150C3 +:1003E000304080409040D9F700C000000E94B40027 +:1003F00084ED98EB0E94AD010E94B40080E098EB80 +:100400000E94AD010E94B40081E098EB0E94AD0112 +:100410000E94B40085E098EB0E94AD010E94B400F8 +:1004200080E098EB0E94AD010E94B40088E092E861 +:100430000E94AD012FEF31EE84E02150304080402A +:10044000E1F700C0000088ED92E80E94AD0181E86C +:100450009AEC0E94AD0183E89AEC0E94AD0102C0C3 +:100460000E940C0180E090EB0E94AD019093060287 +:10047000809307029F3FA1F70E940C018091060222 +:100480008F3F29F4109206028091070204C080E099 +:1004900090EB0E94AD0190E00E946C019FEF21EE75 +:1004A00034E0915020403040E1F700C00000DACF46 +:1004B0008FEF99EF0197F1F700C0000088E30E94E9 +:1004C00001018FE19EE40197F1F700C000000E9456 +:1004D000F2008FED91E00197F1F700C000000E945B +:1004E000F2008FED91E00197F1F700C000000E944B +:1004F000F2008FED91E00197F1F700C0000080E07D +:100500000E9401018FE39FE10197F1F700C0000015 +:100510000E940C0184E00E9401019FEF21EE84E023 +:10052000915020408040E1F700C000008CE00E9424 +:1005300001018FE39FE10197F1F700C000000E94E5 +:100540000C01409881E00E94BE0080E00E94BE0045 +:10055000409A8FEF809328010895A198999A409A24 +:10056000389AA098989AEAE0F1E0208128602083E8 +:1005700021E82093200129E020932101A8E2B1E0A5 +:100580001C921C922081206820832081206420837B +:100590002081206220832FEF2AB90C9458020F93F8 +:1005A0001F93CF93DF9389E092E00E94AD021092F7 +:1005B00006021092070205E011E0F80180818F7BAE +:1005C0008083C4E0D1E088818064888380818F7DCE +:1005D00080838881806288830E94A80088818061EE +:1005E00088838881877F8883F8018081877F8083E3 +:1005F0008FE39CE90197F1F700C0000080E290ECE6 +:100600000E94AD0187ED90E80E94AD018BEA92EC6B +:100610000E94AD0181E89AEC0E94AD0180E090EE6D +:100620000E94AD0180E098EC0E94AD0187EF94EC50 +:100630000E94AD0180E296EA0E94AD0185E294E954 +:100640000E94AD0182E296EC0E94AD0180E798E93C +:10065000DF91CF911F910F910C94AD010790F6910E +:10066000E02D19940F931F93CF93DF93CDB7DEB78F +:100670002E970FB6F894DEBF0FBECDBF0E891F892F +:1006800086E08C831A8309838FEF9FE79E838D8397 +:10069000CE014A96AC01688D798DCE0101960E94FB +:1006A0006103EF81F885E00FF11F10822E960FB6DF +:1006B000F894DEBF0FBECDBFDF91CF911F910F9198 +:1006C00008952F923F924F925F926F927F928F92F6 +:1006D0009F92AF92BF92CF92DF92EF92FF920F93D1 +:1006E0001F93CF93DF93CDB7DEB72C970FB6F89457 +:1006F000DEBF0FBECDBF7C016B018A01FC011782FA +:100700001682838181FFC6C188248394912C8C0E2C +:100710009D1EF7019381F60193FD859193FF8191D1 +:100720006F01882309F4B2C1853239F493FD8591B4 +:1007300093FF81916F01853229F4B70190E00E9407 +:100740007C05E7CF512C312C20E02032A8F48B32ED +:1007500061F028F4803251F0833271F40BC08D3295 +:1007600039F0803349F4216028C02260246025C01C +:10077000286023C0206121C027FD27C0382F3053B7 +:100780003A3078F426FF06C0FAE05F9E300D11245F +:10079000532E13C08AE0389E300D1124332E206270 +:1007A0000CC08E3221F426FD71C1206406C08C3647 +:1007B00011F4206802C0883641F4F60193FD85915A +:1007C00093FF81916F018111C0CF982F9554933081 +:1007D00018F09052933028F40C5F1F4FFFE3F98319 +:1007E0000DC0833631F0833771F0833509F05EC078 +:1007F00023C0F801808189830E5F1F4F44244394F6 +:10080000512C540115C03801F2E06F0E711CF80133 +:10081000A080B18026FF03C0652D70E002C06FEF9D +:100820007FEFC5012C870E9471052C0183012C8567 +:100830006FE7262E222218C03801F2E06F0E711CDD +:10084000F801A080B18026FF03C0652D70E002C0D2 +:100850006FEF7FEFC5012C870E9466052C012C8568 +:1008600050E8252E222A830123FC1CC006C0B701B4 +:1008700080E290E00E947C053A94832D90E0481637 +:100880005906A8F30FC0F50127FC859127FE819139 +:100890005F01B70190E00E947C0531103A94F1E0CD +:1008A0004F1A51084114510471F7EDC0843611F00C +:1008B000893641F5F80127FF07C060817181828187 +:1008C00093810C5F1F4F08C060817181882777FD7D +:1008D0008095982F0E5F1F4F4FE6B42EB22297FFE0 +:1008E00009C090958095709561957F4F8F4F9F4F70 +:1008F000F0E8BF2A2AE030E0A4010E94A805A82E53 +:10090000A81843C0853731F43FEEB32EB2222AE057 +:1009100030E024C099EFB92EB2228F36B9F020F41E +:10092000883509F0B3C00DC0803721F0883709F051 +:10093000ADC002C020E1B22AB4FE0BC084E0B82AE8 +:1009400008C024FF09C0E6E0BE2A06C028E030E067 +:1009500005C020E130E002C020E132E0F801B7FE3E +:1009600007C060817181828193810C5F1F4F06C037 +:100970006081718180E090E00E5F1F4FA4010E94B2 +:10098000A805A82EA818FFE7BF22B6FE0BC02B2D86 +:100990002E7FA51450F4B4FE0AC0B2FC08C02B2D63 +:1009A0002E7E05C07A2C2B2D03C07A2C01C0752C0D +:1009B00024FF0DC0FE01EA0DF11D8081803311F48A +:1009C000297E09C022FF06C07394739404C0822F4D +:1009D000867809F0739423FD14C020FF0FC05A2CB1 +:1009E000731460F4530C5718732C08C0B70180E2DD +:1009F00090E02C870E947C0573942C857314B0F3CF +:100A000004C0731410F4371801C0312C24FF12C035 +:100A1000B70180E390E02C870E947C052C8522FFA3 +:100A20001EC021FF03C088E590E002C088E790E087 +:100A3000B7010CC0822F867891F021FD02C080E2C0 +:100A400001C08BE227FD8DE2B70190E00E947C059A +:100A500006C0B70180E390E00E947C055A94A5147B +:100A6000C0F3AA94F401EA0DF11DB701808190E072 +:100A70000E947C05A110F5CF06C0B70180E290E08E +:100A80000E947C053A943110F8CF43CEF7012681BD +:100A9000378102C02FEF3FEFC9012C960FB6F894B3 +:100AA000DEBF0FBECDBFDF91CF911F910F91FF90A1 +:100AB000EF90DF90CF90BF90AF909F908F907F90FE +:100AC0006F905F904F903F902F900895FC0105909C +:100AD000615070400110D8F7809590958E0F9F1F40 +:100AE0000895FC016150704001900110D8F7809585 +:100AF00090958E0F9F1F08950F931F93CF93DF93B1 +:100B00008C01EB018B8181FD03C00FEF1FEF1AC039 +:100B100082FF0DC02E813F818C819D81281739076E +:100B200064F4E881F9810193F983E88306C0E885DC +:100B3000F985802F1995892B41F78E819F81019628 +:100B40009F838E83C801DF91CF911F910F910895EC +:100B5000FA01AA27283051F1203181F1E8946F93EE +:100B60006E7F6E5F7F4F8F4F9F4FAF4FB1E03ED094 +:100B7000B4E03CD0670F781F891F9A1FA11D680F32 +:100B8000791F8A1F911DA11D6A0F711D811D911D65 +:100B9000A11D20D009F468943F912AE0269F1124DA +:100BA0003019305D3193DEF6CF010895462F47703E +:100BB000405D4193B3E00FD0C9F7F6CF462F4F7099 +:100BC000405D4A3318F0495D31FD4052419302D0F7 +:100BD000A9F7EACFB4E0A69597958795779567959D +:100BE000BA95C9F700976105710508959B01AC019D +:100BF0000A2E06945795479537952795BA95C9F7C4 +:100C0000620F731F841F951FA01D0895F894FFCFD6 +:060C1000253034582000DD :00000001FF diff --git a/V2/Programm/Programm/Debug/Programm.lss b/V2/Programm/Programm/Debug/Programm.lss index 0bbaae1..2178240 100644 --- a/V2/Programm/Programm/Debug/Programm.lss +++ b/V2/Programm/Programm/Debug/Programm.lss @@ -3,35 +3,35 @@ Programm.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000006 00800200 00000b9c 00000c30 2**0 + 0 .data 00000006 00800200 00000c10 00000ca4 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 00000b9c 00000000 00000000 00000094 2**1 + 1 .text 00000c10 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 00000003 00800206 00800206 00000c36 2**0 + 2 .bss 00000005 00800206 00800206 00000caa 2**0 ALLOC - 3 .stab 00000c9c 00000000 00000000 00000c38 2**2 + 3 .stab 00000c9c 00000000 00000000 00000cac 2**2 CONTENTS, READONLY, DEBUGGING - 4 .stabstr 000001aa 00000000 00000000 000018d4 2**0 + 4 .stabstr 000001aa 00000000 00000000 00001948 2**0 CONTENTS, READONLY, DEBUGGING - 5 .comment 0000002f 00000000 00000000 00001a7e 2**0 + 5 .comment 0000002f 00000000 00000000 00001af2 2**0 CONTENTS, READONLY - 6 .debug_aranges 000000f0 00000000 00000000 00001aad 2**0 + 6 .debug_aranges 000000f0 00000000 00000000 00001b21 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_info 000046c9 00000000 00000000 00001b9d 2**0 + 7 .debug_info 000047fd 00000000 00000000 00001c11 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_abbrev 0000089d 00000000 00000000 00006266 2**0 + 8 .debug_abbrev 000008a6 00000000 00000000 0000640e 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_line 00000d6b 00000000 00000000 00006b03 2**0 + 9 .debug_line 00000d90 00000000 00000000 00006cb4 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_frame 00000260 00000000 00000000 00007870 2**2 + 10 .debug_frame 00000248 00000000 00000000 00007a44 2**2 CONTENTS, READONLY, DEBUGGING - 11 .debug_str 000097d0 00000000 00000000 00007ad0 2**0 + 11 .debug_str 000097d8 00000000 00000000 00007c8c 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 00001071 00000000 00000000 000112a0 2**0 + 12 .debug_loc 00000fc9 00000000 00000000 00011464 2**0 CONTENTS, READONLY, DEBUGGING - 13 .debug_ranges 000001b8 00000000 00000000 00012311 2**0 + 13 .debug_ranges 00000218 00000000 00000000 0001242d 2**0 CONTENTS, READONLY, DEBUGGING - 14 .debug_macro 00002f76 00000000 00000000 000124c9 2**0 + 14 .debug_macro 00002f76 00000000 00000000 00012645 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -96,10 +96,10 @@ Disassembly of section .text: e0: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> 000000e4 <__trampolines_start>: - e4: 0c 94 c7 02 jmp 0x58e ; 0x58e <_GLOBAL__sub_I_d> + e4: 0c 94 cf 02 jmp 0x59e ; 0x59e <_GLOBAL__sub_I_d> 000000e8 <__ctors_start>: - e8: c7 02 muls r28, r23 + e8: cf 02 muls r28, r31 000000ea <__ctors_end>: ea: 11 24 eor r1, r1 @@ -115,8 +115,8 @@ Disassembly of section .text: fa: 12 e0 ldi r17, 0x02 ; 2 fc: a0 e0 ldi r26, 0x00 ; 0 fe: b2 e0 ldi r27, 0x02 ; 2 - 100: ec e9 ldi r30, 0x9C ; 156 - 102: fb e0 ldi r31, 0x0B ; 11 + 100: e0 e1 ldi r30, 0x10 ; 16 + 102: fc e0 ldi r31, 0x0C ; 12 104: 00 e0 ldi r16, 0x00 ; 0 106: 0b bf out 0x3b, r16 ; 59 108: 02 c0 rjmp .+4 ; 0x10e <__do_copy_data+0x14> @@ -136,7 +136,7 @@ Disassembly of section .text: 11c: 1d 92 st X+, r1 0000011e <.do_clear_bss_start>: - 11e: a9 30 cpi r26, 0x09 ; 9 + 11e: ab 30 cpi r26, 0x0B ; 11 120: b2 07 cpc r27, r18 122: e1 f7 brne .-8 ; 0x11c <.do_clear_bss_loop> @@ -150,19 +150,19 @@ Disassembly of section .text: 130: 01 09 sbc r16, r1 132: fe 01 movw r30, r28 134: 0b bf out 0x3b, r16 ; 59 - 136: 0e 94 f4 02 call 0x5e8 ; 0x5e8 <__tablejump_elpm__> + 136: 0e 94 2e 03 call 0x65c ; 0x65c <__tablejump_elpm__> 13a: c8 3e cpi r28, 0xE8 ; 232 13c: d1 07 cpc r29, r17 13e: 80 e0 ldi r24, 0x00 ; 0 140: 08 07 cpc r16, r24 142: a9 f7 brne .-22 ; 0x12e <__do_global_ctors+0xa> - 144: 0e 94 d0 01 call 0x3a0 ; 0x3a0
- 148: 0c 94 cc 05 jmp 0xb98 ; 0xb98 <_exit> + 144: 0e 94 cd 01 call 0x39a ; 0x39a
+ 148: 0c 94 06 06 jmp 0xc0c ; 0xc0c <_exit> 0000014c <__bad_interrupt>: 14c: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> -00000150 <_ZN6avrlib3pinINS_5portjELh4EE3setEb.part.8>: +00000150 <_ZN6avrlib3pinINS_5portjELh4EE3setEb.part.7>: namespace avrlib { @@ -183,7 +183,7 @@ namespace avrlib { 158: 80 83 st Z, r24 15a: 08 95 ret -0000015c <_ZN6avrlib3pinINS_5portlELh5EE3setEb.part.14>: +0000015c <_ZN6avrlib3pinINS_5portlELh5EE3setEb.part.10>: namespace avrlib { @@ -198,557 +198,574 @@ namespace avrlib { 164: 80 83 st Z, r24 166: 08 95 ret -00000168 <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49>: +00000168 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE5readyEv.isra.17>: + +namespace avrlib { + + struct portj + { + static uint8_t port() { return PORTJ; } + 168: 80 91 05 01 lds r24, 0x0105 + else + Port::port(Port::port() & ~(1<init(); + } + + void ready(void) { + s.CSOn(); + while(s.has_data()); // wait until FIFO ready + 176: 83 ff sbrs r24, 3 + 178: fc cf rjmp .-8 ; 0x172 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE5readyEv.isra.17+0xa> + } + 17a: 08 95 ret + +0000017c <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49>: void init_port() { sck::make_low(); //output und low; cs::make_high(); //output und low; sdi::make_low(); //output und low; } void send_soft(uint8_t data) { - 168: 98 e0 ldi r25, 0x08 ; 8 + 17c: 98 e0 ldi r25, 0x08 ; 8 for (uint8_t i=0; i<8; i++) { if (data & 0x80) { - 16a: 87 ff sbrs r24, 7 - 16c: 02 c0 rjmp .+4 ; 0x172 <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49+0xa> + 17e: 87 ff sbrs r24, 7 + 180: 02 c0 rjmp .+4 ; 0x186 <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49+0xa> namespace avrlib { struct portg { static uint8_t port() { return PORTG; } static void port(uint8_t v) { PORTG = v; } - 16e: a0 9a sbi 0x14, 0 ; 20 - 170: 01 c0 rjmp .+2 ; 0x174 <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49+0xc> - 172: a0 98 cbi 0x14, 0 ; 20 + 182: a0 9a sbi 0x14, 0 ; 20 + 184: 01 c0 rjmp .+2 ; 0x188 <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49+0xc> + 186: a0 98 cbi 0x14, 0 ; 20 static uint8_t pin() { return PING; } static void pin(uint8_t v) { PING = v; } static uint8_t dir() { return DDRG; } static void dir(uint8_t v) { DDRG = v; } - 174: 98 9a sbi 0x13, 0 ; 19 + 188: 98 9a sbi 0x13, 0 ; 19 namespace avrlib { struct portg { static uint8_t port() { return PORTG; } static void port(uint8_t v) { PORTG = v; } - 176: a1 9a sbi 0x14, 1 ; 20 + 18a: a1 9a sbi 0x14, 1 ; 20 static uint8_t pin() { return PING; } static void pin(uint8_t v) { PING = v; } static uint8_t dir() { return DDRG; } static void dir(uint8_t v) { DDRG = v; } - 178: 99 9a sbi 0x13, 1 ; 19 + 18c: 99 9a sbi 0x13, 1 ; 19 } else { sdi::make_low(); } sck::make_high(); data<<=1; - 17a: 88 0f add r24, r24 + 18e: 88 0f add r24, r24 #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 17c: 00 c0 rjmp .+0 ; 0x17e <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49+0x16> - 17e: 00 c0 rjmp .+0 ; 0x180 <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49+0x18> - 180: 00 00 nop + 190: 00 c0 rjmp .+0 ; 0x192 <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49+0x16> + 192: 00 c0 rjmp .+0 ; 0x194 <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49+0x18> + 194: 00 00 nop namespace avrlib { struct portg { static uint8_t port() { return PORTG; } static void port(uint8_t v) { PORTG = v; } - 182: a1 98 cbi 0x14, 1 ; 20 + 196: a1 98 cbi 0x14, 1 ; 20 static uint8_t pin() { return PING; } static void pin(uint8_t v) { PING = v; } static uint8_t dir() { return DDRG; } static void dir(uint8_t v) { DDRG = v; } - 184: 99 9a sbi 0x13, 1 ; 19 - 186: 91 50 subi r25, 0x01 ; 1 + 198: 99 9a sbi 0x13, 1 ; 19 + 19a: 91 50 subi r25, 0x01 ; 1 sck::make_low(); //output und low; cs::make_high(); //output und low; sdi::make_low(); //output und low; } void send_soft(uint8_t data) { for (uint8_t i=0; i<8; i++) - 188: 81 f7 brne .-32 ; 0x16a <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49+0x2> + 19c: 81 f7 brne .-32 ; 0x17e <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49+0x2> sck::make_high(); data<<=1; _delay_us(0.3); sck::make_low(); } } - 18a: 08 95 ret + 19e: 08 95 ret -0000018c <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE15digitalPotWriteEj.isra.50>: - cs::clear(); - } - void CSOff() { - cs::set(); - } - void digitalPotWrite(uint16_t value) { - 18c: cf 93 push r28 - 18e: c8 2f mov r28, r24 -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - 190: 40 98 cbi 0x08, 0 ; 8 - this->CSOn(); - this->send_soft((value>>8)&0b00000001); //high byte least significant bit - 192: 89 2f mov r24, r25 - 194: 81 70 andi r24, 0x01 ; 1 - 196: 0e 94 b4 00 call 0x168 ; 0x168 <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49> - this->send_soft(value & 0xff); - 19a: 8c 2f mov r24, r28 - 19c: 0e 94 b4 00 call 0x168 ; 0x168 <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49> - 1a0: 40 9a sbi 0x08, 0 ; 8 - this->CSOff(); - } - 1a2: cf 91 pop r28 - 1a4: 08 95 ret - -000001a6 <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.17>: +000001a0 <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.14>: } void init_spi() { SPCR = (1< - 1b4: 20 64 ori r18, 0x40 ; 64 - 1b6: 01 c0 rjmp .+2 ; 0x1ba <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.17+0x14> + 1aa: 37 ff sbrs r19, 7 + 1ac: 02 c0 rjmp .+4 ; 0x1b2 <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.14+0x12> + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< else Port::port(Port::port() & ~(1< - 1d6: 00 c0 rjmp .+0 ; 0x1d8 <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.17+0x32> - 1d8: 00 00 nop + 1cc: 33 0f add r19, r19 + 1ce: 00 c0 rjmp .+0 ; 0x1d0 <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.14+0x30> + 1d0: 00 c0 rjmp .+0 ; 0x1d2 <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.14+0x32> + 1d2: 00 00 nop namespace avrlib { struct portj { static uint8_t port() { return PORTJ; } - 1da: 20 91 05 01 lds r18, 0x0105 + 1d4: 20 91 05 01 lds r18, 0x0105 else Port::port(Port::port() & ~(1< + 1e0: 11 f7 brne .-60 ; 0x1a6 <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.14+0x6> data<<=1; _delay_us(0.3); sck::clear(); } return datain; } - 1e8: 08 95 ret + 1e2: 08 95 ret -000001ea <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5>: +000001e4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.4>: namespace avrlib { struct portl { static uint8_t port() { return PORTL; } - 1ea: eb e0 ldi r30, 0x0B ; 11 - 1ec: f1 e0 ldi r31, 0x01 ; 1 - 1ee: 80 81 ld r24, Z + 1e4: eb e0 ldi r30, 0x0B ; 11 + 1e6: f1 e0 ldi r31, 0x01 ; 1 + 1e8: 80 81 ld r24, Z struct pin { static void set(bool value = true) { if (value) Port::port(Port::port() | (1< - 1fc: 00 c0 rjmp .+0 ; 0x1fe <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5+0x14> - 1fe: 00 00 nop + 1ec: 80 83 st Z, r24 + 1ee: 83 ed ldi r24, 0xD3 ; 211 + 1f0: 90 e0 ldi r25, 0x00 ; 0 + 1f2: 01 97 sbiw r24, 0x01 ; 1 + 1f4: f1 f7 brne .-4 ; 0x1f2 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.4+0xe> + 1f6: 00 c0 rjmp .+0 ; 0x1f8 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.4+0x14> + 1f8: 00 00 nop namespace avrlib { struct portl { static uint8_t port() { return PORTL; } - 200: 80 81 ld r24, Z + 1fa: 80 81 ld r24, Z else Port::port(Port::port() & ~(1<: +00000202 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.20>: + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 202: eb e0 ldi r30, 0x0B ; 11 + 204: f1 e0 ldi r31, 0x01 ; 1 + 206: 90 81 ld r25, Z + 208: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 20a: 90 83 st Z, r25 namespace avrlib { struct portl { static uint8_t port() { return PORTL; } - 208: eb e0 ldi r30, 0x0B ; 11 - 20a: f1 e0 ldi r31, 0x01 ; 1 20c: 90 81 ld r25, Z - 20e: 9f 7b andi r25, 0xBF ; 191 + 20e: 9f 7d andi r25, 0xDF ; 223 static void port(uint8_t v) { PORTL = v; } 210: 90 83 st Z, r25 - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 212: 90 81 ld r25, Z - 214: 9f 7d andi r25, 0xDF ; 223 - static void port(uint8_t v) { PORTL = v; } - 216: 90 83 st Z, r25 namespace avrlib { struct portd { static uint8_t port() { return PORTD; } static void port(uint8_t v) { PORTD = v; } - 218: 8b b9 out 0x0b, r24 ; 11 + 212: 8b b9 out 0x0b, r24 ; 11 prs::set(); } else { prs::clear(); } PortData::port(data); this->toggleE(); - 21a: 0c 94 f5 00 jmp 0x1ea ; 0x1ea <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5> + 214: 0c 94 f2 00 jmp 0x1e4 ; 0x1e4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.4> -0000021e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.30>: +00000218 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.24>: this->setInstruction(0b00000000); _delay_ms(2); } void clear() { this->setInstruction(0b00000001); - 21e: 81 e0 ldi r24, 0x01 ; 1 - 220: 0e 94 04 01 call 0x208 ; 0x208 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.26> + 218: 81 e0 ldi r24, 0x01 ; 1 + 21a: 0e 94 01 01 call 0x202 ; 0x202 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.20> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 224: 8f e3 ldi r24, 0x3F ; 63 - 226: 9f e1 ldi r25, 0x1F ; 31 - 228: 01 97 sbiw r24, 0x01 ; 1 - 22a: f1 f7 brne .-4 ; 0x228 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.30+0xa> - 22c: 00 c0 rjmp .+0 ; 0x22e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.30+0x10> - 22e: 00 00 nop - 230: 08 95 ret + 21e: 8f e3 ldi r24, 0x3F ; 63 + 220: 9f e1 ldi r25, 0x1F ; 31 + 222: 01 97 sbiw r24, 0x01 ; 1 + 224: f1 f7 brne .-4 ; 0x222 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.24+0xa> + 226: 00 c0 rjmp .+0 ; 0x228 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.24+0x10> + 228: 00 00 nop + 22a: 08 95 ret -00000232 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36>: +0000022c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30>: lputc(c); } } } void lputc(uint8_t c) { - 232: cf 93 push r28 - 234: c8 2f mov r28, r24 + 22c: cf 93 push r28 + 22e: c8 2f mov r28, r24 namespace avrlib { struct portl { static uint8_t port() { return PORTL; } - 236: 90 91 0b 01 lds r25, 0x010B + 230: 90 91 0b 01 lds r25, 0x010B struct pin { static void set(bool value = true) { if (value) Port::port(Port::port() | (1<toggleE(); - 24e: 0e 94 f5 00 call 0x1ea ; 0x1ea <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5> + 248: 0e 94 f2 00 call 0x1e4 ; 0x1e4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.4> struct portd { static uint8_t port() { return PORTD; } static void port(uint8_t v) { PORTD = v; } static uint8_t pin() { return PIND; } - 252: 99 b1 in r25, 0x09 ; 9 + 24c: 99 b1 in r25, 0x09 ; 9 static void pin(uint8_t v) { PIND = v; } static uint8_t dir() { return DDRD; } static void dir(uint8_t v) { DDRD = v; } - 254: 8f ef ldi r24, 0xFF ; 255 - 256: 8a b9 out 0x0a, r24 ; 10 + 24e: 8f ef ldi r24, 0xFF ; 255 + 250: 8a b9 out 0x0a, r24 ; 10 } } void lputc(uint8_t c) { uint8_t pos = this->getAddress(); // read busy-flag and address counter if (c == '\n') { - 258: ca 30 cpi r28, 0x0A ; 10 - 25a: e9 f4 brne .+58 ; 0x296 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x64> + 252: ca 30 cpi r28, 0x0A ; 10 + 254: e9 f4 brne .+58 ; 0x290 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x64> _delay_us(53); pen::clear(); } void newline(uint8_t pos) { if ( pos >= 0x50 && pos <= 0x5F ) { - 25c: 89 2f mov r24, r25 - 25e: 80 55 subi r24, 0x50 ; 80 - 260: 80 31 cpi r24, 0x10 ; 16 - 262: 10 f4 brcc .+4 ; 0x268 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x36> + 256: 89 2f mov r24, r25 + 258: 80 55 subi r24, 0x50 ; 80 + 25a: 80 31 cpi r24, 0x10 ; 16 + 25c: 10 f4 brcc .+4 ; 0x262 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x36> return data; } void setLine(uint8_t l) { switch(l) { case 1: this->setInstruction(0b10000000); break; //0x00-0x0F - 264: 80 e8 ldi r24, 0x80 ; 128 - 266: 0e c0 rjmp .+28 ; 0x284 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x52> + 25e: 80 e8 ldi r24, 0x80 ; 128 + 260: 0e c0 rjmp .+28 ; 0x27e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x52> void newline(uint8_t pos) { if ( pos >= 0x50 && pos <= 0x5F ) { return this->setLine(1); } if ( pos >= 0x00 && pos <= 0x0F) { - 268: 90 31 cpi r25, 0x10 ; 16 - 26a: 10 f4 brcc .+4 ; 0x270 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x3e> + 262: 90 31 cpi r25, 0x10 ; 16 + 264: 10 f4 brcc .+4 ; 0x26a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x3e> } void setLine(uint8_t l) { switch(l) { case 1: this->setInstruction(0b10000000); break; //0x00-0x0F case 2: this->setInstruction(0b11000000); break; //0x40-0x4F - 26c: 80 ec ldi r24, 0xC0 ; 192 - 26e: 0a c0 rjmp .+20 ; 0x284 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x52> + 266: 80 ec ldi r24, 0xC0 ; 192 + 268: 0a c0 rjmp .+20 ; 0x27e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x52> return this->setLine(1); } if ( pos >= 0x00 && pos <= 0x0F) { return this->setLine(2); } if ( pos >= 0x40 && pos <= 0x4F) { - 270: 89 2f mov r24, r25 - 272: 80 54 subi r24, 0x40 ; 64 - 274: 80 31 cpi r24, 0x10 ; 16 - 276: 10 f4 brcc .+4 ; 0x27c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x4a> + 26a: 89 2f mov r24, r25 + 26c: 80 54 subi r24, 0x40 ; 64 + 26e: 80 31 cpi r24, 0x10 ; 16 + 270: 10 f4 brcc .+4 ; 0x276 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x4a> void setLine(uint8_t l) { switch(l) { case 1: this->setInstruction(0b10000000); break; //0x00-0x0F case 2: this->setInstruction(0b11000000); break; //0x40-0x4F case 3: this->setInstruction(0b10010000); break; //0x10-0x1F - 278: 80 e9 ldi r24, 0x90 ; 144 - 27a: 04 c0 rjmp .+8 ; 0x284 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x52> + 272: 80 e9 ldi r24, 0x90 ; 144 + 274: 04 c0 rjmp .+8 ; 0x27e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x52> return this->setLine(2); } if ( pos >= 0x40 && pos <= 0x4F) { return this->setLine(3); } if ( pos >= 0x10 && pos <= 0x1F) { - 27c: 90 51 subi r25, 0x10 ; 16 - 27e: 90 31 cpi r25, 0x10 ; 16 - 280: 60 f5 brcc .+88 ; 0x2da <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0xa8> + 276: 90 51 subi r25, 0x10 ; 16 + 278: 90 31 cpi r25, 0x10 ; 16 + 27a: 60 f5 brcc .+88 ; 0x2d4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0xa8> void setLine(uint8_t l) { switch(l) { case 1: this->setInstruction(0b10000000); break; //0x00-0x0F case 2: this->setInstruction(0b11000000); break; //0x40-0x4F case 3: this->setInstruction(0b10010000); break; //0x10-0x1F case 4: this->setInstruction(0b11010000); break; //0x50-0x5F - 282: 80 ed ldi r24, 0xD0 ; 208 - 284: 0e 94 04 01 call 0x208 ; 0x208 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.26> - 288: 8f e9 ldi r24, 0x9F ; 159 - 28a: 9f e0 ldi r25, 0x0F ; 15 - 28c: 01 97 sbiw r24, 0x01 ; 1 - 28e: f1 f7 brne .-4 ; 0x28c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x5a> - 290: 00 c0 rjmp .+0 ; 0x292 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x60> - 292: 00 00 nop - 294: 22 c0 rjmp .+68 ; 0x2da <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0xa8> + 27c: 80 ed ldi r24, 0xD0 ; 208 + 27e: 0e 94 01 01 call 0x202 ; 0x202 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.20> + 282: 8f e9 ldi r24, 0x9F ; 159 + 284: 9f e0 ldi r25, 0x0F ; 15 + 286: 01 97 sbiw r24, 0x01 ; 1 + 288: f1 f7 brne .-4 ; 0x286 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x5a> + 28a: 00 c0 rjmp .+0 ; 0x28c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x60> + 28c: 00 00 nop + 28e: 22 c0 rjmp .+68 ; 0x2d4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0xa8> void lputc(uint8_t c) { uint8_t pos = this->getAddress(); // read busy-flag and address counter if (c == '\n') { this->newline(pos); } else { if ( pos == 0x0F ) { - 296: 9f 30 cpi r25, 0x0F ; 15 - 298: 11 f4 brne .+4 ; 0x29e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x6c> + 290: 9f 30 cpi r25, 0x0F ; 15 + 292: 11 f4 brne .+4 ; 0x298 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x6c> } void setLine(uint8_t l) { switch(l) { case 1: this->setInstruction(0b10000000); break; //0x00-0x0F case 2: this->setInstruction(0b11000000); break; //0x40-0x4F - 29a: 80 ec ldi r24, 0xC0 ; 192 - 29c: 0b c0 rjmp .+22 ; 0x2b4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x82> + 294: 80 ec ldi r24, 0xC0 ; 192 + 296: 0b c0 rjmp .+22 ; 0x2ae <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x82> if (c == '\n') { this->newline(pos); } else { if ( pos == 0x0F ) { this->setLine(2); } else if ( pos == 0x4F ) { - 29e: 9f 34 cpi r25, 0x4F ; 79 - 2a0: 11 f4 brne .+4 ; 0x2a6 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x74> + 298: 9f 34 cpi r25, 0x4F ; 79 + 29a: 11 f4 brne .+4 ; 0x2a0 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x74> void setLine(uint8_t l) { switch(l) { case 1: this->setInstruction(0b10000000); break; //0x00-0x0F case 2: this->setInstruction(0b11000000); break; //0x40-0x4F case 3: this->setInstruction(0b10010000); break; //0x10-0x1F - 2a2: 80 e9 ldi r24, 0x90 ; 144 - 2a4: 07 c0 rjmp .+14 ; 0x2b4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x82> + 29c: 80 e9 ldi r24, 0x90 ; 144 + 29e: 07 c0 rjmp .+14 ; 0x2ae <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x82> } else { if ( pos == 0x0F ) { this->setLine(2); } else if ( pos == 0x4F ) { this->setLine(3); } else if ( pos == 0x1F ) { - 2a6: 9f 31 cpi r25, 0x1F ; 31 - 2a8: 11 f4 brne .+4 ; 0x2ae <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x7c> + 2a0: 9f 31 cpi r25, 0x1F ; 31 + 2a2: 11 f4 brne .+4 ; 0x2a8 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x7c> void setLine(uint8_t l) { switch(l) { case 1: this->setInstruction(0b10000000); break; //0x00-0x0F case 2: this->setInstruction(0b11000000); break; //0x40-0x4F case 3: this->setInstruction(0b10010000); break; //0x10-0x1F case 4: this->setInstruction(0b11010000); break; //0x50-0x5F - 2aa: 80 ed ldi r24, 0xD0 ; 208 - 2ac: 03 c0 rjmp .+6 ; 0x2b4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x82> + 2a4: 80 ed ldi r24, 0xD0 ; 208 + 2a6: 03 c0 rjmp .+6 ; 0x2ae <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x82> this->setLine(2); } else if ( pos == 0x4F ) { this->setLine(3); } else if ( pos == 0x1F ) { this->setLine(4); } else if ( pos == 0x5F ) { - 2ae: 9f 35 cpi r25, 0x5F ; 95 - 2b0: 49 f4 brne .+18 ; 0x2c4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x92> + 2a8: 9f 35 cpi r25, 0x5F ; 95 + 2aa: 49 f4 brne .+18 ; 0x2be <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x92> return data; } void setLine(uint8_t l) { switch(l) { case 1: this->setInstruction(0b10000000); break; //0x00-0x0F - 2b2: 80 e8 ldi r24, 0x80 ; 128 - 2b4: 0e 94 04 01 call 0x208 ; 0x208 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.26> - 2b8: 8f e9 ldi r24, 0x9F ; 159 - 2ba: 9f e0 ldi r25, 0x0F ; 15 - 2bc: 01 97 sbiw r24, 0x01 ; 1 - 2be: f1 f7 brne .-4 ; 0x2bc <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x8a> - 2c0: 00 c0 rjmp .+0 ; 0x2c2 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36+0x90> - 2c2: 00 00 nop + 2ac: 80 e8 ldi r24, 0x80 ; 128 + 2ae: 0e 94 01 01 call 0x202 ; 0x202 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.20> + 2b2: 8f e9 ldi r24, 0x9F ; 159 + 2b4: 9f e0 ldi r25, 0x0F ; 15 + 2b6: 01 97 sbiw r24, 0x01 ; 1 + 2b8: f1 f7 brne .-4 ; 0x2b6 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x8a> + 2ba: 00 c0 rjmp .+0 ; 0x2bc <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30+0x90> + 2bc: 00 00 nop namespace avrlib { struct portl { static uint8_t port() { return PORTL; } - 2c4: 90 91 0b 01 lds r25, 0x010B - 2c8: 9f 7b andi r25, 0xBF ; 191 + 2be: 90 91 0b 01 lds r25, 0x010B + 2c2: 9f 7b andi r25, 0xBF ; 191 static void port(uint8_t v) { PORTL = v; } - 2ca: 90 93 0b 01 sts 0x010B, r25 - 2ce: 0e 94 ae 00 call 0x15c ; 0x15c <_ZN6avrlib3pinINS_5portlELh5EE3setEb.part.14> + 2c4: 90 93 0b 01 sts 0x010B, r25 + 2c8: 0e 94 ae 00 call 0x15c ; 0x15c <_ZN6avrlib3pinINS_5portlELh5EE3setEb.part.10> namespace avrlib { struct portd { static uint8_t port() { return PORTD; } static void port(uint8_t v) { PORTD = v; } - 2d2: cb b9 out 0x0b, r28 ; 11 + 2cc: cb b9 out 0x0b, r28 ; 11 + } else if ( pos == 0x5F ) { + this->setLine(1); + } + this->setChar(c); + } + } + 2ce: cf 91 pop r28 + prs::set(); + } else { + prs::clear(); + } + PortData::port(data); + this->toggleE(); + 2d0: 0c 94 f2 00 jmp 0x1e4 ; 0x1e4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.4> } else if ( pos == 0x5F ) { this->setLine(1); } @@ -756,1496 +773,1541 @@ namespace avrlib { } } 2d4: cf 91 pop r28 - prs::set(); - } else { - prs::clear(); - } - PortData::port(data); - this->toggleE(); - 2d6: 0c 94 f5 00 jmp 0x1ea ; 0x1ea <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5> - } else if ( pos == 0x5F ) { - this->setLine(1); - } - this->setChar(c); - } - } - 2da: cf 91 pop r28 - 2dc: 08 95 ret + 2d6: 08 95 ret -000002de <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.38>: +000002d8 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.32>: void on() { this->setInstruction(0b00001100); _delay_ms(2); } void printHex(uint16_t d) { - 2de: 0f 93 push r16 - 2e0: 1f 93 push r17 - 2e2: cf 93 push r28 - 2e4: df 93 push r29 - 2e6: cd b7 in r28, 0x3d ; 61 - 2e8: de b7 in r29, 0x3e ; 62 - 2ea: 2a 97 sbiw r28, 0x0a ; 10 - 2ec: 0f b6 in r0, 0x3f ; 63 - 2ee: f8 94 cli - 2f0: de bf out 0x3e, r29 ; 62 - 2f2: 0f be out 0x3f, r0 ; 63 - 2f4: cd bf out 0x3d, r28 ; 61 + 2d8: 0f 93 push r16 + 2da: 1f 93 push r17 + 2dc: cf 93 push r28 + 2de: df 93 push r29 + 2e0: cd b7 in r28, 0x3d ; 61 + 2e2: de b7 in r29, 0x3e ; 62 + 2e4: 2a 97 sbiw r28, 0x0a ; 10 + 2e6: 0f b6 in r0, 0x3f ; 63 + 2e8: f8 94 cli + 2ea: de bf out 0x3e, r29 ; 62 + 2ec: 0f be out 0x3f, r0 ; 63 + 2ee: cd bf out 0x3d, r28 ; 61 char t[10]; sprintf(t, "%04X ", d); - 2f6: 9f 93 push r25 - 2f8: 8f 93 push r24 - 2fa: 80 e0 ldi r24, 0x00 ; 0 - 2fc: 92 e0 ldi r25, 0x02 ; 2 - 2fe: 9f 93 push r25 - 300: 8f 93 push r24 - 302: 8e 01 movw r16, r28 - 304: 0f 5f subi r16, 0xFF ; 255 - 306: 1f 4f sbci r17, 0xFF ; 255 - 308: 1f 93 push r17 - 30a: 0f 93 push r16 - 30c: 0e 94 f8 02 call 0x5f0 ; 0x5f0 + 2f0: 9f 93 push r25 + 2f2: 8f 93 push r24 + 2f4: 80 e0 ldi r24, 0x00 ; 0 + 2f6: 92 e0 ldi r25, 0x02 ; 2 + 2f8: 9f 93 push r25 + 2fa: 8f 93 push r24 + 2fc: 8e 01 movw r16, r28 + 2fe: 0f 5f subi r16, 0xFF ; 255 + 300: 1f 4f sbci r17, 0xFF ; 255 + 302: 1f 93 push r17 + 304: 0f 93 push r16 + 306: 0e 94 32 03 call 0x664 ; 0x664 + 30a: 0f 90 pop r0 + 30c: 0f 90 pop r0 + 30e: 0f 90 pop r0 310: 0f 90 pop r0 312: 0f 90 pop r0 314: 0f 90 pop r0 - 316: 0f 90 pop r0 - 318: 0f 90 pop r0 - 31a: 0f 90 pop r0 - 31c: 11 c0 rjmp .+34 ; 0x340 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.38+0x62> + 316: 11 c0 rjmp .+34 ; 0x33a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.32+0x62> } void lputs(const char *s) { /* print string on lcd (no auto linefeed) */ register char c; while ( (c = *s++) ) { if(c == 0xE4) { //ä - 31e: 84 3e cpi r24, 0xE4 ; 228 - 320: 11 f4 brne .+4 ; 0x326 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.38+0x48> + 318: 84 3e cpi r24, 0xE4 ; 228 + 31a: 11 f4 brne .+4 ; 0x320 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.32+0x48> lputc(0xE1); - 322: 81 ee ldi r24, 0xE1 ; 225 - 324: 0b c0 rjmp .+22 ; 0x33c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.38+0x5e> + 31c: 81 ee ldi r24, 0xE1 ; 225 + 31e: 0b c0 rjmp .+22 ; 0x336 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.32+0x5e> } else if(c == 0xF6) { //ö - 326: 86 3f cpi r24, 0xF6 ; 246 - 328: 11 f4 brne .+4 ; 0x32e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.38+0x50> + 320: 86 3f cpi r24, 0xF6 ; 246 + 322: 11 f4 brne .+4 ; 0x328 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.32+0x50> lputc(0xEF); - 32a: 8f ee ldi r24, 0xEF ; 239 - 32c: 07 c0 rjmp .+14 ; 0x33c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.38+0x5e> + 324: 8f ee ldi r24, 0xEF ; 239 + 326: 07 c0 rjmp .+14 ; 0x336 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.32+0x5e> } else if(c == 0xFC) { //ü - 32e: 8c 3f cpi r24, 0xFC ; 252 - 330: 11 f4 brne .+4 ; 0x336 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.38+0x58> + 328: 8c 3f cpi r24, 0xFC ; 252 + 32a: 11 f4 brne .+4 ; 0x330 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.32+0x58> lputc(0xF5); - 332: 85 ef ldi r24, 0xF5 ; 245 - 334: 03 c0 rjmp .+6 ; 0x33c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.38+0x5e> + 32c: 85 ef ldi r24, 0xF5 ; 245 + 32e: 03 c0 rjmp .+6 ; 0x336 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.32+0x5e> } else if(c == 0xDF) { //ü - 336: 8f 3d cpi r24, 0xDF ; 223 - 338: 09 f4 brne .+2 ; 0x33c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.38+0x5e> + 330: 8f 3d cpi r24, 0xDF ; 223 + 332: 09 f4 brne .+2 ; 0x336 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.32+0x5e> lputc(0xE2); - 33a: 82 ee ldi r24, 0xE2 ; 226 + 334: 82 ee ldi r24, 0xE2 ; 226 } else { lputc(c); - 33c: 0e 94 19 01 call 0x232 ; 0x232 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36> + 336: 0e 94 16 01 call 0x22c ; 0x22c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30> this->lputs(t); } void lputs(const char *s) { /* print string on lcd (no auto linefeed) */ register char c; while ( (c = *s++) ) { - 340: f8 01 movw r30, r16 - 342: 81 91 ld r24, Z+ - 344: 8f 01 movw r16, r30 - 346: 81 11 cpse r24, r1 - 348: ea cf rjmp .-44 ; 0x31e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.38+0x40> + 33a: f8 01 movw r30, r16 + 33c: 81 91 ld r24, Z+ + 33e: 8f 01 movw r16, r30 + 340: 81 11 cpse r24, r1 + 342: ea cf rjmp .-44 ; 0x318 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.32+0x40> void printHex(uint16_t d) { char t[10]; sprintf(t, "%04X ", d); this->lputs(t); } - 34a: 2a 96 adiw r28, 0x0a ; 10 - 34c: 0f b6 in r0, 0x3f ; 63 - 34e: f8 94 cli - 350: de bf out 0x3e, r29 ; 62 - 352: 0f be out 0x3f, r0 ; 63 - 354: cd bf out 0x3d, r28 ; 61 - 356: df 91 pop r29 - 358: cf 91 pop r28 - 35a: 1f 91 pop r17 - 35c: 0f 91 pop r16 - 35e: 08 95 ret + 344: 2a 96 adiw r28, 0x0a ; 10 + 346: 0f b6 in r0, 0x3f ; 63 + 348: f8 94 cli + 34a: de bf out 0x3e, r29 ; 62 + 34c: 0f be out 0x3f, r0 ; 63 + 34e: cd bf out 0x3d, r28 ; 61 + 350: df 91 pop r29 + 352: cf 91 pop r28 + 354: 1f 91 pop r17 + 356: 0f 91 pop r16 + 358: 08 95 ret -00000360 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4sendEj.isra.39>: - this->send(0x8208); // TX off - _delay_ms(100); +0000035a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33>: } private: + uint8_t hasdatav = 0; + uint8_t data = 0; Spi s; uint16_t send(uint16_t wert) { - 360: 1f 93 push r17 - 362: cf 93 push r28 - 364: df 93 push r29 - 366: 18 2f mov r17, r24 - 368: c9 2f mov r28, r25 + 35a: 1f 93 push r17 + 35c: cf 93 push r28 + 35e: df 93 push r29 + 360: 18 2f mov r17, r24 + 362: c9 2f mov r28, r25 namespace avrlib { struct portj { static uint8_t port() { return PORTJ; } - 36a: e5 e0 ldi r30, 0x05 ; 5 - 36c: f1 e0 ldi r31, 0x01 ; 1 - 36e: 20 81 ld r18, Z - 370: 2f 7e andi r18, 0xEF ; 239 + 364: e5 e0 ldi r30, 0x05 ; 5 + 366: f1 e0 ldi r31, 0x01 ; 1 + 368: 20 81 ld r18, Z + 36a: 2f 7e andi r18, 0xEF ; 239 static void port(uint8_t v) { PORTJ = v; } - 372: 20 83 st Z, r18 + 36c: 20 83 st Z, r18 s.CSOn(); d.printHex(wert); - 374: 0e 94 6f 01 call 0x2de ; 0x2de <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.38> + 36e: 0e 94 6c 01 call 0x2d8 ; 0x2d8 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.32> } uint8_t send(uint8_t data) { if(mode == 0) { return this->send_hard(data); } return this->send_soft(data); - 378: 8c 2f mov r24, r28 - 37a: 0e 94 d3 00 call 0x1a6 ; 0x1a6 <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.17> + 372: 8c 2f mov r24, r28 + 374: 0e 94 d0 00 call 0x1a0 ; 0x1a0 <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.14> uint16_t werti = s.send((uint8_t)(wert >> 8)) << 8; - 37e: d8 2f mov r29, r24 - 380: 80 e0 ldi r24, 0x00 ; 0 - 382: c8 2f mov r28, r24 - 384: 81 2f mov r24, r17 - 386: 0e 94 d3 00 call 0x1a6 ; 0x1a6 <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.17> + 378: d8 2f mov r29, r24 + 37a: 80 e0 ldi r24, 0x00 ; 0 + 37c: c8 2f mov r28, r24 + 37e: 81 2f mov r24, r17 + 380: 0e 94 d0 00 call 0x1a0 ; 0x1a0 <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.14> werti |= s.send((uint8_t)wert); - 38a: c8 2b or r28, r24 - 38c: 0e 94 a8 00 call 0x150 ; 0x150 <_ZN6avrlib3pinINS_5portjELh4EE3setEb.part.8> + 384: c8 2b or r28, r24 + 386: 0e 94 a8 00 call 0x150 ; 0x150 <_ZN6avrlib3pinINS_5portjELh4EE3setEb.part.7> s.CSOff(); d.printHex(werti); - 390: ce 01 movw r24, r28 - 392: 0e 94 6f 01 call 0x2de ; 0x2de <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.38> + 38a: ce 01 movw r24, r28 + 38c: 0e 94 6c 01 call 0x2d8 ; 0x2d8 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.32> return werti; } - 396: ce 01 movw r24, r28 - 398: df 91 pop r29 - 39a: cf 91 pop r28 - 39c: 1f 91 pop r17 - 39e: 08 95 ret + 390: ce 01 movw r24, r28 + 392: df 91 pop r29 + 394: cf 91 pop r28 + 396: 1f 91 pop r17 + 398: 08 95 ret -000003a0
: - s.CSOn(); - while(s.has_data()); // wait until FIFO ready - } - - void beginasyncrx() { - this->send(0x82C8); // RX on - 3a0: 88 ec ldi r24, 0xC8 ; 200 - 3a2: 92 e8 ldi r25, 0x82 ; 130 - 3a4: 0e 94 b0 01 call 0x360 ; 0x360 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4sendEj.isra.39> - this->send(0xCA81); // set FIFO mode - 3a8: 81 e8 ldi r24, 0x81 ; 129 - 3aa: 9a ec ldi r25, 0xCA ; 202 - 3ac: 0e 94 b0 01 call 0x360 ; 0x360 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4sendEj.isra.39> - this->send(0xCA83); // enable FIFO - 3b0: 83 e8 ldi r24, 0x83 ; 131 - 3b2: 9a ec ldi r25, 0xCA ; 202 - 3b4: 0e 94 b0 01 call 0x360 ; 0x360 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4sendEj.isra.39> - -namespace avrlib { - - struct portj - { - static uint8_t port() { return PORTJ; } - 3b8: 80 91 05 01 lds r24, 0x0105 - 3bc: 8f 7e andi r24, 0xEF ; 239 - static void port(uint8_t v) { PORTJ = v; } - 3be: 80 93 05 01 sts 0x0105, r24 - - static uint8_t pin() { return PINJ; } - 3c2: 80 91 03 01 lds r24, 0x0103 - } - uint8_t has_data() { - return !miso::read(); - 3c6: 86 95 lsr r24 - 3c8: 86 95 lsr r24 - 3ca: 86 95 lsr r24 - 3cc: 91 e0 ldi r25, 0x01 ; 1 - 3ce: 89 27 eor r24, r25 -#define MASTER 1 +0000039a
: + void txpacket(uint8_t addr, uint8_t from, uint8_t data) { + /************************************************************************/ + /* */ + /************************************************************************/ + d.clear(); + 39a: 0e 94 0c 01 call 0x218 ; 0x218 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.24> + this->send(0x8238); // TX on + 39e: 88 e3 ldi r24, 0x38 ; 56 + 3a0: 92 e8 ldi r25, 0x82 ; 130 + 3a2: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->ready(); + 3a6: 0e 94 b4 00 call 0x168 ; 0x168 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE5readyEv.isra.17> + this->send(0xB8AA); + 3aa: 8a ea ldi r24, 0xAA ; 170 + 3ac: 98 eb ldi r25, 0xB8 ; 184 + 3ae: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->ready(); + 3b2: 0e 94 b4 00 call 0x168 ; 0x168 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE5readyEv.isra.17> + this->send(0xB8AA); + 3b6: 8a ea ldi r24, 0xAA ; 170 + 3b8: 98 eb ldi r25, 0xB8 ; 184 + 3ba: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->ready(); + 3be: 0e 94 b4 00 call 0x168 ; 0x168 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE5readyEv.isra.17> + this->send(0xB8AA); + 3c2: 8a ea ldi r24, 0xAA ; 170 + 3c4: 98 eb ldi r25, 0xB8 ; 184 + 3c6: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->ready(); + 3ca: 0e 94 b4 00 call 0x168 ; 0x168 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE5readyEv.isra.17> + this->send(0xB82D); + 3ce: 8d e2 ldi r24, 0x2D ; 45 + 3d0: 98 eb ldi r25, 0xB8 ; 184 + 3d2: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + 3d6: 2f ef ldi r18, 0xFF ; 255 + 3d8: 39 e5 ldi r19, 0x59 ; 89 + 3da: 82 e6 ldi r24, 0x62 ; 98 + 3dc: 92 e0 ldi r25, 0x02 ; 2 + 3de: 21 50 subi r18, 0x01 ; 1 + 3e0: 30 40 sbci r19, 0x00 ; 0 + 3e2: 80 40 sbci r24, 0x00 ; 0 + 3e4: 90 40 sbci r25, 0x00 ; 0 + 3e6: d9 f7 brne .-10 ; 0x3de + 3e8: 00 c0 rjmp .+0 ; 0x3ea + 3ea: 00 00 nop + _delay_ms(15000); + this->ready(); + 3ec: 0e 94 b4 00 call 0x168 ; 0x168 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE5readyEv.isra.17> + this->send(0xB8D4); + 3f0: 84 ed ldi r24, 0xD4 ; 212 + 3f2: 98 eb ldi r25, 0xB8 ; 184 + 3f4: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->ready(); + 3f8: 0e 94 b4 00 call 0x168 ; 0x168 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE5readyEv.isra.17> + this->send(0xB800|addr); + 3fc: 80 e0 ldi r24, 0x00 ; 0 + 3fe: 98 eb ldi r25, 0xB8 ; 184 + 400: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->ready(); + 404: 0e 94 b4 00 call 0x168 ; 0x168 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE5readyEv.isra.17> + this->send(0xB800|from); + 408: 81 e0 ldi r24, 0x01 ; 1 + 40a: 98 eb ldi r25, 0xB8 ; 184 + 40c: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->ready(); + 410: 0e 94 b4 00 call 0x168 ; 0x168 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE5readyEv.isra.17> + this->send(0xB800|data); + 414: 85 e0 ldi r24, 0x05 ; 5 + 416: 98 eb ldi r25, 0xB8 ; 184 + 418: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->ready(); + 41c: 0e 94 b4 00 call 0x168 ; 0x168 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE5readyEv.isra.17> + this->send(0xB800); + 420: 80 e0 ldi r24, 0x00 ; 0 + 422: 98 eb ldi r25, 0xB8 ; 184 + 424: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->ready(); + 428: 0e 94 b4 00 call 0x168 ; 0x168 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE5readyEv.isra.17> + this->send(0x8208); // TX off + 42c: 88 e0 ldi r24, 0x08 ; 8 + 42e: 92 e8 ldi r25, 0x82 ; 130 + 430: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + 434: 2f ef ldi r18, 0xFF ; 255 + 436: 31 ee ldi r19, 0xE1 ; 225 + 438: 84 e0 ldi r24, 0x04 ; 4 + 43a: 21 50 subi r18, 0x01 ; 1 + 43c: 30 40 sbci r19, 0x00 ; 0 + 43e: 80 40 sbci r24, 0x00 ; 0 + 440: e1 f7 brne .-8 ; 0x43a + 442: 00 c0 rjmp .+0 ; 0x444 + 444: 00 00 nop + * 0xCA81 - 7 + * FIFO 8 Bit, sp 0, Sync pattern, fifo stop, non sensitive reset + * 0xCA83 - 7 + * FIFO 8 Bit, sp 0, Sync pattern, fifo start, non sensitive reset + ************************************************************************/ + this->send(0x82D8); //war 0x82C8 + 446: 88 ed ldi r24, 0xD8 ; 216 + 448: 92 e8 ldi r25, 0x82 ; 130 + 44a: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->send(0xCA81); + 44e: 81 e8 ldi r24, 0x81 ; 129 + 450: 9a ec ldi r25, 0xCA ; 202 + 452: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->send(0xCA83); + 456: 83 e8 ldi r24, 0x83 ; 131 + 458: 9a ec ldi r25, 0xCA ; 202 + 45a: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + 45e: 02 c0 rjmp .+4 ; 0x464 int main(void) { + r.txpacket(ALL, MASTER, SETACTIVE); r.beginasyncrx(); - d.printHex(r.hasdata()); - 3d0: 81 70 andi r24, 0x01 ; 1 - 3d2: 90 e0 ldi r25, 0x00 ; 0 - 3d4: 0e 94 6f 01 call 0x2de ; 0x2de <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.38> - 3d8: 2f ef ldi r18, 0xFF ; 255 - 3da: 39 e5 ldi r19, 0x59 ; 89 - 3dc: 82 e6 ldi r24, 0x62 ; 98 - 3de: 92 e0 ldi r25, 0x02 ; 2 - 3e0: 21 50 subi r18, 0x01 ; 1 - 3e2: 30 40 sbci r19, 0x00 ; 0 - 3e4: 80 40 sbci r24, 0x00 ; 0 - 3e6: 90 40 sbci r25, 0x00 ; 0 - 3e8: d9 f7 brne .-10 ; 0x3e0 - 3ea: 00 c0 rjmp .+0 ; 0x3ec - 3ec: 00 00 nop - void setValue(uint8_t v) { - uint16_t wert = (uint16_t)( this->MIN + (((float)(this->MAX - this->MIN ) / 0xFF) * v)); - this->digitalPotWrite(wert); - 3ee: 80 e0 ldi r24, 0x00 ; 0 - 3f0: 91 e0 ldi r25, 0x01 ; 1 - 3f2: 0e 94 c6 00 call 0x18c ; 0x18c <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE15digitalPotWriteEj.isra.50> - } - void off() { - this->setValue(0); - } - void setValue(uint8_t wert) { - OCR5AL = wert; - 3f6: 10 92 28 01 sts 0x0128, r1 - 3fa: 2f ef ldi r18, 0xFF ; 255 - 3fc: 39 e6 ldi r19, 0x69 ; 105 - 3fe: 88 e1 ldi r24, 0x18 ; 24 - 400: 21 50 subi r18, 0x01 ; 1 - 402: 30 40 sbci r19, 0x00 ; 0 - 404: 80 40 sbci r24, 0x00 ; 0 - 406: e1 f7 brne .-8 ; 0x400 - 408: 00 c0 rjmp .+0 ; 0x40a - 40a: 00 00 nop - 40c: f6 cf rjmp .-20 ; 0x3fa + while(1) { + while(!r.hasdata()) {d.clear();} + 460: 0e 94 0c 01 call 0x218 ; 0x218 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.24> + } + + uint16_t hasdata() { + uint16_t rec = this->send(0xB000); + 464: 80 e0 ldi r24, 0x00 ; 0 + 466: 90 eb ldi r25, 0xB0 ; 176 + 468: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->hasdatav = (uint8_t)(rec >> 8); + 46c: 90 93 06 02 sts 0x0206, r25 + this->data = (uint8_t)rec; + 470: 80 93 07 02 sts 0x0207, r24 + 474: 9f 3f cpi r25, 0xFF ; 255 + 476: a1 f7 brne .-24 ; 0x460 + d.clear(); + 478: 0e 94 0c 01 call 0x218 ; 0x218 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.24> + return (this->hasdatav == 0xFF); + } + + uint8_t rxbyte() { + if((this->hasdatav == 0xFF)) { + 47c: 80 91 06 02 lds r24, 0x0206 + 480: 8f 3f cpi r24, 0xFF ; 255 + 482: 29 f4 brne .+10 ; 0x48e + this->hasdatav = 0; + 484: 10 92 06 02 sts 0x0206, r1 + return this->data; + 488: 80 91 07 02 lds r24, 0x0207 + 48c: 04 c0 rjmp .+8 ; 0x496 + } + return this->send(0xB000); + 48e: 80 e0 ldi r24, 0x00 ; 0 + 490: 90 eb ldi r25, 0xB0 ; 176 + 492: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + d.printHex(r.rxbyte()); + 496: 90 e0 ldi r25, 0x00 ; 0 + 498: 0e 94 6c 01 call 0x2d8 ; 0x2d8 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.32> + 49c: 9f ef ldi r25, 0xFF ; 255 + 49e: 21 ee ldi r18, 0xE1 ; 225 + 4a0: 34 e0 ldi r19, 0x04 ; 4 + 4a2: 91 50 subi r25, 0x01 ; 1 + 4a4: 20 40 sbci r18, 0x00 ; 0 + 4a6: 30 40 sbci r19, 0x00 ; 0 + 4a8: e1 f7 brne .-8 ; 0x4a2 + 4aa: 00 c0 rjmp .+0 ; 0x4ac + 4ac: 00 00 nop + 4ae: da cf rjmp .-76 ; 0x464 -0000040e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev>: -#include - -template -class Display { - public: - Display() { - 40e: 1f 93 push r17 - 410: cf 93 push r28 - 412: df 93 push r29 -namespace avrlib { - - struct portg - { - static uint8_t port() { return PORTG; } - static void port(uint8_t v) { PORTG = v; } - 414: a1 98 cbi 0x14, 1 ; 20 - - static uint8_t pin() { return PING; } - static void pin(uint8_t v) { PING = v; } - - static uint8_t dir() { return DDRG; } - static void dir(uint8_t v) { DDRG = v; } - 416: 99 9a sbi 0x13, 1 ; 19 - 418: 40 9a sbi 0x08, 0 ; 8 - - 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; } - 41a: 38 9a sbi 0x07, 0 ; 7 -namespace avrlib { - - struct portg - { - static uint8_t port() { return PORTG; } - static void port(uint8_t v) { PORTG = v; } - 41c: a0 98 cbi 0x14, 0 ; 20 - - static uint8_t pin() { return PING; } - static void pin(uint8_t v) { PING = v; } - - static uint8_t dir() { return DDRG; } - static void dir(uint8_t v) { DDRG = v; } - 41e: 98 9a sbi 0x13, 0 ; 19 - - static uint8_t pin() { return PINL; } - static void pin(uint8_t v) { PINL = v; } - - static uint8_t dir() { return DDRL; } - 420: ea e0 ldi r30, 0x0A ; 10 - 422: f1 e0 ldi r31, 0x01 ; 1 - 424: 80 81 ld r24, Z - static bool value() { return (Port::pin() & (1<setValue(0); - } - void setValue(uint8_t wert) { - OCR5AL = wert; - 43c: 18 82 st Y, r1 - static void port(uint8_t v) { PORTL = v; } - - static uint8_t pin() { return PINL; } - static void pin(uint8_t v) { PINL = v; } - - static uint8_t dir() { return DDRL; } - 43e: 80 81 ld r24, Z - 440: 80 68 ori r24, 0x80 ; 128 - static void dir(uint8_t v) { DDRL = v; } - 442: 80 83 st Z, r24 - static void port(uint8_t v) { PORTL = v; } - - static uint8_t pin() { return PINL; } - static void pin(uint8_t v) { PINL = v; } - - static uint8_t dir() { return DDRL; } - 444: 80 81 ld r24, Z - 446: 80 64 ori r24, 0x40 ; 64 - static void dir(uint8_t v) { DDRL = v; } - 448: 80 83 st Z, r24 - static void port(uint8_t v) { PORTL = v; } - - static uint8_t pin() { return PINL; } - static void pin(uint8_t v) { PINL = v; } - - static uint8_t dir() { return DDRL; } - 44a: 80 81 ld r24, Z - 44c: 80 62 ori r24, 0x20 ; 32 - static void dir(uint8_t v) { DDRL = v; } - 44e: 80 83 st Z, r24 - - static uint8_t pin() { return PIND; } - static void pin(uint8_t v) { PIND = v; } - - static uint8_t dir() { return DDRD; } - static void dir(uint8_t v) { DDRD = v; } - 450: 1f ef ldi r17, 0xFF ; 255 - 452: 1a b9 out 0x0a, r17 ; 10 - 454: 8f ef ldi r24, 0xFF ; 255 - 456: 99 ef ldi r25, 0xF9 ; 249 - 458: 01 97 sbiw r24, 0x01 ; 1 - 45a: f1 f7 brne .-4 ; 0x458 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x4a> - 45c: 00 c0 rjmp .+0 ; 0x45e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x50> - 45e: 00 00 nop +000004b0 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv>: + 4b0: 8f ef ldi r24, 0xFF ; 255 + 4b2: 99 ef ldi r25, 0xF9 ; 249 + 4b4: 01 97 sbiw r24, 0x01 ; 1 + 4b6: f1 f7 brne .-4 ; 0x4b4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x4> + 4b8: 00 c0 rjmp .+0 ; 0x4ba <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0xa> + 4ba: 00 00 nop const typedef avrlib::pin prw; const typedef avrlib::pin prs; void init() { _delay_ms(16); this->setInstruction(0x38); - 460: 88 e3 ldi r24, 0x38 ; 56 - 462: 0e 94 04 01 call 0x208 ; 0x208 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.26> - 466: 8f e1 ldi r24, 0x1F ; 31 - 468: 9e e4 ldi r25, 0x4E ; 78 - 46a: 01 97 sbiw r24, 0x01 ; 1 - 46c: f1 f7 brne .-4 ; 0x46a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x5c> - 46e: 00 c0 rjmp .+0 ; 0x470 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x62> - 470: 00 00 nop + 4bc: 88 e3 ldi r24, 0x38 ; 56 + 4be: 0e 94 01 01 call 0x202 ; 0x202 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.20> + 4c2: 8f e1 ldi r24, 0x1F ; 31 + 4c4: 9e e4 ldi r25, 0x4E ; 78 + 4c6: 01 97 sbiw r24, 0x01 ; 1 + 4c8: f1 f7 brne .-4 ; 0x4c6 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x16> + 4ca: 00 c0 rjmp .+0 ; 0x4cc <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x1c> + 4cc: 00 00 nop _delay_ms(5); this->toggleE(); - 472: 0e 94 f5 00 call 0x1ea ; 0x1ea <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5> + 4ce: 0e 94 f2 00 call 0x1e4 ; 0x1e4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.4> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 476: 8f ed ldi r24, 0xDF ; 223 - 478: 91 e0 ldi r25, 0x01 ; 1 - 47a: 01 97 sbiw r24, 0x01 ; 1 - 47c: f1 f7 brne .-4 ; 0x47a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x6c> - 47e: 00 c0 rjmp .+0 ; 0x480 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x72> - 480: 00 00 nop + 4d2: 8f ed ldi r24, 0xDF ; 223 + 4d4: 91 e0 ldi r25, 0x01 ; 1 + 4d6: 01 97 sbiw r24, 0x01 ; 1 + 4d8: f1 f7 brne .-4 ; 0x4d6 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x26> + 4da: 00 c0 rjmp .+0 ; 0x4dc <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x2c> + 4dc: 00 00 nop _delay_us(120); this->toggleE(); - 482: 0e 94 f5 00 call 0x1ea ; 0x1ea <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5> - 486: 8f ed ldi r24, 0xDF ; 223 - 488: 91 e0 ldi r25, 0x01 ; 1 - 48a: 01 97 sbiw r24, 0x01 ; 1 - 48c: f1 f7 brne .-4 ; 0x48a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x7c> - 48e: 00 c0 rjmp .+0 ; 0x490 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x82> - 490: 00 00 nop + 4de: 0e 94 f2 00 call 0x1e4 ; 0x1e4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.4> + 4e2: 8f ed ldi r24, 0xDF ; 223 + 4e4: 91 e0 ldi r25, 0x01 ; 1 + 4e6: 01 97 sbiw r24, 0x01 ; 1 + 4e8: f1 f7 brne .-4 ; 0x4e6 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x36> + 4ea: 00 c0 rjmp .+0 ; 0x4ec <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x3c> + 4ec: 00 00 nop _delay_us(120); this->toggleE(); - 492: 0e 94 f5 00 call 0x1ea ; 0x1ea <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5> - 496: 8f ed ldi r24, 0xDF ; 223 - 498: 91 e0 ldi r25, 0x01 ; 1 - 49a: 01 97 sbiw r24, 0x01 ; 1 - 49c: f1 f7 brne .-4 ; 0x49a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x8c> - 49e: 00 c0 rjmp .+0 ; 0x4a0 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x92> - 4a0: 00 00 nop + 4ee: 0e 94 f2 00 call 0x1e4 ; 0x1e4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.4> + 4f2: 8f ed ldi r24, 0xDF ; 223 + 4f4: 91 e0 ldi r25, 0x01 ; 1 + 4f6: 01 97 sbiw r24, 0x01 ; 1 + 4f8: f1 f7 brne .-4 ; 0x4f6 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x46> + 4fa: 00 c0 rjmp .+0 ; 0x4fc <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x4c> + 4fc: 00 00 nop void setBacklight(uint8_t level) { backlight.setValue(level); } void off() { this->setInstruction(0b00000000); - 4a2: 80 e0 ldi r24, 0x00 ; 0 - 4a4: 0e 94 04 01 call 0x208 ; 0x208 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.26> + 4fe: 80 e0 ldi r24, 0x00 ; 0 + 500: 0e 94 01 01 call 0x202 ; 0x202 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.20> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 4a8: 8f e3 ldi r24, 0x3F ; 63 - 4aa: 9f e1 ldi r25, 0x1F ; 31 - 4ac: 01 97 sbiw r24, 0x01 ; 1 - 4ae: f1 f7 brne .-4 ; 0x4ac <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x9e> - 4b0: 00 c0 rjmp .+0 ; 0x4b2 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0xa4> - 4b2: 00 00 nop + 504: 8f e3 ldi r24, 0x3F ; 63 + 506: 9f e1 ldi r25, 0x1F ; 31 + 508: 01 97 sbiw r24, 0x01 ; 1 + 50a: f1 f7 brne .-4 ; 0x508 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x58> + 50c: 00 c0 rjmp .+0 ; 0x50e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x5e> + 50e: 00 00 nop _delay_us(120); this->toggleE(); _delay_us(120); this->off(); this->clear(); - 4b4: 0e 94 0f 01 call 0x21e ; 0x21e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.30> + 510: 0e 94 0c 01 call 0x218 ; 0x218 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.24> this->setContrastMax(); this->setBacklightMax(); } void entrymode() { this->setInstruction(0b00000100); - 4b8: 84 e0 ldi r24, 0x04 ; 4 - 4ba: 0e 94 04 01 call 0x208 ; 0x208 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.26> - 4be: 9f ef ldi r25, 0xFF ; 255 - 4c0: 21 ee ldi r18, 0xE1 ; 225 - 4c2: 84 e0 ldi r24, 0x04 ; 4 - 4c4: 91 50 subi r25, 0x01 ; 1 - 4c6: 20 40 sbci r18, 0x00 ; 0 - 4c8: 80 40 sbci r24, 0x00 ; 0 - 4ca: e1 f7 brne .-8 ; 0x4c4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0xb6> - 4cc: 00 c0 rjmp .+0 ; 0x4ce <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0xc0> - 4ce: 00 00 nop + 514: 84 e0 ldi r24, 0x04 ; 4 + 516: 0e 94 01 01 call 0x202 ; 0x202 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.20> + 51a: 9f ef ldi r25, 0xFF ; 255 + 51c: 21 ee ldi r18, 0xE1 ; 225 + 51e: 84 e0 ldi r24, 0x04 ; 4 + 520: 91 50 subi r25, 0x01 ; 1 + 522: 20 40 sbci r18, 0x00 ; 0 + 524: 80 40 sbci r24, 0x00 ; 0 + 526: e1 f7 brne .-8 ; 0x520 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x70> + 528: 00 c0 rjmp .+0 ; 0x52a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x7a> + 52a: 00 00 nop this->setInstruction(0b00000001); _delay_ms(2); } void on() { this->setInstruction(0b00001100); - 4d0: 8c e0 ldi r24, 0x0C ; 12 - 4d2: 0e 94 04 01 call 0x208 ; 0x208 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.26> - 4d6: 8f e3 ldi r24, 0x3F ; 63 - 4d8: 9f e1 ldi r25, 0x1F ; 31 - 4da: 01 97 sbiw r24, 0x01 ; 1 - 4dc: f1 f7 brne .-4 ; 0x4da <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0xcc> - 4de: 00 c0 rjmp .+0 ; 0x4e0 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0xd2> - 4e0: 00 00 nop + 52c: 8c e0 ldi r24, 0x0C ; 12 + 52e: 0e 94 01 01 call 0x202 ; 0x202 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.20> + 532: 8f e3 ldi r24, 0x3F ; 63 + 534: 9f e1 ldi r25, 0x1F ; 31 + 536: 01 97 sbiw r24, 0x01 ; 1 + 538: f1 f7 brne .-4 ; 0x536 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x86> + 53a: 00 c0 rjmp .+0 ; 0x53c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x8c> + 53c: 00 00 nop this->clear(); this->entrymode(); _delay_ms(100); this->on(); this->clear(); - 4e2: 0e 94 0f 01 call 0x21e ; 0x21e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.30> + 53e: 0e 94 0c 01 call 0x218 ; 0x218 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.24> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 542: 40 98 cbi 0x08, 0 ; 8 + void CSOff() { + cs::set(); } - void on() { - this->digitalPotWrite(this->MAX); - 4e6: 80 e0 ldi r24, 0x00 ; 0 - 4e8: 91 e0 ldi r25, 0x01 ; 1 - 4ea: 0e 94 c6 00 call 0x18c ; 0x18c <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE15digitalPotWriteEj.isra.50> - 4ee: 18 83 st Y, r17 + void digitalPotWrite(uint16_t value) { + this->CSOn(); + this->send_soft((value>>8)&0b00000001); //high byte least significant bit + 544: 81 e0 ldi r24, 0x01 ; 1 + 546: 0e 94 be 00 call 0x17c ; 0x17c <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49> + this->send_soft(value & 0xff); + 54a: 80 e0 ldi r24, 0x00 ; 0 + 54c: 0e 94 be 00 call 0x17c ; 0x17c <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49> + 550: 40 9a sbi 0x08, 0 ; 8 + } + void off() { + this->setValue(0); + } + void setValue(uint8_t wert) { + OCR5AL = wert; + 552: 8f ef ldi r24, 0xFF ; 255 + 554: 80 93 28 01 sts 0x0128, r24 + 558: 08 95 ret + +0000055a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev>: +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 55a: a1 98 cbi 0x14, 1 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 55c: 99 9a sbi 0x13, 1 ; 19 + 55e: 40 9a sbi 0x08, 0 ; 8 + + 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; } + 560: 38 9a sbi 0x07, 0 ; 7 +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 562: a0 98 cbi 0x14, 0 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 564: 98 9a sbi 0x13, 0 ; 19 + + static uint8_t pin() { return PINL; } + static void pin(uint8_t v) { PINL = v; } + + static uint8_t dir() { return DDRL; } + 566: ea e0 ldi r30, 0x0A ; 10 + 568: f1 e0 ldi r31, 0x01 ; 1 + 56a: 20 81 ld r18, Z + static bool value() { return (Port::pin() & (1<setValue(0); + } + void setValue(uint8_t wert) { + OCR5AL = wert; + 582: 1c 92 st X, r1 + static void port(uint8_t v) { PORTL = v; } + + static uint8_t pin() { return PINL; } + static void pin(uint8_t v) { PINL = v; } + + static uint8_t dir() { return DDRL; } + 584: 20 81 ld r18, Z + 586: 20 68 ori r18, 0x80 ; 128 + static void dir(uint8_t v) { DDRL = v; } + 588: 20 83 st Z, r18 + static void port(uint8_t v) { PORTL = v; } + + static uint8_t pin() { return PINL; } + static void pin(uint8_t v) { PINL = v; } + + static uint8_t dir() { return DDRL; } + 58a: 20 81 ld r18, Z + 58c: 20 64 ori r18, 0x40 ; 64 + static void dir(uint8_t v) { DDRL = v; } + 58e: 20 83 st Z, r18 + static void port(uint8_t v) { PORTL = v; } + + static uint8_t pin() { return PINL; } + static void pin(uint8_t v) { PINL = v; } + + static uint8_t dir() { return DDRL; } + 590: 20 81 ld r18, Z + 592: 20 62 ori r18, 0x20 ; 32 + static void dir(uint8_t v) { DDRL = v; } + 594: 20 83 st Z, r18 + + static uint8_t pin() { return PIND; } + static void pin(uint8_t v) { PIND = v; } + + static uint8_t dir() { return DDRD; } + static void dir(uint8_t v) { DDRD = v; } + 596: 2f ef ldi r18, 0xFF ; 255 + 598: 2a b9 out 0x0a, r18 ; 10 + Display() { pen::make_output(); prw::make_output(); prs::make_output(); PortData::dir(0xFF); this->init(); - } - 4f0: df 91 pop r29 - 4f2: cf 91 pop r28 - 4f4: 1f 91 pop r17 - 4f6: 08 95 ret + 59a: 0c 94 58 02 jmp 0x4b0 ; 0x4b0 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv> -000004f8 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4initEv>: - 4f8: 2f ef ldi r18, 0xFF ; 255 - 4fa: 81 ee ldi r24, 0xE1 ; 225 - 4fc: 94 e0 ldi r25, 0x04 ; 4 - 4fe: 21 50 subi r18, 0x01 ; 1 - 500: 80 40 sbci r24, 0x00 ; 0 - 502: 90 40 sbci r25, 0x00 ; 0 - 504: e1 f7 brne .-8 ; 0x4fe <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4initEv+0x6> - 506: 00 c0 rjmp .+0 ; 0x508 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4initEv+0x10> - 508: 00 00 nop - return werti; - } - void init(void) { - _delay_ms(100); - - this->send(0xC020); // AVR CLK: 10MHz - 50a: 80 e2 ldi r24, 0x20 ; 32 - 50c: 90 ec ldi r25, 0xC0 ; 192 - 50e: 0e 94 b0 01 call 0x360 ; 0x360 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4sendEj.isra.39> - this->send(0x80D7); // Enable FIFO - 512: 87 ed ldi r24, 0xD7 ; 215 - 514: 90 e8 ldi r25, 0x80 ; 128 - 516: 0e 94 b0 01 call 0x360 ; 0x360 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4sendEj.isra.39> - this->send(0xC2AB); // Data Filter: internal - 51a: 8b ea ldi r24, 0xAB ; 171 - 51c: 92 ec ldi r25, 0xC2 ; 194 - 51e: 0e 94 b0 01 call 0x360 ; 0x360 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4sendEj.isra.39> - this->send(0xCA81); // Set FIFO mode - 522: 81 e8 ldi r24, 0x81 ; 129 - 524: 9a ec ldi r25, 0xCA ; 202 - 526: 0e 94 b0 01 call 0x360 ; 0x360 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4sendEj.isra.39> - this->send(0xE000); // disable wakeuptimer - 52a: 80 e0 ldi r24, 0x00 ; 0 - 52c: 90 ee ldi r25, 0xE0 ; 224 - 52e: 0e 94 b0 01 call 0x360 ; 0x360 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4sendEj.isra.39> - this->send(0xC800); // disable low duty cycle - 532: 80 e0 ldi r24, 0x00 ; 0 - 534: 98 ec ldi r25, 0xC8 ; 200 - 536: 0e 94 b0 01 call 0x360 ; 0x360 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4sendEj.isra.39> - 53a: 2f ef ldi r18, 0xFF ; 255 - 53c: 87 ea ldi r24, 0xA7 ; 167 - 53e: 91 e6 ldi r25, 0x61 ; 97 - 540: 21 50 subi r18, 0x01 ; 1 - 542: 80 40 sbci r24, 0x00 ; 0 - 544: 90 40 sbci r25, 0x00 ; 0 - 546: e1 f7 brne .-8 ; 0x540 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4initEv+0x48> - 548: 00 c0 rjmp .+0 ; 0x54a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4initEv+0x52> - 54a: 00 00 nop - _delay_ms(2000); - d.clear(); - 54c: 0e 94 0f 01 call 0x21e ; 0x21e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.30> - this->send(0xC4F7); // AFC settings: autotuning: -10kHz...+7,5kHz - 550: 87 ef ldi r24, 0xF7 ; 247 - 552: 94 ec ldi r25, 0xC4 ; 196 - 554: 0e 94 b0 01 call 0x360 ; 0x360 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4sendEj.isra.39> - if( freq < 96 ) { // 430,2400MHz - this->send( 0xA000 | 96 ); - } else if( freq > 3903 ) { // 439,7575MHz - this->send( 0xA000 | 3903 ); - } - this->send( 0xA000 | freq ); - 558: 80 e2 ldi r24, 0x20 ; 32 - 55a: 96 ea ldi r25, 0xA6 ; 166 - 55c: 0e 94 b0 01 call 0x360 ; 0x360 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4sendEj.isra.39> - this->setpower(); // 1mW Ausgangsleistung, 120kHz Frequenzshift - _delay_ms(2000); - d.clear(); - } - void setbandwidth() { - this->send( 0x9400 | ( ( bandwidth & 7 ) << 5 ) | ( ( gain & 3 ) << 3 ) | ( drssi & 7 ) ); - 560: 87 e2 ldi r24, 0x27 ; 39 - 562: 94 e9 ldi r25, 0x94 ; 148 - 564: 0e 94 b0 01 call 0x360 ; 0x360 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4sendEj.isra.39> - return; - } - if (baud < 5400) { // Baudrate= 344827,58621/(R+1)/(1+CS*7) - this->send(0xC680 | ( ( 43104 / baud ) - 1 ) ); - } else { - this->send(0xC600 | ( ( 344828UL / baud ) - 1 ) ); - 568: 82 e2 ldi r24, 0x22 ; 34 - 56a: 96 ec ldi r25, 0xC6 ; 198 - 56c: 0e 94 b0 01 call 0x360 ; 0x360 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4sendEj.isra.39> - } - } - void setpower() { - this->send( 0x9800 | ( power & 7 ) | ( ( mod & 15 ) << 4 ) ); - 570: 80 e6 ldi r24, 0x60 ; 96 - 572: 98 e9 ldi r25, 0x98 ; 152 - 574: 0e 94 b0 01 call 0x360 ; 0x360 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4sendEj.isra.39> - 578: 2f ef ldi r18, 0xFF ; 255 - 57a: 87 ea ldi r24, 0xA7 ; 167 - 57c: 91 e6 ldi r25, 0x61 ; 97 - 57e: 21 50 subi r18, 0x01 ; 1 - 580: 80 40 sbci r24, 0x00 ; 0 - 582: 90 40 sbci r25, 0x00 ; 0 - 584: e1 f7 brne .-8 ; 0x57e <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4initEv+0x86> - 586: 00 c0 rjmp .+0 ; 0x588 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4initEv+0x90> - 588: 00 00 nop - this->setfreq(); // Sende/Empfangsfrequenz auf 433,92MHz einstellen - this->setbandwidth(); // 400kHz Bandbreite, 0dB Verstärkung, DRSSI threshold: -61dBm - this->setbaud(); // 19200 baud - this->setpower(); // 1mW Ausgangsleistung, 120kHz Frequenzshift - _delay_ms(2000); - d.clear(); - 58a: 0c 94 0f 01 jmp 0x21e ; 0x21e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.30> - -0000058e <_GLOBAL__sub_I_d>: +0000059e <_GLOBAL__sub_I_d>: uint8_t addr = r.rxbyte(); d.printHex(addr); d.lputs(" Addr");*/ _delay_ms(500); } - 58e: 0f 93 push r16 - 590: 1f 93 push r17 - 592: cf 93 push r28 - 594: df 93 push r29 + 59e: 0f 93 push r16 + 5a0: 1f 93 push r17 + 5a2: cf 93 push r28 + 5a4: df 93 push r29 PINL7, PINL6, PINL5 > displayclass; displayclass d; - 596: 87 e0 ldi r24, 0x07 ; 7 - 598: 92 e0 ldi r25, 0x02 ; 2 - 59a: 0e 94 07 02 call 0x40e ; 0x40e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev> - -namespace avrlib { - - struct portj - { - static uint8_t port() { return PORTJ; } - 59e: 05 e0 ldi r16, 0x05 ; 5 - 5a0: 11 e0 ldi r17, 0x01 ; 1 - 5a2: f8 01 movw r30, r16 - 5a4: 80 81 ld r24, Z - static void set(bool value = true) - { - if (value) - Port::port(Port::port() | (1< - static void port(uint8_t v) { PORTJ = v; } - - static uint8_t pin() { return PINJ; } - static void pin(uint8_t v) { PINJ = v; } - - static uint8_t dir() { return DDRJ; } - 5c4: 88 81 ld r24, Y - 5c6: 80 61 ori r24, 0x10 ; 16 - static void dir(uint8_t v) { DDRJ = v; } - 5c8: 88 83 st Y, r24 - static void port(uint8_t v) { PORTJ = v; } - - static uint8_t pin() { return PINJ; } - static void pin(uint8_t v) { PINJ = v; } - - static uint8_t dir() { return DDRJ; } - 5ca: 88 81 ld r24, Y - else - Port::dir(Port::dir() & ~(1< +#define RFM12_H_ template class Rfm12B { public: Rfm12B() { - this->init(); - 5d8: 86 e0 ldi r24, 0x06 ; 6 - 5da: 92 e0 ldi r25, 0x02 ; 2 - 5dc: df 91 pop r29 - 5de: cf 91 pop r28 - 5e0: 1f 91 pop r17 - 5e2: 0f 91 pop r16 - 5e4: 0c 94 7c 02 jmp 0x4f8 ; 0x4f8 <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4initEv> + 5ae: 10 92 06 02 sts 0x0206, r1 + 5b2: 10 92 07 02 sts 0x0207, r1 -000005e8 <__tablejump_elpm__>: - 5e8: 07 90 elpm r0, Z+ - 5ea: f6 91 elpm r31, Z - 5ec: e0 2d mov r30, r0 - 5ee: 19 94 eijmp +namespace avrlib { -000005f0 : - 5f0: 0f 93 push r16 - 5f2: 1f 93 push r17 - 5f4: cf 93 push r28 - 5f6: df 93 push r29 - 5f8: cd b7 in r28, 0x3d ; 61 - 5fa: de b7 in r29, 0x3e ; 62 - 5fc: 2e 97 sbiw r28, 0x0e ; 14 - 5fe: 0f b6 in r0, 0x3f ; 63 - 600: f8 94 cli - 602: de bf out 0x3e, r29 ; 62 - 604: 0f be out 0x3f, r0 ; 63 - 606: cd bf out 0x3d, r28 ; 61 - 608: 0e 89 ldd r16, Y+22 ; 0x16 - 60a: 1f 89 ldd r17, Y+23 ; 0x17 - 60c: 86 e0 ldi r24, 0x06 ; 6 - 60e: 8c 83 std Y+4, r24 ; 0x04 - 610: 1a 83 std Y+2, r17 ; 0x02 - 612: 09 83 std Y+1, r16 ; 0x01 - 614: 8f ef ldi r24, 0xFF ; 255 - 616: 9f e7 ldi r25, 0x7F ; 127 - 618: 9e 83 std Y+6, r25 ; 0x06 - 61a: 8d 83 std Y+5, r24 ; 0x05 - 61c: ce 01 movw r24, r28 - 61e: 4a 96 adiw r24, 0x1a ; 26 - 620: ac 01 movw r20, r24 - 622: 68 8d ldd r22, Y+24 ; 0x18 - 624: 79 8d ldd r23, Y+25 ; 0x19 - 626: ce 01 movw r24, r28 - 628: 01 96 adiw r24, 0x01 ; 1 - 62a: 0e 94 27 03 call 0x64e ; 0x64e - 62e: ef 81 ldd r30, Y+7 ; 0x07 - 630: f8 85 ldd r31, Y+8 ; 0x08 - 632: e0 0f add r30, r16 - 634: f1 1f adc r31, r17 - 636: 10 82 st Z, r1 - 638: 2e 96 adiw r28, 0x0e ; 14 - 63a: 0f b6 in r0, 0x3f ; 63 - 63c: f8 94 cli - 63e: de bf out 0x3e, r29 ; 62 - 640: 0f be out 0x3f, r0 ; 63 - 642: cd bf out 0x3d, r28 ; 61 - 644: df 91 pop r29 - 646: cf 91 pop r28 - 648: 1f 91 pop r17 - 64a: 0f 91 pop r16 - 64c: 08 95 ret + struct portj + { + static uint8_t port() { return PORTJ; } + 5b6: 05 e0 ldi r16, 0x05 ; 5 + 5b8: 11 e0 ldi r17, 0x01 ; 1 + 5ba: f8 01 movw r30, r16 + 5bc: 80 81 ld r24, Z + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1<: - 64e: 2f 92 push r2 - 650: 3f 92 push r3 - 652: 4f 92 push r4 - 654: 5f 92 push r5 - 656: 6f 92 push r6 - 658: 7f 92 push r7 - 65a: 8f 92 push r8 - 65c: 9f 92 push r9 - 65e: af 92 push r10 - 660: bf 92 push r11 - 662: cf 92 push r12 - 664: df 92 push r13 - 666: ef 92 push r14 - 668: ff 92 push r15 - 66a: 0f 93 push r16 - 66c: 1f 93 push r17 - 66e: cf 93 push r28 - 670: df 93 push r29 - 672: cd b7 in r28, 0x3d ; 61 - 674: de b7 in r29, 0x3e ; 62 - 676: 2c 97 sbiw r28, 0x0c ; 12 - 678: 0f b6 in r0, 0x3f ; 63 - 67a: f8 94 cli - 67c: de bf out 0x3e, r29 ; 62 - 67e: 0f be out 0x3f, r0 ; 63 - 680: cd bf out 0x3d, r28 ; 61 - 682: 7c 01 movw r14, r24 - 684: 6b 01 movw r12, r22 - 686: 8a 01 movw r16, r20 - 688: fc 01 movw r30, r24 - 68a: 17 82 std Z+7, r1 ; 0x07 - 68c: 16 82 std Z+6, r1 ; 0x06 - 68e: 83 81 ldd r24, Z+3 ; 0x03 - 690: 81 ff sbrs r24, 1 - 692: c6 c1 rjmp .+908 ; 0xa20 - 694: 88 24 eor r8, r8 - 696: 83 94 inc r8 - 698: 91 2c mov r9, r1 - 69a: 8c 0e add r8, r28 - 69c: 9d 1e adc r9, r29 - 69e: f7 01 movw r30, r14 - 6a0: 93 81 ldd r25, Z+3 ; 0x03 - 6a2: f6 01 movw r30, r12 - 6a4: 93 fd sbrc r25, 3 - 6a6: 85 91 lpm r24, Z+ - 6a8: 93 ff sbrs r25, 3 - 6aa: 81 91 ld r24, Z+ - 6ac: 6f 01 movw r12, r30 - 6ae: 88 23 and r24, r24 - 6b0: 09 f4 brne .+2 ; 0x6b4 - 6b2: b2 c1 rjmp .+868 ; 0xa18 - 6b4: 85 32 cpi r24, 0x25 ; 37 - 6b6: 39 f4 brne .+14 ; 0x6c6 - 6b8: 93 fd sbrc r25, 3 - 6ba: 85 91 lpm r24, Z+ - 6bc: 93 ff sbrs r25, 3 - 6be: 81 91 ld r24, Z+ - 6c0: 6f 01 movw r12, r30 - 6c2: 85 32 cpi r24, 0x25 ; 37 - 6c4: 29 f4 brne .+10 ; 0x6d0 - 6c6: b7 01 movw r22, r14 - 6c8: 90 e0 ldi r25, 0x00 ; 0 - 6ca: 0e 94 42 05 call 0xa84 ; 0xa84 - 6ce: e7 cf rjmp .-50 ; 0x69e - 6d0: 51 2c mov r5, r1 - 6d2: 31 2c mov r3, r1 - 6d4: 20 e0 ldi r18, 0x00 ; 0 - 6d6: 20 32 cpi r18, 0x20 ; 32 - 6d8: a8 f4 brcc .+42 ; 0x704 - 6da: 8b 32 cpi r24, 0x2B ; 43 - 6dc: 61 f0 breq .+24 ; 0x6f6 - 6de: 28 f4 brcc .+10 ; 0x6ea - 6e0: 80 32 cpi r24, 0x20 ; 32 - 6e2: 51 f0 breq .+20 ; 0x6f8 - 6e4: 83 32 cpi r24, 0x23 ; 35 - 6e6: 71 f4 brne .+28 ; 0x704 - 6e8: 0b c0 rjmp .+22 ; 0x700 - 6ea: 8d 32 cpi r24, 0x2D ; 45 - 6ec: 39 f0 breq .+14 ; 0x6fc - 6ee: 80 33 cpi r24, 0x30 ; 48 - 6f0: 49 f4 brne .+18 ; 0x704 - 6f2: 21 60 ori r18, 0x01 ; 1 - 6f4: 28 c0 rjmp .+80 ; 0x746 - 6f6: 22 60 ori r18, 0x02 ; 2 - 6f8: 24 60 ori r18, 0x04 ; 4 - 6fa: 25 c0 rjmp .+74 ; 0x746 - 6fc: 28 60 ori r18, 0x08 ; 8 - 6fe: 23 c0 rjmp .+70 ; 0x746 - 700: 20 61 ori r18, 0x10 ; 16 - 702: 21 c0 rjmp .+66 ; 0x746 - 704: 27 fd sbrc r18, 7 - 706: 27 c0 rjmp .+78 ; 0x756 - 708: 38 2f mov r19, r24 - 70a: 30 53 subi r19, 0x30 ; 48 - 70c: 3a 30 cpi r19, 0x0A ; 10 - 70e: 78 f4 brcc .+30 ; 0x72e - 710: 26 ff sbrs r18, 6 - 712: 06 c0 rjmp .+12 ; 0x720 - 714: fa e0 ldi r31, 0x0A ; 10 - 716: 5f 9e mul r5, r31 - 718: 30 0d add r19, r0 - 71a: 11 24 eor r1, r1 - 71c: 53 2e mov r5, r19 - 71e: 13 c0 rjmp .+38 ; 0x746 - 720: 8a e0 ldi r24, 0x0A ; 10 - 722: 38 9e mul r3, r24 - 724: 30 0d add r19, r0 - 726: 11 24 eor r1, r1 - 728: 33 2e mov r3, r19 - 72a: 20 62 ori r18, 0x20 ; 32 - 72c: 0c c0 rjmp .+24 ; 0x746 - 72e: 8e 32 cpi r24, 0x2E ; 46 - 730: 21 f4 brne .+8 ; 0x73a - 732: 26 fd sbrc r18, 6 - 734: 71 c1 rjmp .+738 ; 0xa18 - 736: 20 64 ori r18, 0x40 ; 64 - 738: 06 c0 rjmp .+12 ; 0x746 - 73a: 8c 36 cpi r24, 0x6C ; 108 - 73c: 11 f4 brne .+4 ; 0x742 - 73e: 20 68 ori r18, 0x80 ; 128 - 740: 02 c0 rjmp .+4 ; 0x746 - 742: 88 36 cpi r24, 0x68 ; 104 - 744: 41 f4 brne .+16 ; 0x756 - 746: f6 01 movw r30, r12 - 748: 93 fd sbrc r25, 3 - 74a: 85 91 lpm r24, Z+ - 74c: 93 ff sbrs r25, 3 - 74e: 81 91 ld r24, Z+ - 750: 6f 01 movw r12, r30 - 752: 81 11 cpse r24, r1 - 754: c0 cf rjmp .-128 ; 0x6d6 - 756: 98 2f mov r25, r24 - 758: 95 54 subi r25, 0x45 ; 69 - 75a: 93 30 cpi r25, 0x03 ; 3 - 75c: 18 f0 brcs .+6 ; 0x764 - 75e: 90 52 subi r25, 0x20 ; 32 - 760: 93 30 cpi r25, 0x03 ; 3 - 762: 28 f4 brcc .+10 ; 0x76e - 764: 0c 5f subi r16, 0xFC ; 252 - 766: 1f 4f sbci r17, 0xFF ; 255 - 768: ff e3 ldi r31, 0x3F ; 63 - 76a: f9 83 std Y+1, r31 ; 0x01 - 76c: 0d c0 rjmp .+26 ; 0x788 - 76e: 83 36 cpi r24, 0x63 ; 99 - 770: 31 f0 breq .+12 ; 0x77e - 772: 83 37 cpi r24, 0x73 ; 115 - 774: 71 f0 breq .+28 ; 0x792 - 776: 83 35 cpi r24, 0x53 ; 83 - 778: 09 f0 breq .+2 ; 0x77c - 77a: 5e c0 rjmp .+188 ; 0x838 - 77c: 23 c0 rjmp .+70 ; 0x7c4 - 77e: f8 01 movw r30, r16 - 780: 80 81 ld r24, Z - 782: 89 83 std Y+1, r24 ; 0x01 - 784: 0e 5f subi r16, 0xFE ; 254 - 786: 1f 4f sbci r17, 0xFF ; 255 - 788: 44 24 eor r4, r4 - 78a: 43 94 inc r4 - 78c: 51 2c mov r5, r1 - 78e: 54 01 movw r10, r8 - 790: 15 c0 rjmp .+42 ; 0x7bc - 792: 38 01 movw r6, r16 - 794: f2 e0 ldi r31, 0x02 ; 2 - 796: 6f 0e add r6, r31 - 798: 71 1c adc r7, r1 - 79a: f8 01 movw r30, r16 - 79c: a0 80 ld r10, Z - 79e: b1 80 ldd r11, Z+1 ; 0x01 - 7a0: 26 ff sbrs r18, 6 - 7a2: 03 c0 rjmp .+6 ; 0x7aa - 7a4: 65 2d mov r22, r5 - 7a6: 70 e0 ldi r23, 0x00 ; 0 - 7a8: 02 c0 rjmp .+4 ; 0x7ae - 7aa: 6f ef ldi r22, 0xFF ; 255 - 7ac: 7f ef ldi r23, 0xFF ; 255 - 7ae: c5 01 movw r24, r10 - 7b0: 2c 87 std Y+12, r18 ; 0x0c - 7b2: 0e 94 37 05 call 0xa6e ; 0xa6e - 7b6: 2c 01 movw r4, r24 - 7b8: 83 01 movw r16, r6 - 7ba: 2c 85 ldd r18, Y+12 ; 0x0c - 7bc: 6f e7 ldi r22, 0x7F ; 127 - 7be: 26 2e mov r2, r22 - 7c0: 22 22 and r2, r18 - 7c2: 18 c0 rjmp .+48 ; 0x7f4 - 7c4: 38 01 movw r6, r16 - 7c6: f2 e0 ldi r31, 0x02 ; 2 - 7c8: 6f 0e add r6, r31 - 7ca: 71 1c adc r7, r1 - 7cc: f8 01 movw r30, r16 - 7ce: a0 80 ld r10, Z - 7d0: b1 80 ldd r11, Z+1 ; 0x01 - 7d2: 26 ff sbrs r18, 6 - 7d4: 03 c0 rjmp .+6 ; 0x7dc - 7d6: 65 2d mov r22, r5 - 7d8: 70 e0 ldi r23, 0x00 ; 0 - 7da: 02 c0 rjmp .+4 ; 0x7e0 - 7dc: 6f ef ldi r22, 0xFF ; 255 - 7de: 7f ef ldi r23, 0xFF ; 255 - 7e0: c5 01 movw r24, r10 - 7e2: 2c 87 std Y+12, r18 ; 0x0c - 7e4: 0e 94 2c 05 call 0xa58 ; 0xa58 - 7e8: 2c 01 movw r4, r24 - 7ea: 2c 85 ldd r18, Y+12 ; 0x0c - 7ec: 50 e8 ldi r21, 0x80 ; 128 - 7ee: 25 2e mov r2, r21 - 7f0: 22 2a or r2, r18 - 7f2: 83 01 movw r16, r6 - 7f4: 23 fc sbrc r2, 3 - 7f6: 1c c0 rjmp .+56 ; 0x830 - 7f8: 06 c0 rjmp .+12 ; 0x806 - 7fa: b7 01 movw r22, r14 - 7fc: 80 e2 ldi r24, 0x20 ; 32 - 7fe: 90 e0 ldi r25, 0x00 ; 0 - 800: 0e 94 42 05 call 0xa84 ; 0xa84 - 804: 3a 94 dec r3 - 806: 83 2d mov r24, r3 - 808: 90 e0 ldi r25, 0x00 ; 0 - 80a: 48 16 cp r4, r24 - 80c: 59 06 cpc r5, r25 - 80e: a8 f3 brcs .-22 ; 0x7fa - 810: 0f c0 rjmp .+30 ; 0x830 - 812: f5 01 movw r30, r10 - 814: 27 fc sbrc r2, 7 - 816: 85 91 lpm r24, Z+ - 818: 27 fe sbrs r2, 7 - 81a: 81 91 ld r24, Z+ - 81c: 5f 01 movw r10, r30 - 81e: b7 01 movw r22, r14 - 820: 90 e0 ldi r25, 0x00 ; 0 - 822: 0e 94 42 05 call 0xa84 ; 0xa84 - 826: 31 10 cpse r3, r1 - 828: 3a 94 dec r3 - 82a: f1 e0 ldi r31, 0x01 ; 1 - 82c: 4f 1a sub r4, r31 - 82e: 51 08 sbc r5, r1 - 830: 41 14 cp r4, r1 - 832: 51 04 cpc r5, r1 - 834: 71 f7 brne .-36 ; 0x812 - 836: ed c0 rjmp .+474 ; 0xa12 - 838: 84 36 cpi r24, 0x64 ; 100 - 83a: 11 f0 breq .+4 ; 0x840 - 83c: 89 36 cpi r24, 0x69 ; 105 - 83e: 41 f5 brne .+80 ; 0x890 + static uint8_t pin() { return PINJ; } + static void pin(uint8_t v) { PINJ = v; } + + static uint8_t dir() { return DDRJ; } + 5c2: c4 e0 ldi r28, 0x04 ; 4 + 5c4: d1 e0 ldi r29, 0x01 ; 1 + 5c6: 88 81 ld r24, Y + static bool value() { return (Port::pin() & (1< + static void port(uint8_t v) { PORTJ = v; } + + static uint8_t pin() { return PINJ; } + static void pin(uint8_t v) { PINJ = v; } + + static uint8_t dir() { return DDRJ; } + 5dc: 88 81 ld r24, Y + 5de: 80 61 ori r24, 0x10 ; 16 + static void dir(uint8_t v) { DDRJ = v; } + 5e0: 88 83 st Y, r24 + static void port(uint8_t v) { PORTJ = v; } + + static uint8_t pin() { return PINJ; } + static void pin(uint8_t v) { PINJ = v; } + + static uint8_t dir() { return DDRJ; } + 5e2: 88 81 ld r24, Y + else + Port::dir(Port::dir() & ~(1< + 5f8: 00 c0 rjmp .+0 ; 0x5fa <_GLOBAL__sub_I_d+0x5c> + 5fa: 00 00 nop + * 0xC800 - 15 + * low duty off + * 0xC4F7 - 10 + * independely from VDI, +7,5 -10 rangelimit, fine mode, frequenzy offst register, calc offset + ************************************************************************/ + this->send(0xC020); + 5fc: 80 e2 ldi r24, 0x20 ; 32 + 5fe: 90 ec ldi r25, 0xC0 ; 192 + 600: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->send(0x80D7); + 604: 87 ed ldi r24, 0xD7 ; 215 + 606: 90 e8 ldi r25, 0x80 ; 128 + 608: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->send(0xC2AB); + 60c: 8b ea ldi r24, 0xAB ; 171 + 60e: 92 ec ldi r25, 0xC2 ; 194 + 610: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->send(0xCA81); + 614: 81 e8 ldi r24, 0x81 ; 129 + 616: 9a ec ldi r25, 0xCA ; 202 + 618: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->send(0xE000); + 61c: 80 e0 ldi r24, 0x00 ; 0 + 61e: 90 ee ldi r25, 0xE0 ; 224 + 620: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->send(0xC800); + 624: 80 e0 ldi r24, 0x00 ; 0 + 626: 98 ec ldi r25, 0xC8 ; 200 + 628: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->send(0xC4F7); + 62c: 87 ef ldi r24, 0xF7 ; 247 + 62e: 94 ec ldi r25, 0xC4 ; 196 + 630: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + if( freq < 96 ) { // 430,2400MHz + this->send( 0xA000 | 96 ); + } else if( freq > 3903 ) { // 439,7575MHz + this->send( 0xA000 | 3903 ); + } + this->send( 0xA000 | freq ); + 634: 80 e2 ldi r24, 0x20 ; 32 + 636: 96 ea ldi r25, 0xA6 ; 166 + 638: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + this->setbandwidth(); + this->setbaud(); + this->setpower(); + } + void setbandwidth() { + this->send( 0x9400 | ( ( bandwidth & 7 ) << 5 ) | ( ( gain & 3 ) << 3 ) | ( drssi & 5 ) ); + 63c: 85 e2 ldi r24, 0x25 ; 37 + 63e: 94 e9 ldi r25, 0x94 ; 148 + 640: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + return; + } + if (baud < 5400) { // Baudrate= 344827,58621/(R+1)/(1+CS*7) + this->send(0xC680 | ( ( 43104 / baud ) - 1 ) ); + } else { + this->send(0xC600 | ( ( 344828UL / baud ) - 1 ) ); + 644: 82 e2 ldi r24, 0x22 ; 34 + 646: 96 ec ldi r25, 0xC6 ; 198 + 648: 0e 94 ad 01 call 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + } + } + void setpower() { + this->send( 0x9800 | ( power & 7 ) | ( ( mod & 15 ) << 4 ) ); + 64c: 80 e7 ldi r24, 0x70 ; 112 + 64e: 98 e9 ldi r25, 0x98 ; 152 + 650: df 91 pop r29 + 652: cf 91 pop r28 + 654: 1f 91 pop r17 + 656: 0f 91 pop r16 + 658: 0c 94 ad 01 jmp 0x35a ; 0x35a <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33> + +0000065c <__tablejump_elpm__>: + 65c: 07 90 elpm r0, Z+ + 65e: f6 91 elpm r31, Z + 660: e0 2d mov r30, r0 + 662: 19 94 eijmp + +00000664 : + 664: 0f 93 push r16 + 666: 1f 93 push r17 + 668: cf 93 push r28 + 66a: df 93 push r29 + 66c: cd b7 in r28, 0x3d ; 61 + 66e: de b7 in r29, 0x3e ; 62 + 670: 2e 97 sbiw r28, 0x0e ; 14 + 672: 0f b6 in r0, 0x3f ; 63 + 674: f8 94 cli + 676: de bf out 0x3e, r29 ; 62 + 678: 0f be out 0x3f, r0 ; 63 + 67a: cd bf out 0x3d, r28 ; 61 + 67c: 0e 89 ldd r16, Y+22 ; 0x16 + 67e: 1f 89 ldd r17, Y+23 ; 0x17 + 680: 86 e0 ldi r24, 0x06 ; 6 + 682: 8c 83 std Y+4, r24 ; 0x04 + 684: 1a 83 std Y+2, r17 ; 0x02 + 686: 09 83 std Y+1, r16 ; 0x01 + 688: 8f ef ldi r24, 0xFF ; 255 + 68a: 9f e7 ldi r25, 0x7F ; 127 + 68c: 9e 83 std Y+6, r25 ; 0x06 + 68e: 8d 83 std Y+5, r24 ; 0x05 + 690: ce 01 movw r24, r28 + 692: 4a 96 adiw r24, 0x1a ; 26 + 694: ac 01 movw r20, r24 + 696: 68 8d ldd r22, Y+24 ; 0x18 + 698: 79 8d ldd r23, Y+25 ; 0x19 + 69a: ce 01 movw r24, r28 + 69c: 01 96 adiw r24, 0x01 ; 1 + 69e: 0e 94 61 03 call 0x6c2 ; 0x6c2 + 6a2: ef 81 ldd r30, Y+7 ; 0x07 + 6a4: f8 85 ldd r31, Y+8 ; 0x08 + 6a6: e0 0f add r30, r16 + 6a8: f1 1f adc r31, r17 + 6aa: 10 82 st Z, r1 + 6ac: 2e 96 adiw r28, 0x0e ; 14 + 6ae: 0f b6 in r0, 0x3f ; 63 + 6b0: f8 94 cli + 6b2: de bf out 0x3e, r29 ; 62 + 6b4: 0f be out 0x3f, r0 ; 63 + 6b6: cd bf out 0x3d, r28 ; 61 + 6b8: df 91 pop r29 + 6ba: cf 91 pop r28 + 6bc: 1f 91 pop r17 + 6be: 0f 91 pop r16 + 6c0: 08 95 ret + +000006c2 : + 6c2: 2f 92 push r2 + 6c4: 3f 92 push r3 + 6c6: 4f 92 push r4 + 6c8: 5f 92 push r5 + 6ca: 6f 92 push r6 + 6cc: 7f 92 push r7 + 6ce: 8f 92 push r8 + 6d0: 9f 92 push r9 + 6d2: af 92 push r10 + 6d4: bf 92 push r11 + 6d6: cf 92 push r12 + 6d8: df 92 push r13 + 6da: ef 92 push r14 + 6dc: ff 92 push r15 + 6de: 0f 93 push r16 + 6e0: 1f 93 push r17 + 6e2: cf 93 push r28 + 6e4: df 93 push r29 + 6e6: cd b7 in r28, 0x3d ; 61 + 6e8: de b7 in r29, 0x3e ; 62 + 6ea: 2c 97 sbiw r28, 0x0c ; 12 + 6ec: 0f b6 in r0, 0x3f ; 63 + 6ee: f8 94 cli + 6f0: de bf out 0x3e, r29 ; 62 + 6f2: 0f be out 0x3f, r0 ; 63 + 6f4: cd bf out 0x3d, r28 ; 61 + 6f6: 7c 01 movw r14, r24 + 6f8: 6b 01 movw r12, r22 + 6fa: 8a 01 movw r16, r20 + 6fc: fc 01 movw r30, r24 + 6fe: 17 82 std Z+7, r1 ; 0x07 + 700: 16 82 std Z+6, r1 ; 0x06 + 702: 83 81 ldd r24, Z+3 ; 0x03 + 704: 81 ff sbrs r24, 1 + 706: c6 c1 rjmp .+908 ; 0xa94 + 708: 88 24 eor r8, r8 + 70a: 83 94 inc r8 + 70c: 91 2c mov r9, r1 + 70e: 8c 0e add r8, r28 + 710: 9d 1e adc r9, r29 + 712: f7 01 movw r30, r14 + 714: 93 81 ldd r25, Z+3 ; 0x03 + 716: f6 01 movw r30, r12 + 718: 93 fd sbrc r25, 3 + 71a: 85 91 lpm r24, Z+ + 71c: 93 ff sbrs r25, 3 + 71e: 81 91 ld r24, Z+ + 720: 6f 01 movw r12, r30 + 722: 88 23 and r24, r24 + 724: 09 f4 brne .+2 ; 0x728 + 726: b2 c1 rjmp .+868 ; 0xa8c + 728: 85 32 cpi r24, 0x25 ; 37 + 72a: 39 f4 brne .+14 ; 0x73a + 72c: 93 fd sbrc r25, 3 + 72e: 85 91 lpm r24, Z+ + 730: 93 ff sbrs r25, 3 + 732: 81 91 ld r24, Z+ + 734: 6f 01 movw r12, r30 + 736: 85 32 cpi r24, 0x25 ; 37 + 738: 29 f4 brne .+10 ; 0x744 + 73a: b7 01 movw r22, r14 + 73c: 90 e0 ldi r25, 0x00 ; 0 + 73e: 0e 94 7c 05 call 0xaf8 ; 0xaf8 + 742: e7 cf rjmp .-50 ; 0x712 + 744: 51 2c mov r5, r1 + 746: 31 2c mov r3, r1 + 748: 20 e0 ldi r18, 0x00 ; 0 + 74a: 20 32 cpi r18, 0x20 ; 32 + 74c: a8 f4 brcc .+42 ; 0x778 + 74e: 8b 32 cpi r24, 0x2B ; 43 + 750: 61 f0 breq .+24 ; 0x76a + 752: 28 f4 brcc .+10 ; 0x75e + 754: 80 32 cpi r24, 0x20 ; 32 + 756: 51 f0 breq .+20 ; 0x76c + 758: 83 32 cpi r24, 0x23 ; 35 + 75a: 71 f4 brne .+28 ; 0x778 + 75c: 0b c0 rjmp .+22 ; 0x774 + 75e: 8d 32 cpi r24, 0x2D ; 45 + 760: 39 f0 breq .+14 ; 0x770 + 762: 80 33 cpi r24, 0x30 ; 48 + 764: 49 f4 brne .+18 ; 0x778 + 766: 21 60 ori r18, 0x01 ; 1 + 768: 28 c0 rjmp .+80 ; 0x7ba + 76a: 22 60 ori r18, 0x02 ; 2 + 76c: 24 60 ori r18, 0x04 ; 4 + 76e: 25 c0 rjmp .+74 ; 0x7ba + 770: 28 60 ori r18, 0x08 ; 8 + 772: 23 c0 rjmp .+70 ; 0x7ba + 774: 20 61 ori r18, 0x10 ; 16 + 776: 21 c0 rjmp .+66 ; 0x7ba + 778: 27 fd sbrc r18, 7 + 77a: 27 c0 rjmp .+78 ; 0x7ca + 77c: 38 2f mov r19, r24 + 77e: 30 53 subi r19, 0x30 ; 48 + 780: 3a 30 cpi r19, 0x0A ; 10 + 782: 78 f4 brcc .+30 ; 0x7a2 + 784: 26 ff sbrs r18, 6 + 786: 06 c0 rjmp .+12 ; 0x794 + 788: fa e0 ldi r31, 0x0A ; 10 + 78a: 5f 9e mul r5, r31 + 78c: 30 0d add r19, r0 + 78e: 11 24 eor r1, r1 + 790: 53 2e mov r5, r19 + 792: 13 c0 rjmp .+38 ; 0x7ba + 794: 8a e0 ldi r24, 0x0A ; 10 + 796: 38 9e mul r3, r24 + 798: 30 0d add r19, r0 + 79a: 11 24 eor r1, r1 + 79c: 33 2e mov r3, r19 + 79e: 20 62 ori r18, 0x20 ; 32 + 7a0: 0c c0 rjmp .+24 ; 0x7ba + 7a2: 8e 32 cpi r24, 0x2E ; 46 + 7a4: 21 f4 brne .+8 ; 0x7ae + 7a6: 26 fd sbrc r18, 6 + 7a8: 71 c1 rjmp .+738 ; 0xa8c + 7aa: 20 64 ori r18, 0x40 ; 64 + 7ac: 06 c0 rjmp .+12 ; 0x7ba + 7ae: 8c 36 cpi r24, 0x6C ; 108 + 7b0: 11 f4 brne .+4 ; 0x7b6 + 7b2: 20 68 ori r18, 0x80 ; 128 + 7b4: 02 c0 rjmp .+4 ; 0x7ba + 7b6: 88 36 cpi r24, 0x68 ; 104 + 7b8: 41 f4 brne .+16 ; 0x7ca + 7ba: f6 01 movw r30, r12 + 7bc: 93 fd sbrc r25, 3 + 7be: 85 91 lpm r24, Z+ + 7c0: 93 ff sbrs r25, 3 + 7c2: 81 91 ld r24, Z+ + 7c4: 6f 01 movw r12, r30 + 7c6: 81 11 cpse r24, r1 + 7c8: c0 cf rjmp .-128 ; 0x74a + 7ca: 98 2f mov r25, r24 + 7cc: 95 54 subi r25, 0x45 ; 69 + 7ce: 93 30 cpi r25, 0x03 ; 3 + 7d0: 18 f0 brcs .+6 ; 0x7d8 + 7d2: 90 52 subi r25, 0x20 ; 32 + 7d4: 93 30 cpi r25, 0x03 ; 3 + 7d6: 28 f4 brcc .+10 ; 0x7e2 + 7d8: 0c 5f subi r16, 0xFC ; 252 + 7da: 1f 4f sbci r17, 0xFF ; 255 + 7dc: ff e3 ldi r31, 0x3F ; 63 + 7de: f9 83 std Y+1, r31 ; 0x01 + 7e0: 0d c0 rjmp .+26 ; 0x7fc + 7e2: 83 36 cpi r24, 0x63 ; 99 + 7e4: 31 f0 breq .+12 ; 0x7f2 + 7e6: 83 37 cpi r24, 0x73 ; 115 + 7e8: 71 f0 breq .+28 ; 0x806 + 7ea: 83 35 cpi r24, 0x53 ; 83 + 7ec: 09 f0 breq .+2 ; 0x7f0 + 7ee: 5e c0 rjmp .+188 ; 0x8ac + 7f0: 23 c0 rjmp .+70 ; 0x838 + 7f2: f8 01 movw r30, r16 + 7f4: 80 81 ld r24, Z + 7f6: 89 83 std Y+1, r24 ; 0x01 + 7f8: 0e 5f subi r16, 0xFE ; 254 + 7fa: 1f 4f sbci r17, 0xFF ; 255 + 7fc: 44 24 eor r4, r4 + 7fe: 43 94 inc r4 + 800: 51 2c mov r5, r1 + 802: 54 01 movw r10, r8 + 804: 15 c0 rjmp .+42 ; 0x830 + 806: 38 01 movw r6, r16 + 808: f2 e0 ldi r31, 0x02 ; 2 + 80a: 6f 0e add r6, r31 + 80c: 71 1c adc r7, r1 + 80e: f8 01 movw r30, r16 + 810: a0 80 ld r10, Z + 812: b1 80 ldd r11, Z+1 ; 0x01 + 814: 26 ff sbrs r18, 6 + 816: 03 c0 rjmp .+6 ; 0x81e + 818: 65 2d mov r22, r5 + 81a: 70 e0 ldi r23, 0x00 ; 0 + 81c: 02 c0 rjmp .+4 ; 0x822 + 81e: 6f ef ldi r22, 0xFF ; 255 + 820: 7f ef ldi r23, 0xFF ; 255 + 822: c5 01 movw r24, r10 + 824: 2c 87 std Y+12, r18 ; 0x0c + 826: 0e 94 71 05 call 0xae2 ; 0xae2 + 82a: 2c 01 movw r4, r24 + 82c: 83 01 movw r16, r6 + 82e: 2c 85 ldd r18, Y+12 ; 0x0c + 830: 6f e7 ldi r22, 0x7F ; 127 + 832: 26 2e mov r2, r22 + 834: 22 22 and r2, r18 + 836: 18 c0 rjmp .+48 ; 0x868 + 838: 38 01 movw r6, r16 + 83a: f2 e0 ldi r31, 0x02 ; 2 + 83c: 6f 0e add r6, r31 + 83e: 71 1c adc r7, r1 840: f8 01 movw r30, r16 - 842: 27 ff sbrs r18, 7 - 844: 07 c0 rjmp .+14 ; 0x854 - 846: 60 81 ld r22, Z - 848: 71 81 ldd r23, Z+1 ; 0x01 - 84a: 82 81 ldd r24, Z+2 ; 0x02 - 84c: 93 81 ldd r25, Z+3 ; 0x03 - 84e: 0c 5f subi r16, 0xFC ; 252 - 850: 1f 4f sbci r17, 0xFF ; 255 - 852: 08 c0 rjmp .+16 ; 0x864 - 854: 60 81 ld r22, Z - 856: 71 81 ldd r23, Z+1 ; 0x01 - 858: 88 27 eor r24, r24 - 85a: 77 fd sbrc r23, 7 - 85c: 80 95 com r24 - 85e: 98 2f mov r25, r24 - 860: 0e 5f subi r16, 0xFE ; 254 - 862: 1f 4f sbci r17, 0xFF ; 255 - 864: 4f e6 ldi r20, 0x6F ; 111 - 866: b4 2e mov r11, r20 - 868: b2 22 and r11, r18 - 86a: 97 ff sbrs r25, 7 - 86c: 09 c0 rjmp .+18 ; 0x880 - 86e: 90 95 com r25 - 870: 80 95 com r24 - 872: 70 95 com r23 - 874: 61 95 neg r22 - 876: 7f 4f sbci r23, 0xFF ; 255 - 878: 8f 4f sbci r24, 0xFF ; 255 - 87a: 9f 4f sbci r25, 0xFF ; 255 - 87c: f0 e8 ldi r31, 0x80 ; 128 - 87e: bf 2a or r11, r31 - 880: 2a e0 ldi r18, 0x0A ; 10 - 882: 30 e0 ldi r19, 0x00 ; 0 - 884: a4 01 movw r20, r8 - 886: 0e 94 6e 05 call 0xadc ; 0xadc <__ultoa_invert> - 88a: a8 2e mov r10, r24 - 88c: a8 18 sub r10, r8 - 88e: 43 c0 rjmp .+134 ; 0x916 - 890: 85 37 cpi r24, 0x75 ; 117 - 892: 31 f4 brne .+12 ; 0x8a0 - 894: 3f ee ldi r19, 0xEF ; 239 - 896: b3 2e mov r11, r19 - 898: b2 22 and r11, r18 - 89a: 2a e0 ldi r18, 0x0A ; 10 - 89c: 30 e0 ldi r19, 0x00 ; 0 - 89e: 24 c0 rjmp .+72 ; 0x8e8 - 8a0: 99 ef ldi r25, 0xF9 ; 249 - 8a2: b9 2e mov r11, r25 - 8a4: b2 22 and r11, r18 - 8a6: 8f 36 cpi r24, 0x6F ; 111 - 8a8: b9 f0 breq .+46 ; 0x8d8 - 8aa: 20 f4 brcc .+8 ; 0x8b4 - 8ac: 88 35 cpi r24, 0x58 ; 88 - 8ae: 09 f0 breq .+2 ; 0x8b2 - 8b0: b3 c0 rjmp .+358 ; 0xa18 - 8b2: 0d c0 rjmp .+26 ; 0x8ce - 8b4: 80 37 cpi r24, 0x70 ; 112 - 8b6: 21 f0 breq .+8 ; 0x8c0 - 8b8: 88 37 cpi r24, 0x78 ; 120 - 8ba: 09 f0 breq .+2 ; 0x8be - 8bc: ad c0 rjmp .+346 ; 0xa18 - 8be: 02 c0 rjmp .+4 ; 0x8c4 - 8c0: 20 e1 ldi r18, 0x10 ; 16 - 8c2: b2 2a or r11, r18 - 8c4: b4 fe sbrs r11, 4 - 8c6: 0b c0 rjmp .+22 ; 0x8de - 8c8: 84 e0 ldi r24, 0x04 ; 4 - 8ca: b8 2a or r11, r24 - 8cc: 08 c0 rjmp .+16 ; 0x8de - 8ce: 24 ff sbrs r18, 4 - 8d0: 09 c0 rjmp .+18 ; 0x8e4 - 8d2: e6 e0 ldi r30, 0x06 ; 6 - 8d4: be 2a or r11, r30 - 8d6: 06 c0 rjmp .+12 ; 0x8e4 - 8d8: 28 e0 ldi r18, 0x08 ; 8 - 8da: 30 e0 ldi r19, 0x00 ; 0 - 8dc: 05 c0 rjmp .+10 ; 0x8e8 - 8de: 20 e1 ldi r18, 0x10 ; 16 - 8e0: 30 e0 ldi r19, 0x00 ; 0 - 8e2: 02 c0 rjmp .+4 ; 0x8e8 - 8e4: 20 e1 ldi r18, 0x10 ; 16 - 8e6: 32 e0 ldi r19, 0x02 ; 2 - 8e8: f8 01 movw r30, r16 - 8ea: b7 fe sbrs r11, 7 - 8ec: 07 c0 rjmp .+14 ; 0x8fc - 8ee: 60 81 ld r22, Z - 8f0: 71 81 ldd r23, Z+1 ; 0x01 - 8f2: 82 81 ldd r24, Z+2 ; 0x02 - 8f4: 93 81 ldd r25, Z+3 ; 0x03 - 8f6: 0c 5f subi r16, 0xFC ; 252 - 8f8: 1f 4f sbci r17, 0xFF ; 255 - 8fa: 06 c0 rjmp .+12 ; 0x908 - 8fc: 60 81 ld r22, Z - 8fe: 71 81 ldd r23, Z+1 ; 0x01 - 900: 80 e0 ldi r24, 0x00 ; 0 - 902: 90 e0 ldi r25, 0x00 ; 0 - 904: 0e 5f subi r16, 0xFE ; 254 - 906: 1f 4f sbci r17, 0xFF ; 255 - 908: a4 01 movw r20, r8 - 90a: 0e 94 6e 05 call 0xadc ; 0xadc <__ultoa_invert> - 90e: a8 2e mov r10, r24 - 910: a8 18 sub r10, r8 - 912: ff e7 ldi r31, 0x7F ; 127 - 914: bf 22 and r11, r31 - 916: b6 fe sbrs r11, 6 - 918: 0b c0 rjmp .+22 ; 0x930 - 91a: 2b 2d mov r18, r11 - 91c: 2e 7f andi r18, 0xFE ; 254 - 91e: a5 14 cp r10, r5 - 920: 50 f4 brcc .+20 ; 0x936 - 922: b4 fe sbrs r11, 4 - 924: 0a c0 rjmp .+20 ; 0x93a - 926: b2 fc sbrc r11, 2 - 928: 08 c0 rjmp .+16 ; 0x93a - 92a: 2b 2d mov r18, r11 - 92c: 2e 7e andi r18, 0xEE ; 238 - 92e: 05 c0 rjmp .+10 ; 0x93a - 930: 7a 2c mov r7, r10 - 932: 2b 2d mov r18, r11 - 934: 03 c0 rjmp .+6 ; 0x93c - 936: 7a 2c mov r7, r10 - 938: 01 c0 rjmp .+2 ; 0x93c - 93a: 75 2c mov r7, r5 - 93c: 24 ff sbrs r18, 4 - 93e: 0d c0 rjmp .+26 ; 0x95a - 940: fe 01 movw r30, r28 - 942: ea 0d add r30, r10 - 944: f1 1d adc r31, r1 - 946: 80 81 ld r24, Z - 948: 80 33 cpi r24, 0x30 ; 48 - 94a: 11 f4 brne .+4 ; 0x950 - 94c: 29 7e andi r18, 0xE9 ; 233 - 94e: 09 c0 rjmp .+18 ; 0x962 - 950: 22 ff sbrs r18, 2 - 952: 06 c0 rjmp .+12 ; 0x960 - 954: 73 94 inc r7 - 956: 73 94 inc r7 - 958: 04 c0 rjmp .+8 ; 0x962 - 95a: 82 2f mov r24, r18 - 95c: 86 78 andi r24, 0x86 ; 134 - 95e: 09 f0 breq .+2 ; 0x962 - 960: 73 94 inc r7 - 962: 23 fd sbrc r18, 3 - 964: 14 c0 rjmp .+40 ; 0x98e - 966: 20 ff sbrs r18, 0 - 968: 0f c0 rjmp .+30 ; 0x988 - 96a: 5a 2c mov r5, r10 - 96c: 73 14 cp r7, r3 - 96e: 60 f4 brcc .+24 ; 0x988 - 970: 53 0c add r5, r3 - 972: 57 18 sub r5, r7 - 974: 73 2c mov r7, r3 - 976: 08 c0 rjmp .+16 ; 0x988 - 978: b7 01 movw r22, r14 - 97a: 80 e2 ldi r24, 0x20 ; 32 - 97c: 90 e0 ldi r25, 0x00 ; 0 - 97e: 2c 87 std Y+12, r18 ; 0x0c - 980: 0e 94 42 05 call 0xa84 ; 0xa84 - 984: 73 94 inc r7 - 986: 2c 85 ldd r18, Y+12 ; 0x0c - 988: 73 14 cp r7, r3 - 98a: b0 f3 brcs .-20 ; 0x978 - 98c: 04 c0 rjmp .+8 ; 0x996 - 98e: 73 14 cp r7, r3 - 990: 10 f4 brcc .+4 ; 0x996 - 992: 37 18 sub r3, r7 - 994: 01 c0 rjmp .+2 ; 0x998 - 996: 31 2c mov r3, r1 - 998: 24 ff sbrs r18, 4 - 99a: 12 c0 rjmp .+36 ; 0x9c0 - 99c: b7 01 movw r22, r14 - 99e: 80 e3 ldi r24, 0x30 ; 48 - 9a0: 90 e0 ldi r25, 0x00 ; 0 - 9a2: 2c 87 std Y+12, r18 ; 0x0c - 9a4: 0e 94 42 05 call 0xa84 ; 0xa84 - 9a8: 2c 85 ldd r18, Y+12 ; 0x0c - 9aa: 22 ff sbrs r18, 2 - 9ac: 1e c0 rjmp .+60 ; 0x9ea - 9ae: 21 ff sbrs r18, 1 - 9b0: 03 c0 rjmp .+6 ; 0x9b8 - 9b2: 88 e5 ldi r24, 0x58 ; 88 - 9b4: 90 e0 ldi r25, 0x00 ; 0 - 9b6: 02 c0 rjmp .+4 ; 0x9bc - 9b8: 88 e7 ldi r24, 0x78 ; 120 - 9ba: 90 e0 ldi r25, 0x00 ; 0 - 9bc: b7 01 movw r22, r14 - 9be: 0c c0 rjmp .+24 ; 0x9d8 - 9c0: 82 2f mov r24, r18 - 9c2: 86 78 andi r24, 0x86 ; 134 - 9c4: 91 f0 breq .+36 ; 0x9ea - 9c6: 21 fd sbrc r18, 1 - 9c8: 02 c0 rjmp .+4 ; 0x9ce - 9ca: 80 e2 ldi r24, 0x20 ; 32 - 9cc: 01 c0 rjmp .+2 ; 0x9d0 - 9ce: 8b e2 ldi r24, 0x2B ; 43 - 9d0: 27 fd sbrc r18, 7 - 9d2: 8d e2 ldi r24, 0x2D ; 45 - 9d4: b7 01 movw r22, r14 - 9d6: 90 e0 ldi r25, 0x00 ; 0 - 9d8: 0e 94 42 05 call 0xa84 ; 0xa84 - 9dc: 06 c0 rjmp .+12 ; 0x9ea - 9de: b7 01 movw r22, r14 - 9e0: 80 e3 ldi r24, 0x30 ; 48 - 9e2: 90 e0 ldi r25, 0x00 ; 0 - 9e4: 0e 94 42 05 call 0xa84 ; 0xa84 - 9e8: 5a 94 dec r5 - 9ea: a5 14 cp r10, r5 - 9ec: c0 f3 brcs .-16 ; 0x9de - 9ee: aa 94 dec r10 - 9f0: f4 01 movw r30, r8 - 9f2: ea 0d add r30, r10 - 9f4: f1 1d adc r31, r1 - 9f6: b7 01 movw r22, r14 - 9f8: 80 81 ld r24, Z - 9fa: 90 e0 ldi r25, 0x00 ; 0 - 9fc: 0e 94 42 05 call 0xa84 ; 0xa84 - a00: a1 10 cpse r10, r1 - a02: f5 cf rjmp .-22 ; 0x9ee - a04: 06 c0 rjmp .+12 ; 0xa12 - a06: b7 01 movw r22, r14 - a08: 80 e2 ldi r24, 0x20 ; 32 - a0a: 90 e0 ldi r25, 0x00 ; 0 - a0c: 0e 94 42 05 call 0xa84 ; 0xa84 - a10: 3a 94 dec r3 - a12: 31 10 cpse r3, r1 - a14: f8 cf rjmp .-16 ; 0xa06 - a16: 43 ce rjmp .-890 ; 0x69e - a18: f7 01 movw r30, r14 - a1a: 26 81 ldd r18, Z+6 ; 0x06 - a1c: 37 81 ldd r19, Z+7 ; 0x07 - a1e: 02 c0 rjmp .+4 ; 0xa24 - a20: 2f ef ldi r18, 0xFF ; 255 - a22: 3f ef ldi r19, 0xFF ; 255 - a24: c9 01 movw r24, r18 - a26: 2c 96 adiw r28, 0x0c ; 12 - a28: 0f b6 in r0, 0x3f ; 63 - a2a: f8 94 cli - a2c: de bf out 0x3e, r29 ; 62 - a2e: 0f be out 0x3f, r0 ; 63 - a30: cd bf out 0x3d, r28 ; 61 - a32: df 91 pop r29 - a34: cf 91 pop r28 - a36: 1f 91 pop r17 - a38: 0f 91 pop r16 - a3a: ff 90 pop r15 - a3c: ef 90 pop r14 - a3e: df 90 pop r13 - a40: cf 90 pop r12 - a42: bf 90 pop r11 - a44: af 90 pop r10 - a46: 9f 90 pop r9 - a48: 8f 90 pop r8 - a4a: 7f 90 pop r7 - a4c: 6f 90 pop r6 - a4e: 5f 90 pop r5 - a50: 4f 90 pop r4 - a52: 3f 90 pop r3 - a54: 2f 90 pop r2 - a56: 08 95 ret + 842: a0 80 ld r10, Z + 844: b1 80 ldd r11, Z+1 ; 0x01 + 846: 26 ff sbrs r18, 6 + 848: 03 c0 rjmp .+6 ; 0x850 + 84a: 65 2d mov r22, r5 + 84c: 70 e0 ldi r23, 0x00 ; 0 + 84e: 02 c0 rjmp .+4 ; 0x854 + 850: 6f ef ldi r22, 0xFF ; 255 + 852: 7f ef ldi r23, 0xFF ; 255 + 854: c5 01 movw r24, r10 + 856: 2c 87 std Y+12, r18 ; 0x0c + 858: 0e 94 66 05 call 0xacc ; 0xacc + 85c: 2c 01 movw r4, r24 + 85e: 2c 85 ldd r18, Y+12 ; 0x0c + 860: 50 e8 ldi r21, 0x80 ; 128 + 862: 25 2e mov r2, r21 + 864: 22 2a or r2, r18 + 866: 83 01 movw r16, r6 + 868: 23 fc sbrc r2, 3 + 86a: 1c c0 rjmp .+56 ; 0x8a4 + 86c: 06 c0 rjmp .+12 ; 0x87a + 86e: b7 01 movw r22, r14 + 870: 80 e2 ldi r24, 0x20 ; 32 + 872: 90 e0 ldi r25, 0x00 ; 0 + 874: 0e 94 7c 05 call 0xaf8 ; 0xaf8 + 878: 3a 94 dec r3 + 87a: 83 2d mov r24, r3 + 87c: 90 e0 ldi r25, 0x00 ; 0 + 87e: 48 16 cp r4, r24 + 880: 59 06 cpc r5, r25 + 882: a8 f3 brcs .-22 ; 0x86e + 884: 0f c0 rjmp .+30 ; 0x8a4 + 886: f5 01 movw r30, r10 + 888: 27 fc sbrc r2, 7 + 88a: 85 91 lpm r24, Z+ + 88c: 27 fe sbrs r2, 7 + 88e: 81 91 ld r24, Z+ + 890: 5f 01 movw r10, r30 + 892: b7 01 movw r22, r14 + 894: 90 e0 ldi r25, 0x00 ; 0 + 896: 0e 94 7c 05 call 0xaf8 ; 0xaf8 + 89a: 31 10 cpse r3, r1 + 89c: 3a 94 dec r3 + 89e: f1 e0 ldi r31, 0x01 ; 1 + 8a0: 4f 1a sub r4, r31 + 8a2: 51 08 sbc r5, r1 + 8a4: 41 14 cp r4, r1 + 8a6: 51 04 cpc r5, r1 + 8a8: 71 f7 brne .-36 ; 0x886 + 8aa: ed c0 rjmp .+474 ; 0xa86 + 8ac: 84 36 cpi r24, 0x64 ; 100 + 8ae: 11 f0 breq .+4 ; 0x8b4 + 8b0: 89 36 cpi r24, 0x69 ; 105 + 8b2: 41 f5 brne .+80 ; 0x904 + 8b4: f8 01 movw r30, r16 + 8b6: 27 ff sbrs r18, 7 + 8b8: 07 c0 rjmp .+14 ; 0x8c8 + 8ba: 60 81 ld r22, Z + 8bc: 71 81 ldd r23, Z+1 ; 0x01 + 8be: 82 81 ldd r24, Z+2 ; 0x02 + 8c0: 93 81 ldd r25, Z+3 ; 0x03 + 8c2: 0c 5f subi r16, 0xFC ; 252 + 8c4: 1f 4f sbci r17, 0xFF ; 255 + 8c6: 08 c0 rjmp .+16 ; 0x8d8 + 8c8: 60 81 ld r22, Z + 8ca: 71 81 ldd r23, Z+1 ; 0x01 + 8cc: 88 27 eor r24, r24 + 8ce: 77 fd sbrc r23, 7 + 8d0: 80 95 com r24 + 8d2: 98 2f mov r25, r24 + 8d4: 0e 5f subi r16, 0xFE ; 254 + 8d6: 1f 4f sbci r17, 0xFF ; 255 + 8d8: 4f e6 ldi r20, 0x6F ; 111 + 8da: b4 2e mov r11, r20 + 8dc: b2 22 and r11, r18 + 8de: 97 ff sbrs r25, 7 + 8e0: 09 c0 rjmp .+18 ; 0x8f4 + 8e2: 90 95 com r25 + 8e4: 80 95 com r24 + 8e6: 70 95 com r23 + 8e8: 61 95 neg r22 + 8ea: 7f 4f sbci r23, 0xFF ; 255 + 8ec: 8f 4f sbci r24, 0xFF ; 255 + 8ee: 9f 4f sbci r25, 0xFF ; 255 + 8f0: f0 e8 ldi r31, 0x80 ; 128 + 8f2: bf 2a or r11, r31 + 8f4: 2a e0 ldi r18, 0x0A ; 10 + 8f6: 30 e0 ldi r19, 0x00 ; 0 + 8f8: a4 01 movw r20, r8 + 8fa: 0e 94 a8 05 call 0xb50 ; 0xb50 <__ultoa_invert> + 8fe: a8 2e mov r10, r24 + 900: a8 18 sub r10, r8 + 902: 43 c0 rjmp .+134 ; 0x98a + 904: 85 37 cpi r24, 0x75 ; 117 + 906: 31 f4 brne .+12 ; 0x914 + 908: 3f ee ldi r19, 0xEF ; 239 + 90a: b3 2e mov r11, r19 + 90c: b2 22 and r11, r18 + 90e: 2a e0 ldi r18, 0x0A ; 10 + 910: 30 e0 ldi r19, 0x00 ; 0 + 912: 24 c0 rjmp .+72 ; 0x95c + 914: 99 ef ldi r25, 0xF9 ; 249 + 916: b9 2e mov r11, r25 + 918: b2 22 and r11, r18 + 91a: 8f 36 cpi r24, 0x6F ; 111 + 91c: b9 f0 breq .+46 ; 0x94c + 91e: 20 f4 brcc .+8 ; 0x928 + 920: 88 35 cpi r24, 0x58 ; 88 + 922: 09 f0 breq .+2 ; 0x926 + 924: b3 c0 rjmp .+358 ; 0xa8c + 926: 0d c0 rjmp .+26 ; 0x942 + 928: 80 37 cpi r24, 0x70 ; 112 + 92a: 21 f0 breq .+8 ; 0x934 + 92c: 88 37 cpi r24, 0x78 ; 120 + 92e: 09 f0 breq .+2 ; 0x932 + 930: ad c0 rjmp .+346 ; 0xa8c + 932: 02 c0 rjmp .+4 ; 0x938 + 934: 20 e1 ldi r18, 0x10 ; 16 + 936: b2 2a or r11, r18 + 938: b4 fe sbrs r11, 4 + 93a: 0b c0 rjmp .+22 ; 0x952 + 93c: 84 e0 ldi r24, 0x04 ; 4 + 93e: b8 2a or r11, r24 + 940: 08 c0 rjmp .+16 ; 0x952 + 942: 24 ff sbrs r18, 4 + 944: 09 c0 rjmp .+18 ; 0x958 + 946: e6 e0 ldi r30, 0x06 ; 6 + 948: be 2a or r11, r30 + 94a: 06 c0 rjmp .+12 ; 0x958 + 94c: 28 e0 ldi r18, 0x08 ; 8 + 94e: 30 e0 ldi r19, 0x00 ; 0 + 950: 05 c0 rjmp .+10 ; 0x95c + 952: 20 e1 ldi r18, 0x10 ; 16 + 954: 30 e0 ldi r19, 0x00 ; 0 + 956: 02 c0 rjmp .+4 ; 0x95c + 958: 20 e1 ldi r18, 0x10 ; 16 + 95a: 32 e0 ldi r19, 0x02 ; 2 + 95c: f8 01 movw r30, r16 + 95e: b7 fe sbrs r11, 7 + 960: 07 c0 rjmp .+14 ; 0x970 + 962: 60 81 ld r22, Z + 964: 71 81 ldd r23, Z+1 ; 0x01 + 966: 82 81 ldd r24, Z+2 ; 0x02 + 968: 93 81 ldd r25, Z+3 ; 0x03 + 96a: 0c 5f subi r16, 0xFC ; 252 + 96c: 1f 4f sbci r17, 0xFF ; 255 + 96e: 06 c0 rjmp .+12 ; 0x97c + 970: 60 81 ld r22, Z + 972: 71 81 ldd r23, Z+1 ; 0x01 + 974: 80 e0 ldi r24, 0x00 ; 0 + 976: 90 e0 ldi r25, 0x00 ; 0 + 978: 0e 5f subi r16, 0xFE ; 254 + 97a: 1f 4f sbci r17, 0xFF ; 255 + 97c: a4 01 movw r20, r8 + 97e: 0e 94 a8 05 call 0xb50 ; 0xb50 <__ultoa_invert> + 982: a8 2e mov r10, r24 + 984: a8 18 sub r10, r8 + 986: ff e7 ldi r31, 0x7F ; 127 + 988: bf 22 and r11, r31 + 98a: b6 fe sbrs r11, 6 + 98c: 0b c0 rjmp .+22 ; 0x9a4 + 98e: 2b 2d mov r18, r11 + 990: 2e 7f andi r18, 0xFE ; 254 + 992: a5 14 cp r10, r5 + 994: 50 f4 brcc .+20 ; 0x9aa + 996: b4 fe sbrs r11, 4 + 998: 0a c0 rjmp .+20 ; 0x9ae + 99a: b2 fc sbrc r11, 2 + 99c: 08 c0 rjmp .+16 ; 0x9ae + 99e: 2b 2d mov r18, r11 + 9a0: 2e 7e andi r18, 0xEE ; 238 + 9a2: 05 c0 rjmp .+10 ; 0x9ae + 9a4: 7a 2c mov r7, r10 + 9a6: 2b 2d mov r18, r11 + 9a8: 03 c0 rjmp .+6 ; 0x9b0 + 9aa: 7a 2c mov r7, r10 + 9ac: 01 c0 rjmp .+2 ; 0x9b0 + 9ae: 75 2c mov r7, r5 + 9b0: 24 ff sbrs r18, 4 + 9b2: 0d c0 rjmp .+26 ; 0x9ce + 9b4: fe 01 movw r30, r28 + 9b6: ea 0d add r30, r10 + 9b8: f1 1d adc r31, r1 + 9ba: 80 81 ld r24, Z + 9bc: 80 33 cpi r24, 0x30 ; 48 + 9be: 11 f4 brne .+4 ; 0x9c4 + 9c0: 29 7e andi r18, 0xE9 ; 233 + 9c2: 09 c0 rjmp .+18 ; 0x9d6 + 9c4: 22 ff sbrs r18, 2 + 9c6: 06 c0 rjmp .+12 ; 0x9d4 + 9c8: 73 94 inc r7 + 9ca: 73 94 inc r7 + 9cc: 04 c0 rjmp .+8 ; 0x9d6 + 9ce: 82 2f mov r24, r18 + 9d0: 86 78 andi r24, 0x86 ; 134 + 9d2: 09 f0 breq .+2 ; 0x9d6 + 9d4: 73 94 inc r7 + 9d6: 23 fd sbrc r18, 3 + 9d8: 14 c0 rjmp .+40 ; 0xa02 + 9da: 20 ff sbrs r18, 0 + 9dc: 0f c0 rjmp .+30 ; 0x9fc + 9de: 5a 2c mov r5, r10 + 9e0: 73 14 cp r7, r3 + 9e2: 60 f4 brcc .+24 ; 0x9fc + 9e4: 53 0c add r5, r3 + 9e6: 57 18 sub r5, r7 + 9e8: 73 2c mov r7, r3 + 9ea: 08 c0 rjmp .+16 ; 0x9fc + 9ec: b7 01 movw r22, r14 + 9ee: 80 e2 ldi r24, 0x20 ; 32 + 9f0: 90 e0 ldi r25, 0x00 ; 0 + 9f2: 2c 87 std Y+12, r18 ; 0x0c + 9f4: 0e 94 7c 05 call 0xaf8 ; 0xaf8 + 9f8: 73 94 inc r7 + 9fa: 2c 85 ldd r18, Y+12 ; 0x0c + 9fc: 73 14 cp r7, r3 + 9fe: b0 f3 brcs .-20 ; 0x9ec + a00: 04 c0 rjmp .+8 ; 0xa0a + a02: 73 14 cp r7, r3 + a04: 10 f4 brcc .+4 ; 0xa0a + a06: 37 18 sub r3, r7 + a08: 01 c0 rjmp .+2 ; 0xa0c + a0a: 31 2c mov r3, r1 + a0c: 24 ff sbrs r18, 4 + a0e: 12 c0 rjmp .+36 ; 0xa34 + a10: b7 01 movw r22, r14 + a12: 80 e3 ldi r24, 0x30 ; 48 + a14: 90 e0 ldi r25, 0x00 ; 0 + a16: 2c 87 std Y+12, r18 ; 0x0c + a18: 0e 94 7c 05 call 0xaf8 ; 0xaf8 + a1c: 2c 85 ldd r18, Y+12 ; 0x0c + a1e: 22 ff sbrs r18, 2 + a20: 1e c0 rjmp .+60 ; 0xa5e + a22: 21 ff sbrs r18, 1 + a24: 03 c0 rjmp .+6 ; 0xa2c + a26: 88 e5 ldi r24, 0x58 ; 88 + a28: 90 e0 ldi r25, 0x00 ; 0 + a2a: 02 c0 rjmp .+4 ; 0xa30 + a2c: 88 e7 ldi r24, 0x78 ; 120 + a2e: 90 e0 ldi r25, 0x00 ; 0 + a30: b7 01 movw r22, r14 + a32: 0c c0 rjmp .+24 ; 0xa4c + a34: 82 2f mov r24, r18 + a36: 86 78 andi r24, 0x86 ; 134 + a38: 91 f0 breq .+36 ; 0xa5e + a3a: 21 fd sbrc r18, 1 + a3c: 02 c0 rjmp .+4 ; 0xa42 + a3e: 80 e2 ldi r24, 0x20 ; 32 + a40: 01 c0 rjmp .+2 ; 0xa44 + a42: 8b e2 ldi r24, 0x2B ; 43 + a44: 27 fd sbrc r18, 7 + a46: 8d e2 ldi r24, 0x2D ; 45 + a48: b7 01 movw r22, r14 + a4a: 90 e0 ldi r25, 0x00 ; 0 + a4c: 0e 94 7c 05 call 0xaf8 ; 0xaf8 + a50: 06 c0 rjmp .+12 ; 0xa5e + a52: b7 01 movw r22, r14 + a54: 80 e3 ldi r24, 0x30 ; 48 + a56: 90 e0 ldi r25, 0x00 ; 0 + a58: 0e 94 7c 05 call 0xaf8 ; 0xaf8 + a5c: 5a 94 dec r5 + a5e: a5 14 cp r10, r5 + a60: c0 f3 brcs .-16 ; 0xa52 + a62: aa 94 dec r10 + a64: f4 01 movw r30, r8 + a66: ea 0d add r30, r10 + a68: f1 1d adc r31, r1 + a6a: b7 01 movw r22, r14 + a6c: 80 81 ld r24, Z + a6e: 90 e0 ldi r25, 0x00 ; 0 + a70: 0e 94 7c 05 call 0xaf8 ; 0xaf8 + a74: a1 10 cpse r10, r1 + a76: f5 cf rjmp .-22 ; 0xa62 + a78: 06 c0 rjmp .+12 ; 0xa86 + a7a: b7 01 movw r22, r14 + a7c: 80 e2 ldi r24, 0x20 ; 32 + a7e: 90 e0 ldi r25, 0x00 ; 0 + a80: 0e 94 7c 05 call 0xaf8 ; 0xaf8 + a84: 3a 94 dec r3 + a86: 31 10 cpse r3, r1 + a88: f8 cf rjmp .-16 ; 0xa7a + a8a: 43 ce rjmp .-890 ; 0x712 + a8c: f7 01 movw r30, r14 + a8e: 26 81 ldd r18, Z+6 ; 0x06 + a90: 37 81 ldd r19, Z+7 ; 0x07 + a92: 02 c0 rjmp .+4 ; 0xa98 + a94: 2f ef ldi r18, 0xFF ; 255 + a96: 3f ef ldi r19, 0xFF ; 255 + a98: c9 01 movw r24, r18 + a9a: 2c 96 adiw r28, 0x0c ; 12 + a9c: 0f b6 in r0, 0x3f ; 63 + a9e: f8 94 cli + aa0: de bf out 0x3e, r29 ; 62 + aa2: 0f be out 0x3f, r0 ; 63 + aa4: cd bf out 0x3d, r28 ; 61 + aa6: df 91 pop r29 + aa8: cf 91 pop r28 + aaa: 1f 91 pop r17 + aac: 0f 91 pop r16 + aae: ff 90 pop r15 + ab0: ef 90 pop r14 + ab2: df 90 pop r13 + ab4: cf 90 pop r12 + ab6: bf 90 pop r11 + ab8: af 90 pop r10 + aba: 9f 90 pop r9 + abc: 8f 90 pop r8 + abe: 7f 90 pop r7 + ac0: 6f 90 pop r6 + ac2: 5f 90 pop r5 + ac4: 4f 90 pop r4 + ac6: 3f 90 pop r3 + ac8: 2f 90 pop r2 + aca: 08 95 ret -00000a58 : - a58: fc 01 movw r30, r24 - a5a: 05 90 lpm r0, Z+ - a5c: 61 50 subi r22, 0x01 ; 1 - a5e: 70 40 sbci r23, 0x00 ; 0 - a60: 01 10 cpse r0, r1 - a62: d8 f7 brcc .-10 ; 0xa5a - a64: 80 95 com r24 - a66: 90 95 com r25 - a68: 8e 0f add r24, r30 - a6a: 9f 1f adc r25, r31 - a6c: 08 95 ret +00000acc : + acc: fc 01 movw r30, r24 + ace: 05 90 lpm r0, Z+ + ad0: 61 50 subi r22, 0x01 ; 1 + ad2: 70 40 sbci r23, 0x00 ; 0 + ad4: 01 10 cpse r0, r1 + ad6: d8 f7 brcc .-10 ; 0xace + ad8: 80 95 com r24 + ada: 90 95 com r25 + adc: 8e 0f add r24, r30 + ade: 9f 1f adc r25, r31 + ae0: 08 95 ret -00000a6e : - a6e: fc 01 movw r30, r24 - a70: 61 50 subi r22, 0x01 ; 1 - a72: 70 40 sbci r23, 0x00 ; 0 - a74: 01 90 ld r0, Z+ - a76: 01 10 cpse r0, r1 - a78: d8 f7 brcc .-10 ; 0xa70 - a7a: 80 95 com r24 - a7c: 90 95 com r25 - a7e: 8e 0f add r24, r30 - a80: 9f 1f adc r25, r31 - a82: 08 95 ret +00000ae2 : + ae2: fc 01 movw r30, r24 + ae4: 61 50 subi r22, 0x01 ; 1 + ae6: 70 40 sbci r23, 0x00 ; 0 + ae8: 01 90 ld r0, Z+ + aea: 01 10 cpse r0, r1 + aec: d8 f7 brcc .-10 ; 0xae4 + aee: 80 95 com r24 + af0: 90 95 com r25 + af2: 8e 0f add r24, r30 + af4: 9f 1f adc r25, r31 + af6: 08 95 ret -00000a84 : - a84: 0f 93 push r16 - a86: 1f 93 push r17 - a88: cf 93 push r28 - a8a: df 93 push r29 - a8c: 8c 01 movw r16, r24 - a8e: eb 01 movw r28, r22 - a90: 8b 81 ldd r24, Y+3 ; 0x03 - a92: 81 fd sbrc r24, 1 - a94: 03 c0 rjmp .+6 ; 0xa9c - a96: 0f ef ldi r16, 0xFF ; 255 - a98: 1f ef ldi r17, 0xFF ; 255 - a9a: 1a c0 rjmp .+52 ; 0xad0 - a9c: 82 ff sbrs r24, 2 - a9e: 0d c0 rjmp .+26 ; 0xaba - aa0: 2e 81 ldd r18, Y+6 ; 0x06 - aa2: 3f 81 ldd r19, Y+7 ; 0x07 - aa4: 8c 81 ldd r24, Y+4 ; 0x04 - aa6: 9d 81 ldd r25, Y+5 ; 0x05 - aa8: 28 17 cp r18, r24 - aaa: 39 07 cpc r19, r25 - aac: 64 f4 brge .+24 ; 0xac6 - aae: e8 81 ld r30, Y - ab0: f9 81 ldd r31, Y+1 ; 0x01 - ab2: 01 93 st Z+, r16 - ab4: f9 83 std Y+1, r31 ; 0x01 - ab6: e8 83 st Y, r30 - ab8: 06 c0 rjmp .+12 ; 0xac6 - aba: e8 85 ldd r30, Y+8 ; 0x08 - abc: f9 85 ldd r31, Y+9 ; 0x09 - abe: 80 2f mov r24, r16 - ac0: 19 95 eicall - ac2: 89 2b or r24, r25 - ac4: 41 f7 brne .-48 ; 0xa96 - ac6: 8e 81 ldd r24, Y+6 ; 0x06 - ac8: 9f 81 ldd r25, Y+7 ; 0x07 - aca: 01 96 adiw r24, 0x01 ; 1 - acc: 9f 83 std Y+7, r25 ; 0x07 - ace: 8e 83 std Y+6, r24 ; 0x06 - ad0: c8 01 movw r24, r16 - ad2: df 91 pop r29 - ad4: cf 91 pop r28 - ad6: 1f 91 pop r17 - ad8: 0f 91 pop r16 - ada: 08 95 ret +00000af8 : + af8: 0f 93 push r16 + afa: 1f 93 push r17 + afc: cf 93 push r28 + afe: df 93 push r29 + b00: 8c 01 movw r16, r24 + b02: eb 01 movw r28, r22 + b04: 8b 81 ldd r24, Y+3 ; 0x03 + b06: 81 fd sbrc r24, 1 + b08: 03 c0 rjmp .+6 ; 0xb10 + b0a: 0f ef ldi r16, 0xFF ; 255 + b0c: 1f ef ldi r17, 0xFF ; 255 + b0e: 1a c0 rjmp .+52 ; 0xb44 + b10: 82 ff sbrs r24, 2 + b12: 0d c0 rjmp .+26 ; 0xb2e + b14: 2e 81 ldd r18, Y+6 ; 0x06 + b16: 3f 81 ldd r19, Y+7 ; 0x07 + b18: 8c 81 ldd r24, Y+4 ; 0x04 + b1a: 9d 81 ldd r25, Y+5 ; 0x05 + b1c: 28 17 cp r18, r24 + b1e: 39 07 cpc r19, r25 + b20: 64 f4 brge .+24 ; 0xb3a + b22: e8 81 ld r30, Y + b24: f9 81 ldd r31, Y+1 ; 0x01 + b26: 01 93 st Z+, r16 + b28: f9 83 std Y+1, r31 ; 0x01 + b2a: e8 83 st Y, r30 + b2c: 06 c0 rjmp .+12 ; 0xb3a + b2e: e8 85 ldd r30, Y+8 ; 0x08 + b30: f9 85 ldd r31, Y+9 ; 0x09 + b32: 80 2f mov r24, r16 + b34: 19 95 eicall + b36: 89 2b or r24, r25 + b38: 41 f7 brne .-48 ; 0xb0a + b3a: 8e 81 ldd r24, Y+6 ; 0x06 + b3c: 9f 81 ldd r25, Y+7 ; 0x07 + b3e: 01 96 adiw r24, 0x01 ; 1 + b40: 9f 83 std Y+7, r25 ; 0x07 + b42: 8e 83 std Y+6, r24 ; 0x06 + b44: c8 01 movw r24, r16 + b46: df 91 pop r29 + b48: cf 91 pop r28 + b4a: 1f 91 pop r17 + b4c: 0f 91 pop r16 + b4e: 08 95 ret -00000adc <__ultoa_invert>: - adc: fa 01 movw r30, r20 - ade: aa 27 eor r26, r26 - ae0: 28 30 cpi r18, 0x08 ; 8 - ae2: 51 f1 breq .+84 ; 0xb38 <__ultoa_invert+0x5c> - ae4: 20 31 cpi r18, 0x10 ; 16 - ae6: 81 f1 breq .+96 ; 0xb48 <__ultoa_invert+0x6c> - ae8: e8 94 clt - aea: 6f 93 push r22 - aec: 6e 7f andi r22, 0xFE ; 254 - aee: 6e 5f subi r22, 0xFE ; 254 - af0: 7f 4f sbci r23, 0xFF ; 255 - af2: 8f 4f sbci r24, 0xFF ; 255 - af4: 9f 4f sbci r25, 0xFF ; 255 - af6: af 4f sbci r26, 0xFF ; 255 - af8: b1 e0 ldi r27, 0x01 ; 1 - afa: 3e d0 rcall .+124 ; 0xb78 <__ultoa_invert+0x9c> - afc: b4 e0 ldi r27, 0x04 ; 4 - afe: 3c d0 rcall .+120 ; 0xb78 <__ultoa_invert+0x9c> - b00: 67 0f add r22, r23 - b02: 78 1f adc r23, r24 - b04: 89 1f adc r24, r25 - b06: 9a 1f adc r25, r26 - b08: a1 1d adc r26, r1 - b0a: 68 0f add r22, r24 - b0c: 79 1f adc r23, r25 - b0e: 8a 1f adc r24, r26 - b10: 91 1d adc r25, r1 - b12: a1 1d adc r26, r1 - b14: 6a 0f add r22, r26 - b16: 71 1d adc r23, r1 - b18: 81 1d adc r24, r1 - b1a: 91 1d adc r25, r1 - b1c: a1 1d adc r26, r1 - b1e: 20 d0 rcall .+64 ; 0xb60 <__ultoa_invert+0x84> - b20: 09 f4 brne .+2 ; 0xb24 <__ultoa_invert+0x48> - b22: 68 94 set - b24: 3f 91 pop r19 - b26: 2a e0 ldi r18, 0x0A ; 10 - b28: 26 9f mul r18, r22 - b2a: 11 24 eor r1, r1 - b2c: 30 19 sub r19, r0 - b2e: 30 5d subi r19, 0xD0 ; 208 - b30: 31 93 st Z+, r19 - b32: de f6 brtc .-74 ; 0xaea <__ultoa_invert+0xe> - b34: cf 01 movw r24, r30 - b36: 08 95 ret - b38: 46 2f mov r20, r22 - b3a: 47 70 andi r20, 0x07 ; 7 - b3c: 40 5d subi r20, 0xD0 ; 208 - b3e: 41 93 st Z+, r20 - b40: b3 e0 ldi r27, 0x03 ; 3 - b42: 0f d0 rcall .+30 ; 0xb62 <__ultoa_invert+0x86> - b44: c9 f7 brne .-14 ; 0xb38 <__ultoa_invert+0x5c> - b46: f6 cf rjmp .-20 ; 0xb34 <__ultoa_invert+0x58> - b48: 46 2f mov r20, r22 - b4a: 4f 70 andi r20, 0x0F ; 15 - b4c: 40 5d subi r20, 0xD0 ; 208 - b4e: 4a 33 cpi r20, 0x3A ; 58 - b50: 18 f0 brcs .+6 ; 0xb58 <__ultoa_invert+0x7c> - b52: 49 5d subi r20, 0xD9 ; 217 - b54: 31 fd sbrc r19, 1 - b56: 40 52 subi r20, 0x20 ; 32 - b58: 41 93 st Z+, r20 - b5a: 02 d0 rcall .+4 ; 0xb60 <__ultoa_invert+0x84> - b5c: a9 f7 brne .-22 ; 0xb48 <__ultoa_invert+0x6c> - b5e: ea cf rjmp .-44 ; 0xb34 <__ultoa_invert+0x58> - b60: b4 e0 ldi r27, 0x04 ; 4 - b62: a6 95 lsr r26 - b64: 97 95 ror r25 - b66: 87 95 ror r24 - b68: 77 95 ror r23 - b6a: 67 95 ror r22 - b6c: ba 95 dec r27 - b6e: c9 f7 brne .-14 ; 0xb62 <__ultoa_invert+0x86> - b70: 00 97 sbiw r24, 0x00 ; 0 - b72: 61 05 cpc r22, r1 - b74: 71 05 cpc r23, r1 - b76: 08 95 ret - b78: 9b 01 movw r18, r22 - b7a: ac 01 movw r20, r24 - b7c: 0a 2e mov r0, r26 - b7e: 06 94 lsr r0 - b80: 57 95 ror r21 - b82: 47 95 ror r20 - b84: 37 95 ror r19 - b86: 27 95 ror r18 - b88: ba 95 dec r27 - b8a: c9 f7 brne .-14 ; 0xb7e <__ultoa_invert+0xa2> - b8c: 62 0f add r22, r18 - b8e: 73 1f adc r23, r19 - b90: 84 1f adc r24, r20 - b92: 95 1f adc r25, r21 - b94: a0 1d adc r26, r0 - b96: 08 95 ret +00000b50 <__ultoa_invert>: + b50: fa 01 movw r30, r20 + b52: aa 27 eor r26, r26 + b54: 28 30 cpi r18, 0x08 ; 8 + b56: 51 f1 breq .+84 ; 0xbac <__ultoa_invert+0x5c> + b58: 20 31 cpi r18, 0x10 ; 16 + b5a: 81 f1 breq .+96 ; 0xbbc <__ultoa_invert+0x6c> + b5c: e8 94 clt + b5e: 6f 93 push r22 + b60: 6e 7f andi r22, 0xFE ; 254 + b62: 6e 5f subi r22, 0xFE ; 254 + b64: 7f 4f sbci r23, 0xFF ; 255 + b66: 8f 4f sbci r24, 0xFF ; 255 + b68: 9f 4f sbci r25, 0xFF ; 255 + b6a: af 4f sbci r26, 0xFF ; 255 + b6c: b1 e0 ldi r27, 0x01 ; 1 + b6e: 3e d0 rcall .+124 ; 0xbec <__ultoa_invert+0x9c> + b70: b4 e0 ldi r27, 0x04 ; 4 + b72: 3c d0 rcall .+120 ; 0xbec <__ultoa_invert+0x9c> + b74: 67 0f add r22, r23 + b76: 78 1f adc r23, r24 + b78: 89 1f adc r24, r25 + b7a: 9a 1f adc r25, r26 + b7c: a1 1d adc r26, r1 + b7e: 68 0f add r22, r24 + b80: 79 1f adc r23, r25 + b82: 8a 1f adc r24, r26 + b84: 91 1d adc r25, r1 + b86: a1 1d adc r26, r1 + b88: 6a 0f add r22, r26 + b8a: 71 1d adc r23, r1 + b8c: 81 1d adc r24, r1 + b8e: 91 1d adc r25, r1 + b90: a1 1d adc r26, r1 + b92: 20 d0 rcall .+64 ; 0xbd4 <__ultoa_invert+0x84> + b94: 09 f4 brne .+2 ; 0xb98 <__ultoa_invert+0x48> + b96: 68 94 set + b98: 3f 91 pop r19 + b9a: 2a e0 ldi r18, 0x0A ; 10 + b9c: 26 9f mul r18, r22 + b9e: 11 24 eor r1, r1 + ba0: 30 19 sub r19, r0 + ba2: 30 5d subi r19, 0xD0 ; 208 + ba4: 31 93 st Z+, r19 + ba6: de f6 brtc .-74 ; 0xb5e <__ultoa_invert+0xe> + ba8: cf 01 movw r24, r30 + baa: 08 95 ret + bac: 46 2f mov r20, r22 + bae: 47 70 andi r20, 0x07 ; 7 + bb0: 40 5d subi r20, 0xD0 ; 208 + bb2: 41 93 st Z+, r20 + bb4: b3 e0 ldi r27, 0x03 ; 3 + bb6: 0f d0 rcall .+30 ; 0xbd6 <__ultoa_invert+0x86> + bb8: c9 f7 brne .-14 ; 0xbac <__ultoa_invert+0x5c> + bba: f6 cf rjmp .-20 ; 0xba8 <__ultoa_invert+0x58> + bbc: 46 2f mov r20, r22 + bbe: 4f 70 andi r20, 0x0F ; 15 + bc0: 40 5d subi r20, 0xD0 ; 208 + bc2: 4a 33 cpi r20, 0x3A ; 58 + bc4: 18 f0 brcs .+6 ; 0xbcc <__ultoa_invert+0x7c> + bc6: 49 5d subi r20, 0xD9 ; 217 + bc8: 31 fd sbrc r19, 1 + bca: 40 52 subi r20, 0x20 ; 32 + bcc: 41 93 st Z+, r20 + bce: 02 d0 rcall .+4 ; 0xbd4 <__ultoa_invert+0x84> + bd0: a9 f7 brne .-22 ; 0xbbc <__ultoa_invert+0x6c> + bd2: ea cf rjmp .-44 ; 0xba8 <__ultoa_invert+0x58> + bd4: b4 e0 ldi r27, 0x04 ; 4 + bd6: a6 95 lsr r26 + bd8: 97 95 ror r25 + bda: 87 95 ror r24 + bdc: 77 95 ror r23 + bde: 67 95 ror r22 + be0: ba 95 dec r27 + be2: c9 f7 brne .-14 ; 0xbd6 <__ultoa_invert+0x86> + be4: 00 97 sbiw r24, 0x00 ; 0 + be6: 61 05 cpc r22, r1 + be8: 71 05 cpc r23, r1 + bea: 08 95 ret + bec: 9b 01 movw r18, r22 + bee: ac 01 movw r20, r24 + bf0: 0a 2e mov r0, r26 + bf2: 06 94 lsr r0 + bf4: 57 95 ror r21 + bf6: 47 95 ror r20 + bf8: 37 95 ror r19 + bfa: 27 95 ror r18 + bfc: ba 95 dec r27 + bfe: c9 f7 brne .-14 ; 0xbf2 <__ultoa_invert+0xa2> + c00: 62 0f add r22, r18 + c02: 73 1f adc r23, r19 + c04: 84 1f adc r24, r20 + c06: 95 1f adc r25, r21 + c08: a0 1d adc r26, r0 + c0a: 08 95 ret -00000b98 <_exit>: - b98: f8 94 cli +00000c0c <_exit>: + c0c: f8 94 cli -00000b9a <__stop_program>: - b9a: ff cf rjmp .-2 ; 0xb9a <__stop_program> +00000c0e <__stop_program>: + c0e: ff cf rjmp .-2 ; 0xc0e <__stop_program> diff --git a/V2/Programm/Programm/Debug/Programm.map b/V2/Programm/Programm/Debug/Programm.map index b1424aa..165e6e2 100644 --- a/V2/Programm/Programm/Debug/Programm.map +++ b/V2/Programm/Programm/Debug/Programm.map @@ -240,7 +240,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .rela.plt *(.rela.plt) -.text 0x00000000 0xb9c +.text 0x00000000 0xc10 *(.vectors) .vectors 0x00000000 0xe4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6/crtm2560.o 0x00000000 __vector_default @@ -358,65 +358,65 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x0000014c __vector_42 0x00000150 . = ALIGN (0x2) *(.text.*) - .text._ZN6avrlib3pinINS_5portjELh4EE3setEb.part.8 + .text._ZN6avrlib3pinINS_5portjELh4EE3setEb.part.7 0x00000150 0xc Programm.o - .text._ZN6avrlib3pinINS_5portlELh5EE3setEb.part.14 + .text._ZN6avrlib3pinINS_5portlELh5EE3setEb.part.10 0x0000015c 0xc Programm.o + .text._ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE5readyEv.isra.17 + 0x00000168 0x14 Programm.o .text._ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.49 - 0x00000168 0x24 Programm.o - .text._ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE15digitalPotWriteEj.isra.50 - 0x0000018c 0x1a Programm.o - .text._ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.17 - 0x000001a6 0x44 Programm.o - .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5 - 0x000001ea 0x1e Programm.o - .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.26 - 0x00000208 0x16 Programm.o - .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.30 - 0x0000021e 0x14 Programm.o - .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.36 - 0x00000232 0xac Programm.o - .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.38 - 0x000002de 0x82 Programm.o - .text._ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4sendEj.isra.39 - 0x00000360 0x40 Programm.o + 0x0000017c 0x24 Programm.o + .text._ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.14 + 0x000001a0 0x44 Programm.o + .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.4 + 0x000001e4 0x1e Programm.o + .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.20 + 0x00000202 0x16 Programm.o + .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5clearEv.isra.24 + 0x00000218 0x14 Programm.o + .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.30 + 0x0000022c 0xac Programm.o + .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE8printHexEj.isra.32 + 0x000002d8 0x82 Programm.o + .text._ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.33 + 0x0000035a 0x40 Programm.o .text.startup.main - 0x000003a0 0x6e Programm.o - 0x000003a0 main + 0x0000039a 0x116 Programm.o + 0x0000039a main + .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv + 0x000004b0 0xaa Programm.o + 0x000004b0 _ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC2Ev - 0x0000040e 0xea Programm.o - 0x0000040e _ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev - 0x0000040e _ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC2Ev - .text._ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4initEv - 0x000004f8 0x96 Programm.o - 0x000004f8 _ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh7ELm433920ELj9600ELh0ELh6EE4initEv + 0x0000055a 0x44 Programm.o + 0x0000055a _ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev + 0x0000055a _ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC2Ev .text.startup._GLOBAL__sub_I_d - 0x0000058e 0x5a Programm.o - .text.libgcc 0x000005e8 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_tablejump_elpm.o) - 0x000005e8 __tablejump_elpm__ + 0x0000059e 0xbe Programm.o + .text.libgcc 0x0000065c 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_tablejump_elpm.o) + 0x0000065c __tablejump_elpm__ .text.avr-libc - 0x000005f0 0x5e c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) - 0x000005f0 sprintf + 0x00000664 0x5e c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + 0x00000664 sprintf .text.avr-libc - 0x0000064e 0x40a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) - 0x0000064e vfprintf + 0x000006c2 0x40a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + 0x000006c2 vfprintf .text.avr-libc - 0x00000a58 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/avr6\libc.a(strnlen_P.o) - 0x00000a58 strnlen_P + 0x00000acc 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/avr6\libc.a(strnlen_P.o) + 0x00000acc strnlen_P .text.avr-libc - 0x00000a6e 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/avr6\libc.a(strnlen.o) - 0x00000a6e strnlen + 0x00000ae2 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/avr6\libc.a(strnlen.o) + 0x00000ae2 strnlen .text.avr-libc - 0x00000a84 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/avr6\libc.a(fputc.o) - 0x00000a84 fputc + 0x00000af8 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/avr6\libc.a(fputc.o) + 0x00000af8 fputc .text.avr-libc - 0x00000adc 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/avr6\libc.a(ultoa_invert.o) - 0x00000adc __ultoa_invert - 0x00000b98 . = ALIGN (0x2) + 0x00000b50 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/avr6\libc.a(ultoa_invert.o) + 0x00000b50 __ultoa_invert + 0x00000c0c . = ALIGN (0x2) *(.fini9) - .fini9 0x00000b98 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/avr6\libgcc.a(_exit.o) - 0x00000b98 _exit - 0x00000b98 exit + .fini9 0x00000c0c 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/avr6\libgcc.a(_exit.o) + 0x00000c0c _exit + 0x00000c0c exit *(.fini9) *(.fini8) *(.fini8) @@ -435,11 +435,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00000b98 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/avr6\libgcc.a(_exit.o) + .fini0 0x00000c0c 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/avr6\libgcc.a(_exit.o) *(.fini0) - 0x00000b9c _etext = . + 0x00000c10 _etext = . -.data 0x00800200 0x6 load address 0x00000b9c +.data 0x00800200 0x6 load address 0x00000c10 0x00800200 PROVIDE (__data_start, .) *(.data) .data 0x00800200 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/avr6/crtm2560.o @@ -465,24 +465,24 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x00800206 _edata = . 0x00800206 PROVIDE (__data_end, .) -.bss 0x00800206 0x3 +.bss 0x00800206 0x5 0x00800206 PROVIDE (__bss_start, .) *(.bss) - .bss 0x00800206 0x3 Programm.o + .bss 0x00800206 0x5 Programm.o 0x00800206 r - 0x00800207 d + 0x00800209 d *(.bss*) *(COMMON) - 0x00800209 PROVIDE (__bss_end, .) - 0x00000b9c __data_load_start = LOADADDR (.data) - 0x00000ba2 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x0080020b PROVIDE (__bss_end, .) + 0x00000c10 __data_load_start = LOADADDR (.data) + 0x00000c16 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00800209 0x0 - 0x00800209 PROVIDE (__noinit_start, .) +.noinit 0x0080020b 0x0 + 0x0080020b PROVIDE (__noinit_start, .) *(.noinit*) - 0x00800209 PROVIDE (__noinit_end, .) - 0x00800209 _end = . - 0x00800209 PROVIDE (__heap_start, .) + 0x0080020b PROVIDE (__noinit_end, .) + 0x0080020b _end = . + 0x0080020b PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -563,52 +563,52 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x46c9 +.debug_info 0x00000000 0x47fd *(.debug_info) - .debug_info 0x00000000 0x3e08 Programm.o - .debug_info 0x00003e08 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/avr6\libc.a(sprintf.o) - .debug_info 0x0000400c 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/avr6\libc.a(vfprintf_std.o) - .debug_info 0x00004555 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/avr6\libc.a(fputc.o) + .debug_info 0x00000000 0x3f3c Programm.o + .debug_info 0x00003f3c 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/avr6\libc.a(sprintf.o) + .debug_info 0x00004140 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/avr6\libc.a(vfprintf_std.o) + .debug_info 0x00004689 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/avr6\libc.a(fputc.o) *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x89d +.debug_abbrev 0x00000000 0x8a6 *(.debug_abbrev) - .debug_abbrev 0x00000000 0x4ac Programm.o - .debug_abbrev 0x000004ac 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/avr6\libc.a(sprintf.o) - .debug_abbrev 0x000005d6 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/avr6\libc.a(vfprintf_std.o) - .debug_abbrev 0x000007ac 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/avr6\libc.a(fputc.o) + .debug_abbrev 0x00000000 0x4b5 Programm.o + .debug_abbrev 0x000004b5 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/avr6\libc.a(sprintf.o) + .debug_abbrev 0x000005df 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/avr6\libc.a(vfprintf_std.o) + .debug_abbrev 0x000007b5 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/avr6\libc.a(fputc.o) -.debug_line 0x00000000 0xd6b +.debug_line 0x00000000 0xd90 *(.debug_line) - .debug_line 0x00000000 0x844 Programm.o - .debug_line 0x00000844 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/avr6\libc.a(sprintf.o) - .debug_line 0x00000992 0x2ff c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) - .debug_line 0x00000c91 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/avr6\libc.a(fputc.o) + .debug_line 0x00000000 0x869 Programm.o + .debug_line 0x00000869 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/avr6\libc.a(sprintf.o) + .debug_line 0x000009b7 0x2ff c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + .debug_line 0x00000cb6 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/avr6\libc.a(fputc.o) -.debug_frame 0x00000000 0x260 +.debug_frame 0x00000000 0x248 *(.debug_frame) - .debug_frame 0x00000000 0x164 Programm.o - .debug_frame 0x00000164 0x40 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) - .debug_frame 0x000001a4 0x84 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) - .debug_frame 0x00000228 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/avr6\libc.a(fputc.o) + .debug_frame 0x00000000 0x14c Programm.o + .debug_frame 0x0000014c 0x40 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + .debug_frame 0x0000018c 0x84 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + .debug_frame 0x00000210 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/avr6\libc.a(fputc.o) -.debug_str 0x00000000 0x97d0 +.debug_str 0x00000000 0x97d8 *(.debug_str) - .debug_str 0x00000000 0x9635 Programm.o - 0x979d (size before relaxing) - .debug_str 0x00009635 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/avr6\libc.a(sprintf.o) + .debug_str 0x00000000 0x963d Programm.o + 0x97aa (size before relaxing) + .debug_str 0x0000963d 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/avr6\libc.a(sprintf.o) 0x127 (size before relaxing) - .debug_str 0x000096d1 0xb2 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + .debug_str 0x000096d9 0xb2 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) 0x198 (size before relaxing) - .debug_str 0x00009783 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/avr6\libc.a(fputc.o) + .debug_str 0x0000978b 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/avr6\libc.a(fputc.o) 0xf8 (size before relaxing) -.debug_loc 0x00000000 0x1071 +.debug_loc 0x00000000 0xfc9 *(.debug_loc) - .debug_loc 0x00000000 0x8fa Programm.o - .debug_loc 0x000008fa 0x61 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) - .debug_loc 0x0000095b 0x623 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) - .debug_loc 0x00000f7e 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/avr6\libc.a(fputc.o) + .debug_loc 0x00000000 0x852 Programm.o + .debug_loc 0x00000852 0x61 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + .debug_loc 0x000008b3 0x623 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + .debug_loc 0x00000ed6 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/avr6\libc.a(fputc.o) .debug_macinfo *(.debug_macinfo) @@ -616,12 +616,12 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x1b8 +.debug_ranges 0x00000000 0x218 *(.debug_ranges) - .debug_ranges 0x00000000 0x188 Programm.o - .debug_ranges 0x00000188 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) - .debug_ranges 0x00000198 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) - .debug_ranges 0x000001a8 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(fputc.o) + .debug_ranges 0x00000000 0x1e8 Programm.o + .debug_ranges 0x000001e8 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/avr6\libc.a(sprintf.o) + .debug_ranges 0x000001f8 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/avr6\libc.a(vfprintf_std.o) + .debug_ranges 0x00000208 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/avr6\libc.a(fputc.o) .debug_macro 0x00000000 0x2f76 *(.debug_macro) diff --git a/V2/Programm/Programm/Debug/Programm.srec b/V2/Programm/Programm/Debug/Programm.srec index 74ae1cb..3acb8c3 100644 --- a/V2/Programm/Programm/Debug/Programm.srec +++ b/V2/Programm/Programm/Debug/Programm.srec @@ -13,177 +13,184 @@ S11300A00C94A6000C94A6000C94A6000C94A60034 S11300B00C94A6000C94A6000C94A6000C94A60024 S11300C00C94A6000C94A6000C94A6000C94A60014 S11300D00C94A6000C94A6000C94A6000C94A60004 -S11300E00C94A6000C94C702C70211241FBECFEFC4 +S11300E00C94A6000C94CF02CF0211241FBECFEFB4 S11300F0D1E2DEBFCDBF00E00CBF12E0A0E0B2E071 -S1130100ECE9FBE000E00BBF02C007900D92A630C3 -S1130110B107D9F722E0A6E0B2E001C01D92A930F0 +S1130100E0E1FCE000E00BBF02C007900D92A630D6 +S1130110B107D9F722E0A6E0B2E001C01D92AB30EE S1130120B207E1F710E0CAEED0E000E006C0229783 -S11301300109FE010BBF0E94F402C83ED10780E012 -S11301400807A9F70E94D0010C94CC050C94000078 +S11301300109FE010BBF0E942E03C83ED10780E0D7 +S11301400807A9F70E94CD010C9406060C94000040 S1130150E5E0F1E08081806180830895EBE0F1E0E7 -S1130160808180628083089598E087FF02C0A09A0E -S113017001C0A098989AA19A999A880F00C000C0CB -S11301800000A198999A915081F70895CF93C82FB0 -S11301904098892F81700E94B4008C2F0E94B40073 -S11301A0409ACF910895382F98E080E0209105017E -S11301B037FF02C0206401C02F7B20930501880F04 -S11301C02091030123FD8160209105012062209389 -S11301D00501330F00C000C00000209105012F7DF0 -S11301E020930501915011F70895EBE0F1E080812F -S11301F08068808383ED90E00197F1F700C00000F0 -S113020080818F7780830895EBE0F1E090819F7B7C -S1130210908390819F7D90838BB90C94F50081E04D -S11302200E9404018FE39FE10197F1F700C00000F1 -S11302300895CF93C82F90910B01906490930B0174 -S113024090910B019F7D90930B011BB81AB80E94EB -S1130250F50099B18FEF8AB9CA30E9F4892F805536 -S1130260803110F480E80EC0903110F480EC0AC0A4 -S1130270892F8054803110F480E904C0905190316A -S113028060F580ED0E9404018FE99FE00197F1F78A -S113029000C0000022C09F3011F480EC0BC09F34DA -S11302A011F480E907C09F3111F480ED03C09F353C -S11302B049F480E80E9404018FE99FE00197F1F777 -S11302C000C0000090910B019F7B90930B010E9452 -S11302D0AE00CBB9CF910C94F500CF9108950F9354 -S11302E01F93CF93DF93CDB7DEB72A970FB6F89459 -S11302F0DEBF0FBECDBF9F938F9380E092E09F93AC -S11303008F938E010F5F1F4F1F930F930E94F8026C -S11303100F900F900F900F900F900F9011C0843E8C -S113032011F481EE0BC0863F11F48FEE07C08C3FB1 -S113033011F485EF03C08F3D09F482EE0E94190188 -S1130340F80181918F018111EACF2A960FB6F894B2 -S1130350DEBF0FBECDBFDF91CF911F910F910895E6 -S11303601F93CF93DF93182FC92FE5E0F1E020818D -S11303702F7E20830E946F018C2F0E94D300D82FE0 -S113038080E0C82F812F0E94D300C82B0E94A800B0 -S1130390CE010E946F01CE01DF91CF911F9108958C -S11303A088EC92E80E94B00181E89AEC0E94B001C6 -S11303B083E89AEC0E94B001809105018F7E8093BE -S11303C005018091030186958695869591E089279C -S11303D0817090E00E946F012FEF39E582E692E090 -S11303E02150304080409040D9F700C0000080E0A8 -S11303F091E00E94C600109228012FEF39E688E1AF -S1130400215030408040E1F700C00000F6CF1F9338 -S1130410CF93DF93A198999A409A389AA098989A82 -S1130420EAE0F1E080818860808381E880932001A4 -S113043089E080932101C8E2D1E01882188280818A -S113044080688083808180648083808180628083EF -S11304501FEF1AB98FEF99EF0197F1F700C0000071 -S113046088E30E9404018FE19EE40197F1F700C044 -S113047000000E94F5008FED91E00197F1F700C0B4 -S113048000000E94F5008FED91E00197F1F700C0A4 -S113049000000E94F5008FED91E00197F1F700C094 -S11304A0000080E00E9404018FE39FE10197F1F7CF -S11304B000C000000E940F0184E00E9404019FEF2D -S11304C021EE84E0915020408040E1F700C000001C -S11304D08CE00E9404018FE39FE10197F1F700C0D3 -S11304E000000E940F0180E091E00E94C600188382 -S11304F0DF91CF911F9108952FEF81EE94E0215069 -S113050080409040E1F700C0000080E290EC0E943F -S1130510B00187ED90E80E94B0018BEA92EC0E9452 -S1130520B00181E89AEC0E94B00180E090EE0E9454 -S1130530B00180E098EC0E94B0012FEF87EA91E6C9 -S1130540215080409040E1F700C000000E940F015C -S113055087EF94EC0E94B00180E296EA0E94B00119 -S113056087E294E90E94B00182E296EC0E94B00115 -S113057080E698E90E94B0012FEF87EA91E62150C6 -S113058080409040E1F700C000000C940F010F93ED -S11305901F93CF93DF9387E092E00E94070205E068 -S11305A011E0F80180818F7B8083C4E0D1E08881F1 -S11305B08064888380818F7D808388818062888342 -S11305C00E94A8008881806188838881877F8883CE -S11305D0F8018081877F808386E092E0DF91CF916C -S11305E01F910F910C947C020790F691E02D1994C1 -S11305F00F931F93CF93DF93CDB7DEB72E970FB62C -S1130600F894DEBF0FBECDBF0E891F8986E08C83B0 -S11306101A8309838FEF9FE79E838D83CE014A96C9 -S1130620AC01688D798DCE0101960E942703EF817C -S1130630F885E00FF11F10822E960FB6F894DEBFF6 -S11306400FBECDBFDF91CF911F910F9108952F92CF -S11306503F924F925F926F927F928F929F92AF924E -S1130660BF92CF92DF92EF92FF920F931F93CF939B -S1130670DF93CDB7DEB72C970FB6F894DEBF0FBE6D -S1130680CDBF7C016B018A01FC0117821682838134 -S113069081FFC6C188248394912C8C0E9D1EF70182 -S11306A09381F60193FD859193FF81916F018823D6 -S11306B009F4B2C1853239F493FD859193FF819198 -S11306C06F01853229F4B70190E00E944205E7CF1B -S11306D0512C312C20E02032A8F48B3261F028F424 -S11306E0803251F0833271F40BC08D3239F0803393 -S11306F049F4216028C02260246025C0286023C0FA -S1130700206121C027FD27C0382F30533A3078F4B8 -S113071026FF06C0FAE05F9E300D1124532E13C04D -S11307208AE0389E300D1124332E20620CC08E32A4 -S113073021F426FD71C1206406C08C3611F42068B2 -S113074002C0883641F4F60193FD859193FF8191AF -S11307506F018111C0CF982F9554933018F09052A7 -S1130760933028F40C5F1F4FFFE3F9830DC08336E9 -S113077031F0833771F0833509F05EC023C0F8018E -S1130780808189830E5F1F4F44244394512C54016C -S113079015C03801F2E06F0E711CF801A080B18021 -S11307A026FF03C0652D70E002C06FEF7FEFC50127 -S11307B02C870E9437052C0183012C856FE7262E98 -S11307C0222218C03801F2E06F0E711CF801A080DB -S11307D0B18026FF03C0652D70E002C06FEF7FEF8C -S11307E0C5012C870E942C052C012C8550E8252E50 -S11307F0222A830123FC1CC006C0B70180E290E0DA -S11308000E9442053A94832D90E048165906A8F3B5 -S11308100FC0F50127FC859127FE81915F01B70187 -S113082090E00E94420531103A94F1E04F1A5108C9 -S11308304114510471F7EDC0843611F0893641F545 -S1130840F80127FF07C060817181828193810C5F69 -S11308501F4F08C060817181882777FD8095982F8C -S11308600E5F1F4F4FE6B42EB22297FF09C090953A -S11308708095709561957F4F8F4F9F4FF0E8BF2A09 -S11308802AE030E0A4010E946E05A82EA81843C0F7 -S1130890853731F43FEEB32EB2222AE030E024C093 -S11308A099EFB92EB2228F36B9F020F4883509F0C9 -S11308B0B3C00DC0803721F0883709F0ADC002C045 -S11308C020E1B22AB4FE0BC084E0B82A08C024FF99 -S11308D009C0E6E0BE2A06C028E030E005C020E1F9 -S11308E030E002C020E132E0F801B7FE07C06081C9 -S11308F07181828193810C5F1F4F06C06081718179 -S113090080E090E00E5F1F4FA4010E946E05A82EA8 -S1130910A818FFE7BF22B6FE0BC02B2D2E7FA5140F -S113092050F4B4FE0AC0B2FC08C02B2D2E7E05C0C4 -S11309307A2C2B2D03C07A2C01C0752C24FF0DC0FA -S1130940FE01EA0DF11D8081803311F4297E09C076 -S113095022FF06C07394739404C0822F867809F032 -S1130960739423FD14C020FF0FC05A2C731460F439 -S1130970530C5718732C08C0B70180E290E02C8701 -S11309800E94420573942C857314B0F304C073144D -S113099010F4371801C0312C24FF12C0B70180E3D2 -S11309A090E02C870E9442052C8522FF1EC021FF67 -S11309B003C088E590E002C088E790E0B7010CC06E -S11309C0822F867891F021FD02C080E201C08BE283 -S11309D027FD8DE2B70190E00E94420506C0B701F1 -S11309E080E390E00E9442055A94A514C0F3AA94AF -S11309F0F401EA0DF11DB701808190E00E944205E7 -S1130A00A110F5CF06C0B70180E290E00E94420534 -S1130A103A943110F8CF43CEF7012681378102C0D2 -S1130A202FEF3FEFC9012C960FB6F894DEBF0FBE2F -S1130A30CDBFDF91CF911F910F91FF90EF90DF9089 -S1130A40CF90BF90AF909F908F907F906F905F906A -S1130A504F903F902F900895FC0105906150704095 -S1130A600110D8F7809590958E0F9F1F0895FC0173 -S1130A706150704001900110D8F7809590958E0FC9 -S1130A809F1F08950F931F93CF93DF938C01EB0166 -S1130A908B8181FD03C00FEF1FEF1AC082FF0DC0D1 -S1130AA02E813F818C819D812817390764F4E88168 -S1130AB0F9810193F983E88306C0E885F985802FDD -S1130AC01995892B41F78E819F8101969F838E838F -S1130AD0C801DF91CF911F910F910895FA01AA27C0 -S1130AE0283051F1203181F1E8946F936E7F6E5F6D -S1130AF07F4F8F4F9F4FAF4FB1E03ED0B4E03CD01B -S1130B00670F781F891F9A1FA11D680F791F8A1FFD -S1130B10911DA11D6A0F711D811D911DA11D20D064 -S1130B2009F468943F912AE0269F11243019305D1E -S1130B303193DEF6CF010895462F4770405D41930F -S1130B40B3E00FD0C9F7F6CF462F4F70405D4A335C -S1130B5018F0495D31FD4052419302D0A9F7EACF24 -S1130B60B4E0A6959795879577956795BA95C9F753 -S1130B7000976105710508959B01AC010A2E069446 -S1130B805795479537952795BA95C9F7620F731FFF -S10F0B90841F951FA01D0895F894FFCF4A -S1090B9C2530345820004E +S11301608081806280830895809105018F7E8093D1 +S113017005018091030183FFFCCF089598E087FF78 +S113018002C0A09A01C0A098989AA19A999A880F3F +S113019000C000C00000A198999A915081F7089579 +S11301A0382F98E080E02091050137FF02C02064D9 +S11301B001C02F7B20930501880F2091030123FDAB +S11301C0816020910501206220930501330F00C056 +S11301D000C00000209105012F7D2093050191505E +S11301E011F70895EBE0F1E080818068808383ED6E +S11301F090E00197F1F700C0000080818F77808341 +S11302000895EBE0F1E090819F7B908390819F7D46 +S113021090838BB90C94F20081E00E9401018FE37A +S11302209FE10197F1F700C000000895CF93C82F14 +S113023090910B01906490930B0190910B019F7D21 +S113024090930B011BB81AB80E94F20099B18FEF7A +S11302508AB9CA30E9F4892F8055803110F480E8D6 +S11302600EC0903110F480EC0AC0892F8054803184 +S113027010F480E904C09051903160F580ED0E9443 +S113028001018FE99FE00197F1F700C0000022C04F +S11302909F3011F480EC0BC09F3411F480E907C047 +S11302A09F3111F480ED03C09F3549F480E80E942A +S11302B001018FE99FE00197F1F700C000009091E0 +S11302C00B019F7B90930B010E94AE00CBB9CF91A1 +S11302D00C94F200CF9108950F931F93CF93DF9363 +S11302E0CDB7DEB72A970FB6F894DEBF0FBECDBFE9 +S11302F09F938F9380E092E09F938F938E010F5F83 +S11303001F4F1F930F930E9432030F900F900F9073 +S11303100F900F900F9011C0843E11F481EE0BC02A +S1130320863F11F48FEE07C08C3F11F485EF03C0B4 +S11303308F3D09F482EE0E941601F80181918F012C +S11303408111EACF2A960FB6F894DEBF0FBECDBF57 +S1130350DF91CF911F910F9108951F93CF93DF9356 +S1130360182FC92FE5E0F1E020812F7E20830E9421 +S11303706C018C2F0E94D000D82F80E0C82F812FD1 +S11303800E94D000C82B0E94A800CE010E946C01DC +S1130390CE01DF91CF911F9108950E940C0188E353 +S11303A092E80E94AD010E94B4008AEA98EB0E9490 +S11303B0AD010E94B4008AEA98EB0E94AD010E944C +S11303C0B4008AEA98EB0E94AD010E94B4008DE269 +S11303D098EB0E94AD012FEF39E582E692E02150BF +S11303E0304080409040D9F700C000000E94B40023 +S11303F084ED98EB0E94AD010E94B40080E098EB7C +S11304000E94AD010E94B40081E098EB0E94AD010E +S11304100E94B40085E098EB0E94AD010E94B400F4 +S113042080E098EB0E94AD010E94B40088E092E85D +S11304300E94AD012FEF31EE84E021503040804026 +S1130440E1F700C0000088ED92E80E94AD0181E868 +S11304509AEC0E94AD0183E89AEC0E94AD0102C0BF +S11304600E940C0180E090EB0E94AD019093060283 +S1130470809307029F3FA1F70E940C01809106021E +S11304808F3F29F4109206028091070204C080E095 +S113049090EB0E94AD0190E00E946C019FEF21EE71 +S11304A034E0915020403040E1F700C00000DACF42 +S11304B08FEF99EF0197F1F700C0000088E30E94E5 +S11304C001018FE19EE40197F1F700C000000E9452 +S11304D0F2008FED91E00197F1F700C000000E9457 +S11304E0F2008FED91E00197F1F700C000000E9447 +S11304F0F2008FED91E00197F1F700C0000080E079 +S11305000E9401018FE39FE10197F1F700C0000011 +S11305100E940C0184E00E9401019FEF21EE84E01F +S1130520915020408040E1F700C000008CE00E9420 +S113053001018FE39FE10197F1F700C000000E94E1 +S11305400C01409881E00E94BE0080E00E94BE0041 +S1130550409A8FEF809328010895A198999A409A20 +S1130560389AA098989AEAE0F1E0208128602083E4 +S113057021E82093200129E020932101A8E2B1E0A1 +S11305801C921C9220812068208320812064208377 +S11305902081206220832FEF2AB90C9458020F93F4 +S11305A01F93CF93DF9389E092E00E94AD021092F3 +S11305B006021092070205E011E0F80180818F7BAA +S11305C08083C4E0D1E088818064888380818F7DCA +S11305D080838881806288830E94A80088818061EA +S11305E088838881877F8883F8018081877F8083DF +S11305F08FE39CE90197F1F700C0000080E290ECE2 +S11306000E94AD0187ED90E80E94AD018BEA92EC67 +S11306100E94AD0181E89AEC0E94AD0180E090EE69 +S11306200E94AD0180E098EC0E94AD0187EF94EC4C +S11306300E94AD0180E296EA0E94AD0185E294E950 +S11306400E94AD0182E296EC0E94AD0180E798E938 +S1130650DF91CF911F910F910C94AD010790F6910A +S1130660E02D19940F931F93CF93DF93CDB7DEB78B +S11306702E970FB6F894DEBF0FBECDBF0E891F892B +S113068086E08C831A8309838FEF9FE79E838D8393 +S1130690CE014A96AC01688D798DCE0101960E94F7 +S11306A06103EF81F885E00FF11F10822E960FB6DB +S11306B0F894DEBF0FBECDBFDF91CF911F910F9194 +S11306C008952F923F924F925F926F927F928F92F2 +S11306D09F92AF92BF92CF92DF92EF92FF920F93CD +S11306E01F93CF93DF93CDB7DEB72C970FB6F89453 +S11306F0DEBF0FBECDBF7C016B018A01FC011782F6 +S11307001682838181FFC6C188248394912C8C0E28 +S11307109D1EF7019381F60193FD859193FF8191CD +S11307206F01882309F4B2C1853239F493FD8591B0 +S113073093FF81916F01853229F4B70190E00E9403 +S11307407C05E7CF512C312C20E02032A8F48B32E9 +S113075061F028F4803251F0833271F40BC08D3291 +S113076039F0803349F4216028C02260246025C018 +S1130770286023C0206121C027FD27C0382F3053B3 +S11307803A3078F426FF06C0FAE05F9E300D11245B +S1130790532E13C08AE0389E300D1124332E20626C +S11307A00CC08E3221F426FD71C1206406C08C3643 +S11307B011F4206802C0883641F4F60193FD859156 +S11307C093FF81916F018111C0CF982F955493307D +S11307D018F09052933028F40C5F1F4FFFE3F98315 +S11307E00DC0833631F0833771F0833509F05EC074 +S11307F023C0F801808189830E5F1F4F44244394F2 +S1130800512C540115C03801F2E06F0E711CF8012F +S1130810A080B18026FF03C0652D70E002C06FEF99 +S11308207FEFC5012C870E9471052C0183012C8563 +S11308306FE7262E222218C03801F2E06F0E711CD9 +S1130840F801A080B18026FF03C0652D70E002C0CE +S11308506FEF7FEFC5012C870E9466052C012C8564 +S113086050E8252E222A830123FC1CC006C0B701B0 +S113087080E290E00E947C053A94832D90E0481633 +S11308805906A8F30FC0F50127FC859127FE819135 +S11308905F01B70190E00E947C0531103A94F1E0C9 +S11308A04F1A51084114510471F7EDC0843611F008 +S11308B0893641F5F80127FF07C060817181828183 +S11308C093810C5F1F4F08C060817181882777FD79 +S11308D08095982F0E5F1F4F4FE6B42EB22297FFDC +S11308E009C090958095709561957F4F8F4F9F4F6C +S11308F0F0E8BF2A2AE030E0A4010E94A805A82E4F +S1130900A81843C0853731F43FEEB32EB2222AE053 +S113091030E024C099EFB92EB2228F36B9F020F41A +S1130920883509F0B3C00DC0803721F0883709F04D +S1130930ADC002C020E1B22AB4FE0BC084E0B82AE4 +S113094008C024FF09C0E6E0BE2A06C028E030E063 +S113095005C020E130E002C020E132E0F801B7FE3A +S113096007C060817181828193810C5F1F4F06C033 +S11309706081718180E090E00E5F1F4FA4010E94AE +S1130980A805A82EA818FFE7BF22B6FE0BC02B2D82 +S11309902E7FA51450F4B4FE0AC0B2FC08C02B2D5F +S11309A02E7E05C07A2C2B2D03C07A2C01C0752C09 +S11309B024FF0DC0FE01EA0DF11D8081803311F486 +S11309C0297E09C022FF06C07394739404C0822F49 +S11309D0867809F0739423FD14C020FF0FC05A2CAD +S11309E0731460F4530C5718732C08C0B70180E2D9 +S11309F090E02C870E947C0573942C857314B0F3CB +S1130A0004C0731410F4371801C0312C24FF12C031 +S1130A10B70180E390E02C870E947C052C8522FF9F +S1130A201EC021FF03C088E590E002C088E790E083 +S1130A30B7010CC0822F867891F021FD02C080E2BC +S1130A4001C08BE227FD8DE2B70190E00E947C0596 +S1130A5006C0B70180E390E00E947C055A94A51477 +S1130A60C0F3AA94F401EA0DF11DB701808190E06E +S1130A700E947C05A110F5CF06C0B70180E290E08A +S1130A800E947C053A943110F8CF43CEF7012681B9 +S1130A90378102C02FEF3FEFC9012C960FB6F894AF +S1130AA0DEBF0FBECDBFDF91CF911F910F91FF909D +S1130AB0EF90DF90CF90BF90AF909F908F907F90FA +S1130AC06F905F904F903F902F900895FC01059098 +S1130AD0615070400110D8F7809590958E0F9F1F3C +S1130AE00895FC016150704001900110D8F7809581 +S1130AF090958E0F9F1F08950F931F93CF93DF93AD +S1130B008C01EB018B8181FD03C00FEF1FEF1AC035 +S1130B1082FF0DC02E813F818C819D81281739076A +S1130B2064F4E881F9810193F983E88306C0E885D8 +S1130B30F985802F1995892B41F78E819F81019624 +S1130B409F838E83C801DF91CF911F910F910895E8 +S1130B50FA01AA27283051F1203181F1E8946F93EA +S1130B606E7F6E5F7F4F8F4F9F4FAF4FB1E03ED090 +S1130B70B4E03CD0670F781F891F9A1FA11D680F2E +S1130B80791F8A1F911DA11D6A0F711D811D911D61 +S1130B90A11D20D009F468943F912AE0269F1124D6 +S1130BA03019305D3193DEF6CF010895462F47703A +S1130BB0405D4193B3E00FD0C9F7F6CF462F4F7095 +S1130BC0405D4A3318F0495D31FD4052419302D0F3 +S1130BD0A9F7EACFB4E0A695979587957795679599 +S1130BE0BA95C9F700976105710508959B01AC0199 +S1130BF00A2E06945795479537952795BA95C9F7C0 +S1130C00620F731F841F951FA01D0895F894FFCFD2 +S1090C10253034582000D9 S9030000FC diff --git a/V2/Programm/Programm/Programm.cpp b/V2/Programm/Programm/Programm.cpp index af4fd0e..6ced6b6 100644 --- a/V2/Programm/Programm/Programm.cpp +++ b/V2/Programm/Programm/Programm.cpp @@ -25,9 +25,14 @@ rfm12class r; int main(void) { + r.txpacket(ALL, MASTER, SETACTIVE); r.beginasyncrx(); - d.printHex(r.hasdata()); - _delay_ms(15000); + while(1) { + while(!r.hasdata()) {d.clear();} + d.clear(); + d.printHex(r.rxbyte()); + _delay_ms(100); + } //char t[20]; d.setContrast(255); d.setBacklight(0); diff --git a/V2/Programm/Programm/io/rfm12b.hpp b/V2/Programm/Programm/io/rfm12b.hpp index 61a32d7..3871474 100644 --- a/V2/Programm/Programm/io/rfm12b.hpp +++ b/V2/Programm/Programm/io/rfm12b.hpp @@ -22,22 +22,40 @@ class Rfm12B { } void beginasyncrx() { - this->send(0x82C8); // RX on - this->send(0xCA81); // set FIFO mode - this->send(0xCA83); // enable FIFO + /************************************************************************ + * 0x82D8 - 2 + * RF Frontend, Baseband, synth, oscillator + * 0xCA81 - 7 + * FIFO 8 Bit, sp 0, Sync pattern, fifo stop, non sensitive reset + * 0xCA83 - 7 + * FIFO 8 Bit, sp 0, Sync pattern, fifo start, non sensitive reset + ************************************************************************/ + this->send(0x82D8); //war 0x82C8 + this->send(0xCA81); + this->send(0xCA83); } - uint8_t hasdata() { - s.CSOn(); - return s.has_data(); + uint16_t hasdata() { + uint16_t rec = this->send(0xB000); + this->hasdatav = (uint8_t)(rec >> 8); + this->data = (uint8_t)rec; + return (this->hasdatav == 0xFF); } uint8_t rxbyte() { + if((this->hasdatav == 0xFF)) { + this->hasdatav = 0; + return this->data; + } return this->send(0xB000); } void endasyncrx() { - this->send(0x8208); // RX off + /************************************************************************ + * 0x8258 - 2 + * RF off, Baseband on, TX off, Synth on, cystal on + ************************************************************************/ + this->send(0x8258); // RX off } void txdata(uint8_t *data, uint8_t number) { @@ -76,7 +94,11 @@ class Rfm12B { } void txpacket(uint8_t addr, uint8_t from, uint8_t data) { - this->send(0x8238); // TX on + /************************************************************************/ + /* */ + /************************************************************************/ + d.clear(); + this->send(0x8278); //war 8238 // TX on this->ready(); this->send(0xB8AA); this->ready(); @@ -85,6 +107,7 @@ class Rfm12B { this->send(0xB8AA); this->ready(); this->send(0xB82D); + _delay_ms(15000); this->ready(); this->send(0xB8D4); this->ready(); @@ -100,6 +123,8 @@ class Rfm12B { _delay_ms(100); } private: + uint8_t hasdatav = 0; + uint8_t data = 0; Spi s; uint16_t send(uint16_t wert) { s.CSOn(); @@ -111,27 +136,48 @@ class Rfm12B { return werti; } void init(void) { - _delay_ms(100); - - this->send(0xC020); // AVR CLK: 10MHz - this->send(0x80D7); // Enable FIFO - this->send(0xC2AB); // Data Filter: internal - this->send(0xCA81); // Set FIFO mode - this->send(0xE000); // disable wakeuptimer - this->send(0xC800); // disable low duty cycle - _delay_ms(2000); - d.clear(); - this->send(0xC4F7); // AFC settings: autotuning: -10kHz...+7,5kHz + _delay_ms(10); + /************************************************************************ + * 0xC0E0 - 16 + * 10 MHZ Output + * 0x80D7 - 1 + * Internal Data Register, Fifo mode, 433 mhz, 12pF + * 0xC2AB - 6 + * clock recovery auto lock, DQD threshold 4 + * 0xCA81 - 7 + * fifo level 8 bit, no sensety reset + * 0xE000 - 14 + * r = 0, m = 0 = 0,5ms + * 0xC800 - 15 + * low duty off + * 0xC4F7 - 10 + * independely from VDI, +7,5 -10 rangelimit, fine mode, frequenzy offst register, calc offset + ************************************************************************/ + this->send(0xC020); + this->send(0x80D7); + this->send(0xC2AB); + this->send(0xCA81); + this->send(0xE000); + this->send(0xC800); + this->send(0xC4F7); - this->setfreq(); // Sende/Empfangsfrequenz auf 433,92MHz einstellen - this->setbandwidth(); // 400kHz Bandbreite, 0dB Verstärkung, DRSSI threshold: -61dBm - this->setbaud(); // 19200 baud - this->setpower(); // 1mW Ausgangsleistung, 120kHz Frequenzshift - _delay_ms(2000); - d.clear(); + /************************************************************************ + * 0xA620 - 3 Freuqzenz + * 10*1*(43+1568/4000) = 433,92 MHz + * 0x9427 - 5 Bandbreise + * VDI Out Fast, Bandwidth 400 kHz, 0 Gain, rssi -73db, rssith = -73 + * 0xC622 - 4 Baud + * (10000/29/(1+0*7)/9,6)-1 = 34 + * 0x9860 - 11 Power, FSK Shift + * Frequenzshift +105 = (7+1)*(15), power 0 = 0db + ************************************************************************/ + this->setfreq(); + this->setbandwidth(); + this->setbaud(); + this->setpower(); } void setbandwidth() { - this->send( 0x9400 | ( ( bandwidth & 7 ) << 5 ) | ( ( gain & 3 ) << 3 ) | ( drssi & 7 ) ); + this->send( 0x9400 | ( ( bandwidth & 7 ) << 5 ) | ( ( gain & 3 ) << 3 ) | ( drssi & 5 ) ); } void setfreq() { uint16_t freq = (uint16_t)(((float)(frequenz-430000)/1000)/0.0025); // macro for calculating frequency value out of frequency in kHz diff --git a/V2/Programm/Programm/peripheral.h b/V2/Programm/Programm/peripheral.h index 87aa8fc..fa15ef8 100644 --- a/V2/Programm/Programm/peripheral.h +++ b/V2/Programm/Programm/peripheral.h @@ -91,11 +91,11 @@ typedef Rfm12B< spiclass, //SPI Hardware 1, //Bandwidth // 400kHz Bandbreite, 0dB Verstärkung, DRSSI threshold: -61dBm 0, //Gain - 7, //DRRSI + 5, //DRRSI 433920,//(uint16_t)RF12FREQ(433.92), // Sende/Empfangsfrequenz auf 433,92MHz einstellen 9600, //Baudrate // 9600 baud 0, //Power // 1mW Ausgangsleistung, 120kHz Frequenzshift - 6 //Mod + 7 //Shift (war 6 = 105 kHz) > rfm12class; #endif /* PERIPHERAL_H_ */ \ No newline at end of file