From d3e65629806b57cc918bcb8e0ecf15550a7e4197 Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Wed, 11 Feb 2015 17:10:07 +0000 Subject: [PATCH] Automatic Cronjob Checkin: 20150211-181004 --- Door/Debug/Door.elf | Bin 47041 -> 50745 bytes Door/Debug/Door.hex | 586 ++--- Door/Debug/Door.lss | 5084 +++++++++++++++++++++++------------------- Door/Debug/Door.map | 192 +- Door/Debug/Door.srec | 586 ++--- Door/Door.cpp | 37 +- Door/io/Stripe.hpp | 62 +- 7 files changed, 3494 insertions(+), 3053 deletions(-) diff --git a/Door/Debug/Door.elf b/Door/Debug/Door.elf index 06576b191373bd3186e43eea5c368c737b721fd5..4e7748af76f2604af5755b4dce15886348d34eb2 100644 GIT binary patch literal 50745 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 U9cvwLjIuT5l?D0bR_}=a2m7%lBLDyZ literal 47041 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 Hy(9iFp2bCf diff --git a/Door/Debug/Door.hex b/Door/Debug/Door.hex index c748881..883ec34 100644 --- a/Door/Debug/Door.hex +++ b/Door/Debug/Door.hex @@ -1,293 +1,315 @@ -:100000000C9435000C946D060C945D000C945D000E +:100000000C9435000C9422070C945D000C945D0058 :100010000C945D000C945D000C945D000C945D00EC :100020000C945D000C945D000C945D000C945D00DC :100030000C945D000C945F000C945D000C945D00CA :100040000C945D000C945D000C945D000C945D00BC :100050000C945D000C945D000C945D000C945D00AC -:100060000C945D000C945D00250711241FBECFEF9A -:10007000D4E0DEBFCDBF11E0A0E0B1E0E4EAF1E101 +:100060000C945D000C945D00DA0711241FBECFEFE5 +:10007000D4E0DEBFCDBF11E0A0E0B1E0EEE0F3E1FF :1000800002C005900D92A438B107D9F721E0A4E889 -:10009000B1E001C01D92A63BB207E1F710E0CAE64D -:1000A000D0E004C02297FE010E94CC08C836D107D8 -:1000B000C9F70E940C030C94D0080C9400001F9206 +:10009000B1E001C01D92AB3BB207E1F710E0CAE648 +:1000A000D0E004C02297FE010E948109C836D10722 +:1000B000C9F70E9421030C9485090C9400001F923B :1000C0000F920FB60F9211242F923F924F925F9290 :1000D0006F927F928F929F92AF92BF92CF92DF9258 :1000E000EF92FF920F931F932F933F934F935F9342 :1000F0006F937F938F939F93AF93BF93CF93DF9330 -:10010000EF93FF93C0918801CC2309F4F6C120E05E -:1001100030E0A90160919D0170919E0180919F0145 -:100120009091A0010E94B0078111F0C020E030E062 -:10013000A9016091A1017091A2018091A301909108 -:10014000A4010E94B0078111E4C020E030E0A901C1 -:100150006091A5017091A6018091A7019091A801DD -:100160000E94B007882329F088248394D4C0B394D4 -:1001700011C0BB24B394D0E021970F2EF4EBCF2E07 -:10018000D12CF02D0F2EF8E96F2EF1E07F2EF02DFF -:100190006C0E7D1E1B2D1150E12EF12C9E01F701DE -:1001A000EE0FFF1FEE0FFF1FEE0DFF1DE857FE4F76 -:1001B000EC0FFD1F818190E0113009F120F0123029 -:1001C00009F057C039C048B59701220F331F220FDD -:1001D000331F890108571E4F841B9109F301608169 -:1001E00070E00E949608882777FD8095982F0E94DE -:1001F000E207F801658B768B878B908F5DC0F601E7 -:1002000040819701220F331F220F331F89010857A6 -:100210001E4F841B9109F301608170E00E949608D3 -:10022000882777FD8095982F0E94E207F801658B5B -:10023000768B878B908F42C04091B300E701CC0F43 -:10024000DD1FCC0FDD1FC857DE4F841B9109F9015C -:10025000E857FE4F608970E00E949608882777FD76 -:100260008095982F0E94E2076D8B7E8B8F8B988FE5 -:1002700028C09701220F331F220F331F0F2EF8E8DB -:100280008F2EF1E09F2EF02D820E931EF3016081E0 -:1002900070E00E949608882777FD8095982F0E942D -:1002A000E207F401658B768B878B908F113031F0EC -:1002B00018F01230C9F405C068B507C1F6016081B5 -:1002C00004C16091B300E701CC0FDD1FCC0FDD1F2F -:1002D000C857DE4F70E080E090E00E94E00769A31D -:1002E0007AA38BA39CA309C1F701EE0FFF1FEE0FAA -:1002F000FF1FE857FE4F11A212A213A214A2F2E0B0 -:10030000FB1508F034CFF9C0839410C0882483947F -:1003100002C0882483940F2EF8E8AF2EF1E0BF2EA0 -:10032000F02D0F2EF4EB2F2E312CF02D982C9A94CB -:10033000C92DD0E0FE01EE0FFF1FEE0FFF1FE857A3 -:10034000FE4FC588D688E788F08C20E030E0A90110 -:10035000C701B6010E94920818164CF58E01000FD5 -:10036000111F000F111FF801E857FE4F21A132A104 -:1003700043A154A1C701B6010E944C072B013C01C7 -:10038000F5018081F801EC0FFD1FE80FF11DE85722 -:10039000FE4F608170E080E090E00E94E2079B01E8 -:1003A000AC01C301B2010E94B00718169CF520E011 -:1003B00030E0A901C701B6010E94B00788230CF004 -:1003C00056C08E01000F111F000F111FF801E857D2 -:1003D000FE4F21A132A143A154A1C701B6010E9441 -:1003E0004C072B013C01F5018081F801EC0FFD1F4A -:1003F000E80FF11DE857FE4F608170E080E090E06B -:100400000E94E2079B01AC01C301B2010E94920865 -:1004100088236CF1CC0FDD1FCC0FDD1FC857DE4FDA -:1004200029A13AA14BA15CA1C701B6010E944C07CA -:10043000262F372F462F572F682F792F49A35AA3DE -:100440006BA37CA3622F732F0E94B407F1E09F1669 -:1004500041F09F1620F082E0981232C005C068BDBE -:1004600053CFF101608350CF6093B30046C0F501D4 -:100470008081FE01EE0FFF1FEE0FFF1FEC0FFD1F2F -:10048000E80FF11DE857FE4F8081F1E09F1641F023 -:100490009F1620F092E0991209C005C088BD06C0E1 -:1004A000F101808303C0E3EBF0E08083CC0FDD1F1C -:1004B000CC0FDD1FC857DE4F1D8A1E8A1F8A188E7B -:1004C000F2E0F81508F020CF18C0C701880F991F77 -:1004D000880F991F0F2EF8E8EF2EF1E0FF2EF02D78 -:1004E000E80EF91E70E080E090E00E94E007F7015E -:1004F00061A372A383A394A33ACEFF91EF91DF91FE -:10050000CF91BF91AF919F918F917F916F915F91AB -:100510004F913F912F911F910F91FF90EF90DF909E -:10052000CF90BF90AF909F908F907F906F905F9093 -:100530004F903F902F900F900FBE0F901F901895E7 -:10054000CF93DF93789481E88093C4001092C00029 -:1005500088E08093C10086E08093C200A1E0B1E012 -:1005600095E5E0ECF0E0C6ECD0E0808185FFFDCFC2 -:1005700098839D919111F9CFE0ECF0E0808185FFA7 -:10058000FDCF8DE08093C600E0ECF0E0808185FF38 -:10059000FDCF8AE08093C600DF91CF91089560FF80 -:1005A00004C08FEF8093B30002C01092B30061FFCC -:1005B00004C08FEF8093B40002C01092B40062FFB9 -:1005C00003C08FEF88BD089518BC0895CF93DF93C3 -:1005D000FB019081992369F0DB011196E0ECF0E0DA -:1005E000C6ECD0E0808185FFFDCF98839D9191116D -:1005F000F9CFE0ECF0E0808185FFFDCF8DE08093C6 -:10060000C600E0ECF0E0808185FFFDCF8AE08093BA -:10061000C600DF91CF910895CF93DF9300D000D033 -:10062000CDB7DEB7789464E088E891E00E94CF020D -:100630006BE071E085EB91E00E94E6022FE73AE182 -:1006400086E0215030408040E1F700C0000062E0C9 -:1006500088E891E00E94CF0260E171E085EB91E0D3 -:100660000E94E6029FE7AAE1B6E09150A040B040A8 -:10067000E1F700C0000061E088E891E00E94CF024D -:1006800066E171E085EB91E00E94E6022FE73AE136 -:1006900086E0215030408040E1F700C0000067E074 -:1006A00088E891E00E94CF026CE171E085EB91E077 -:1006B0000E94E6029FE7AAE1B6E09150A040B04058 -:1006C000E1F700C00000299A60E088E891E00E940C -:1006D000CF02212C45E851E0BB24BA94AB2C0F2E5D -:1006E000F9E8EF2EF1E0FF2EF02D0EE811E00F2ECD -:1006F000F3E98F2EF1E09F2EF02D0F2EF8E96F2EEB -:10070000F1E07F2EF02D0F2EFAE03F2EF02D0F2E70 -:10071000F8E84F2EF1E05F2EF02DCC24C394E0ECEE -:10072000F0E00F2EFDE0DF2EF02DDA018C91AC927F -:100730008C3009F4FCC038F5853009F4B3C090F46E -:10074000823009F48CC038F4882309F446C0813023 -:1007500009F056C163C0833009F490C0843009F0B9 -:100760004FC195C0883009F4BEC038F4863009F412 -:10077000A4C0873009F044C1ABC08A3009F4CBC0B3 -:1007800008F0E5C1BCC0823109F40DC190F48F308E -:1007900009F4DDC138F48D3009F4D5C08E3009F08C -:1007A0002FC1DDC0803109F4E6C0813109F028C1D4 -:1007B000EEC0853109F40EC138F4833109F4C7C1A4 -:1007C000843109F01DC1FBC0873109F4C0C108F4B0 -:1007D0000CC18F3F09F014C1BAC188B58B3F20F41A -:1007E00088B58B5F88BD01C018BCA4EBB0E08C91CC -:1007F0008B3F20F48C918B5F8C9303C0A4EBB0E013 -:100800001C92A3EBB0E08C918B3F20F48C918B5F1A -:100810008C939DC1A3EBB0E01C9299C188B5853043 -:1008200020F088B5855088BD01C018BCA4EBB0E0AD -:100830008C91853020F08C9185508C9303C0A4EB73 -:10084000B0E01C92A3EBB0E08C91853020F08C914D -:1008500085508C937CC1A3EBB0E01C9278C184B529 -:100860008F7D84BDA0EBB0E08C918F758C935D98EB -:10087000559A5B98539A2B98239A69C184B58062E4 -:1008800084BDA0EBB0E08C91806A8C9360C1D701ED -:10089000BC92D8011C92D4011C92D3013C92D2018B -:1008A000CC9255C1D7011C92D801BC92D4011C92A4 -:1008B000D3013C92D201CC924AC1D7011C92D801FB -:1008C0001C92D401BC92D3013C92D201CC923FC184 -:1008D000D701BC92D801BC92D401BC92D3013C9206 -:1008E000D201CC9234C1D701BC9220E4D8012C9320 -:1008F000D4011C92D3013C92D201CC9228C1D701E1 -:100900001C92D801BC9220E4D4012C93D3013C92D8 -:10091000D201CC921CC120E4D7012C93D8011C92A7 -:10092000D401BC92D3013C92D201CC9210C1D70128 -:10093000BC9220E8D8012C93D4011C92D3013C92A4 -:10094000D201CC9204C1D7011C92D801BC9220E8FC -:10095000D4012C93D3013C92D201CC92F8C020E870 -:10096000D7012C93D8011C92D401BC92D3013C92A4 -:10097000D201CC92ECC0D701BC9220ECD8012C93D0 -:10098000D4011C92D3013C92D201CC92E0C0D70199 -:100990001C92D801BC9220ECD4012C93D3013C9240 -:1009A000D201CC92D4C020ECD7012C93D8011C9258 -:1009B000D401BC92D3013C92D201CC92C8C0D701E1 -:1009C000BC92D801BC92D4011C92D3013C92D201BA -:1009D000CC92BDC0D7011C92D801BC92D401BC926C -:1009E000D3013C92D201CC92B2C0D701BC92D801C3 -:1009F0001C92D401BC92D3013C92D201CC92A7C0EC -:100A0000282F30E03A832983808185FFFDCF80E362 -:100A1000A6ECB0E08C9360E070E0CB0196958795F2 -:100A200096958795969587959C01220F331F880F81 -:100A3000991F880F991F880F991F820F931F681B9A -:100A4000790B605D808185FFFDCFA6ECB0E06C93F3 -:100A500029813A813695279536952795ABE7B4E1FC -:100A60000E94AA0896958795805D908195FFFDCF9D -:100A7000A6ECB0E08C9329813A81ADECBCEC0E94ED -:100A8000AA089695879596958795969587959C83C0 -:100A90008B839C010E94AA089695879596958795C9 -:100AA000969587959C01220F331F880F991F880FF9 -:100AB000991F880F991F820F931F2B813C81281B40 -:100AC000390BC901805D908195FFFDCFA6ECB0E0A8 -:100AD0008C9329813A81ADECBCEC0E94AA089695D2 -:100AE000879596958795969587959C01220F331F3C -:100AF000880F991F880F991F880F991F820F931FC6 -:100B000029813A81281B390BC901805D908195FFAD -:100B1000FDCFA6ECB0E08C93A3E6B1E090E29D019E -:100B2000808185FFFDCFA6ECB0E09C93D9019D911B -:100B30009D019111F5CF808185FFFDCFA6ECB0E03E -:100B4000DC92808185FFFDCFA6ECB0E03C9200B640 -:100B500005FE2AC0211052C0D701BC92D8011C92B8 -:100B6000D4011C9224E6D3012C93D201CC92ADE6A1 -:100B7000B1E094E59D01808185FFFDCFA6ECB0E05A -:100B80009C93D9019D919D019111F5CF808185FFA5 -:100B9000FDCFA6ECB0E0DC92808185FFFDCFA6EC16 -:100BA000B0E03C922C2C2AC0B1E02B1227C0A7E762 -:100BB000B1E094E59D01808185FFFDCFA6ECB0E01A -:100BC0009C93D9019D919D019111F5CF808185FF65 -:100BD000FDCFA6ECB0E0DC92808185FFFDCFA6ECD6 -:100BE000B0E03C92D7011C92D801BC92D4011C9277 -:100BF00022E3D3012C93D201CC92212C87E893E1FC -:100C00000197F1F700C0000029989FEDAAE0B6E037 -:100C10009150A040B040E1F700C00000299A85CD76 -:100C2000559A539A239AFC01108281E084BD94E086 -:100C300095BD16BC1092800092E0909381001092B6 -:100C40008500109284001092B600E0EBF0E0808303 -:100C500095E09093B1001092B20010926E008093D4 -:100C60006F001092700084B5806284BD8081806ABC -:100C7000808318BC1092B4001092B300089520E055 -:100C800030E080E061E070E04A9BFECFEFE9FFE0FA -:100C90003197F1F700C000004A9B08C0AB01022E5B -:100CA00002C0440F551F0A94E2F7842B4A990FC0E3 -:100CB00008C04A9B06C0F5E8FA95F1F7000091508C -:100CC000C1F72F5F3F4F28303105F1F6089545E811 -:100CD0004A95F1F7000091E3ECCF1F920F920FB607 -:100CE0000F9211242F933F934F935F936F937F93B2 -:100CF0008F939F93AF93BF93CF93EF93FF93289AD4 -:100D00004A9979C08FE19EE40197F1F700C0000095 -:100D10004A9971C04A9BFECF4A99FECF80E090E08D -:100D200060E041E050E04A9BFECFEFE9FFE0319701 -:100D3000F1F700C000004A9B08C09A01082E02C0CB -:100D4000220F331F0A94E2F7622B4A9966C008C04B -:100D50004A9B06C0F5E8FA95F1F700002150C1F76B -:100D6000019688309105F9F6611139C080E090E074 -:100D700041E050E04A9BFECFEFE9FFE03197F1F709 -:100D800000C000004A9B08C09A01082E02C0220F32 -:100D9000331F0A94E2F7622B4A9939C008C04A9B74 -:100DA00006C0F5E8FA95F1F700002150C1F7019669 -:100DB00088309105F9F66F3E91F484E891E00E9445 -:100DC0003F06C82F84E891E00E943F06282F30E0BC -:100DD0002C0F311D2F3F310511F4CF3F51F42FE778 -:100DE00034E88EE1215030408040E1F700C000003F -:100DF0000BC0CE3F39F4E7E8F3E13197F1F700C0DB -:100E0000000002C0C09385012898E09A0CC0F5E864 -:100E1000FA95F1F7000021E3C2CF25E82A95F1F712 -:100E2000000021E395CFFF91EF91CF91BF91AF915A -:100E30009F918F917F916F915F914F913F912F91F2 -:100E40000F900FBE0F901F90189585EB91E00E94B8 -:100E5000A00288E891E00E941006209A219A289822 -:100E6000299856985E9857985F9810BE10927B000C -:100E700083E080937F00209A219A2898299852989D -:100E80005A988FEF8093850182E08093690081E01A -:100E90008DBB1CBA08955058BB27AA270ED008C195 -:100EA000F9D030F0FED020F031F49F3F11F41EF461 -:100EB000EEC00EF4E095E7FBE4C0E92F0AD180F321 -:100EC000BA17620773078407950718F071F49EF547 -:100ED00022C10EF4E0950B2EBA2FA02D0B01B90103 -:100EE00090010C01CA01A0011124FF27591B99F0A0 -:100EF000593F50F4503E68F11A16F040A22F232FAC -:100F0000342F4427585FF3CF469537952795A795FB -:100F1000F0405395C9F77EF41F16BA0B620B730BA2 -:100F2000840BBAF09150A1F0FF0FBB1F661F771F13 -:100F3000881FC2F70EC0BA0F621F731F841F48F4C8 -:100F4000879577956795B795F7959E3F08F0B3CF4E -:100F50009395880F08F09927EE0F97958795089538 -:100F60006CD008F481E00895BCD088F09F5790F0D1 -:100F7000B92F9927B751A0F0D1F0660F771F881FBE -:100F8000991F1AF0BA95C9F712C0B13081F0C3D0D9 -:100F9000B1E00895C0C0672F782F8827B85F39F077 -:100FA000B93FCCF3869577956795B395D9F73EF41D -:100FB00090958095709561957F4F8F4F9F4F0895C5 -:100FC000E89409C097FB3EF49095809570956195E3 -:100FD0007F4F8F4F9F4F9923A9F0F92F96E9BB2799 -:100FE0009395F695879577956795B795F111F8CF15 -:100FF000FAF4BB0F11F460FF1BC06F5F7F4F8F4F80 -:101000009F4F16C0882311F096E911C0772321F075 -:101010009EE8872F762F05C0662371F096E8862F0D -:1010200070E060E02AF09A95660F771F881FDAF764 -:10103000880F9695879597F90895990F0008550F91 -:10104000AA0BE0E8FEEF16161706E807F907C0F04E -:1010500012161306E407F50798F0621B730B840B56 -:10106000950B39F40A2661F0232B242B252B21F430 -:1010700008950A2609F4A140A6958FEF811D811DD0 -:10108000089597F99F6780E870E060E008959FEF0A -:1010900080EC089500240A9416161706180609060F -:1010A000089500240A9412161306140605060895DE -:1010B000092E0394000C11F4882352F0BB0F40F466 -:1010C000BF2B11F460FF04C06F5F7F4F8F4F9F4FA6 -:1010D000089557FD9058440F551F59F05F3F71F028 -:1010E0004795880F97FB991F61F09F3F79F087958F -:1010F0000895121613061406551FF2CF4695F1DF18 -:1011000008C0161617061806991FF1CF86957105A7 -:10111000610508940895E894BB2766277727CB01DB -:1011200097F908958ADF08F48FEF089597FB072E4B -:1011300016F4009407D077FD09D00E94B60807FC8A -:1011400005D03EF4909581959F4F089570956195D7 -:101150007F4F0895A29FB001B39FC001A39F01D00C -:10116000B29F700D811D1124911D0895AA1BBB1BF8 -:1011700051E107C0AA1FBB1FA617B70710F0A61B97 -:10118000B70B881F991F5A95A9F780959095BC01B8 -:10119000CD010895EE0FFF1F0590F491E02D099405 -:0411A000F894FFCFF1 -:1011A4005561727420646F6E652100526F74210062 -:1011B4004772FC6E2100426C61752100576569DF3E -:1011C4002C20616C6C657320496E697469616C696B -:1011D4007365727421204861626520466572746982 -:1011E4006720756E642064616D6974206162207A81 -:1011F400756D204E6F726D616C62657472696562A3 -:1012040021002050726573736564210054FC7220C0 -:101214005A752E2E2E0054FC72204F6666656E2E73 -:041224002E2E00006A +:10010000EF93FF93D0918801DD2309F40BC220E027 +:1001100030E0A9016091A1017091A2018091A30139 +:100120009091A4010E9465088111FCC020E030E09C +:10013000A9016091A5017091A6018091A7019091FC +:10014000A8010E9465088111F0C020E030E0A901FB +:100150006091A9017091AA018091AB019091AC01CD +:100160000E9465088111E4C0C091B9012C2F30E0D4 +:100170002F5F3F4F8D2F90E02817390714F4CF5F82 +:1001800001C0C0E0C093B901BB24B394D0E00F2EEE +:10019000F4EBCF2ED12CF02D0F2EFBE96F2EF1E0DA +:1001A0007F2EF02D6C0E7D1E01C0B3941B2D1150BF +:1001B000E12EF12C9E01F701EE0FFF1FEE0DFF1D4A +:1001C000EE0FFF1FE857FE4FEC0FFD1F818190E0FF +:1001D000113009F120F0123009F057C039C048B58C +:1001E0009701220F331F220F331F890108571E4F1B +:1001F000841B9109F301608170E00E944B098827FC +:1002000077FD8095982F0E949708F801618F728F73 +:10021000838F948F5DC0F60140819701220F331FB9 +:10022000220F331F890108571E4F841B9109F301C8 +:10023000608170E00E944B09882777FD8095982F98 +:100240000E949708F801618F728F838F948F42C04C +:100250004091B300E701CC0FDD1FCC0FDD1FC85765 +:10026000DE4F841B9109F901E857FE4F638970E066 +:100270000E944B09882777FD8095982F0E94970848 +:10028000698F7A8F8B8F9C8F28C09701220F331F25 +:10029000220F331F0F2EF8E88F2EF1E09F2EF02D46 +:1002A000820E931EF301608170E00E944B09882743 +:1002B00077FD8095982F0E949708F401618F728FC7 +:1002C000838F948F113031F018F01230C9F405C0CB +:1002D00068B510C1F60160810DC16091B300E701FE +:1002E000CC0FDD1FCC0FDD1FC857DE4F70E080E064 +:1002F00090E00E9495086DA37EA38FA398A712C1DA +:10030000F701EE0FFF1FEE0FFF1FE857FE4F15A27C +:1003100016A217A210A6F2E0FB1508F046CF02C104 +:10032000839414C08824839405C08824839402C0D5 +:100330008824839409EB11E00F2EF4EBAF2EB12C3F +:10034000F02D0F2EF3EB2F2E312CF02D982C9A94AC +:10035000C92DD0E0FE01EE0FFF1FEE0FFF1FE85783 +:10036000FE4FC18CD28CE38CF48C20E030E0A901EC +:10037000C701B6010E944709181664F5FE01EE0F89 +:10038000FF1FEE0FFF1FE857FE4F25A136A147A123 +:1003900050A5C701B6010E9401082B013C01F801DC +:1003A0008081FE01EE0FFF1FEC0FFD1FEE0FFF1F00 +:1003B000E857FE4FE80FF11D618170E080E090E0AA +:1003C0000E9497089B01AC01C301B2010E9465081D +:1003D0001816B4F520E030E0A901C701B6010E946B +:1003E000650888230CF059C0FE01EE0FFF1FEE0FC9 +:1003F000FF1FE857FE4F25A136A147A150A5C70111 +:10040000B6010E9401082B013C01F8018081FE0128 +:10041000EE0FFF1FEC0FFD1FEE0FFF1FE857FE4F03 +:10042000E80FF11D618170E080E090E00E94970884 +:100430009B01AC01C301B2010E94470988236CF102 +:10044000CC0FDD1FCC0FDD1FC857DE4F2DA13EA105 +:100450004FA158A5C701B6010E940108262F372FCA +:10046000462F572F682F792F4DA35EA36FA378A730 +:10047000622F732F0E946908F1E09F1641F09F16CA +:1004800020F082E0981231C005C068BD49CFF50167 +:10049000608346CF6093B30045C0F8018081FE01C0 +:1004A000EE0FFF1FEC0FFD1FEE0FFF1FE857FE4F73 +:1004B000E80FF11D8181F1E09F1641F09F1620F0B9 +:1004C00092E0991208C005C088BD05C0F50180837F +:1004D00002C0F1018083CC0FDD1FCC0FDD1FC85798 +:1004E000DE4F198E1A8E1B8E1C8EF2E0F81508F066 +:1004F00017CF18C0C701880F991F880F991F0F2E9B +:10050000F8E8EF2EF1E0FF2EF02DE80EF91E70E076 +:1005100080E090E00E949508F70165A376A387A389 +:1005200090A743CEFF91EF91DF91CF91BF91AF9113 +:100530009F918F917F916F915F914F913F912F91FB +:100540001F910F91FF90EF90DF90CF90BF90AF90F1 +:100550009F908F907F906F905F904F903F902F90E3 +:100560000F900FBE0F901F901895CF93DF93789444 +:1005700081E88093C4001092C00088E08093C1009D +:1005800086E08093C200A1E0B1E095E5E0ECF0E008 +:10059000C6ECD0E0808185FFFDCF98839D919111BD +:1005A000F9CFE0ECF0E0808185FFFDCF8DE0809316 +:1005B000C600E0ECF0E0808185FFFDCF8AE080930B +:1005C000C600DF91CF91089560FF04C08FEF809344 +:1005D000B30002C01092B30061FF04C08FEF80939C +:1005E000B40002C01092B40062FF03C08FEF88BD58 +:1005F000089518BC0895CF93DF93FB019081992350 +:1006000069F0DB011196E0ECF0E0C6ECD0E080810F +:1006100085FFFDCF98839D919111F9CFE0ECF0E03B +:10062000808185FFFDCF8DE08093C600E0ECF0E097 +:10063000808185FFFDCF8AE08093C600DF91CF9156 +:100640000895CF93DF9300D000D01F92CDB7DEB7CF +:10065000789464E088E891E00E94E4026BE071E045 +:100660008AEB91E00E94FB022FE73AE186E02150FD +:1006700030408040E1F700C0000062E088E891E08F +:100680000E94E40260E171E08AEB91E00E94FB02CB +:100690009FE7AAE1B6E09150A040B040E1F700C06A +:1006A000000061E088E891E00E94E40266E171E008 +:1006B0008AEB91E00E94FB022FE73AE186E02150AD +:1006C00030408040E1F700C0000067E088E891E03A +:1006D0000E94E4026CE171E08AEB91E00E94FB026F +:1006E0009FE7AAE1B6E09150A040B040E1F700C01A +:1006F0000000299A60E088E891E00E94E402312C31 +:1007000045E851E01FEF0F2EF9E8EF2EF1E0FF2E44 +:10071000F02D0F2EF5E98F2EF1E09F2EF02D0F2EEC +:10072000FBE96F2EF1E07F2EF02D0F2EFAE02F2E39 +:10073000F02D0F2EF8E84F2EF1E05F2EF02DAA24B9 +:10074000A3940F2EF9EBCF2EF1E0DF2EF02DE0EC8D +:10075000F0E00F2EFDE0BF2EF02D3982012FDA01DF +:100760008C910C938C3009F4F9C038F5853009F47C +:1007700082C090F4823009F458C038F4882309F418 +:1007800046C0813009F0EAC149C0833009F45CC039 +:10079000843009F0E3C161C0883009F496C038F4B0 +:1007A000863009F476C0873009F0D8C180C08A301D +:1007B00009F4A9C008F0B6C097C0823109F43AC163 +:1007C00090F48F3009F4F7C038F48D3009F4D5C0B7 +:1007D0008E3009F0C3C1E0C0803109F40DC1813110 +:1007E00009F0BCC118C1853109F47CC138F48331EA +:1007F00009F42FC1843109F0B1C166C1873109F410 +:100800008DC108F47DC18F3F09F0A8C14EC2B981E6 +:10081000BF3F09F44AC2BF5FB98347C2298122237F +:1008200009F443C22150298340C284B58F7D84BD21 +:10083000A0EBB0E08C918F758C935D98559A5B9886 +:10084000539A2B98239A31C284B5806284BDA0EB61 +:10085000B0E08C91806A8C9328C2D7011C93AFE8DA +:10086000B1E01C92D4011C92D3012C92D201AC9223 +:10087000D6011C921AC2D7011C92AFE8B1E01C93BA +:10088000D4011C92D3012C92D201AC92D6011C92BD +:100890000CC2D7011C92AFE8B1E01C92D4011C93AA +:1008A000D3012C92D201AC92D6011C92FEC1D70189 +:1008B0001C93AFE8B1E01C93D4011C93D3012C929C +:1008C000D201AC92D6011C92F0C1D7011C9380E4F6 +:1008D000AFE8B1E08C93D4011C92D3012C92D201E9 +:1008E000AC92D6011C92E1C1D7011C92AFE8B1E0F5 +:1008F0001C9380E4D4018C93D3012C92D201AC924E +:10090000D6011C92D2C180E4D7018C93AFE8B1E04C +:100910001C92D4011C93D3012C92D201AC92D6012B +:100920001C92C3C1D7011C93AFE8B1E01C93D40162 +:100930001C932981D3012C93AAE8B1E01C92A0E971 +:10094000B1E01C92A6E9B1E01C92ACE9B1E02C93B5 +:1009500082E0D2018C93D6011C92A7C1D7011C93CF +:1009600020E8AFE8B1E02C93D4011C92D3012C9283 +:10097000D201AC92D6011C9298C1D7011C92AFE86B +:10098000B1E01C9320E8D4012C93D3012C92D20126 +:10099000AC92D6011C9289C120E8D7012C93AFE814 +:1009A000B1E01C92D4011C93D3012C92D201AC92E1 +:1009B000D6011C927AC18091B3009091B40028B501 +:1009C000D7012C93AFE8B1E09C93D4018C9329819B +:1009D000D3012C93AAE8B1E01C92A0E9B1E01C92EB +:1009E000A6E9B1E01C92ACE9B1E02C9382E0D2011F +:1009F0008C93D6011C9259C1D7011C9320ECAFE80F +:100A0000B1E02C93D4011C92D3012C92D201AC9270 +:100A1000D6011C924AC1D7011C92AFE8B1E01C93E9 +:100A200020ECD4012C93D3012C92D201AC92D601AC +:100A30001C923BC120ECD7012C93AFE8B1E01C9293 +:100A4000D4011C93D3012C92D201AC92D6011C92FA +:100A50002CC1D7011C93AFE8B1E01C92D4011C92C9 +:100A6000D3011C93AAE8B1E01C93A0E9B1E01C9368 +:100A7000A6E9B1E01C92ACE9B1E01C9310928B01A5 +:100A8000109391011092970110939D0110928C0187 +:100A9000109392011093980110939E0110928D0172 +:100AA000109293011093990110939F0110938E015E +:100AB0001092940110939A011093A00186E0D20144 +:100AC0008C93D6011C92F1C0D7011C93AFE8B1E022 +:100AD0001C93D4011C92D3012C92D201AC92D6016A +:100AE0001C92E3C0D7011C92AFE8B1E01C93D40183 +:100AF0001C93D3012C92D201AC92D6011C92D5C08A +:100B0000D7011C93AFE8B1E01C92D4011C93D30130 +:100B10002C92D201AC92D6011C92C7C0D7011C9274 +:100B2000AFE8B1E01C9320E1D4012C9329E1D3017B +:100B30002C93AAE8B1E01C922AEAA0E9B1E02C9338 +:100B400020E1A6E9B1E02C938FE0ACE9B1E08C9311 +:100B500082E0D2018C93D6011C92A7C0282F30E0EE +:100B60003B832A83808185FFFDCF80E3A6ECB0E044 +:100B70008C9360E070E0CB0196958795969587956C +:100B8000969587959C01220F331F880F991F880F18 +:100B9000991F880F991F820F931F681B790B605D47 +:100BA000808185FFFDCFA6ECB0E06C932A813B816C +:100BB0003695279536952795ABE7B4E10E945F09F6 +:100BC00096958795805D908195FFFDCFA6ECB0E06E +:100BD0008C932A813B81ADECBCEC0E945F09969519 +:100BE000879596958795969587959D838C839C018F +:100BF0000E945F0996958795969587959695879516 +:100C00009C01220F331F880F991F880F991F880F8F +:100C1000991F820F931F2C813D81281B390BC9011D +:100C2000805D908195FFFDCFA6ECB0E08C932A818A +:100C30003B81ADECBCEC0E945F099695879596953B +:100C40008795969587959C01220F331F880F991FD2 +:100C5000880F991F880F991F820F931F2A813B814C +:100C6000281B390BC901805D908195FFFDCFA6EC53 +:100C7000B0E08C93A3E6B1E090E29D01808185FF16 +:100C8000FDCFA6ECB0E09C93D9019D919D019111FF +:100C9000F5CF808185FFFDCFA6ECB0E0BC928081CE +:100CA00085FFFDCFA6ECB0E02C9200B605FE2DC06E +:100CB000311058C0D7011C93AFE8B1E01C92D401A9 +:100CC0001C9284E6D3018C93D201AC92D6011C9283 +:100CD000ADE6B1E094E59D01808185FFFDCFA6ECF6 +:100CE000B0E09C93D9019D919D019111F5CF808138 +:100CF00085FFFDCFA6ECB0E0BC92808185FFFDCFE3 +:100D0000A6ECB0E02C923A2C2DC0B1E03B122AC0E8 +:100D1000A7E7B1E094E59D01808185FFFDCFA6ECBA +:100D2000B0E09C93D9019D919D019111F5CF8081F7 +:100D300085FFFDCFA6ECB0E0BC92808185FFFDCFA2 +:100D4000A6ECB0E02C92D7011C92AFE8B1E01C9366 +:100D5000D4011C9282E3D3018C93D201AC92D601D0 +:100D60001C92312C87E893E10197F1F700C0000055 +:100D700029989FEDAAE0B6E09150A040B040E1F77D +:100D800000C00000299AEBCC559A539A239AFC0193 +:100D9000108211AA81E084BD94E095BD16BC10922A +:100DA000800092E090938100109285001092840060 +:100DB0001092B600E0EBF0E0808395E09093B100F4 +:100DC0001092B20010926E0080936F00109270002B +:100DD00084B5806284BD8081806A808318BC109253 +:100DE000B4001092B300089520E030E080E061E0AC +:100DF00070E04A9BFECFEFE9FFE03197F1F700C0CA +:100E000000004A9B08C0AB01022E02C0440F551FD0 +:100E10000A94E2F7842B4A990FC008C04A9B06C087 +:100E2000F5E8FA95F1F700009150C1F72F5F3F4FB9 +:100E300028303105F1F6089545E84A95F1F70000AC +:100E400091E3ECCF1F920F920FB60F9211242F93C4 +:100E50003F934F935F936F937F938F939F93AF9342 +:100E6000BF93CF93EF93FF93289A4A9979C08FE16C +:100E70009EE40197F1F700C000004A9971C04A9BB7 +:100E8000FECF4A99FECF80E090E060E041E050E084 +:100E90004A9BFECFEFE9FFE03197F1F700C0000079 +:100EA0004A9B08C09A01082E02C0220F331F0A94E1 +:100EB000E2F7622B4A9966C008C04A9B06C0F5E873 +:100EC000FA95F1F700002150C1F70196883091059D +:100ED000F9F6611139C080E090E041E050E04A9BB2 +:100EE000FECFEFE9FFE03197F1F700C000004A9B29 +:100EF00008C09A01082E02C0220F331F0A94E2F79D +:100F0000622B4A9939C008C04A9B06C0F5E8FA9599 +:100F1000F1F700002150C1F7019688309105F9F6EC +:100F20006F3E91F484E891E00E94F406C82F84E8B3 +:100F300091E00E94F406282F30E02C0F311D2F3F46 +:100F4000310511F4CF3F51F42FE734E88EE1215001 +:100F500030408040E1F700C000000BC0CE3F39F4C4 +:100F6000E7E8F3E13197F1F700C0000002C0C09359 +:100F700085012898E09A0CC0F5E8FA95F1F7000091 +:100F800021E3C2CF25E82A95F1F7000021E395CFB0 +:100F9000FF91EF91CF91BF91AF919F918F917F91F1 +:100FA0006F915F914F913F912F910F900FBE0F90D6 +:100FB0001F9018958AEB91E00E94B50288E891E0B5 +:100FC0000E94C406209A219A2898299856985E98DB +:100FD00057985F9810BE10927B0083E080937F004B +:100FE000209A219A2898299852985A988FEF80939E +:100FF000850182E08093690081E08DBB1CBA089571 +:101000005058BB27AA270ED008C1F9D030F0FED027 +:1010100020F031F49F3F11F41EF4EEC00EF4E09581 +:10102000E7FBE4C0E92F0AD180F3BA176207730720 +:101030008407950718F071F49EF522C10EF4E0952F +:101040000B2EBA2FA02D0B01B90190010C01CA0182 +:10105000A0011124FF27591B99F0593F50F4503E2D +:1010600068F11A16F040A22F232F342F4427585F1F +:10107000F3CF469537952795A795F0405395C9F737 +:101080007EF41F16BA0B620B730B840BBAF09150EF +:10109000A1F0FF0FBB1F661F771F881FC2F70EC08E +:1010A000BA0F621F731F841F48F487957795679561 +:1010B000B795F7959E3F08F0B3CF9395880F08F04A +:1010C0009927EE0F9795879508956CD008F481E0E5 +:1010D0000895BCD088F09F5790F0B92F9927B75149 +:1010E000A0F0D1F0660F771F881F991F1AF0BA95EC +:1010F000C9F712C0B13081F0C3D0B1E00895C0C0CB +:10110000672F782F8827B85F39F0B93FCCF38695E1 +:1011100077956795B395D9F73EF49095809570953E +:1011200061957F4F8F4F9F4F0895E89409C097FBBB +:101130003EF490958095709561957F4F8F4F9F4FAE +:101140009923A9F0F92F96E9BB279395F6958795F2 +:1011500077956795B795F111F8CFFAF4BB0F11F4B5 +:1011600060FF1BC06F5F7F4F8F4F9F4F16C088235C +:1011700011F096E911C0772321F09EE8872F762F92 +:1011800005C0662371F096E8862F70E060E02AF0D3 +:101190009A95660F771F881FDAF7880F96958795BF +:1011A00097F90895990F0008550FAA0BE0E8FEEF94 +:1011B00016161706E807F907C0F012161306E4071B +:1011C000F50798F0621B730B840B950B39F40A2614 +:1011D00061F0232B242B252B21F408950A2609F4F2 +:1011E000A140A6958FEF811D811D089597F99F67F6 +:1011F00080E870E060E008959FEF80EC089500249F +:101200000A941616170618060906089500240A946B +:1012100012161306140605060895092E0394000CF1 +:1012200011F4882352F0BB0F40F4BF2B11F460FF80 +:1012300004C06F5F7F4F8F4F9F4F089557FD9058A9 +:10124000440F551F59F05F3F71F04795880F97FB8A +:10125000991F61F09F3F79F0879508951216130644 +:101260001406551FF2CF4695F1DF08C01616170673 +:101270001806991FF1CF86957105610508940895A8 +:10128000E894BB2766277727CB0197F908958ADF73 +:1012900008F48FEF089597FB072E16F4009407D0FB +:1012A00077FD09D00E946B0907FC05D03EF49095AC +:1012B00081959F4F0895709561957F4F0895A29FE6 +:1012C000B001B39FC001A39F01D0B29F700D811DDB +:1012D0001124911D0895AA1BBB1B51E107C0AA1F31 +:1012E000BB1FA617B70710F0A61BB70B881F991FC7 +:1012F0005A95A9F780959095BC01CD010895EE0F00 +:0E130000FF1F0590F491E02D0994F894FFCFA3 +:10130E005561727420646F6E652100526F742100F6 +:10131E004772FC6E2100426C61752100576569DFD2 +:10132E002C20616C6C657320496E697469616C69FF +:10133E007365727421204861626520466572746916 +:10134E006720756E642064616D6974206162207A15 +:10135E00756D204E6F726D616C6265747269656237 +:10136E0021002050726573736564210054FC722055 +:10137E005A752E2E2E0054FC72204F6666656E2E08 +:04138E002E2E0000FF :00000001FF diff --git a/Door/Debug/Door.lss b/Door/Debug/Door.lss index 6e0f1b9..4e59cb7 100644 --- a/Door/Debug/Door.lss +++ b/Door/Debug/Door.lss @@ -3,40 +3,40 @@ Door.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000084 00800100 000011a4 00001238 2**0 + 0 .data 00000084 00800100 0000130e 000013a2 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 000011a4 00000000 00000000 00000094 2**1 + 1 .text 0000130e 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 00000032 00800184 00800184 000012bc 2**0 + 2 .bss 00000037 00800184 00800184 00001426 2**0 ALLOC - 3 .stab 00001968 00000000 00000000 000012bc 2**2 + 3 .stab 00001968 00000000 00000000 00001428 2**2 CONTENTS, READONLY, DEBUGGING - 4 .stabstr 000005b5 00000000 00000000 00002c24 2**0 + 4 .stabstr 000005b5 00000000 00000000 00002d90 2**0 CONTENTS, READONLY, DEBUGGING - 5 .comment 0000002f 00000000 00000000 000031d9 2**0 + 5 .comment 0000002f 00000000 00000000 00003345 2**0 CONTENTS, READONLY - 6 .debug_aranges 00000060 00000000 00000000 00003208 2**0 + 6 .debug_aranges 00000060 00000000 00000000 00003374 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_info 0000384a 00000000 00000000 00003268 2**0 + 7 .debug_info 00003ed2 00000000 00000000 000033d4 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_abbrev 000004fd 00000000 00000000 00006ab2 2**0 + 8 .debug_abbrev 0000050e 00000000 00000000 000072a6 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_line 000005f9 00000000 00000000 00006faf 2**0 + 9 .debug_line 00000653 00000000 00000000 000077b4 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_frame 000001b8 00000000 00000000 000075a8 2**2 + 10 .debug_frame 000001b8 00000000 00000000 00007e08 2**2 CONTENTS, READONLY, DEBUGGING - 11 .debug_str 00001435 00000000 00000000 00007760 2**0 + 11 .debug_str 00001492 00000000 00000000 00007fc0 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 000017a5 00000000 00000000 00008b95 2**0 + 12 .debug_loc 00001d30 00000000 00000000 00009452 2**0 CONTENTS, READONLY, DEBUGGING - 13 .debug_ranges 00000340 00000000 00000000 0000a33a 2**0 + 13 .debug_ranges 00000370 00000000 00000000 0000b182 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: 0: 0c 94 35 00 jmp 0x6a ; 0x6a <__ctors_end> - 4: 0c 94 6d 06 jmp 0xcda ; 0xcda <__vector_1> + 4: 0c 94 22 07 jmp 0xe44 ; 0xe44 <__vector_1> 8: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> c: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> 10: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> @@ -63,7 +63,7 @@ Disassembly of section .text: 64: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> 00000068 <__ctors_start>: - 68: 25 07 cpc r18, r21 + 68: da 07 cpc r29, r26 0000006a <__ctors_end>: 6a: 11 24 eor r1, r1 @@ -77,8 +77,8 @@ Disassembly of section .text: 76: 11 e0 ldi r17, 0x01 ; 1 78: a0 e0 ldi r26, 0x00 ; 0 7a: b1 e0 ldi r27, 0x01 ; 1 - 7c: e4 ea ldi r30, 0xA4 ; 164 - 7e: f1 e1 ldi r31, 0x11 ; 17 + 7c: ee e0 ldi r30, 0x0E ; 14 + 7e: f3 e1 ldi r31, 0x13 ; 19 80: 02 c0 rjmp .+4 ; 0x86 <__do_copy_data+0x10> 82: 05 90 lpm r0, Z+ 84: 0d 92 st X+, r0 @@ -96,7 +96,7 @@ Disassembly of section .text: 94: 1d 92 st X+, r1 00000096 <.do_clear_bss_start>: - 96: a6 3b cpi r26, 0xB6 ; 182 + 96: ab 3b cpi r26, 0xBB ; 187 98: b2 07 cpc r27, r18 9a: e1 f7 brne .-8 ; 0x94 <.do_clear_bss_loop> @@ -107,12 +107,12 @@ Disassembly of section .text: a2: 04 c0 rjmp .+8 ; 0xac <__do_global_ctors+0x10> a4: 22 97 sbiw r28, 0x02 ; 2 a6: fe 01 movw r30, r28 - a8: 0e 94 cc 08 call 0x1198 ; 0x1198 <__tablejump__> + a8: 0e 94 81 09 call 0x1302 ; 0x1302 <__tablejump__> ac: c8 36 cpi r28, 0x68 ; 104 ae: d1 07 cpc r29, r17 b0: c9 f7 brne .-14 ; 0xa4 <__do_global_ctors+0x8> - b2: 0e 94 0c 03 call 0x618 ; 0x618
- b6: 0c 94 d0 08 jmp 0x11a0 ; 0x11a0 <_exit> + b2: 0e 94 21 03 call 0x642 ; 0x642
+ b6: 0c 94 85 09 jmp 0x130a ; 0x130a <_exit> 000000ba <__bad_interrupt>: ba: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> @@ -159,3327 +159,3711 @@ ISR(TIMER1_OVF_vect) { fe: df 93 push r29 100: ef 93 push r30 102: ff 93 push r31 - this->fademap[1][index] = green; - this->fademap[2][index] = blue; - this->fademap[3][index] = time; + case 2: return OCR2A; //BLAU + } + return 0; } void interrupt() { if(this->fade_zylk > 0) { - 104: c0 91 88 01 lds r28, 0x0188 - 108: cc 23 and r28, r28 + 104: d0 91 88 01 lds r29, 0x0188 + 108: dd 23 and r29, r29 10a: 09 f4 brne .+2 ; 0x10e <__vector_13+0x50> - 10c: f6 c1 rjmp .+1004 ; 0x4fa <__vector_13+0x43c> + 10c: 0b c2 rjmp .+1046 ; 0x524 <__stack+0x25> if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { 10e: 20 e0 ldi r18, 0x00 ; 0 110: 30 e0 ldi r19, 0x00 ; 0 112: a9 01 movw r20, r18 - 114: 60 91 9d 01 lds r22, 0x019D - 118: 70 91 9e 01 lds r23, 0x019E - 11c: 80 91 9f 01 lds r24, 0x019F - 120: 90 91 a0 01 lds r25, 0x01A0 - 124: 0e 94 b0 07 call 0xf60 ; 0xf60 <__cmpsf2> + 114: 60 91 a1 01 lds r22, 0x01A1 + 118: 70 91 a2 01 lds r23, 0x01A2 + 11c: 80 91 a3 01 lds r24, 0x01A3 + 120: 90 91 a4 01 lds r25, 0x01A4 + 124: 0e 94 65 08 call 0x10ca ; 0x10ca <__cmpsf2> 128: 81 11 cpse r24, r1 - 12a: f0 c0 rjmp .+480 ; 0x30c <__vector_13+0x24e> + 12a: fc c0 rjmp .+504 ; 0x324 <__vector_13+0x266> 12c: 20 e0 ldi r18, 0x00 ; 0 12e: 30 e0 ldi r19, 0x00 ; 0 130: a9 01 movw r20, r18 - 132: 60 91 a1 01 lds r22, 0x01A1 - 136: 70 91 a2 01 lds r23, 0x01A2 - 13a: 80 91 a3 01 lds r24, 0x01A3 - 13e: 90 91 a4 01 lds r25, 0x01A4 - 142: 0e 94 b0 07 call 0xf60 ; 0xf60 <__cmpsf2> + 132: 60 91 a5 01 lds r22, 0x01A5 + 136: 70 91 a6 01 lds r23, 0x01A6 + 13a: 80 91 a7 01 lds r24, 0x01A7 + 13e: 90 91 a8 01 lds r25, 0x01A8 + 142: 0e 94 65 08 call 0x10ca ; 0x10ca <__cmpsf2> 146: 81 11 cpse r24, r1 - 148: e4 c0 rjmp .+456 ; 0x312 <__vector_13+0x254> + 148: f0 c0 rjmp .+480 ; 0x32a <__vector_13+0x26c> 14a: 20 e0 ldi r18, 0x00 ; 0 14c: 30 e0 ldi r19, 0x00 ; 0 14e: a9 01 movw r20, r18 - 150: 60 91 a5 01 lds r22, 0x01A5 - 154: 70 91 a6 01 lds r23, 0x01A6 - 158: 80 91 a7 01 lds r24, 0x01A7 - 15c: 90 91 a8 01 lds r25, 0x01A8 - 160: 0e 94 b0 07 call 0xf60 ; 0xf60 <__cmpsf2> - 164: 88 23 and r24, r24 - 166: 29 f0 breq .+10 ; 0x172 <__vector_13+0xb4> - 168: 88 24 eor r8, r8 - 16a: 83 94 inc r8 - 16c: d4 c0 rjmp .+424 ; 0x316 <__vector_13+0x258> - 16e: b3 94 inc r11 - 170: 11 c0 rjmp .+34 ; 0x194 <__vector_13+0xd6> - 172: bb 24 eor r11, r11 - 174: b3 94 inc r11 + 150: 60 91 a9 01 lds r22, 0x01A9 + 154: 70 91 aa 01 lds r23, 0x01AA + 158: 80 91 ab 01 lds r24, 0x01AB + 15c: 90 91 ac 01 lds r25, 0x01AC + 160: 0e 94 65 08 call 0x10ca ; 0x10ca <__cmpsf2> + 164: 81 11 cpse r24, r1 + 166: e4 c0 rjmp .+456 ; 0x330 <__vector_13+0x272> + this->_l = (this->_l + 1 < this->fade_zylk) ? this->_l + 1 : 0; + 168: c0 91 b9 01 lds r28, 0x01B9 + 16c: 2c 2f mov r18, r28 + 16e: 30 e0 ldi r19, 0x00 ; 0 + 170: 2f 5f subi r18, 0xFF ; 255 + 172: 3f 4f sbci r19, 0xFF ; 255 + 174: 8d 2f mov r24, r29 + 176: 90 e0 ldi r25, 0x00 ; 0 + 178: 28 17 cp r18, r24 + 17a: 39 07 cpc r19, r25 + 17c: 14 f4 brge .+4 ; 0x182 <__vector_13+0xc4> + 17e: cf 5f subi r28, 0xFF ; 255 + 180: 01 c0 rjmp .+2 ; 0x184 <__vector_13+0xc6> + 182: c0 e0 ldi r28, 0x00 ; 0 + 184: c0 93 b9 01 sts 0x01B9, r28 + 188: bb 24 eor r11, r11 + 18a: b3 94 inc r11 for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue - this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1]; - 176: d0 e0 ldi r29, 0x00 ; 0 - 178: 21 97 sbiw r28, 0x01 ; 1 - } - } - uint8_t gp(uint8_t i) { - switch(i) { - case 0: return OCR0B; //ROT - case 1: return OCR2B; //GRÜN - 17a: 0f 2e mov r0, r31 - 17c: f4 eb ldi r31, 0xB4 ; 180 - 17e: cf 2e mov r12, r31 - 180: d1 2c mov r13, r1 - 182: f0 2d mov r31, r0 - } - void interrupt() { - if(this->fade_zylk > 0) { - if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { - for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue - this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1]; - 184: 0f 2e mov r0, r31 - 186: f8 e9 ldi r31, 0x98 ; 152 - 188: 6f 2e mov r6, r31 - 18a: f1 e0 ldi r31, 0x01 ; 1 - 18c: 7f 2e mov r7, r31 - 18e: f0 2d mov r31, r0 - 190: 6c 0e add r6, r28 - 192: 7d 1e adc r7, r29 - 194: 1b 2d mov r17, r11 - 196: 11 50 subi r17, 0x01 ; 1 - 198: e1 2e mov r14, r17 - 19a: f1 2c mov r15, r1 - 19c: 9e 01 movw r18, r28 - 19e: f7 01 movw r30, r14 - 1a0: ee 0f add r30, r30 - 1a2: ff 1f adc r31, r31 - 1a4: ee 0f add r30, r30 - 1a6: ff 1f adc r31, r31 - 1a8: ee 0d add r30, r14 - 1aa: ff 1d adc r31, r15 - 1ac: e8 57 subi r30, 0x78 ; 120 - 1ae: fe 4f sbci r31, 0xFE ; 254 - 1b0: ec 0f add r30, r28 - 1b2: fd 1f adc r31, r29 - 1b4: 81 81 ldd r24, Z+1 ; 0x01 - 1b6: 90 e0 ldi r25, 0x00 ; 0 - case 1: OCR2B = c; break; //GRÜN - case 2: OCR2A = c; break; //BLAU - } - } - uint8_t gp(uint8_t i) { - switch(i) { - 1b8: 11 30 cpi r17, 0x01 ; 1 - 1ba: 09 f1 breq .+66 ; 0x1fe <__vector_13+0x140> - 1bc: 20 f0 brcs .+8 ; 0x1c6 <__vector_13+0x108> - 1be: 12 30 cpi r17, 0x02 ; 2 - 1c0: 09 f0 breq .+2 ; 0x1c4 <__vector_13+0x106> - 1c2: 57 c0 rjmp .+174 ; 0x272 <__vector_13+0x1b4> - 1c4: 39 c0 rjmp .+114 ; 0x238 <__vector_13+0x17a> - case 0: return OCR0B; //ROT - 1c6: 48 b5 in r20, 0x28 ; 40 - } - void interrupt() { - if(this->fade_zylk > 0) { - if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { - for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue - this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1]; - 1c8: 97 01 movw r18, r14 - 1ca: 22 0f add r18, r18 - 1cc: 33 1f adc r19, r19 - 1ce: 22 0f add r18, r18 - 1d0: 33 1f adc r19, r19 - 1d2: 89 01 movw r16, r18 - 1d4: 08 57 subi r16, 0x78 ; 120 - 1d6: 1e 4f sbci r17, 0xFE ; 254 - 1d8: 84 1b sub r24, r20 - 1da: 91 09 sbc r25, r1 - 1dc: f3 01 movw r30, r6 - 1de: 60 81 ld r22, Z - 1e0: 70 e0 ldi r23, 0x00 ; 0 - 1e2: 0e 94 96 08 call 0x112c ; 0x112c <__divmodhi4> - 1e6: 88 27 eor r24, r24 - 1e8: 77 fd sbrc r23, 7 - 1ea: 80 95 com r24 - 1ec: 98 2f mov r25, r24 - 1ee: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf> - 1f2: f8 01 movw r30, r16 - 1f4: 65 8b std Z+21, r22 ; 0x15 - 1f6: 76 8b std Z+22, r23 ; 0x16 - 1f8: 87 8b std Z+23, r24 ; 0x17 - 1fa: 90 8f std Z+24, r25 ; 0x18 - 1fc: 5d c0 rjmp .+186 ; 0x2b8 <__vector_13+0x1fa> - } - } - uint8_t gp(uint8_t i) { - switch(i) { - case 0: return OCR0B; //ROT - case 1: return OCR2B; //GRÜN - 1fe: f6 01 movw r30, r12 - 200: 40 81 ld r20, Z - } - void interrupt() { - if(this->fade_zylk > 0) { - if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { - for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue - this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1]; - 202: 97 01 movw r18, r14 - 204: 22 0f add r18, r18 - 206: 33 1f adc r19, r19 - 208: 22 0f add r18, r18 - 20a: 33 1f adc r19, r19 - 20c: 89 01 movw r16, r18 - 20e: 08 57 subi r16, 0x78 ; 120 - 210: 1e 4f sbci r17, 0xFE ; 254 - 212: 84 1b sub r24, r20 - 214: 91 09 sbc r25, r1 - 216: f3 01 movw r30, r6 - 218: 60 81 ld r22, Z - 21a: 70 e0 ldi r23, 0x00 ; 0 - 21c: 0e 94 96 08 call 0x112c ; 0x112c <__divmodhi4> - 220: 88 27 eor r24, r24 - 222: 77 fd sbrc r23, 7 - 224: 80 95 com r24 - 226: 98 2f mov r25, r24 - 228: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf> - 22c: f8 01 movw r30, r16 - 22e: 65 8b std Z+21, r22 ; 0x15 - 230: 76 8b std Z+22, r23 ; 0x16 - 232: 87 8b std Z+23, r24 ; 0x17 - 234: 90 8f std Z+24, r25 ; 0x18 - 236: 42 c0 rjmp .+132 ; 0x2bc <__vector_13+0x1fe> - } - uint8_t gp(uint8_t i) { - switch(i) { - case 0: return OCR0B; //ROT - case 1: return OCR2B; //GRÜN - case 2: return OCR2A; //BLAU - 238: 40 91 b3 00 lds r20, 0x00B3 - } - void interrupt() { - if(this->fade_zylk > 0) { - if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { - for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue - this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1]; - 23c: e7 01 movw r28, r14 - 23e: cc 0f add r28, r28 - 240: dd 1f adc r29, r29 - 242: cc 0f add r28, r28 - 244: dd 1f adc r29, r29 - 246: c8 57 subi r28, 0x78 ; 120 - 248: de 4f sbci r29, 0xFE ; 254 - 24a: 84 1b sub r24, r20 - 24c: 91 09 sbc r25, r1 - 24e: f9 01 movw r30, r18 - 250: e8 57 subi r30, 0x78 ; 120 - 252: fe 4f sbci r31, 0xFE ; 254 - 254: 60 89 ldd r22, Z+16 ; 0x10 - 256: 70 e0 ldi r23, 0x00 ; 0 - 258: 0e 94 96 08 call 0x112c ; 0x112c <__divmodhi4> - 25c: 88 27 eor r24, r24 - 25e: 77 fd sbrc r23, 7 - 260: 80 95 com r24 - 262: 98 2f mov r25, r24 - 264: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf> - 268: 6d 8b std Y+21, r22 ; 0x15 - 26a: 7e 8b std Y+22, r23 ; 0x16 - 26c: 8f 8b std Y+23, r24 ; 0x17 - 26e: 98 8f std Y+24, r25 ; 0x18 - 270: 28 c0 rjmp .+80 ; 0x2c2 <__vector_13+0x204> - 272: 97 01 movw r18, r14 - 274: 22 0f add r18, r18 - 276: 33 1f adc r19, r19 - 278: 22 0f add r18, r18 - 27a: 33 1f adc r19, r19 - 27c: 0f 2e mov r0, r31 - 27e: f8 e8 ldi r31, 0x88 ; 136 - 280: 8f 2e mov r8, r31 - 282: f1 e0 ldi r31, 0x01 ; 1 - 284: 9f 2e mov r9, r31 - 286: f0 2d mov r31, r0 - 288: 82 0e add r8, r18 - 28a: 93 1e adc r9, r19 - 28c: f3 01 movw r30, r6 - 28e: 60 81 ld r22, Z - 290: 70 e0 ldi r23, 0x00 ; 0 - 292: 0e 94 96 08 call 0x112c ; 0x112c <__divmodhi4> - 296: 88 27 eor r24, r24 - 298: 77 fd sbrc r23, 7 - 29a: 80 95 com r24 - 29c: 98 2f mov r25, r24 - 29e: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf> - 2a2: f4 01 movw r30, r8 - 2a4: 65 8b std Z+21, r22 ; 0x15 - 2a6: 76 8b std Z+22, r23 ; 0x16 - 2a8: 87 8b std Z+23, r24 ; 0x17 - 2aa: 90 8f std Z+24, r25 ; 0x18 - case 1: OCR2B = c; break; //GRÜN - case 2: OCR2A = c; break; //BLAU - } - } - uint8_t gp(uint8_t i) { - switch(i) { - 2ac: 11 30 cpi r17, 0x01 ; 1 - 2ae: 31 f0 breq .+12 ; 0x2bc <__vector_13+0x1fe> - 2b0: 18 f0 brcs .+6 ; 0x2b8 <__vector_13+0x1fa> - 2b2: 12 30 cpi r17, 0x02 ; 2 - 2b4: c9 f4 brne .+50 ; 0x2e8 <__vector_13+0x22a> - 2b6: 05 c0 rjmp .+10 ; 0x2c2 <__vector_13+0x204> - case 0: return OCR0B; //ROT - 2b8: 68 b5 in r22, 0x28 ; 40 - 2ba: 07 c1 rjmp .+526 ; 0x4ca <__vector_13+0x40c> - case 1: return OCR2B; //GRÜN - 2bc: f6 01 movw r30, r12 - 2be: 60 81 ld r22, Z - 2c0: 04 c1 rjmp .+520 ; 0x4ca <__vector_13+0x40c> - case 2: return OCR2A; //BLAU - 2c2: 60 91 b3 00 lds r22, 0x00B3 - void interrupt() { - if(this->fade_zylk > 0) { - if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { - for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue - this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1]; - this->virtualcolor[i] = this->gp(i); - 2c6: e7 01 movw r28, r14 - 2c8: cc 0f add r28, r28 - 2ca: dd 1f adc r29, r29 - 2cc: cc 0f add r28, r28 - 2ce: dd 1f adc r29, r29 - 2d0: c8 57 subi r28, 0x78 ; 120 - 2d2: de 4f sbci r29, 0xFE ; 254 - 2d4: 70 e0 ldi r23, 0x00 ; 0 - 2d6: 80 e0 ldi r24, 0x00 ; 0 - 2d8: 90 e0 ldi r25, 0x00 ; 0 - 2da: 0e 94 e0 07 call 0xfc0 ; 0xfc0 <__floatunsisf> - 2de: 69 a3 std Y+33, r22 ; 0x21 - 2e0: 7a a3 std Y+34, r23 ; 0x22 - 2e2: 8b a3 std Y+35, r24 ; 0x23 - 2e4: 9c a3 std Y+36, r25 ; 0x24 - 2e6: 09 c1 rjmp .+530 ; 0x4fa <__vector_13+0x43c> - 2e8: f7 01 movw r30, r14 - 2ea: ee 0f add r30, r30 - 2ec: ff 1f adc r31, r31 - 2ee: ee 0f add r30, r30 - 2f0: ff 1f adc r31, r31 - 2f2: e8 57 subi r30, 0x78 ; 120 - 2f4: fe 4f sbci r31, 0xFE ; 254 - 2f6: 11 a2 std Z+33, r1 ; 0x21 - 2f8: 12 a2 std Z+34, r1 ; 0x22 - 2fa: 13 a2 std Z+35, r1 ; 0x23 - 2fc: 14 a2 std Z+36, r1 ; 0x24 + this->fadesteps[i] = (this->fademap[i][this->_l]-this->gp(i))/this->fademap[3][this->_l]; + 18c: d0 e0 ldi r29, 0x00 ; 0 this->fademap[3][index] = time; } + uint8_t gp(uint8_t i) { + switch(i) { + case 0: return OCR0B; //ROT + case 1: return OCR2B; //GRÜN + 18e: 0f 2e mov r0, r31 + 190: f4 eb ldi r31, 0xB4 ; 180 + 192: cf 2e mov r12, r31 + 194: d1 2c mov r13, r1 + 196: f0 2d mov r31, r0 void interrupt() { if(this->fade_zylk > 0) { if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { + this->_l = (this->_l + 1 < this->fade_zylk) ? this->_l + 1 : 0; for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue - 2fe: f2 e0 ldi r31, 0x02 ; 2 - 300: fb 15 cp r31, r11 - 302: 08 f0 brcs .+2 ; 0x306 <__vector_13+0x248> - 304: 34 cf rjmp .-408 ; 0x16e <__vector_13+0xb0> - 306: f9 c0 rjmp .+498 ; 0x4fa <__vector_13+0x43c> - 308: 83 94 inc r8 - 30a: 10 c0 rjmp .+32 ; 0x32c <__vector_13+0x26e> + this->fadesteps[i] = (this->fademap[i][this->_l]-this->gp(i))/this->fademap[3][this->_l]; + 198: 0f 2e mov r0, r31 + 19a: fb e9 ldi r31, 0x9B ; 155 + 19c: 6f 2e mov r6, r31 + 19e: f1 e0 ldi r31, 0x01 ; 1 + 1a0: 7f 2e mov r7, r31 + 1a2: f0 2d mov r31, r0 + 1a4: 6c 0e add r6, r28 + 1a6: 7d 1e adc r7, r29 + 1a8: 01 c0 rjmp .+2 ; 0x1ac <__vector_13+0xee> + 1aa: b3 94 inc r11 + 1ac: 1b 2d mov r17, r11 + 1ae: 11 50 subi r17, 0x01 ; 1 + 1b0: e1 2e mov r14, r17 + 1b2: f1 2c mov r15, r1 + 1b4: 9e 01 movw r18, r28 + 1b6: f7 01 movw r30, r14 + 1b8: ee 0f add r30, r30 + 1ba: ff 1f adc r31, r31 + 1bc: ee 0d add r30, r14 + 1be: ff 1d adc r31, r15 + 1c0: ee 0f add r30, r30 + 1c2: ff 1f adc r31, r31 + 1c4: e8 57 subi r30, 0x78 ; 120 + 1c6: fe 4f sbci r31, 0xFE ; 254 + 1c8: ec 0f add r30, r28 + 1ca: fd 1f adc r31, r29 + 1cc: 81 81 ldd r24, Z+1 ; 0x01 + 1ce: 90 e0 ldi r25, 0x00 ; 0 + this->fademap[1][index] = green; this->fademap[2][index] = blue; this->fademap[3][index] = time; } + uint8_t gp(uint8_t i) { + switch(i) { + 1d0: 11 30 cpi r17, 0x01 ; 1 + 1d2: 09 f1 breq .+66 ; 0x216 <__vector_13+0x158> + 1d4: 20 f0 brcs .+8 ; 0x1de <__vector_13+0x120> + 1d6: 12 30 cpi r17, 0x02 ; 2 + 1d8: 09 f0 breq .+2 ; 0x1dc <__vector_13+0x11e> + 1da: 57 c0 rjmp .+174 ; 0x28a <__vector_13+0x1cc> + 1dc: 39 c0 rjmp .+114 ; 0x250 <__vector_13+0x192> + case 0: return OCR0B; //ROT + 1de: 48 b5 in r20, 0x28 ; 40 void interrupt() { if(this->fade_zylk > 0) { if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { - 30c: 88 24 eor r8, r8 - 30e: 83 94 inc r8 - 310: 02 c0 rjmp .+4 ; 0x316 <__vector_13+0x258> - 312: 88 24 eor r8, r8 - 314: 83 94 inc r8 - /*this->fadesteps[0] = (this->fademap[0][this->fade_zylk-1]-this->gp(0))/this->fademap[3][this->fade_zylk-1]; //Calc Red; - this->fadesteps[1] = (this->fademap[1][this->fade_zylk-1]-OCR2B)/this->fademap[3][this->fade_zylk-1]; //Calc Green; - this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue;*/ + this->_l = (this->_l + 1 < this->fade_zylk) ? this->_l + 1 : 0; + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + this->fadesteps[i] = (this->fademap[i][this->_l]-this->gp(i))/this->fademap[3][this->_l]; + 1e0: 97 01 movw r18, r14 + 1e2: 22 0f add r18, r18 + 1e4: 33 1f adc r19, r19 + 1e6: 22 0f add r18, r18 + 1e8: 33 1f adc r19, r19 + 1ea: 89 01 movw r16, r18 + 1ec: 08 57 subi r16, 0x78 ; 120 + 1ee: 1e 4f sbci r17, 0xFE ; 254 + 1f0: 84 1b sub r24, r20 + 1f2: 91 09 sbc r25, r1 + 1f4: f3 01 movw r30, r6 + 1f6: 60 81 ld r22, Z + 1f8: 70 e0 ldi r23, 0x00 ; 0 + 1fa: 0e 94 4b 09 call 0x1296 ; 0x1296 <__divmodhi4> + 1fe: 88 27 eor r24, r24 + 200: 77 fd sbrc r23, 7 + 202: 80 95 com r24 + 204: 98 2f mov r25, r24 + 206: 0e 94 97 08 call 0x112e ; 0x112e <__floatsisf> + 20a: f8 01 movw r30, r16 + 20c: 61 8f std Z+25, r22 ; 0x19 + 20e: 72 8f std Z+26, r23 ; 0x1a + 210: 83 8f std Z+27, r24 ; 0x1b + 212: 94 8f std Z+28, r25 ; 0x1c + 214: 5d c0 rjmp .+186 ; 0x2d0 <__vector_13+0x212> + this->fademap[3][index] = time; + } + uint8_t gp(uint8_t i) { + switch(i) { + case 0: return OCR0B; //ROT + case 1: return OCR2B; //GRÜN + 216: f6 01 movw r30, r12 + 218: 40 81 ld r20, Z + void interrupt() { + if(this->fade_zylk > 0) { + if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { + this->_l = (this->_l + 1 < this->fade_zylk) ? this->_l + 1 : 0; + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + this->fadesteps[i] = (this->fademap[i][this->_l]-this->gp(i))/this->fademap[3][this->_l]; + 21a: 97 01 movw r18, r14 + 21c: 22 0f add r18, r18 + 21e: 33 1f adc r19, r19 + 220: 22 0f add r18, r18 + 222: 33 1f adc r19, r19 + 224: 89 01 movw r16, r18 + 226: 08 57 subi r16, 0x78 ; 120 + 228: 1e 4f sbci r17, 0xFE ; 254 + 22a: 84 1b sub r24, r20 + 22c: 91 09 sbc r25, r1 + 22e: f3 01 movw r30, r6 + 230: 60 81 ld r22, Z + 232: 70 e0 ldi r23, 0x00 ; 0 + 234: 0e 94 4b 09 call 0x1296 ; 0x1296 <__divmodhi4> + 238: 88 27 eor r24, r24 + 23a: 77 fd sbrc r23, 7 + 23c: 80 95 com r24 + 23e: 98 2f mov r25, r24 + 240: 0e 94 97 08 call 0x112e ; 0x112e <__floatsisf> + 244: f8 01 movw r30, r16 + 246: 61 8f std Z+25, r22 ; 0x19 + 248: 72 8f std Z+26, r23 ; 0x1a + 24a: 83 8f std Z+27, r24 ; 0x1b + 24c: 94 8f std Z+28, r25 ; 0x1c + 24e: 42 c0 rjmp .+132 ; 0x2d4 <__vector_13+0x216> + } + uint8_t gp(uint8_t i) { + switch(i) { + case 0: return OCR0B; //ROT + case 1: return OCR2B; //GRÜN + case 2: return OCR2A; //BLAU + 250: 40 91 b3 00 lds r20, 0x00B3 + void interrupt() { + if(this->fade_zylk > 0) { + if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { + this->_l = (this->_l + 1 < this->fade_zylk) ? this->_l + 1 : 0; + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + this->fadesteps[i] = (this->fademap[i][this->_l]-this->gp(i))/this->fademap[3][this->_l]; + 254: e7 01 movw r28, r14 + 256: cc 0f add r28, r28 + 258: dd 1f adc r29, r29 + 25a: cc 0f add r28, r28 + 25c: dd 1f adc r29, r29 + 25e: c8 57 subi r28, 0x78 ; 120 + 260: de 4f sbci r29, 0xFE ; 254 + 262: 84 1b sub r24, r20 + 264: 91 09 sbc r25, r1 + 266: f9 01 movw r30, r18 + 268: e8 57 subi r30, 0x78 ; 120 + 26a: fe 4f sbci r31, 0xFE ; 254 + 26c: 63 89 ldd r22, Z+19 ; 0x13 + 26e: 70 e0 ldi r23, 0x00 ; 0 + 270: 0e 94 4b 09 call 0x1296 ; 0x1296 <__divmodhi4> + 274: 88 27 eor r24, r24 + 276: 77 fd sbrc r23, 7 + 278: 80 95 com r24 + 27a: 98 2f mov r25, r24 + 27c: 0e 94 97 08 call 0x112e ; 0x112e <__floatsisf> + 280: 69 8f std Y+25, r22 ; 0x19 + 282: 7a 8f std Y+26, r23 ; 0x1a + 284: 8b 8f std Y+27, r24 ; 0x1b + 286: 9c 8f std Y+28, r25 ; 0x1c + 288: 28 c0 rjmp .+80 ; 0x2da <__vector_13+0x21c> + 28a: 97 01 movw r18, r14 + 28c: 22 0f add r18, r18 + 28e: 33 1f adc r19, r19 + 290: 22 0f add r18, r18 + 292: 33 1f adc r19, r19 + 294: 0f 2e mov r0, r31 + 296: f8 e8 ldi r31, 0x88 ; 136 + 298: 8f 2e mov r8, r31 + 29a: f1 e0 ldi r31, 0x01 ; 1 + 29c: 9f 2e mov r9, r31 + 29e: f0 2d mov r31, r0 + 2a0: 82 0e add r8, r18 + 2a2: 93 1e adc r9, r19 + 2a4: f3 01 movw r30, r6 + 2a6: 60 81 ld r22, Z + 2a8: 70 e0 ldi r23, 0x00 ; 0 + 2aa: 0e 94 4b 09 call 0x1296 ; 0x1296 <__divmodhi4> + 2ae: 88 27 eor r24, r24 + 2b0: 77 fd sbrc r23, 7 + 2b2: 80 95 com r24 + 2b4: 98 2f mov r25, r24 + 2b6: 0e 94 97 08 call 0x112e ; 0x112e <__floatsisf> + 2ba: f4 01 movw r30, r8 + 2bc: 61 8f std Z+25, r22 ; 0x19 + 2be: 72 8f std Z+26, r23 ; 0x1a + 2c0: 83 8f std Z+27, r24 ; 0x1b + 2c2: 94 8f std Z+28, r25 ; 0x1c + this->fademap[1][index] = green; + this->fademap[2][index] = blue; + this->fademap[3][index] = time; + } + uint8_t gp(uint8_t i) { + switch(i) { + 2c4: 11 30 cpi r17, 0x01 ; 1 + 2c6: 31 f0 breq .+12 ; 0x2d4 <__vector_13+0x216> + 2c8: 18 f0 brcs .+6 ; 0x2d0 <__vector_13+0x212> + 2ca: 12 30 cpi r17, 0x02 ; 2 + 2cc: c9 f4 brne .+50 ; 0x300 <__vector_13+0x242> + 2ce: 05 c0 rjmp .+10 ; 0x2da <__vector_13+0x21c> + case 0: return OCR0B; //ROT + 2d0: 68 b5 in r22, 0x28 ; 40 + 2d2: 10 c1 rjmp .+544 ; 0x4f4 <__vector_13+0x436> + case 1: return OCR2B; //GRÜN + 2d4: f6 01 movw r30, r12 + 2d6: 60 81 ld r22, Z + 2d8: 0d c1 rjmp .+538 ; 0x4f4 <__vector_13+0x436> + case 2: return OCR2A; //BLAU + 2da: 60 91 b3 00 lds r22, 0x00B3 + if(this->fade_zylk > 0) { + if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { + this->_l = (this->_l + 1 < this->fade_zylk) ? this->_l + 1 : 0; + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + this->fadesteps[i] = (this->fademap[i][this->_l]-this->gp(i))/this->fademap[3][this->_l]; + this->virtualcolor[i] = this->gp(i); + 2de: e7 01 movw r28, r14 + 2e0: cc 0f add r28, r28 + 2e2: dd 1f adc r29, r29 + 2e4: cc 0f add r28, r28 + 2e6: dd 1f adc r29, r29 + 2e8: c8 57 subi r28, 0x78 ; 120 + 2ea: de 4f sbci r29, 0xFE ; 254 + 2ec: 70 e0 ldi r23, 0x00 ; 0 + 2ee: 80 e0 ldi r24, 0x00 ; 0 + 2f0: 90 e0 ldi r25, 0x00 ; 0 + 2f2: 0e 94 95 08 call 0x112a ; 0x112a <__floatunsisf> + 2f6: 6d a3 std Y+37, r22 ; 0x25 + 2f8: 7e a3 std Y+38, r23 ; 0x26 + 2fa: 8f a3 std Y+39, r24 ; 0x27 + 2fc: 98 a7 std Y+40, r25 ; 0x28 + 2fe: 12 c1 rjmp .+548 ; 0x524 <__stack+0x25> + 300: f7 01 movw r30, r14 + 302: ee 0f add r30, r30 + 304: ff 1f adc r31, r31 + 306: ee 0f add r30, r30 + 308: ff 1f adc r31, r31 + 30a: e8 57 subi r30, 0x78 ; 120 + 30c: fe 4f sbci r31, 0xFE ; 254 + 30e: 15 a2 std Z+37, r1 ; 0x25 + 310: 16 a2 std Z+38, r1 ; 0x26 + 312: 17 a2 std Z+39, r1 ; 0x27 + 314: 10 a6 std Z+40, r1 ; 0x28 + } + void interrupt() { + if(this->fade_zylk > 0) { + if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { + this->_l = (this->_l + 1 < this->fade_zylk) ? this->_l + 1 : 0; + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + 316: f2 e0 ldi r31, 0x02 ; 2 + 318: fb 15 cp r31, r11 + 31a: 08 f0 brcs .+2 ; 0x31e <__vector_13+0x260> + 31c: 46 cf rjmp .-372 ; 0x1aa <__vector_13+0xec> + 31e: 02 c1 rjmp .+516 ; 0x524 <__stack+0x25> + 320: 83 94 inc r8 + 322: 14 c0 rjmp .+40 ; 0x34c <__vector_13+0x28e> + } + return 0; + } + void interrupt() { + if(this->fade_zylk > 0) { + if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { + 324: 88 24 eor r8, r8 + 326: 83 94 inc r8 + 328: 05 c0 rjmp .+10 ; 0x334 <__vector_13+0x276> + 32a: 88 24 eor r8, r8 + 32c: 83 94 inc r8 + 32e: 02 c0 rjmp .+4 ; 0x334 <__vector_13+0x276> + 330: 88 24 eor r8, r8 + 332: 83 94 inc r8 + this->fadesteps[i] = (this->fademap[i][this->_l]-this->gp(i))/this->fademap[3][this->_l]; + this->virtualcolor[i] = this->gp(i); + } } else { for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue - if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->fade_zylk-1]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->fade_zylk-1])) { - 316: 0f 2e mov r0, r31 - 318: f8 e8 ldi r31, 0x88 ; 136 - 31a: af 2e mov r10, r31 - 31c: f1 e0 ldi r31, 0x01 ; 1 - 31e: bf 2e mov r11, r31 - 320: f0 2d mov r31, r0 + if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->_l]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->_l])) { + 334: 09 eb ldi r16, 0xB9 ; 185 + 336: 11 e0 ldi r17, 0x01 ; 1 this->color(0, 0, 0); } void sp(uint8_t i, uint8_t c) { switch(i) { case 0: OCR0B = c; break; //ROT case 1: OCR2B = c; break; //GRÜN - 322: 0f 2e mov r0, r31 - 324: f4 eb ldi r31, 0xB4 ; 180 - 326: 2f 2e mov r2, r31 - 328: 31 2c mov r3, r1 - 32a: f0 2d mov r31, r0 - 32c: 98 2c mov r9, r8 - 32e: 9a 94 dec r9 - /*this->fadesteps[0] = (this->fademap[0][this->fade_zylk-1]-this->gp(0))/this->fademap[3][this->fade_zylk-1]; //Calc Red; - this->fadesteps[1] = (this->fademap[1][this->fade_zylk-1]-OCR2B)/this->fademap[3][this->fade_zylk-1]; //Calc Green; - this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue;*/ + 338: 0f 2e mov r0, r31 + 33a: f4 eb ldi r31, 0xB4 ; 180 + 33c: af 2e mov r10, r31 + 33e: b1 2c mov r11, r1 + 340: f0 2d mov r31, r0 + case 2: OCR2A = c; break; //BLAU + 342: 0f 2e mov r0, r31 + 344: f3 eb ldi r31, 0xB3 ; 179 + 346: 2f 2e mov r2, r31 + 348: 31 2c mov r3, r1 + 34a: f0 2d mov r31, r0 + 34c: 98 2c mov r9, r8 + 34e: 9a 94 dec r9 + this->fadesteps[i] = (this->fademap[i][this->_l]-this->gp(i))/this->fademap[3][this->_l]; + this->virtualcolor[i] = this->gp(i); + } } else { for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue - if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->fade_zylk-1]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->fade_zylk-1])) { - 330: c9 2d mov r28, r9 - 332: d0 e0 ldi r29, 0x00 ; 0 - 334: fe 01 movw r30, r28 - 336: ee 0f add r30, r30 - 338: ff 1f adc r31, r31 - 33a: ee 0f add r30, r30 - 33c: ff 1f adc r31, r31 - 33e: e8 57 subi r30, 0x78 ; 120 - 340: fe 4f sbci r31, 0xFE ; 254 - 342: c5 88 ldd r12, Z+21 ; 0x15 - 344: d6 88 ldd r13, Z+22 ; 0x16 - 346: e7 88 ldd r14, Z+23 ; 0x17 - 348: f0 8c ldd r15, Z+24 ; 0x18 - 34a: 20 e0 ldi r18, 0x00 ; 0 - 34c: 30 e0 ldi r19, 0x00 ; 0 - 34e: a9 01 movw r20, r18 - 350: c7 01 movw r24, r14 - 352: b6 01 movw r22, r12 - 354: 0e 94 92 08 call 0x1124 ; 0x1124 <__gesf2> - 358: 18 16 cp r1, r24 - 35a: 4c f5 brge .+82 ; 0x3ae <__vector_13+0x2f0> - 35c: 8e 01 movw r16, r28 - 35e: 00 0f add r16, r16 - 360: 11 1f adc r17, r17 - 362: 00 0f add r16, r16 - 364: 11 1f adc r17, r17 - 366: f8 01 movw r30, r16 - 368: e8 57 subi r30, 0x78 ; 120 - 36a: fe 4f sbci r31, 0xFE ; 254 - 36c: 21 a1 ldd r18, Z+33 ; 0x21 - 36e: 32 a1 ldd r19, Z+34 ; 0x22 - 370: 43 a1 ldd r20, Z+35 ; 0x23 - 372: 54 a1 ldd r21, Z+36 ; 0x24 - 374: c7 01 movw r24, r14 - 376: b6 01 movw r22, r12 - 378: 0e 94 4c 07 call 0xe98 ; 0xe98 <__addsf3> - 37c: 2b 01 movw r4, r22 - 37e: 3c 01 movw r6, r24 - 380: f5 01 movw r30, r10 - 382: 80 81 ld r24, Z - 384: f8 01 movw r30, r16 - 386: ec 0f add r30, r28 - 388: fd 1f adc r31, r29 - 38a: e8 0f add r30, r24 - 38c: f1 1d adc r31, r1 - 38e: e8 57 subi r30, 0x78 ; 120 - 390: fe 4f sbci r31, 0xFE ; 254 - 392: 60 81 ld r22, Z - 394: 70 e0 ldi r23, 0x00 ; 0 - 396: 80 e0 ldi r24, 0x00 ; 0 - 398: 90 e0 ldi r25, 0x00 ; 0 - 39a: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf> - 39e: 9b 01 movw r18, r22 - 3a0: ac 01 movw r20, r24 - 3a2: c3 01 movw r24, r6 - 3a4: b2 01 movw r22, r4 - 3a6: 0e 94 b0 07 call 0xf60 ; 0xf60 <__cmpsf2> - 3aa: 18 16 cp r1, r24 - 3ac: 9c f5 brge .+102 ; 0x414 <__vector_13+0x356> - 3ae: 20 e0 ldi r18, 0x00 ; 0 - 3b0: 30 e0 ldi r19, 0x00 ; 0 - 3b2: a9 01 movw r20, r18 - 3b4: c7 01 movw r24, r14 - 3b6: b6 01 movw r22, r12 - 3b8: 0e 94 b0 07 call 0xf60 ; 0xf60 <__cmpsf2> - 3bc: 88 23 and r24, r24 - 3be: 0c f0 brlt .+2 ; 0x3c2 <__vector_13+0x304> - 3c0: 56 c0 rjmp .+172 ; 0x46e <__vector_13+0x3b0> - 3c2: 8e 01 movw r16, r28 - 3c4: 00 0f add r16, r16 - 3c6: 11 1f adc r17, r17 - 3c8: 00 0f add r16, r16 - 3ca: 11 1f adc r17, r17 - 3cc: f8 01 movw r30, r16 - 3ce: e8 57 subi r30, 0x78 ; 120 - 3d0: fe 4f sbci r31, 0xFE ; 254 - 3d2: 21 a1 ldd r18, Z+33 ; 0x21 - 3d4: 32 a1 ldd r19, Z+34 ; 0x22 - 3d6: 43 a1 ldd r20, Z+35 ; 0x23 - 3d8: 54 a1 ldd r21, Z+36 ; 0x24 + if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->_l]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->_l])) { + 350: c9 2d mov r28, r9 + 352: d0 e0 ldi r29, 0x00 ; 0 + 354: fe 01 movw r30, r28 + 356: ee 0f add r30, r30 + 358: ff 1f adc r31, r31 + 35a: ee 0f add r30, r30 + 35c: ff 1f adc r31, r31 + 35e: e8 57 subi r30, 0x78 ; 120 + 360: fe 4f sbci r31, 0xFE ; 254 + 362: c1 8c ldd r12, Z+25 ; 0x19 + 364: d2 8c ldd r13, Z+26 ; 0x1a + 366: e3 8c ldd r14, Z+27 ; 0x1b + 368: f4 8c ldd r15, Z+28 ; 0x1c + 36a: 20 e0 ldi r18, 0x00 ; 0 + 36c: 30 e0 ldi r19, 0x00 ; 0 + 36e: a9 01 movw r20, r18 + 370: c7 01 movw r24, r14 + 372: b6 01 movw r22, r12 + 374: 0e 94 47 09 call 0x128e ; 0x128e <__gesf2> + 378: 18 16 cp r1, r24 + 37a: 64 f5 brge .+88 ; 0x3d4 <__vector_13+0x316> + 37c: fe 01 movw r30, r28 + 37e: ee 0f add r30, r30 + 380: ff 1f adc r31, r31 + 382: ee 0f add r30, r30 + 384: ff 1f adc r31, r31 + 386: e8 57 subi r30, 0x78 ; 120 + 388: fe 4f sbci r31, 0xFE ; 254 + 38a: 25 a1 ldd r18, Z+37 ; 0x25 + 38c: 36 a1 ldd r19, Z+38 ; 0x26 + 38e: 47 a1 ldd r20, Z+39 ; 0x27 + 390: 50 a5 ldd r21, Z+40 ; 0x28 + 392: c7 01 movw r24, r14 + 394: b6 01 movw r22, r12 + 396: 0e 94 01 08 call 0x1002 ; 0x1002 <__addsf3> + 39a: 2b 01 movw r4, r22 + 39c: 3c 01 movw r6, r24 + 39e: f8 01 movw r30, r16 + 3a0: 80 81 ld r24, Z + 3a2: fe 01 movw r30, r28 + 3a4: ee 0f add r30, r30 + 3a6: ff 1f adc r31, r31 + 3a8: ec 0f add r30, r28 + 3aa: fd 1f adc r31, r29 + 3ac: ee 0f add r30, r30 + 3ae: ff 1f adc r31, r31 + 3b0: e8 57 subi r30, 0x78 ; 120 + 3b2: fe 4f sbci r31, 0xFE ; 254 + 3b4: e8 0f add r30, r24 + 3b6: f1 1d adc r31, r1 + 3b8: 61 81 ldd r22, Z+1 ; 0x01 + 3ba: 70 e0 ldi r23, 0x00 ; 0 + 3bc: 80 e0 ldi r24, 0x00 ; 0 + 3be: 90 e0 ldi r25, 0x00 ; 0 + 3c0: 0e 94 97 08 call 0x112e ; 0x112e <__floatsisf> + 3c4: 9b 01 movw r18, r22 + 3c6: ac 01 movw r20, r24 + 3c8: c3 01 movw r24, r6 + 3ca: b2 01 movw r22, r4 + 3cc: 0e 94 65 08 call 0x10ca ; 0x10ca <__cmpsf2> + 3d0: 18 16 cp r1, r24 + 3d2: b4 f5 brge .+108 ; 0x440 <__vector_13+0x382> + 3d4: 20 e0 ldi r18, 0x00 ; 0 + 3d6: 30 e0 ldi r19, 0x00 ; 0 + 3d8: a9 01 movw r20, r18 3da: c7 01 movw r24, r14 3dc: b6 01 movw r22, r12 - 3de: 0e 94 4c 07 call 0xe98 ; 0xe98 <__addsf3> - 3e2: 2b 01 movw r4, r22 - 3e4: 3c 01 movw r6, r24 - 3e6: f5 01 movw r30, r10 - 3e8: 80 81 ld r24, Z - 3ea: f8 01 movw r30, r16 - 3ec: ec 0f add r30, r28 - 3ee: fd 1f adc r31, r29 - 3f0: e8 0f add r30, r24 - 3f2: f1 1d adc r31, r1 - 3f4: e8 57 subi r30, 0x78 ; 120 - 3f6: fe 4f sbci r31, 0xFE ; 254 - 3f8: 60 81 ld r22, Z - 3fa: 70 e0 ldi r23, 0x00 ; 0 - 3fc: 80 e0 ldi r24, 0x00 ; 0 - 3fe: 90 e0 ldi r25, 0x00 ; 0 - 400: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf> - 404: 9b 01 movw r18, r22 - 406: ac 01 movw r20, r24 - 408: c3 01 movw r24, r6 - 40a: b2 01 movw r22, r4 - 40c: 0e 94 92 08 call 0x1124 ; 0x1124 <__gesf2> - 410: 88 23 and r24, r24 - 412: 6c f1 brlt .+90 ; 0x46e <__vector_13+0x3b0> + 3de: 0e 94 65 08 call 0x10ca ; 0x10ca <__cmpsf2> + 3e2: 88 23 and r24, r24 + 3e4: 0c f0 brlt .+2 ; 0x3e8 <__vector_13+0x32a> + 3e6: 59 c0 rjmp .+178 ; 0x49a <__vector_13+0x3dc> + 3e8: fe 01 movw r30, r28 + 3ea: ee 0f add r30, r30 + 3ec: ff 1f adc r31, r31 + 3ee: ee 0f add r30, r30 + 3f0: ff 1f adc r31, r31 + 3f2: e8 57 subi r30, 0x78 ; 120 + 3f4: fe 4f sbci r31, 0xFE ; 254 + 3f6: 25 a1 ldd r18, Z+37 ; 0x25 + 3f8: 36 a1 ldd r19, Z+38 ; 0x26 + 3fa: 47 a1 ldd r20, Z+39 ; 0x27 + 3fc: 50 a5 ldd r21, Z+40 ; 0x28 + 3fe: c7 01 movw r24, r14 + 400: b6 01 movw r22, r12 + 402: 0e 94 01 08 call 0x1002 ; 0x1002 <__addsf3> + 406: 2b 01 movw r4, r22 + 408: 3c 01 movw r6, r24 + 40a: f8 01 movw r30, r16 + 40c: 80 81 ld r24, Z + 40e: fe 01 movw r30, r28 + 410: ee 0f add r30, r30 + 412: ff 1f adc r31, r31 + 414: ec 0f add r30, r28 + 416: fd 1f adc r31, r29 + 418: ee 0f add r30, r30 + 41a: ff 1f adc r31, r31 + 41c: e8 57 subi r30, 0x78 ; 120 + 41e: fe 4f sbci r31, 0xFE ; 254 + 420: e8 0f add r30, r24 + 422: f1 1d adc r31, r1 + 424: 61 81 ldd r22, Z+1 ; 0x01 + 426: 70 e0 ldi r23, 0x00 ; 0 + 428: 80 e0 ldi r24, 0x00 ; 0 + 42a: 90 e0 ldi r25, 0x00 ; 0 + 42c: 0e 94 97 08 call 0x112e ; 0x112e <__floatsisf> + 430: 9b 01 movw r18, r22 + 432: ac 01 movw r20, r24 + 434: c3 01 movw r24, r6 + 436: b2 01 movw r22, r4 + 438: 0e 94 47 09 call 0x128e ; 0x128e <__gesf2> + 43c: 88 23 and r24, r24 + 43e: 6c f1 brlt .+90 ; 0x49a <__vector_13+0x3dc> this->virtualcolor[i] = this->virtualcolor[i] + this->fadesteps[i]; - 414: cc 0f add r28, r28 - 416: dd 1f adc r29, r29 - 418: cc 0f add r28, r28 - 41a: dd 1f adc r29, r29 - 41c: c8 57 subi r28, 0x78 ; 120 - 41e: de 4f sbci r29, 0xFE ; 254 - 420: 29 a1 ldd r18, Y+33 ; 0x21 - 422: 3a a1 ldd r19, Y+34 ; 0x22 - 424: 4b a1 ldd r20, Y+35 ; 0x23 - 426: 5c a1 ldd r21, Y+36 ; 0x24 - 428: c7 01 movw r24, r14 - 42a: b6 01 movw r22, r12 - 42c: 0e 94 4c 07 call 0xe98 ; 0xe98 <__addsf3> - 430: 26 2f mov r18, r22 - 432: 37 2f mov r19, r23 - 434: 46 2f mov r20, r22 - 436: 57 2f mov r21, r23 - 438: 68 2f mov r22, r24 - 43a: 79 2f mov r23, r25 - 43c: 49 a3 std Y+33, r20 ; 0x21 - 43e: 5a a3 std Y+34, r21 ; 0x22 - 440: 6b a3 std Y+35, r22 ; 0x23 - 442: 7c a3 std Y+36, r23 ; 0x24 + 440: cc 0f add r28, r28 + 442: dd 1f adc r29, r29 + 444: cc 0f add r28, r28 + 446: dd 1f adc r29, r29 + 448: c8 57 subi r28, 0x78 ; 120 + 44a: de 4f sbci r29, 0xFE ; 254 + 44c: 2d a1 ldd r18, Y+37 ; 0x25 + 44e: 3e a1 ldd r19, Y+38 ; 0x26 + 450: 4f a1 ldd r20, Y+39 ; 0x27 + 452: 58 a5 ldd r21, Y+40 ; 0x28 + 454: c7 01 movw r24, r14 + 456: b6 01 movw r22, r12 + 458: 0e 94 01 08 call 0x1002 ; 0x1002 <__addsf3> + 45c: 26 2f mov r18, r22 + 45e: 37 2f mov r19, r23 + 460: 46 2f mov r20, r22 + 462: 57 2f mov r21, r23 + 464: 68 2f mov r22, r24 + 466: 79 2f mov r23, r25 + 468: 4d a3 std Y+37, r20 ; 0x25 + 46a: 5e a3 std Y+38, r21 ; 0x26 + 46c: 6f a3 std Y+39, r22 ; 0x27 + 46e: 78 a7 std Y+40, r23 ; 0x28 this->sp(i, this->virtualcolor[i]); - 444: 62 2f mov r22, r18 - 446: 73 2f mov r23, r19 - 448: 0e 94 b4 07 call 0xf68 ; 0xf68 <__fixunssfsi> - this->fade_zylk = 0; + 470: 62 2f mov r22, r18 + 472: 73 2f mov r23, r19 + 474: 0e 94 69 08 call 0x10d2 ; 0x10d2 <__fixunssfsi> + this->_l = 0; this->initTimer(); this->color(0, 0, 0); } void sp(uint8_t i, uint8_t c) { switch(i) { - 44c: f1 e0 ldi r31, 0x01 ; 1 - 44e: 9f 16 cp r9, r31 - 450: 41 f0 breq .+16 ; 0x462 <__vector_13+0x3a4> - 452: 9f 16 cp r9, r31 - 454: 20 f0 brcs .+8 ; 0x45e <__vector_13+0x3a0> - 456: 82 e0 ldi r24, 0x02 ; 2 - 458: 98 12 cpse r9, r24 - 45a: 32 c0 rjmp .+100 ; 0x4c0 <__vector_13+0x402> - 45c: 05 c0 rjmp .+10 ; 0x468 <__vector_13+0x3aa> + 478: f1 e0 ldi r31, 0x01 ; 1 + 47a: 9f 16 cp r9, r31 + 47c: 41 f0 breq .+16 ; 0x48e <__vector_13+0x3d0> + 47e: 9f 16 cp r9, r31 + 480: 20 f0 brcs .+8 ; 0x48a <__vector_13+0x3cc> + 482: 82 e0 ldi r24, 0x02 ; 2 + 484: 98 12 cpse r9, r24 + 486: 31 c0 rjmp .+98 ; 0x4ea <__vector_13+0x42c> + 488: 05 c0 rjmp .+10 ; 0x494 <__vector_13+0x3d6> case 0: OCR0B = c; break; //ROT - 45e: 68 bd out 0x28, r22 ; 40 - 460: 53 cf rjmp .-346 ; 0x308 <__vector_13+0x24a> + 48a: 68 bd out 0x28, r22 ; 40 + 48c: 49 cf rjmp .-366 ; 0x320 <__vector_13+0x262> case 1: OCR2B = c; break; //GRÜN - 462: f1 01 movw r30, r2 - 464: 60 83 st Z, r22 - 466: 50 cf rjmp .-352 ; 0x308 <__vector_13+0x24a> + 48e: f5 01 movw r30, r10 + 490: 60 83 st Z, r22 + 492: 46 cf rjmp .-372 ; 0x320 <__vector_13+0x262> case 2: OCR2A = c; break; //BLAU - 468: 60 93 b3 00 sts 0x00B3, r22 - 46c: 46 c0 rjmp .+140 ; 0x4fa <__vector_13+0x43c> + 494: 60 93 b3 00 sts 0x00B3, r22 + 498: 45 c0 rjmp .+138 ; 0x524 <__stack+0x25> for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue - if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->fade_zylk-1]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->fade_zylk-1])) { + if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->_l]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->_l])) { this->virtualcolor[i] = this->virtualcolor[i] + this->fadesteps[i]; this->sp(i, this->virtualcolor[i]); } else { - this->sp(i, this->fademap[i][this->fade_zylk-1]); - 46e: f5 01 movw r30, r10 - 470: 80 81 ld r24, Z - 472: fe 01 movw r30, r28 - 474: ee 0f add r30, r30 - 476: ff 1f adc r31, r31 - 478: ee 0f add r30, r30 - 47a: ff 1f adc r31, r31 - 47c: ec 0f add r30, r28 - 47e: fd 1f adc r31, r29 - 480: e8 0f add r30, r24 - 482: f1 1d adc r31, r1 - 484: e8 57 subi r30, 0x78 ; 120 - 486: fe 4f sbci r31, 0xFE ; 254 - 488: 80 81 ld r24, Z - this->fade_zylk = 0; + this->sp(i, this->fademap[i][this->_l]); + 49a: f8 01 movw r30, r16 + 49c: 80 81 ld r24, Z + 49e: fe 01 movw r30, r28 + 4a0: ee 0f add r30, r30 + 4a2: ff 1f adc r31, r31 + 4a4: ec 0f add r30, r28 + 4a6: fd 1f adc r31, r29 + 4a8: ee 0f add r30, r30 + 4aa: ff 1f adc r31, r31 + 4ac: e8 57 subi r30, 0x78 ; 120 + 4ae: fe 4f sbci r31, 0xFE ; 254 + 4b0: e8 0f add r30, r24 + 4b2: f1 1d adc r31, r1 + 4b4: 81 81 ldd r24, Z+1 ; 0x01 + this->_l = 0; this->initTimer(); this->color(0, 0, 0); } void sp(uint8_t i, uint8_t c) { switch(i) { - 48a: f1 e0 ldi r31, 0x01 ; 1 - 48c: 9f 16 cp r9, r31 - 48e: 41 f0 breq .+16 ; 0x4a0 <__vector_13+0x3e2> - 490: 9f 16 cp r9, r31 - 492: 20 f0 brcs .+8 ; 0x49c <__vector_13+0x3de> - 494: 92 e0 ldi r25, 0x02 ; 2 - 496: 99 12 cpse r9, r25 - 498: 09 c0 rjmp .+18 ; 0x4ac <__vector_13+0x3ee> - 49a: 05 c0 rjmp .+10 ; 0x4a6 <__vector_13+0x3e8> + 4b6: f1 e0 ldi r31, 0x01 ; 1 + 4b8: 9f 16 cp r9, r31 + 4ba: 41 f0 breq .+16 ; 0x4cc <__vector_13+0x40e> + 4bc: 9f 16 cp r9, r31 + 4be: 20 f0 brcs .+8 ; 0x4c8 <__vector_13+0x40a> + 4c0: 92 e0 ldi r25, 0x02 ; 2 + 4c2: 99 12 cpse r9, r25 + 4c4: 08 c0 rjmp .+16 ; 0x4d6 <__vector_13+0x418> + 4c6: 05 c0 rjmp .+10 ; 0x4d2 <__vector_13+0x414> case 0: OCR0B = c; break; //ROT - 49c: 88 bd out 0x28, r24 ; 40 - 49e: 06 c0 rjmp .+12 ; 0x4ac <__vector_13+0x3ee> + 4c8: 88 bd out 0x28, r24 ; 40 + 4ca: 05 c0 rjmp .+10 ; 0x4d6 <__vector_13+0x418> case 1: OCR2B = c; break; //GRÜN - 4a0: f1 01 movw r30, r2 - 4a2: 80 83 st Z, r24 - 4a4: 03 c0 rjmp .+6 ; 0x4ac <__vector_13+0x3ee> + 4cc: f5 01 movw r30, r10 + 4ce: 80 83 st Z, r24 + 4d0: 02 c0 rjmp .+4 ; 0x4d6 <__vector_13+0x418> case 2: OCR2A = c; break; //BLAU - 4a6: e3 eb ldi r30, 0xB3 ; 179 - 4a8: f0 e0 ldi r31, 0x00 ; 0 - 4aa: 80 83 st Z, r24 - if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->fade_zylk-1]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->fade_zylk-1])) { + 4d2: f1 01 movw r30, r2 + 4d4: 80 83 st Z, r24 + if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->_l]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->_l])) { this->virtualcolor[i] = this->virtualcolor[i] + this->fadesteps[i]; this->sp(i, this->virtualcolor[i]); } else { - this->sp(i, this->fademap[i][this->fade_zylk-1]); + this->sp(i, this->fademap[i][this->_l]); this->fadesteps[i] = 0; - 4ac: cc 0f add r28, r28 - 4ae: dd 1f adc r29, r29 - 4b0: cc 0f add r28, r28 - 4b2: dd 1f adc r29, r29 - 4b4: c8 57 subi r28, 0x78 ; 120 - 4b6: de 4f sbci r29, 0xFE ; 254 - 4b8: 1d 8a std Y+21, r1 ; 0x15 - 4ba: 1e 8a std Y+22, r1 ; 0x16 - 4bc: 1f 8a std Y+23, r1 ; 0x17 - 4be: 18 8e std Y+24, r1 ; 0x18 + 4d6: cc 0f add r28, r28 + 4d8: dd 1f adc r29, r29 + 4da: cc 0f add r28, r28 + 4dc: dd 1f adc r29, r29 + 4de: c8 57 subi r28, 0x78 ; 120 + 4e0: de 4f sbci r29, 0xFE ; 254 + 4e2: 19 8e std Y+25, r1 ; 0x19 + 4e4: 1a 8e std Y+26, r1 ; 0x1a + 4e6: 1b 8e std Y+27, r1 ; 0x1b + 4e8: 1c 8e std Y+28, r1 ; 0x1c + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + this->fadesteps[i] = (this->fademap[i][this->_l]-this->gp(i))/this->fademap[3][this->_l]; + this->virtualcolor[i] = this->gp(i); } - /*this->fadesteps[0] = (this->fademap[0][this->fade_zylk-1]-this->gp(0))/this->fademap[3][this->fade_zylk-1]; //Calc Red; - this->fadesteps[1] = (this->fademap[1][this->fade_zylk-1]-OCR2B)/this->fademap[3][this->fade_zylk-1]; //Calc Green; - this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue;*/ } else { for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue - 4c0: f2 e0 ldi r31, 0x02 ; 2 - 4c2: f8 15 cp r31, r8 - 4c4: 08 f0 brcs .+2 ; 0x4c8 <__vector_13+0x40a> - 4c6: 20 cf rjmp .-448 ; 0x308 <__vector_13+0x24a> - 4c8: 18 c0 rjmp .+48 ; 0x4fa <__vector_13+0x43c> - void interrupt() { + 4ea: f2 e0 ldi r31, 0x02 ; 2 + 4ec: f8 15 cp r31, r8 + 4ee: 08 f0 brcs .+2 ; 0x4f2 <__vector_13+0x434> + 4f0: 17 cf rjmp .-466 ; 0x320 <__vector_13+0x262> + 4f2: 18 c0 rjmp .+48 ; 0x524 <__stack+0x25> if(this->fade_zylk > 0) { if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { + this->_l = (this->_l + 1 < this->fade_zylk) ? this->_l + 1 : 0; for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue - this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1]; + this->fadesteps[i] = (this->fademap[i][this->_l]-this->gp(i))/this->fademap[3][this->_l]; this->virtualcolor[i] = this->gp(i); - 4ca: c7 01 movw r24, r14 - 4cc: 88 0f add r24, r24 - 4ce: 99 1f adc r25, r25 - 4d0: 88 0f add r24, r24 - 4d2: 99 1f adc r25, r25 - 4d4: 0f 2e mov r0, r31 - 4d6: f8 e8 ldi r31, 0x88 ; 136 - 4d8: ef 2e mov r14, r31 - 4da: f1 e0 ldi r31, 0x01 ; 1 - 4dc: ff 2e mov r15, r31 - 4de: f0 2d mov r31, r0 - 4e0: e8 0e add r14, r24 - 4e2: f9 1e adc r15, r25 - 4e4: 70 e0 ldi r23, 0x00 ; 0 - 4e6: 80 e0 ldi r24, 0x00 ; 0 - 4e8: 90 e0 ldi r25, 0x00 ; 0 - 4ea: 0e 94 e0 07 call 0xfc0 ; 0xfc0 <__floatunsisf> - 4ee: f7 01 movw r30, r14 - 4f0: 61 a3 std Z+33, r22 ; 0x21 - 4f2: 72 a3 std Z+34, r23 ; 0x22 - 4f4: 83 a3 std Z+35, r24 ; 0x23 - 4f6: 94 a3 std Z+36, r25 ; 0x24 - 4f8: 3a ce rjmp .-908 ; 0x16e <__vector_13+0xb0> + 4f4: c7 01 movw r24, r14 + 4f6: 88 0f add r24, r24 + 4f8: 99 1f adc r25, r25 + 4fa: 88 0f add r24, r24 + 4fc: 99 1f adc r25, r25 + 4fe: 0f 2e mov r0, r31 + 500: f8 e8 ldi r31, 0x88 ; 136 + 502: ef 2e mov r14, r31 + 504: f1 e0 ldi r31, 0x01 ; 1 + 506: ff 2e mov r15, r31 + 508: f0 2d mov r31, r0 + 50a: e8 0e add r14, r24 + 50c: f9 1e adc r15, r25 + 50e: 70 e0 ldi r23, 0x00 ; 0 + 510: 80 e0 ldi r24, 0x00 ; 0 + 512: 90 e0 ldi r25, 0x00 ; 0 + 514: 0e 94 95 08 call 0x112a ; 0x112a <__floatunsisf> + 518: f7 01 movw r30, r14 + 51a: 65 a3 std Z+37, r22 ; 0x25 + 51c: 76 a3 std Z+38, r23 ; 0x26 + 51e: 87 a3 std Z+39, r24 ; 0x27 + 520: 90 a7 std Z+40, r25 ; 0x28 + 522: 43 ce rjmp .-890 ; 0x1aa <__vector_13+0xec> stripe.interrupt(); - 4fa: ff 91 pop r31 - 4fc: ef 91 pop r30 - 4fe: df 91 pop r29 - 500: cf 91 pop r28 - 502: bf 91 pop r27 - 504: af 91 pop r26 - 506: 9f 91 pop r25 - 508: 8f 91 pop r24 - 50a: 7f 91 pop r23 - 50c: 6f 91 pop r22 - 50e: 5f 91 pop r21 - 510: 4f 91 pop r20 - 512: 3f 91 pop r19 - 514: 2f 91 pop r18 - 516: 1f 91 pop r17 - 518: 0f 91 pop r16 - 51a: ff 90 pop r15 - 51c: ef 90 pop r14 - 51e: df 90 pop r13 - 520: cf 90 pop r12 - 522: bf 90 pop r11 - 524: af 90 pop r10 - 526: 9f 90 pop r9 - 528: 8f 90 pop r8 - 52a: 7f 90 pop r7 - 52c: 6f 90 pop r6 - 52e: 5f 90 pop r5 - 530: 4f 90 pop r4 - 532: 3f 90 pop r3 - 534: 2f 90 pop r2 - 536: 0f 90 pop r0 - 538: 0f be out 0x3f, r0 ; 63 - 53a: 0f 90 pop r0 - 53c: 1f 90 pop r1 - 53e: 18 95 reti + 524: ff 91 pop r31 + 526: ef 91 pop r30 + 528: df 91 pop r29 + 52a: cf 91 pop r28 + 52c: bf 91 pop r27 + 52e: af 91 pop r26 + 530: 9f 91 pop r25 + 532: 8f 91 pop r24 + 534: 7f 91 pop r23 + 536: 6f 91 pop r22 + 538: 5f 91 pop r21 + 53a: 4f 91 pop r20 + 53c: 3f 91 pop r19 + 53e: 2f 91 pop r18 + 540: 1f 91 pop r17 + 542: 0f 91 pop r16 + 544: ff 90 pop r15 + 546: ef 90 pop r14 + 548: df 90 pop r13 + 54a: cf 90 pop r12 + 54c: bf 90 pop r11 + 54e: af 90 pop r10 + 550: 9f 90 pop r9 + 552: 8f 90 pop r8 + 554: 7f 90 pop r7 + 556: 6f 90 pop r6 + 558: 5f 90 pop r5 + 55a: 4f 90 pop r4 + 55c: 3f 90 pop r3 + 55e: 2f 90 pop r2 + 560: 0f 90 pop r0 + 562: 0f be out 0x3f, r0 ; 63 + 564: 0f 90 pop r0 + 566: 1f 90 pop r1 + 568: 18 95 reti -00000540 <_ZN4UartILm9600EEC1Ev>: +0000056a <_ZN4UartILm9600EEC1Ev>: #include template class Uart { public: Uart() { - 540: cf 93 push r28 - 542: df 93 push r29 + 56a: cf 93 push r28 + 56c: df 93 push r29 sei(); - 544: 78 94 sei + 56e: 78 94 sei void print(uint8_t wert) { uart_putchar(wert); } private: void init() { UBRR0L = (F_CPU / (baudrate * 16L) - 1); //Teiler wird gesetzt - 546: 81 e8 ldi r24, 0x81 ; 129 - 548: 80 93 c4 00 sts 0x00C4, r24 + 570: 81 e8 ldi r24, 0x81 ; 129 + 572: 80 93 c4 00 sts 0x00C4, r24 UCSR0A= (0< + 594: 80 81 ld r24, Z + 596: 85 ff sbrs r24, 5 + 598: fd cf rjmp .-6 ; 0x594 <_ZN4UartILm9600EEC1Ev+0x2a> UDR0 = c; - 570: 98 83 st Y, r25 + 59a: 98 83 st Y, r25 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - 572: 9d 91 ld r25, X+ - 574: 91 11 cpse r25, r1 - 576: f9 cf rjmp .-14 ; 0x56a <_ZN4UartILm9600EEC1Ev+0x2a> + 59c: 9d 91 ld r25, X+ + 59e: 91 11 cpse r25, r1 + 5a0: f9 cf rjmp .-14 ; 0x594 <_ZN4UartILm9600EEC1Ev+0x2a> UCSR0A= (0< + 5a2: e0 ec ldi r30, 0xC0 ; 192 + 5a4: f0 e0 ldi r31, 0x00 ; 0 + 5a6: 80 81 ld r24, Z + 5a8: 85 ff sbrs r24, 5 + 5aa: fd cf rjmp .-6 ; 0x5a6 <_ZN4UartILm9600EEC1Ev+0x3c> UDR0 = c; - 582: 8d e0 ldi r24, 0x0D ; 13 - 584: 80 93 c6 00 sts 0x00C6, r24 + 5ac: 8d e0 ldi r24, 0x0D ; 13 + 5ae: 80 93 c6 00 sts 0x00C6, r24 UCSR0A= (0< + 5b2: e0 ec ldi r30, 0xC0 ; 192 + 5b4: f0 e0 ldi r31, 0x00 ; 0 + 5b6: 80 81 ld r24, Z + 5b8: 85 ff sbrs r24, 5 + 5ba: fd cf rjmp .-6 ; 0x5b6 <_ZN4UartILm9600EEC1Ev+0x4c> UDR0 = c; - 592: 8a e0 ldi r24, 0x0A ; 10 - 594: 80 93 c6 00 sts 0x00C6, r24 + 5bc: 8a e0 ldi r24, 0x0A ; 10 + 5be: 80 93 c6 00 sts 0x00C6, r24 public: Uart() { sei(); init(); println("Uart done!"); } - 598: df 91 pop r29 - 59a: cf 91 pop r28 - 59c: 08 95 ret + 5c2: df 91 pop r29 + 5c4: cf 91 pop r28 + 5c6: 08 95 ret -0000059e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh>: +000005c8 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh>: this->sp(0, r); //ROT this->sp(1, g); //GRÜN this->sp(2, b); //BLAU } void setcolor(uint8_t mask) { (mask & (1<<0)) ? this->sp(2, 0xFF) : this->sp(2, 0x00); //Blau - 59e: 60 ff sbrs r22, 0 - 5a0: 04 c0 rjmp .+8 ; 0x5aa <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0xc> + 5c8: 60 ff sbrs r22, 0 + 5ca: 04 c0 rjmp .+8 ; 0x5d4 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0xc> } void sp(uint8_t i, uint8_t c) { switch(i) { case 0: OCR0B = c; break; //ROT case 1: OCR2B = c; break; //GRÜN case 2: OCR2A = c; break; //BLAU - 5a2: 8f ef ldi r24, 0xFF ; 255 - 5a4: 80 93 b3 00 sts 0x00B3, r24 - 5a8: 02 c0 rjmp .+4 ; 0x5ae <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x10> - 5aa: 10 92 b3 00 sts 0x00B3, r1 + 5cc: 8f ef ldi r24, 0xFF ; 255 + 5ce: 80 93 b3 00 sts 0x00B3, r24 + 5d2: 02 c0 rjmp .+4 ; 0x5d8 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x10> + 5d4: 10 92 b3 00 sts 0x00B3, r1 this->sp(1, g); //GRÜN this->sp(2, b); //BLAU } void setcolor(uint8_t mask) { (mask & (1<<0)) ? this->sp(2, 0xFF) : this->sp(2, 0x00); //Blau (mask & (1<<1)) ? this->sp(1, 0xFF) : this->sp(1, 0x00); //Grün - 5ae: 61 ff sbrs r22, 1 - 5b0: 04 c0 rjmp .+8 ; 0x5ba <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x1c> + 5d8: 61 ff sbrs r22, 1 + 5da: 04 c0 rjmp .+8 ; 0x5e4 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x1c> this->color(0, 0, 0); } void sp(uint8_t i, uint8_t c) { switch(i) { case 0: OCR0B = c; break; //ROT case 1: OCR2B = c; break; //GRÜN - 5b2: 8f ef ldi r24, 0xFF ; 255 - 5b4: 80 93 b4 00 sts 0x00B4, r24 - 5b8: 02 c0 rjmp .+4 ; 0x5be <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x20> - 5ba: 10 92 b4 00 sts 0x00B4, r1 + 5dc: 8f ef ldi r24, 0xFF ; 255 + 5de: 80 93 b4 00 sts 0x00B4, r24 + 5e2: 02 c0 rjmp .+4 ; 0x5e8 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x20> + 5e4: 10 92 b4 00 sts 0x00B4, r1 this->sp(2, b); //BLAU } void setcolor(uint8_t mask) { (mask & (1<<0)) ? this->sp(2, 0xFF) : this->sp(2, 0x00); //Blau (mask & (1<<1)) ? this->sp(1, 0xFF) : this->sp(1, 0x00); //Grün (mask & (1<<2)) ? this->sp(0, 0xFF) : this->sp(0, 0x00); //Rot - 5be: 62 ff sbrs r22, 2 - 5c0: 03 c0 rjmp .+6 ; 0x5c8 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x2a> + 5e8: 62 ff sbrs r22, 2 + 5ea: 03 c0 rjmp .+6 ; 0x5f2 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x2a> this->initTimer(); this->color(0, 0, 0); } void sp(uint8_t i, uint8_t c) { switch(i) { case 0: OCR0B = c; break; //ROT - 5c2: 8f ef ldi r24, 0xFF ; 255 - 5c4: 88 bd out 0x28, r24 ; 40 - 5c6: 08 95 ret - 5c8: 18 bc out 0x28, r1 ; 40 - 5ca: 08 95 ret + 5ec: 8f ef ldi r24, 0xFF ; 255 + 5ee: 88 bd out 0x28, r24 ; 40 + 5f0: 08 95 ret + 5f2: 18 bc out 0x28, r1 ; 40 + 5f4: 08 95 ret -000005cc <_ZN4UartILm9600EE7printlnEPKc>: +000005f6 <_ZN4UartILm9600EE7printlnEPKc>: } else { print("0"); } } } void println(const char *text) { - 5cc: cf 93 push r28 - 5ce: df 93 push r29 + 5f6: cf 93 push r28 + 5f8: df 93 push r29 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - 5d0: fb 01 movw r30, r22 - 5d2: 90 81 ld r25, Z - 5d4: 99 23 and r25, r25 - 5d6: 69 f0 breq .+26 ; 0x5f2 <_ZN4UartILm9600EE7printlnEPKc+0x26> + 5fa: fb 01 movw r30, r22 + 5fc: 90 81 ld r25, Z + 5fe: 99 23 and r25, r25 + 600: 69 f0 breq .+26 ; 0x61c <_ZN4UartILm9600EE7printlnEPKc+0x26> } else { print("0"); } } } void println(const char *text) { - 5d8: db 01 movw r26, r22 - 5da: 11 96 adiw r26, 0x01 ; 1 + 602: db 01 movw r26, r22 + 604: 11 96 adiw r26, 0x01 ; 1 UCSR0A= (0< + 60e: 80 81 ld r24, Z + 610: 85 ff sbrs r24, 5 + 612: fd cf rjmp .-6 ; 0x60e <_ZN4UartILm9600EE7printlnEPKc+0x18> UDR0 = c; - 5ea: 98 83 st Y, r25 + 614: 98 83 st Y, r25 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - 5ec: 9d 91 ld r25, X+ - 5ee: 91 11 cpse r25, r1 - 5f0: f9 cf rjmp .-14 ; 0x5e4 <_ZN4UartILm9600EE7printlnEPKc+0x18> + 616: 9d 91 ld r25, X+ + 618: 91 11 cpse r25, r1 + 61a: f9 cf rjmp .-14 ; 0x60e <_ZN4UartILm9600EE7printlnEPKc+0x18> UCSR0A= (0< + 61c: e0 ec ldi r30, 0xC0 ; 192 + 61e: f0 e0 ldi r31, 0x00 ; 0 + 620: 80 81 ld r24, Z + 622: 85 ff sbrs r24, 5 + 624: fd cf rjmp .-6 ; 0x620 <_ZN4UartILm9600EE7printlnEPKc+0x2a> UDR0 = c; - 5fc: 8d e0 ldi r24, 0x0D ; 13 - 5fe: 80 93 c6 00 sts 0x00C6, r24 + 626: 8d e0 ldi r24, 0x0D ; 13 + 628: 80 93 c6 00 sts 0x00C6, r24 UCSR0A= (0< + 62c: e0 ec ldi r30, 0xC0 ; 192 + 62e: f0 e0 ldi r31, 0x00 ; 0 + 630: 80 81 ld r24, Z + 632: 85 ff sbrs r24, 5 + 634: fd cf rjmp .-6 ; 0x630 <_ZN4UartILm9600EE7printlnEPKc+0x3a> UDR0 = c; - 60c: 8a e0 ldi r24, 0x0A ; 10 - 60e: 80 93 c6 00 sts 0x00C6, r24 + 636: 8a e0 ldi r24, 0x0A ; 10 + 638: 80 93 c6 00 sts 0x00C6, r24 } void println(const char *text) { print(text); print("\r"); print("\n"); } - 612: df 91 pop r29 - 614: cf 91 pop r28 - 616: 08 95 ret + 63c: df 91 pop r29 + 63e: cf 91 pop r28 + 640: 08 95 ret -00000618
: -ledclass led; -compclass comp; +00000642
: irclass ir; +const static uint8_t remotetimer = 10; + int main(void) { - 618: cf 93 push r28 - 61a: df 93 push r29 - 61c: 00 d0 rcall .+0 ; 0x61e - 61e: 00 d0 rcall .+0 ; 0x620 - 620: cd b7 in r28, 0x3d ; 61 - 622: de b7 in r29, 0x3e ; 62 + 642: cf 93 push r28 + 644: df 93 push r29 + 646: 00 d0 rcall .+0 ; 0x648 + 648: 00 d0 rcall .+0 ; 0x64a + 64a: 1f 92 push r1 + 64c: cd b7 in r28, 0x3d ; 61 + 64e: de b7 in r29, 0x3e ; 62 sei(); - 624: 78 94 sei + 650: 78 94 sei uint8_t doorstatus = 0; stripe.setcolor(stripe.RED); - 626: 64 e0 ldi r22, 0x04 ; 4 - 628: 88 e8 ldi r24, 0x88 ; 136 - 62a: 91 e0 ldi r25, 0x01 ; 1 - 62c: 0e 94 cf 02 call 0x59e ; 0x59e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> + 652: 64 e0 ldi r22, 0x04 ; 4 + 654: 88 e8 ldi r24, 0x88 ; 136 + 656: 91 e0 ldi r25, 0x01 ; 1 + 658: 0e 94 e4 02 call 0x5c8 ; 0x5c8 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> Serial.println("Rot!"); - 630: 6b e0 ldi r22, 0x0B ; 11 - 632: 71 e0 ldi r23, 0x01 ; 1 - 634: 85 eb ldi r24, 0xB5 ; 181 - 636: 91 e0 ldi r25, 0x01 ; 1 - 638: 0e 94 e6 02 call 0x5cc ; 0x5cc <_ZN4UartILm9600EE7printlnEPKc> + 65c: 6b e0 ldi r22, 0x0B ; 11 + 65e: 71 e0 ldi r23, 0x01 ; 1 + 660: 8a eb ldi r24, 0xBA ; 186 + 662: 91 e0 ldi r25, 0x01 ; 1 + 664: 0e 94 fb 02 call 0x5f6 ; 0x5f6 <_ZN4UartILm9600EE7printlnEPKc> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 63c: 2f e7 ldi r18, 0x7F ; 127 - 63e: 3a e1 ldi r19, 0x1A ; 26 - 640: 86 e0 ldi r24, 0x06 ; 6 - 642: 21 50 subi r18, 0x01 ; 1 - 644: 30 40 sbci r19, 0x00 ; 0 - 646: 80 40 sbci r24, 0x00 ; 0 - 648: e1 f7 brne .-8 ; 0x642 - 64a: 00 c0 rjmp .+0 ; 0x64c - 64c: 00 00 nop + 668: 2f e7 ldi r18, 0x7F ; 127 + 66a: 3a e1 ldi r19, 0x1A ; 26 + 66c: 86 e0 ldi r24, 0x06 ; 6 + 66e: 21 50 subi r18, 0x01 ; 1 + 670: 30 40 sbci r19, 0x00 ; 0 + 672: 80 40 sbci r24, 0x00 ; 0 + 674: e1 f7 brne .-8 ; 0x66e + 676: 00 c0 rjmp .+0 ; 0x678 + 678: 00 00 nop _delay_ms(100); stripe.setcolor(stripe.GREEN); - 64e: 62 e0 ldi r22, 0x02 ; 2 - 650: 88 e8 ldi r24, 0x88 ; 136 - 652: 91 e0 ldi r25, 0x01 ; 1 - 654: 0e 94 cf 02 call 0x59e ; 0x59e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> + 67a: 62 e0 ldi r22, 0x02 ; 2 + 67c: 88 e8 ldi r24, 0x88 ; 136 + 67e: 91 e0 ldi r25, 0x01 ; 1 + 680: 0e 94 e4 02 call 0x5c8 ; 0x5c8 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> Serial.println("Grün!"); - 658: 60 e1 ldi r22, 0x10 ; 16 - 65a: 71 e0 ldi r23, 0x01 ; 1 - 65c: 85 eb ldi r24, 0xB5 ; 181 - 65e: 91 e0 ldi r25, 0x01 ; 1 - 660: 0e 94 e6 02 call 0x5cc ; 0x5cc <_ZN4UartILm9600EE7printlnEPKc> - 664: 9f e7 ldi r25, 0x7F ; 127 - 666: aa e1 ldi r26, 0x1A ; 26 - 668: b6 e0 ldi r27, 0x06 ; 6 - 66a: 91 50 subi r25, 0x01 ; 1 - 66c: a0 40 sbci r26, 0x00 ; 0 - 66e: b0 40 sbci r27, 0x00 ; 0 - 670: e1 f7 brne .-8 ; 0x66a - 672: 00 c0 rjmp .+0 ; 0x674 - 674: 00 00 nop + 684: 60 e1 ldi r22, 0x10 ; 16 + 686: 71 e0 ldi r23, 0x01 ; 1 + 688: 8a eb ldi r24, 0xBA ; 186 + 68a: 91 e0 ldi r25, 0x01 ; 1 + 68c: 0e 94 fb 02 call 0x5f6 ; 0x5f6 <_ZN4UartILm9600EE7printlnEPKc> + 690: 9f e7 ldi r25, 0x7F ; 127 + 692: aa e1 ldi r26, 0x1A ; 26 + 694: b6 e0 ldi r27, 0x06 ; 6 + 696: 91 50 subi r25, 0x01 ; 1 + 698: a0 40 sbci r26, 0x00 ; 0 + 69a: b0 40 sbci r27, 0x00 ; 0 + 69c: e1 f7 brne .-8 ; 0x696 + 69e: 00 c0 rjmp .+0 ; 0x6a0 + 6a0: 00 00 nop _delay_ms(100); stripe.setcolor(stripe.BLUE); - 676: 61 e0 ldi r22, 0x01 ; 1 - 678: 88 e8 ldi r24, 0x88 ; 136 - 67a: 91 e0 ldi r25, 0x01 ; 1 - 67c: 0e 94 cf 02 call 0x59e ; 0x59e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> + 6a2: 61 e0 ldi r22, 0x01 ; 1 + 6a4: 88 e8 ldi r24, 0x88 ; 136 + 6a6: 91 e0 ldi r25, 0x01 ; 1 + 6a8: 0e 94 e4 02 call 0x5c8 ; 0x5c8 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> Serial.println("Blau!"); - 680: 66 e1 ldi r22, 0x16 ; 22 - 682: 71 e0 ldi r23, 0x01 ; 1 - 684: 85 eb ldi r24, 0xB5 ; 181 - 686: 91 e0 ldi r25, 0x01 ; 1 - 688: 0e 94 e6 02 call 0x5cc ; 0x5cc <_ZN4UartILm9600EE7printlnEPKc> - 68c: 2f e7 ldi r18, 0x7F ; 127 - 68e: 3a e1 ldi r19, 0x1A ; 26 - 690: 86 e0 ldi r24, 0x06 ; 6 - 692: 21 50 subi r18, 0x01 ; 1 - 694: 30 40 sbci r19, 0x00 ; 0 - 696: 80 40 sbci r24, 0x00 ; 0 - 698: e1 f7 brne .-8 ; 0x692 - 69a: 00 c0 rjmp .+0 ; 0x69c - 69c: 00 00 nop + 6ac: 66 e1 ldi r22, 0x16 ; 22 + 6ae: 71 e0 ldi r23, 0x01 ; 1 + 6b0: 8a eb ldi r24, 0xBA ; 186 + 6b2: 91 e0 ldi r25, 0x01 ; 1 + 6b4: 0e 94 fb 02 call 0x5f6 ; 0x5f6 <_ZN4UartILm9600EE7printlnEPKc> + 6b8: 2f e7 ldi r18, 0x7F ; 127 + 6ba: 3a e1 ldi r19, 0x1A ; 26 + 6bc: 86 e0 ldi r24, 0x06 ; 6 + 6be: 21 50 subi r18, 0x01 ; 1 + 6c0: 30 40 sbci r19, 0x00 ; 0 + 6c2: 80 40 sbci r24, 0x00 ; 0 + 6c4: e1 f7 brne .-8 ; 0x6be + 6c6: 00 c0 rjmp .+0 ; 0x6c8 + 6c8: 00 00 nop _delay_ms(100); stripe.setcolor(stripe.WHITE); - 69e: 67 e0 ldi r22, 0x07 ; 7 - 6a0: 88 e8 ldi r24, 0x88 ; 136 - 6a2: 91 e0 ldi r25, 0x01 ; 1 - 6a4: 0e 94 cf 02 call 0x59e ; 0x59e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> + 6ca: 67 e0 ldi r22, 0x07 ; 7 + 6cc: 88 e8 ldi r24, 0x88 ; 136 + 6ce: 91 e0 ldi r25, 0x01 ; 1 + 6d0: 0e 94 e4 02 call 0x5c8 ; 0x5c8 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> Serial.println("Weiß, alles Initialisert! Habe Fertig und damit ab zum Normalbetrieb!"); - 6a8: 6c e1 ldi r22, 0x1C ; 28 - 6aa: 71 e0 ldi r23, 0x01 ; 1 - 6ac: 85 eb ldi r24, 0xB5 ; 181 - 6ae: 91 e0 ldi r25, 0x01 ; 1 - 6b0: 0e 94 e6 02 call 0x5cc ; 0x5cc <_ZN4UartILm9600EE7printlnEPKc> - 6b4: 9f e7 ldi r25, 0x7F ; 127 - 6b6: aa e1 ldi r26, 0x1A ; 26 - 6b8: b6 e0 ldi r27, 0x06 ; 6 - 6ba: 91 50 subi r25, 0x01 ; 1 - 6bc: a0 40 sbci r26, 0x00 ; 0 - 6be: b0 40 sbci r27, 0x00 ; 0 - 6c0: e1 f7 brne .-8 ; 0x6ba - 6c2: 00 c0 rjmp .+0 ; 0x6c4 - 6c4: 00 00 nop + 6d4: 6c e1 ldi r22, 0x1C ; 28 + 6d6: 71 e0 ldi r23, 0x01 ; 1 + 6d8: 8a eb ldi r24, 0xBA ; 186 + 6da: 91 e0 ldi r25, 0x01 ; 1 + 6dc: 0e 94 fb 02 call 0x5f6 ; 0x5f6 <_ZN4UartILm9600EE7printlnEPKc> + 6e0: 9f e7 ldi r25, 0x7F ; 127 + 6e2: aa e1 ldi r26, 0x1A ; 26 + 6e4: b6 e0 ldi r27, 0x06 ; 6 + 6e6: 91 50 subi r25, 0x01 ; 1 + 6e8: a0 40 sbci r26, 0x00 ; 0 + 6ea: b0 40 sbci r27, 0x00 ; 0 + 6ec: e1 f7 brne .-8 ; 0x6e6 + 6ee: 00 c0 rjmp .+0 ; 0x6f0 + 6f0: 00 00 nop namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 6c6: 29 9a sbi 0x05, 1 ; 5 + 6f2: 29 9a sbi 0x05, 1 ; 5 _delay_ms(100); led.green(1); stripe.setcolor(stripe.BLACK); - 6c8: 60 e0 ldi r22, 0x00 ; 0 - 6ca: 88 e8 ldi r24, 0x88 ; 136 - 6cc: 91 e0 ldi r25, 0x01 ; 1 - 6ce: 0e 94 cf 02 call 0x59e ; 0x59e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> -irclass ir; - -int main(void) -{ - sei(); - uint8_t doorstatus = 0; - 6d2: 21 2c mov r2, r1 + 6f4: 60 e0 ldi r22, 0x00 ; 0 + 6f6: 88 e8 ldi r24, 0x88 ; 136 + 6f8: 91 e0 ldi r25, 0x01 ; 1 + 6fa: 0e 94 e4 02 call 0x5c8 ; 0x5c8 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> + uint8_t annoing_speed = 0; + 6fe: 31 2c mov r3, r1 } led.red(0); EIFR |= (1<_code; - 6d4: 45 e8 ldi r20, 0x85 ; 133 - 6d6: 51 e0 ldi r21, 0x01 ; 1 + 700: 45 e8 ldi r20, 0x85 ; 133 + 702: 51 e0 ldi r21, 0x01 ; 1 this->_code = 255; - 6d8: bb 24 eor r11, r11 - 6da: ba 94 dec r11 - 6dc: ab 2c mov r10, r11 - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { - this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; + 704: 1f ef ldi r17, 0xFF ; 255 + this->fade_zylk = 0; + } + this->_l = 0; } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 6de: 0f 2e mov r0, r31 - 6e0: f9 e8 ldi r31, 0x89 ; 137 - 6e2: ef 2e mov r14, r31 - 6e4: f1 e0 ldi r31, 0x01 ; 1 - 6e6: ff 2e mov r15, r31 - 6e8: f0 2d mov r31, r0 - this->fademap[1][index] = green; - 6ea: 0e e8 ldi r16, 0x8E ; 142 - 6ec: 11 e0 ldi r17, 0x01 ; 1 - this->fademap[2][index] = blue; - 6ee: 0f 2e mov r0, r31 - 6f0: f3 e9 ldi r31, 0x93 ; 147 - 6f2: 8f 2e mov r8, r31 - 6f4: f1 e0 ldi r31, 0x01 ; 1 - 6f6: 9f 2e mov r9, r31 - 6f8: f0 2d mov r31, r0 - this->fademap[3][index] = time; - 6fa: 0f 2e mov r0, r31 - 6fc: f8 e9 ldi r31, 0x98 ; 152 - 6fe: 6f 2e mov r6, r31 - 700: f1 e0 ldi r31, 0x01 ; 1 - 702: 7f 2e mov r7, r31 - 704: f0 2d mov r31, r0 706: 0f 2e mov r0, r31 - 708: fa e0 ldi r31, 0x0A ; 10 - 70a: 3f 2e mov r3, r31 - 70c: f0 2d mov r31, r0 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + 708: f9 e8 ldi r31, 0x89 ; 137 + 70a: ef 2e mov r14, r31 + 70c: f1 e0 ldi r31, 0x01 ; 1 + 70e: ff 2e mov r15, r31 + 710: f0 2d mov r31, r0 + this->fademap[1][index] = green; + this->fademap[2][index] = blue; + 712: 0f 2e mov r0, r31 + 714: f5 e9 ldi r31, 0x95 ; 149 + 716: 8f 2e mov r8, r31 + 718: f1 e0 ldi r31, 0x01 ; 1 + 71a: 9f 2e mov r9, r31 + 71c: f0 2d mov r31, r0 + this->fademap[3][index] = time; + 71e: 0f 2e mov r0, r31 + 720: fb e9 ldi r31, 0x9B ; 155 + 722: 6f 2e mov r6, r31 + 724: f1 e0 ldi r31, 0x01 ; 1 + 726: 7f 2e mov r7, r31 + 728: f0 2d mov r31, r0 + 72a: 0f 2e mov r0, r31 + 72c: fa e0 ldi r31, 0x0A ; 10 + 72e: 2f 2e mov r2, r31 + 730: f0 2d mov r31, r0 this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 70e: 0f 2e mov r0, r31 - 710: f8 e8 ldi r31, 0x88 ; 136 - 712: 4f 2e mov r4, r31 - 714: f1 e0 ldi r31, 0x01 ; 1 - 716: 5f 2e mov r5, r31 - 718: f0 2d mov r31, r0 - 71a: cc 24 eor r12, r12 - 71c: c3 94 inc r12 + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + 732: 0f 2e mov r0, r31 + 734: f8 e8 ldi r31, 0x88 ; 136 + 736: 4f 2e mov r4, r31 + 738: f1 e0 ldi r31, 0x01 ; 1 + 73a: 5f 2e mov r5, r31 + 73c: f0 2d mov r31, r0 + 73e: aa 24 eor r10, r10 + 740: a3 94 inc r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + 742: 0f 2e mov r0, r31 + 744: f9 eb ldi r31, 0xB9 ; 185 + 746: cf 2e mov r12, r31 + 748: f1 e0 ldi r31, 0x01 ; 1 + 74a: df 2e mov r13, r31 + 74c: f0 2d mov r31, r0 UCSR0A= (0<fademap[0][index] = red; + this->fademap[1][index] = green; + this->fademap[2][index] = blue; + this->fademap[3][index] = time; + 75a: 39 82 std Y+1, r3 ; 0x01 + 75c: 01 2f mov r16, r17 } led.red(0); EIFR |= (1<_code; - 72a: da 01 movw r26, r20 - 72c: 8c 91 ld r24, X + 75e: da 01 movw r26, r20 + 760: 8c 91 ld r24, X this->_code = 255; - 72e: ac 92 st X, r10 - - uint8_t remotetimer = 10; + 762: 0c 93 st X, r16 while(1) { uint8_t c = ir.getCode(); switch(c) { - 730: 8c 30 cpi r24, 0x0C ; 12 - 732: 09 f4 brne .+2 ; 0x736 - 734: fc c0 rjmp .+504 ; 0x92e - 736: 38 f5 brcc .+78 ; 0x786 - 738: 85 30 cpi r24, 0x05 ; 5 - 73a: 09 f4 brne .+2 ; 0x73e - 73c: b3 c0 rjmp .+358 ; 0x8a4 - 73e: 90 f4 brcc .+36 ; 0x764 - 740: 82 30 cpi r24, 0x02 ; 2 - 742: 09 f4 brne .+2 ; 0x746 - 744: 8c c0 rjmp .+280 ; 0x85e - 746: 38 f4 brcc .+14 ; 0x756 - 748: 88 23 and r24, r24 - 74a: 09 f4 brne .+2 ; 0x74e - 74c: 46 c0 rjmp .+140 ; 0x7da - 74e: 81 30 cpi r24, 0x01 ; 1 - 750: 09 f0 breq .+2 ; 0x754 - 752: 56 c1 rjmp .+684 ; 0xa00 - 754: 63 c0 rjmp .+198 ; 0x81c - 756: 83 30 cpi r24, 0x03 ; 3 - 758: 09 f4 brne .+2 ; 0x75c - 75a: 90 c0 rjmp .+288 ; 0x87c - 75c: 84 30 cpi r24, 0x04 ; 4 - 75e: 09 f0 breq .+2 ; 0x762 - 760: 4f c1 rjmp .+670 ; 0xa00 - 762: 95 c0 rjmp .+298 ; 0x88e - 764: 88 30 cpi r24, 0x08 ; 8 - 766: 09 f4 brne .+2 ; 0x76a - 768: be c0 rjmp .+380 ; 0x8e6 - 76a: 38 f4 brcc .+14 ; 0x77a - 76c: 86 30 cpi r24, 0x06 ; 6 - 76e: 09 f4 brne .+2 ; 0x772 - 770: a4 c0 rjmp .+328 ; 0x8ba - 772: 87 30 cpi r24, 0x07 ; 7 - 774: 09 f0 breq .+2 ; 0x778 - 776: 44 c1 rjmp .+648 ; 0xa00 - 778: ab c0 rjmp .+342 ; 0x8d0 - 77a: 8a 30 cpi r24, 0x0A ; 10 - 77c: 09 f4 brne .+2 ; 0x780 - 77e: cb c0 rjmp .+406 ; 0x916 - 780: 08 f0 brcs .+2 ; 0x784 - 782: e5 c1 rjmp .+970 ; 0xb4e - 784: bc c0 rjmp .+376 ; 0x8fe - 786: 82 31 cpi r24, 0x12 ; 18 - 788: 09 f4 brne .+2 ; 0x78c - 78a: 0d c1 rjmp .+538 ; 0x9a6 - 78c: 90 f4 brcc .+36 ; 0x7b2 - 78e: 8f 30 cpi r24, 0x0F ; 15 - 790: 09 f4 brne .+2 ; 0x794 - 792: dd c1 rjmp .+954 ; 0xb4e - 794: 38 f4 brcc .+14 ; 0x7a4 - 796: 8d 30 cpi r24, 0x0D ; 13 - 798: 09 f4 brne .+2 ; 0x79c - 79a: d5 c0 rjmp .+426 ; 0x946 - 79c: 8e 30 cpi r24, 0x0E ; 14 - 79e: 09 f0 breq .+2 ; 0x7a2 - 7a0: 2f c1 rjmp .+606 ; 0xa00 - 7a2: dd c0 rjmp .+442 ; 0x95e - 7a4: 80 31 cpi r24, 0x10 ; 16 - 7a6: 09 f4 brne .+2 ; 0x7aa - 7a8: e6 c0 rjmp .+460 ; 0x976 - 7aa: 81 31 cpi r24, 0x11 ; 17 - 7ac: 09 f0 breq .+2 ; 0x7b0 - 7ae: 28 c1 rjmp .+592 ; 0xa00 - 7b0: ee c0 rjmp .+476 ; 0x98e - 7b2: 85 31 cpi r24, 0x15 ; 21 - 7b4: 09 f4 brne .+2 ; 0x7b8 - 7b6: 0e c1 rjmp .+540 ; 0x9d4 - 7b8: 38 f4 brcc .+14 ; 0x7c8 - 7ba: 83 31 cpi r24, 0x13 ; 19 - 7bc: 09 f4 brne .+2 ; 0x7c0 - 7be: c7 c1 rjmp .+910 ; 0xb4e - 7c0: 84 31 cpi r24, 0x14 ; 20 - 7c2: 09 f0 breq .+2 ; 0x7c6 - 7c4: 1d c1 rjmp .+570 ; 0xa00 - 7c6: fb c0 rjmp .+502 ; 0x9be - 7c8: 87 31 cpi r24, 0x17 ; 23 - 7ca: 09 f4 brne .+2 ; 0x7ce - 7cc: c0 c1 rjmp .+896 ; 0xb4e - 7ce: 08 f4 brcc .+2 ; 0x7d2 - 7d0: 0c c1 rjmp .+536 ; 0x9ea - 7d2: 8f 3f cpi r24, 0xFF ; 255 - 7d4: 09 f0 breq .+2 ; 0x7d8 - 7d6: 14 c1 rjmp .+552 ; 0xa00 - 7d8: ba c1 rjmp .+884 ; 0xb4e - } else { - OCR2A = 0; - } - } - void higher() { - if(OCR0B <= 250) { - 7da: 88 b5 in r24, 0x28 ; 40 - 7dc: 8b 3f cpi r24, 0xFB ; 251 - 7de: 20 f4 brcc .+8 ; 0x7e8 - OCR0B = OCR0B + 5; - 7e0: 88 b5 in r24, 0x28 ; 40 - 7e2: 8b 5f subi r24, 0xFB ; 251 - 7e4: 88 bd out 0x28, r24 ; 40 - 7e6: 01 c0 rjmp .+2 ; 0x7ea - } else { - OCR0B = 0; - 7e8: 18 bc out 0x28, r1 ; 40 - } - if(OCR2B <= 250) { - 7ea: a4 eb ldi r26, 0xB4 ; 180 - 7ec: b0 e0 ldi r27, 0x00 ; 0 - 7ee: 8c 91 ld r24, X - 7f0: 8b 3f cpi r24, 0xFB ; 251 - 7f2: 20 f4 brcc .+8 ; 0x7fc - OCR2B = OCR2B + 5; - 7f4: 8c 91 ld r24, X - 7f6: 8b 5f subi r24, 0xFB ; 251 - 7f8: 8c 93 st X, r24 - 7fa: 03 c0 rjmp .+6 ; 0x802 - } else { - OCR2B = 0; - 7fc: a4 eb ldi r26, 0xB4 ; 180 - 7fe: b0 e0 ldi r27, 0x00 ; 0 - 800: 1c 92 st X, r1 - } - if(OCR2A <= 250) { - 802: a3 eb ldi r26, 0xB3 ; 179 - 804: b0 e0 ldi r27, 0x00 ; 0 - 806: 8c 91 ld r24, X - 808: 8b 3f cpi r24, 0xFB ; 251 - 80a: 20 f4 brcc .+8 ; 0x814 - OCR2A = OCR2A + 5; - 80c: 8c 91 ld r24, X - 80e: 8b 5f subi r24, 0xFB ; 251 - 810: 8c 93 st X, r24 - 812: 9d c1 rjmp .+826 ; 0xb4e - } else { - OCR2A = 0; - 814: a3 eb ldi r26, 0xB3 ; 179 - 816: b0 e0 ldi r27, 0x00 ; 0 - 818: 1c 92 st X, r1 - 81a: 99 c1 rjmp .+818 ; 0xb4e - } - void on() { - this->timerOn(); - } - void lower() { - if(OCR0B >= 5) { - 81c: 88 b5 in r24, 0x28 ; 40 - 81e: 85 30 cpi r24, 0x05 ; 5 - 820: 20 f0 brcs .+8 ; 0x82a - OCR0B = OCR0B - 5; - 822: 88 b5 in r24, 0x28 ; 40 - 824: 85 50 subi r24, 0x05 ; 5 - 826: 88 bd out 0x28, r24 ; 40 - 828: 01 c0 rjmp .+2 ; 0x82c - } else { - OCR0B = 0; - 82a: 18 bc out 0x28, r1 ; 40 - } - if(OCR2B >= 5) { - 82c: a4 eb ldi r26, 0xB4 ; 180 - 82e: b0 e0 ldi r27, 0x00 ; 0 - 830: 8c 91 ld r24, X - 832: 85 30 cpi r24, 0x05 ; 5 - 834: 20 f0 brcs .+8 ; 0x83e - OCR2B = OCR2B - 5; - 836: 8c 91 ld r24, X - 838: 85 50 subi r24, 0x05 ; 5 - 83a: 8c 93 st X, r24 - 83c: 03 c0 rjmp .+6 ; 0x844 - } else { - OCR2B = 0; - 83e: a4 eb ldi r26, 0xB4 ; 180 - 840: b0 e0 ldi r27, 0x00 ; 0 - 842: 1c 92 st X, r1 - } - if(OCR2A >= 5) { - 844: a3 eb ldi r26, 0xB3 ; 179 - 846: b0 e0 ldi r27, 0x00 ; 0 - 848: 8c 91 ld r24, X - 84a: 85 30 cpi r24, 0x05 ; 5 - 84c: 20 f0 brcs .+8 ; 0x856 - OCR2A = OCR2A - 5; - 84e: 8c 91 ld r24, X - 850: 85 50 subi r24, 0x05 ; 5 - 852: 8c 93 st X, r24 - 854: 7c c1 rjmp .+760 ; 0xb4e - } else { - OCR2A = 0; - 856: a3 eb ldi r26, 0xB3 ; 179 - 858: b0 e0 ldi r27, 0x00 ; 0 - 85a: 1c 92 st X, r1 - 85c: 78 c1 rjmp .+752 ; 0xb4e + 764: 8c 30 cpi r24, 0x0C ; 12 + 766: 09 f4 brne .+2 ; 0x76a + 768: f9 c0 rjmp .+498 ; 0x95c + 76a: 38 f5 brcc .+78 ; 0x7ba + 76c: 85 30 cpi r24, 0x05 ; 5 + 76e: 09 f4 brne .+2 ; 0x772 + 770: 82 c0 rjmp .+260 ; 0x876 + 772: 90 f4 brcc .+36 ; 0x798 + 774: 82 30 cpi r24, 0x02 ; 2 + 776: 09 f4 brne .+2 ; 0x77a + 778: 58 c0 rjmp .+176 ; 0x82a + 77a: 38 f4 brcc .+14 ; 0x78a + 77c: 88 23 and r24, r24 + 77e: 09 f4 brne .+2 ; 0x782 + 780: 46 c0 rjmp .+140 ; 0x80e + 782: 81 30 cpi r24, 0x01 ; 1 + 784: 09 f0 breq .+2 ; 0x788 + 786: ea c1 rjmp .+980 ; 0xb5c + 788: 49 c0 rjmp .+146 ; 0x81c + 78a: 83 30 cpi r24, 0x03 ; 3 + 78c: 09 f4 brne .+2 ; 0x790 + 78e: 5c c0 rjmp .+184 ; 0x848 + 790: 84 30 cpi r24, 0x04 ; 4 + 792: 09 f0 breq .+2 ; 0x796 + 794: e3 c1 rjmp .+966 ; 0xb5c + 796: 61 c0 rjmp .+194 ; 0x85a + 798: 88 30 cpi r24, 0x08 ; 8 + 79a: 09 f4 brne .+2 ; 0x79e + 79c: 96 c0 rjmp .+300 ; 0x8ca + 79e: 38 f4 brcc .+14 ; 0x7ae + 7a0: 86 30 cpi r24, 0x06 ; 6 + 7a2: 09 f4 brne .+2 ; 0x7a6 + 7a4: 76 c0 rjmp .+236 ; 0x892 + 7a6: 87 30 cpi r24, 0x07 ; 7 + 7a8: 09 f0 breq .+2 ; 0x7ac + 7aa: d8 c1 rjmp .+944 ; 0xb5c + 7ac: 80 c0 rjmp .+256 ; 0x8ae + 7ae: 8a 30 cpi r24, 0x0A ; 10 + 7b0: 09 f4 brne .+2 ; 0x7b4 + 7b2: a9 c0 rjmp .+338 ; 0x906 + 7b4: 08 f0 brcs .+2 ; 0x7b8 + 7b6: b6 c0 rjmp .+364 ; 0x924 + 7b8: 97 c0 rjmp .+302 ; 0x8e8 + 7ba: 82 31 cpi r24, 0x12 ; 18 + 7bc: 09 f4 brne .+2 ; 0x7c0 + 7be: 3a c1 rjmp .+628 ; 0xa34 + 7c0: 90 f4 brcc .+36 ; 0x7e6 + 7c2: 8f 30 cpi r24, 0x0F ; 15 + 7c4: 09 f4 brne .+2 ; 0x7c8 + 7c6: f7 c0 rjmp .+494 ; 0x9b6 + 7c8: 38 f4 brcc .+14 ; 0x7d8 + 7ca: 8d 30 cpi r24, 0x0D ; 13 + 7cc: 09 f4 brne .+2 ; 0x7d0 + 7ce: d5 c0 rjmp .+426 ; 0x97a + 7d0: 8e 30 cpi r24, 0x0E ; 14 + 7d2: 09 f0 breq .+2 ; 0x7d6 + 7d4: c3 c1 rjmp .+902 ; 0xb5c + 7d6: e0 c0 rjmp .+448 ; 0x998 + 7d8: 80 31 cpi r24, 0x10 ; 16 + 7da: 09 f4 brne .+2 ; 0x7de + 7dc: 0d c1 rjmp .+538 ; 0x9f8 + 7de: 81 31 cpi r24, 0x11 ; 17 + 7e0: 09 f0 breq .+2 ; 0x7e4 + 7e2: bc c1 rjmp .+888 ; 0xb5c + 7e4: 18 c1 rjmp .+560 ; 0xa16 + 7e6: 85 31 cpi r24, 0x15 ; 21 + 7e8: 09 f4 brne .+2 ; 0x7ec + 7ea: 7c c1 rjmp .+760 ; 0xae4 + 7ec: 38 f4 brcc .+14 ; 0x7fc + 7ee: 83 31 cpi r24, 0x13 ; 19 + 7f0: 09 f4 brne .+2 ; 0x7f4 + 7f2: 2f c1 rjmp .+606 ; 0xa52 + 7f4: 84 31 cpi r24, 0x14 ; 20 + 7f6: 09 f0 breq .+2 ; 0x7fa + 7f8: b1 c1 rjmp .+866 ; 0xb5c + 7fa: 66 c1 rjmp .+716 ; 0xac8 + 7fc: 87 31 cpi r24, 0x17 ; 23 + 7fe: 09 f4 brne .+2 ; 0x802 + 800: 8d c1 rjmp .+794 ; 0xb1c + 802: 08 f4 brcc .+2 ; 0x806 + 804: 7d c1 rjmp .+762 ; 0xb00 + 806: 8f 3f cpi r24, 0xFF ; 255 + 808: 09 f0 breq .+2 ; 0x80c + 80a: a8 c1 rjmp .+848 ; 0xb5c + 80c: 4e c2 rjmp .+1180 ; 0xcaa + case 255: break; //Kein Code empfangen + case 0: if(annoing_speed<255) annoing_speed++; break; //Button High + 80e: b9 81 ldd r27, Y+1 ; 0x01 + 810: bf 3f cpi r27, 0xFF ; 255 + 812: 09 f4 brne .+2 ; 0x816 + 814: 4a c2 rjmp .+1172 ; 0xcaa + 816: bf 5f subi r27, 0xFF ; 255 + 818: b9 83 std Y+1, r27 ; 0x01 + 81a: 47 c2 rjmp .+1166 ; 0xcaa + case 1: if(annoing_speed>0) annoing_speed--; break; //Button Low + 81c: 29 81 ldd r18, Y+1 ; 0x01 + 81e: 22 23 and r18, r18 + 820: 09 f4 brne .+2 ; 0x824 + 822: 43 c2 rjmp .+1158 ; 0xcaa + 824: 21 50 subi r18, 0x01 ; 1 + 826: 29 83 std Y+1, r18 ; 0x01 + 828: 40 c2 rjmp .+1152 ; 0xcaa } void timerOff() { // OC0B output: Disconnected // OC2A output: Disconnected // OC2B output: Disconnected TCCR0A &= ~(1< + 844: 23 9a sbi 0x04, 3 ; 4 + 846: 31 c2 rjmp .+1122 ; 0xcaa } void timerOn() { // OC0B output: Non-Inverted PWM // OC2A output: Non-Inverted PWM // OC2B output: Non-Inverted PWM TCCR0A |= (1< - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { - this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; + 84e: a0 eb ldi r26, 0xB0 ; 176 + 850: b0 e0 ldi r27, 0x00 ; 0 + 852: 8c 91 ld r24, X + 854: 80 6a ori r24, 0xA0 ; 160 + 856: 8c 93 st X, r24 + 858: 28 c2 rjmp .+1104 ; 0xcaa + this->fade_zylk = 0; + } + this->_l = 0; } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 88e: d7 01 movw r26, r14 - 890: bc 92 st X, r11 + 85a: d7 01 movw r26, r14 + 85c: 1c 93 st X, r17 this->fademap[1][index] = green; - 892: d8 01 movw r26, r16 + 85e: af e8 ldi r26, 0x8F ; 143 + 860: b1 e0 ldi r27, 0x01 ; 1 + 862: 1c 92 st X, r1 + this->fademap[2][index] = blue; + 864: d4 01 movw r26, r8 + 866: 1c 92 st X, r1 + this->fademap[3][index] = time; + 868: d3 01 movw r26, r6 + 86a: 2c 92 st X, r2 + this->setfadecolor(0, red, green, blue, time); + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + 86c: d2 01 movw r26, r4 + 86e: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + 870: d6 01 movw r26, r12 + 872: 1c 92 st X, r1 + 874: 1a c2 rjmp .+1076 ; 0xcaa + } + void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->fademap[0][index] = red; + 876: d7 01 movw r26, r14 + 878: 1c 92 st X, r1 + this->fademap[1][index] = green; + 87a: af e8 ldi r26, 0x8F ; 143 + 87c: b1 e0 ldi r27, 0x01 ; 1 + 87e: 1c 93 st X, r17 + this->fademap[2][index] = blue; + 880: d4 01 movw r26, r8 + 882: 1c 92 st X, r1 + this->fademap[3][index] = time; + 884: d3 01 movw r26, r6 + 886: 2c 92 st X, r2 + this->setfadecolor(0, red, green, blue, time); + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + 888: d2 01 movw r26, r4 + 88a: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + 88c: d6 01 movw r26, r12 + 88e: 1c 92 st X, r1 + 890: 0c c2 rjmp .+1048 ; 0xcaa + } + void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->fademap[0][index] = red; + 892: d7 01 movw r26, r14 894: 1c 92 st X, r1 + this->fademap[1][index] = green; + 896: af e8 ldi r26, 0x8F ; 143 + 898: b1 e0 ldi r27, 0x01 ; 1 + 89a: 1c 92 st X, r1 this->fademap[2][index] = blue; - 896: d4 01 movw r26, r8 - 898: 1c 92 st X, r1 + 89c: d4 01 movw r26, r8 + 89e: 1c 93 st X, r17 this->fademap[3][index] = time; - 89a: d3 01 movw r26, r6 - 89c: 3c 92 st X, r3 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + 8a0: d3 01 movw r26, r6 + 8a2: 2c 92 st X, r2 this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 89e: d2 01 movw r26, r4 - 8a0: cc 92 st X, r12 - 8a2: 55 c1 rjmp .+682 ; 0xb4e + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + 8a4: d2 01 movw r26, r4 + 8a6: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + 8a8: d6 01 movw r26, r12 + 8aa: 1c 92 st X, r1 + 8ac: fe c1 rjmp .+1020 ; 0xcaa } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 8a4: d7 01 movw r26, r14 - 8a6: 1c 92 st X, r1 + 8ae: d7 01 movw r26, r14 + 8b0: 1c 93 st X, r17 this->fademap[1][index] = green; - 8a8: d8 01 movw r26, r16 - 8aa: bc 92 st X, r11 + 8b2: af e8 ldi r26, 0x8F ; 143 + 8b4: b1 e0 ldi r27, 0x01 ; 1 + 8b6: 1c 93 st X, r17 this->fademap[2][index] = blue; - 8ac: d4 01 movw r26, r8 - 8ae: 1c 92 st X, r1 + 8b8: d4 01 movw r26, r8 + 8ba: 1c 93 st X, r17 this->fademap[3][index] = time; - 8b0: d3 01 movw r26, r6 - 8b2: 3c 92 st X, r3 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + 8bc: d3 01 movw r26, r6 + 8be: 2c 92 st X, r2 this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 8b4: d2 01 movw r26, r4 - 8b6: cc 92 st X, r12 - 8b8: 4a c1 rjmp .+660 ; 0xb4e + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + 8c0: d2 01 movw r26, r4 + 8c2: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + 8c4: d6 01 movw r26, r12 + 8c6: 1c 92 st X, r1 + 8c8: f0 c1 rjmp .+992 ; 0xcaa } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 8ba: d7 01 movw r26, r14 - 8bc: 1c 92 st X, r1 + 8ca: d7 01 movw r26, r14 + 8cc: 1c 93 st X, r17 this->fademap[1][index] = green; - 8be: d8 01 movw r26, r16 - 8c0: 1c 92 st X, r1 + 8ce: 80 e4 ldi r24, 0x40 ; 64 + 8d0: af e8 ldi r26, 0x8F ; 143 + 8d2: b1 e0 ldi r27, 0x01 ; 1 + 8d4: 8c 93 st X, r24 this->fademap[2][index] = blue; - 8c2: d4 01 movw r26, r8 - 8c4: bc 92 st X, r11 + 8d6: d4 01 movw r26, r8 + 8d8: 1c 92 st X, r1 this->fademap[3][index] = time; - 8c6: d3 01 movw r26, r6 - 8c8: 3c 92 st X, r3 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + 8da: d3 01 movw r26, r6 + 8dc: 2c 92 st X, r2 this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 8ca: d2 01 movw r26, r4 - 8cc: cc 92 st X, r12 - 8ce: 3f c1 rjmp .+638 ; 0xb4e + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + 8de: d2 01 movw r26, r4 + 8e0: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + 8e2: d6 01 movw r26, r12 + 8e4: 1c 92 st X, r1 + 8e6: e1 c1 rjmp .+962 ; 0xcaa } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 8d0: d7 01 movw r26, r14 - 8d2: bc 92 st X, r11 + 8e8: d7 01 movw r26, r14 + 8ea: 1c 92 st X, r1 this->fademap[1][index] = green; - 8d4: d8 01 movw r26, r16 - 8d6: bc 92 st X, r11 + 8ec: af e8 ldi r26, 0x8F ; 143 + 8ee: b1 e0 ldi r27, 0x01 ; 1 + 8f0: 1c 93 st X, r17 this->fademap[2][index] = blue; - 8d8: d4 01 movw r26, r8 - 8da: bc 92 st X, r11 + 8f2: 80 e4 ldi r24, 0x40 ; 64 + 8f4: d4 01 movw r26, r8 + 8f6: 8c 93 st X, r24 this->fademap[3][index] = time; - 8dc: d3 01 movw r26, r6 - 8de: 3c 92 st X, r3 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + 8f8: d3 01 movw r26, r6 + 8fa: 2c 92 st X, r2 this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 8e0: d2 01 movw r26, r4 - 8e2: cc 92 st X, r12 - 8e4: 34 c1 rjmp .+616 ; 0xb4e + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + 8fc: d2 01 movw r26, r4 + 8fe: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + 900: d6 01 movw r26, r12 + 902: 1c 92 st X, r1 + 904: d2 c1 rjmp .+932 ; 0xcaa } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 8e6: d7 01 movw r26, r14 - 8e8: bc 92 st X, r11 + 906: 80 e4 ldi r24, 0x40 ; 64 + 908: d7 01 movw r26, r14 + 90a: 8c 93 st X, r24 this->fademap[1][index] = green; - 8ea: 20 e4 ldi r18, 0x40 ; 64 - 8ec: d8 01 movw r26, r16 - 8ee: 2c 93 st X, r18 + 90c: af e8 ldi r26, 0x8F ; 143 + 90e: b1 e0 ldi r27, 0x01 ; 1 + 910: 1c 92 st X, r1 this->fademap[2][index] = blue; - 8f0: d4 01 movw r26, r8 - 8f2: 1c 92 st X, r1 + 912: d4 01 movw r26, r8 + 914: 1c 93 st X, r17 this->fademap[3][index] = time; - 8f4: d3 01 movw r26, r6 - 8f6: 3c 92 st X, r3 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + 916: d3 01 movw r26, r6 + 918: 2c 92 st X, r2 this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 8f8: d2 01 movw r26, r4 - 8fa: cc 92 st X, r12 - 8fc: 28 c1 rjmp .+592 ; 0xb4e + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + 91a: d2 01 movw r26, r4 + 91c: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + 91e: d6 01 movw r26, r12 + 920: 1c 92 st X, r1 + 922: c3 c1 rjmp .+902 ; 0xcaa } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 8fe: d7 01 movw r26, r14 - 900: 1c 92 st X, r1 + 924: d7 01 movw r26, r14 + 926: 1c 93 st X, r17 this->fademap[1][index] = green; - 902: d8 01 movw r26, r16 - 904: bc 92 st X, r11 + 928: af e8 ldi r26, 0x8F ; 143 + 92a: b1 e0 ldi r27, 0x01 ; 1 + 92c: 1c 93 st X, r17 this->fademap[2][index] = blue; - 906: 20 e4 ldi r18, 0x40 ; 64 - 908: d4 01 movw r26, r8 - 90a: 2c 93 st X, r18 + 92e: d4 01 movw r26, r8 + 930: 1c 93 st X, r17 this->fademap[3][index] = time; - 90c: d3 01 movw r26, r6 - 90e: 3c 92 st X, r3 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { - this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 910: d2 01 movw r26, r4 - 912: cc 92 st X, r12 - 914: 1c c1 rjmp .+568 ; 0xb4e - } - void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { - this->fademap[0][index] = red; - 916: 20 e4 ldi r18, 0x40 ; 64 - 918: d7 01 movw r26, r14 - 91a: 2c 93 st X, r18 - this->fademap[1][index] = green; - 91c: d8 01 movw r26, r16 - 91e: 1c 92 st X, r1 - this->fademap[2][index] = blue; - 920: d4 01 movw r26, r8 - 922: bc 92 st X, r11 - this->fademap[3][index] = time; - 924: d3 01 movw r26, r6 - 926: 3c 92 st X, r3 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { - this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 928: d2 01 movw r26, r4 - 92a: cc 92 st X, r12 - 92c: 10 c1 rjmp .+544 ; 0xb4e - } - void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { - this->fademap[0][index] = red; - 92e: d7 01 movw r26, r14 - 930: bc 92 st X, r11 - this->fademap[1][index] = green; - 932: 20 e8 ldi r18, 0x80 ; 128 - 934: d8 01 movw r26, r16 + 932: 29 81 ldd r18, Y+1 ; 0x01 + 934: d3 01 movw r26, r6 936: 2c 93 st X, r18 - this->fademap[2][index] = blue; - 938: d4 01 movw r26, r8 - 93a: 1c 92 st X, r1 - this->fademap[3][index] = time; - 93c: d3 01 movw r26, r6 - 93e: 3c 92 st X, r3 - OCR2A = 0; + this->fade_zylk = 0; } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { - this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 940: d2 01 movw r26, r4 - 942: cc 92 st X, r12 - 944: 04 c1 rjmp .+520 ; 0xb4e + this->_l = 0; } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 946: d7 01 movw r26, r14 + 938: aa e8 ldi r26, 0x8A ; 138 + 93a: b1 e0 ldi r27, 0x01 ; 1 + 93c: 1c 92 st X, r1 + this->fademap[1][index] = green; + 93e: a0 e9 ldi r26, 0x90 ; 144 + 940: b1 e0 ldi r27, 0x01 ; 1 + 942: 1c 92 st X, r1 + this->fademap[2][index] = blue; + 944: a6 e9 ldi r26, 0x96 ; 150 + 946: b1 e0 ldi r27, 0x01 ; 1 948: 1c 92 st X, r1 - this->fademap[1][index] = green; - 94a: d8 01 movw r26, r16 - 94c: bc 92 st X, r11 - this->fademap[2][index] = blue; - 94e: 20 e8 ldi r18, 0x80 ; 128 - 950: d4 01 movw r26, r8 - 952: 2c 93 st X, r18 this->fademap[3][index] = time; - 954: d3 01 movw r26, r6 - 956: 3c 92 st X, r3 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + 94a: ac e9 ldi r26, 0x9C ; 156 + 94c: b1 e0 ldi r27, 0x01 ; 1 + 94e: 2c 93 st X, r18 this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 958: d2 01 movw r26, r4 - 95a: cc 92 st X, r12 - 95c: f8 c0 rjmp .+496 ; 0xb4e + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + 950: 82 e0 ldi r24, 0x02 ; 2 + 952: d2 01 movw r26, r4 + 954: 8c 93 st X, r24 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + 956: d6 01 movw r26, r12 + 958: 1c 92 st X, r1 + 95a: a7 c1 rjmp .+846 ; 0xcaa } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 95e: 20 e8 ldi r18, 0x80 ; 128 - 960: d7 01 movw r26, r14 - 962: 2c 93 st X, r18 + 95c: d7 01 movw r26, r14 + 95e: 1c 93 st X, r17 this->fademap[1][index] = green; - 964: d8 01 movw r26, r16 - 966: 1c 92 st X, r1 + 960: 20 e8 ldi r18, 0x80 ; 128 + 962: af e8 ldi r26, 0x8F ; 143 + 964: b1 e0 ldi r27, 0x01 ; 1 + 966: 2c 93 st X, r18 this->fademap[2][index] = blue; 968: d4 01 movw r26, r8 - 96a: bc 92 st X, r11 + 96a: 1c 92 st X, r1 this->fademap[3][index] = time; 96c: d3 01 movw r26, r6 - 96e: 3c 92 st X, r3 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + 96e: 2c 92 st X, r2 this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; 970: d2 01 movw r26, r4 - 972: cc 92 st X, r12 - 974: ec c0 rjmp .+472 ; 0xb4e + 972: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + 974: d6 01 movw r26, r12 + 976: 1c 92 st X, r1 + 978: 98 c1 rjmp .+816 ; 0xcaa } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 976: d7 01 movw r26, r14 - 978: bc 92 st X, r11 + 97a: d7 01 movw r26, r14 + 97c: 1c 92 st X, r1 this->fademap[1][index] = green; - 97a: 20 ec ldi r18, 0xC0 ; 192 - 97c: d8 01 movw r26, r16 - 97e: 2c 93 st X, r18 + 97e: af e8 ldi r26, 0x8F ; 143 + 980: b1 e0 ldi r27, 0x01 ; 1 + 982: 1c 93 st X, r17 this->fademap[2][index] = blue; - 980: d4 01 movw r26, r8 - 982: 1c 92 st X, r1 + 984: 20 e8 ldi r18, 0x80 ; 128 + 986: d4 01 movw r26, r8 + 988: 2c 93 st X, r18 this->fademap[3][index] = time; - 984: d3 01 movw r26, r6 - 986: 3c 92 st X, r3 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + 98a: d3 01 movw r26, r6 + 98c: 2c 92 st X, r2 this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 988: d2 01 movw r26, r4 - 98a: cc 92 st X, r12 - 98c: e0 c0 rjmp .+448 ; 0xb4e + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + 98e: d2 01 movw r26, r4 + 990: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + 992: d6 01 movw r26, r12 + 994: 1c 92 st X, r1 + 996: 89 c1 rjmp .+786 ; 0xcaa } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 98e: d7 01 movw r26, r14 - 990: 1c 92 st X, r1 + 998: 20 e8 ldi r18, 0x80 ; 128 + 99a: d7 01 movw r26, r14 + 99c: 2c 93 st X, r18 this->fademap[1][index] = green; - 992: d8 01 movw r26, r16 - 994: bc 92 st X, r11 + 99e: af e8 ldi r26, 0x8F ; 143 + 9a0: b1 e0 ldi r27, 0x01 ; 1 + 9a2: 1c 92 st X, r1 this->fademap[2][index] = blue; - 996: 20 ec ldi r18, 0xC0 ; 192 - 998: d4 01 movw r26, r8 - 99a: 2c 93 st X, r18 + 9a4: d4 01 movw r26, r8 + 9a6: 1c 93 st X, r17 this->fademap[3][index] = time; - 99c: d3 01 movw r26, r6 - 99e: 3c 92 st X, r3 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + 9a8: d3 01 movw r26, r6 + 9aa: 2c 92 st X, r2 this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 9a0: d2 01 movw r26, r4 - 9a2: cc 92 st X, r12 - 9a4: d4 c0 rjmp .+424 ; 0xb4e + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + 9ac: d2 01 movw r26, r4 + 9ae: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + 9b0: d6 01 movw r26, r12 + 9b2: 1c 92 st X, r1 + 9b4: 7a c1 rjmp .+756 ; 0xcaa + } + uint8_t gp(uint8_t i) { + switch(i) { + case 0: return OCR0B; //ROT + case 1: return OCR2B; //GRÜN + case 2: return OCR2A; //BLAU + 9b6: 80 91 b3 00 lds r24, 0x00B3 + this->fademap[3][index] = time; + } + uint8_t gp(uint8_t i) { + switch(i) { + case 0: return OCR0B; //ROT + case 1: return OCR2B; //GRÜN + 9ba: 90 91 b4 00 lds r25, 0x00B4 + this->fademap[2][index] = blue; + this->fademap[3][index] = time; + } + uint8_t gp(uint8_t i) { + switch(i) { + case 0: return OCR0B; //ROT + 9be: 28 b5 in r18, 0x28 ; 40 + this->fade_zylk = 0; + } + this->_l = 0; } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 9a6: 20 ec ldi r18, 0xC0 ; 192 - 9a8: d7 01 movw r26, r14 - 9aa: 2c 93 st X, r18 + 9c0: d7 01 movw r26, r14 + 9c2: 2c 93 st X, r18 this->fademap[1][index] = green; - 9ac: d8 01 movw r26, r16 - 9ae: 1c 92 st X, r1 + 9c4: af e8 ldi r26, 0x8F ; 143 + 9c6: b1 e0 ldi r27, 0x01 ; 1 + 9c8: 9c 93 st X, r25 this->fademap[2][index] = blue; - 9b0: d4 01 movw r26, r8 - 9b2: bc 92 st X, r11 + 9ca: d4 01 movw r26, r8 + 9cc: 8c 93 st X, r24 this->fademap[3][index] = time; - 9b4: d3 01 movw r26, r6 - 9b6: 3c 92 st X, r3 - OCR2A = 0; + 9ce: 29 81 ldd r18, Y+1 ; 0x01 + 9d0: d3 01 movw r26, r6 + 9d2: 2c 93 st X, r18 + this->fade_zylk = 0; } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { - this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 9b8: d2 01 movw r26, r4 - 9ba: cc 92 st X, r12 - 9bc: c8 c0 rjmp .+400 ; 0xb4e + this->_l = 0; } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 9be: d7 01 movw r26, r14 - 9c0: bc 92 st X, r11 + 9d4: aa e8 ldi r26, 0x8A ; 138 + 9d6: b1 e0 ldi r27, 0x01 ; 1 + 9d8: 1c 92 st X, r1 this->fademap[1][index] = green; - 9c2: d8 01 movw r26, r16 - 9c4: bc 92 st X, r11 + 9da: a0 e9 ldi r26, 0x90 ; 144 + 9dc: b1 e0 ldi r27, 0x01 ; 1 + 9de: 1c 92 st X, r1 this->fademap[2][index] = blue; - 9c6: d4 01 movw r26, r8 - 9c8: 1c 92 st X, r1 + 9e0: a6 e9 ldi r26, 0x96 ; 150 + 9e2: b1 e0 ldi r27, 0x01 ; 1 + 9e4: 1c 92 st X, r1 this->fademap[3][index] = time; - 9ca: d3 01 movw r26, r6 - 9cc: 3c 92 st X, r3 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + 9e6: ac e9 ldi r26, 0x9C ; 156 + 9e8: b1 e0 ldi r27, 0x01 ; 1 + 9ea: 2c 93 st X, r18 this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 9ce: d2 01 movw r26, r4 - 9d0: cc 92 st X, r12 - 9d2: bd c0 rjmp .+378 ; 0xb4e + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + 9ec: 82 e0 ldi r24, 0x02 ; 2 + 9ee: d2 01 movw r26, r4 + 9f0: 8c 93 st X, r24 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + 9f2: d6 01 movw r26, r12 + 9f4: 1c 92 st X, r1 + 9f6: 59 c1 rjmp .+690 ; 0xcaa } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 9d4: d7 01 movw r26, r14 - 9d6: 1c 92 st X, r1 + 9f8: d7 01 movw r26, r14 + 9fa: 1c 93 st X, r17 this->fademap[1][index] = green; - 9d8: d8 01 movw r26, r16 - 9da: bc 92 st X, r11 + 9fc: 20 ec ldi r18, 0xC0 ; 192 + 9fe: af e8 ldi r26, 0x8F ; 143 + a00: b1 e0 ldi r27, 0x01 ; 1 + a02: 2c 93 st X, r18 this->fademap[2][index] = blue; - 9dc: d4 01 movw r26, r8 - 9de: bc 92 st X, r11 + a04: d4 01 movw r26, r8 + a06: 1c 92 st X, r1 this->fademap[3][index] = time; - 9e0: d3 01 movw r26, r6 - 9e2: 3c 92 st X, r3 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + a08: d3 01 movw r26, r6 + a0a: 2c 92 st X, r2 this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 9e4: d2 01 movw r26, r4 - 9e6: cc 92 st X, r12 - 9e8: b2 c0 rjmp .+356 ; 0xb4e + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + a0c: d2 01 movw r26, r4 + a0e: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + a10: d6 01 movw r26, r12 + a12: 1c 92 st X, r1 + a14: 4a c1 rjmp .+660 ; 0xcaa } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 9ea: d7 01 movw r26, r14 - 9ec: bc 92 st X, r11 + a16: d7 01 movw r26, r14 + a18: 1c 92 st X, r1 this->fademap[1][index] = green; - 9ee: d8 01 movw r26, r16 - 9f0: 1c 92 st X, r1 + a1a: af e8 ldi r26, 0x8F ; 143 + a1c: b1 e0 ldi r27, 0x01 ; 1 + a1e: 1c 93 st X, r17 this->fademap[2][index] = blue; - 9f2: d4 01 movw r26, r8 - 9f4: bc 92 st X, r11 + a20: 20 ec ldi r18, 0xC0 ; 192 + a22: d4 01 movw r26, r8 + a24: 2c 93 st X, r18 this->fademap[3][index] = time; - 9f6: d3 01 movw r26, r6 - 9f8: 3c 92 st X, r3 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + a26: d3 01 movw r26, r6 + a28: 2c 92 st X, r2 this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 9fa: d2 01 movw r26, r4 - 9fc: cc 92 st X, r12 - 9fe: a7 c0 rjmp .+334 ; 0xb4e - case 19: break; //Button FADE - case 20: stripe.fadeto(0xFF,0xFF,0x00,remotetimer); break; //Color Red 100 % + Green 100 % - case 21: stripe.fadeto(0x00,0xFF,0xFF,remotetimer); break; //Color Green 100 % + Blue 100 % - case 22: stripe.fadeto(0xFF,0x00,0xFF,remotetimer); break; //Color Blue 100 % + Red 100 % - case 23: break; //Button SMOOTH + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + a2a: d2 01 movw r26, r4 + a2c: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + a2e: d6 01 movw r26, r12 + a30: 1c 92 st X, r1 + a32: 3b c1 rjmp .+630 ; 0xcaa + } + void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->fademap[0][index] = red; + a34: 20 ec ldi r18, 0xC0 ; 192 + a36: d7 01 movw r26, r14 + a38: 2c 93 st X, r18 + this->fademap[1][index] = green; + a3a: af e8 ldi r26, 0x8F ; 143 + a3c: b1 e0 ldi r27, 0x01 ; 1 + a3e: 1c 92 st X, r1 + this->fademap[2][index] = blue; + a40: d4 01 movw r26, r8 + a42: 1c 93 st X, r17 + this->fademap[3][index] = time; + a44: d3 01 movw r26, r6 + a46: 2c 92 st X, r2 + this->setfadecolor(0, red, green, blue, time); + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + a48: d2 01 movw r26, r4 + a4a: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + a4c: d6 01 movw r26, r12 + a4e: 1c 92 st X, r1 + a50: 2c c1 rjmp .+600 ; 0xcaa + } + void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->fademap[0][index] = red; + a52: d7 01 movw r26, r14 + a54: 1c 93 st X, r17 + this->fademap[1][index] = green; + a56: af e8 ldi r26, 0x8F ; 143 + a58: b1 e0 ldi r27, 0x01 ; 1 + a5a: 1c 92 st X, r1 + this->fademap[2][index] = blue; + a5c: d4 01 movw r26, r8 + a5e: 1c 92 st X, r1 + this->fademap[3][index] = time; + a60: d3 01 movw r26, r6 + a62: 1c 93 st X, r17 + this->fade_zylk = 0; + } + this->_l = 0; + } + void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->fademap[0][index] = red; + a64: aa e8 ldi r26, 0x8A ; 138 + a66: b1 e0 ldi r27, 0x01 ; 1 + a68: 1c 93 st X, r17 + this->fademap[1][index] = green; + a6a: a0 e9 ldi r26, 0x90 ; 144 + a6c: b1 e0 ldi r27, 0x01 ; 1 + a6e: 1c 93 st X, r17 + this->fademap[2][index] = blue; + a70: a6 e9 ldi r26, 0x96 ; 150 + a72: b1 e0 ldi r27, 0x01 ; 1 + a74: 1c 92 st X, r1 + this->fademap[3][index] = time; + a76: ac e9 ldi r26, 0x9C ; 156 + a78: b1 e0 ldi r27, 0x01 ; 1 + a7a: 1c 93 st X, r17 + this->fade_zylk = 0; + } + this->_l = 0; + } + void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->fademap[0][index] = red; + a7c: 10 92 8b 01 sts 0x018B, r1 + this->fademap[1][index] = green; + a80: 10 93 91 01 sts 0x0191, r17 + this->fademap[2][index] = blue; + a84: 10 92 97 01 sts 0x0197, r1 + this->fademap[3][index] = time; + a88: 10 93 9d 01 sts 0x019D, r17 + this->fade_zylk = 0; + } + this->_l = 0; + } + void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->fademap[0][index] = red; + a8c: 10 92 8c 01 sts 0x018C, r1 + this->fademap[1][index] = green; + a90: 10 93 92 01 sts 0x0192, r17 + this->fademap[2][index] = blue; + a94: 10 93 98 01 sts 0x0198, r17 + this->fademap[3][index] = time; + a98: 10 93 9e 01 sts 0x019E, r17 + this->fade_zylk = 0; + } + this->_l = 0; + } + void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->fademap[0][index] = red; + a9c: 10 92 8d 01 sts 0x018D, r1 + this->fademap[1][index] = green; + aa0: 10 92 93 01 sts 0x0193, r1 + this->fademap[2][index] = blue; + aa4: 10 93 99 01 sts 0x0199, r17 + this->fademap[3][index] = time; + aa8: 10 93 9f 01 sts 0x019F, r17 + this->fade_zylk = 0; + } + this->_l = 0; + } + void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->fademap[0][index] = red; + aac: 10 93 8e 01 sts 0x018E, r17 + this->fademap[1][index] = green; + ab0: 10 92 94 01 sts 0x0194, r1 + this->fademap[2][index] = blue; + ab4: 10 93 9a 01 sts 0x019A, r17 + this->fademap[3][index] = time; + ab8: 10 93 a0 01 sts 0x01A0, r17 + this->setfadecolor(0, red, green, blue, time); + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + abc: 86 e0 ldi r24, 0x06 ; 6 + abe: d2 01 movw r26, r4 + ac0: 8c 93 st X, r24 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + ac2: d6 01 movw r26, r12 + ac4: 1c 92 st X, r1 + ac6: f1 c0 rjmp .+482 ; 0xcaa + } + void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->fademap[0][index] = red; + ac8: d7 01 movw r26, r14 + aca: 1c 93 st X, r17 + this->fademap[1][index] = green; + acc: af e8 ldi r26, 0x8F ; 143 + ace: b1 e0 ldi r27, 0x01 ; 1 + ad0: 1c 93 st X, r17 + this->fademap[2][index] = blue; + ad2: d4 01 movw r26, r8 + ad4: 1c 92 st X, r1 + this->fademap[3][index] = time; + ad6: d3 01 movw r26, r6 + ad8: 2c 92 st X, r2 + this->setfadecolor(0, red, green, blue, time); + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + ada: d2 01 movw r26, r4 + adc: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + ade: d6 01 movw r26, r12 + ae0: 1c 92 st X, r1 + ae2: e3 c0 rjmp .+454 ; 0xcaa + } + void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->fademap[0][index] = red; + ae4: d7 01 movw r26, r14 + ae6: 1c 92 st X, r1 + this->fademap[1][index] = green; + ae8: af e8 ldi r26, 0x8F ; 143 + aea: b1 e0 ldi r27, 0x01 ; 1 + aec: 1c 93 st X, r17 + this->fademap[2][index] = blue; + aee: d4 01 movw r26, r8 + af0: 1c 93 st X, r17 + this->fademap[3][index] = time; + af2: d3 01 movw r26, r6 + af4: 2c 92 st X, r2 + this->setfadecolor(0, red, green, blue, time); + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + af6: d2 01 movw r26, r4 + af8: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + afa: d6 01 movw r26, r12 + afc: 1c 92 st X, r1 + afe: d5 c0 rjmp .+426 ; 0xcaa + } + void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->fademap[0][index] = red; + b00: d7 01 movw r26, r14 + b02: 1c 93 st X, r17 + this->fademap[1][index] = green; + b04: af e8 ldi r26, 0x8F ; 143 + b06: b1 e0 ldi r27, 0x01 ; 1 + b08: 1c 92 st X, r1 + this->fademap[2][index] = blue; + b0a: d4 01 movw r26, r8 + b0c: 1c 93 st X, r17 + this->fademap[3][index] = time; + b0e: d3 01 movw r26, r6 + b10: 2c 92 st X, r2 + this->setfadecolor(0, red, green, blue, time); + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + b12: d2 01 movw r26, r4 + b14: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + b16: d6 01 movw r26, r12 + b18: 1c 92 st X, r1 + b1a: c7 c0 rjmp .+398 ; 0xcaa + } + void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->fademap[0][index] = red; + b1c: d7 01 movw r26, r14 + b1e: 1c 92 st X, r1 + this->fademap[1][index] = green; + b20: af e8 ldi r26, 0x8F ; 143 + b22: b1 e0 ldi r27, 0x01 ; 1 + b24: 1c 93 st X, r17 + this->fademap[2][index] = blue; + b26: 20 e1 ldi r18, 0x10 ; 16 + b28: d4 01 movw r26, r8 + b2a: 2c 93 st X, r18 + this->fademap[3][index] = time; + b2c: 29 e1 ldi r18, 0x19 ; 25 + b2e: d3 01 movw r26, r6 + b30: 2c 93 st X, r18 + this->fade_zylk = 0; + } + this->_l = 0; + } + void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->fademap[0][index] = red; + b32: aa e8 ldi r26, 0x8A ; 138 + b34: b1 e0 ldi r27, 0x01 ; 1 + b36: 1c 92 st X, r1 + this->fademap[1][index] = green; + b38: 2a ea ldi r18, 0xAA ; 170 + b3a: a0 e9 ldi r26, 0x90 ; 144 + b3c: b1 e0 ldi r27, 0x01 ; 1 + b3e: 2c 93 st X, r18 + this->fademap[2][index] = blue; + b40: 20 e1 ldi r18, 0x10 ; 16 + b42: a6 e9 ldi r26, 0x96 ; 150 + b44: b1 e0 ldi r27, 0x01 ; 1 + b46: 2c 93 st X, r18 + this->fademap[3][index] = time; + b48: 8f e0 ldi r24, 0x0F ; 15 + b4a: ac e9 ldi r26, 0x9C ; 156 + b4c: b1 e0 ldi r27, 0x01 ; 1 + b4e: 8c 93 st X, r24 + this->setfadecolor(0, red, green, blue, time); + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + b50: 82 e0 ldi r24, 0x02 ; 2 + b52: d2 01 movw r26, r4 + b54: 8c 93 st X, r24 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + b56: d6 01 movw r26, r12 + b58: 1c 92 st X, r1 + b5a: a7 c0 rjmp .+334 ; 0xcaa + case 23: + stripe.setfadecolor(0, 0x00, 0xFF, 0x10, 25); + stripe.setfadecolor(1, 0x00, 0xAA, 0x10, 15); + stripe.fade(2); + break; //Button SMOOTH default: Serial.printDec(c); Serial.println(" Pressed!"); break; //Code den ich nicht kenne - a00: 28 2f mov r18, r24 - a02: 30 e0 ldi r19, 0x00 ; 0 - a04: 3a 83 std Y+2, r19 ; 0x02 - a06: 29 83 std Y+1, r18 ; 0x01 + b5c: 28 2f mov r18, r24 + b5e: 30 e0 ldi r19, 0x00 ; 0 + b60: 3b 83 std Y+3, r19 ; 0x03 + b62: 2a 83 std Y+2, r18 ; 0x02 UCSR0A= (0< + b64: 80 81 ld r24, Z + b66: 85 ff sbrs r24, 5 + b68: fd cf rjmp .-6 ; 0xb64 UDR0 = c; - a0e: 80 e3 ldi r24, 0x30 ; 48 - a10: a6 ec ldi r26, 0xC6 ; 198 - a12: b0 e0 ldi r27, 0x00 ; 0 - a14: 8c 93 st X, r24 + b6a: 80 e3 ldi r24, 0x30 ; 48 + b6c: a6 ec ldi r26, 0xC6 ; 198 + b6e: b0 e0 ldi r27, 0x00 ; 0 + b70: 8c 93 st X, r24 text++; } } void printDec(uint16_t wert) { print((wert/10000)+'0'); print(((wert/1000)%10)+'0'); - a16: 60 e0 ldi r22, 0x00 ; 0 - a18: 70 e0 ldi r23, 0x00 ; 0 - a1a: cb 01 movw r24, r22 - a1c: 96 95 lsr r25 - a1e: 87 95 ror r24 - a20: 96 95 lsr r25 - a22: 87 95 ror r24 - a24: 96 95 lsr r25 - a26: 87 95 ror r24 - a28: 9c 01 movw r18, r24 - a2a: 22 0f add r18, r18 - a2c: 33 1f adc r19, r19 - a2e: 88 0f add r24, r24 - a30: 99 1f adc r25, r25 - a32: 88 0f add r24, r24 - a34: 99 1f adc r25, r25 - a36: 88 0f add r24, r24 - a38: 99 1f adc r25, r25 - a3a: 82 0f add r24, r18 - a3c: 93 1f adc r25, r19 - a3e: 68 1b sub r22, r24 - a40: 79 0b sbc r23, r25 - a42: 60 5d subi r22, 0xD0 ; 208 + b72: 60 e0 ldi r22, 0x00 ; 0 + b74: 70 e0 ldi r23, 0x00 ; 0 + b76: cb 01 movw r24, r22 + b78: 96 95 lsr r25 + b7a: 87 95 ror r24 + b7c: 96 95 lsr r25 + b7e: 87 95 ror r24 + b80: 96 95 lsr r25 + b82: 87 95 ror r24 + b84: 9c 01 movw r18, r24 + b86: 22 0f add r18, r18 + b88: 33 1f adc r19, r19 + b8a: 88 0f add r24, r24 + b8c: 99 1f adc r25, r25 + b8e: 88 0f add r24, r24 + b90: 99 1f adc r25, r25 + b92: 88 0f add r24, r24 + b94: 99 1f adc r25, r25 + b96: 82 0f add r24, r18 + b98: 93 1f adc r25, r19 + b9a: 68 1b sub r22, r24 + b9c: 79 0b sbc r23, r25 + b9e: 60 5d subi r22, 0xD0 ; 208 UCSR0A= (0< + ba0: 80 81 ld r24, Z + ba2: 85 ff sbrs r24, 5 + ba4: fd cf rjmp .-6 ; 0xba0 UDR0 = c; - a4a: a6 ec ldi r26, 0xC6 ; 198 - a4c: b0 e0 ldi r27, 0x00 ; 0 - a4e: 6c 93 st X, r22 + ba6: a6 ec ldi r26, 0xC6 ; 198 + ba8: b0 e0 ldi r27, 0x00 ; 0 + baa: 6c 93 st X, r22 } } void printDec(uint16_t wert) { print((wert/10000)+'0'); print(((wert/1000)%10)+'0'); print(((wert/100)%10)+'0'); - a50: 29 81 ldd r18, Y+1 ; 0x01 - a52: 3a 81 ldd r19, Y+2 ; 0x02 - a54: 36 95 lsr r19 - a56: 27 95 ror r18 - a58: 36 95 lsr r19 - a5a: 27 95 ror r18 - a5c: ab e7 ldi r26, 0x7B ; 123 - a5e: b4 e1 ldi r27, 0x14 ; 20 - a60: 0e 94 aa 08 call 0x1154 ; 0x1154 <__umulhisi3> - a64: 96 95 lsr r25 - a66: 87 95 ror r24 - a68: 80 5d subi r24, 0xD0 ; 208 + bac: 2a 81 ldd r18, Y+2 ; 0x02 + bae: 3b 81 ldd r19, Y+3 ; 0x03 + bb0: 36 95 lsr r19 + bb2: 27 95 ror r18 + bb4: 36 95 lsr r19 + bb6: 27 95 ror r18 + bb8: ab e7 ldi r26, 0x7B ; 123 + bba: b4 e1 ldi r27, 0x14 ; 20 + bbc: 0e 94 5f 09 call 0x12be ; 0x12be <__umulhisi3> + bc0: 96 95 lsr r25 + bc2: 87 95 ror r24 + bc4: 80 5d subi r24, 0xD0 ; 208 UCSR0A= (0< + bc6: 90 81 ld r25, Z + bc8: 95 ff sbrs r25, 5 + bca: fd cf rjmp .-6 ; 0xbc6 UDR0 = c; - a70: a6 ec ldi r26, 0xC6 ; 198 - a72: b0 e0 ldi r27, 0x00 ; 0 - a74: 8c 93 st X, r24 + bcc: a6 ec ldi r26, 0xC6 ; 198 + bce: b0 e0 ldi r27, 0x00 ; 0 + bd0: 8c 93 st X, r24 } void printDec(uint16_t wert) { print((wert/10000)+'0'); print(((wert/1000)%10)+'0'); print(((wert/100)%10)+'0'); print(((wert/10)%10)+'0'); - a76: 29 81 ldd r18, Y+1 ; 0x01 - a78: 3a 81 ldd r19, Y+2 ; 0x02 - a7a: ad ec ldi r26, 0xCD ; 205 - a7c: bc ec ldi r27, 0xCC ; 204 - a7e: 0e 94 aa 08 call 0x1154 ; 0x1154 <__umulhisi3> - a82: 96 95 lsr r25 - a84: 87 95 ror r24 - a86: 96 95 lsr r25 - a88: 87 95 ror r24 - a8a: 96 95 lsr r25 - a8c: 87 95 ror r24 - a8e: 9c 83 std Y+4, r25 ; 0x04 - a90: 8b 83 std Y+3, r24 ; 0x03 - a92: 9c 01 movw r18, r24 - a94: 0e 94 aa 08 call 0x1154 ; 0x1154 <__umulhisi3> - a98: 96 95 lsr r25 - a9a: 87 95 ror r24 - a9c: 96 95 lsr r25 - a9e: 87 95 ror r24 - aa0: 96 95 lsr r25 - aa2: 87 95 ror r24 - aa4: 9c 01 movw r18, r24 - aa6: 22 0f add r18, r18 - aa8: 33 1f adc r19, r19 - aaa: 88 0f add r24, r24 - aac: 99 1f adc r25, r25 - aae: 88 0f add r24, r24 - ab0: 99 1f adc r25, r25 - ab2: 88 0f add r24, r24 - ab4: 99 1f adc r25, r25 - ab6: 82 0f add r24, r18 - ab8: 93 1f adc r25, r19 - aba: 2b 81 ldd r18, Y+3 ; 0x03 - abc: 3c 81 ldd r19, Y+4 ; 0x04 - abe: 28 1b sub r18, r24 - ac0: 39 0b sbc r19, r25 - ac2: c9 01 movw r24, r18 - ac4: 80 5d subi r24, 0xD0 ; 208 + bd2: 2a 81 ldd r18, Y+2 ; 0x02 + bd4: 3b 81 ldd r19, Y+3 ; 0x03 + bd6: ad ec ldi r26, 0xCD ; 205 + bd8: bc ec ldi r27, 0xCC ; 204 + bda: 0e 94 5f 09 call 0x12be ; 0x12be <__umulhisi3> + bde: 96 95 lsr r25 + be0: 87 95 ror r24 + be2: 96 95 lsr r25 + be4: 87 95 ror r24 + be6: 96 95 lsr r25 + be8: 87 95 ror r24 + bea: 9d 83 std Y+5, r25 ; 0x05 + bec: 8c 83 std Y+4, r24 ; 0x04 + bee: 9c 01 movw r18, r24 + bf0: 0e 94 5f 09 call 0x12be ; 0x12be <__umulhisi3> + bf4: 96 95 lsr r25 + bf6: 87 95 ror r24 + bf8: 96 95 lsr r25 + bfa: 87 95 ror r24 + bfc: 96 95 lsr r25 + bfe: 87 95 ror r24 + c00: 9c 01 movw r18, r24 + c02: 22 0f add r18, r18 + c04: 33 1f adc r19, r19 + c06: 88 0f add r24, r24 + c08: 99 1f adc r25, r25 + c0a: 88 0f add r24, r24 + c0c: 99 1f adc r25, r25 + c0e: 88 0f add r24, r24 + c10: 99 1f adc r25, r25 + c12: 82 0f add r24, r18 + c14: 93 1f adc r25, r19 + c16: 2c 81 ldd r18, Y+4 ; 0x04 + c18: 3d 81 ldd r19, Y+5 ; 0x05 + c1a: 28 1b sub r18, r24 + c1c: 39 0b sbc r19, r25 + c1e: c9 01 movw r24, r18 + c20: 80 5d subi r24, 0xD0 ; 208 UCSR0A= (0< + c22: 90 81 ld r25, Z + c24: 95 ff sbrs r25, 5 + c26: fd cf rjmp .-6 ; 0xc22 UDR0 = c; - acc: a6 ec ldi r26, 0xC6 ; 198 - ace: b0 e0 ldi r27, 0x00 ; 0 - ad0: 8c 93 st X, r24 + c28: a6 ec ldi r26, 0xC6 ; 198 + c2a: b0 e0 ldi r27, 0x00 ; 0 + c2c: 8c 93 st X, r24 void printDec(uint16_t wert) { print((wert/10000)+'0'); print(((wert/1000)%10)+'0'); print(((wert/100)%10)+'0'); print(((wert/10)%10)+'0'); print((wert%10)+'0'); - ad2: 29 81 ldd r18, Y+1 ; 0x01 - ad4: 3a 81 ldd r19, Y+2 ; 0x02 - ad6: ad ec ldi r26, 0xCD ; 205 - ad8: bc ec ldi r27, 0xCC ; 204 - ada: 0e 94 aa 08 call 0x1154 ; 0x1154 <__umulhisi3> - ade: 96 95 lsr r25 - ae0: 87 95 ror r24 - ae2: 96 95 lsr r25 - ae4: 87 95 ror r24 - ae6: 96 95 lsr r25 - ae8: 87 95 ror r24 - aea: 9c 01 movw r18, r24 - aec: 22 0f add r18, r18 - aee: 33 1f adc r19, r19 - af0: 88 0f add r24, r24 - af2: 99 1f adc r25, r25 - af4: 88 0f add r24, r24 - af6: 99 1f adc r25, r25 - af8: 88 0f add r24, r24 - afa: 99 1f adc r25, r25 - afc: 82 0f add r24, r18 - afe: 93 1f adc r25, r19 - b00: 29 81 ldd r18, Y+1 ; 0x01 - b02: 3a 81 ldd r19, Y+2 ; 0x02 - b04: 28 1b sub r18, r24 - b06: 39 0b sbc r19, r25 - b08: c9 01 movw r24, r18 - b0a: 80 5d subi r24, 0xD0 ; 208 + c2e: 2a 81 ldd r18, Y+2 ; 0x02 + c30: 3b 81 ldd r19, Y+3 ; 0x03 + c32: ad ec ldi r26, 0xCD ; 205 + c34: bc ec ldi r27, 0xCC ; 204 + c36: 0e 94 5f 09 call 0x12be ; 0x12be <__umulhisi3> + c3a: 96 95 lsr r25 + c3c: 87 95 ror r24 + c3e: 96 95 lsr r25 + c40: 87 95 ror r24 + c42: 96 95 lsr r25 + c44: 87 95 ror r24 + c46: 9c 01 movw r18, r24 + c48: 22 0f add r18, r18 + c4a: 33 1f adc r19, r19 + c4c: 88 0f add r24, r24 + c4e: 99 1f adc r25, r25 + c50: 88 0f add r24, r24 + c52: 99 1f adc r25, r25 + c54: 88 0f add r24, r24 + c56: 99 1f adc r25, r25 + c58: 82 0f add r24, r18 + c5a: 93 1f adc r25, r19 + c5c: 2a 81 ldd r18, Y+2 ; 0x02 + c5e: 3b 81 ldd r19, Y+3 ; 0x03 + c60: 28 1b sub r18, r24 + c62: 39 0b sbc r19, r25 + c64: c9 01 movw r24, r18 + c66: 80 5d subi r24, 0xD0 ; 208 UCSR0A= (0< + c68: 90 81 ld r25, Z + c6a: 95 ff sbrs r25, 5 + c6c: fd cf rjmp .-6 ; 0xc68 UDR0 = c; - b12: a6 ec ldi r26, 0xC6 ; 198 - b14: b0 e0 ldi r27, 0x00 ; 0 - b16: 8c 93 st X, r24 - b18: a3 e6 ldi r26, 0x63 ; 99 - b1a: b1 e0 ldi r27, 0x01 ; 1 + c6e: a6 ec ldi r26, 0xC6 ; 198 + c70: b0 e0 ldi r27, 0x00 ; 0 + c72: 8c 93 st X, r24 + c74: a3 e6 ldi r26, 0x63 ; 99 + c76: b1 e0 ldi r27, 0x01 ; 1 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - b1c: 90 e2 ldi r25, 0x20 ; 32 - b1e: 9d 01 movw r18, r26 + c78: 90 e2 ldi r25, 0x20 ; 32 + c7a: 9d 01 movw r18, r26 UCSR0A= (0< + c7c: 80 81 ld r24, Z + c7e: 85 ff sbrs r24, 5 + c80: fd cf rjmp .-6 ; 0xc7c UDR0 = c; - b26: a6 ec ldi r26, 0xC6 ; 198 - b28: b0 e0 ldi r27, 0x00 ; 0 - b2a: 9c 93 st X, r25 + c82: a6 ec ldi r26, 0xC6 ; 198 + c84: b0 e0 ldi r27, 0x00 ; 0 + c86: 9c 93 st X, r25 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - b2c: d9 01 movw r26, r18 - b2e: 9d 91 ld r25, X+ - b30: 9d 01 movw r18, r26 - b32: 91 11 cpse r25, r1 - b34: f5 cf rjmp .-22 ; 0xb20 + c88: d9 01 movw r26, r18 + c8a: 9d 91 ld r25, X+ + c8c: 9d 01 movw r18, r26 + c8e: 91 11 cpse r25, r1 + c90: f5 cf rjmp .-22 ; 0xc7c UCSR0A= (0< + c92: 80 81 ld r24, Z + c94: 85 ff sbrs r24, 5 + c96: fd cf rjmp .-6 ; 0xc92 UDR0 = c; - b3c: a6 ec ldi r26, 0xC6 ; 198 - b3e: b0 e0 ldi r27, 0x00 ; 0 - b40: dc 92 st X, r13 + c98: a6 ec ldi r26, 0xC6 ; 198 + c9a: b0 e0 ldi r27, 0x00 ; 0 + c9c: bc 92 st X, r11 UCSR0A= (0< + c9e: 80 81 ld r24, Z + ca0: 85 ff sbrs r24, 5 + ca2: fd cf rjmp .-6 ; 0xc9e UDR0 = c; - b48: a6 ec ldi r26, 0xC6 ; 198 - b4a: b0 e0 ldi r27, 0x00 ; 0 - b4c: 3c 92 st X, r3 + ca4: a6 ec ldi r26, 0xC6 ; 198 + ca6: b0 e0 ldi r27, 0x00 ; 0 + ca8: 2c 92 st X, r2 } if(comp.is_active()) { - b4e: 00 b6 in r0, 0x30 ; 48 - b50: 05 fe sbrs r0, 5 - b52: 2a c0 rjmp .+84 ; 0xba8 + caa: 00 b6 in r0, 0x30 ; 48 + cac: 05 fe sbrs r0, 5 + cae: 2d c0 rjmp .+90 ; 0xd0a if(doorstatus == 0) { - b54: 21 10 cpse r2, r1 - b56: 52 c0 rjmp .+164 ; 0xbfc + cb0: 31 10 cpse r3, r1 + cb2: 58 c0 rjmp .+176 ; 0xd64 } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - b58: d7 01 movw r26, r14 - b5a: bc 92 st X, r11 + cb4: d7 01 movw r26, r14 + cb6: 1c 93 st X, r17 this->fademap[1][index] = green; - b5c: d8 01 movw r26, r16 - b5e: 1c 92 st X, r1 + cb8: af e8 ldi r26, 0x8F ; 143 + cba: b1 e0 ldi r27, 0x01 ; 1 + cbc: 1c 92 st X, r1 this->fademap[2][index] = blue; - b60: d4 01 movw r26, r8 - b62: 1c 92 st X, r1 + cbe: d4 01 movw r26, r8 + cc0: 1c 92 st X, r1 this->fademap[3][index] = time; - b64: 24 e6 ldi r18, 0x64 ; 100 - b66: d3 01 movw r26, r6 - b68: 2c 93 st X, r18 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + cc2: 84 e6 ldi r24, 0x64 ; 100 + cc4: d3 01 movw r26, r6 + cc6: 8c 93 st X, r24 this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - b6a: d2 01 movw r26, r4 - b6c: cc 92 st X, r12 - b6e: ad e6 ldi r26, 0x6D ; 109 - b70: b1 e0 ldi r27, 0x01 ; 1 + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + cc8: d2 01 movw r26, r4 + cca: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + ccc: d6 01 movw r26, r12 + cce: 1c 92 st X, r1 + cd0: ad e6 ldi r26, 0x6D ; 109 + cd2: b1 e0 ldi r27, 0x01 ; 1 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - b72: 94 e5 ldi r25, 0x54 ; 84 - b74: 9d 01 movw r18, r26 + cd4: 94 e5 ldi r25, 0x54 ; 84 + cd6: 9d 01 movw r18, r26 UCSR0A= (0< + cd8: 80 81 ld r24, Z + cda: 85 ff sbrs r24, 5 + cdc: fd cf rjmp .-6 ; 0xcd8 UDR0 = c; - b7c: a6 ec ldi r26, 0xC6 ; 198 - b7e: b0 e0 ldi r27, 0x00 ; 0 - b80: 9c 93 st X, r25 + cde: a6 ec ldi r26, 0xC6 ; 198 + ce0: b0 e0 ldi r27, 0x00 ; 0 + ce2: 9c 93 st X, r25 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - b82: d9 01 movw r26, r18 - b84: 9d 91 ld r25, X+ - b86: 9d 01 movw r18, r26 - b88: 91 11 cpse r25, r1 - b8a: f5 cf rjmp .-22 ; 0xb76 + ce4: d9 01 movw r26, r18 + ce6: 9d 91 ld r25, X+ + ce8: 9d 01 movw r18, r26 + cea: 91 11 cpse r25, r1 + cec: f5 cf rjmp .-22 ; 0xcd8 UCSR0A= (0< + cee: 80 81 ld r24, Z + cf0: 85 ff sbrs r24, 5 + cf2: fd cf rjmp .-6 ; 0xcee UDR0 = c; - b92: a6 ec ldi r26, 0xC6 ; 198 - b94: b0 e0 ldi r27, 0x00 ; 0 - b96: dc 92 st X, r13 + cf4: a6 ec ldi r26, 0xC6 ; 198 + cf6: b0 e0 ldi r27, 0x00 ; 0 + cf8: bc 92 st X, r11 UCSR0A= (0< + cfa: 80 81 ld r24, Z + cfc: 85 ff sbrs r24, 5 + cfe: fd cf rjmp .-6 ; 0xcfa UDR0 = c; - b9e: a6 ec ldi r26, 0xC6 ; 198 - ba0: b0 e0 ldi r27, 0x00 ; 0 - ba2: 3c 92 st X, r3 + d00: a6 ec ldi r26, 0xC6 ; 198 + d02: b0 e0 ldi r27, 0x00 ; 0 + d04: 2c 92 st X, r2 doorstatus = 1; - ba4: 2c 2c mov r2, r12 - ba6: 2a c0 rjmp .+84 ; 0xbfc + d06: 3a 2c mov r3, r10 + d08: 2d c0 rjmp .+90 ; 0xd64 stripe.fadeto(0xFF,0x00,0x00,100); Serial.println("Tür Zu..."); } } else { if(doorstatus == 1) { - ba8: b1 e0 ldi r27, 0x01 ; 1 - baa: 2b 12 cpse r2, r27 - bac: 27 c0 rjmp .+78 ; 0xbfc - bae: a7 e7 ldi r26, 0x77 ; 119 - bb0: b1 e0 ldi r27, 0x01 ; 1 + d0a: b1 e0 ldi r27, 0x01 ; 1 + d0c: 3b 12 cpse r3, r27 + d0e: 2a c0 rjmp .+84 ; 0xd64 + d10: a7 e7 ldi r26, 0x77 ; 119 + d12: b1 e0 ldi r27, 0x01 ; 1 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - bb2: 94 e5 ldi r25, 0x54 ; 84 - bb4: 9d 01 movw r18, r26 + d14: 94 e5 ldi r25, 0x54 ; 84 + d16: 9d 01 movw r18, r26 UCSR0A= (0< + d18: 80 81 ld r24, Z + d1a: 85 ff sbrs r24, 5 + d1c: fd cf rjmp .-6 ; 0xd18 UDR0 = c; - bbc: a6 ec ldi r26, 0xC6 ; 198 - bbe: b0 e0 ldi r27, 0x00 ; 0 - bc0: 9c 93 st X, r25 + d1e: a6 ec ldi r26, 0xC6 ; 198 + d20: b0 e0 ldi r27, 0x00 ; 0 + d22: 9c 93 st X, r25 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - bc2: d9 01 movw r26, r18 - bc4: 9d 91 ld r25, X+ - bc6: 9d 01 movw r18, r26 - bc8: 91 11 cpse r25, r1 - bca: f5 cf rjmp .-22 ; 0xbb6 + d24: d9 01 movw r26, r18 + d26: 9d 91 ld r25, X+ + d28: 9d 01 movw r18, r26 + d2a: 91 11 cpse r25, r1 + d2c: f5 cf rjmp .-22 ; 0xd18 UCSR0A= (0< + d2e: 80 81 ld r24, Z + d30: 85 ff sbrs r24, 5 + d32: fd cf rjmp .-6 ; 0xd2e UDR0 = c; - bd2: a6 ec ldi r26, 0xC6 ; 198 - bd4: b0 e0 ldi r27, 0x00 ; 0 - bd6: dc 92 st X, r13 + d34: a6 ec ldi r26, 0xC6 ; 198 + d36: b0 e0 ldi r27, 0x00 ; 0 + d38: bc 92 st X, r11 UCSR0A= (0< + d3a: 80 81 ld r24, Z + d3c: 85 ff sbrs r24, 5 + d3e: fd cf rjmp .-6 ; 0xd3a UDR0 = c; - bde: a6 ec ldi r26, 0xC6 ; 198 - be0: b0 e0 ldi r27, 0x00 ; 0 - be2: 3c 92 st X, r3 + d40: a6 ec ldi r26, 0xC6 ; 198 + d42: b0 e0 ldi r27, 0x00 ; 0 + d44: 2c 92 st X, r2 } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - be4: d7 01 movw r26, r14 - be6: 1c 92 st X, r1 + d46: d7 01 movw r26, r14 + d48: 1c 92 st X, r1 this->fademap[1][index] = green; - be8: d8 01 movw r26, r16 - bea: bc 92 st X, r11 + d4a: af e8 ldi r26, 0x8F ; 143 + d4c: b1 e0 ldi r27, 0x01 ; 1 + d4e: 1c 93 st X, r17 this->fademap[2][index] = blue; - bec: d4 01 movw r26, r8 - bee: 1c 92 st X, r1 + d50: d4 01 movw r26, r8 + d52: 1c 92 st X, r1 this->fademap[3][index] = time; - bf0: 22 e3 ldi r18, 0x32 ; 50 - bf2: d3 01 movw r26, r6 - bf4: 2c 93 st X, r18 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + d54: 82 e3 ldi r24, 0x32 ; 50 + d56: d3 01 movw r26, r6 + d58: 8c 93 st X, r24 this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - bf6: d2 01 movw r26, r4 - bf8: cc 92 st X, r12 + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + d5a: d2 01 movw r26, r4 + d5c: ac 92 st X, r10 + } + else { + this->fade_zylk = 0; + } + this->_l = 0; + d5e: d6 01 movw r26, r12 + d60: 1c 92 st X, r1 doorstatus = 0; - bfa: 21 2c mov r2, r1 - bfc: 87 e8 ldi r24, 0x87 ; 135 - bfe: 93 e1 ldi r25, 0x13 ; 19 - c00: 01 97 sbiw r24, 0x01 ; 1 - c02: f1 f7 brne .-4 ; 0xc00 - c04: 00 c0 rjmp .+0 ; 0xc06 - c06: 00 00 nop + d62: 31 2c mov r3, r1 + d64: 87 e8 ldi r24, 0x87 ; 135 + d66: 93 e1 ldi r25, 0x13 ; 19 + d68: 01 97 sbiw r24, 0x01 ; 1 + d6a: f1 f7 brne .-4 ; 0xd68 + d6c: 00 c0 rjmp .+0 ; 0xd6e + d6e: 00 00 nop namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - c08: 29 98 cbi 0x05, 1 ; 5 - c0a: 9f ed ldi r25, 0xDF ; 223 - c0c: aa e0 ldi r26, 0x0A ; 10 - c0e: b6 e0 ldi r27, 0x06 ; 6 - c10: 91 50 subi r25, 0x01 ; 1 - c12: a0 40 sbci r26, 0x00 ; 0 - c14: b0 40 sbci r27, 0x00 ; 0 - c16: e1 f7 brne .-8 ; 0xc10 - c18: 00 c0 rjmp .+0 ; 0xc1a - c1a: 00 00 nop - c1c: 29 9a sbi 0x05, 1 ; 5 - c1e: 85 cd rjmp .-1270 ; 0x72a + d70: 29 98 cbi 0x05, 1 ; 5 + d72: 9f ed ldi r25, 0xDF ; 223 + d74: aa e0 ldi r26, 0x0A ; 10 + d76: b6 e0 ldi r27, 0x06 ; 6 + d78: 91 50 subi r25, 0x01 ; 1 + d7a: a0 40 sbci r26, 0x00 ; 0 + d7c: b0 40 sbci r27, 0x00 ; 0 + d7e: e1 f7 brne .-8 ; 0xd78 + d80: 00 c0 rjmp .+0 ; 0xd82 + d82: 00 00 nop + d84: 29 9a sbi 0x05, 1 ; 5 + d86: eb cc rjmp .-1578 ; 0x75e -00000c20 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv>: - c20: 55 9a sbi 0x0a, 5 ; 10 - c22: 53 9a sbi 0x0a, 3 ; 10 +00000d88 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv>: + d88: 55 9a sbi 0x0a, 5 ; 10 + d8a: 53 9a sbi 0x0a, 3 ; 10 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - c24: 23 9a sbi 0x04, 3 ; 4 - float virtualcolor[3]; + d8c: 23 9a sbi 0x04, 3 ; 4 + uint8_t _l; void init() { stripered::make_output(); stripegreen::make_output(); stripeblue::make_output(); this->fade_zylk = 0; - c26: fc 01 movw r30, r24 - c28: 10 82 st Z, r1 + d8e: fc 01 movw r30, r24 + d90: 10 82 st Z, r1 + this->_l = 0; + d92: 11 aa std Z+49, r1 ; 0x31 // Mode: Phase correct PWM top=0xFF // OC0A output: Disconnected // Timer Period: 0,06375 ms // Output Pulse(s): // OC0B Period: 0,06375 ms Width: 0 us TCCR0A=(0<initTimer(); this->color(0, 0, 0); } void sp(uint8_t i, uint8_t c) { switch(i) { case 0: OCR0B = c; break; //ROT - c72: 18 bc out 0x28, r1 ; 40 + ddc: 18 bc out 0x28, r1 ; 40 case 1: OCR2B = c; break; //GRÜN - c74: 10 92 b4 00 sts 0x00B4, r1 + dde: 10 92 b4 00 sts 0x00B4, r1 case 2: OCR2A = c; break; //BLAU - c78: 10 92 b3 00 sts 0x00B3, r1 - c7c: 08 95 ret + de2: 10 92 b3 00 sts 0x00B3, r1 + de6: 08 95 ret -00000c7e <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv>: +00000de8 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv>: // Interrupt on any change on pins PCINT16-23: Off EICRA=(0< + df2: 4a 9b sbis 0x09, 2 ; 9 + df4: fe cf rjmp .-4 ; 0xdf2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0xa> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - c8c: ef e9 ldi r30, 0x9F ; 159 - c8e: ff e0 ldi r31, 0x0F ; 15 - c90: 31 97 sbiw r30, 0x01 ; 1 - c92: f1 f7 brne .-4 ; 0xc90 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x12> - c94: 00 c0 rjmp .+0 ; 0xc96 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x18> - c96: 00 00 nop + df6: ef e9 ldi r30, 0x9F ; 159 + df8: ff e0 ldi r31, 0x0F ; 15 + dfa: 31 97 sbiw r30, 0x01 ; 1 + dfc: f1 f7 brne .-4 ; 0xdfa <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x12> + dfe: 00 c0 rjmp .+0 ; 0xe00 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x18> + e00: 00 00 nop uint8_t read8bit() { uint8_t r = 0; for (uint8_t i=0;i<8;i++) { intpin::wait_is_set(); _delay_us(800); if(intpin::read()) { - c98: 4a 9b sbis 0x09, 2 ; 9 - c9a: 08 c0 rjmp .+16 ; 0xcac <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x2e> + e02: 4a 9b sbis 0x09, 2 ; 9 + e04: 08 c0 rjmp .+16 ; 0xe16 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x2e> r |= (1< - ca2: 44 0f add r20, r20 - ca4: 55 1f adc r21, r21 - ca6: 0a 94 dec r0 - ca8: e2 f7 brpl .-8 ; 0xca2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x24> - caa: 84 2b or r24, r20 + e06: ab 01 movw r20, r22 + e08: 02 2e mov r0, r18 + e0a: 02 c0 rjmp .+4 ; 0xe10 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x28> + e0c: 44 0f add r20, r20 + e0e: 55 1f adc r21, r21 + e10: 0a 94 dec r0 + e12: e2 f7 brpl .-8 ; 0xe0c <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x24> + e14: 84 2b or r24, r20 } for(uint8_t j=0;j<50;j++) { if(!intpin::value()) { - cac: 4a 99 sbic 0x09, 2 ; 9 - cae: 0f c0 rjmp .+30 ; 0xcce <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x50> - cb0: 08 c0 rjmp .+16 ; 0xcc2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x44> - cb2: 4a 9b sbis 0x09, 2 ; 9 - cb4: 06 c0 rjmp .+12 ; 0xcc2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x44> - cb6: f5 e8 ldi r31, 0x85 ; 133 - cb8: fa 95 dec r31 - cba: f1 f7 brne .-4 ; 0xcb8 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x3a> - cbc: 00 00 nop - cbe: 91 50 subi r25, 0x01 ; 1 + e16: 4a 99 sbic 0x09, 2 ; 9 + e18: 0f c0 rjmp .+30 ; 0xe38 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x50> + e1a: 08 c0 rjmp .+16 ; 0xe2c <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x44> + e1c: 4a 9b sbis 0x09, 2 ; 9 + e1e: 06 c0 rjmp .+12 ; 0xe2c <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x44> + e20: f5 e8 ldi r31, 0x85 ; 133 + e22: fa 95 dec r31 + e24: f1 f7 brne .-4 ; 0xe22 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x3a> + e26: 00 00 nop + e28: 91 50 subi r25, 0x01 ; 1 intpin::wait_is_set(); _delay_us(800); if(intpin::read()) { r |= (1< - cc2: 2f 5f subi r18, 0xFF ; 255 - cc4: 3f 4f sbci r19, 0xFF ; 255 + e2a: c1 f7 brne .-16 ; 0xe1c <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x34> + e2c: 2f 5f subi r18, 0xFF ; 255 + e2e: 3f 4f sbci r19, 0xFF ; 255 EIMSK=(0< - ccc: 08 95 ret - cce: 45 e8 ldi r20, 0x85 ; 133 - cd0: 4a 95 dec r20 - cd2: f1 f7 brne .-4 ; 0xcd0 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x52> - cd4: 00 00 nop - cd6: 91 e3 ldi r25, 0x31 ; 49 - cd8: ec cf rjmp .-40 ; 0xcb2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x34> + e30: 28 30 cpi r18, 0x08 ; 8 + e32: 31 05 cpc r19, r1 + e34: f1 f6 brne .-68 ; 0xdf2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0xa> + e36: 08 95 ret + e38: 45 e8 ldi r20, 0x85 ; 133 + e3a: 4a 95 dec r20 + e3c: f1 f7 brne .-4 ; 0xe3a <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x52> + e3e: 00 00 nop + e40: 91 e3 ldi r25, 0x31 ; 49 + e42: ec cf rjmp .-40 ; 0xe1c <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x34> -00000cda <__vector_1>: +00000e44 <__vector_1>: _delay_ms(99); led.green(1); } } ISR(INT0_vect) { - cda: 1f 92 push r1 - cdc: 0f 92 push r0 - cde: 0f b6 in r0, 0x3f ; 63 - ce0: 0f 92 push r0 - ce2: 11 24 eor r1, r1 - ce4: 2f 93 push r18 - ce6: 3f 93 push r19 - ce8: 4f 93 push r20 - cea: 5f 93 push r21 - cec: 6f 93 push r22 - cee: 7f 93 push r23 - cf0: 8f 93 push r24 - cf2: 9f 93 push r25 - cf4: af 93 push r26 - cf6: bf 93 push r27 - cf8: cf 93 push r28 - cfa: ef 93 push r30 - cfc: ff 93 push r31 + e44: 1f 92 push r1 + e46: 0f 92 push r0 + e48: 0f b6 in r0, 0x3f ; 63 + e4a: 0f 92 push r0 + e4c: 11 24 eor r1, r1 + e4e: 2f 93 push r18 + e50: 3f 93 push r19 + e52: 4f 93 push r20 + e54: 5f 93 push r21 + e56: 6f 93 push r22 + e58: 7f 93 push r23 + e5a: 8f 93 push r24 + e5c: 9f 93 push r25 + e5e: af 93 push r26 + e60: bf 93 push r27 + e62: cf 93 push r28 + e64: ef 93 push r30 + e66: ff 93 push r31 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - cfe: 28 9a sbi 0x05, 0 ; 5 + e68: 28 9a sbi 0x05, 0 ; 5 public: IR() { this->init(); } int read() { if(intpin::value()) { //Is High, Abbort - d00: 4a 99 sbic 0x09, 2 ; 9 - d02: 79 c0 rjmp .+242 ; 0xdf6 <__vector_1+0x11c> + e6a: 4a 99 sbic 0x09, 2 ; 9 + e6c: 79 c0 rjmp .+242 ; 0xf60 <__vector_1+0x11c> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - d04: 8f e1 ldi r24, 0x1F ; 31 - d06: 9e e4 ldi r25, 0x4E ; 78 - d08: 01 97 sbiw r24, 0x01 ; 1 - d0a: f1 f7 brne .-4 ; 0xd08 <__vector_1+0x2e> - d0c: 00 c0 rjmp .+0 ; 0xd0e <__vector_1+0x34> - d0e: 00 00 nop + e6e: 8f e1 ldi r24, 0x1F ; 31 + e70: 9e e4 ldi r25, 0x4E ; 78 + e72: 01 97 sbiw r24, 0x01 ; 1 + e74: f1 f7 brne .-4 ; 0xe72 <__vector_1+0x2e> + e76: 00 c0 rjmp .+0 ; 0xe78 <__vector_1+0x34> + e78: 00 00 nop return 254; } _delay_ms(4); //Wait 4ms if(intpin::value()) { //Is High, Abbort - d10: 4a 99 sbic 0x09, 2 ; 9 - d12: 71 c0 rjmp .+226 ; 0xdf6 <__vector_1+0x11c> - d14: 4a 9b sbis 0x09, 2 ; 9 - d16: fe cf rjmp .-4 ; 0xd14 <__vector_1+0x3a> + e7a: 4a 99 sbic 0x09, 2 ; 9 + e7c: 71 c0 rjmp .+226 ; 0xf60 <__vector_1+0x11c> + e7e: 4a 9b sbis 0x09, 2 ; 9 + e80: fe cf rjmp .-4 ; 0xe7e <__vector_1+0x3a> static void wait_is_clear() { do {} while ((Port::pin() & (1< - d1c: 80 e0 ldi r24, 0x00 ; 0 - d1e: 90 e0 ldi r25, 0x00 ; 0 - d20: 60 e0 ldi r22, 0x00 ; 0 + e82: 4a 99 sbic 0x09, 2 ; 9 + e84: fe cf rjmp .-4 ; 0xe82 <__vector_1+0x3e> + e86: 80 e0 ldi r24, 0x00 ; 0 + e88: 90 e0 ldi r25, 0x00 ; 0 + e8a: 60 e0 ldi r22, 0x00 ; 0 uint8_t r = 0; for (uint8_t i=0;i<8;i++) { intpin::wait_is_set(); _delay_us(800); if(intpin::read()) { r |= (1< + e90: 4a 9b sbis 0x09, 2 ; 9 + e92: fe cf rjmp .-4 ; 0xe90 <__vector_1+0x4c> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - d2a: ef e9 ldi r30, 0x9F ; 159 - d2c: ff e0 ldi r31, 0x0F ; 15 - d2e: 31 97 sbiw r30, 0x01 ; 1 - d30: f1 f7 brne .-4 ; 0xd2e <__vector_1+0x54> - d32: 00 c0 rjmp .+0 ; 0xd34 <__vector_1+0x5a> - d34: 00 00 nop + e94: ef e9 ldi r30, 0x9F ; 159 + e96: ff e0 ldi r31, 0x0F ; 15 + e98: 31 97 sbiw r30, 0x01 ; 1 + e9a: f1 f7 brne .-4 ; 0xe98 <__vector_1+0x54> + e9c: 00 c0 rjmp .+0 ; 0xe9e <__vector_1+0x5a> + e9e: 00 00 nop uint8_t read8bit() { uint8_t r = 0; for (uint8_t i=0;i<8;i++) { intpin::wait_is_set(); _delay_us(800); if(intpin::read()) { - d36: 4a 9b sbis 0x09, 2 ; 9 - d38: 08 c0 rjmp .+16 ; 0xd4a <__vector_1+0x70> + ea0: 4a 9b sbis 0x09, 2 ; 9 + ea2: 08 c0 rjmp .+16 ; 0xeb4 <__vector_1+0x70> r |= (1< - d40: 22 0f add r18, r18 - d42: 33 1f adc r19, r19 - d44: 0a 94 dec r0 - d46: e2 f7 brpl .-8 ; 0xd40 <__vector_1+0x66> - d48: 62 2b or r22, r18 + ea4: 9a 01 movw r18, r20 + ea6: 08 2e mov r0, r24 + ea8: 02 c0 rjmp .+4 ; 0xeae <__vector_1+0x6a> + eaa: 22 0f add r18, r18 + eac: 33 1f adc r19, r19 + eae: 0a 94 dec r0 + eb0: e2 f7 brpl .-8 ; 0xeaa <__vector_1+0x66> + eb2: 62 2b or r22, r18 } for(uint8_t j=0;j<50;j++) { if(!intpin::value()) { - d4a: 4a 99 sbic 0x09, 2 ; 9 - d4c: 66 c0 rjmp .+204 ; 0xe1a <__vector_1+0x140> - d4e: 08 c0 rjmp .+16 ; 0xd60 <__vector_1+0x86> - d50: 4a 9b sbis 0x09, 2 ; 9 - d52: 06 c0 rjmp .+12 ; 0xd60 <__vector_1+0x86> - d54: f5 e8 ldi r31, 0x85 ; 133 - d56: fa 95 dec r31 - d58: f1 f7 brne .-4 ; 0xd56 <__vector_1+0x7c> - d5a: 00 00 nop - d5c: 21 50 subi r18, 0x01 ; 1 + eb4: 4a 99 sbic 0x09, 2 ; 9 + eb6: 66 c0 rjmp .+204 ; 0xf84 <__vector_1+0x140> + eb8: 08 c0 rjmp .+16 ; 0xeca <__vector_1+0x86> + eba: 4a 9b sbis 0x09, 2 ; 9 + ebc: 06 c0 rjmp .+12 ; 0xeca <__vector_1+0x86> + ebe: f5 e8 ldi r31, 0x85 ; 133 + ec0: fa 95 dec r31 + ec2: f1 f7 brne .-4 ; 0xec0 <__vector_1+0x7c> + ec4: 00 00 nop + ec6: 21 50 subi r18, 0x01 ; 1 intpin::wait_is_set(); _delay_us(800); if(intpin::read()) { r |= (1< - d60: 01 96 adiw r24, 0x01 ; 1 + ec8: c1 f7 brne .-16 ; 0xeba <__vector_1+0x76> + eca: 01 96 adiw r24, 0x01 ; 1 EIMSK=(0< + ecc: 88 30 cpi r24, 0x08 ; 8 + ece: 91 05 cpc r25, r1 + ed0: f9 f6 brne .-66 ; 0xe90 <__vector_1+0x4c> } intpin::wait_is_set(); //Wait for the rest of the init. intpin::wait_is_clear(); // Init Complete, wait for first Byte //Read First Byte must be 0! if(this->read8bit() != 0) { //Is first Byte not 0 Abbort; - d68: 61 11 cpse r22, r1 - d6a: 39 c0 rjmp .+114 ; 0xdde <__vector_1+0x104> - d6c: 80 e0 ldi r24, 0x00 ; 0 - d6e: 90 e0 ldi r25, 0x00 ; 0 + ed2: 61 11 cpse r22, r1 + ed4: 39 c0 rjmp .+114 ; 0xf48 <__vector_1+0x104> + ed6: 80 e0 ldi r24, 0x00 ; 0 + ed8: 90 e0 ldi r25, 0x00 ; 0 uint8_t r = 0; for (uint8_t i=0;i<8;i++) { intpin::wait_is_set(); _delay_us(800); if(intpin::read()) { r |= (1< - d78: ef e9 ldi r30, 0x9F ; 159 - d7a: ff e0 ldi r31, 0x0F ; 15 - d7c: 31 97 sbiw r30, 0x01 ; 1 - d7e: f1 f7 brne .-4 ; 0xd7c <__vector_1+0xa2> - d80: 00 c0 rjmp .+0 ; 0xd82 <__vector_1+0xa8> - d82: 00 00 nop + eda: 41 e0 ldi r20, 0x01 ; 1 + edc: 50 e0 ldi r21, 0x00 ; 0 + ede: 4a 9b sbis 0x09, 2 ; 9 + ee0: fe cf rjmp .-4 ; 0xede <__vector_1+0x9a> + ee2: ef e9 ldi r30, 0x9F ; 159 + ee4: ff e0 ldi r31, 0x0F ; 15 + ee6: 31 97 sbiw r30, 0x01 ; 1 + ee8: f1 f7 brne .-4 ; 0xee6 <__vector_1+0xa2> + eea: 00 c0 rjmp .+0 ; 0xeec <__vector_1+0xa8> + eec: 00 00 nop uint8_t read8bit() { uint8_t r = 0; for (uint8_t i=0;i<8;i++) { intpin::wait_is_set(); _delay_us(800); if(intpin::read()) { - d84: 4a 9b sbis 0x09, 2 ; 9 - d86: 08 c0 rjmp .+16 ; 0xd98 <__vector_1+0xbe> + eee: 4a 9b sbis 0x09, 2 ; 9 + ef0: 08 c0 rjmp .+16 ; 0xf02 <__vector_1+0xbe> r |= (1< - d8e: 22 0f add r18, r18 - d90: 33 1f adc r19, r19 - d92: 0a 94 dec r0 - d94: e2 f7 brpl .-8 ; 0xd8e <__vector_1+0xb4> - d96: 62 2b or r22, r18 + ef2: 9a 01 movw r18, r20 + ef4: 08 2e mov r0, r24 + ef6: 02 c0 rjmp .+4 ; 0xefc <__vector_1+0xb8> + ef8: 22 0f add r18, r18 + efa: 33 1f adc r19, r19 + efc: 0a 94 dec r0 + efe: e2 f7 brpl .-8 ; 0xef8 <__vector_1+0xb4> + f00: 62 2b or r22, r18 } for(uint8_t j=0;j<50;j++) { if(!intpin::value()) { - d98: 4a 99 sbic 0x09, 2 ; 9 - d9a: 39 c0 rjmp .+114 ; 0xe0e <__vector_1+0x134> - d9c: 08 c0 rjmp .+16 ; 0xdae <__vector_1+0xd4> - d9e: 4a 9b sbis 0x09, 2 ; 9 - da0: 06 c0 rjmp .+12 ; 0xdae <__vector_1+0xd4> - da2: f5 e8 ldi r31, 0x85 ; 133 - da4: fa 95 dec r31 - da6: f1 f7 brne .-4 ; 0xda4 <__vector_1+0xca> - da8: 00 00 nop - daa: 21 50 subi r18, 0x01 ; 1 + f02: 4a 99 sbic 0x09, 2 ; 9 + f04: 39 c0 rjmp .+114 ; 0xf78 <__vector_1+0x134> + f06: 08 c0 rjmp .+16 ; 0xf18 <__vector_1+0xd4> + f08: 4a 9b sbis 0x09, 2 ; 9 + f0a: 06 c0 rjmp .+12 ; 0xf18 <__vector_1+0xd4> + f0c: f5 e8 ldi r31, 0x85 ; 133 + f0e: fa 95 dec r31 + f10: f1 f7 brne .-4 ; 0xf0e <__vector_1+0xca> + f12: 00 00 nop + f14: 21 50 subi r18, 0x01 ; 1 intpin::wait_is_set(); _delay_us(800); if(intpin::read()) { r |= (1< - dae: 01 96 adiw r24, 0x01 ; 1 + f16: c1 f7 brne .-16 ; 0xf08 <__vector_1+0xc4> + f18: 01 96 adiw r24, 0x01 ; 1 EIMSK=(0< + f1a: 88 30 cpi r24, 0x08 ; 8 + f1c: 91 05 cpc r25, r1 + f1e: f9 f6 brne .-66 ; 0xede <__vector_1+0x9a> //Read First Byte must be 0! if(this->read8bit() != 0) { //Is first Byte not 0 Abbort; return 255; } //Read Second Byte must be 239! if(this->read8bit() != 239) { - db6: 6f 3e cpi r22, 0xEF ; 239 - db8: 91 f4 brne .+36 ; 0xdde <__vector_1+0x104> + f20: 6f 3e cpi r22, 0xEF ; 239 + f22: 91 f4 brne .+36 ; 0xf48 <__vector_1+0x104> return 255; } //Read Byte 3 and 4 (Data Byte and Checksum Byte! uint8_t a = this->read8bit(); - dba: 84 e8 ldi r24, 0x84 ; 132 - dbc: 91 e0 ldi r25, 0x01 ; 1 - dbe: 0e 94 3f 06 call 0xc7e ; 0xc7e <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv> - dc2: c8 2f mov r28, r24 + f24: 84 e8 ldi r24, 0x84 ; 132 + f26: 91 e0 ldi r25, 0x01 ; 1 + f28: 0e 94 f4 06 call 0xde8 ; 0xde8 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv> + f2c: c8 2f mov r28, r24 uint8_t b = this->read8bit(); - dc4: 84 e8 ldi r24, 0x84 ; 132 - dc6: 91 e0 ldi r25, 0x01 ; 1 - dc8: 0e 94 3f 06 call 0xc7e ; 0xc7e <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv> + f2e: 84 e8 ldi r24, 0x84 ; 132 + f30: 91 e0 ldi r25, 0x01 ; 1 + f32: 0e 94 f4 06 call 0xde8 ; 0xde8 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv> //Make Checksum Byte 3 + 4 must be 255! if(a+b != 255) { - dcc: 28 2f mov r18, r24 - dce: 30 e0 ldi r19, 0x00 ; 0 - dd0: 2c 0f add r18, r28 - dd2: 31 1d adc r19, r1 - dd4: 2f 3f cpi r18, 0xFF ; 255 - dd6: 31 05 cpc r19, r1 - dd8: 11 f4 brne .+4 ; 0xdde <__vector_1+0x104> + f36: 28 2f mov r18, r24 + f38: 30 e0 ldi r19, 0x00 ; 0 + f3a: 2c 0f add r18, r28 + f3c: 31 1d adc r19, r1 + f3e: 2f 3f cpi r18, 0xFF ; 255 + f40: 31 05 cpc r19, r1 + f42: 11 f4 brne .+4 ; 0xf48 <__vector_1+0x104> } //The Interrupt Function void interrupt() { led.red(1); uint8_t code = this->read(); if(code == 255) { - dda: cf 3f cpi r28, 0xFF ; 255 - ddc: 51 f4 brne .+20 ; 0xdf2 <__vector_1+0x118> + f44: cf 3f cpi r28, 0xFF ; 255 + f46: 51 f4 brne .+20 ; 0xf5c <__vector_1+0x118> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - dde: 2f e7 ldi r18, 0x7F ; 127 - de0: 34 e8 ldi r19, 0x84 ; 132 - de2: 8e e1 ldi r24, 0x1E ; 30 - de4: 21 50 subi r18, 0x01 ; 1 - de6: 30 40 sbci r19, 0x00 ; 0 - de8: 80 40 sbci r24, 0x00 ; 0 - dea: e1 f7 brne .-8 ; 0xde4 <__vector_1+0x10a> - dec: 00 c0 rjmp .+0 ; 0xdee <__vector_1+0x114> - dee: 00 00 nop - df0: 0b c0 rjmp .+22 ; 0xe08 <__vector_1+0x12e> + f48: 2f e7 ldi r18, 0x7F ; 127 + f4a: 34 e8 ldi r19, 0x84 ; 132 + f4c: 8e e1 ldi r24, 0x1E ; 30 + f4e: 21 50 subi r18, 0x01 ; 1 + f50: 30 40 sbci r19, 0x00 ; 0 + f52: 80 40 sbci r24, 0x00 ; 0 + f54: e1 f7 brne .-8 ; 0xf4e <__vector_1+0x10a> + f56: 00 c0 rjmp .+0 ; 0xf58 <__vector_1+0x114> + f58: 00 00 nop + f5a: 0b c0 rjmp .+22 ; 0xf72 <__vector_1+0x12e> _delay_ms(500); } else if(code == 254) { - df2: ce 3f cpi r28, 0xFE ; 254 - df4: 39 f4 brne .+14 ; 0xe04 <__vector_1+0x12a> - df6: e7 e8 ldi r30, 0x87 ; 135 - df8: f3 e1 ldi r31, 0x13 ; 19 - dfa: 31 97 sbiw r30, 0x01 ; 1 - dfc: f1 f7 brne .-4 ; 0xdfa <__vector_1+0x120> - dfe: 00 c0 rjmp .+0 ; 0xe00 <__vector_1+0x126> - e00: 00 00 nop - e02: 02 c0 rjmp .+4 ; 0xe08 <__vector_1+0x12e> + f5c: ce 3f cpi r28, 0xFE ; 254 + f5e: 39 f4 brne .+14 ; 0xf6e <__vector_1+0x12a> + f60: e7 e8 ldi r30, 0x87 ; 135 + f62: f3 e1 ldi r31, 0x13 ; 19 + f64: 31 97 sbiw r30, 0x01 ; 1 + f66: f1 f7 brne .-4 ; 0xf64 <__vector_1+0x120> + f68: 00 c0 rjmp .+0 ; 0xf6a <__vector_1+0x126> + f6a: 00 00 nop + f6c: 02 c0 rjmp .+4 ; 0xf72 <__vector_1+0x12e> _delay_ms(1); } else { this->_code = code; - e04: c0 93 85 01 sts 0x0185, r28 - e08: 28 98 cbi 0x05, 0 ; 5 + f6e: c0 93 85 01 sts 0x0185, r28 + f72: 28 98 cbi 0x05, 0 ; 5 } led.red(0); EIFR |= (1< + f74: e0 9a sbi 0x1c, 0 ; 28 + f76: 0c c0 rjmp .+24 ; 0xf90 <__vector_1+0x14c> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - e0e: f5 e8 ldi r31, 0x85 ; 133 - e10: fa 95 dec r31 - e12: f1 f7 brne .-4 ; 0xe10 <__vector_1+0x136> - e14: 00 00 nop - e16: 21 e3 ldi r18, 0x31 ; 49 - e18: c2 cf rjmp .-124 ; 0xd9e <__vector_1+0xc4> - e1a: 25 e8 ldi r18, 0x85 ; 133 - e1c: 2a 95 dec r18 - e1e: f1 f7 brne .-4 ; 0xe1c <__vector_1+0x142> - e20: 00 00 nop - e22: 21 e3 ldi r18, 0x31 ; 49 - e24: 95 cf rjmp .-214 ; 0xd50 <__vector_1+0x76> + f78: f5 e8 ldi r31, 0x85 ; 133 + f7a: fa 95 dec r31 + f7c: f1 f7 brne .-4 ; 0xf7a <__vector_1+0x136> + f7e: 00 00 nop + f80: 21 e3 ldi r18, 0x31 ; 49 + f82: c2 cf rjmp .-124 ; 0xf08 <__vector_1+0xc4> + f84: 25 e8 ldi r18, 0x85 ; 133 + f86: 2a 95 dec r18 + f88: f1 f7 brne .-4 ; 0xf86 <__vector_1+0x142> + f8a: 00 00 nop + f8c: 21 e3 ldi r18, 0x31 ; 49 + f8e: 95 cf rjmp .-214 ; 0xeba <__vector_1+0x76> ir.interrupt(); } - e26: ff 91 pop r31 - e28: ef 91 pop r30 - e2a: cf 91 pop r28 - e2c: bf 91 pop r27 - e2e: af 91 pop r26 - e30: 9f 91 pop r25 - e32: 8f 91 pop r24 - e34: 7f 91 pop r23 - e36: 6f 91 pop r22 - e38: 5f 91 pop r21 - e3a: 4f 91 pop r20 - e3c: 3f 91 pop r19 - e3e: 2f 91 pop r18 - e40: 0f 90 pop r0 - e42: 0f be out 0x3f, r0 ; 63 - e44: 0f 90 pop r0 - e46: 1f 90 pop r1 - e48: 18 95 reti + f90: ff 91 pop r31 + f92: ef 91 pop r30 + f94: cf 91 pop r28 + f96: bf 91 pop r27 + f98: af 91 pop r26 + f9a: 9f 91 pop r25 + f9c: 8f 91 pop r24 + f9e: 7f 91 pop r23 + fa0: 6f 91 pop r22 + fa2: 5f 91 pop r21 + fa4: 4f 91 pop r20 + fa6: 3f 91 pop r19 + fa8: 2f 91 pop r18 + faa: 0f 90 pop r0 + fac: 0f be out 0x3f, r0 ; 63 + fae: 0f 90 pop r0 + fb0: 1f 90 pop r1 + fb2: 18 95 reti -00000e4a <_GLOBAL__sub_I_Serial>: +00000fb4 <_GLOBAL__sub_I_Serial>: */ #include "peripheral.h" #include uartclass Serial; - e4a: 85 eb ldi r24, 0xB5 ; 181 - e4c: 91 e0 ldi r25, 0x01 ; 1 - e4e: 0e 94 a0 02 call 0x540 ; 0x540 <_ZN4UartILm9600EEC1Ev> + fb4: 8a eb ldi r24, 0xBA ; 186 + fb6: 91 e0 ldi r25, 0x01 ; 1 + fb8: 0e 94 b5 02 call 0x56a ; 0x56a <_ZN4UartILm9600EEC1Ev> template class Stripe { public: Stripe() { this->init(); - e52: 88 e8 ldi r24, 0x88 ; 136 - e54: 91 e0 ldi r25, 0x01 ; 1 - e56: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv> + fbc: 88 e8 ldi r24, 0x88 ; 136 + fbe: 91 e0 ldi r25, 0x01 ; 1 + fc0: 0e 94 c4 06 call 0xd88 ; 0xd88 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv> static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - e5a: 20 9a sbi 0x04, 0 ; 4 - e5c: 21 9a sbi 0x04, 1 ; 4 + fc4: 20 9a sbi 0x04, 0 ; 4 + fc6: 21 9a sbi 0x04, 1 ; 4 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - e5e: 28 98 cbi 0x05, 0 ; 5 - e60: 29 98 cbi 0x05, 1 ; 5 - e62: 56 98 cbi 0x0a, 6 ; 10 + fc8: 28 98 cbi 0x05, 0 ; 5 + fca: 29 98 cbi 0x05, 1 ; 5 + fcc: 56 98 cbi 0x0a, 6 ; 10 namespace avrlib { struct portd { static uint8_t port() { return PORTD; } static void port(uint8_t v) { PORTD = v; } - e64: 5e 98 cbi 0x0b, 6 ; 11 + fce: 5e 98 cbi 0x0b, 6 ; 11 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; } - e66: 57 98 cbi 0x0a, 7 ; 10 + fd0: 57 98 cbi 0x0a, 7 ; 10 namespace avrlib { struct portd { static uint8_t port() { return PORTD; } static void port(uint8_t v) { PORTD = v; } - e68: 5f 98 cbi 0x0b, 7 ; 11 + fd2: 5f 98 cbi 0x0b, 7 ; 11 // The Analog Comparator's positive input is // connected to the AIN0 pin // The Analog Comparator's negative input is // connected to the AIN1 pin // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=(0<_code = 255; - e82: 8f ef ldi r24, 0xFF ; 255 - e84: 80 93 85 01 sts 0x0185, r24 + fec: 8f ef ldi r24, 0xFF ; 255 + fee: 80 93 85 01 sts 0x0185, r24 // INT0 Mode: Falling Edge // INT1: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-14: Off // Interrupt on any change on pins PCINT16-23: Off EICRA=(0<: - e96: 50 58 subi r21, 0x80 ; 128 +00001000 <__subsf3>: + 1000: 50 58 subi r21, 0x80 ; 128 -00000e98 <__addsf3>: - e98: bb 27 eor r27, r27 - e9a: aa 27 eor r26, r26 - e9c: 0e d0 rcall .+28 ; 0xeba <__addsf3x> - e9e: 08 c1 rjmp .+528 ; 0x10b0 <__fp_round> - ea0: f9 d0 rcall .+498 ; 0x1094 <__fp_pscA> - ea2: 30 f0 brcs .+12 ; 0xeb0 <__addsf3+0x18> - ea4: fe d0 rcall .+508 ; 0x10a2 <__fp_pscB> - ea6: 20 f0 brcs .+8 ; 0xeb0 <__addsf3+0x18> - ea8: 31 f4 brne .+12 ; 0xeb6 <__addsf3+0x1e> - eaa: 9f 3f cpi r25, 0xFF ; 255 - eac: 11 f4 brne .+4 ; 0xeb2 <__addsf3+0x1a> - eae: 1e f4 brtc .+6 ; 0xeb6 <__addsf3+0x1e> - eb0: ee c0 rjmp .+476 ; 0x108e <__fp_nan> - eb2: 0e f4 brtc .+2 ; 0xeb6 <__addsf3+0x1e> - eb4: e0 95 com r30 - eb6: e7 fb bst r30, 7 - eb8: e4 c0 rjmp .+456 ; 0x1082 <__fp_inf> +00001002 <__addsf3>: + 1002: bb 27 eor r27, r27 + 1004: aa 27 eor r26, r26 + 1006: 0e d0 rcall .+28 ; 0x1024 <__addsf3x> + 1008: 08 c1 rjmp .+528 ; 0x121a <__fp_round> + 100a: f9 d0 rcall .+498 ; 0x11fe <__fp_pscA> + 100c: 30 f0 brcs .+12 ; 0x101a <__addsf3+0x18> + 100e: fe d0 rcall .+508 ; 0x120c <__fp_pscB> + 1010: 20 f0 brcs .+8 ; 0x101a <__addsf3+0x18> + 1012: 31 f4 brne .+12 ; 0x1020 <__addsf3+0x1e> + 1014: 9f 3f cpi r25, 0xFF ; 255 + 1016: 11 f4 brne .+4 ; 0x101c <__addsf3+0x1a> + 1018: 1e f4 brtc .+6 ; 0x1020 <__addsf3+0x1e> + 101a: ee c0 rjmp .+476 ; 0x11f8 <__fp_nan> + 101c: 0e f4 brtc .+2 ; 0x1020 <__addsf3+0x1e> + 101e: e0 95 com r30 + 1020: e7 fb bst r30, 7 + 1022: e4 c0 rjmp .+456 ; 0x11ec <__fp_inf> -00000eba <__addsf3x>: - eba: e9 2f mov r30, r25 - ebc: 0a d1 rcall .+532 ; 0x10d2 <__fp_split3> - ebe: 80 f3 brcs .-32 ; 0xea0 <__addsf3+0x8> - ec0: ba 17 cp r27, r26 - ec2: 62 07 cpc r22, r18 - ec4: 73 07 cpc r23, r19 - ec6: 84 07 cpc r24, r20 - ec8: 95 07 cpc r25, r21 - eca: 18 f0 brcs .+6 ; 0xed2 <__addsf3x+0x18> - ecc: 71 f4 brne .+28 ; 0xeea <__addsf3x+0x30> - ece: 9e f5 brtc .+102 ; 0xf36 <__addsf3x+0x7c> - ed0: 22 c1 rjmp .+580 ; 0x1116 <__fp_zero> - ed2: 0e f4 brtc .+2 ; 0xed6 <__addsf3x+0x1c> - ed4: e0 95 com r30 - ed6: 0b 2e mov r0, r27 - ed8: ba 2f mov r27, r26 - eda: a0 2d mov r26, r0 - edc: 0b 01 movw r0, r22 - ede: b9 01 movw r22, r18 - ee0: 90 01 movw r18, r0 - ee2: 0c 01 movw r0, r24 - ee4: ca 01 movw r24, r20 - ee6: a0 01 movw r20, r0 - ee8: 11 24 eor r1, r1 - eea: ff 27 eor r31, r31 - eec: 59 1b sub r21, r25 - eee: 99 f0 breq .+38 ; 0xf16 <__addsf3x+0x5c> - ef0: 59 3f cpi r21, 0xF9 ; 249 - ef2: 50 f4 brcc .+20 ; 0xf08 <__addsf3x+0x4e> - ef4: 50 3e cpi r21, 0xE0 ; 224 - ef6: 68 f1 brcs .+90 ; 0xf52 <__addsf3x+0x98> - ef8: 1a 16 cp r1, r26 - efa: f0 40 sbci r31, 0x00 ; 0 - efc: a2 2f mov r26, r18 - efe: 23 2f mov r18, r19 - f00: 34 2f mov r19, r20 - f02: 44 27 eor r20, r20 - f04: 58 5f subi r21, 0xF8 ; 248 - f06: f3 cf rjmp .-26 ; 0xeee <__addsf3x+0x34> - f08: 46 95 lsr r20 - f0a: 37 95 ror r19 - f0c: 27 95 ror r18 - f0e: a7 95 ror r26 - f10: f0 40 sbci r31, 0x00 ; 0 - f12: 53 95 inc r21 - f14: c9 f7 brne .-14 ; 0xf08 <__addsf3x+0x4e> - f16: 7e f4 brtc .+30 ; 0xf36 <__addsf3x+0x7c> - f18: 1f 16 cp r1, r31 - f1a: ba 0b sbc r27, r26 - f1c: 62 0b sbc r22, r18 - f1e: 73 0b sbc r23, r19 - f20: 84 0b sbc r24, r20 - f22: ba f0 brmi .+46 ; 0xf52 <__addsf3x+0x98> - f24: 91 50 subi r25, 0x01 ; 1 - f26: a1 f0 breq .+40 ; 0xf50 <__addsf3x+0x96> - f28: ff 0f add r31, r31 - f2a: bb 1f adc r27, r27 - f2c: 66 1f adc r22, r22 - f2e: 77 1f adc r23, r23 - f30: 88 1f adc r24, r24 - f32: c2 f7 brpl .-16 ; 0xf24 <__addsf3x+0x6a> - f34: 0e c0 rjmp .+28 ; 0xf52 <__addsf3x+0x98> - f36: ba 0f add r27, r26 - f38: 62 1f adc r22, r18 - f3a: 73 1f adc r23, r19 - f3c: 84 1f adc r24, r20 - f3e: 48 f4 brcc .+18 ; 0xf52 <__addsf3x+0x98> - f40: 87 95 ror r24 - f42: 77 95 ror r23 - f44: 67 95 ror r22 - f46: b7 95 ror r27 - f48: f7 95 ror r31 - f4a: 9e 3f cpi r25, 0xFE ; 254 - f4c: 08 f0 brcs .+2 ; 0xf50 <__addsf3x+0x96> - f4e: b3 cf rjmp .-154 ; 0xeb6 <__addsf3+0x1e> - f50: 93 95 inc r25 - f52: 88 0f add r24, r24 - f54: 08 f0 brcs .+2 ; 0xf58 <__addsf3x+0x9e> - f56: 99 27 eor r25, r25 - f58: ee 0f add r30, r30 - f5a: 97 95 ror r25 - f5c: 87 95 ror r24 - f5e: 08 95 ret +00001024 <__addsf3x>: + 1024: e9 2f mov r30, r25 + 1026: 0a d1 rcall .+532 ; 0x123c <__fp_split3> + 1028: 80 f3 brcs .-32 ; 0x100a <__addsf3+0x8> + 102a: ba 17 cp r27, r26 + 102c: 62 07 cpc r22, r18 + 102e: 73 07 cpc r23, r19 + 1030: 84 07 cpc r24, r20 + 1032: 95 07 cpc r25, r21 + 1034: 18 f0 brcs .+6 ; 0x103c <__addsf3x+0x18> + 1036: 71 f4 brne .+28 ; 0x1054 <__addsf3x+0x30> + 1038: 9e f5 brtc .+102 ; 0x10a0 <__addsf3x+0x7c> + 103a: 22 c1 rjmp .+580 ; 0x1280 <__fp_zero> + 103c: 0e f4 brtc .+2 ; 0x1040 <__addsf3x+0x1c> + 103e: e0 95 com r30 + 1040: 0b 2e mov r0, r27 + 1042: ba 2f mov r27, r26 + 1044: a0 2d mov r26, r0 + 1046: 0b 01 movw r0, r22 + 1048: b9 01 movw r22, r18 + 104a: 90 01 movw r18, r0 + 104c: 0c 01 movw r0, r24 + 104e: ca 01 movw r24, r20 + 1050: a0 01 movw r20, r0 + 1052: 11 24 eor r1, r1 + 1054: ff 27 eor r31, r31 + 1056: 59 1b sub r21, r25 + 1058: 99 f0 breq .+38 ; 0x1080 <__addsf3x+0x5c> + 105a: 59 3f cpi r21, 0xF9 ; 249 + 105c: 50 f4 brcc .+20 ; 0x1072 <__addsf3x+0x4e> + 105e: 50 3e cpi r21, 0xE0 ; 224 + 1060: 68 f1 brcs .+90 ; 0x10bc <__addsf3x+0x98> + 1062: 1a 16 cp r1, r26 + 1064: f0 40 sbci r31, 0x00 ; 0 + 1066: a2 2f mov r26, r18 + 1068: 23 2f mov r18, r19 + 106a: 34 2f mov r19, r20 + 106c: 44 27 eor r20, r20 + 106e: 58 5f subi r21, 0xF8 ; 248 + 1070: f3 cf rjmp .-26 ; 0x1058 <__addsf3x+0x34> + 1072: 46 95 lsr r20 + 1074: 37 95 ror r19 + 1076: 27 95 ror r18 + 1078: a7 95 ror r26 + 107a: f0 40 sbci r31, 0x00 ; 0 + 107c: 53 95 inc r21 + 107e: c9 f7 brne .-14 ; 0x1072 <__addsf3x+0x4e> + 1080: 7e f4 brtc .+30 ; 0x10a0 <__addsf3x+0x7c> + 1082: 1f 16 cp r1, r31 + 1084: ba 0b sbc r27, r26 + 1086: 62 0b sbc r22, r18 + 1088: 73 0b sbc r23, r19 + 108a: 84 0b sbc r24, r20 + 108c: ba f0 brmi .+46 ; 0x10bc <__addsf3x+0x98> + 108e: 91 50 subi r25, 0x01 ; 1 + 1090: a1 f0 breq .+40 ; 0x10ba <__addsf3x+0x96> + 1092: ff 0f add r31, r31 + 1094: bb 1f adc r27, r27 + 1096: 66 1f adc r22, r22 + 1098: 77 1f adc r23, r23 + 109a: 88 1f adc r24, r24 + 109c: c2 f7 brpl .-16 ; 0x108e <__addsf3x+0x6a> + 109e: 0e c0 rjmp .+28 ; 0x10bc <__addsf3x+0x98> + 10a0: ba 0f add r27, r26 + 10a2: 62 1f adc r22, r18 + 10a4: 73 1f adc r23, r19 + 10a6: 84 1f adc r24, r20 + 10a8: 48 f4 brcc .+18 ; 0x10bc <__addsf3x+0x98> + 10aa: 87 95 ror r24 + 10ac: 77 95 ror r23 + 10ae: 67 95 ror r22 + 10b0: b7 95 ror r27 + 10b2: f7 95 ror r31 + 10b4: 9e 3f cpi r25, 0xFE ; 254 + 10b6: 08 f0 brcs .+2 ; 0x10ba <__addsf3x+0x96> + 10b8: b3 cf rjmp .-154 ; 0x1020 <__addsf3+0x1e> + 10ba: 93 95 inc r25 + 10bc: 88 0f add r24, r24 + 10be: 08 f0 brcs .+2 ; 0x10c2 <__addsf3x+0x9e> + 10c0: 99 27 eor r25, r25 + 10c2: ee 0f add r30, r30 + 10c4: 97 95 ror r25 + 10c6: 87 95 ror r24 + 10c8: 08 95 ret -00000f60 <__cmpsf2>: - f60: 6c d0 rcall .+216 ; 0x103a <__fp_cmp> - f62: 08 f4 brcc .+2 ; 0xf66 <__cmpsf2+0x6> - f64: 81 e0 ldi r24, 0x01 ; 1 - f66: 08 95 ret - -00000f68 <__fixunssfsi>: - f68: bc d0 rcall .+376 ; 0x10e2 <__fp_splitA> - f6a: 88 f0 brcs .+34 ; 0xf8e <__fixunssfsi+0x26> - f6c: 9f 57 subi r25, 0x7F ; 127 - f6e: 90 f0 brcs .+36 ; 0xf94 <__fixunssfsi+0x2c> - f70: b9 2f mov r27, r25 - f72: 99 27 eor r25, r25 - f74: b7 51 subi r27, 0x17 ; 23 - f76: a0 f0 brcs .+40 ; 0xfa0 <__fixunssfsi+0x38> - f78: d1 f0 breq .+52 ; 0xfae <__fixunssfsi+0x46> - f7a: 66 0f add r22, r22 - f7c: 77 1f adc r23, r23 - f7e: 88 1f adc r24, r24 - f80: 99 1f adc r25, r25 - f82: 1a f0 brmi .+6 ; 0xf8a <__fixunssfsi+0x22> - f84: ba 95 dec r27 - f86: c9 f7 brne .-14 ; 0xf7a <__fixunssfsi+0x12> - f88: 12 c0 rjmp .+36 ; 0xfae <__fixunssfsi+0x46> - f8a: b1 30 cpi r27, 0x01 ; 1 - f8c: 81 f0 breq .+32 ; 0xfae <__fixunssfsi+0x46> - f8e: c3 d0 rcall .+390 ; 0x1116 <__fp_zero> - f90: b1 e0 ldi r27, 0x01 ; 1 - f92: 08 95 ret - f94: c0 c0 rjmp .+384 ; 0x1116 <__fp_zero> - f96: 67 2f mov r22, r23 - f98: 78 2f mov r23, r24 - f9a: 88 27 eor r24, r24 - f9c: b8 5f subi r27, 0xF8 ; 248 - f9e: 39 f0 breq .+14 ; 0xfae <__fixunssfsi+0x46> - fa0: b9 3f cpi r27, 0xF9 ; 249 - fa2: cc f3 brlt .-14 ; 0xf96 <__fixunssfsi+0x2e> - fa4: 86 95 lsr r24 - fa6: 77 95 ror r23 - fa8: 67 95 ror r22 - faa: b3 95 inc r27 - fac: d9 f7 brne .-10 ; 0xfa4 <__fixunssfsi+0x3c> - fae: 3e f4 brtc .+14 ; 0xfbe <__fixunssfsi+0x56> - fb0: 90 95 com r25 - fb2: 80 95 com r24 - fb4: 70 95 com r23 - fb6: 61 95 neg r22 - fb8: 7f 4f sbci r23, 0xFF ; 255 - fba: 8f 4f sbci r24, 0xFF ; 255 - fbc: 9f 4f sbci r25, 0xFF ; 255 - fbe: 08 95 ret - -00000fc0 <__floatunsisf>: - fc0: e8 94 clt - fc2: 09 c0 rjmp .+18 ; 0xfd6 <__floatsisf+0x12> - -00000fc4 <__floatsisf>: - fc4: 97 fb bst r25, 7 - fc6: 3e f4 brtc .+14 ; 0xfd6 <__floatsisf+0x12> - fc8: 90 95 com r25 - fca: 80 95 com r24 - fcc: 70 95 com r23 - fce: 61 95 neg r22 - fd0: 7f 4f sbci r23, 0xFF ; 255 - fd2: 8f 4f sbci r24, 0xFF ; 255 - fd4: 9f 4f sbci r25, 0xFF ; 255 - fd6: 99 23 and r25, r25 - fd8: a9 f0 breq .+42 ; 0x1004 <__floatsisf+0x40> - fda: f9 2f mov r31, r25 - fdc: 96 e9 ldi r25, 0x96 ; 150 - fde: bb 27 eor r27, r27 - fe0: 93 95 inc r25 - fe2: f6 95 lsr r31 - fe4: 87 95 ror r24 - fe6: 77 95 ror r23 - fe8: 67 95 ror r22 - fea: b7 95 ror r27 - fec: f1 11 cpse r31, r1 - fee: f8 cf rjmp .-16 ; 0xfe0 <__floatsisf+0x1c> - ff0: fa f4 brpl .+62 ; 0x1030 <__floatsisf+0x6c> - ff2: bb 0f add r27, r27 - ff4: 11 f4 brne .+4 ; 0xffa <__floatsisf+0x36> - ff6: 60 ff sbrs r22, 0 - ff8: 1b c0 rjmp .+54 ; 0x1030 <__floatsisf+0x6c> - ffa: 6f 5f subi r22, 0xFF ; 255 - ffc: 7f 4f sbci r23, 0xFF ; 255 - ffe: 8f 4f sbci r24, 0xFF ; 255 - 1000: 9f 4f sbci r25, 0xFF ; 255 - 1002: 16 c0 rjmp .+44 ; 0x1030 <__floatsisf+0x6c> - 1004: 88 23 and r24, r24 - 1006: 11 f0 breq .+4 ; 0x100c <__floatsisf+0x48> - 1008: 96 e9 ldi r25, 0x96 ; 150 - 100a: 11 c0 rjmp .+34 ; 0x102e <__floatsisf+0x6a> - 100c: 77 23 and r23, r23 - 100e: 21 f0 breq .+8 ; 0x1018 <__floatsisf+0x54> - 1010: 9e e8 ldi r25, 0x8E ; 142 - 1012: 87 2f mov r24, r23 - 1014: 76 2f mov r23, r22 - 1016: 05 c0 rjmp .+10 ; 0x1022 <__floatsisf+0x5e> - 1018: 66 23 and r22, r22 - 101a: 71 f0 breq .+28 ; 0x1038 <__floatsisf+0x74> - 101c: 96 e8 ldi r25, 0x86 ; 134 - 101e: 86 2f mov r24, r22 - 1020: 70 e0 ldi r23, 0x00 ; 0 - 1022: 60 e0 ldi r22, 0x00 ; 0 - 1024: 2a f0 brmi .+10 ; 0x1030 <__floatsisf+0x6c> - 1026: 9a 95 dec r25 - 1028: 66 0f add r22, r22 - 102a: 77 1f adc r23, r23 - 102c: 88 1f adc r24, r24 - 102e: da f7 brpl .-10 ; 0x1026 <__floatsisf+0x62> - 1030: 88 0f add r24, r24 - 1032: 96 95 lsr r25 - 1034: 87 95 ror r24 - 1036: 97 f9 bld r25, 7 - 1038: 08 95 ret - -0000103a <__fp_cmp>: - 103a: 99 0f add r25, r25 - 103c: 00 08 sbc r0, r0 - 103e: 55 0f add r21, r21 - 1040: aa 0b sbc r26, r26 - 1042: e0 e8 ldi r30, 0x80 ; 128 - 1044: fe ef ldi r31, 0xFE ; 254 - 1046: 16 16 cp r1, r22 - 1048: 17 06 cpc r1, r23 - 104a: e8 07 cpc r30, r24 - 104c: f9 07 cpc r31, r25 - 104e: c0 f0 brcs .+48 ; 0x1080 <__fp_cmp+0x46> - 1050: 12 16 cp r1, r18 - 1052: 13 06 cpc r1, r19 - 1054: e4 07 cpc r30, r20 - 1056: f5 07 cpc r31, r21 - 1058: 98 f0 brcs .+38 ; 0x1080 <__fp_cmp+0x46> - 105a: 62 1b sub r22, r18 - 105c: 73 0b sbc r23, r19 - 105e: 84 0b sbc r24, r20 - 1060: 95 0b sbc r25, r21 - 1062: 39 f4 brne .+14 ; 0x1072 <__fp_cmp+0x38> - 1064: 0a 26 eor r0, r26 - 1066: 61 f0 breq .+24 ; 0x1080 <__fp_cmp+0x46> - 1068: 23 2b or r18, r19 - 106a: 24 2b or r18, r20 - 106c: 25 2b or r18, r21 - 106e: 21 f4 brne .+8 ; 0x1078 <__fp_cmp+0x3e> - 1070: 08 95 ret - 1072: 0a 26 eor r0, r26 - 1074: 09 f4 brne .+2 ; 0x1078 <__fp_cmp+0x3e> - 1076: a1 40 sbci r26, 0x01 ; 1 - 1078: a6 95 lsr r26 - 107a: 8f ef ldi r24, 0xFF ; 255 - 107c: 81 1d adc r24, r1 - 107e: 81 1d adc r24, r1 - 1080: 08 95 ret - -00001082 <__fp_inf>: - 1082: 97 f9 bld r25, 7 - 1084: 9f 67 ori r25, 0x7F ; 127 - 1086: 80 e8 ldi r24, 0x80 ; 128 - 1088: 70 e0 ldi r23, 0x00 ; 0 - 108a: 60 e0 ldi r22, 0x00 ; 0 - 108c: 08 95 ret - -0000108e <__fp_nan>: - 108e: 9f ef ldi r25, 0xFF ; 255 - 1090: 80 ec ldi r24, 0xC0 ; 192 - 1092: 08 95 ret - -00001094 <__fp_pscA>: - 1094: 00 24 eor r0, r0 - 1096: 0a 94 dec r0 - 1098: 16 16 cp r1, r22 - 109a: 17 06 cpc r1, r23 - 109c: 18 06 cpc r1, r24 - 109e: 09 06 cpc r0, r25 - 10a0: 08 95 ret - -000010a2 <__fp_pscB>: - 10a2: 00 24 eor r0, r0 - 10a4: 0a 94 dec r0 - 10a6: 12 16 cp r1, r18 - 10a8: 13 06 cpc r1, r19 - 10aa: 14 06 cpc r1, r20 - 10ac: 05 06 cpc r0, r21 - 10ae: 08 95 ret - -000010b0 <__fp_round>: - 10b0: 09 2e mov r0, r25 - 10b2: 03 94 inc r0 - 10b4: 00 0c add r0, r0 - 10b6: 11 f4 brne .+4 ; 0x10bc <__fp_round+0xc> - 10b8: 88 23 and r24, r24 - 10ba: 52 f0 brmi .+20 ; 0x10d0 <__fp_round+0x20> - 10bc: bb 0f add r27, r27 - 10be: 40 f4 brcc .+16 ; 0x10d0 <__fp_round+0x20> - 10c0: bf 2b or r27, r31 - 10c2: 11 f4 brne .+4 ; 0x10c8 <__fp_round+0x18> - 10c4: 60 ff sbrs r22, 0 - 10c6: 04 c0 rjmp .+8 ; 0x10d0 <__fp_round+0x20> - 10c8: 6f 5f subi r22, 0xFF ; 255 - 10ca: 7f 4f sbci r23, 0xFF ; 255 - 10cc: 8f 4f sbci r24, 0xFF ; 255 - 10ce: 9f 4f sbci r25, 0xFF ; 255 +000010ca <__cmpsf2>: + 10ca: 6c d0 rcall .+216 ; 0x11a4 <__fp_cmp> + 10cc: 08 f4 brcc .+2 ; 0x10d0 <__cmpsf2+0x6> + 10ce: 81 e0 ldi r24, 0x01 ; 1 10d0: 08 95 ret -000010d2 <__fp_split3>: - 10d2: 57 fd sbrc r21, 7 - 10d4: 90 58 subi r25, 0x80 ; 128 - 10d6: 44 0f add r20, r20 - 10d8: 55 1f adc r21, r21 - 10da: 59 f0 breq .+22 ; 0x10f2 <__fp_splitA+0x10> - 10dc: 5f 3f cpi r21, 0xFF ; 255 - 10de: 71 f0 breq .+28 ; 0x10fc <__fp_splitA+0x1a> - 10e0: 47 95 ror r20 +000010d2 <__fixunssfsi>: + 10d2: bc d0 rcall .+376 ; 0x124c <__fp_splitA> + 10d4: 88 f0 brcs .+34 ; 0x10f8 <__fixunssfsi+0x26> + 10d6: 9f 57 subi r25, 0x7F ; 127 + 10d8: 90 f0 brcs .+36 ; 0x10fe <__fixunssfsi+0x2c> + 10da: b9 2f mov r27, r25 + 10dc: 99 27 eor r25, r25 + 10de: b7 51 subi r27, 0x17 ; 23 + 10e0: a0 f0 brcs .+40 ; 0x110a <__fixunssfsi+0x38> + 10e2: d1 f0 breq .+52 ; 0x1118 <__fixunssfsi+0x46> + 10e4: 66 0f add r22, r22 + 10e6: 77 1f adc r23, r23 + 10e8: 88 1f adc r24, r24 + 10ea: 99 1f adc r25, r25 + 10ec: 1a f0 brmi .+6 ; 0x10f4 <__fixunssfsi+0x22> + 10ee: ba 95 dec r27 + 10f0: c9 f7 brne .-14 ; 0x10e4 <__fixunssfsi+0x12> + 10f2: 12 c0 rjmp .+36 ; 0x1118 <__fixunssfsi+0x46> + 10f4: b1 30 cpi r27, 0x01 ; 1 + 10f6: 81 f0 breq .+32 ; 0x1118 <__fixunssfsi+0x46> + 10f8: c3 d0 rcall .+390 ; 0x1280 <__fp_zero> + 10fa: b1 e0 ldi r27, 0x01 ; 1 + 10fc: 08 95 ret + 10fe: c0 c0 rjmp .+384 ; 0x1280 <__fp_zero> + 1100: 67 2f mov r22, r23 + 1102: 78 2f mov r23, r24 + 1104: 88 27 eor r24, r24 + 1106: b8 5f subi r27, 0xF8 ; 248 + 1108: 39 f0 breq .+14 ; 0x1118 <__fixunssfsi+0x46> + 110a: b9 3f cpi r27, 0xF9 ; 249 + 110c: cc f3 brlt .-14 ; 0x1100 <__fixunssfsi+0x2e> + 110e: 86 95 lsr r24 + 1110: 77 95 ror r23 + 1112: 67 95 ror r22 + 1114: b3 95 inc r27 + 1116: d9 f7 brne .-10 ; 0x110e <__fixunssfsi+0x3c> + 1118: 3e f4 brtc .+14 ; 0x1128 <__fixunssfsi+0x56> + 111a: 90 95 com r25 + 111c: 80 95 com r24 + 111e: 70 95 com r23 + 1120: 61 95 neg r22 + 1122: 7f 4f sbci r23, 0xFF ; 255 + 1124: 8f 4f sbci r24, 0xFF ; 255 + 1126: 9f 4f sbci r25, 0xFF ; 255 + 1128: 08 95 ret -000010e2 <__fp_splitA>: - 10e2: 88 0f add r24, r24 - 10e4: 97 fb bst r25, 7 - 10e6: 99 1f adc r25, r25 - 10e8: 61 f0 breq .+24 ; 0x1102 <__fp_splitA+0x20> - 10ea: 9f 3f cpi r25, 0xFF ; 255 - 10ec: 79 f0 breq .+30 ; 0x110c <__fp_splitA+0x2a> - 10ee: 87 95 ror r24 - 10f0: 08 95 ret - 10f2: 12 16 cp r1, r18 - 10f4: 13 06 cpc r1, r19 - 10f6: 14 06 cpc r1, r20 - 10f8: 55 1f adc r21, r21 - 10fa: f2 cf rjmp .-28 ; 0x10e0 <__fp_split3+0xe> - 10fc: 46 95 lsr r20 - 10fe: f1 df rcall .-30 ; 0x10e2 <__fp_splitA> - 1100: 08 c0 rjmp .+16 ; 0x1112 <__fp_splitA+0x30> - 1102: 16 16 cp r1, r22 - 1104: 17 06 cpc r1, r23 - 1106: 18 06 cpc r1, r24 - 1108: 99 1f adc r25, r25 - 110a: f1 cf rjmp .-30 ; 0x10ee <__fp_splitA+0xc> - 110c: 86 95 lsr r24 - 110e: 71 05 cpc r23, r1 - 1110: 61 05 cpc r22, r1 - 1112: 08 94 sec - 1114: 08 95 ret +0000112a <__floatunsisf>: + 112a: e8 94 clt + 112c: 09 c0 rjmp .+18 ; 0x1140 <__floatsisf+0x12> -00001116 <__fp_zero>: - 1116: e8 94 clt +0000112e <__floatsisf>: + 112e: 97 fb bst r25, 7 + 1130: 3e f4 brtc .+14 ; 0x1140 <__floatsisf+0x12> + 1132: 90 95 com r25 + 1134: 80 95 com r24 + 1136: 70 95 com r23 + 1138: 61 95 neg r22 + 113a: 7f 4f sbci r23, 0xFF ; 255 + 113c: 8f 4f sbci r24, 0xFF ; 255 + 113e: 9f 4f sbci r25, 0xFF ; 255 + 1140: 99 23 and r25, r25 + 1142: a9 f0 breq .+42 ; 0x116e <__floatsisf+0x40> + 1144: f9 2f mov r31, r25 + 1146: 96 e9 ldi r25, 0x96 ; 150 + 1148: bb 27 eor r27, r27 + 114a: 93 95 inc r25 + 114c: f6 95 lsr r31 + 114e: 87 95 ror r24 + 1150: 77 95 ror r23 + 1152: 67 95 ror r22 + 1154: b7 95 ror r27 + 1156: f1 11 cpse r31, r1 + 1158: f8 cf rjmp .-16 ; 0x114a <__floatsisf+0x1c> + 115a: fa f4 brpl .+62 ; 0x119a <__floatsisf+0x6c> + 115c: bb 0f add r27, r27 + 115e: 11 f4 brne .+4 ; 0x1164 <__floatsisf+0x36> + 1160: 60 ff sbrs r22, 0 + 1162: 1b c0 rjmp .+54 ; 0x119a <__floatsisf+0x6c> + 1164: 6f 5f subi r22, 0xFF ; 255 + 1166: 7f 4f sbci r23, 0xFF ; 255 + 1168: 8f 4f sbci r24, 0xFF ; 255 + 116a: 9f 4f sbci r25, 0xFF ; 255 + 116c: 16 c0 rjmp .+44 ; 0x119a <__floatsisf+0x6c> + 116e: 88 23 and r24, r24 + 1170: 11 f0 breq .+4 ; 0x1176 <__floatsisf+0x48> + 1172: 96 e9 ldi r25, 0x96 ; 150 + 1174: 11 c0 rjmp .+34 ; 0x1198 <__floatsisf+0x6a> + 1176: 77 23 and r23, r23 + 1178: 21 f0 breq .+8 ; 0x1182 <__floatsisf+0x54> + 117a: 9e e8 ldi r25, 0x8E ; 142 + 117c: 87 2f mov r24, r23 + 117e: 76 2f mov r23, r22 + 1180: 05 c0 rjmp .+10 ; 0x118c <__floatsisf+0x5e> + 1182: 66 23 and r22, r22 + 1184: 71 f0 breq .+28 ; 0x11a2 <__floatsisf+0x74> + 1186: 96 e8 ldi r25, 0x86 ; 134 + 1188: 86 2f mov r24, r22 + 118a: 70 e0 ldi r23, 0x00 ; 0 + 118c: 60 e0 ldi r22, 0x00 ; 0 + 118e: 2a f0 brmi .+10 ; 0x119a <__floatsisf+0x6c> + 1190: 9a 95 dec r25 + 1192: 66 0f add r22, r22 + 1194: 77 1f adc r23, r23 + 1196: 88 1f adc r24, r24 + 1198: da f7 brpl .-10 ; 0x1190 <__floatsisf+0x62> + 119a: 88 0f add r24, r24 + 119c: 96 95 lsr r25 + 119e: 87 95 ror r24 + 11a0: 97 f9 bld r25, 7 + 11a2: 08 95 ret -00001118 <__fp_szero>: - 1118: bb 27 eor r27, r27 - 111a: 66 27 eor r22, r22 - 111c: 77 27 eor r23, r23 - 111e: cb 01 movw r24, r22 - 1120: 97 f9 bld r25, 7 - 1122: 08 95 ret +000011a4 <__fp_cmp>: + 11a4: 99 0f add r25, r25 + 11a6: 00 08 sbc r0, r0 + 11a8: 55 0f add r21, r21 + 11aa: aa 0b sbc r26, r26 + 11ac: e0 e8 ldi r30, 0x80 ; 128 + 11ae: fe ef ldi r31, 0xFE ; 254 + 11b0: 16 16 cp r1, r22 + 11b2: 17 06 cpc r1, r23 + 11b4: e8 07 cpc r30, r24 + 11b6: f9 07 cpc r31, r25 + 11b8: c0 f0 brcs .+48 ; 0x11ea <__fp_cmp+0x46> + 11ba: 12 16 cp r1, r18 + 11bc: 13 06 cpc r1, r19 + 11be: e4 07 cpc r30, r20 + 11c0: f5 07 cpc r31, r21 + 11c2: 98 f0 brcs .+38 ; 0x11ea <__fp_cmp+0x46> + 11c4: 62 1b sub r22, r18 + 11c6: 73 0b sbc r23, r19 + 11c8: 84 0b sbc r24, r20 + 11ca: 95 0b sbc r25, r21 + 11cc: 39 f4 brne .+14 ; 0x11dc <__fp_cmp+0x38> + 11ce: 0a 26 eor r0, r26 + 11d0: 61 f0 breq .+24 ; 0x11ea <__fp_cmp+0x46> + 11d2: 23 2b or r18, r19 + 11d4: 24 2b or r18, r20 + 11d6: 25 2b or r18, r21 + 11d8: 21 f4 brne .+8 ; 0x11e2 <__fp_cmp+0x3e> + 11da: 08 95 ret + 11dc: 0a 26 eor r0, r26 + 11de: 09 f4 brne .+2 ; 0x11e2 <__fp_cmp+0x3e> + 11e0: a1 40 sbci r26, 0x01 ; 1 + 11e2: a6 95 lsr r26 + 11e4: 8f ef ldi r24, 0xFF ; 255 + 11e6: 81 1d adc r24, r1 + 11e8: 81 1d adc r24, r1 + 11ea: 08 95 ret -00001124 <__gesf2>: - 1124: 8a df rcall .-236 ; 0x103a <__fp_cmp> - 1126: 08 f4 brcc .+2 ; 0x112a <__gesf2+0x6> - 1128: 8f ef ldi r24, 0xFF ; 255 - 112a: 08 95 ret +000011ec <__fp_inf>: + 11ec: 97 f9 bld r25, 7 + 11ee: 9f 67 ori r25, 0x7F ; 127 + 11f0: 80 e8 ldi r24, 0x80 ; 128 + 11f2: 70 e0 ldi r23, 0x00 ; 0 + 11f4: 60 e0 ldi r22, 0x00 ; 0 + 11f6: 08 95 ret -0000112c <__divmodhi4>: - 112c: 97 fb bst r25, 7 - 112e: 07 2e mov r0, r23 - 1130: 16 f4 brtc .+4 ; 0x1136 <__divmodhi4+0xa> - 1132: 00 94 com r0 - 1134: 07 d0 rcall .+14 ; 0x1144 <__divmodhi4_neg1> - 1136: 77 fd sbrc r23, 7 - 1138: 09 d0 rcall .+18 ; 0x114c <__divmodhi4_neg2> - 113a: 0e 94 b6 08 call 0x116c ; 0x116c <__udivmodhi4> - 113e: 07 fc sbrc r0, 7 - 1140: 05 d0 rcall .+10 ; 0x114c <__divmodhi4_neg2> - 1142: 3e f4 brtc .+14 ; 0x1152 <__divmodhi4_exit> +000011f8 <__fp_nan>: + 11f8: 9f ef ldi r25, 0xFF ; 255 + 11fa: 80 ec ldi r24, 0xC0 ; 192 + 11fc: 08 95 ret -00001144 <__divmodhi4_neg1>: - 1144: 90 95 com r25 - 1146: 81 95 neg r24 - 1148: 9f 4f sbci r25, 0xFF ; 255 - 114a: 08 95 ret +000011fe <__fp_pscA>: + 11fe: 00 24 eor r0, r0 + 1200: 0a 94 dec r0 + 1202: 16 16 cp r1, r22 + 1204: 17 06 cpc r1, r23 + 1206: 18 06 cpc r1, r24 + 1208: 09 06 cpc r0, r25 + 120a: 08 95 ret -0000114c <__divmodhi4_neg2>: - 114c: 70 95 com r23 - 114e: 61 95 neg r22 - 1150: 7f 4f sbci r23, 0xFF ; 255 +0000120c <__fp_pscB>: + 120c: 00 24 eor r0, r0 + 120e: 0a 94 dec r0 + 1210: 12 16 cp r1, r18 + 1212: 13 06 cpc r1, r19 + 1214: 14 06 cpc r1, r20 + 1216: 05 06 cpc r0, r21 + 1218: 08 95 ret -00001152 <__divmodhi4_exit>: - 1152: 08 95 ret +0000121a <__fp_round>: + 121a: 09 2e mov r0, r25 + 121c: 03 94 inc r0 + 121e: 00 0c add r0, r0 + 1220: 11 f4 brne .+4 ; 0x1226 <__fp_round+0xc> + 1222: 88 23 and r24, r24 + 1224: 52 f0 brmi .+20 ; 0x123a <__fp_round+0x20> + 1226: bb 0f add r27, r27 + 1228: 40 f4 brcc .+16 ; 0x123a <__fp_round+0x20> + 122a: bf 2b or r27, r31 + 122c: 11 f4 brne .+4 ; 0x1232 <__fp_round+0x18> + 122e: 60 ff sbrs r22, 0 + 1230: 04 c0 rjmp .+8 ; 0x123a <__fp_round+0x20> + 1232: 6f 5f subi r22, 0xFF ; 255 + 1234: 7f 4f sbci r23, 0xFF ; 255 + 1236: 8f 4f sbci r24, 0xFF ; 255 + 1238: 9f 4f sbci r25, 0xFF ; 255 + 123a: 08 95 ret -00001154 <__umulhisi3>: - 1154: a2 9f mul r26, r18 - 1156: b0 01 movw r22, r0 - 1158: b3 9f mul r27, r19 - 115a: c0 01 movw r24, r0 - 115c: a3 9f mul r26, r19 - 115e: 01 d0 rcall .+2 ; 0x1162 <__umulhisi3+0xe> - 1160: b2 9f mul r27, r18 - 1162: 70 0d add r23, r0 - 1164: 81 1d adc r24, r1 - 1166: 11 24 eor r1, r1 - 1168: 91 1d adc r25, r1 - 116a: 08 95 ret +0000123c <__fp_split3>: + 123c: 57 fd sbrc r21, 7 + 123e: 90 58 subi r25, 0x80 ; 128 + 1240: 44 0f add r20, r20 + 1242: 55 1f adc r21, r21 + 1244: 59 f0 breq .+22 ; 0x125c <__fp_splitA+0x10> + 1246: 5f 3f cpi r21, 0xFF ; 255 + 1248: 71 f0 breq .+28 ; 0x1266 <__fp_splitA+0x1a> + 124a: 47 95 ror r20 -0000116c <__udivmodhi4>: - 116c: aa 1b sub r26, r26 - 116e: bb 1b sub r27, r27 - 1170: 51 e1 ldi r21, 0x11 ; 17 - 1172: 07 c0 rjmp .+14 ; 0x1182 <__udivmodhi4_ep> +0000124c <__fp_splitA>: + 124c: 88 0f add r24, r24 + 124e: 97 fb bst r25, 7 + 1250: 99 1f adc r25, r25 + 1252: 61 f0 breq .+24 ; 0x126c <__fp_splitA+0x20> + 1254: 9f 3f cpi r25, 0xFF ; 255 + 1256: 79 f0 breq .+30 ; 0x1276 <__fp_splitA+0x2a> + 1258: 87 95 ror r24 + 125a: 08 95 ret + 125c: 12 16 cp r1, r18 + 125e: 13 06 cpc r1, r19 + 1260: 14 06 cpc r1, r20 + 1262: 55 1f adc r21, r21 + 1264: f2 cf rjmp .-28 ; 0x124a <__fp_split3+0xe> + 1266: 46 95 lsr r20 + 1268: f1 df rcall .-30 ; 0x124c <__fp_splitA> + 126a: 08 c0 rjmp .+16 ; 0x127c <__fp_splitA+0x30> + 126c: 16 16 cp r1, r22 + 126e: 17 06 cpc r1, r23 + 1270: 18 06 cpc r1, r24 + 1272: 99 1f adc r25, r25 + 1274: f1 cf rjmp .-30 ; 0x1258 <__fp_splitA+0xc> + 1276: 86 95 lsr r24 + 1278: 71 05 cpc r23, r1 + 127a: 61 05 cpc r22, r1 + 127c: 08 94 sec + 127e: 08 95 ret -00001174 <__udivmodhi4_loop>: - 1174: aa 1f adc r26, r26 - 1176: bb 1f adc r27, r27 - 1178: a6 17 cp r26, r22 - 117a: b7 07 cpc r27, r23 - 117c: 10 f0 brcs .+4 ; 0x1182 <__udivmodhi4_ep> - 117e: a6 1b sub r26, r22 - 1180: b7 0b sbc r27, r23 +00001280 <__fp_zero>: + 1280: e8 94 clt -00001182 <__udivmodhi4_ep>: - 1182: 88 1f adc r24, r24 - 1184: 99 1f adc r25, r25 - 1186: 5a 95 dec r21 - 1188: a9 f7 brne .-22 ; 0x1174 <__udivmodhi4_loop> - 118a: 80 95 com r24 - 118c: 90 95 com r25 - 118e: bc 01 movw r22, r24 - 1190: cd 01 movw r24, r26 - 1192: 08 95 ret +00001282 <__fp_szero>: + 1282: bb 27 eor r27, r27 + 1284: 66 27 eor r22, r22 + 1286: 77 27 eor r23, r23 + 1288: cb 01 movw r24, r22 + 128a: 97 f9 bld r25, 7 + 128c: 08 95 ret -00001194 <__tablejump2__>: - 1194: ee 0f add r30, r30 - 1196: ff 1f adc r31, r31 +0000128e <__gesf2>: + 128e: 8a df rcall .-236 ; 0x11a4 <__fp_cmp> + 1290: 08 f4 brcc .+2 ; 0x1294 <__gesf2+0x6> + 1292: 8f ef ldi r24, 0xFF ; 255 + 1294: 08 95 ret -00001198 <__tablejump__>: - 1198: 05 90 lpm r0, Z+ - 119a: f4 91 lpm r31, Z - 119c: e0 2d mov r30, r0 - 119e: 09 94 ijmp +00001296 <__divmodhi4>: + 1296: 97 fb bst r25, 7 + 1298: 07 2e mov r0, r23 + 129a: 16 f4 brtc .+4 ; 0x12a0 <__divmodhi4+0xa> + 129c: 00 94 com r0 + 129e: 07 d0 rcall .+14 ; 0x12ae <__divmodhi4_neg1> + 12a0: 77 fd sbrc r23, 7 + 12a2: 09 d0 rcall .+18 ; 0x12b6 <__divmodhi4_neg2> + 12a4: 0e 94 6b 09 call 0x12d6 ; 0x12d6 <__udivmodhi4> + 12a8: 07 fc sbrc r0, 7 + 12aa: 05 d0 rcall .+10 ; 0x12b6 <__divmodhi4_neg2> + 12ac: 3e f4 brtc .+14 ; 0x12bc <__divmodhi4_exit> -000011a0 <_exit>: - 11a0: f8 94 cli +000012ae <__divmodhi4_neg1>: + 12ae: 90 95 com r25 + 12b0: 81 95 neg r24 + 12b2: 9f 4f sbci r25, 0xFF ; 255 + 12b4: 08 95 ret -000011a2 <__stop_program>: - 11a2: ff cf rjmp .-2 ; 0x11a2 <__stop_program> +000012b6 <__divmodhi4_neg2>: + 12b6: 70 95 com r23 + 12b8: 61 95 neg r22 + 12ba: 7f 4f sbci r23, 0xFF ; 255 + +000012bc <__divmodhi4_exit>: + 12bc: 08 95 ret + +000012be <__umulhisi3>: + 12be: a2 9f mul r26, r18 + 12c0: b0 01 movw r22, r0 + 12c2: b3 9f mul r27, r19 + 12c4: c0 01 movw r24, r0 + 12c6: a3 9f mul r26, r19 + 12c8: 01 d0 rcall .+2 ; 0x12cc <__umulhisi3+0xe> + 12ca: b2 9f mul r27, r18 + 12cc: 70 0d add r23, r0 + 12ce: 81 1d adc r24, r1 + 12d0: 11 24 eor r1, r1 + 12d2: 91 1d adc r25, r1 + 12d4: 08 95 ret + +000012d6 <__udivmodhi4>: + 12d6: aa 1b sub r26, r26 + 12d8: bb 1b sub r27, r27 + 12da: 51 e1 ldi r21, 0x11 ; 17 + 12dc: 07 c0 rjmp .+14 ; 0x12ec <__udivmodhi4_ep> + +000012de <__udivmodhi4_loop>: + 12de: aa 1f adc r26, r26 + 12e0: bb 1f adc r27, r27 + 12e2: a6 17 cp r26, r22 + 12e4: b7 07 cpc r27, r23 + 12e6: 10 f0 brcs .+4 ; 0x12ec <__udivmodhi4_ep> + 12e8: a6 1b sub r26, r22 + 12ea: b7 0b sbc r27, r23 + +000012ec <__udivmodhi4_ep>: + 12ec: 88 1f adc r24, r24 + 12ee: 99 1f adc r25, r25 + 12f0: 5a 95 dec r21 + 12f2: a9 f7 brne .-22 ; 0x12de <__udivmodhi4_loop> + 12f4: 80 95 com r24 + 12f6: 90 95 com r25 + 12f8: bc 01 movw r22, r24 + 12fa: cd 01 movw r24, r26 + 12fc: 08 95 ret + +000012fe <__tablejump2__>: + 12fe: ee 0f add r30, r30 + 1300: ff 1f adc r31, r31 + +00001302 <__tablejump__>: + 1302: 05 90 lpm r0, Z+ + 1304: f4 91 lpm r31, Z + 1306: e0 2d mov r30, r0 + 1308: 09 94 ijmp + +0000130a <_exit>: + 130a: f8 94 cli + +0000130c <__stop_program>: + 130c: ff cf rjmp .-2 ; 0x130c <__stop_program> diff --git a/Door/Debug/Door.map b/Door/Debug/Door.map index 55dd186..b45e38a 100644 --- a/Door/Debug/Door.map +++ b/Door/Debug/Door.map @@ -296,7 +296,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .rela.plt *(.rela.plt) -.text 0x00000000 0x11a4 +.text 0x00000000 0x130e *(.vectors) .vectors 0x00000000 0x68 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm168a.o 0x00000000 __vector_default @@ -382,100 +382,100 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x000000be . = ALIGN (0x2) *(.text.*) .text.__vector_13 - 0x000000be 0x482 Door.o + 0x000000be 0x4ac Door.o 0x000000be __vector_13 .text._ZN4UartILm9600EEC2Ev - 0x00000540 0x5e Door.o - 0x00000540 _ZN4UartILm9600EEC1Ev - 0x00000540 _ZN4UartILm9600EEC2Ev + 0x0000056a 0x5e Door.o + 0x0000056a _ZN4UartILm9600EEC1Ev + 0x0000056a _ZN4UartILm9600EEC2Ev .text._ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh - 0x0000059e 0x2e Door.o - 0x0000059e _ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh + 0x000005c8 0x2e Door.o + 0x000005c8 _ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh .text._ZN4UartILm9600EE7printlnEPKc - 0x000005cc 0x4c Door.o - 0x000005cc _ZN4UartILm9600EE7printlnEPKc - .text.main 0x00000618 0x608 Door.o - 0x00000618 main + 0x000005f6 0x4c Door.o + 0x000005f6 _ZN4UartILm9600EE7printlnEPKc + .text.main 0x00000642 0x746 Door.o + 0x00000642 main .text._ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv - 0x00000c20 0x5e Door.o - 0x00000c20 _ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv + 0x00000d88 0x60 Door.o + 0x00000d88 _ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv .text._ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv - 0x00000c7e 0x5c Door.o - 0x00000c7e _ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv + 0x00000de8 0x5c Door.o + 0x00000de8 _ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv .text.__vector_1 - 0x00000cda 0x170 Door.o - 0x00000cda __vector_1 + 0x00000e44 0x170 Door.o + 0x00000e44 __vector_1 .text._GLOBAL__sub_I_Serial - 0x00000e4a 0x4c Door.o + 0x00000fb4 0x4c Door.o .text.avr-libc.fplib - 0x00000e96 0xa c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3.o) - 0x00000e96 __subsf3 - 0x00000e98 __addsf3 + 0x00001000 0xa c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3.o) + 0x00001000 __subsf3 + 0x00001002 __addsf3 .text.avr-libc.fplib - 0x00000ea0 0xc0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) - 0x00000eba __addsf3x + 0x0000100a 0xc0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) + 0x00001024 __addsf3x .text.avr-libc.fplib - 0x00000f60 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(cmpsf2.o) - 0x00000f60 __nesf2 - 0x00000f60 __eqsf2 - 0x00000f60 __cmpsf2 - 0x00000f60 __ltsf2 - 0x00000f60 __lesf2 + 0x000010ca 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(cmpsf2.o) + 0x000010ca __nesf2 + 0x000010ca __eqsf2 + 0x000010ca __cmpsf2 + 0x000010ca __ltsf2 + 0x000010ca __lesf2 .text.avr-libc.fplib - 0x00000f68 0x58 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fixunssfsi.o) - 0x00000f68 __fixunssfsi + 0x000010d2 0x58 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fixunssfsi.o) + 0x000010d2 __fixunssfsi .text.avr-libc.fplib - 0x00000fc0 0x7a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) - 0x00000fc0 __floatunsisf - 0x00000fc4 __floatsisf + 0x0000112a 0x7a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) + 0x0000112a __floatunsisf + 0x0000112e __floatsisf .text.avr-libc.fplib - 0x0000103a 0x48 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) - 0x0000103a __fp_cmp + 0x000011a4 0x48 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) + 0x000011a4 __fp_cmp .text.avr-libc.fplib - 0x00001082 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_inf.o) - 0x00001082 __fp_inf + 0x000011ec 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_inf.o) + 0x000011ec __fp_inf .text.avr-libc.fplib - 0x0000108e 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) - 0x0000108e __fp_nan + 0x000011f8 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) + 0x000011f8 __fp_nan .text.avr-libc.fplib - 0x00001094 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_pscA.o) - 0x00001094 __fp_pscA + 0x000011fe 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_pscA.o) + 0x000011fe __fp_pscA .text.avr-libc.fplib - 0x000010a2 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_pscB.o) - 0x000010a2 __fp_pscB + 0x0000120c 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_pscB.o) + 0x0000120c __fp_pscB .text.avr-libc.fplib - 0x000010b0 0x22 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_round.o) - 0x000010b0 __fp_round + 0x0000121a 0x22 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_round.o) + 0x0000121a __fp_round .text.avr-libc.fplib - 0x000010d2 0x44 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_split3.o) - 0x000010d2 __fp_split3 - 0x000010e2 __fp_splitA + 0x0000123c 0x44 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_split3.o) + 0x0000123c __fp_split3 + 0x0000124c __fp_splitA .text.avr-libc.fplib - 0x00001116 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) - 0x00001116 __fp_zero - 0x00001118 __fp_szero + 0x00001280 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) + 0x00001280 __fp_zero + 0x00001282 __fp_szero .text.avr-libc.fplib - 0x00001124 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(gesf2.o) - 0x00001124 __gesf2 - 0x00001124 __gtsf2 + 0x0000128e 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(gesf2.o) + 0x0000128e __gesf2 + 0x0000128e __gtsf2 .text.libgcc.div - 0x0000112c 0x28 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_divmodhi4.o) - 0x0000112c _div - 0x0000112c __divmodhi4 + 0x00001296 0x28 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_divmodhi4.o) + 0x00001296 _div + 0x00001296 __divmodhi4 .text.libgcc.mul - 0x00001154 0x18 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_umulhisi3.o) - 0x00001154 __umulhisi3 + 0x000012be 0x18 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_umulhisi3.o) + 0x000012be __umulhisi3 .text.libgcc.div - 0x0000116c 0x28 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) - 0x0000116c __udivmodhi4 - .text.libgcc 0x00001194 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) - 0x00001194 __tablejump2__ - 0x00001198 __tablejump__ - 0x000011a0 . = ALIGN (0x2) + 0x000012d6 0x28 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) + 0x000012d6 __udivmodhi4 + .text.libgcc 0x000012fe 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) + 0x000012fe __tablejump2__ + 0x00001302 __tablejump__ + 0x0000130a . = ALIGN (0x2) *(.fini9) - .fini9 0x000011a0 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) - 0x000011a0 _exit - 0x000011a0 exit + .fini9 0x0000130a 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) + 0x0000130a _exit + 0x0000130a exit *(.fini9) *(.fini8) *(.fini8) @@ -494,11 +494,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .fini0 0x000011a0 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) + .fini0 0x0000130a 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) *(.fini0) - 0x000011a4 _etext = . + 0x0000130e _etext = . -.data 0x00800100 0x84 load address 0x000011a4 +.data 0x00800100 0x84 load address 0x0000130e 0x00800100 PROVIDE (__data_start, .) *(.data) .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm168a.o @@ -536,27 +536,27 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x00800184 _edata = . 0x00800184 PROVIDE (__data_end, .) -.bss 0x00800184 0x32 +.bss 0x00800184 0x37 0x00800184 PROVIDE (__bss_start, .) *(.bss) - .bss 0x00800184 0x32 Door.o + .bss 0x00800184 0x37 Door.o 0x00800184 ir 0x00800186 comp 0x00800187 led 0x00800188 stripe - 0x008001b5 Serial + 0x008001ba Serial *(.bss*) *(COMMON) - 0x008001b6 PROVIDE (__bss_end, .) - 0x000011a4 __data_load_start = LOADADDR (.data) - 0x00001228 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x008001bb PROVIDE (__bss_end, .) + 0x0000130e __data_load_start = LOADADDR (.data) + 0x00001392 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x008001b6 0x0 - 0x008001b6 PROVIDE (__noinit_start, .) +.noinit 0x008001bb 0x0 + 0x008001bb PROVIDE (__noinit_start, .) *(.noinit*) - 0x008001b6 PROVIDE (__noinit_end, .) - 0x008001b6 _end = . - 0x008001b6 PROVIDE (__heap_start, .) + 0x008001bb PROVIDE (__noinit_end, .) + 0x008001bb _end = . + 0x008001bb PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -650,31 +650,31 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x384a +.debug_info 0x00000000 0x3ed2 *(.debug_info) - .debug_info 0x00000000 0x384a Door.o + .debug_info 0x00000000 0x3ed2 Door.o *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x4fd +.debug_abbrev 0x00000000 0x50e *(.debug_abbrev) - .debug_abbrev 0x00000000 0x4fd Door.o + .debug_abbrev 0x00000000 0x50e Door.o -.debug_line 0x00000000 0x5f9 +.debug_line 0x00000000 0x653 *(.debug_line) - .debug_line 0x00000000 0x5f9 Door.o + .debug_line 0x00000000 0x653 Door.o .debug_frame 0x00000000 0x1b8 *(.debug_frame) .debug_frame 0x00000000 0x1b8 Door.o -.debug_str 0x00000000 0x1435 +.debug_str 0x00000000 0x1492 *(.debug_str) - .debug_str 0x00000000 0x1435 Door.o - 0x149d (size before relaxing) + .debug_str 0x00000000 0x1492 Door.o + 0x14fa (size before relaxing) -.debug_loc 0x00000000 0x17a5 +.debug_loc 0x00000000 0x1d30 *(.debug_loc) - .debug_loc 0x00000000 0x17a5 Door.o + .debug_loc 0x00000000 0x1d30 Door.o .debug_macinfo *(.debug_macinfo) @@ -682,9 +682,9 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x340 +.debug_ranges 0x00000000 0x370 *(.debug_ranges) - .debug_ranges 0x00000000 0x340 Door.o + .debug_ranges 0x00000000 0x370 Door.o .debug_macro *(.debug_macro) diff --git a/Door/Debug/Door.srec b/Door/Debug/Door.srec index a9f6e14..694c772 100644 --- a/Door/Debug/Door.srec +++ b/Door/Debug/Door.srec @@ -1,294 +1,316 @@ S00C0000446F6F722E7372656384 -S11300000C9435000C946D060C945D000C945D000A +S11300000C9435000C9422070C945D000C945D0054 S11300100C945D000C945D000C945D000C945D00E8 S11300200C945D000C945D000C945D000C945D00D8 S11300300C945D000C945F000C945D000C945D00C6 S11300400C945D000C945D000C945D000C945D00B8 S11300500C945D000C945D000C945D000C945D00A8 -S11300600C945D000C945D00250711241FBECFEF96 -S1130070D4E0DEBFCDBF11E0A0E0B1E0E4EAF1E1FD +S11300600C945D000C945D00DA0711241FBECFEFE1 +S1130070D4E0DEBFCDBF11E0A0E0B1E0EEE0F3E1FB S113008002C005900D92A438B107D9F721E0A4E885 -S1130090B1E001C01D92A63BB207E1F710E0CAE649 -S11300A0D0E004C02297FE010E94CC08C836D107D4 -S11300B0C9F70E940C030C94D0080C9400001F9202 +S1130090B1E001C01D92AB3BB207E1F710E0CAE644 +S11300A0D0E004C02297FE010E948109C836D1071E +S11300B0C9F70E9421030C9485090C9400001F9237 S11300C00F920FB60F9211242F923F924F925F928C S11300D06F927F928F929F92AF92BF92CF92DF9254 S11300E0EF92FF920F931F932F933F934F935F933E S11300F06F937F938F939F93AF93BF93CF93DF932C -S1130100EF93FF93C0918801CC2309F4F6C120E05A -S113011030E0A90160919D0170919E0180919F0141 -S11301209091A0010E94B0078111F0C020E030E05E -S1130130A9016091A1017091A2018091A301909104 -S1130140A4010E94B0078111E4C020E030E0A901BD -S11301506091A5017091A6018091A7019091A801D9 -S11301600E94B007882329F088248394D4C0B394D0 -S113017011C0BB24B394D0E021970F2EF4EBCF2E03 -S1130180D12CF02D0F2EF8E96F2EF1E07F2EF02DFB -S11301906C0E7D1E1B2D1150E12EF12C9E01F701DA -S11301A0EE0FFF1FEE0FFF1FEE0DFF1DE857FE4F72 -S11301B0EC0FFD1F818190E0113009F120F0123025 -S11301C009F057C039C048B59701220F331F220FD9 -S11301D0331F890108571E4F841B9109F301608165 -S11301E070E00E949608882777FD8095982F0E94DA -S11301F0E207F801658B768B878B908F5DC0F601E3 -S113020040819701220F331F220F331F89010857A2 -S11302101E4F841B9109F301608170E00E949608CF -S1130220882777FD8095982F0E94E207F801658B57 -S1130230768B878B908F42C04091B300E701CC0F3F -S1130240DD1FCC0FDD1FC857DE4F841B9109F90158 -S1130250E857FE4F608970E00E949608882777FD72 -S11302608095982F0E94E2076D8B7E8B8F8B988FE1 -S113027028C09701220F331F220F331F0F2EF8E8D7 -S11302808F2EF1E09F2EF02D820E931EF3016081DC -S113029070E00E949608882777FD8095982F0E9429 -S11302A0E207F401658B768B878B908F113031F0E8 -S11302B018F01230C9F405C068B507C1F6016081B1 -S11302C004C16091B300E701CC0FDD1FCC0FDD1F2B -S11302D0C857DE4F70E080E090E00E94E00769A319 -S11302E07AA38BA39CA309C1F701EE0FFF1FEE0FA6 -S11302F0FF1FE857FE4F11A212A213A214A2F2E0AC -S1130300FB1508F034CFF9C0839410C0882483947B -S113031002C0882483940F2EF8E8AF2EF1E0BF2E9C -S1130320F02D0F2EF4EB2F2E312CF02D982C9A94C7 -S1130330C92DD0E0FE01EE0FFF1FEE0FFF1FE8579F -S1130340FE4FC588D688E788F08C20E030E0A9010C -S1130350C701B6010E94920818164CF58E01000FD1 -S1130360111F000F111FF801E857FE4F21A132A100 -S113037043A154A1C701B6010E944C072B013C01C3 -S1130380F5018081F801EC0FFD1FE80FF11DE8571E -S1130390FE4F608170E080E090E00E94E2079B01E4 -S11303A0AC01C301B2010E94B00718169CF520E00D -S11303B030E0A901C701B6010E94B00788230CF000 -S11303C056C08E01000F111F000F111FF801E857CE -S11303D0FE4F21A132A143A154A1C701B6010E943D -S11303E04C072B013C01F5018081F801EC0FFD1F46 -S11303F0E80FF11DE857FE4F608170E080E090E067 -S11304000E94E2079B01AC01C301B2010E94920861 -S113041088236CF1CC0FDD1FCC0FDD1FC857DE4FD6 -S113042029A13AA14BA15CA1C701B6010E944C07C6 -S1130430262F372F462F572F682F792F49A35AA3DA -S11304406BA37CA3622F732F0E94B407F1E09F1665 -S113045041F09F1620F082E0981232C005C068BDBA -S113046053CFF101608350CF6093B30046C0F501D0 -S11304708081FE01EE0FFF1FEE0FFF1FEC0FFD1F2B -S1130480E80FF11DE857FE4F8081F1E09F1641F01F -S11304909F1620F092E0991209C005C088BD06C0DD -S11304A0F101808303C0E3EBF0E08083CC0FDD1F18 -S11304B0CC0FDD1FC857DE4F1D8A1E8A1F8A188E77 -S11304C0F2E0F81508F020CF18C0C701880F991F73 -S11304D0880F991F0F2EF8E8EF2EF1E0FF2EF02D74 -S11304E0E80EF91E70E080E090E00E94E007F7015A -S11304F061A372A383A394A33ACEFF91EF91DF91FA -S1130500CF91BF91AF919F918F917F916F915F91A7 -S11305104F913F912F911F910F91FF90EF90DF909A -S1130520CF90BF90AF909F908F907F906F905F908F -S11305304F903F902F900F900FBE0F901F901895E3 -S1130540CF93DF93789481E88093C4001092C00025 -S113055088E08093C10086E08093C200A1E0B1E00E -S113056095E5E0ECF0E0C6ECD0E0808185FFFDCFBE -S113057098839D919111F9CFE0ECF0E0808185FFA3 -S1130580FDCF8DE08093C600E0ECF0E0808185FF34 -S1130590FDCF8AE08093C600DF91CF91089560FF7C -S11305A004C08FEF8093B30002C01092B30061FFC8 -S11305B004C08FEF8093B40002C01092B40062FFB5 -S11305C003C08FEF88BD089518BC0895CF93DF93BF -S11305D0FB019081992369F0DB011196E0ECF0E0D6 -S11305E0C6ECD0E0808185FFFDCF98839D91911169 -S11305F0F9CFE0ECF0E0808185FFFDCF8DE08093C2 -S1130600C600E0ECF0E0808185FFFDCF8AE08093B6 -S1130610C600DF91CF910895CF93DF9300D000D02F -S1130620CDB7DEB7789464E088E891E00E94CF0209 -S11306306BE071E085EB91E00E94E6022FE73AE17E -S113064086E0215030408040E1F700C0000062E0C5 -S113065088E891E00E94CF0260E171E085EB91E0CF -S11306600E94E6029FE7AAE1B6E09150A040B040A4 -S1130670E1F700C0000061E088E891E00E94CF0249 -S113068066E171E085EB91E00E94E6022FE73AE132 -S113069086E0215030408040E1F700C0000067E070 -S11306A088E891E00E94CF026CE171E085EB91E073 -S11306B00E94E6029FE7AAE1B6E09150A040B04054 -S11306C0E1F700C00000299A60E088E891E00E9408 -S11306D0CF02212C45E851E0BB24BA94AB2C0F2E59 -S11306E0F9E8EF2EF1E0FF2EF02D0EE811E00F2EC9 -S11306F0F3E98F2EF1E09F2EF02D0F2EF8E96F2EE7 -S1130700F1E07F2EF02D0F2EFAE03F2EF02D0F2E6C -S1130710F8E84F2EF1E05F2EF02DCC24C394E0ECEA -S1130720F0E00F2EFDE0DF2EF02DDA018C91AC927B -S11307308C3009F4FCC038F5853009F4B3C090F46A -S1130740823009F48CC038F4882309F446C081301F -S113075009F056C163C0833009F490C0843009F0B5 -S11307604FC195C0883009F4BEC038F4863009F40E -S1130770A4C0873009F044C1ABC08A3009F4CBC0AF -S113078008F0E5C1BCC0823109F40DC190F48F308A -S113079009F4DDC138F48D3009F4D5C08E3009F088 -S11307A02FC1DDC0803109F4E6C0813109F028C1D0 -S11307B0EEC0853109F40EC138F4833109F4C7C1A0 -S11307C0843109F01DC1FBC0873109F4C0C108F4AC -S11307D00CC18F3F09F014C1BAC188B58B3F20F416 -S11307E088B58B5F88BD01C018BCA4EBB0E08C91C8 -S11307F08B3F20F48C918B5F8C9303C0A4EBB0E00F -S11308001C92A3EBB0E08C918B3F20F48C918B5F16 -S11308108C939DC1A3EBB0E01C9299C188B585303F -S113082020F088B5855088BD01C018BCA4EBB0E0A9 -S11308308C91853020F08C9185508C9303C0A4EB6F -S1130840B0E01C92A3EBB0E08C91853020F08C9149 -S113085085508C937CC1A3EBB0E01C9278C184B525 -S11308608F7D84BDA0EBB0E08C918F758C935D98E7 -S1130870559A5B98539A2B98239A69C184B58062E0 -S113088084BDA0EBB0E08C91806A8C9360C1D701E9 -S1130890BC92D8011C92D4011C92D3013C92D20187 -S11308A0CC9255C1D7011C92D801BC92D4011C92A0 -S11308B0D3013C92D201CC924AC1D7011C92D801F7 -S11308C01C92D401BC92D3013C92D201CC923FC180 -S11308D0D701BC92D801BC92D401BC92D3013C9202 -S11308E0D201CC9234C1D701BC9220E4D8012C931C -S11308F0D4011C92D3013C92D201CC9228C1D701DD -S11309001C92D801BC9220E4D4012C93D3013C92D4 -S1130910D201CC921CC120E4D7012C93D8011C92A3 -S1130920D401BC92D3013C92D201CC9210C1D70124 -S1130930BC9220E8D8012C93D4011C92D3013C92A0 -S1130940D201CC9204C1D7011C92D801BC9220E8F8 -S1130950D4012C93D3013C92D201CC92F8C020E86C -S1130960D7012C93D8011C92D401BC92D3013C92A0 -S1130970D201CC92ECC0D701BC9220ECD8012C93CC -S1130980D4011C92D3013C92D201CC92E0C0D70195 -S11309901C92D801BC9220ECD4012C93D3013C923C -S11309A0D201CC92D4C020ECD7012C93D8011C9254 -S11309B0D401BC92D3013C92D201CC92C8C0D701DD -S11309C0BC92D801BC92D4011C92D3013C92D201B6 -S11309D0CC92BDC0D7011C92D801BC92D401BC9268 -S11309E0D3013C92D201CC92B2C0D701BC92D801BF -S11309F01C92D401BC92D3013C92D201CC92A7C0E8 -S1130A00282F30E03A832983808185FFFDCF80E35E -S1130A10A6ECB0E08C9360E070E0CB0196958795EE -S1130A2096958795969587959C01220F331F880F7D -S1130A30991F880F991F880F991F820F931F681B96 -S1130A40790B605D808185FFFDCFA6ECB0E06C93EF -S1130A5029813A813695279536952795ABE7B4E1F8 -S1130A600E94AA0896958795805D908195FFFDCF99 -S1130A70A6ECB0E08C9329813A81ADECBCEC0E94E9 -S1130A80AA089695879596958795969587959C83BC -S1130A908B839C010E94AA089695879596958795C5 -S1130AA0969587959C01220F331F880F991F880FF5 -S1130AB0991F880F991F820F931F2B813C81281B3C -S1130AC0390BC901805D908195FFFDCFA6ECB0E0A4 -S1130AD08C9329813A81ADECBCEC0E94AA089695CE -S1130AE0879596958795969587959C01220F331F38 -S1130AF0880F991F880F991F880F991F820F931FC2 -S1130B0029813A81281B390BC901805D908195FFA9 -S1130B10FDCFA6ECB0E08C93A3E6B1E090E29D019A -S1130B20808185FFFDCFA6ECB0E09C93D9019D9117 -S1130B309D019111F5CF808185FFFDCFA6ECB0E03A -S1130B40DC92808185FFFDCFA6ECB0E03C9200B63C -S1130B5005FE2AC0211052C0D701BC92D8011C92B4 -S1130B60D4011C9224E6D3012C93D201CC92ADE69D -S1130B70B1E094E59D01808185FFFDCFA6ECB0E056 -S1130B809C93D9019D919D019111F5CF808185FFA1 -S1130B90FDCFA6ECB0E0DC92808185FFFDCFA6EC12 -S1130BA0B0E03C922C2C2AC0B1E02B1227C0A7E75E -S1130BB0B1E094E59D01808185FFFDCFA6ECB0E016 -S1130BC09C93D9019D919D019111F5CF808185FF61 -S1130BD0FDCFA6ECB0E0DC92808185FFFDCFA6ECD2 -S1130BE0B0E03C92D7011C92D801BC92D4011C9273 -S1130BF022E3D3012C93D201CC92212C87E893E1F8 -S1130C000197F1F700C0000029989FEDAAE0B6E033 -S1130C109150A040B040E1F700C00000299A85CD72 -S1130C20559A539A239AFC01108281E084BD94E082 -S1130C3095BD16BC1092800092E0909381001092B2 -S1130C408500109284001092B600E0EBF0E08083FF -S1130C5095E09093B1001092B20010926E008093D0 -S1130C606F001092700084B5806284BD8081806AB8 -S1130C70808318BC1092B4001092B300089520E051 -S1130C8030E080E061E070E04A9BFECFEFE9FFE0F6 -S1130C903197F1F700C000004A9B08C0AB01022E57 -S1130CA002C0440F551F0A94E2F7842B4A990FC0DF -S1130CB008C04A9B06C0F5E8FA95F1F70000915088 -S1130CC0C1F72F5F3F4F28303105F1F6089545E80D -S1130CD04A95F1F7000091E3ECCF1F920F920FB603 -S1130CE00F9211242F933F934F935F936F937F93AE -S1130CF08F939F93AF93BF93CF93EF93FF93289AD0 -S1130D004A9979C08FE19EE40197F1F700C0000091 -S1130D104A9971C04A9BFECF4A99FECF80E090E089 -S1130D2060E041E050E04A9BFECFEFE9FFE03197FD -S1130D30F1F700C000004A9B08C09A01082E02C0C7 -S1130D40220F331F0A94E2F7622B4A9966C008C047 -S1130D504A9B06C0F5E8FA95F1F700002150C1F767 -S1130D60019688309105F9F6611139C080E090E070 -S1130D7041E050E04A9BFECFEFE9FFE03197F1F705 -S1130D8000C000004A9B08C09A01082E02C0220F2E -S1130D90331F0A94E2F7622B4A9939C008C04A9B70 -S1130DA006C0F5E8FA95F1F700002150C1F7019665 -S1130DB088309105F9F66F3E91F484E891E00E9441 -S1130DC03F06C82F84E891E00E943F06282F30E0B8 -S1130DD02C0F311D2F3F310511F4CF3F51F42FE774 -S1130DE034E88EE1215030408040E1F700C000003B -S1130DF00BC0CE3F39F4E7E8F3E13197F1F700C0D7 -S1130E00000002C0C09385012898E09A0CC0F5E860 -S1130E10FA95F1F7000021E3C2CF25E82A95F1F70E -S1130E20000021E395CFFF91EF91CF91BF91AF9156 -S1130E309F918F917F916F915F914F913F912F91EE -S1130E400F900FBE0F901F90189585EB91E00E94B4 -S1130E50A00288E891E00E941006209A219A28981E -S1130E60299856985E9857985F9810BE10927B0008 -S1130E7083E080937F00209A219A28982998529899 -S1130E805A988FEF8093850182E08093690081E016 -S1130E908DBB1CBA08955058BB27AA270ED008C191 -S1130EA0F9D030F0FED020F031F49F3F11F41EF45D -S1130EB0EEC00EF4E095E7FBE4C0E92F0AD180F31D -S1130EC0BA17620773078407950718F071F49EF543 -S1130ED022C10EF4E0950B2EBA2FA02D0B01B901FF -S1130EE090010C01CA01A0011124FF27591B99F09C -S1130EF0593F50F4503E68F11A16F040A22F232FA8 -S1130F00342F4427585FF3CF469537952795A795F7 -S1130F10F0405395C9F77EF41F16BA0B620B730B9E -S1130F20840BBAF09150A1F0FF0FBB1F661F771F0F -S1130F30881FC2F70EC0BA0F621F731F841F48F4C4 -S1130F40879577956795B795F7959E3F08F0B3CF4A -S1130F509395880F08F09927EE0F97958795089534 -S1130F606CD008F481E00895BCD088F09F5790F0CD -S1130F70B92F9927B751A0F0D1F0660F771F881FBA -S1130F80991F1AF0BA95C9F712C0B13081F0C3D0D5 -S1130F90B1E00895C0C0672F782F8827B85F39F073 -S1130FA0B93FCCF3869577956795B395D9F73EF419 -S1130FB090958095709561957F4F8F4F9F4F0895C1 -S1130FC0E89409C097FB3EF49095809570956195DF -S1130FD07F4F8F4F9F4F9923A9F0F92F96E9BB2795 -S1130FE09395F695879577956795B795F111F8CF11 -S1130FF0FAF4BB0F11F460FF1BC06F5F7F4F8F4F7C -S11310009F4F16C0882311F096E911C0772321F071 -S11310109EE8872F762F05C0662371F096E8862F09 -S113102070E060E02AF09A95660F771F881FDAF760 -S1131030880F9695879597F90895990F0008550F8D -S1131040AA0BE0E8FEEF16161706E807F907C0F04A -S113105012161306E407F50798F0621B730B840B52 -S1131060950B39F40A2661F0232B242B252B21F42C -S113107008950A2609F4A140A6958FEF811D811DCC -S1131080089597F99F6780E870E060E008959FEF06 -S113109080EC089500240A9416161706180609060B -S11310A0089500240A9412161306140605060895DA -S11310B0092E0394000C11F4882352F0BB0F40F462 -S11310C0BF2B11F460FF04C06F5F7F4F8F4F9F4FA2 -S11310D0089557FD9058440F551F59F05F3F71F024 -S11310E04795880F97FB991F61F09F3F79F087958B -S11310F00895121613061406551FF2CF4695F1DF14 -S113110008C0161617061806991FF1CF86957105A3 -S1131110610508940895E894BB2766277727CB01D7 -S113112097F908958ADF08F48FEF089597FB072E47 -S113113016F4009407D077FD09D00E94B60807FC86 -S113114005D03EF4909581959F4F089570956195D3 -S11311507F4F0895A29FB001B39FC001A39F01D008 -S1131160B29F700D811D1124911D0895AA1BBB1BF4 -S113117051E107C0AA1FBB1FA617B70710F0A61B93 -S1131180B70B881F991F5A95A9F780959095BC01B4 -S1131190CD010895EE0FFF1F0590F491E02D099401 -S10711A0F894FFCFED -S11311A45561727420646F6E652100526F7421005E -S11311B44772FC6E2100426C61752100576569DF3A -S11311C42C20616C6C657320496E697469616C6967 -S11311D4736572742120486162652046657274697E -S11311E46720756E642064616D6974206162207A7D -S11311F4756D204E6F726D616C626574726965629F -S113120421002050726573736564210054FC7220BC -S11312145A752E2E2E0054FC72204F6666656E2E6F -S10712242E2E000066 +S1130100EF93FF93D0918801DD2309F40BC220E023 +S113011030E0A9016091A1017091A2018091A30135 +S11301209091A4010E9465088111FCC020E030E098 +S1130130A9016091A5017091A6018091A7019091F8 +S1130140A8010E9465088111F0C020E030E0A901F7 +S11301506091A9017091AA018091AB019091AC01C9 +S11301600E9465088111E4C0C091B9012C2F30E0D0 +S11301702F5F3F4F8D2F90E02817390714F4CF5F7E +S113018001C0C0E0C093B901BB24B394D0E00F2EEA +S1130190F4EBCF2ED12CF02D0F2EFBE96F2EF1E0D6 +S11301A07F2EF02D6C0E7D1E01C0B3941B2D1150BB +S11301B0E12EF12C9E01F701EE0FFF1FEE0DFF1D46 +S11301C0EE0FFF1FE857FE4FEC0FFD1F818190E0FB +S11301D0113009F120F0123009F057C039C048B588 +S11301E09701220F331F220F331F890108571E4F17 +S11301F0841B9109F301608170E00E944B098827F8 +S113020077FD8095982F0E949708F801618F728F6F +S1130210838F948F5DC0F60140819701220F331FB5 +S1130220220F331F890108571E4F841B9109F301C4 +S1130230608170E00E944B09882777FD8095982F94 +S11302400E949708F801618F728F838F948F42C048 +S11302504091B300E701CC0FDD1FCC0FDD1FC85761 +S1130260DE4F841B9109F901E857FE4F638970E062 +S11302700E944B09882777FD8095982F0E94970844 +S1130280698F7A8F8B8F9C8F28C09701220F331F21 +S1130290220F331F0F2EF8E88F2EF1E09F2EF02D42 +S11302A0820E931EF301608170E00E944B0988273F +S11302B077FD8095982F0E949708F401618F728FC3 +S11302C0838F948F113031F018F01230C9F405C0C7 +S11302D068B510C1F60160810DC16091B300E701FA +S11302E0CC0FDD1FCC0FDD1FC857DE4F70E080E060 +S11302F090E00E9495086DA37EA38FA398A712C1D6 +S1130300F701EE0FFF1FEE0FFF1FE857FE4F15A278 +S113031016A217A210A6F2E0FB1508F046CF02C100 +S1130320839414C08824839405C08824839402C0D1 +S11303308824839409EB11E00F2EF4EBAF2EB12C3B +S1130340F02D0F2EF3EB2F2E312CF02D982C9A94A8 +S1130350C92DD0E0FE01EE0FFF1FEE0FFF1FE8577F +S1130360FE4FC18CD28CE38CF48C20E030E0A901E8 +S1130370C701B6010E944709181664F5FE01EE0F85 +S1130380FF1FEE0FFF1FE857FE4F25A136A147A11F +S113039050A5C701B6010E9401082B013C01F801D8 +S11303A08081FE01EE0FFF1FEC0FFD1FEE0FFF1FFC +S11303B0E857FE4FE80FF11D618170E080E090E0A6 +S11303C00E9497089B01AC01C301B2010E94650819 +S11303D01816B4F520E030E0A901C701B6010E9467 +S11303E0650888230CF059C0FE01EE0FFF1FEE0FC5 +S11303F0FF1FE857FE4F25A136A147A150A5C7010D +S1130400B6010E9401082B013C01F8018081FE0124 +S1130410EE0FFF1FEC0FFD1FEE0FFF1FE857FE4FFF +S1130420E80FF11D618170E080E090E00E94970880 +S11304309B01AC01C301B2010E94470988236CF1FE +S1130440CC0FDD1FCC0FDD1FC857DE4F2DA13EA101 +S11304504FA158A5C701B6010E940108262F372FC6 +S1130460462F572F682F792F4DA35EA36FA378A72C +S1130470622F732F0E946908F1E09F1641F09F16C6 +S113048020F082E0981231C005C068BD49CFF50163 +S1130490608346CF6093B30045C0F8018081FE01BC +S11304A0EE0FFF1FEC0FFD1FEE0FFF1FE857FE4F6F +S11304B0E80FF11D8181F1E09F1641F09F1620F0B5 +S11304C092E0991208C005C088BD05C0F50180837B +S11304D002C0F1018083CC0FDD1FCC0FDD1FC85794 +S11304E0DE4F198E1A8E1B8E1C8EF2E0F81508F062 +S11304F017CF18C0C701880F991F880F991F0F2E97 +S1130500F8E8EF2EF1E0FF2EF02DE80EF91E70E072 +S113051080E090E00E949508F70165A376A387A385 +S113052090A743CEFF91EF91DF91CF91BF91AF910F +S11305309F918F917F916F915F914F913F912F91F7 +S11305401F910F91FF90EF90DF90CF90BF90AF90ED +S11305509F908F907F906F905F904F903F902F90DF +S11305600F900FBE0F901F901895CF93DF93789440 +S113057081E88093C4001092C00088E08093C10099 +S113058086E08093C200A1E0B1E095E5E0ECF0E004 +S1130590C6ECD0E0808185FFFDCF98839D919111B9 +S11305A0F9CFE0ECF0E0808185FFFDCF8DE0809312 +S11305B0C600E0ECF0E0808185FFFDCF8AE0809307 +S11305C0C600DF91CF91089560FF04C08FEF809340 +S11305D0B30002C01092B30061FF04C08FEF809398 +S11305E0B40002C01092B40062FF03C08FEF88BD54 +S11305F0089518BC0895CF93DF93FB01908199234C +S113060069F0DB011196E0ECF0E0C6ECD0E080810B +S113061085FFFDCF98839D919111F9CFE0ECF0E037 +S1130620808185FFFDCF8DE08093C600E0ECF0E093 +S1130630808185FFFDCF8AE08093C600DF91CF9152 +S11306400895CF93DF9300D000D01F92CDB7DEB7CB +S1130650789464E088E891E00E94E4026BE071E041 +S11306608AEB91E00E94FB022FE73AE186E02150F9 +S113067030408040E1F700C0000062E088E891E08B +S11306800E94E40260E171E08AEB91E00E94FB02C7 +S11306909FE7AAE1B6E09150A040B040E1F700C066 +S11306A0000061E088E891E00E94E40266E171E004 +S11306B08AEB91E00E94FB022FE73AE186E02150A9 +S11306C030408040E1F700C0000067E088E891E036 +S11306D00E94E4026CE171E08AEB91E00E94FB026B +S11306E09FE7AAE1B6E09150A040B040E1F700C016 +S11306F00000299A60E088E891E00E94E402312C2D +S113070045E851E01FEF0F2EF9E8EF2EF1E0FF2E40 +S1130710F02D0F2EF5E98F2EF1E09F2EF02D0F2EE8 +S1130720FBE96F2EF1E07F2EF02D0F2EFAE02F2E35 +S1130730F02D0F2EF8E84F2EF1E05F2EF02DAA24B5 +S1130740A3940F2EF9EBCF2EF1E0DF2EF02DE0EC89 +S1130750F0E00F2EFDE0BF2EF02D3982012FDA01DB +S11307608C910C938C3009F4F9C038F5853009F478 +S113077082C090F4823009F458C038F4882309F414 +S113078046C0813009F0EAC149C0833009F45CC035 +S1130790843009F0E3C161C0883009F496C038F4AC +S11307A0863009F476C0873009F0D8C180C08A3019 +S11307B009F4A9C008F0B6C097C0823109F43AC15F +S11307C090F48F3009F4F7C038F48D3009F4D5C0B3 +S11307D08E3009F0C3C1E0C0803109F40DC181310C +S11307E009F0BCC118C1853109F47CC138F48331E6 +S11307F009F42FC1843109F0B1C166C1873109F40C +S11308008DC108F47DC18F3F09F0A8C14EC2B981E2 +S1130810BF3F09F44AC2BF5FB98347C2298122237B +S113082009F443C22150298340C284B58F7D84BD1D +S1130830A0EBB0E08C918F758C935D98559A5B9882 +S1130840539A2B98239A31C284B5806284BDA0EB5D +S1130850B0E08C91806A8C9328C2D7011C93AFE8D6 +S1130860B1E01C92D4011C92D3012C92D201AC921F +S1130870D6011C921AC2D7011C92AFE8B1E01C93B6 +S1130880D4011C92D3012C92D201AC92D6011C92B9 +S11308900CC2D7011C92AFE8B1E01C92D4011C93A6 +S11308A0D3012C92D201AC92D6011C92FEC1D70185 +S11308B01C93AFE8B1E01C93D4011C93D3012C9298 +S11308C0D201AC92D6011C92F0C1D7011C9380E4F2 +S11308D0AFE8B1E08C93D4011C92D3012C92D201E5 +S11308E0AC92D6011C92E1C1D7011C92AFE8B1E0F1 +S11308F01C9380E4D4018C93D3012C92D201AC924A +S1130900D6011C92D2C180E4D7018C93AFE8B1E048 +S11309101C92D4011C93D3012C92D201AC92D60127 +S11309201C92C3C1D7011C93AFE8B1E01C93D4015E +S11309301C932981D3012C93AAE8B1E01C92A0E96D +S1130940B1E01C92A6E9B1E01C92ACE9B1E02C93B1 +S113095082E0D2018C93D6011C92A7C1D7011C93CB +S113096020E8AFE8B1E02C93D4011C92D3012C927F +S1130970D201AC92D6011C9298C1D7011C92AFE867 +S1130980B1E01C9320E8D4012C93D3012C92D20122 +S1130990AC92D6011C9289C120E8D7012C93AFE810 +S11309A0B1E01C92D4011C93D3012C92D201AC92DD +S11309B0D6011C927AC18091B3009091B40028B5FD +S11309C0D7012C93AFE8B1E09C93D4018C93298197 +S11309D0D3012C93AAE8B1E01C92A0E9B1E01C92E7 +S11309E0A6E9B1E01C92ACE9B1E02C9382E0D2011B +S11309F08C93D6011C9259C1D7011C9320ECAFE80B +S1130A00B1E02C93D4011C92D3012C92D201AC926C +S1130A10D6011C924AC1D7011C92AFE8B1E01C93E5 +S1130A2020ECD4012C93D3012C92D201AC92D601A8 +S1130A301C923BC120ECD7012C93AFE8B1E01C928F +S1130A40D4011C93D3012C92D201AC92D6011C92F6 +S1130A502CC1D7011C93AFE8B1E01C92D4011C92C5 +S1130A60D3011C93AAE8B1E01C93A0E9B1E01C9364 +S1130A70A6E9B1E01C92ACE9B1E01C9310928B01A1 +S1130A80109391011092970110939D0110928C0183 +S1130A90109392011093980110939E0110928D016E +S1130AA0109293011093990110939F0110938E015A +S1130AB01092940110939A011093A00186E0D20140 +S1130AC08C93D6011C92F1C0D7011C93AFE8B1E01E +S1130AD01C93D4011C92D3012C92D201AC92D60166 +S1130AE01C92E3C0D7011C92AFE8B1E01C93D4017F +S1130AF01C93D3012C92D201AC92D6011C92D5C086 +S1130B00D7011C93AFE8B1E01C92D4011C93D3012C +S1130B102C92D201AC92D6011C92C7C0D7011C9270 +S1130B20AFE8B1E01C9320E1D4012C9329E1D30177 +S1130B302C93AAE8B1E01C922AEAA0E9B1E02C9334 +S1130B4020E1A6E9B1E02C938FE0ACE9B1E08C930D +S1130B5082E0D2018C93D6011C92A7C0282F30E0EA +S1130B603B832A83808185FFFDCF80E3A6ECB0E040 +S1130B708C9360E070E0CB01969587959695879568 +S1130B80969587959C01220F331F880F991F880F14 +S1130B90991F880F991F820F931F681B790B605D43 +S1130BA0808185FFFDCFA6ECB0E06C932A813B8168 +S1130BB03695279536952795ABE7B4E10E945F09F2 +S1130BC096958795805D908195FFFDCFA6ECB0E06A +S1130BD08C932A813B81ADECBCEC0E945F09969515 +S1130BE0879596958795969587959D838C839C018B +S1130BF00E945F0996958795969587959695879512 +S1130C009C01220F331F880F991F880F991F880F8B +S1130C10991F820F931F2C813D81281B390BC90119 +S1130C20805D908195FFFDCFA6ECB0E08C932A8186 +S1130C303B81ADECBCEC0E945F0996958795969537 +S1130C408795969587959C01220F331F880F991FCE +S1130C50880F991F880F991F820F931F2A813B8148 +S1130C60281B390BC901805D908195FFFDCFA6EC4F +S1130C70B0E08C93A3E6B1E090E29D01808185FF12 +S1130C80FDCFA6ECB0E09C93D9019D919D019111FB +S1130C90F5CF808185FFFDCFA6ECB0E0BC928081CA +S1130CA085FFFDCFA6ECB0E02C9200B605FE2DC06A +S1130CB0311058C0D7011C93AFE8B1E01C92D401A5 +S1130CC01C9284E6D3018C93D201AC92D6011C927F +S1130CD0ADE6B1E094E59D01808185FFFDCFA6ECF2 +S1130CE0B0E09C93D9019D919D019111F5CF808134 +S1130CF085FFFDCFA6ECB0E0BC92808185FFFDCFDF +S1130D00A6ECB0E02C923A2C2DC0B1E03B122AC0E4 +S1130D10A7E7B1E094E59D01808185FFFDCFA6ECB6 +S1130D20B0E09C93D9019D919D019111F5CF8081F3 +S1130D3085FFFDCFA6ECB0E0BC92808185FFFDCF9E +S1130D40A6ECB0E02C92D7011C92AFE8B1E01C9362 +S1130D50D4011C9282E3D3018C93D201AC92D601CC +S1130D601C92312C87E893E10197F1F700C0000051 +S1130D7029989FEDAAE0B6E09150A040B040E1F779 +S1130D8000C00000299AEBCC559A539A239AFC018F +S1130D90108211AA81E084BD94E095BD16BC109226 +S1130DA0800092E09093810010928500109284005C +S1130DB01092B600E0EBF0E0808395E09093B100F0 +S1130DC01092B20010926E0080936F001092700027 +S1130DD084B5806284BD8081806A808318BC10924F +S1130DE0B4001092B300089520E030E080E061E0A8 +S1130DF070E04A9BFECFEFE9FFE03197F1F700C0C6 +S1130E0000004A9B08C0AB01022E02C0440F551FCC +S1130E100A94E2F7842B4A990FC008C04A9B06C083 +S1130E20F5E8FA95F1F700009150C1F72F5F3F4FB5 +S1130E3028303105F1F6089545E84A95F1F70000A8 +S1130E4091E3ECCF1F920F920FB60F9211242F93C0 +S1130E503F934F935F936F937F938F939F93AF933E +S1130E60BF93CF93EF93FF93289A4A9979C08FE168 +S1130E709EE40197F1F700C000004A9971C04A9BB3 +S1130E80FECF4A99FECF80E090E060E041E050E080 +S1130E904A9BFECFEFE9FFE03197F1F700C0000075 +S1130EA04A9B08C09A01082E02C0220F331F0A94DD +S1130EB0E2F7622B4A9966C008C04A9B06C0F5E86F +S1130EC0FA95F1F700002150C1F701968830910599 +S1130ED0F9F6611139C080E090E041E050E04A9BAE +S1130EE0FECFEFE9FFE03197F1F700C000004A9B25 +S1130EF008C09A01082E02C0220F331F0A94E2F799 +S1130F00622B4A9939C008C04A9B06C0F5E8FA9595 +S1130F10F1F700002150C1F7019688309105F9F6E8 +S1130F206F3E91F484E891E00E94F406C82F84E8AF +S1130F3091E00E94F406282F30E02C0F311D2F3F42 +S1130F40310511F4CF3F51F42FE734E88EE12150FD +S1130F5030408040E1F700C000000BC0CE3F39F4C0 +S1130F60E7E8F3E13197F1F700C0000002C0C09355 +S1130F7085012898E09A0CC0F5E8FA95F1F700008D +S1130F8021E3C2CF25E82A95F1F7000021E395CFAC +S1130F90FF91EF91CF91BF91AF919F918F917F91ED +S1130FA06F915F914F913F912F910F900FBE0F90D2 +S1130FB01F9018958AEB91E00E94B50288E891E0B1 +S1130FC00E94C406209A219A2898299856985E98D7 +S1130FD057985F9810BE10927B0083E080937F0047 +S1130FE0209A219A2898299852985A988FEF80939A +S1130FF0850182E08093690081E08DBB1CBA08956D +S11310005058BB27AA270ED008C1F9D030F0FED023 +S113101020F031F49F3F11F41EF4EEC00EF4E0957D +S1131020E7FBE4C0E92F0AD180F3BA17620773071C +S11310308407950718F071F49EF522C10EF4E0952B +S11310400B2EBA2FA02D0B01B90190010C01CA017E +S1131050A0011124FF27591B99F0593F50F4503E29 +S113106068F11A16F040A22F232F342F4427585F1B +S1131070F3CF469537952795A795F0405395C9F733 +S11310807EF41F16BA0B620B730B840BBAF09150EB +S1131090A1F0FF0FBB1F661F771F881FC2F70EC08A +S11310A0BA0F621F731F841F48F48795779567955D +S11310B0B795F7959E3F08F0B3CF9395880F08F046 +S11310C09927EE0F9795879508956CD008F481E0E1 +S11310D00895BCD088F09F5790F0B92F9927B75145 +S11310E0A0F0D1F0660F771F881F991F1AF0BA95E8 +S11310F0C9F712C0B13081F0C3D0B1E00895C0C0C7 +S1131100672F782F8827B85F39F0B93FCCF38695DD +S113111077956795B395D9F73EF49095809570953A +S113112061957F4F8F4F9F4F0895E89409C097FBB7 +S11311303EF490958095709561957F4F8F4F9F4FAA +S11311409923A9F0F92F96E9BB279395F6958795EE +S113115077956795B795F111F8CFFAF4BB0F11F4B1 +S113116060FF1BC06F5F7F4F8F4F9F4F16C0882358 +S113117011F096E911C0772321F09EE8872F762F8E +S113118005C0662371F096E8862F70E060E02AF0CF +S11311909A95660F771F881FDAF7880F96958795BB +S11311A097F90895990F0008550FAA0BE0E8FEEF90 +S11311B016161706E807F907C0F012161306E40717 +S11311C0F50798F0621B730B840B950B39F40A2610 +S11311D061F0232B242B252B21F408950A2609F4EE +S11311E0A140A6958FEF811D811D089597F99F67F2 +S11311F080E870E060E008959FEF80EC089500249B +S11312000A941616170618060906089500240A9467 +S113121012161306140605060895092E0394000CED +S113122011F4882352F0BB0F40F4BF2B11F460FF7C +S113123004C06F5F7F4F8F4F9F4F089557FD9058A5 +S1131240440F551F59F05F3F71F04795880F97FB86 +S1131250991F61F09F3F79F0879508951216130640 +S11312601406551FF2CF4695F1DF08C0161617066F +S11312701806991FF1CF86957105610508940895A4 +S1131280E894BB2766277727CB0197F908958ADF6F +S113129008F48FEF089597FB072E16F4009407D0F7 +S11312A077FD09D00E946B0907FC05D03EF49095A8 +S11312B081959F4F0895709561957F4F0895A29FE2 +S11312C0B001B39FC001A39F01D0B29F700D811DD7 +S11312D01124911D0895AA1BBB1B51E107C0AA1F2D +S11312E0BB1FA617B70710F0A61BB70B881F991FC3 +S11312F05A95A9F780959095BC01CD010895EE0FFC +S1111300FF1F0590F491E02D0994F894FFCF9F +S113130E5561727420646F6E652100526F742100F2 +S113131E4772FC6E2100426C61752100576569DFCE +S113132E2C20616C6C657320496E697469616C69FB +S113133E7365727421204861626520466572746912 +S113134E6720756E642064616D6974206162207A11 +S113135E756D204E6F726D616C6265747269656233 +S113136E21002050726573736564210054FC722051 +S113137E5A752E2E2E0054FC72204F6666656E2E04 +S107138E2E2E0000FB S9030000FC diff --git a/Door/Door.cpp b/Door/Door.cpp index d159587..36125b8 100644 --- a/Door/Door.cpp +++ b/Door/Door.cpp @@ -14,6 +14,8 @@ ledclass led; compclass comp; irclass ir; +const static uint8_t remotetimer = 10; + int main(void) { sei(); @@ -32,15 +34,14 @@ int main(void) _delay_ms(100); led.green(1); stripe.setcolor(stripe.BLACK); - - uint8_t remotetimer = 10; + uint8_t annoing_speed = 0; while(1) { uint8_t c = ir.getCode(); switch(c) { case 255: break; //Kein Code empfangen - case 0: stripe.higher(); break; //Button High - case 1: stripe.lower(); break; //Button Low + case 0: if(annoing_speed<255) annoing_speed++; break; //Button High + case 1: if(annoing_speed>0) annoing_speed--; break; //Button Low case 2: stripe.off(); break; //Button OFF case 3: stripe.on(); break; //Button ON case 4: stripe.fadeto(0xFF,0x00,0x00,remotetimer); break; //Button R @@ -50,19 +51,39 @@ int main(void) case 8: stripe.fadeto(0xFF,0x40,0x00,remotetimer); break; //Color Red 100 % + Green 25 % case 9: stripe.fadeto(0x00,0xFF,0x40,remotetimer); break; //Color Green 100 % + Blue 25 % case 10: stripe.fadeto(0x40,0x00,0xFF,remotetimer); break; //Color Blue 100 % + Red 25 % - case 11: break; //Button Flash + case 11: //Button Flash + stripe.setfadecolor(0, 0xFF, 0xFF, 0xFF, annoing_speed); //We use the Last Color for that. + stripe.setfadecolor(1, 0x00, 0x00, 0x00, annoing_speed); + stripe.fade(2); + break; //Button FlashEND case 12: stripe.fadeto(0xFF,0x80,0x00,remotetimer); break; //Color Red 100 % + Green 50 % case 13: stripe.fadeto(0x00,0xFF,0x80,remotetimer); break; //Color Green 100 % + Blue 50 % case 14: stripe.fadeto(0x80,0x00,0xFF,remotetimer); break; //Color Blue 100 % + Red 50 % - case 15: break; //Button STROBE + case 15: //Button STROBE + stripe.setfadecolor(0, stripe.gp(0), stripe.gp(1), stripe.gp(2), annoing_speed); //We use the Last Color for that. + stripe.setfadecolor(1, 0x00, 0x00, 0x00, annoing_speed); + stripe.fade(2); + break; //Button STROBE case 16: stripe.fadeto(0xFF,0xC0,0x00,remotetimer); break; //Color Red 100 % + Green 75 % case 17: stripe.fadeto(0x00,0xFF,0xC0,remotetimer); break; //Color Green 100 % + Blue 75 % case 18: stripe.fadeto(0xC0,0x00,0xFF,remotetimer); break; //Color Blue 100 % + Red 75 % - case 19: break; //Button FADE + case 19: + stripe.setfadecolor(0, 0xFF, 0x00, 0x00, 255); + stripe.setfadecolor(1, 0xFF, 0xFF, 0x00, 255); + stripe.setfadecolor(2, 0x00, 0xFF, 0x00, 255); + stripe.setfadecolor(3, 0x00, 0xFF, 0xFF, 255); + stripe.setfadecolor(4, 0x00, 0x00, 0xFF, 255); + stripe.setfadecolor(5, 0xFF, 0x00, 0xFF, 255); + stripe.fade(6); + break; //Button FADE case 20: stripe.fadeto(0xFF,0xFF,0x00,remotetimer); break; //Color Red 100 % + Green 100 % case 21: stripe.fadeto(0x00,0xFF,0xFF,remotetimer); break; //Color Green 100 % + Blue 100 % case 22: stripe.fadeto(0xFF,0x00,0xFF,remotetimer); break; //Color Blue 100 % + Red 100 % - case 23: break; //Button SMOOTH + case 23: + stripe.setfadecolor(0, 0x00, 0xFF, 0x10, 25); + stripe.setfadecolor(1, 0x00, 0xAA, 0x10, 15); + stripe.fade(2); + break; //Button SMOOTH default: Serial.printDec(c); Serial.println(" Pressed!"); break; //Code den ich nicht kenne } if(comp.is_active()) { diff --git a/Door/io/Stripe.hpp b/Door/io/Stripe.hpp index cbebaee..72a0076 100644 --- a/Door/io/Stripe.hpp +++ b/Door/io/Stripe.hpp @@ -79,7 +79,16 @@ class Stripe { } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; + this->fade(1); + } + void fade(uint8_t num) { + if(num <= max_map_size && num >= 0) { + this->fade_zylk = num; + } + else { + this->fade_zylk = 0; + } + this->_l = 0; } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; @@ -87,57 +96,48 @@ class Stripe { this->fademap[2][index] = blue; this->fademap[3][index] = time; } + uint8_t gp(uint8_t i) { + switch(i) { + case 0: return OCR0B; //ROT + case 1: return OCR2B; //GRÜN + case 2: return OCR2A; //BLAU + } + return 0; + } void interrupt() { if(this->fade_zylk > 0) { if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { + this->_l = (this->_l + 1 < this->fade_zylk) ? this->_l + 1 : 0; for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue - this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1]; + this->fadesteps[i] = (this->fademap[i][this->_l]-this->gp(i))/this->fademap[3][this->_l]; this->virtualcolor[i] = this->gp(i); } - /*this->fadesteps[0] = (this->fademap[0][this->fade_zylk-1]-this->gp(0))/this->fademap[3][this->fade_zylk-1]; //Calc Red; - this->fadesteps[1] = (this->fademap[1][this->fade_zylk-1]-OCR2B)/this->fademap[3][this->fade_zylk-1]; //Calc Green; - this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue;*/ } else { for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue - if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->fade_zylk-1]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->fade_zylk-1])) { + if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->_l]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->_l])) { this->virtualcolor[i] = this->virtualcolor[i] + this->fadesteps[i]; this->sp(i, this->virtualcolor[i]); } else { - this->sp(i, this->fademap[i][this->fade_zylk-1]); + this->sp(i, this->fademap[i][this->_l]); this->fadesteps[i] = 0; } } - /*if((this->fadesteps[0] > 0 && (OCR0B + this->fadesteps[0]) <= this->fademap[0][this->fade_zylk-1]) || (this->fadesteps[0] < 0 && (OCR0B + this->fadesteps[0]) >= this->fademap[0][this->fade_zylk-1])) { - OCR0B = OCR0B + this->fadesteps[0]; - } else { - OCR0B = this->fademap[0][this->fade_zylk-1]; - this->fadesteps[0] = 0; - } - if((this->fadesteps[1] > 0 && (OCR2B + this->fadesteps[1]) <= this->fademap[1][this->fade_zylk-1]) || (this->fadesteps[1] < 0 && (OCR2B + this->fadesteps[1]) >= this->fademap[1][this->fade_zylk-1])) { - OCR2B = OCR2B + this->fadesteps[1]; - } else { - OCR2B = this->fademap[1][this->fade_zylk-1]; - this->fadesteps[1] = 0; - } - if((this->fadesteps[2] > 0 && (OCR2A + this->fadesteps[2]) <= this->fademap[2][this->fade_zylk-1]) || (this->fadesteps[2] < 0 && (OCR2A + this->fadesteps[2]) >= this->fademap[2][this->fade_zylk-1])) { - OCR2A = OCR2A + this->fadesteps[2]; - } else { - OCR2A = this->fademap[2][this->fade_zylk-1]; - this->fadesteps[2] = 0; - }*/ - } + } } } private: + static const uint8_t max_map_size = 6; uint8_t fade_zylk; - uint8_t fademap[4][5]; + uint8_t fademap[4][max_map_size]; float fadesteps[3]; float virtualcolor[3]; + uint8_t _l; void init() { stripered::make_output(); stripegreen::make_output(); stripeblue::make_output(); this->fade_zylk = 0; + this->_l = 0; this->initTimer(); this->color(0, 0, 0); } @@ -148,14 +148,6 @@ class Stripe { case 2: OCR2A = c; break; //BLAU } } - uint8_t gp(uint8_t i) { - switch(i) { - case 0: return OCR0B; //ROT - case 1: return OCR2B; //GRÜN - case 2: return OCR2A; //BLAU - } - return 0; - } void timerOff() { // OC0B output: Disconnected // OC2A output: Disconnected