From 58abd4ce060b32225120dc566a645b15d6008114 Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Thu, 15 May 2014 16:10:00 +0000 Subject: [PATCH] 20140515-181001 --- V2/Programm/Programm.atsuo | Bin 20480 -> 20480 bytes V2/Programm/Programm/Debug/Programm.elf | Bin 93270 -> 93699 bytes V2/Programm/Programm/Debug/Programm.hex | 347 +-- V2/Programm/Programm/Debug/Programm.lss | 3164 +++++++++++----------- V2/Programm/Programm/Debug/Programm.map | 194 +- V2/Programm/Programm/Debug/Programm.srec | 347 +-- V2/Programm/Programm/Programm.cpp | 9 +- V2/Programm/Programm/io/rfm12b.hpp | 98 +- V2/Programm/Programm/peripheral.h | 4 +- 9 files changed, 2145 insertions(+), 2018 deletions(-) diff --git a/V2/Programm/Programm.atsuo b/V2/Programm/Programm.atsuo index b520818c057bfd966c7e1067cf9b79cd02f7c926..e26d1342868daa90661d557ca799834d547d7e09 100644 GIT binary patch delta 126 zcmZozz}T>WaYGIZo5AUgd+iG*7qMLAWRzuKU|WaYGIZ+X1)z+(G%1i&!plGRQJ8Ffar0WC3N3$qgJVn=4qoIXM~FfkJ9f z;mu$8&hv6IG6A`qa3L9gj>(5v3@4YU`m-|1frS-yHh)nKVC9ep@|0l;OSF4b00{*f A)c^nh diff --git a/V2/Programm/Programm/Debug/Programm.elf b/V2/Programm/Programm/Debug/Programm.elf index d519eca1317d77b52e045e889e22c6035a274cac..2d600b48e7177bc5e6497ab8001fc07f2bb457be 100644 GIT binary patch delta 41567 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�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 QmInI&dn8n~@p4Q42V_PNQ~&?~ 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