/BL-Ctrl_2.0/V0.30/BL-Ctrl_MEGA168_V0_30a.hex |
---|
0,0 → 1,795 |
:100000000C9453010C9499010C9499010C9499014E |
:100010000C9499010C9499010C9499010C949901F8 |
:100020000C9499010C9496140C94F9110C94990168 |
:100030000C9499010C949A110C9499010C949901C7 |
:100040000C94600F0C9499010C94B00B0C949901D2 |
:100050000C9499010C9499010C9499010C94A0149E |
:100060000C94ED120C949901D213E91301140414A9 |
:100070000F14161419145A141C141E14DC13E9134B |
:100080000114041407145A143F144214451448145C |
:100090004B144E14511454145714611461145A140F |
:1000A000611461145D1443757272656E74202020B2 |
:1000B0005B302E31415D43757272656E74526177AB |
:1000C0002020202020206D41682020202020205B3F |
:1000D00031306D41685D54656D702E202020205BAD |
:1000E000302E31B0435D566F6C74616765202020FF |
:1000F0005B302E31565D72706D2028726177292039 |
:10010000202020202020536574706F696E74202099 |
:100110002020202020204D6178536574706F696E17 |
:1001200074202020202050504D536574706F696EEC |
:10013000742020202020506172616D2E50776D5305 |
:1001400063616C696E67506172616D2E4D617843B9 |
:10015000757272656E74506172616D2E4D61785466 |
:10016000656D702E2020506172616D2E5363616C3D |
:10017000652049202020506172616D2E42697473A0 |
:10018000202020202020506172616D2E53746172F6 |
:100190007450574D2020493243204C6F73742020F7 |
:1001A00020202020202044656275673136202020E1 |
:1001B00020202020202044656275673137202020D0 |
:1001C00020202020202044656275673138202020BF |
:1001D00020202020202044656275673139202020AE |
:1001E00020202020202044656275673230202020A6 |
:1001F0002020202020204465627567323120202095 |
:100200002020202020204465627567323220202083 |
:100210002020202020204465627567323320202072 |
:100220002020202020204465627567323420202061 |
:100230002020202020204465627567323520202050 |
:10024000202020202020446562756732362020203F |
:10025000202020202020446562756732372020202E |
:10026000202020202020446562756732382020201D |
:10027000202020202020446562756732392020200C |
:100280002020202020204861726477617265202040 |
:100290002020202020204C696D69742049202020D6 |
:1002A00020202020202011241FBECFEFD4E0DEBF6D |
:1002B000CDBF11E0A0E0B1E0EEE6F1E302C00590B1 |
:1002C0000D92AC32B107D9F712E0ACE2B1E001C057 |
:1002D0001D92A838B107E1F74AEA20EF37E3A9E712 |
:1002E000B1E09FE0F9012F5F3F4F84918D939150D2 |
:1002F00097FFF8CFE9E7F1E09EE08191482740952C |
:10030000915097FFFACF80918801481711F00000B3 |
:10031000FECF8091800180932C0180918101809398 |
:100320000C0180918201809309010E9462070C9464 |
:10033000B6180C940000CF938AE00E94A30A81E4CF |
:100340000E94A30A84E40E94A30A82E50E94A30AF1 |
:100350008AE30E94A30AC09103018C2F805D8A3337 |
:1003600028F081E30E94A30A8C2F8A5D0E94A30AD1 |
:100370008DE00E94A30A8AE00E94A30ACF9108950B |
:1003800020914A0130914B01809183026AE0869F5F |
:10039000C0011124409148015091490184179507EB |
:1003A00090F4579880910901869FC0011124C2964C |
:1003B0008417950740F410928900109288008BB141 |
:1003C000877C8BB902C037FF02C020E030E080910B |
:1003D00034018F3F61F0992763E0880F991F6A9578 |
:1003E000E1F7805B9F4F821793070CF49C0187E035 |
:1003F0002C3F380714F02BEF37E0C90137FD039687 |
:10040000959587959595879590932E0180932D01CD |
:10041000880F991F880F991F281B390B20932F01D4 |
:100420000895CF93DF9380910E0190910F019C016D |
:1004300043E0220F331F4A95E1F7280F391F280F99 |
:10044000391F81E2233038071CF0E0E0F0E033C0D0 |
:1004500089E1213F38074CF0C90166E070E00E9455 |
:100460004A18CB01E8E7F5E024C080E1233C3807D7 |
:100470005CF0C90137FD0796C3E095958795CA954D |
:10048000E1F7EAE6F4E015C089E0293838074CF0D6 |
:10049000C90166E070E00E944A18CB01EEE1F5E088 |
:1004A00008C0C90163E070E00E944A18CB01EBEB81 |
:1004B000F6E0E81BF90BCF016AE070E00E944A18F1 |
:1004C00060930D01F093CF01E093CE01683708F0FF |
:1004D00040C0C0910A01D0910B01CE9FB001CF9FC7 |
:1004E000700DDE9F700D112477FF02C061507F4FA9 |
:1004F000272F332727FD3A95CE01A3E0880F991FB8 |
:10050000AA95E1F78C0F9D1F8C0F9D1F67E070E08F |
:100510000E944A18261B370B809144019091450197 |
:1005200073E0969587957A95E1F7820F931F6AE0BD |
:1005300070E00E944A189B01CE0163E070E00E94C7 |
:100540004A18621773070CF49B0180910A01821B01 |
:1005500002C080910A0180930C01909184028AE08C |
:10056000989FC00111249F01281B390B12161306F6 |
:100570007CF4220F331FEFEFF0E0E21BF30BE230CD |
:10058000F10514F4E1E0F0E0E0930101579803C0B5 |
:100590008FEF8093010180910A0190910B0190935C |
:1005A000050280930402DF91CF9108958091440168 |
:1005B000909145019093C9018093C80180914801B1 |
:1005C000909149019093CB018093CA01809142019F |
:1005D00090914301892F99279093CD018093CC016D |
:1005E00080911001909111019093D1018093D001DD |
:1005F00080914001909141019093D3018093D20169 |
:1006000080914A0190914B019093D5018093D40140 |
:100610008091010199279093D7018093D601809111 |
:100620006301909164019093D9018093D8018091E6 |
:10063000820299279093DB018093DA0180918302F3 |
:1006400099279093DD018093DC01809184029927A2 |
:100650009093DF018093DE0180918502992790932A |
:10066000E1018093E0018091860299279093E30154 |
:100670008093E2018E709070959587959093E50137 |
:100680008093E40180910001992790930702809361 |
:1006900006020895F8948091390190913A012091D1 |
:1006A0007101309172017894892B09F041C0409119 |
:1006B0003701509138014115510589F080914E0163 |
:1006C000682F7727B3E0660F771FBA95E1F710928E |
:1006D000020180916F008F7D80936F0020C0809118 |
:1006E00060018531F0F081E0809302012091630187 |
:1006F000309164018BE0293B380708F09A0187E0CC |
:100700002C3F380710F02BEF37E02135310530F45E |
:1007100080913401882311F4BA0101C0B901579ABC |
:1007200002C05798BA01109272011092710118C05C |
:10073000B901809134018A3028F4285F374010F0E5 |
:1007400060E070E0579A10924E011092640110928E |
:1007500063011092020180916F008F7D80936F0082 |
:10076000209182022F3FB9F0CB01AA27BB27332764 |
:1007700044275527BC01CD010E940B1897FF04C0E8 |
:1007800061507F4F8F4F9F4FBB2797FDBA95A92F81 |
:10079000982F872FBC01209101012F3FC1F0CB0181 |
:1007A000AA27BB27332744275527BC01CD010E9428 |
:1007B0000B1897FF04C061507F4F8F4F9F4FBB278F |
:1007C00097FDBA95A92F982F872FBC015798209194 |
:1007D00000012F3FC1F0CB01AA27BB2733274427B5 |
:1007E0005527BC01CD010E940B1897FF04C0615032 |
:1007F0007F4F8F4F9F4FBB2797FDBA95A92F982FFB |
:10080000872FBC0157986115710511F0685C7F4F07 |
:1008100087E06C3F780710F06BEF77E0CB0108952D |
:1008200085B1837F85B984B18C6084B95A98529A16 |
:1008300082E88093800089E08093810080916F003E |
:10084000816080936F00089596B5980F86B5891BD7 |
:1008500087FDFCCF0895CF93C82F78948093000133 |
:10086000C150CF3F59F057988CE291E00E9425107B |
:10087000579A8CE291E00E942510F2CF88EE93E027 |
:100880000E942510CF910895AF92BF92CF92DF9230 |
:10089000EF92FF920F931F93CF93DF938C013CE273 |
:1008A000A32E31E0B32EC12CD12C80B7877F80BF1F |
:1008B000C801880F991F880F991F90934B0180934F |
:1008C0004A0110924901109248010E94C001109201 |
:1008D00076010E9423168CE291E00E941110909301 |
:1008E0007801809377011BC00E945F1180914801BD |
:1008F000909149018937910590F08BB1877C8BB934 |
:1009000085B1837F85B984B18C6084B95A98529A35 |
:100910008AE00E942B048AE0809389013EC0809186 |
:100920007701909178010E941A108823E9F2E8017A |
:1009300013E0CC0FDD1F1A95E1F7D0934B01C09364 |
:100940004A010E94C001EE24FF248701EA14FB043F |
:100950000C051D0558F484E60E9424040E94470EED |
:100960000894E11CF11C011D111DF0CF0E945F11C4 |
:1009700080914801909149018B35910588F08BB1A8 |
:10098000877C8BB985B1837F85B984B18C6084B94C |
:100990005A98529A8AE00E942B0480E090E02BC083 |
:1009A000C601B5012FE030E040E050E00E945D1844 |
:1009B000A21AB30AC40AD50A0894A108B108C1084A |
:1009C000D1088FE0A816B104C104D10418F481E065 |
:1009D00090E011C00E942316809176018F5F809372 |
:1009E00076018091760166E00E942A189093760144 |
:1009F0000E944310A2CFDF91CF911F910F91FF90E2 |
:100A0000EF90DF90CF90BF90AF900895CF93DF939A |
:100A1000EC0121978FEFCF3FD807E9F00E945F11DB |
:100A2000809112019091130188589F4F20914801A5 |
:100A3000309149018217930760F78BB1877C8BB99E |
:100A400085B1837F85B984B18C6084B95A98529AF4 |
:100A500081E090E002C080E090E0DF91CF910895C6 |
:100A600001972FEF8F3F9207D9F780E090E008952C |
:100A7000CF92DF92EF92FF920F931F93CF93DF936A |
:100A8000CDB7DEB763970FB6F894DEBF0FBECDBF0C |
:100A90008E010F5F1F4F83E1E4E1F1E0D801019087 |
:100AA0000D928A95E1F7EE24AFEFFA2E579A85B1B1 |
:100AB000837F85B984B18C6084B95A98529A8AE050 |
:100AC0000E94A30A8DE00E94A30A82E090E00E94A7 |
:100AD000060580910301080F111DF8018081282F60 |
:100AE00033278CE291E0289FA001299F500D389F69 |
:100AF000500D1124CA018C599F4F0E9425108091DE |
:100B0000710190917201892B09F0CDC180B7877F67 |
:100B100080BFF8948BB1877C8BB985B1837F85B911 |
:100B200084B18C6084B95A98529A109247011092FD |
:100B3000460184EF91E00E94060580914801909162 |
:100B40004901909313018093120187E00E943711AD |
:100B50006C0184EF91E0909389008093880010925B |
:100B600049011092480100E010E080E197E20E9404 |
:100B70003005109349010093480180E197E20E94FB |
:100B800030051092890180EC80937C008BB1877CCA |
:100B90008BB985B1837F85B984B18C6084B95A984B |
:100BA000529A5C9A5D9A109349010093480108E7B4 |
:100BB00010E02398229A529A81E090E00E9430053A |
:100BC00080E00E9437118536910518F051E0F52A32 |
:100BD00002C08EEFF82285B1837F85B984B18C6025 |
:100BE00084B95A98529A8CE291E00E9430050150E3 |
:100BF000104017FFDECF8BB1877C8BB985B1837F27 |
:100C000085B984B18C6084B95A98529A5B9A5D9A7E |
:100C100004E810E02298239A529A81E090E00E9422 |
:100C2000300581E00E9437118536910518F0A2E069 |
:100C3000FA2A02C0BDEFFB2285B1837F85B984B15A |
:100C40008C6084B95A98529A8CE291E00E943005E7 |
:100C50000150104017FFDECF8BB1877C8BB985B177 |
:100C6000837F85B984B18C6084B95A98529A5B9A13 |
:100C70005C9A0EE610E084B18C6084B9529881E0F1 |
:100C800090E00E94300582E00E9437118536910580 |
:100C900018F0E4E0FE2A02C0FBEFFF2285B1837F5B |
:100CA00085B984B18C6084B95A98529A8AE491E0EB |
:100CB0000E9430050150104017FFDDCF8BB1877CBB |
:100CC0008BB985B1837F85B984B18C6084B95A981A |
:100CD000529A5B9A08E710E02298239A529A81E090 |
:100CE00090E00E94300580E00E943711C816D906B6 |
:100CF00018F447EFF42202C058E0F52A85B1837F4B |
:100D000085B984B18C6084B95A98529A8AE491E08A |
:100D10000E9430050150104017FFDECF8BB1877C59 |
:100D20008BB985B1837F85B984B18C6084B95A98B9 |
:100D3000529A5D9A04E810E02298239A529A81E030 |
:100D400090E00E94300582E00E943711C816D90653 |
:100D500018F48FEDF82202C0A0E2FA2A85B1837F51 |
:100D600085B984B18C6084B95A98529A88E691E02A |
:100D70000E9430050150104017FFDECF8BB1877CF9 |
:100D80008BB985B1837F85B984B18C6084B95A9859 |
:100D9000529A5C9A0EE610E084B18C6084B9529845 |
:100DA00081E090E00E94300581E00E943711C81672 |
:100DB000D90618F4BFEEFB2202C0E0E1FE2A85B19D |
:100DC000837F85B984B18C6084B95A98529A88E639 |
:100DD00091E00E9430050150104017FFDDCF8BB12C |
:100DE000877C8BB985B1837F85B984B18C6084B9E8 |
:100DF0005A98529A8091C1008F778093C100809158 |
:100E0000C1008F7B8093C1007894FBEECF16D10494 |
:100E100008F449C0909103018AEF989FC001112402 |
:100E20000E9425108F2D992780FD04C0F1E0EF2E40 |
:100E300081E405C081FD07C0E2E0EE2E82E40E945D |
:100E4000A30A8BE21AC082FD04C073E0E72E83E49C |
:100E5000F6CF83FD04C064E0E62E81E60BC084FD7E |
:100E600004C055E0E52E82E605C085FD08C046E0D9 |
:100E7000E42E83E60E94A30A8DE20E94A30AE09278 |
:100E80008901EE2021F08E2D0E942B04FCCF8E2DA7 |
:100E90000E942B048EE20E94A30A8AE00E94A30A09 |
:100EA0008DE00E94A30A63960FB6F894DEBF0FBED2 |
:100EB000CDBFDF91CF911F910F91FF90EF90DF9009 |
:100EC000CF900895CFEFD4E0DEBFCDBFEE24E7B8DA |
:100ED00080E188B98EEB8AB9EBB88EE084B981EFF6 |
:100EE00085B9579885B1806C85B983EF91E0C29739 |
:100EF00097FFFDCF1E9B06C01F9B02C081E007C06D |
:100F000082E005C01F9B02C083E001C084E08093A3 |
:100F10000301189905C0809103018C5F8093030140 |
:100F200080910C01992790930B0180930A01879778 |
:100F300031F48EE290E090930B0180930A01789453 |
:100F40000E94AF0A0E9410040E94821180E50E9454 |
:100F5000D7120E9432100E945F1184EF91E00E942C |
:100F60001110909378018093770106C080917101F0 |
:100F700090917201892B41F48091770190917801D1 |
:100F80000E941A10882391F310924B0110924A018B |
:100F90000E94C00181E080937C0010926401109255 |
:100FA000630181E385B98AE00E94A30A8DE00E9473 |
:100FB000A30A8091710190917201892B11F40E9412 |
:100FC000380585E690E00E9411108C0186E690E0DD |
:100FD0000E94111087E690E00E9411109093780112 |
:100FE000809377018EEF90E00E9411106C0189E6EA |
:100FF00090E00E941110EC010E949B010E948E174C |
:10100000109281028091C10080688093C100E090BD |
:10101000760110921301109212010E944A039093DC |
:101020004B0180934A01892B31F40E944A0390932B |
:101030004B0180934A0180917601282F33278E2D12 |
:10104000992787FD90952817390771F010920601AE |
:101050001092080186E990E00E94111090937801A7 |
:1010600080937701E090760180914A0190914B0145 |
:10107000892BA1F5109235011092340110920801CC |
:10108000C8010E941A108823A9F180B7877F80BF0A |
:1010900081E0809306018BB1877C8BB985B1837F1A |
:1010A00085B984B18C6084B95A98529A80911201A2 |
:1010B0009091130120914801309149012817390777 |
:1010C00010F4019704C08217930728F401969093B7 |
:1010D00013018093120182E390E009C08091060120 |
:1010E000882319F081E0809335018CED95E00E9412 |
:1010F00011108C0180910601882321F010924B0180 |
:1011000010924A010E94C001809108018150809391 |
:1011100008018F3F09F081CF82E3809308010E948C |
:101120008B1480914C0190914D01892B21F00E94EC |
:10113000470E0E94AF0D80910601882341F08091F7 |
:101140000701882321F00E94431010920701C60175 |
:101150000E941A10882309F4F4C082E390E00E94F0 |
:1011600011106C0180913B01282F332780913C01A5 |
:1011700090913D01B9010E943618809148019091EB |
:10118000490190933D0180933C0181E080933B01B4 |
:1011900080911201909113016817790798F0681BEC |
:1011A000790B809185029927689F9001699F300D86 |
:1011B000789F300D1124B901F6E076956795FA9580 |
:1011C000E1F702C060E070E0809144019091450138 |
:1011D0008617970710F4019604C06817790728F45A |
:1011E000019790934501809344018091440190912F |
:1011F00045018B30910588F0681B790B77FF02C0A1 |
:10120000695F7F4FE3E075956795EA95E1F7860F93 |
:10121000971F9093450180934401E0914401F09120 |
:101220004501CF016AE070E00E94361840918302C8 |
:10123000842F992786179707E8F48AE0489FC00112 |
:1012400011249F01281B390BC901880F991F820F98 |
:10125000931F2FEF30E0A901481B590BCA014931F8 |
:10126000510514F489E190E08F3F910521F01CF0C5 |
:10127000C90101C08FEF80930001809132019091EC |
:101280003301845F9140B0F084EF91E0909333019B |
:10129000809332018091400190914101893C9105F8 |
:1012A00048F080914A0190914B01892B19F081E01F |
:1012B000809335012091320130913301C901969517 |
:1012C00087959093410180934001409134014536C8 |
:1012D00068F080913001909131019695879528179B |
:1012E000390720F483E080933E0102C010923E0152 |
:1012F00080914A0190914B01892B71F0453660F045 |
:101300002431310548F48091300190913101899761 |
:1013100018F081E080933501109231011092300174 |
:1013200010923301109232010E94110280914C01FF |
:1013300090914D01009729F0019790934D01809372 |
:101340004C01CE010E941A10882379F085E090E0CC |
:101350000E941110EC01809134018F3F19F08F5FD2 |
:101360008093340181E0809307018091770190910F |
:1013700078010E941A10882331F0809140019091E9 |
:1013800041010A9728F080913501882309F445CE60 |
:1013900084E690E00E941110909378018093770189 |
:1013A0001092340141E0F42EF092060180B7877F5D |
:1013B00080BF80913501882309F42FCE80910E01E2 |
:1013C00090910F01853F910508F427CE579A10920E |
:1013D0004701109246011092350180918602282F14 |
:1013E00033272E703070220F331F8091100190919F |
:1013F000110168E170E00E943618261B255F243039 |
:101400000CF424E0822F992787FD90950E944404D4 |
:10141000882309F490C082E080933E011092060177 |
:1014200088E090E090934B0180934A010E94C001B4 |
:10143000109233011092320110923101109230015A |
:1014400080B78C7F80BF80B78A6080BF82E390E0E6 |
:101450000E94111090937801809377018091770119 |
:10146000909178010E941A108823C1F3209186027E |
:101470002E70809110019091110134E0969587951E |
:101480003A95E1F7281B2E5E28300CF428E0822FD5 |
:10149000992787FD9095C3E0880F991FCA95E1F7BA |
:1014A000C89690934B0180934A010E94C0010E940C |
:1014B0004A03892B41F08CE291E00E941110909335 |
:1014C00078018093770181E080933E0122C0809172 |
:1014D00048019091490185369105A8F08BB1877C30 |
:1014E0008BB985B1837F85B984B18C6084B95A98F2 |
:1014F000529A8AE00E942B040E944A03892B19F019 |
:1015000081E0809335018091320190913301892BE4 |
:1015100041F080917701909178010E941A10882300 |
:10152000B1F210923E0182E390E00E941110EC01B2 |
:10153000B7E0EB2E72CD0E944A03892B09F46DCDE2 |
:10154000F09235016ACD982F8091C10083FF06C0CB |
:101550008091C00085FFFCCF9093C6000895CF9383 |
:10156000CFB7F8948091C1008F778093C1008091AC |
:10157000C1008F7B8093C10050985898519A599818 |
:101580008091C00082608093C0008091C2008F77FC |
:101590008093C2008091C2008F7B8093C2008091B3 |
:1015A000C2008F7D8093C2008091C2008F7E8093A5 |
:1015B000C2008091C200877F8093C2008091C100E9 |
:1015C0008B7F8093C1008091C20084608093C200B1 |
:1015D0008091C20082608093C2008091C1008061CE |
:1015E0008093C1008091C10088608093C100809188 |
:1015F000C00087FF03C08091C600F9CF8091C10071 |
:1016000080688093C1008091C1008F7B8093C1006E |
:1016100080912701909128010E94111090937702E8 |
:101620008093760210925601109254011092530149 |
:101630001092520181E0809329011092BC018EE149 |
:101640008093BD011092C0018BE08093BE01109287 |
:10165000BF018DE00E94A30A8AE00E94A30A82E4EF |
:101660000E94A30A8CE40E94A30A8AE30E94A30AB0 |
:1016700086E50E94A30A80E30E94A30A8EE20E94EC |
:10168000A30A83E30E94A30A80E30E94A30A81E6DF |
:101690000E94A30A8DE00E94A30A8AE00E94A30A86 |
:1016A00088E40E94A30A87E50E94A30A8AE30E94B5 |
:1016B000A30A82E30E94A30A8EE20E94A30A80E3A7 |
:1016C0000E94A30A80E20E94A30A82E50E94A30A64 |
:1016D00085E60E94A30A86E70E94A30A80912C0156 |
:1016E0006AE00E942A18805D0E94A30A80912C0162 |
:1016F0006AE00E942A18892F805D0E94A30ACFBF4A |
:10170000CF9108958091C00086FF29C08091290162 |
:10171000882309F580915701909158010196909383 |
:10172000580180935701FC01E85FFD4FE081ED30E7 |
:1017300019F08E36910539F4109258011092570124 |
:1017400081E0809329018091C00081608093C00076 |
:10175000E093C60008951092580110925701089521 |
:101760001F920F920FB60F9211242F933F934F9316 |
:101770005F938F939F93AF93BF93CF93DF93EF9339 |
:10178000FF935091C60080915601882309F074C0E0 |
:1017900040915B01442371F4533279F450938A01F0 |
:1017A00081E080935B0183E290E090935A01809303 |
:1017B000590162C0423308F05BC020915901309159 |
:1017C0005A01E42FFF275D3069F0E657FE4F508342 |
:1017D0004F5F40935B01250F311D30935A012093D9 |
:1017E00059014AC0DF01A657BE4FFD0132978081E3 |
:1017F000281B3109ED0121978881281B3109C90176 |
:101800009F7090935A0180935901689415F89695AA |
:1018100087951694E1F7982F935C2F733070235CB3 |
:101820008081981701F588812817E9F480ED97E009 |
:1018300090934D0180934C015C934F5F4093550111 |
:1018400081E08093560180918C01823571F488E1AA |
:1018500090E02CE00FB6F894A895809360000FBE3E |
:101860002093600002C01092560110925B0104C0E8 |
:1018700080935B0180935601FF91EF91DF91CF91AF |
:10188000BF91AF919F918F915F914F913F912F9118 |
:101890000F900FBE0F901F901895AC01A0E0B0E024 |
:1018A0009D01A817B90748F4E8E0F2E08191280FFC |
:1018B000311D1196A417B507C8F33F70FD01E85F0D |
:1018C000FD4FC90176E0969587957A95E1F7835C9F |
:1018D00080831196FD01E85FFD4F2F733070822FDA |
:1018E000835C8083A75FBD4F8DE08C9310922901AC |
:1018F000809108028093C6000895BF92CF92DF9234 |
:10190000EF92FF920F931F93CF93DF93CDB7DEB784 |
:101910002C859D850E85BB2483E2809308029F5908 |
:101920009093090220930A0233E0E32EF12C002366 |
:1019300009F49EC0CF84D888BE016D5E7F4FA9890F |
:10194000BA890150109709F493C01097B9F0F601C5 |
:10195000EB0DF11DB3949081119791F4002349F19F |
:10196000FB016E5F7F4FDB01C080D1806E5F7F4FD8 |
:101970000D90BC91A02DBB24015002C090E019C075 |
:101980001097B9F0F601EB0DF11DB394408111975A |
:1019900091F4002341F1FB016E5F7F4FDB01C080BA |
:1019A000D1806E5F7F4F0D90BC91A02DBB24015064 |
:1019B00002C040E018C01097B1F0F601EB0DF11D28 |
:1019C000B3941081119781F4002371F0FB013296DA |
:1019D000DB01CD90DC90BF016E5F7F4FA081B181B4 |
:1019E000BB24015001C010E0F701E85FFD4F892FD3 |
:1019F00086958695835C80830894E11CF11CF70131 |
:101A0000E85FFD4F892F99278370907024E0880F3D |
:101A1000991F2A95E1F755279A0194E03695279565 |
:101A20009A95E1F7822B835C80830894E11CF11C7A |
:101A3000F701E85FFD4F4F705070440F551F440F82 |
:101A4000551F812F992726E0969587952A95E1F7CE |
:101A5000842B835C80830894E11CF11CF701E85F10 |
:101A6000FD4F1F73135C10830894E11CF11C6ACFB7 |
:101A7000C7010E944D0CDF91CF911F910F91FF90F4 |
:101A8000EF90DF90CF90BF900895A3E07A2F409120 |
:101A900055014650442309F458C0E72FFF27E65765 |
:101AA000FE4F80818D537F5FE72FFF27E657FE4F64 |
:101AB00020812D537F5FE72FFF27E657FE4F3081B0 |
:101AC0003D537F5FE72FFF27E657FE4F60816D5341 |
:101AD0007F5F9927880F991F880F991F522F529562 |
:101AE0005F70582B822F99278F709070F4E0880FC9 |
:101AF000991FFA95E1F7232F26952695282B832FFA |
:101B0000992783709070E6E0880F991FEA95E1F7B6 |
:101B1000682B41504F3FC9F0EA2FFF27E657FE4F91 |
:101B20005083AF5F41504F3F81F0EA2FFF27E657C8 |
:101B3000FE4F2083AF5F41504F3F39F0EA2FFF2720 |
:101B4000E657FE4F6083AF5FA5CF8DE891E090939D |
:101B5000540180935301A350A093520108958091A2 |
:101B60005601882309F492C00E94450D80918B0193 |
:101B7000863611F480918C0180918C0199278437ED |
:101B8000910509F445C0853791054CF481369105DE |
:101B900009F468C08436910509F44DC06FC08637DA |
:101BA000910509F45BC08637910524F087379105CC |
:101BB000B9F064C0E0915301F0915401908180919B |
:101BC0000301981719F08081882319F410924F01AE |
:101BD00003C082E080934F018091510188604CC026 |
:101BE000E0915301F09154018081882329F0908184 |
:101BF00080910301981729F4CF0101960E942717BD |
:101C000001C082E080934F0180915101806134C016 |
:101C100080910301E0915301F0915401E80FF11D0F |
:101C20003197808180934E0184EF91E09093380149 |
:101C30008093370123C0E0915301F09154019081CA |
:101C40008AE0989FC0011124909328018093270176 |
:101C5000892BA1F08091510182600EC080915101C9 |
:101C600081600AC0E0915301F0915401808180931A |
:101C70005001809151018460809351011092540170 |
:101C80001092530110925201109256010895CF9371 |
:101C9000DF93CDB7DEB761970FB6F894DEBF0FBE06 |
:101CA000CDBF80912901882319F40E94820BE6C0E0 |
:101CB0008091510182FF30C080915001992724E02A |
:101CC000880F991F2A95E1F78A559F4F40E150E010 |
:101CD000BC01CE0101960E94BB1780E190E09F936A |
:101CE0008F93CE0101969F938F9381E090E09F9315 |
:101CF0008F9380E591E09F938F9382E08F9385E0AF |
:101D00008F9381E48F930E947D0C8FEF809350011D |
:101D1000809151018B7FA8C080912701909128016B |
:101D2000892B41F080917602909177020E941A10DF |
:101D3000882329F480915101992781FF20C00E94B6 |
:101D4000D60282E490E09F938F9386EC91E09F937C |
:101D50008F9381E08F9385E08F9384E48F930E942B |
:101D60007D0C80912701909128010E941110909381 |
:101D7000770280937602809151018D7F15C080FF9C |
:101D800019C08AE090E09F938F938CEB91E09F9332 |
:101D90008F9381E08F9385E08F9386E58F930E94E8 |
:101DA0007D0C809151018E7F809351018DB79EB73C |
:101DB00007965FC083FF35C080914F01882319F4D7 |
:101DC00081E0898B01C0198A88E090E09F938F930E |
:101DD00080E892E09F938F9321E030E03F932F9330 |
:101DE00083E091E09F938F933F932F938FE491E053 |
:101DF0009F938F933F932F93CE0141969F938F9301 |
:101E000084E08F9385E08F9385E58F930E947D0C0E |
:101E100080915101877F809351018DB79EB7439682 |
:101E200028C084FF2BC080914F01882319F481E0E2 |
:101E3000898B01C0198A21E030E03F932F938FE412 |
:101E400091E09F938F933F932F93CE0141969F9361 |
:101E50008F9382E08F9385E08F9387E58F930E9425 |
:101E60007D0C809151018F7E809351018DB79EB77B |
:101E70000B960FB6F8949EBF0FBE8DBF61960FB63E |
:101E8000F894DEBF0FBECDBFDF91CF9108951F93B1 |
:101E9000CF93DF93EC0110E08881882369F0FE0185 |
:101EA000E10FF11D1F5F80810E94A30AFE01E10F77 |
:101EB000F11D8081882399F7DF91CF911F910895BB |
:101EC0001F920F920FB60F9211242F933F934F93AF |
:101ED0005F936F937F938F939F93AF93BF93EF9392 |
:101EE000FF9380913F01882319F0815080933F0137 |
:101EF00080915E01815080935E018F3F09F080C028 |
:101F000083E080935E0180915C0190915D01019678 |
:101F100090935D0180935C018091390190913A0129 |
:101F2000009719F1019790933A018093390121E0CC |
:101F3000883B920739F021E08C32920719F0843601 |
:101F4000910599F480E50E94E11280913901909108 |
:101F50003A01885B914049F48091E6019091E70154 |
:101F600001969093E7018093E601809161018823B7 |
:101F700031F08091610181508093610102C08093B2 |
:101F800060018091370190913801009729F0019705 |
:101F9000909338018093370180913601882319F09E |
:101FA00081508093360180912A0190912B010197F5 |
:101FB00090932B0180932A018F5F9F4F09F5209109 |
:101FC0004201309143018DEF283E380750F4809153 |
:101FD000440190914501280F391F3093430120930C |
:101FE000420188E795E090932B0180932A0180912C |
:101FF000390190913A01892B19F480E50E94E11290 |
:10200000FF91EF91BF91AF919F918F917F916F91D0 |
:102010005F914F913F912F910F900FBE0F901F90A6 |
:10202000189520915C0130915D01280F391FC9017D |
:102030000197089520915C0130915D01821B930B03 |
:10204000892F990F990B80780895CF93DF930E9481 |
:102050001110EC01CE010E941A108823D9F3DF91F0 |
:10206000CF91089586EA80937A0087EC80937C0074 |
:1020700080917A00806480937A0080917B008064F4 |
:1020800080937B00089580913601815080933601C2 |
:102090008F3F09F089C084E68093360180915F010B |
:1020A000815080935F018F3F09F050C020917C00E8 |
:1020B00097EC90937C0080B7806880BF83ED80931D |
:1020C0007A0080917A00806180937A0090937C00FE |
:1020D00080917A00806480937A0080917A0084FFF6 |
:1020E000FCCF20937C00209178003091790083E12F |
:1020F00090E0289FA001299F500D389F500D11247A |
:102100009A0146E0369527954A95E1F72F3F31052C |
:1021100019F010F02FEF30E0809110019091110133 |
:10212000820F931F969587959093110180931001CC |
:1021300010927A0080917B00806480937B0080B74E |
:102140008F7780BF83E080935F01089520917C00AA |
:1021500093EC90937C0080B7806880BF83ED809380 |
:102160007A0080917A00806180937A0090937C005D |
:1021700080917A00806480937A0080917A0084FF55 |
:10218000FCCF20937C0020917800309179008091E1 |
:102190000E0190910F01820F931F96958795909352 |
:1021A0000F0180930E0158C020917C0096EC909313 |
:1021B0007C0080B7806880BF83ED80937A00809137 |
:1021C0007A00806180937A0090937C0080917A00FD |
:1021D000806480937A0080917A0084FFFCCF209302 |
:1021E0007C0080910C01282F3327809178009091FA |
:1021F0007900829FA001839F500D929F500D112462 |
:102200009A0194E0369527959A95E1F780913C01E3 |
:1022100090913D01820F931F90933D0180933C016B |
:1022200080913B018F5F80933B0140914801509129 |
:102230004901420F531F56954795509349014093CA |
:10224000480180914601909147018417950720F439 |
:10225000509347014093460110927A0080917B0091 |
:10226000806480937B0080B78F7780BF0895209132 |
:102270007C00982F906C90937C0080B7806880BF22 |
:1022800083ED80937A0080917A00806180937A0058 |
:1022900090937C0080917A00806480937A00809192 |
:1022A0007A0084FFFCCF20937C0010927A0080B7E4 |
:1022B0008F7780BF8091780090917900089586E0B3 |
:1022C0000E94371120910C013327829FA001839F28 |
:1022D000500D929F500D11249A0154E03695279588 |
:1022E0005A95E1F7309349012093480180914601C6 |
:1022F000909147018217930720F430934701209370 |
:102300004601089580918100806C809381008091C6 |
:10231000810080648093810080916F00806280934F |
:102320006F0080916F00816080936F0084E08093E4 |
:10233000B10008951F920F920FB60F9211242F93A0 |
:102340003F938F939F9380916501282F33278F5F51 |
:102350008093650121303105B1F0223031051CF444 |
:10236000232B41F038C022303105B1F02330310544 |
:1023700011F131C080912D0190912E01909389002F |
:102380008093880028C080912F0120912D013091E9 |
:102390002E01823058F008C080912F0120912D012C |
:1023A00030912E01833011F42F5F3F4F309389001D |
:1023B0002093880010C080912F0120912D01309131 |
:1023C0002E01882311F02F5F3F4F30938900209317 |
:1023D000880010926501809162018F5F8093620195 |
:1023E0009F918F913F912F910F900FBE0F901F9053 |
:1023F00018951F920F920FB60F9211242F933F93AF |
:102400004F935F936F937F938F939F93AF93BF93FC |
:102410008091810086FF17C08091620180936A01DC |
:102420008091860090918700909367018093660168 |
:10243000809181008F7B8093810084E6809361018D |
:102440001092B200A5C080918100806480938100C9 |
:1024500080916201282F332780916A01281B31095E |
:10246000322F2227330F8091860090918700280F0A |
:10247000391F8091660190916701281B390B3093B9 |
:102480006901209368018091B200682F77276894D2 |
:1024900015F8660F771F1694E1F7AB01445D5E4FA8 |
:1024A00042175307A0F4C9018050924090936901EC |
:1024B000809368014817590738F5805092409093EF |
:1024C00069018093680148175907F0F419C0AB01FE |
:1024D0004C52514024173507B8F4C90180509E4F23 |
:1024E00090936901809368018417950768F4805080 |
:1024F0009E4F90936901809368018417950720F49B |
:1025000070936901609368018091680190916901FD |
:1025100063E070E00E94361870936901609368016F |
:10252000809160018F3F51F06D587A40635F714038 |
:1025300028F4809160018F5F809360018091680131 |
:10254000909169018C519C4030F48CE19CE0909317 |
:1025500069018093680180916801909169018C51B3 |
:102560009C4040916301509164019A01220F331FF6 |
:10257000240F351F280F391F369527953695279537 |
:1025800030936901209368013093640120936301C3 |
:10259000BF91AF919F918F917F916F915F914F917B |
:1025A0003F912F910F900FBE0F901F901895909113 |
:1025B0000301990F980F9093BA0085EC8093BC00AB |
:1025C00008951092BC0090910301990F980F909379 |
:1025D000BA0085EC8093BC0008951F920F920FB64D |
:1025E0000F9211242F933F934F935F936F937F9399 |
:1025F0008F939F93AF93BF93EF93FF938091B90015 |
:102600009927887F90708038910529F1813891054C |
:102610003CF4009709F45FC18036910591F067C1E1 |
:10262000883B910509F4A8C0893B91052CF4883AB0 |
:10263000910509F4A1C05BC1883F910509F44BC124 |
:1026400056C18091BC0080688093BC0010927501D7 |
:10265000109274014FC14091BB008091BC00806812 |
:102660008093BC0080917401282F33278F5F809363 |
:1026700074012130310509F44AC0223031051CF4BF |
:10268000232B31F06FC02230310509F45BC06AC0E2 |
:10269000442369F480917301882349F080913901C2 |
:1026A00090913A01892B19F081E090E011C080915E |
:1026B000390190913A01892B81F08091730188232F |
:1026C00061F0842F992763E0880F991F6A95E1F7DD |
:1026D000909372018093710104C010927201109264 |
:1026E00071014093730180916C0190916D01209173 |
:1026F000440130914501820F931F90936D018093A7 |
:102700006C0180916B018F5F80936B012EC02091D3 |
:102710007101309172012115310551F0842F9927F3 |
:1027200087709070280F391F3093720120937101C8 |
:10273000842F992753E0969587955A95E1F78093D2 |
:10274000750113C080916E01883078F480916E011C |
:10275000E82FFF27E858FD4F40838F5F80936E017D |
:1027600082E001C08EEF8093740184EF91E090933A |
:102770003A0180933901BEC080917501282F33271B |
:10278000442755278F5F80937501F9012F3131055B |
:1027900008F097C0EC5CFF4FEE0FFF1F0590F4911F |
:1027A000E02D099480914401909145018E3F91055F |
:1027B00070F48091440182C0809144019091450160 |
:1027C00021E08E3F920718F49695879577C08EEF9B |
:1027D00075C08091710190917201892B11F48AEF7B |
:1027E0006DC080913401823310F488E267C090910B |
:1027F000000180910101891708F460C09093BB002B |
:1028000066C080910D015AC08091400157C08091EF |
:10281000420190914301892F992786954FC080915D |
:10282000420190914301892F992748C0809110015E |
:1028300045C080916F0142C08EE140C020916B0184 |
:10284000223348F4332780916C0190916D01B901D6 |
:102850000E94361804C060914401709145016E3F9A |
:10286000710518F46093BB0003C08EEF8093BB002A |
:1028700010926D0110926C0110926B0128C0809132 |
:1028800080021CC08091810219C08091820216C012 |
:102890008091830213C08091840210C080918502D0 |
:1028A0000DC0809186020AC08091870207C0809186 |
:1028B000890104C01092BB000AC085EA8093BB0066 |
:1028C00006C08FEF8093BB008EEF809375018091DF |
:1028D000BC0080680DC085ED8093BC0080916F01C5 |
:1028E0009091700101969093700180936F0185EC37 |
:1028F0008093BC00FF91EF91BF91AF919F918F9119 |
:102900007F916F915F914F913F912F910F900FBEEB |
:102910000F901F90189580916E01883030F088E7F5 |
:1029200092E00E94271710926E0108951F920F9255 |
:102930000FB60F9211240F900FBE0F901F90189595 |
:102940001F920F920FB60F9211241F932F933F9354 |
:102950004F935F936F937F938F939F93AF93BF93A7 |
:10296000CF93EF93FF931EE180913F01882309F0FD |
:1029700055C100B605FE02C0C1E001C0C0E08091B3 |
:10298000860280FD84C0809176019927823091056E |
:1029900009F445C0833091052CF4009779F0019734 |
:1029A00011F124C18430910509F450C0843091059F |
:1029B0000CF440C0059709F460C018C12398229A0E |
:1029C000529ACC2309F4E4C08BB1877E8BB95D9A0F |
:1029D00080910701882311F00E94431080B78E7FF9 |
:1029E00080BF81EC82C08BB1877E8BB95D9ACC238E |
:1029F00009F0B8C02298239A529A8091070188233F |
:102A000011F00E94431080EC80937C0080B78360BB |
:102A100080BF809176018F5F80937601D5C0229828 |
:102A2000239A529ACC2309F48DC08BB18F7C8BB939 |
:102A30005B9A80C08BB18F7C8BB95B9ACC2309F0F9 |
:102A40006DC084B18C6084B9529860C084B18C60D0 |
:102A500084B95298CC2309F44BC08BB1877D8BB9D4 |
:102A60005C9A80910701882311F00E94431080EC4A |
:102A700080937C0080B78E7FCBCF8BB1877D8BB965 |
:102A80005C9ACC2309F0AEC02398229A8EC0809124 |
:102A9000760199278230910509F443C0833091056E |
:102AA0002CF4009779F0019741F1A0C08430910592 |
:102AB00009F45CC0843091050CF449C0059709F411 |
:102AC0006CC094C02298239A529ACC2389F08BB17F |
:102AD000877E8BB95D9A80910701882311F00E944F |
:102AE000431080B78E7F80BF80EC80937C0091CFB5 |
:102AF0008BB18F7C8BB95B9A79C08BB1877E8BB998 |
:102B00005D9ACC2359F42398229A529A8091070116 |
:102B1000882311F00E94431081EC76CF2298239AEB |
:102B200023C02398229A529ACC2361F08BB1877DDF |
:102B30008BB95C9A80910701882311F00E944310A1 |
:102B400082EC96CF8BB1877E8BB95D9A4FC08BB1EB |
:102B5000877D8BB95C9ACC2329F484B18C6084B9CD |
:102B600052984BCF2398229A529A40C084B18C60DD |
:102B700084B95298CC2361F08BB18F7C8BB95B9A6E |
:102B800080910701882311F00E94431081EC70CFDF |
:102B90008BB1877D8BB95C9A29C08BB18F7C8BB947 |
:102BA0005B9ACC23F9F42298239A529A80910701D8 |
:102BB000882311F00E94431082EC80937C0080B740 |
:102BC000836080BFC0937601809132019091330180 |
:102BD0000196909333018093320180913E0180935E |
:102BE0003F0104C084B18C6084B952988091300157 |
:102BF00090913101019690933101809330011150F1 |
:102C00001F3F61F000B605FC03C0CC2309F0B1CE34 |
:102C100000B605FE03C0CC2309F4ABCE1092070129 |
:102C2000FF91EF91CF91BF91AF919F918F917F9144 |
:102C30006F915F914F913F912F911F910F900FBE18 |
:102C40000F901F9018958091860280FD4FC0809153 |
:102C5000760199278230910539F1833091052CF462 |
:102C6000009761F0019791F008958430910561F12A |
:102C7000843091050CF1059781F108952398229AEB |
:102C8000529A8BB1877D8BB95C9A4EC02398229A59 |
:102C9000529A8BB1877E8BB95D9A81EC80937C00D0 |
:102CA00080B78E7F80BF08952298239A529A8BB165 |
:102CB000877E8BB95D9A5DC02298239A529A8BB118 |
:102CC0008F7C8BB95B9A4BC084B18C6084B952986D |
:102CD0008BB18F7C8BB95B9A39C084B18C6084B91D |
:102CE00052988BB1877D8BB95C9A27C08091760111 |
:102CF00099278230910519F1833091052CF40097C2 |
:102D000061F0019799F008958430910551F1843074 |
:102D10009105F4F0059799F108952298239A529A13 |
:102D20008BB18F7C8BB95B9A82EC24C02298239A5A |
:102D3000529A8BB1877E8BB95D9A80ECAFCF239886 |
:102D4000229A529A8BB1877E8BB95D9A81EC12C020 |
:102D50002398229A529A8BB1877D8BB95C9A82EC28 |
:102D60009DCF84B18C6084B952988BB1877D8BB92B |
:102D70005C9A80EC80937C0080B7836093CF84B1B1 |
:102D80008C6084B952988BB18F7C8BB95B9A85CF5C |
:102D9000F999FECF92BD81BDF89A80B59927089523 |
:102DA000F999FECF1FBA92BD81BD60BD0FB6F894F0 |
:102DB000FA9AF99A0FBE08954AEA20E030E0261701 |
:102DC000370740F4FC018191480F2F5F3F4F2617D2 |
:102DD0003707C8F3842F9927089582E080938002F3 |
:102DE000109281028FEF8093820298E29093830287 |
:102DF00084E68093840280E48093850284E080935B |
:102E0000860280910901981710F08093830267E091 |
:102E100070E080E892E00E94DC16809387020895BB |
:102E200080918002823091F467E070E080E892E067 |
:102E30000E94DC168093870220ED36E148E050E0E6 |
:102E400060E872E080E090E00E94E9170895CF9377 |
:102E5000DF93EC0167E070E00E94DC169F81981719 |
:102E600019F085E090E057C08881823019F084E045 |
:102E700090E051C0898186FF03C00E94ED1644C0D6 |
:102E8000109281028981282F332720FF03C08A8175 |
:102E90008093820221FF03C08B818093830222FFF3 |
:102EA00003C08C818093840223FF03C08D818093B3 |
:102EB000850224FF08C0909186029E708E81817FDA |
:102EC000982B9093860225FF08C090918602917FEF |
:102ED0008E818E70982B9093860280918402833726 |
:102EE00018F083E780938402809183029091090116 |
:102EF000891710F09093830267E070E080E892E019 |
:102F00000E94DC1680938702898187FF02C00E949D |
:102F1000101780E090E0DF91CF91089528EC36E122 |
:102F200048E050E060E070E080E892E00E94C41762 |
:102F300067E070E080E892E00E94DC16982F8091B4 |
:102F40008002823021F480918702891721F00E944B |
:102F5000ED160E9410178091830290910901891744 |
:102F600010F09093830280918402833718F083E7F6 |
:102F7000809384020895FB01DC0102C005900D924C |
:102F800041505040D8F70895A0E0B0E0EAECF7E1F6 |
:102F90000C9487186C017B01EA01590121978FEF8E |
:102FA000CF3FD80789F086010894C11CD11CC70106 |
:102FB0000894E11CF11CF5010995F8018083219723 |
:102FC000FFEFCF3FDF0779F7EAE0CDB7DEB70C942C |
:102FD000A318A0E0B0E0EFEEF7E10C9489188C01A3 |
:102FE0007B01EA01690121978FEFCF3FD80771F08C |
:102FF000F70121917F01C8010F5F1F4F622FF6017A |
:1030000009952197FFEFCF3FDF0791F7E8E0CDB7B4 |
:10301000DEB70C94A518629FD001739FF001829FC8 |
:10302000E00DF11D649FE00DF11D929FF00D839F57 |
:10303000F00D749FF00D659FF00D9927729FB00DF4 |
:10304000E11DF91F639FB00DE11DF91FBD01CF0107 |
:1030500011240895991B79E004C0991F961708F070 |
:10306000961B881F7A95C9F780950895AA1BBB1BEC |
:1030700051E107C0AA1FBB1FA617B70710F0A61B78 |
:10308000B70B881F991F5A95A9F780959095BC0199 |
:10309000CD01089597FB092E07260AD077FD04D0AD |
:1030A000E5DF06D000201AF4709561957F4F0895F2 |
:1030B000F6F7909581959F4F0895A1E21A2EAA1BCD |
:1030C000BB1BFD010DC0AA1FBB1FEE1FFF1FA217D8 |
:1030D000B307E407F50720F0A21BB30BE40BF50BD5 |
:1030E000661F771F881F991F1A9469F7609570955E |
:1030F000809590959B01AC01BD01CF0108952F9261 |
:103100003F924F925F926F927F928F929F92AF9277 |
:10311000BF92CF92DF92EF92FF920F931F93CF93C4 |
:10312000DF93CDB7DEB7CA1BDB0B0FB6F894DEBF5B |
:103130000FBECDBF09942A88398848885F846E8481 |
:103140007D848C849B84AA84B984C884DF80EE80CB |
:10315000FD800C811B81AA81B981CE0FD11D0FB6D4 |
:0E316000F894DEBF0FBECDBFED010895FFCF86 |
:10316E00FFFF0101FB07010101281900191ED007FD |
:10317E008000050000000201030405060708090A85 |
:0C318E000B0C0D0E0F1011881301FF0038 |
:00000001FF |
/BL-Ctrl_2.0/V0.30/BL-Ctrl_MEGA168_V0_30a_ADR9-12.hex |
---|
0,0 → 1,796 |
:100000000C9453010C9499010C9499010C9499014E |
:100010000C9499010C9499010C9499010C949901F8 |
:100020000C9499010C949B140C94FE110C9499015E |
:100030000C9499010C949F110C9499010C949901C2 |
:100040000C94650F0C9499010C94B50B0C949901C8 |
:100050000C9499010C9499010C9499010C94A51499 |
:100060000C94F2120C949901D713EE130614091490 |
:1000700014141B141E145F1421142314E113EE1323 |
:10008000061409140C145F14441447144A144D1434 |
:1000900050145314561459145C14661466145F14E7 |
:1000A00066146614621443757272656E74202020A3 |
:1000B0005B302E31415D43757272656E74526177AB |
:1000C0002020202020206D41682020202020205B3F |
:1000D00031306D41685D54656D702E202020205BAD |
:1000E000302E31B0435D566F6C74616765202020FF |
:1000F0005B302E31565D72706D2028726177292039 |
:10010000202020202020536574706F696E74202099 |
:100110002020202020204D6178536574706F696E17 |
:1001200074202020202050504D536574706F696EEC |
:10013000742020202020506172616D2E50776D5305 |
:1001400063616C696E67506172616D2E4D617843B9 |
:10015000757272656E74506172616D2E4D61785466 |
:10016000656D702E2020506172616D2E5363616C3D |
:10017000652049202020506172616D2E42697473A0 |
:10018000202020202020506172616D2E53746172F6 |
:100190007450574D2020493243204C6F73742020F7 |
:1001A00020202020202044656275673136202020E1 |
:1001B00020202020202044656275673137202020D0 |
:1001C00020202020202044656275673138202020BF |
:1001D00020202020202044656275673139202020AE |
:1001E00020202020202044656275673230202020A6 |
:1001F0002020202020204465627567323120202095 |
:100200002020202020204465627567323220202083 |
:100210002020202020204465627567323320202072 |
:100220002020202020204465627567323420202061 |
:100230002020202020204465627567323520202050 |
:10024000202020202020446562756732362020203F |
:10025000202020202020446562756732372020202E |
:10026000202020202020446562756732382020201D |
:10027000202020202020446562756732392020200C |
:100280002020202020204861726477617265202040 |
:100290002020202020204C696D69742049202020D6 |
:1002A00020202020202011241FBECFEFD4E0DEBF6D |
:1002B000CDBF11E0A0E0B1E0E8E7F1E302C00590B6 |
:1002C0000D92AC32B107D9F712E0ACE2B1E001C057 |
:1002D0001D92A838B107E1F74AEA20EF37E3A9E712 |
:1002E000B1E09FE0F9012F5F3F4F84918D939150D2 |
:1002F00097FFF8CFE9E7F1E09EE08191482740952C |
:10030000915097FFFACF80918801481711F00000B3 |
:10031000FECF8091800180932C0180918101809398 |
:100320000C0180918201809309010E9462070C9464 |
:10033000BB180C940000CF938AE00E94A80A81E4C5 |
:100340000E94A80A84E40E94A80A82E50E94A80AE2 |
:100350008AE30E94A80AC09103018C2F805D8A3332 |
:1003600028F081E30E94A80A8C2F8A5D0E94A80AC7 |
:100370008DE00E94A80A8AE00E94A80ACF91089501 |
:1003800020914A0130914B01809183026AE0869F5F |
:10039000C0011124409148015091490184179507EB |
:1003A00090F4579880910901869FC0011124C2964C |
:1003B0008417950740F410928900109288008BB141 |
:1003C000877C8BB902C037FF02C020E030E080910B |
:1003D00034018F3F61F0992763E0880F991F6A9578 |
:1003E000E1F7805B9F4F821793070CF49C0187E035 |
:1003F0002C3F380714F02BEF37E0C90137FD039687 |
:10040000959587959595879590932E0180932D01CD |
:10041000880F991F880F991F281B390B20932F01D4 |
:100420000895CF93DF9380910E0190910F019C016D |
:1004300043E0220F331F4A95E1F7280F391F280F99 |
:10044000391F81E2233038071CF0E0E0F0E033C0D0 |
:1004500089E1213F38074CF0C90166E070E00E9455 |
:100460004F18CB01E8E7F5E024C080E1233C3807D2 |
:100470005CF0C90137FD0796C3E095958795CA954D |
:10048000E1F7EAE6F4E015C089E0293838074CF0D6 |
:10049000C90166E070E00E944F18CB01EEE1F5E083 |
:1004A00008C0C90163E070E00E944F18CB01EBEB7C |
:1004B000F6E0E81BF90BCF016AE070E00E944F18EC |
:1004C00060930D01F093CF01E093CE01683708F0FF |
:1004D00040C0C0910A01D0910B01CE9FB001CF9FC7 |
:1004E000700DDE9F700D112477FF02C061507F4FA9 |
:1004F000272F332727FD3A95CE01A3E0880F991FB8 |
:10050000AA95E1F78C0F9D1F8C0F9D1F67E070E08F |
:100510000E944F18261B370B809144019091450192 |
:1005200073E0969587957A95E1F7820F931F6AE0BD |
:1005300070E00E944F189B01CE0163E070E00E94C2 |
:100540004F18621773070CF49B0180910A01821BFC |
:1005500002C080910A0180930C01909184028AE08C |
:10056000989FC00111249F01281B390B12161306F6 |
:100570007CF4220F331FEFEFF0E0E21BF30BE230CD |
:10058000F10514F4E1E0F0E0E0930101579803C0B5 |
:100590008FEF8093010180910A0190910B0190935C |
:1005A000050280930402DF91CF9108958091440168 |
:1005B000909145019093C9018093C80180914801B1 |
:1005C000909149019093CB018093CA01809142019F |
:1005D00090914301892F99279093CD018093CC016D |
:1005E00080911001909111019093D1018093D001DD |
:1005F00080914001909141019093D3018093D20169 |
:1006000080914A0190914B019093D5018093D40140 |
:100610008091010199279093D7018093D601809111 |
:100620006301909164019093D9018093D8018091E6 |
:10063000820299279093DB018093DA0180918302F3 |
:1006400099279093DD018093DC01809184029927A2 |
:100650009093DF018093DE0180918502992790932A |
:10066000E1018093E0018091860299279093E30154 |
:100670008093E2018E709070959587959093E50137 |
:100680008093E40180910001992790930702809361 |
:1006900006020895F8948091390190913A012091D1 |
:1006A0007101309172017894892B09F041C0409119 |
:1006B0003701509138014115510589F080914E0163 |
:1006C000682F7727B3E0660F771FBA95E1F710928E |
:1006D000020180916F008F7D80936F0020C0809118 |
:1006E00060018531F0F081E0809302012091630187 |
:1006F000309164018BE0293B380708F09A0187E0CC |
:100700002C3F380710F02BEF37E02135310530F45E |
:1007100080913401882311F4BA0101C0B901579ABC |
:1007200002C05798BA01109272011092710118C05C |
:10073000B901809134018A3028F4285F374010F0E5 |
:1007400060E070E0579A10924E011092640110928E |
:1007500063011092020180916F008F7D80936F0082 |
:10076000209182022F3FB9F0CB01AA27BB27332764 |
:1007700044275527BC01CD010E94101897FF04C0E3 |
:1007800061507F4F8F4F9F4FBB2797FDBA95A92F81 |
:10079000982F872FBC01209101012F3FC1F0CB0181 |
:1007A000AA27BB27332744275527BC01CD010E9428 |
:1007B000101897FF04C061507F4F8F4F9F4FBB278A |
:1007C00097FDBA95A92F982F872FBC015798209194 |
:1007D00000012F3FC1F0CB01AA27BB2733274427B5 |
:1007E0005527BC01CD010E94101897FF04C061502D |
:1007F0007F4F8F4F9F4FBB2797FDBA95A92F982FFB |
:10080000872FBC0157986115710511F0685C7F4F07 |
:1008100087E06C3F780710F06BEF77E0CB0108952D |
:1008200085B1837F85B984B18C6084B95A98529A16 |
:1008300082E88093800089E08093810080916F003E |
:10084000816080936F00089596B5980F86B5891BD7 |
:1008500087FDFCCF0895CF93C82F78948093000133 |
:10086000C150CF3F59F057988CE291E00E942A1076 |
:10087000579A8CE291E00E942A10F2CF88EE93E022 |
:100880000E942A10CF910895AF92BF92CF92DF922B |
:10089000EF92FF920F931F93CF93DF938C013CE273 |
:1008A000A32E31E0B32EC12CD12C80B7877F80BF1F |
:1008B000C801880F991F880F991F90934B0180934F |
:1008C0004A0110924901109248010E94C001109201 |
:1008D00076010E9428168CE291E00E9416109093F7 |
:1008E0007801809377011BC00E94641180914801B8 |
:1008F000909149018937910590F08BB1877C8BB934 |
:1009000085B1837F85B984B18C6084B95A98529A35 |
:100910008AE00E942B048AE0809389013EC0809186 |
:100920007701909178010E941F108823E9F2E80175 |
:1009300013E0CC0FDD1F1A95E1F7D0934B01C09364 |
:100940004A010E94C001EE24FF248701EA14FB043F |
:100950000C051D0558F484E60E9424040E944C0EE8 |
:100960000894E11CF11C011D111DF0CF0E946411BF |
:1009700080914801909149018B35910588F08BB1A8 |
:10098000877C8BB985B1837F85B984B18C6084B94C |
:100990005A98529A8AE00E942B0480E090E02BC083 |
:1009A000C601B5012FE030E040E050E00E9462183F |
:1009B000A21AB30AC40AD50A0894A108B108C1084A |
:1009C000D1088FE0A816B104C104D10418F481E065 |
:1009D00090E011C00E942816809176018F5F80936D |
:1009E00076018091760166E00E942F18909376013F |
:1009F0000E944810A2CFDF91CF911F910F91FF90DD |
:100A0000EF90DF90CF90BF90AF900895CF93DF939A |
:100A1000EC0121978FEFCF3FD807E9F00E946411D6 |
:100A2000809112019091130188589F4F20914801A5 |
:100A3000309149018217930760F78BB1877C8BB99E |
:100A400085B1837F85B984B18C6084B95A98529AF4 |
:100A500081E090E002C080E090E0DF91CF910895C6 |
:100A600001972FEF8F3F9207D9F780E090E008952C |
:100A7000CF92DF92EF92FF920F931F93CF93DF936A |
:100A8000CDB7DEB763970FB6F894DEBF0FBECDBF0C |
:100A90008E010F5F1F4F83E1E4E1F1E0D801019087 |
:100AA0000D928A95E1F7EE24AFEFFA2E579A85B1B1 |
:100AB000837F85B984B18C6084B95A98529A8AE050 |
:100AC0000E94A80A8DE00E94A80A82E090E00E949D |
:100AD000060580910301080F111DF8018081282F60 |
:100AE00033278CE291E0289FA001299F500D389F69 |
:100AF000500D1124CA018C599F4F0E942A108091D9 |
:100B0000710190917201892B09F0CDC180B7877F67 |
:100B100080BFF8948BB1877C8BB985B1837F85B911 |
:100B200084B18C6084B95A98529A109247011092FD |
:100B3000460184EF91E00E94060580914801909162 |
:100B40004901909313018093120187E00E943C11A8 |
:100B50006C0184EF91E0909389008093880010925B |
:100B600049011092480100E010E080E197E20E9404 |
:100B70003005109349010093480180E197E20E94FB |
:100B800030051092890180EC80937C008BB1877CCA |
:100B90008BB985B1837F85B984B18C6084B95A984B |
:100BA000529A5C9A5D9A109349010093480108E7B4 |
:100BB00010E02398229A529A81E090E00E9430053A |
:100BC00080E00E943C118536910518F051E0F52A2D |
:100BD00002C08EEFF82285B1837F85B984B18C6025 |
:100BE00084B95A98529A8CE291E00E9430050150E3 |
:100BF000104017FFDECF8BB1877C8BB985B1837F27 |
:100C000085B984B18C6084B95A98529A5B9A5D9A7E |
:100C100004E810E02298239A529A81E090E00E9422 |
:100C2000300581E00E943C118536910518F0A2E064 |
:100C3000FA2A02C0BDEFFB2285B1837F85B984B15A |
:100C40008C6084B95A98529A8CE291E00E943005E7 |
:100C50000150104017FFDECF8BB1877C8BB985B177 |
:100C6000837F85B984B18C6084B95A98529A5B9A13 |
:100C70005C9A0EE610E084B18C6084B9529881E0F1 |
:100C800090E00E94300582E00E943C11853691057B |
:100C900018F0E4E0FE2A02C0FBEFFF2285B1837F5B |
:100CA00085B984B18C6084B95A98529A8AE491E0EB |
:100CB0000E9430050150104017FFDDCF8BB1877CBB |
:100CC0008BB985B1837F85B984B18C6084B95A981A |
:100CD000529A5B9A08E710E02298239A529A81E090 |
:100CE00090E00E94300580E00E943C11C816D906B1 |
:100CF00018F447EFF42202C058E0F52A85B1837F4B |
:100D000085B984B18C6084B95A98529A8AE491E08A |
:100D10000E9430050150104017FFDECF8BB1877C59 |
:100D20008BB985B1837F85B984B18C6084B95A98B9 |
:100D3000529A5D9A04E810E02298239A529A81E030 |
:100D400090E00E94300582E00E943C11C816D9064E |
:100D500018F48FEDF82202C0A0E2FA2A85B1837F51 |
:100D600085B984B18C6084B95A98529A88E691E02A |
:100D70000E9430050150104017FFDECF8BB1877CF9 |
:100D80008BB985B1837F85B984B18C6084B95A9859 |
:100D9000529A5C9A0EE610E084B18C6084B9529845 |
:100DA00081E090E00E94300581E00E943C11C8166D |
:100DB000D90618F4BFEEFB2202C0E0E1FE2A85B19D |
:100DC000837F85B984B18C6084B95A98529A88E639 |
:100DD00091E00E9430050150104017FFDDCF8BB12C |
:100DE000877C8BB985B1837F85B984B18C6084B9E8 |
:100DF0005A98529A8091C1008F778093C100809158 |
:100E0000C1008F7B8093C1007894FBEECF16D10494 |
:100E100008F449C0909103018AEF989FC001112402 |
:100E20000E942A108F2D992780FD04C0F1E0EF2E3B |
:100E300081E405C081FD07C0E2E0EE2E82E40E945D |
:100E4000A80A8BE21AC082FD04C073E0E72E83E497 |
:100E5000F6CF83FD04C064E0E62E81E60BC084FD7E |
:100E600004C055E0E52E82E605C085FD08C046E0D9 |
:100E7000E42E83E60E94A80A8DE20E94A80AE0926E |
:100E80008901EE2021F08E2D0E942B04FCCF8E2DA7 |
:100E90000E942B048EE20E94A80A8AE00E94A80AFF |
:100EA0008DE00E94A80A63960FB6F894DEBF0FBECD |
:100EB000CDBFDF91CF911F910F91FF90EF90DF9009 |
:100EC000CF900895CFEFD4E0DEBFCDBFEE24E7B8DA |
:100ED00080E188B98EEB8AB9EBB88EE084B981EFF6 |
:100EE00085B9579885B1806C85B983EF91E0C29739 |
:100EF00097FFFDCF1E9B06C01F9B02C081E007C06D |
:100F000082E005C01F9B02C083E001C084E08093A3 |
:100F10000301189905C0809103018C5F8093030140 |
:100F200080910301885F8093030180910C019927D0 |
:100F300090930B0180930A01879731F48EE290E041 |
:100F400090930B0180930A0178940E94B40A0E9446 |
:100F500010040E94871180E50E94DC120E94371065 |
:100F60000E94641184EF91E00E9416109093780122 |
:100F70008093770106C08091710190917201892B55 |
:100F800041F480917701909178010E941F1088238D |
:100F900091F310924B0110924A010E94C00181E02E |
:100FA00080937C00109264011092630181E385B903 |
:100FB0008AE00E94A80A8DE00E94A80A809171012F |
:100FC00090917201892B11F40E94380585E690E01A |
:100FD0000E9416108C0186E690E00E94161087E6AB |
:100FE00090E00E94161090937801809377018EEF25 |
:100FF00090E00E9416106C0189E690E00E941610A5 |
:10100000EC010E949B010E94931710928102809133 |
:10101000C10080688093C100E090760110921301B6 |
:10102000109212010E944A0390934B0180934A014F |
:10103000892B31F40E944A0390934B0180934A011B |
:1010400080917601282F33278E2D992787FD909543 |
:101050002817390771F0109206011092080186E9ED |
:1010600090E00E9416109093780180937701E090B1 |
:10107000760180914A0190914B01892BA1F5109244 |
:1010800035011092340110920801C8010E941F100E |
:101090008823A9F180B7877F80BF81E08093060114 |
:1010A0008BB1877C8BB985B1837F85B984B18C6026 |
:1010B00084B95A98529A809112019091130120910B |
:1010C0004801309149012817390710F4019704C0ED |
:1010D0008217930728F401969093130180931201CD |
:1010E00082E390E009C080910601882319F081E035 |
:1010F000809335018CED95E00E9416108C01809153 |
:101100000601882321F010924B0110924A010E949F |
:10111000C001809108018150809308018F3F09F040 |
:1011200081CF82E3809308010E94901480914C014A |
:1011300090914D01892B21F00E944C0E0E94B40D1C |
:1011400080910601882341F080910701882321F0D6 |
:101150000E94481010920701C6010E941F108823A8 |
:1011600009F4F4C082E390E00E9416106C018091B3 |
:101170003B01282F332780913C0190913D01B9011B |
:101180000E943B18809148019091490190933D0144 |
:1011900080933C0181E080933B018091120190910A |
:1011A00013016817790798F0681B790B8091850205 |
:1011B0009927689F9001699F300D789F300D112409 |
:1011C000B901F6E076956795FA95E1F702C060E01F |
:1011D00070E080914401909145018617970710F4C3 |
:1011E000019604C06817790728F401979093450188 |
:1011F0008093440180914401909145018B30910589 |
:1012000088F0681B790B77FF02C0695F7F4FE3E0CE |
:1012100075956795EA95E1F7860F971F90934501BD |
:1012200080934401E0914401F0914501CF016AE0CF |
:1012300070E00E943B1840918302842F9927861703 |
:101240009707E8F48AE0489FC00111249F01281BFA |
:10125000390BC901880F991F820F931F2FEF30E0C0 |
:10126000A901481B590BCA014931510514F489E100 |
:1012700090E08F3F910521F01CF0C90101C08FEF74 |
:10128000809300018091320190913301845F9140FD |
:10129000B0F084EF91E0909333018093320180911C |
:1012A000400190914101893C910548F080914A01AB |
:1012B00090914B01892B19F081E0809335012091A9 |
:1012C000320130913301C901969587959093410180 |
:1012D0008093400140913401453668F0809130019F |
:1012E00090913101969587952817390720F483E06E |
:1012F00080933E0102C010923E0180914A0190917C |
:101300004B01892B71F0453660F02431310548F4EA |
:101310008091300190913101899718F081E080939C |
:101320003501109231011092300110923301109268 |
:1013300032010E94110280914C0190914D01009761 |
:1013400029F0019790934D0180934C01CE010E94AA |
:101350001F10882379F085E090E00E941610EC01C0 |
:10136000809134018F3F19F08F5F8093340181E0C9 |
:101370008093070180917701909178010E941F105E |
:10138000882331F080914001909141010A9728F023 |
:1013900080913501882309F445CE84E690E00E94CF |
:1013A000161090937801809377011092340141E0F8 |
:1013B000F42EF092060180B7877F80BF80913501BF |
:1013C000882309F42FCE80910E0190910F01853F63 |
:1013D000910508F427CE579A1092470110924601C2 |
:1013E0001092350180918602282F33272E7030709D |
:1013F000220F331F809110019091110168E170E07C |
:101400000E943B18261B255F24300CF424E0822F19 |
:10141000992787FD90950E944404882309F490C081 |
:1014200082E080933E011092060188E090E0909364 |
:101430004B0180934A010E94C00110923301109227 |
:101440003201109231011092300180B78C7F80BF41 |
:1014500080B78A6080BF82E390E00E94161090936C |
:1014600078018093770180917701909178010E94B3 |
:101470001F108823C1F3209186022E7080911001E5 |
:101480009091110134E0969587953A95E1F7281BE4 |
:101490002E5E28300CF428E0822F992787FD909546 |
:1014A000C3E0880F991FCA95E1F7C89690934B0146 |
:1014B00080934A010E94C0010E944A03892B41F097 |
:1014C0008CE291E00E94161090937801809377014E |
:1014D00081E080933E0122C08091480190914901B2 |
:1014E00085369105A8F08BB1877C8BB985B1837F58 |
:1014F00085B984B18C6084B95A98529A8AE00E9466 |
:101500002B040E944A03892B19F081E08093350156 |
:101510008091320190913301892B41F080917701C4 |
:10152000909178010E941F108823B1F210923E0121 |
:1015300082E390E00E941610EC01B7E0EB2E72CD32 |
:101540000E944A03892B09F46DCDF09235016ACDD2 |
:10155000982F8091C10083FF06C08091C00085FF55 |
:10156000FCCF9093C6000895CF93CFB7F8948091A5 |
:10157000C1008F778093C1008091C1008F7B8093E1 |
:10158000C10050985898519A59988091C000826033 |
:101590008093C0008091C2008F778093C2008091B9 |
:1015A000C2008F7B8093C2008091C2008F7D8093A8 |
:1015B000C2008091C2008F7E8093C2008091C200E1 |
:1015C000877F8093C2008091C1008B7F8093C10090 |
:1015D0008091C20084608093C2008091C2008260CA |
:1015E0008093C2008091C10080618093C10080918E |
:1015F000C10088608093C1008091C00087FF03C054 |
:101600008091C600F9CF8091C10080688093C100AD |
:101610008091C1008F7B8093C100809127019091C0 |
:1016200028010E9416109093770280937602109200 |
:10163000560110925401109253011092520181E010 |
:10164000809329011092BC018EE18093BD0110921C |
:10165000C0018BE08093BE011092BF018DE00E941B |
:10166000A80A8AE00E94A80A82E40E94A80A8CE4E0 |
:101670000E94A80A8AE30E94A80A86E50E94A80A96 |
:1016800080E30E94A80A8EE20E94A80A83E30E94D7 |
:10169000A80A80E30E94A80A81E60E94A80A8DE0B9 |
:1016A0000E94A80A8AE00E94A80A88E40E94A80A68 |
:1016B00087E50E94A80A8AE30E94A80A82E30E94A2 |
:1016C000A80A8EE20E94A80A80E30E94A80A80E28B |
:1016D0000E94A80A82E50E94A80A85E60E94A80A3C |
:1016E00086E70E94A80A80912C016AE00E942F18C8 |
:1016F000805D0E94A80A80912C016AE00E942F1848 |
:10170000892F805D0E94A80ACFBFCF910895809154 |
:10171000C00086FF29C080912901882309F58091A6 |
:101720005701909158010196909358018093570169 |
:10173000FC01E85FFD4FE081ED3019F08E36910538 |
:1017400039F4109258011092570181E080932901D9 |
:101750008091C00081608093C000E093C60008952E |
:10176000109258011092570108951F920F920FB6D0 |
:101770000F9211242F933F934F935F938F939F93D7 |
:10178000AF93BF93CF93DF93EF93FF935091C60036 |
:1017900080915601882309F074C040915B01442375 |
:1017A00071F4533279F450938A0181E080935B01A4 |
:1017B00083E290E090935A018093590162C04233D2 |
:1017C00008F05BC02091590130915A01E42FFF27A6 |
:1017D0005D3069F0E657FE4F50834F5F40935B01E9 |
:1017E000250F311D30935A01209359014AC0DF0162 |
:1017F000A657BE4FFD0132978081281B3109ED01AC |
:1018000021978881281B3109C9019F7090935A0143 |
:1018100080935901689415F8969587951694E1F789 |
:10182000982F935C2F733070235C8081981701F59B |
:1018300088812817E9F480ED97E090934D0180931B |
:101840004C015C934F5F4093550181E080935601BA |
:1018500080918C01823571F488E190E02CE00FB624 |
:10186000F894A895809360000FBE2093600002C09A |
:101870001092560110925B0104C080935B0180932B |
:101880005601FF91EF91DF91CF91BF91AF919F9161 |
:101890008F915F914F913F912F910F900FBE0F90BD |
:1018A0001F901895AC01A0E0B0E09D01A817B90702 |
:1018B00048F4E8E0F2E08191280F311D1196A41759 |
:1018C000B507C8F33F70FD01E85FFD4FC90176E041 |
:1018D000969587957A95E1F7835C80831196FD0153 |
:1018E000E85FFD4F2F733070822F835C8083A75F8A |
:1018F000BD4F8DE08C931092290180910802809356 |
:10190000C6000895BF92CF92DF92EF92FF920F939D |
:101910001F93CF93DF93CDB7DEB72C859D850E85C2 |
:10192000BB2483E2809308029F599093090220937D |
:101930000A0233E0E32EF12C002309F49EC0CF8489 |
:10194000D888BE016D5E7F4FA989BA890150109772 |
:1019500009F493C01097B9F0F601EB0DF11DB394A3 |
:101960009081119791F4002349F1FB016E5F7F4F45 |
:10197000DB01C080D1806E5F7F4F0D90BC91A02DA8 |
:10198000BB24015002C090E019C01097B9F0F601D5 |
:10199000EB0DF11DB3944081119791F4002341F1B7 |
:1019A000FB016E5F7F4FDB01C080D1806E5F7F4F98 |
:1019B0000D90BC91A02DBB24015002C040E018C086 |
:1019C0001097B1F0F601EB0DF11DB3941081119752 |
:1019D00081F4002371F0FB013296DB01CD90DC90A5 |
:1019E000BF016E5F7F4FA081B181BB24015001C058 |
:1019F00010E0F701E85FFD4F892F86958695835C9F |
:101A000080830894E11CF11CF701E85FFD4F892FEA |
:101A100099278370907024E0880F991F2A95E1F729 |
:101A200055279A0194E0369527959A95E1F7822BF0 |
:101A3000835C80830894E11CF11CF701E85FFD4F93 |
:101A40004F705070440F551F440F551F812F992719 |
:101A500026E0969587952A95E1F7842B835C808311 |
:101A60000894E11CF11CF701E85FFD4F1F73135C44 |
:101A700010830894E11CF11C6ACFC7010E94520C2C |
:101A8000DF91CF911F910F91FF90EF90DF90CF905A |
:101A9000BF900895A3E07A2F40915501465044230A |
:101AA00009F458C0E72FFF27E657FE4F80818D537A |
:101AB0007F5FE72FFF27E657FE4F20812D537F5F83 |
:101AC000E72FFF27E657FE4F30813D537F5FE72F1B |
:101AD000FF27E657FE4F60816D537F5F9927880F80 |
:101AE000991F880F991F522F52955F70582B822F84 |
:101AF00099278F709070F4E0880F991FFA95E1F79D |
:101B0000232F26952695282B832F99278370907055 |
:101B1000E6E0880F991FEA95E1F7682B41504F3FA7 |
:101B2000C9F0EA2FFF27E657FE4F5083AF5F4150C1 |
:101B30004F3F81F0EA2FFF27E657FE4F2083AF5F2C |
:101B400041504F3F39F0EA2FFF27E657FE4F6083A1 |
:101B5000AF5FA5CF8DE891E090935401809353013E |
:101B6000A350A0935201089580915601882309F44F |
:101B700092C00E944A0D80918B01863611F48091AB |
:101B80008C0180918C0199278437910509F445C017 |
:101B9000853791054CF48136910509F468C0843687 |
:101BA000910509F44DC06FC08637910509F45BC0FB |
:101BB0008637910524F087379105B9F064C0E0912C |
:101BC0005301F0915401908180910301981719F00D |
:101BD0008081882319F410924F0103C082E0809322 |
:101BE0004F018091510188604CC0E0915301F09108 |
:101BF00054018081882329F09081809103019817F6 |
:101C000029F4CF0101960E942C1701C082E0809335 |
:101C10004F0180915101806134C080910301E091B6 |
:101C20005301F0915401E80FF11D319780818093A9 |
:101C30004E0184EF91E0909338018093370123C0E7 |
:101C4000E0915301F091540190818AE0989FC00186 |
:101C500011249093280180932701892BA1F0809172 |
:101C6000510182600EC08091510181600AC0E091F3 |
:101C70005301F09154018081809350018091510172 |
:101C8000846080935101109254011092530110927C |
:101C90005201109256010895CF93DF93CDB7DEB76E |
:101CA00061970FB6F894DEBF0FBECDBF80912901BA |
:101CB000882319F40E94870BE6C08091510182FFAE |
:101CC00030C080915001992724E0880F991F2A95F0 |
:101CD000E1F78A559F4F40E150E0BC01CE010196EB |
:101CE0000E94C01780E190E09F938F93CE010196F0 |
:101CF0009F938F9381E090E09F938F9380E591E095 |
:101D00009F938F9382E08F9385E08F9381E48F93ED |
:101D10000E94820C8FEF80935001809151018B7F44 |
:101D2000A8C08091270190912801892B41F08091D2 |
:101D30007602909177020E941F10882329F48091E7 |
:101D40005101992781FF20C00E94D60282E490E0D1 |
:101D50009F938F9386EC91E09F938F9381E08F9375 |
:101D600085E08F9384E48F930E94820C80912701F9 |
:101D7000909128010E94161090937702809376022A |
:101D8000809151018D7F15C080FF19C08AE090E0DD |
:101D90009F938F938CEB91E09F938F9381E08F9330 |
:101DA00085E08F9386E58F930E94820C809151018C |
:101DB0008E7F809351018DB79EB707965FC083FFDA |
:101DC00035C080914F01882319F481E0898B01C0CF |
:101DD000198A88E090E09F938F9380E892E09F9328 |
:101DE0008F9321E030E03F932F9383E091E09F9326 |
:101DF0008F933F932F938FE491E09F938F933F9323 |
:101E00002F93CE0141969F938F9384E08F9385E02B |
:101E10008F9385E58F930E94820C80915101877F7B |
:101E2000809351018DB79EB7439628C084FF2BC085 |
:101E300080914F01882319F481E0898B01C0198AB0 |
:101E400021E030E03F932F938FE491E09F938F93B5 |
:101E50003F932F93CE0141969F938F9382E08F9370 |
:101E600085E08F9387E58F930E94820C80915101CA |
:101E70008F7E809351018DB79EB70B960FB6F89465 |
:101E80009EBF0FBE8DBF61960FB6F894DEBF0FBE2A |
:101E9000CDBFDF91CF9108951F93CF93DF93EC01D6 |
:101EA00010E08881882369F0FE01E10FF11D1F5FBA |
:101EB00080810E94A80AFE01E10FF11D8081882324 |
:101EC00099F7DF91CF911F9108951F920F920FB64E |
:101ED0000F9211242F933F934F935F936F937F93B0 |
:101EE0008F939F93AF93BF93EF93FF9380913F01A5 |
:101EF000882319F0815080933F0180915E018150C9 |
:101F000080935E018F3F09F080C083E080935E0183 |
:101F100080915C0190915D01019690935D018093A9 |
:101F20005C018091390190913A01009719F1019774 |
:101F300090933A018093390121E0883B920739F070 |
:101F400021E08C32920719F08436910599F480E5EE |
:101F50000E94E6128091390190913A01885B91408C |
:101F600049F48091E6019091E70101969093E70191 |
:101F70008093E60180916101882331F080916101B5 |
:101F800081508093610102C080936001809137018C |
:101F900090913801009729F0019790933801809330 |
:101FA000370180913601882319F0815080933601E2 |
:101FB00080912A0190912B01019790932B0180939E |
:101FC0002A018F5F9F4F09F5209142013091430113 |
:101FD0008DEF283E380750F48091440190914501DF |
:101FE000280F391F309343012093420188E795E081 |
:101FF00090932B0180932A018091390190913A01AD |
:10200000892B19F480E50E94E612FF91EF91BF91B0 |
:10201000AF919F918F917F916F915F914F913F9180 |
:102020002F910F900FBE0F901F90189520915C017B |
:1020300030915D01280F391FC90101970895209142 |
:102040005C0130915D01821B930B892F990F990BD5 |
:1020500080780895CF93DF930E941610EC01CE0193 |
:102060000E941F108823D9F3DF91CF91089586EA4B |
:1020700080937A0087EC80937C0080917A00806462 |
:1020800080937A0080917B00806480937B00089528 |
:10209000809136018150809336018F3F09F089C0CD |
:1020A00084E68093360180915F01815080935F01C7 |
:1020B0008F3F09F050C020917C0097EC90937C00FA |
:1020C00080B7806880BF83ED80937A0080917A002A |
:1020D000806180937A0090937C0080917A00806484 |
:1020E00080937A0080917A0084FFFCCF20937C005B |
:1020F000209178003091790083E190E0289FA00141 |
:10210000299F500D389F500D11249A0146E03695B5 |
:1021100027954A95E1F72F3F310519F010F02FEF81 |
:1021200030E08091100190911101820F931F9695DC |
:102130008795909311018093100110927A008091FD |
:102140007B00806480937B0080B78F7780BF83E0C3 |
:1021500080935F01089520917C0093EC90937C0024 |
:1021600080B7806880BF83ED80937A0080917A0089 |
:10217000806180937A0090937C0080917A008064E3 |
:1021800080937A0080917A0084FFFCCF20937C00BA |
:10219000209178003091790080910E0190910F018B |
:1021A000820F931F9695879590930F0180930E0150 |
:1021B00058C020917C0096EC90937C0080B780689A |
:1021C00080BF83ED80937A0080917A008061809354 |
:1021D0007A0090937C0080917A00806480937A00EA |
:1021E00080917A0084FFFCCF20937C0080910C01C9 |
:1021F000282F33278091780090917900829FA00149 |
:10220000839F500D929F500D11249A0194E03695B2 |
:1022100027959A95E1F780913C0190913D01820FBD |
:10222000931F90933D0180933C0180913B018F5F10 |
:1022300080933B014091480150914901420F531F47 |
:102240005695479550934901409348018091460126 |
:10225000909147018417950720F4509347014093CC |
:10226000460110927A0080917B00806480937B000D |
:1022700080B78F7780BF089520917C00982F906C55 |
:1022800090937C0080B7806880BF83ED80937A0054 |
:1022900080917A00806180937A0090937C00809195 |
:1022A0007A00806480937A0080917A0084FFFCCF6A |
:1022B00020937C0010927A0080B78F7780BF809146 |
:1022C000780090917900089586E00E943C11209159 |
:1022D0000C013327829FA001839F500D929F500DC8 |
:1022E00011249A0154E0369527955A95E1F73093D9 |
:1022F000490120934801809146019091470182173E |
:10230000930720F43093470120934601089580916C |
:102310008100806C80938100809181008064809333 |
:10232000810080916F00806280936F0080916F00C8 |
:10233000816080936F0084E08093B10008951F92C4 |
:102340000F920FB60F9211242F933F938F939F9369 |
:1023500080916501282F33278F5F8093650121309D |
:102360003105B1F0223031051CF4232B41F038C087 |
:1023700022303105B1F02330310511F131C08091A7 |
:102380002D0190912E01909389008093880028C0A0 |
:1023900080912F0120912D0130912E01823058F033 |
:1023A00008C080912F0120912D0130912E018330A2 |
:1023B00011F42F5F3F4F309389002093880010C0A5 |
:1023C00080912F0120912D0130912E01882311F051 |
:1023D0002F5F3F4F30938900209388001092650152 |
:1023E000809162018F5F809362019F918F913F91F5 |
:1023F0002F910F900FBE0F901F9018951F920F9264 |
:102400000FB60F9211242F933F934F935F936F93C7 |
:102410007F938F939F93AF93BF938091810086FFAB |
:1024200017C08091620180936A018091860090912B |
:1024300087009093670180936601809181008F7B74 |
:102440008093810084E6809361011092B200A5C060 |
:102450008091810080648093810080916201282FA7 |
:10246000332780916A01281B3109322F2227330F2D |
:102470008091860090918700280F391F8091660116 |
:1024800090916701281B390B3093690120936801F3 |
:102490008091B200682F7727689415F8660F771F30 |
:1024A0001694E1F7AB01445D5E4F42175307A0F469 |
:1024B000C901805092409093690180936801481748 |
:1024C000590738F5805092409093690180936801D4 |
:1024D00048175907F0F419C0AB014C52514024176A |
:1024E0003507B8F4C90180509E4F909369018093DD |
:1024F00068018417950768F480509E4F9093690196 |
:10250000809368018417950720F4709369016093A4 |
:102510006801809168019091690163E070E00E9418 |
:102520003B187093690160936801809160018F3F4F |
:1025300051F06D587A40635F714028F480916001DA |
:102540008F5F8093600180916801909169018C5147 |
:102550009C4030F48CE19CE0909369018093680189 |
:1025600080916801909169018C519C404091630178 |
:10257000509164019A01220F331F240F351F280F39 |
:10258000391F369527953695279530936901209305 |
:1025900068013093640120936301BF91AF919F91D3 |
:1025A0008F917F916F915F914F913F912F910F90FC |
:1025B0000FBE0F901F90189590910301990F980FDF |
:1025C0009093BA0085EC8093BC0008951092BC00F3 |
:1025D00090910301990F980F9093BA0085EC809326 |
:1025E000BC0008951F920F920FB60F9211242F93E3 |
:1025F0003F934F935F936F937F938F939F93AF938B |
:10260000BF93EF93FF938091B9009927887F9070D3 |
:102610008038910529F1813891053CF4009709F43F |
:102620005FC18036910591F067C1883B910509F43F |
:10263000A8C0893B91052CF4883A910509F4A1C002 |
:102640005BC1883F910509F44BC156C18091BC0024 |
:1026500080688093BC0010927501109274014FC184 |
:102660004091BB008091BC0080688093BC00809149 |
:102670007401282F33278F5F809374012130310537 |
:1026800009F44AC0223031051CF4232B31F06FC00D |
:102690002230310509F45BC06AC0442369F480919B |
:1026A0007301882349F08091390190913A01892B77 |
:1026B00019F081E090E011C08091390190913A01C8 |
:1026C000892B81F080917301882361F0842F9927F1 |
:1026D00063E0880F991F6A95E1F7909372018093E8 |
:1026E000710104C010927201109271014093730144 |
:1026F00080916C0190916D012091440130914501D0 |
:10270000820F931F90936D0180936C0180916B01F8 |
:102710008F5F80936B012EC0209171013091720107 |
:102720002115310551F0842F992787709070280F5B |
:10273000391F3093720120937101842F992753E040 |
:10274000969587955A95E1F78093750113C080910E |
:102750006E01883078F480916E01E82FFF27E858E9 |
:10276000FD4F40838F5F80936E0182E001C08EEF4A |
:102770008093740184EF91E090933A018093390142 |
:10278000BEC080917501282F3327442755278F5FBE |
:1027900080937501F9012F31310508F097C0EC5C89 |
:1027A000FF4FEE0FFF1F0590F491E02D09948091EB |
:1027B0004401909145018E3F910570F48091440150 |
:1027C00082C0809144019091450121E08E3F9207A3 |
:1027D00018F49695879577C08EEF75C0809171013A |
:1027E00090917201892B11F48AEF6DC080913401B0 |
:1027F000823310F488E267C090910001809101015A |
:10280000891708F460C09093BB0066C080910D01E9 |
:102810005AC08091400157C080914201909143017C |
:10282000892F992786954FC080914201909143014D |
:10283000892F992748C08091100145C080916F0170 |
:1028400042C08EE140C020916B01223348F433270F |
:1028500080916C0190916D01B9010E943B1804C0F8 |
:1028600060914401709145016E3F710518F46093C9 |
:10287000BB0003C08EEF8093BB0010926D011092DD |
:102880006C0110926B0128C0809180021CC0809165 |
:10289000810219C08091820216C08091830213C008 |
:1028A0008091840210C0809185020DC080918602C3 |
:1028B0000AC08091870207C08091890104C01092EC |
:1028C000BB000AC085EA8093BB0006C08FEF8093EF |
:1028D000BB008EEF809375018091BC0080680DC0B5 |
:1028E00085ED8093BC0080916F01909170010196FD |
:1028F0009093700180936F0185EC8093BC00FF91F1 |
:10290000EF91BF91AF919F918F917F916F915F9167 |
:102910004F913F912F910F900FBE0F901F901895E0 |
:1029200080916E01883030F088E792E00E942C1789 |
:1029300010926E0108951F920F920FB60F921124FC |
:102940000F900FBE0F901F9018951F920F920FB609 |
:102950000F9211241F932F933F934F935F936F9385 |
:102960007F938F939F93AF93BF93CF93EF93FF93F7 |
:102970001EE180913F01882309F055C100B605FE94 |
:1029800002C0C1E001C0C0E08091860280FD84C029 |
:102990008091760199278230910509F445C08330F2 |
:1029A00091052CF4009779F0019711F124C184303E |
:1029B000910509F450C0843091050CF440C005978E |
:1029C00009F460C018C12398229A529ACC2309F4C2 |
:1029D000E4C08BB1877E8BB95D9A80910701882313 |
:1029E00011F00E94481080B78E7F80BF81EC82C0BA |
:1029F0008BB1877E8BB95D9ACC2309F0B8C0229841 |
:102A0000239A529A80910701882311F00E9448105E |
:102A100080EC80937C0080B7836080BF80917601DA |
:102A20008F5F80937601D5C02298239A529ACC2347 |
:102A300009F48DC08BB18F7C8BB95B9A80C08BB150 |
:102A40008F7C8BB95B9ACC2309F06DC084B18C600C |
:102A500084B9529860C084B18C6084B95298CC23F8 |
:102A600009F44BC08BB1877D8BB95C9A80910701CB |
:102A7000882311F00E94481080EC80937C0080B77E |
:102A80008E7FCBCF8BB1877D8BB95C9ACC2309F03D |
:102A9000AEC02398229A8EC0809176019927823009 |
:102AA000910509F443C0833091052CF4009779F027 |
:102AB000019741F1A0C08430910509F45CC08430D5 |
:102AC00091050CF449C0059709F46CC094C0229894 |
:102AD000239A529ACC2389F08BB1877E8BB95D9A69 |
:102AE00080910701882311F00E94481080B78E7FE3 |
:102AF00080BF80EC80937C0091CF8BB18F7C8BB9B1 |
:102B00005B9A79C08BB1877E8BB95D9ACC2359F4DF |
:102B10002398229A529A80910701882311F00E94EB |
:102B2000481081EC76CF2298239A23C02398229ACA |
:102B3000529ACC2361F08BB1877D8BB95C9A8091DE |
:102B40000701882311F00E94481082EC96CF8BB1C8 |
:102B5000877E8BB95D9A4FC08BB1877D8BB95C9AAC |
:102B6000CC2329F484B18C6084B952984BCF23983C |
:102B7000229A529A40C084B18C6084B95298CC2376 |
:102B800061F08BB18F7C8BB95B9A809107018823B0 |
:102B900011F00E94481081EC70CF8BB1877D8BB90A |
:102BA0005C9A29C08BB18F7C8BB95B9ACC23F9F4EA |
:102BB0002298239A529A80910701882311F00E944B |
:102BC000481082EC80937C0080B7836080BFC09304 |
:102BD00076018091320190913301019690933301F7 |
:102BE0008093320180913E0180933F0104C084B103 |
:102BF0008C6084B952988091300190913101019696 |
:102C0000909331018093300111501F3F61F000B665 |
:102C100005FC03C0CC2309F0B1CE00B605FE03C00D |
:102C2000CC2309F4ABCE10920701FF91EF91CF9125 |
:102C3000BF91AF919F918F917F916F915F914F91D4 |
:102C40003F912F911F910F900FBE0F901F901895DD |
:102C50008091860280FD4FC0809176019927823055 |
:102C6000910539F1833091052CF4009761F00197BB |
:102C700091F008958430910561F1843091050CF153 |
:102C8000059781F108952398229A529A8BB1877DF6 |
:102C90008BB95C9A4EC02398229A529A8BB1877E48 |
:102CA0008BB95D9A81EC80937C0080B78E7F80BF6A |
:102CB00008952298239A529A8BB1877E8BB95D9A98 |
:102CC0005DC02298239A529A8BB18F7C8BB95B9A04 |
:102CD0004BC084B18C6084B952988BB18F7C8BB916 |
:102CE0005B9A39C084B18C6084B952988BB1877D6E |
:102CF0008BB95C9A27C08091760199278230910523 |
:102D000019F1833091052CF4009761F0019799F047 |
:102D100008958430910551F184309105F4F00597C0 |
:102D200099F108952298239A529A8BB18F7C8BB98E |
:102D30005B9A82EC24C02298239A529A8BB1877EA8 |
:102D40008BB95D9A80ECAFCF2398229A529A8BB1BF |
:102D5000877E8BB95D9A81EC12C02398229A529A91 |
:102D60008BB1877D8BB95C9A82EC9DCF84B18C60EE |
:102D700084B952988BB1877D8BB95C9A80EC809333 |
:102D80007C0080B7836093CF84B18C6084B9529803 |
:102D90008BB18F7C8BB95B9A85CFF999FECF92BDB1 |
:102DA00081BDF89A80B599270895F999FECF1FBA89 |
:102DB00092BD81BD60BD0FB6F894FA9AF99A0FBE24 |
:102DC00008954AEA20E030E02617370740F4FC0176 |
:102DD0008191480F2F5F3F4F26173707C8F3842F85 |
:102DE0009927089582E080938002109281028FEFEC |
:102DF0008093820298E29093830284E68093840217 |
:102E000080E48093850284E08093860280910901AA |
:102E1000981710F08093830267E070E080E892E0FA |
:102E20000E94E1168093870208958091800282308B |
:102E300091F467E070E080E892E00E94E1168093F0 |
:102E4000870225ED36E148E050E060E872E080E07E |
:102E500090E00E94EE170895CF93DF93EC0167E0B6 |
:102E600070E00E94E1169F81981719F085E090E0CC |
:102E700057C08881823019F084E090E051C0898188 |
:102E800086FF03C00E94F21644C01092810289811D |
:102E9000282F332720FF03C08A818093820221FFDD |
:102EA00003C08B818093830222FF03C08C818093B7 |
:102EB000840223FF03C08D818093850224FF08C014 |
:102EC000909186029E708E81817F982B90938602CE |
:102ED00025FF08C090918602917F8E818E70982B7D |
:102EE0009093860280918402833718F083E7809361 |
:102EF00084028091830290910901891710F09093C8 |
:102F0000830267E070E080E892E00E94E11680931F |
:102F10008702898187FF02C00E94151780E090E038 |
:102F2000DF91CF9108952DEC36E148E050E060E06C |
:102F300070E080E892E00E94C91767E070E080E8E6 |
:102F400092E00E94E116982F80918002823021F455 |
:102F500080918702891721F00E94F2160E941517AE |
:102F60008091830290910901891710F09093830258 |
:102F700080918402833718F083E780938402089558 |
:102F8000FB01DC0102C005900D9241505040D8F782 |
:102F90000895A0E0B0E0EFECF7E10C948C186C0120 |
:102FA0007B01EA01590121978FEFCF3FD80789F0C4 |
:102FB00086010894C11CD11CC7010894E11CF11CB6 |
:102FC000F5010995F80180832197FFEFCF3FDF07D7 |
:102FD00079F7EAE0CDB7DEB70C94A818A0E0B0E02E |
:102FE000E4EFF7E10C948E188C017B01EA01690192 |
:102FF00021978FEFCF3FD80771F0F70121917F0123 |
:10300000C8010F5F1F4F622FF60109952197FFEF4F |
:10301000CF3FDF0791F7E8E0CDB7DEB70C94AA18F1 |
:10302000629FD001739FF001829FE00DF11D649FAC |
:10303000E00DF11D929FF00D839FF00D749FF00D38 |
:10304000659FF00D9927729FB00DE11DF91F639FD9 |
:10305000B00DE11DF91FBD01CF0111240895991B89 |
:1030600079E004C0991F961708F0961B881F7A957F |
:10307000C9F780950895AA1BBB1B51E107C0AA1F81 |
:10308000BB1FA617B70710F0A61BB70B881F991F09 |
:103090005A95A9F780959095BC01CD01089597FBAD |
:1030A000092E07260AD077FD04D0E5DF06D00020E0 |
:1030B0001AF4709561957F4F0895F6F79095819574 |
:1030C0009F4F0895A1E21A2EAA1BBB1BFD010DC044 |
:1030D000AA1FBB1FEE1FFF1FA217B307E407F507C8 |
:1030E00020F0A21BB30BE40BF50B661F771F881FA4 |
:1030F000991F1A9469F760957095809590959B013A |
:10310000AC01BD01CF0108952F923F924F925F9283 |
:103110006F927F928F929F92AF92BF92CF92DF92E7 |
:10312000EF92FF920F931F93CF93DF93CDB7DEB74C |
:10313000CA1BDB0B0FB6F894DEBF0FBECDBF0994E0 |
:103140002A88398848885F846E847D848C849B8437 |
:10315000AA84B984C884DF80EE80FD800C811B8145 |
:10316000AA81B981CE0FD11D0FB6F894DEBF0FBE74 |
:08317000CDBFED010895FFCF72 |
:10317800FFFF0101FB07010101281900191ED007F3 |
:103188008000050000000201030405060708090A7B |
:0C3198000B0C0D0E0F1011881301FF002E |
:00000001FF |
/BL-Ctrl_2.0/V0.30/BL_2_0.txt |
---|
0,0 → 1,7 |
Hex-Files BL-Ctrl2.0 |
Adresses 1-8 and 9-12 |
Attention: |
The firmware only works on the original processor with MikroKopter BL2.0 Bootloader |
Do not install these files via ISP - only through MKUSB |
/BL-Ctrl_2.0/V0.31/BL-Ctrl_MEGA168_V0_31b.hex |
---|
0,0 → 1,799 |
:100000000C9453010C9499010C9499010C9499014E |
:100010000C9499010C9499010C9499010C949901F8 |
:100020000C9499010C94B6140C9419120C94990127 |
:100030000C9499010C94BA110C9499010C949901A7 |
:100040000C94760F0C9499010C94C60B0C949901A6 |
:100050000C9499010C9499010C9499010C94C0147E |
:100060000C940D130C949901F21309142114241407 |
:100070002F14361439147A143C143E14FC1309144A |
:100080002114241427147A145F146214651468145C |
:100090006B146E14711474147714811481147A140F |
:1000A000811481147D1443757272656E7420202052 |
:1000B0005B302E31415D43757272656E74526177AB |
:1000C0002020202020206D41682020202020205B3F |
:1000D00031306D41685D54656D702E202020205BAD |
:1000E000302E31B0435D566F6C74616765202020FF |
:1000F0005B302E31565D72706D2028726177292039 |
:10010000202020202020536574706F696E74202099 |
:100110002020202020204D6178536574706F696E17 |
:1001200074202020202050504D536574706F696EEC |
:10013000742020202020506172616D2E50776D5305 |
:1001400063616C696E67506172616D2E4D617843B9 |
:10015000757272656E74506172616D2E4D61785466 |
:10016000656D702E2020506172616D2E5363616C3D |
:10017000652049202020506172616D2E42697473A0 |
:10018000202020202020506172616D2E53746172F6 |
:100190007450574D2020493243204C6F73742020F7 |
:1001A00020202020202044656275673136202020E1 |
:1001B00020202020202044656275673137202020D0 |
:1001C00020202020202044656275673138202020BF |
:1001D00020202020202044656275673139202020AE |
:1001E00020202020202044656275673230202020A6 |
:1001F0002020202020204465627567323120202095 |
:100200002020202020204465627567323220202083 |
:100210002020202020204465627567323320202072 |
:100220002020202020204465627567323420202061 |
:100230002020202020204465627567323520202050 |
:10024000202020202020446562756732362020203F |
:10025000202020202020446562756732372020202E |
:10026000202020202020446562756732382020201D |
:10027000202020202020446562756732392020200C |
:100280002020202020204861726477617265202040 |
:100290002020202020204C696D69742049202020D6 |
:1002A00020202020202011241FBECFEFD4E0DEBF6D |
:1002B000CDBF11E0A0E0B1E0EEEAF1E302C00590AD |
:1002C0000D92AC32B107D9F712E0ACE2B1E001C057 |
:1002D0001D92A838B107E1F74AEA20EF37E3A9E712 |
:1002E000B1E09FE0F9012F5F3F4F84918D939150D2 |
:1002F00097FFF8CFE9E7F1E09EE08191482740952C |
:10030000915097FFFACF80918801481711F00000B3 |
:10031000FECF8091800180932C0180918101809398 |
:100320000C0180918201809309010E9473070C9453 |
:10033000D6180C940000CF938AE00E94B90A81E499 |
:100340000E94B90A84E40E94B90A82E50E94B90AAF |
:100350008AE30E94B90AC09103018C2F805D8A3321 |
:1003600028F081E30E94B90A8C2F8A5D0E94B90AA5 |
:100370008DE00E94B90A8AE00E94B90ACF910895DF |
:1003800020914A0130914B01809183026AE0869F5F |
:10039000C0011124409148015091490184179507EB |
:1003A00090F4579880910901869FC0011124C2964C |
:1003B0008417950740F410928900109288008BB141 |
:1003C000877C8BB902C037FF02C020E030E080910B |
:1003D00034018F3F61F0992763E0880F991F6A9578 |
:1003E000E1F7805B9F4F821793070CF49C0187E035 |
:1003F0002C3F380714F02BEF37E0C90137FD039687 |
:10040000959587959595879590932E0180932D01CD |
:10041000880F991F880F991F281B390B20932F01D4 |
:100420000895CF93DF93E0910E01F0910F0181E2E7 |
:10043000E330F8071CF0C0E0D0E040C089E1E13FC4 |
:10044000F8074CF0CF0166E070E00E946A18CB011B |
:10045000C8E7D5E031C080E1E33CF8075CF0CF01AC |
:10046000F7FD079633E0959587953A95E1F7CAE64B |
:10047000D4E022C089E0E938F8074CF0CF0166E00B |
:1004800070E00E946A18CB01CEE1D5E015C085E08E |
:10049000E932F80754F0CF01F7FD0396959587955B |
:1004A00095958795CDEED5E007C0CF01F7FD019674 |
:1004B00095958795CAE3D7E0C81BD90BCE016AE0B2 |
:1004C00070E00E946A1860930D01D093CF01C09331 |
:1004D000CE016837D0F520910A0130910B012C9F95 |
:1004E000C0012D9F900D3C9F900D1124E92FFF27F7 |
:1004F000C901A3E0880F991FAA95E1F7820F931F06 |
:10050000820F931F67E070E00E946A18E61BF70BEA |
:10051000809144019091450173E0969587957A9575 |
:10052000E1F78E0F9F1F6AE070E00E946A18FB01DE |
:10053000C90163E070E00E946A186E177F070CF42F |
:10054000FB0180910A018E1B02C080910A018093F9 |
:100550000C018091440190914501EAEFF0E0E81B25 |
:10056000F90BE93CF10514F0E8ECF0E08FEFEE3C1C |
:10057000F80714F4EEECFFEF909184028AE0989F64 |
:10058000C00111248E0F9F1FFE01E81BF90B1E16E0 |
:100590001F067CF4EE0FFF1FCFEFD0E0CE1BDF0B6A |
:1005A000C230D10514F4C1E0D0E0C09301015798E6 |
:1005B00003C08FEF8093010180910A0190910B019C |
:1005C0009093050280930402DF91CF91089580916A |
:1005D0004401909145019093C9018093C801809195 |
:1005E0004801909149019093CB018093CA01809179 |
:1005F000420190914301892F99279093CD018093D7 |
:10060000CC0180911001909111019093D1018093C0 |
:10061000D00180914001909141019093D30180934A |
:10062000D20180914A0190914B019093D501809322 |
:10063000D4018091010199279093D7018093D6012D |
:1006400080916301909164019093D9018093D801C6 |
:100650008091820299279093DB018093DA01809147 |
:10066000830299279093DD018093DC0180918402BD |
:1006700099279093DF018093DE018091850299276D |
:100680009093E1018093E0018091860299279093F5 |
:10069000E3018093E2018E70907095958795909319 |
:1006A000E5018093E401809100019927909307026E |
:1006B000809306020895F8948091390190913A014F |
:1006C00020917101309172017894892B09F041C019 |
:1006D00040913701509138014115510589F08091C1 |
:1006E0004E01682F7727B3E0660F771FBA95E1F7C1 |
:1006F0001092020180916F008F7D80936F0020C067 |
:10070000809160018531F0F081E0809302012091B9 |
:100710006301309164018BE0293B380708F09A01AE |
:1007200087E02C3F380710F02BEF37E021353105FB |
:1007300030F480913401882311F4BA0101C0B90169 |
:10074000579A02C05798BA01109272011092710123 |
:1007500018C0B901809134018A3028F4285F3740ED |
:1007600010F060E070E0579A10924E011092640110 |
:10077000109263011092020180916F008F7D80932F |
:100780006F00209182022F3FB9F0CB01AA27BB272F |
:10079000332744275527BC01CD010E942B1897FF12 |
:1007A00004C061507F4F8F4F9F4FBB2797FDBA9575 |
:1007B000A92F982F872FBC01209101012F3FC1F055 |
:1007C000CB01AA27BB27332744275527BC01CD01DE |
:1007D0000E942B1897FF04C061507F4F8F4F9F4F8F |
:1007E000BB2797FDBA95A92F982F872FBC01579843 |
:1007F000209100012F3FC1F0CB01AA27BB2733274F |
:1008000044275527BC01CD010E942B1897FF04C037 |
:1008100061507F4F8F4F9F4FBB2797FDBA95A92FF0 |
:10082000982F872FBC0157986115710511F0685CEE |
:100830007F4F87E06C3F780710F06BEF77E0CB01DC |
:10084000089585B1837F85B984B18C6084B95A9845 |
:10085000529A82E88093800089E0809381008091A1 |
:100860006F00816080936F00089596B5980F86B5EC |
:10087000891B87FDFCCF0895CF93C82F7894809370 |
:100880000001C150CF3F59F057988CE291E00E948F |
:100890003B10579A8CE291E00E943B10F2CF88EE19 |
:1008A00093E00E943B10CF910895AF92BF92CF92F8 |
:1008B000DF92EF92FF920F931F93CF93DF938C0100 |
:1008C0003CE2A32E31E0B32EC12CD12C80B7877F20 |
:1008D00080BFC801880F991F880F991F90934B0103 |
:1008E00080934A0110924901109248010E94C00170 |
:1008F000109276010E9443168CE291E00E9427102C |
:1009000090937801809377011BC00E947F118091A2 |
:100910004801909149018937910590F08BB1877C0E |
:100920008BB985B1837F85B984B18C6084B95A98BD |
:10093000529A8AE00E943C048AE0809389013EC07A |
:1009400080917701909178010E9430108823E9F21C |
:10095000E80113E0CC0FDD1F1A95E1F7D0934B01AE |
:10096000C0934A010E94C001EE24FF248701EA14CB |
:10097000FB040C051D0558F484E60E9435040E9412 |
:100980005D0E0894E11CF11C011D111DF0CF0E94A9 |
:100990007F1180914801909149018B35910588F034 |
:1009A0008BB1877C8BB985B1837F85B984B18C602D |
:1009B00084B95A98529A8AE00E943C0480E090E000 |
:1009C0002BC0C601B5012FE030E040E050E00E94AE |
:1009D0007D18A21AB30AC40AD50A0894A108B1085E |
:1009E000C108D1088FE0A816B104C104D10418F4DD |
:1009F00081E090E011C00E944316809176018F5FE4 |
:100A0000809376018091760166E00E944A18909367 |
:100A100076010E945910A2CFDF91CF911F910F91C3 |
:100A2000FF90EF90DF90CF90BF90AF900895CF935D |
:100A3000DF93EC0121978FEFCF3FD807E9F00E94B9 |
:100A40007F11809112019091130188589F4F20913E |
:100A50004801309149018217930760F78BB1877C79 |
:100A60008BB985B1837F85B984B18C6084B95A987C |
:100A7000529A81E090E002C080E090E0DF91CF9157 |
:100A8000089501972FEF8F3F9207D9F780E090E00C |
:100A90000895CF92DF92EF92FF920F931F93CF931F |
:100AA000DF93CDB7DEB763970FB6F894DEBF0FBE06 |
:100AB000CDBF8E010F5F1F4F83E1E4E1F1E0D8016C |
:100AC00001900D928A95E1F7EE24AFEFFA2E579A36 |
:100AD00085B1837F85B984B18C6084B95A98529A64 |
:100AE0008AE00E94B90A8DE00E94B90A82E090E093 |
:100AF0000E94170580910301080F111DF8018081E4 |
:100B0000282F33278CE291E0289FA001299F500DC8 |
:100B1000389F500D1124CA018C599F4F0E943B10E1 |
:100B20008091710190917201892B09F0CDC180B73C |
:100B3000877F80BFF8948BB1877C8BB985B1837F29 |
:100B400085B984B18C6084B95A98529A1092470141 |
:100B50001092460184EF91E00E94170580914801B0 |
:100B600090914901909313018093120187E00E94B4 |
:100B700057116C0184EF91E0909389008093880075 |
:100B8000109249011092480100E010E080E197E2E4 |
:100B90000E944105109349010093480180E197E2CA |
:100BA0000E9441051092890180EC80937C008BB1FA |
:100BB000877C8BB985B1837F85B984B18C6084B91A |
:100BC0005A98529A5C9A5D9A109349010093480191 |
:100BD00008E710E02398229A529A81E090E00E9460 |
:100BE000410580E00E9457118536910518F051E0CB |
:100BF000F52A02C08EEFF82285B1837F85B984B1D2 |
:100C00008C6084B95A98529A8CE291E00E94410516 |
:100C10000150104017FFDECF8BB1877C8BB985B1B7 |
:100C2000837F85B984B18C6084B95A98529A5B9A53 |
:100C30005D9A04E810E02298239A529A81E090E0AD |
:100C40000E94410581E00E9457118536910518F0F8 |
:100C5000A2E0FA2A02C0BDEFFB2285B1837F85B9ED |
:100C600084B18C6084B95A98529A8CE291E00E94C7 |
:100C700041050150104017FFDECF8BB1877C8BB947 |
:100C800085B1837F85B984B18C6084B95A98529AB2 |
:100C90005B9A5C9A0EE610E084B18C6084B952983D |
:100CA00081E090E00E94410582E00E945711853664 |
:100CB000910518F0E4E0FE2A02C0FBEFFF2285B1A7 |
:100CC000837F85B984B18C6084B95A98529A8AE43A |
:100CD00091E00E9441050150104017FFDDCF8BB11C |
:100CE000877C8BB985B1837F85B984B18C6084B9E9 |
:100CF0005A98529A5B9A08E710E02298239A529ADF |
:100D000081E090E00E94410580E00E945711C816E2 |
:100D1000D90618F447EFF42202C058E0F52A85B14D |
:100D2000837F85B984B18C6084B95A98529A8AE4D9 |
:100D300091E00E9441050150104017FFDECF8BB1BA |
:100D4000877C8BB985B1837F85B984B18C6084B988 |
:100D50005A98529A5D9A04E810E02298239A529A7F |
:100D600081E090E00E94410582E00E945711C81680 |
:100D7000D90618F48FEDF82202C0A0E2FA2A85B154 |
:100D8000837F85B984B18C6084B95A98529A88E679 |
:100D900091E00E9441050150104017FFDECF8BB15A |
:100DA000877C8BB985B1837F85B984B18C6084B928 |
:100DB0005A98529A5C9A0EE610E084B18C6084B91D |
:100DC000529881E090E00E94410581E00E94571115 |
:100DD000C816D90618F4BFEEFB2202C0E0E1FE2AD5 |
:100DE00085B1837F85B984B18C6084B95A98529A51 |
:100DF00088E691E00E9441050150104017FFDDCFC9 |
:100E00008BB1877C8BB985B1837F85B984B18C60C8 |
:100E100084B95A98529A8091C1008F778093C1000B |
:100E20008091C1008F7B8093C1007894FBEECF1638 |
:100E3000D10408F449C0909103018AEF989FC00142 |
:100E400011240E943B108F2D992780FD04C0F1E0F2 |
:100E5000EF2E81E405C081FD07C0E2E0EE2E82E4C2 |
:100E60000E94B90A8BE21AC082FD04C073E0E72E2B |
:100E700083E4F6CF83FD04C064E0E62E81E60BC078 |
:100E800084FD04C055E0E52E82E605C085FD08C05E |
:100E900046E0E42E83E60E94B90A8DE20E94B90A78 |
:100EA000E0928901EE2021F08E2D0E943C04FCCFBF |
:100EB0008E2D0E943C048EE20E94B90A8AE00E94B4 |
:100EC000B90A8DE00E94B90A63960FB6F894DEBFA6 |
:100ED0000FBECDBFDF91CF911F910F91FF90EF908B |
:100EE000DF90CF900895CFEFD4E0DEBFCDBFEE24EA |
:100EF000E7B880E188B98EEB8AB9EBB88EE084B9A7 |
:100F000081EF85B9579885B1806C85B983EF91E001 |
:100F1000C29797FFFDCF1E9B06C01F9B02C081E0BA |
:100F200007C082E005C01F9B02C083E001C084E0CF |
:100F300080930301189905C0809103018C5F809311 |
:100F4000030180910C01992790930B0180930A0172 |
:100F5000879731F48EE290E090930B0180930A0121 |
:100F600078940E94C50A0E9421040E94A21180E583 |
:100F70000E94F7120E9448100E947F1184EF91E0B6 |
:100F80000E942710909378018093770106C080918A |
:100F9000710190917201892B41F4809177019091B8 |
:100FA00078010E943010882391F310924B01109227 |
:100FB0004A010E94C00181E080937C00109264018C |
:100FC0001092630181E385B98AE00E94B90A8DE03D |
:100FD0000E94B90A8091710190917201892B11F4DC |
:100FE0000E94490585E690E00E9427108C0186E664 |
:100FF00090E00E94271087E690E00E9427109093CF |
:101000007801809377018EEF90E00E9427106C01A9 |
:1010100089E690E00E942710EC010E949B010E944B |
:10102000AE17109281028091C10080688093C10048 |
:10103000E090760110921301109212010E945B035E |
:1010400090934B0180934A01892B31F40E945B03FA |
:1010500090934B0180934A0180917601282F33278A |
:101060008E2D992787FD90952817390771F01092DA |
:1010700006011092080186E990E00E9427109093E3 |
:10108000780180937701E090760180914A019091F8 |
:101090004B01892BA1F51092350110923401109269 |
:1010A0000801C8010E9430108823A9F180B7877F0A |
:1010B00080BF81E0809306018BB1877C8BB985B1BD |
:1010C000837F85B984B18C6084B95A98529A809193 |
:1010D0001201909113012091480130914901281784 |
:1010E000390710F4019704C08217930728F401967A |
:1010F000909313018093120182E390E009C08091E4 |
:101100000601882319F081E0809335018CED95E08C |
:101110000E9427108C0180910601882321F01092F3 |
:101120004B0110924A010E94C00180910801815038 |
:10113000809308018F3F09F081CF82E380930801FB |
:101140000E94AB1480914C0190914D01892B21F0AC |
:101150000E945D0E0E94C50D80910601882341F01A |
:1011600080910701882321F00E94591010920701F5 |
:10117000C6010E943010882309F4F4C082E390E095 |
:101180000E9427106C0180913B01282F332780910A |
:101190003C0190913D01B9010E945618809148018F |
:1011A0009091490190933D0180933C0181E08093AF |
:1011B0003B0180911201909113016817790798F013 |
:1011C000681B790B809185029927689F9001699F20 |
:1011D000300D789F300D1124B901A6E07695679502 |
:1011E000AA95E1F702C060E070E08091440190911F |
:1011F00045018617970710F4019604C06817790710 |
:1012000028F4019790934501809344018091440113 |
:10121000909145018B30910588F0681B790B77FF21 |
:1012200002C0695F7F4FF3E075956795FA95E1F726 |
:10123000860F971F9093450180934401E0914401EC |
:10124000F0914501CF016AE070E00E94561840918C |
:101250008302842F992786179707E8F48AE0489F2E |
:10126000C00111249F01281B390BC901880F991F48 |
:10127000820F931F2FEF30E0A901481B590BCA01C1 |
:101280004931510514F489E190E08F3F910521F037 |
:101290001CF0C90101C08FEF8093000180913201E1 |
:1012A00090913301845F9140B0F084EF91E090938E |
:1012B0003301809332018091400190914101893C3A |
:1012C000910548F080914A0190914B01892B19F0CA |
:1012D00081E0809335012091320130913301C901C1 |
:1012E00096958795909341018093400140913401F8 |
:1012F000453668F08091300190913101969587953F |
:101300002817390720F483E080933E0102C0109231 |
:101310003E0180914A0190914B01892B71F0453635 |
:1013200060F02431310548F4809130019091310111 |
:10133000899718F081E08093350110923101109265 |
:10134000300110923301109232010E9411028091FB |
:101350004C0190914D01009729F0019790934D0118 |
:1013600080934C01CE010E943010882379F085E0F3 |
:1013700090E00E942710EC01809134018F3F19F01A |
:101380008F5F8093340181E0809307018091770122 |
:10139000909178010E943010882331F080914001B3 |
:1013A000909141010A9728F080913501882309F432 |
:1013B00045CE84E690E00E942710909378018093B8 |
:1013C00077011092340151E0F52EF092060180B7BA |
:1013D000877F80BF80913501882309F42FCE8091CB |
:1013E0000E0190910F018958994008F427CE579A21 |
:1013F00010924701109246011092350180918602A9 |
:10140000282F33272E703070220F331F8091100148 |
:101410009091110168E170E00E945618261B370B6D |
:10142000255F3F4F2430310514F424E030E0C9013A |
:101430000E945504882309F494C082E080933E0101 |
:101440001092060188E090E090934B0180934A014E |
:101450000E94C001109233011092320110923101AA |
:101460001092300180B78C7F80BF80B78A6080BFC8 |
:1014700082E390E00E942710909378018093770197 |
:1014800080917701909178010E9430108823C1F3F8 |
:1014900080918602282F33272E70307080911001A2 |
:1014A0009091110144E0969587954A95E1F7281BA4 |
:1014B000390B2E5E3F4F2830310514F428E030E020 |
:1014C000C3E0220F331FCA95E1F7285C3F4F3093EA |
:1014D0004B0120934A010E94C0010E945B03892BAB |
:1014E00041F08CE291E00E94271090937801809364 |
:1014F000770181E080933E0122C080914801909164 |
:10150000490185369105A8F08BB1877C8BB985B1EF |
:10151000837F85B984B18C6084B95A98529A8AE0E5 |
:101520000E943C040E945B03892B19F081E08093A8 |
:1015300035018091320190913301892B41F08091E6 |
:101540007701909178010E9430108823B1F21092B7 |
:101550003E0182E390E00E942710EC01B7E0EB2E01 |
:101560006DCD0E945B03892B09F468CDF0923501A3 |
:1015700065CD982F8091C10083FF06C08091C00087 |
:1015800085FFFCCF9093C6000895CF93CFB7F89412 |
:101590008091C1008F778093C1008091C1008F7BC3 |
:1015A0008093C10050985898519A59988091C000E2 |
:1015B00082608093C0008091C2008F778093C200C8 |
:1015C0008091C2008F7B8093C2008091C2008F7D8A |
:1015D0008093C2008091C2008F7E8093C200809170 |
:1015E000C200877F8093C2008091C1008B7F80936F |
:1015F000C1008091C20084608093C2008091C200CB |
:1016000082608093C2008091C10080618093C1009C |
:101610008091C10088608093C1008091C00087FFE5 |
:1016200003C08091C600F9CF8091C100806880938B |
:10163000C1008091C1008F7B8093C1008091270100 |
:10164000909128010E942710909377028093760250 |
:1016500010925601109254011092530110925201AF |
:1016600091E0909329011092BC018FE18093BD011C |
:101670009093C0018BE08093BE011092BF018DE07A |
:101680000E94B90A8AE00E94B90A82E40E94B90A5B |
:101690008CE40E94B90A8AE30E94B90A86E50E9496 |
:1016A000B90A80E30E94B90A8EE20E94B90A83E374 |
:1016B0000E94B90A81E30E94B90A82E60E94B90A2F |
:1016C0008DE00E94B90A8AE00E94B90A88E40E946B |
:1016D000B90A87E50E94B90A8AE30E94B90A82E33F |
:1016E0000E94B90A8EE20E94B90A80E30E94B90AF8 |
:1016F00080E20E94B90A82E50E94B90A85E60E944A |
:10170000B90A86E70E94B90A80912C016AE00E941A |
:101710004A18805D0E94B90A80912C016AE00E94FB |
:101720004A18892F805D0E94B90ACFBFCF910895D2 |
:101730008091C00086FF29C080912901882309F586 |
:101740008091570190915801019690935801809390 |
:101750005701FC01E85FFD4FE081ED3019F08E3656 |
:10176000910539F4109258011092570181E080934D |
:1017700029018091C00081608093C000E093C60081 |
:101780000895109258011092570108951F920F92D8 |
:101790000FB60F9211242F933F934F935F938F9324 |
:1017A0009F93AF93BF93CF93DF93EF93FF935091AA |
:1017B000C60080915601882309F074C040915B01F6 |
:1017C000442371F4533279F450938A0181E0809379 |
:1017D0005B0183E290E090935A018093590162C0CB |
:1017E000423308F05BC02091590130915A01E42F37 |
:1017F000FF275D3069F0E657FE4F50834F5F4093FF |
:101800005B01250F311D30935A01209359014AC0C5 |
:10181000DF01A657BE4FFD0132978081281B310999 |
:10182000ED0121978881281B3109C9019F70909390 |
:101830005A0180935901689415F8969587951694E6 |
:10184000E1F7982F935C2F733070235C8081981799 |
:1018500001F588812817E9F480ED97E090934D0118 |
:1018600080934C015C934F5F4093550181E08093DE |
:10187000560180918C01823571F488E190E02CE072 |
:101880000FB6F894A895809360000FBE2093600077 |
:1018900002C01092560110925B0104C080935B015C |
:1018A00080935601FF91EF91DF91CF91BF91AF915E |
:1018B0009F918F915F914F913F912F910F900FBE0C |
:1018C0000F901F901895AC01A0E0B0E09D01A81703 |
:1018D000B90748F4E8E0F2E08191280F311D119634 |
:1018E000A417B507C8F33F70FD01E85FFD4FC901BC |
:1018F00076E0969587957A95E1F7835C80831196DB |
:10190000FD01E85FFD4F2F733070822F835C808371 |
:10191000A75FBD4F8DE08C93109229018091080242 |
:101920008093C6000895BF92CF92DF92EF92FF920C |
:101930000F931F93CF93DF93CDB7DEB72C859D8593 |
:101940000E85BB2483E2809308029F59909309027D |
:1019500020930A0233E0E32EF12C002309F49EC009 |
:10196000CF84D888BE016D5E7F4FA989BA890150A6 |
:10197000109709F493C01097B9F0F601EB0DF11D23 |
:10198000B3949081119791F4002349F1FB016E5FAC |
:101990007F4FDB01C080D1806E5F7F4F0D90BC9187 |
:1019A000A02DBB24015002C090E019C01097B9F0DF |
:1019B000F601EB0DF11DB3944081119791F40023D2 |
:1019C00041F1FB016E5F7F4FDB01C080D1806E5F14 |
:1019D0007F4F0D90BC91A02DBB24015002C040E070 |
:1019E00018C01097B1F0F601EB0DF11DB394108102 |
:1019F000119781F4002371F0FB013296DB01CD9049 |
:101A0000DC90BF016E5F7F4FA081B181BB2401508C |
:101A100001C010E0F701E85FFD4F892F869586959C |
:101A2000835C80830894E11CF11CF701E85FFD4FA3 |
:101A3000892F99278370907024E0880F991F2A9529 |
:101A4000E1F755279A0194E0369527959A95E1F7A5 |
:101A5000822B835C80830894E11CF11CF701E85F12 |
:101A6000FD4F4F705070440F551F440F551F812F6D |
:101A7000992726E0969587952A95E1F7842B835C34 |
:101A800080830894E11CF11CF701E85FFD4F1F7390 |
:101A9000135C10830894E11CF11C6ACFC7010E94FB |
:101AA000630CDF91CF911F910F91FF90EF90DF902A |
:101AB000CF90BF900895A3E07A2F409155014650F2 |
:101AC000442309F458C0E72FFF27E657FE4F8081D3 |
:101AD0008D537F5FE72FFF27E657FE4F20812D5361 |
:101AE0007F5FE72FFF27E657FE4F30813D537F5F33 |
:101AF000E72FFF27E657FE4F60816D537F5F9927E1 |
:101B0000880F991F880F991F522F52955F70582B7D |
:101B1000822F99278F709070F4E0880F991FFA95A3 |
:101B2000E1F7232F26952695282B832F992783705D |
:101B30009070E6E0880F991FEA95E1F7682B415015 |
:101B40004F3FC9F0EA2FFF27E657FE4F5083AF5FA4 |
:101B500041504F3F81F0EA2FFF27E657FE4F208389 |
:101B6000AF5F41504F3F39F0EA2FFF27E657FE4F56 |
:101B70006083AF5FA5CF8DE891E09093540180938F |
:101B80005301A350A09352010895809156018823D8 |
:101B900009F492C00E945B0D80918B01863611F48E |
:101BA00080918C0180918C0199278437910509F4EB |
:101BB00045C0853791054CF48136910509F468C01C |
:101BC0008436910509F44DC06FC08637910509F43C |
:101BD0005BC08637910524F087379105B9F064C062 |
:101BE000E0915301F0915401908180910301981785 |
:101BF00019F08081882319F410924F0103C082E00C |
:101C000080934F018091510188604CC0E091530155 |
:101C1000F09154018081882329F090818091030103 |
:101C2000981729F4CF0101960E94471701C082E05E |
:101C300080934F0180915101806134C080910301F4 |
:101C4000E0915301F0915401E80FF11D319780812B |
:101C500080934E0184EF91E0909338018093370197 |
:101C600023C0E0915301F091540190818AE0989F44 |
:101C7000C00111249093280180932701892BA1F0A2 |
:101C80008091510182600EC08091510181600AC033 |
:101C9000E0915301F0915401808180935001809133 |
:101CA00051018460809351011092540110925301AC |
:101CB00010925201109256010895CF93DF93CDB741 |
:101CC000DEB761970FB6F894DEBF0FBECDBF80912F |
:101CD0002901882319F40E94980BE6C080915101D4 |
:101CE00082FF30C080915001992724E0880F991F0E |
:101CF0002A95E1F78A559F4F40E150E0BC01CE01A3 |
:101D000001960E94DB1780E190E09F938F93CE01B4 |
:101D100001969F938F9381E090E09F938F9380E54E |
:101D200091E09F938F9382E08F9385E08F9381E47E |
:101D30008F930E94930C8FEF8093500180915101FB |
:101D40008B7FA8C08091270190912801892B41F0B9 |
:101D500080917602909177020E943010882329F4B6 |
:101D600080915101992781FF20C00E94E70282E4FF |
:101D700090E09F938F9386EC91E09F938F9381E007 |
:101D80008F9385E08F9384E48F930E94930C8091CE |
:101D90002701909128010E94271090937702809349 |
:101DA0007602809151018D7F15C080FF19C08AE0B5 |
:101DB00090E09F938F938CEB91E09F938F9381E0C2 |
:101DC0008F9385E08F9386E58F930E94930C80918B |
:101DD00051018E7F809351018DB79EB707965FC0EA |
:101DE00083FF35C080914F01882319F481E0898BEE |
:101DF00001C0198A88E090E09F938F9380E892E079 |
:101E00009F938F9321E030E03F932F9383E091E005 |
:101E10009F938F933F932F938FE491E09F938F93A2 |
:101E20003F932F93CE0141969F938F9384E08F939E |
:101E300085E08F9385E58F930E94930C80915101EB |
:101E4000877F809351018DB79EB7439628C084FF4A |
:101E50002BC080914F01882319F481E0898B01C048 |
:101E6000198A21E030E03F932F938FE491E09F9314 |
:101E70008F933F932F93CE0141969F938F9382E050 |
:101E80008F9385E08F9387E58F930E94930C8091C9 |
:101E900051018F7E809351018DB79EB70B960FB67F |
:101EA000F8949EBF0FBE8DBF61960FB6F894DEBF4B |
:101EB0000FBECDBFDF91CF9108951F93CF93DF93D6 |
:101EC000EC0110E08881882369F0FE01E10FF11D2B |
:101ED0001F5F80810E94B90AFE01E10FF11D808120 |
:101EE000882399F7DF91CF911F9108951F920F9248 |
:101EF0000FB60F9211242F933F934F935F936F93DD |
:101F00007F938F939F93AF93BF93EF93FF938091B2 |
:101F10003F01882319F0815080933F0180915E0139 |
:101F2000815080935E018F3F09F080C083E08093F1 |
:101F30005E0180915C0190915D01019690935D013D |
:101F400080935C018091390190913A01009719F1D9 |
:101F5000019790933A018093390121E0883B9207E1 |
:101F600039F021E08C32920719F08436910599F40A |
:101F700080E50E9401138091390190913A01885BBC |
:101F8000914049F48091E6019091E7010196909388 |
:101F9000E7018093E60180916101882331F080910F |
:101FA000610181508093610102C080936001809142 |
:101FB000370190913801009729F0019790933801EB |
:101FC0008093370180913601882319F081508093E6 |
:101FD000360180912A0190912B01019790932B015A |
:101FE00080932A018F5F9F4F09F520914201309124 |
:101FF00043018DEF283E380750F4809144019091C1 |
:102000004501280F391F309343012093420188E78F |
:1020100095E090932B0180932A0180913901909152 |
:102020003A01892B19F480E50E940113FF91EF9189 |
:10203000BF91AF919F918F917F916F915F914F91E0 |
:102040003F912F910F900FBE0F901F9018952091E8 |
:102050005C0130915D01280F391FC9010197089576 |
:1020600020915C0130915D01821B930B892F990FA8 |
:10207000990B80780895CF93DF930E942710EC018D |
:10208000CE010E9430108823D9F3DF91CF910895BB |
:1020900086EA80937A0087EC80937C0080917A00B6 |
:1020A000806480937A0080917B00806480937B00C1 |
:1020B0000895809136018150809336018F3F09F059 |
:1020C00093C084E68093360180915F0181508093B4 |
:1020D0005F018F3F09F050C020917C0097EC9093F6 |
:1020E0007C0080B7806880BF83ED80937A00809108 |
:1020F0007A00806180937A0090937C0080917A00CE |
:10210000806480937A0080917A0084FFFCCF2093D2 |
:102110007C00209178003091790083E190E0289F45 |
:10212000A001299F500D389F500D11249A0166E09F |
:10213000369527956A95E1F72F3F310519F010F094 |
:102140002FEF30E08091100190911101820F931FC9 |
:1021500096958795909311018093100110927A00C3 |
:1021600080917B00806480937B0080B78F7780BFF5 |
:1021700083E080935F01089520917C0093EC90931D |
:102180007C0080B7806880BF83ED80937A00809167 |
:102190007A00806180937A0090937C0080917A002D |
:1021A000806480937A0080917A0084FFFCCF209332 |
:1021B0007C0080917800909179009C0143E0220F8F |
:1021C000331F4A95E1F7280F391F280F391F8091D7 |
:1021D0000E0190910F01820F931F96958795909312 |
:1021E0000F0180930E0158C020917C0096EC9093D3 |
:1021F0007C0080B7806880BF83ED80937A008091F7 |
:102200007A00806180937A0090937C0080917A00BC |
:10221000806480937A0080917A0084FFFCCF2093C1 |
:102220007C0080910C01282F3327809178009091B9 |
:102230007900829FA001839F500D929F500D112421 |
:102240009A0194E0369527959A95E1F780913C01A3 |
:1022500090913D01820F931F90933D0180933C012B |
:1022600080913B018F5F80933B01409148015091E9 |
:102270004901420F531F569547955093490140938A |
:10228000480180914601909147018417950720F4F9 |
:10229000509347014093460110927A0080917B0051 |
:1022A000806480937B0080B78F7780BF08952091F2 |
:1022B0007C00982F906C90937C0080B7806880BFE2 |
:1022C00083ED80937A0080917A00806180937A0018 |
:1022D00090937C0080917A00806480937A00809152 |
:1022E0007A0084FFFCCF20937C0010927A0080B7A4 |
:1022F0008F7780BF8091780090917900089586E073 |
:102300000E94571120910C013327829FA001839FC7 |
:10231000500D929F500D11249A0174E03695279527 |
:102320007A95E1F730934901209348018091460165 |
:10233000909147018217930720F43093470120932F |
:102340004601089580918100806C80938100809186 |
:10235000810080648093810080916F00806280930F |
:102360006F0080916F00816080936F0084E08093A4 |
:10237000B10008951F920F920FB60F9211242F9360 |
:102380003F938F939F9380916501282F33278F5F11 |
:102390008093650121303105B1F0223031051CF404 |
:1023A000232B41F038C022303105B1F02330310504 |
:1023B00011F131C080912D0190912E0190938900EF |
:1023C0008093880028C080912F0120912D013091A9 |
:1023D0002E01823058F008C080912F0120912D01EC |
:1023E00030912E01833011F42F5F3F4F30938900DD |
:1023F0002093880010C080912F0120912D013091F1 |
:102400002E01882311F02F5F3F4F309389002093D6 |
:10241000880010926501809162018F5F8093620154 |
:102420009F918F913F912F910F900FBE0F901F9012 |
:1024300018951F920F920FB60F9211242F933F936E |
:102440004F935F936F937F938F939F93AF93BF93BC |
:102450008091810086FF17C08091620180936A019C |
:102460008091860090918700909367018093660128 |
:10247000809181008F7B8093810084E6809361014D |
:102480001092B200A5C08091810080648093810089 |
:1024900080916201282F332780916A01281B31091E |
:1024A000322F2227330F8091860090918700280FCA |
:1024B000391F8091660190916701281B390B309379 |
:1024C0006901209368018091B200682F7727689492 |
:1024D00015F8660F771F1694E1F7AB01445D5E4F68 |
:1024E00042175307A0F4C9018050924090936901AC |
:1024F000809368014817590738F5805092409093AF |
:1025000069018093680148175907F0F419C0AB01BD |
:102510004C52514024173507B8F4C90180509E4FE2 |
:1025200090936901809368018417950768F480503F |
:102530009E4F90936901809368018417950720F45A |
:1025400070936901609368018091680190916901BD |
:1025500063E070E00E94561870936901609368010F |
:10256000809160018F3F51F06D587A40635F7140F8 |
:1025700028F4809160018F5F8093600180916801F1 |
:10258000909169018C519C4030F48CE19CE09093D7 |
:1025900069018093680180916801909169018C5173 |
:1025A0009C4040916301509164019A01220F331FB6 |
:1025B000240F351F280F391F3695279536952795F7 |
:1025C0003093690120936801309364012093630183 |
:1025D000BF91AF919F918F917F916F915F914F913B |
:1025E0003F912F910F900FBE0F901F9018959091D3 |
:1025F0000301990F980F9093BA0085EC8093BC006B |
:1026000008951092BC0090910301990F980F909338 |
:10261000BA0085EC8093BC0008951F920F920FB60C |
:102620000F9211242F933F934F935F936F937F9358 |
:102630008F939F93AF93BF93EF93FF938091B900D4 |
:102640009927887F90708038910529F1813891050C |
:102650003CF4009709F45FC18036910591F067C1A1 |
:10266000883B910509F4A8C0893B91052CF4883A70 |
:10267000910509F4A1C05BC1883F910509F44BC1E4 |
:1026800056C18091BC0080688093BC001092750197 |
:10269000109274014FC14091BB008091BC008068D2 |
:1026A0008093BC0080917401282F33278F5F809323 |
:1026B00074012130310509F44AC0223031051CF47F |
:1026C000232B31F06FC02230310509F45BC06AC0A2 |
:1026D000442369F480917301882349F08091390182 |
:1026E00090913A01892B19F081E090E011C080911E |
:1026F000390190913A01892B81F0809173018823EF |
:1027000061F0842F992763E0880F991F6A95E1F79C |
:10271000909372018093710104C010927201109223 |
:1027200071014093730180916C0190916D01209132 |
:10273000440130914501820F931F90936D01809366 |
:102740006C0180916B018F5F80936B012EC0209193 |
:102750007101309172012115310551F0842F9927B3 |
:1027600087709070280F391F309372012093710188 |
:10277000842F992753E0969587955A95E1F7809392 |
:10278000750113C080916E01883078F480916E01DC |
:10279000E82FFF27E858FD4F40838F5F80936E013D |
:1027A00082E001C08EEF8093740184EF91E09093FA |
:1027B0003A0180933901BEC080917501282F3327DB |
:1027C000442755278F5F80937501F9012F3131051B |
:1027D00008F097C0EC5CFF4FEE0FFF1F0590F491DF |
:1027E000E02D099480914401909145018E3F91051F |
:1027F00070F48091440182C0809144019091450120 |
:1028000021E08E3F920718F49695879577C08EEF5A |
:1028100075C08091710190917201892B11F48AEF3A |
:102820006DC080913401823310F488E267C09091CA |
:10283000000180910101891708F460C09093BB00EA |
:1028400066C080910D015AC08091400157C08091AF |
:10285000420190914301892F992786954FC080911D |
:10286000420190914301892F992748C0809110011E |
:1028700045C080916F0142C08FE140C020916B0143 |
:10288000223348F4332780916C0190916D01B90196 |
:102890000E94561804C060914401709145016E3F3A |
:1028A000710518F46093BB0003C08EEF8093BB00EA |
:1028B00010926D0110926C0110926B0128C08091F2 |
:1028C00080021CC08091810219C08091820216C0D2 |
:1028D0008091830213C08091840210C08091850290 |
:1028E0000DC0809186020AC08091870207C0809146 |
:1028F000890104C01092BB000AC085EA8093BB0026 |
:1029000006C08FEF8093BB008EEF8093750180919E |
:10291000BC0080680DC085ED8093BC0080916F0184 |
:102920009091700101969093700180936F0185ECF6 |
:102930008093BC00FF91EF91BF91AF919F918F91D8 |
:102940007F916F915F914F913F912F910F900FBEAB |
:102950000F901F90189580916E01883030F088E7B5 |
:1029600092E00E94471710926E0108951F920F92F5 |
:102970000FB60F9211240F900FBE0F901F90189555 |
:102980001F920F920FB60F9211241F932F933F9314 |
:102990004F935F936F937F938F939F93AF93BF9367 |
:1029A000CF93EF93FF931EE180913F01882309F0BD |
:1029B00055C100B605FE02C0C1E001C0C0E0809173 |
:1029C000860280FD84C0809176019927823091052E |
:1029D00009F445C0833091052CF4009779F00197F4 |
:1029E00011F124C18430910509F450C0843091055F |
:1029F0000CF440C0059709F460C018C12398229ACE |
:102A0000529ACC2309F4E4C08BB1877E8BB95D9ACE |
:102A100080910701882311F00E94591080B78E7FA2 |
:102A200080BF81EC82C08BB1877E8BB95D9ACC234D |
:102A300009F0B8C02298239A529A809107018823FE |
:102A400011F00E94591080EC80937C0080B7836065 |
:102A500080BF809176018F5F80937601D5C02298E8 |
:102A6000239A529ACC2309F48DC08BB18F7C8BB9F9 |
:102A70005B9A80C08BB18F7C8BB95B9ACC2309F0B9 |
:102A80006DC084B18C6084B9529860C084B18C6090 |
:102A900084B95298CC2309F44BC08BB1877D8BB994 |
:102AA0005C9A80910701882311F00E94591080ECF4 |
:102AB00080937C0080B78E7FCBCF8BB1877D8BB925 |
:102AC0005C9ACC2309F0AEC02398229A8EC08091E4 |
:102AD000760199278230910509F443C0833091052E |
:102AE0002CF4009779F0019741F1A0C08430910552 |
:102AF00009F45CC0843091050CF449C0059709F4D1 |
:102B00006CC094C02298239A529ACC2389F08BB13E |
:102B1000877E8BB95D9A80910701882311F00E940E |
:102B2000591080B78E7F80BF80EC80937C0091CF5E |
:102B30008BB18F7C8BB95B9A79C08BB1877E8BB957 |
:102B40005D9ACC2359F42398229A529A80910701D6 |
:102B5000882311F00E94591081EC76CF2298239A95 |
:102B600023C02398229A529ACC2361F08BB1877D9F |
:102B70008BB95C9A80910701882311F00E9459104B |
:102B800082EC96CF8BB1877E8BB95D9A4FC08BB1AB |
:102B9000877D8BB95C9ACC2329F484B18C6084B98D |
:102BA00052984BCF2398229A529A40C084B18C609D |
:102BB00084B95298CC2361F08BB18F7C8BB95B9A2E |
:102BC00080910701882311F00E94591081EC70CF89 |
:102BD0008BB1877D8BB95C9A29C08BB18F7C8BB907 |
:102BE0005B9ACC23F9F42298239A529A8091070198 |
:102BF000882311F00E94591082EC80937C0080B7EA |
:102C0000836080BFC093760180913201909133013F |
:102C10000196909333018093320180913E0180931D |
:102C20003F0104C084B18C6084B952988091300116 |
:102C300090913101019690933101809330011150B0 |
:102C40001F3F61F000B605FC03C0CC2309F0B1CEF4 |
:102C500000B605FE03C0CC2309F4ABCE10920701E9 |
:102C6000FF91EF91CF91BF91AF919F918F917F9104 |
:102C70006F915F914F913F912F911F910F900FBED8 |
:102C80000F901F9018958091860280FD4FC0809113 |
:102C9000760199278230910539F1833091052CF422 |
:102CA000009761F0019791F008958430910561F1EA |
:102CB000843091050CF1059781F108952398229AAB |
:102CC000529A8BB1877D8BB95C9A4EC02398229A19 |
:102CD000529A8BB1877E8BB95D9A81EC80937C0090 |
:102CE00080B78E7F80BF08952298239A529A8BB125 |
:102CF000877E8BB95D9A5DC02298239A529A8BB1D8 |
:102D00008F7C8BB95B9A4BC084B18C6084B952982C |
:102D10008BB18F7C8BB95B9A39C084B18C6084B9DC |
:102D200052988BB1877D8BB95C9A27C080917601D0 |
:102D300099278230910519F1833091052CF4009781 |
:102D400061F0019799F008958430910551F1843034 |
:102D50009105F4F0059799F108952298239A529AD3 |
:102D60008BB18F7C8BB95B9A82EC24C02298239A1A |
:102D7000529A8BB1877E8BB95D9A80ECAFCF239846 |
:102D8000229A529A8BB1877E8BB95D9A81EC12C0E0 |
:102D90002398229A529A8BB1877D8BB95C9A82ECE8 |
:102DA0009DCF84B18C6084B952988BB1877D8BB9EB |
:102DB0005C9A80EC80937C0080B7836093CF84B171 |
:102DC0008C6084B952988BB18F7C8BB95B9A85CF1C |
:102DD000F999FECF92BD81BDF89A80B599270895E3 |
:102DE000F999FECF1FBA92BD81BD60BD0FB6F894B0 |
:102DF000FA9AF99A0FBE08954AEA20E030E02617C1 |
:102E0000370740F4FC018191480F2F5F3F4F261791 |
:102E10003707C8F3842F9927089582E080938002B2 |
:102E2000109281028FEF8093820298E29093830246 |
:102E300084E68093840280E48093850284E080931A |
:102E4000860280910901981710F08093830267E051 |
:102E500070E080E892E00E94FC168093870208955B |
:102E600080918002823091F467E070E080E892E027 |
:102E70000E94FC168093870220EF36E148E050E084 |
:102E800060E872E080E090E00E9409180895CF9316 |
:102E9000DF93EC0167E070E00E94FC169F819817B9 |
:102EA00019F085E090E057C08881823019F084E005 |
:102EB00090E051C0898186FF03C00E940D1744C075 |
:102EC000109281028981282F332720FF03C08A8135 |
:102ED0008093820221FF03C08B818093830222FFB3 |
:102EE00003C08C818093840223FF03C08D81809373 |
:102EF000850224FF08C0909186029E708E81817F9A |
:102F0000982B9093860225FF08C090918602917FAE |
:102F10008E818E70982B90938602809184028337E5 |
:102F200018F083E7809384028091830290910901D5 |
:102F3000891710F09093830267E070E080E892E0D8 |
:102F40000E94FC1680938702898187FF02C00E943D |
:102F5000301780E090E0DF91CF91089528EE36E1C0 |
:102F600048E050E060E070E080E892E00E94E41702 |
:102F700067E070E080E892E00E94FC16982F809154 |
:102F80008002823021F480918702891721F00E940B |
:102F90000D170E94301780918302909109018917C3 |
:102FA00010F09093830280918402833718F083E7B6 |
:102FB000809384020895FB01DC0102C005900D920C |
:102FC00041505040D8F70895A0E0B0E0EAEEF7E1B4 |
:102FD0000C94A7186C017B01EA01590121978FEF2E |
:102FE000CF3FD80789F086010894C11CD11CC701C6 |
:102FF0000894E11CF11CF5010995F80180832197E3 |
:10300000FFEFCF3FDF0779F7EAE0CDB7DEB70C94EB |
:10301000C318A0E0B0E0EFE0F8E10C94A9188C012F |
:103020007B01EA01690121978FEFCF3FD80771F04B |
:10303000F70121917F01C8010F5F1F4F622FF60139 |
:1030400009952197FFEFCF3FDF0791F7E8E0CDB774 |
:10305000DEB70C94C518629FD001739FF001829F68 |
:10306000E00DF11D649FE00DF11D929FF00D839F17 |
:10307000F00D749FF00D659FF00D9927729FB00DB4 |
:10308000E11DF91F639FB00DE11DF91FBD01CF01C7 |
:1030900011240895991B79E004C0991F961708F030 |
:1030A000961B881F7A95C9F780950895AA1BBB1BAC |
:1030B00051E107C0AA1FBB1FA617B70710F0A61B38 |
:1030C000B70B881F991F5A95A9F780959095BC0159 |
:1030D000CD01089597FB092E07260AD077FD04D06D |
:1030E000E5DF06D000201AF4709561957F4F0895B2 |
:1030F000F6F7909581959F4F0895A1E21A2EAA1B8D |
:10310000BB1BFD010DC0AA1FBB1FEE1FFF1FA21797 |
:10311000B307E407F50720F0A21BB30BE40BF50B94 |
:10312000661F771F881F991F1A9469F7609570951D |
:10313000809590959B01AC01BD01CF0108952F9220 |
:103140003F924F925F926F927F928F929F92AF9237 |
:10315000BF92CF92DF92EF92FF920F931F93CF9384 |
:10316000DF93CDB7DEB7CA1BDB0B0FB6F894DEBF1B |
:103170000FBECDBF09942A88398848885F846E8441 |
:103180007D848C849B84AA84B984C884DF80EE808B |
:10319000FD800C811B81AA81B981CE0FD11D0FB694 |
:0E31A000F894DEBF0FBECDBFED010895FFCF46 |
:1031AE00FFFF0101FB07010101281900191E204E26 |
:1031BE008000050000000201030405060708090A45 |
:0C31CE000B0C0D0E0F1011881301FF00F8 |
:00000001FF |
/BL-Ctrl_2.0/V0.31/BL-Ctrl_MEGA168_V0_31b_ADR9-12.hex |
---|
0,0 → 1,800 |
:100000000C9453010C9499010C9499010C9499014E |
:100010000C9499010C9499010C9499010C949901F8 |
:100020000C9499010C94BB140C941E120C9499011D |
:100030000C9499010C94BF110C9499010C949901A2 |
:100040000C947B0F0C9499010C94CB0B0C9499019C |
:100050000C9499010C9499010C9499010C94C51479 |
:100060000C9412130C949901F7130E1426142914EE |
:1000700034143B143E147F144114431401140E1421 |
:10008000261429142C147F14641467146A146D1434 |
:1000900070147314761479147C14861486147F14E7 |
:1000A00086148614821443757272656E7420202043 |
:1000B0005B302E31415D43757272656E74526177AB |
:1000C0002020202020206D41682020202020205B3F |
:1000D00031306D41685D54656D702E202020205BAD |
:1000E000302E31B0435D566F6C74616765202020FF |
:1000F0005B302E31565D72706D2028726177292039 |
:10010000202020202020536574706F696E74202099 |
:100110002020202020204D6178536574706F696E17 |
:1001200074202020202050504D536574706F696EEC |
:10013000742020202020506172616D2E50776D5305 |
:1001400063616C696E67506172616D2E4D617843B9 |
:10015000757272656E74506172616D2E4D61785466 |
:10016000656D702E2020506172616D2E5363616C3D |
:10017000652049202020506172616D2E42697473A0 |
:10018000202020202020506172616D2E53746172F6 |
:100190007450574D2020493243204C6F73742020F7 |
:1001A00020202020202044656275673136202020E1 |
:1001B00020202020202044656275673137202020D0 |
:1001C00020202020202044656275673138202020BF |
:1001D00020202020202044656275673139202020AE |
:1001E00020202020202044656275673230202020A6 |
:1001F0002020202020204465627567323120202095 |
:100200002020202020204465627567323220202083 |
:100210002020202020204465627567323320202072 |
:100220002020202020204465627567323420202061 |
:100230002020202020204465627567323520202050 |
:10024000202020202020446562756732362020203F |
:10025000202020202020446562756732372020202E |
:10026000202020202020446562756732382020201D |
:10027000202020202020446562756732392020200C |
:100280002020202020204861726477617265202040 |
:100290002020202020204C696D69742049202020D6 |
:1002A00020202020202011241FBECFEFD4E0DEBF6D |
:1002B000CDBF11E0A0E0B1E0E8EBF1E302C00590B2 |
:1002C0000D92AC32B107D9F712E0ACE2B1E001C057 |
:1002D0001D92A838B107E1F74AEA20EF37E3A9E712 |
:1002E000B1E09FE0F9012F5F3F4F84918D939150D2 |
:1002F00097FFF8CFE9E7F1E09EE08191482740952C |
:10030000915097FFFACF80918801481711F00000B3 |
:10031000FECF8091800180932C0180918101809398 |
:100320000C0180918201809309010E9473070C9453 |
:10033000DB180C940000CF938AE00E94BE0A81E48F |
:100340000E94BE0A84E40E94BE0A82E50E94BE0AA0 |
:100350008AE30E94BE0AC09103018C2F805D8A331C |
:1003600028F081E30E94BE0A8C2F8A5D0E94BE0A9B |
:100370008DE00E94BE0A8AE00E94BE0ACF910895D5 |
:1003800020914A0130914B01809183026AE0869F5F |
:10039000C0011124409148015091490184179507EB |
:1003A00090F4579880910901869FC0011124C2964C |
:1003B0008417950740F410928900109288008BB141 |
:1003C000877C8BB902C037FF02C020E030E080910B |
:1003D00034018F3F61F0992763E0880F991F6A9578 |
:1003E000E1F7805B9F4F821793070CF49C0187E035 |
:1003F0002C3F380714F02BEF37E0C90137FD039687 |
:10040000959587959595879590932E0180932D01CD |
:10041000880F991F880F991F281B390B20932F01D4 |
:100420000895CF93DF93E0910E01F0910F0181E2E7 |
:10043000E330F8071CF0C0E0D0E040C089E1E13FC4 |
:10044000F8074CF0CF0166E070E00E946F18CB0116 |
:10045000C8E7D5E031C080E1E33CF8075CF0CF01AC |
:10046000F7FD079633E0959587953A95E1F7CAE64B |
:10047000D4E022C089E0E938F8074CF0CF0166E00B |
:1004800070E00E946F18CB01CEE1D5E015C085E089 |
:10049000E932F80754F0CF01F7FD0396959587955B |
:1004A00095958795CDEED5E007C0CF01F7FD019674 |
:1004B00095958795CAE3D7E0C81BD90BCE016AE0B2 |
:1004C00070E00E946F1860930D01D093CF01C0932C |
:1004D000CE016837D0F520910A0130910B012C9F95 |
:1004E000C0012D9F900D3C9F900D1124E92FFF27F7 |
:1004F000C901A3E0880F991FAA95E1F7820F931F06 |
:10050000820F931F67E070E00E946F18E61BF70BE5 |
:10051000809144019091450173E0969587957A9575 |
:10052000E1F78E0F9F1F6AE070E00E946F18FB01D9 |
:10053000C90163E070E00E946F186E177F070CF42A |
:10054000FB0180910A018E1B02C080910A018093F9 |
:100550000C018091440190914501EAEFF0E0E81B25 |
:10056000F90BE93CF10514F0E8ECF0E08FEFEE3C1C |
:10057000F80714F4EEECFFEF909184028AE0989F64 |
:10058000C00111248E0F9F1FFE01E81BF90B1E16E0 |
:100590001F067CF4EE0FFF1FCFEFD0E0CE1BDF0B6A |
:1005A000C230D10514F4C1E0D0E0C09301015798E6 |
:1005B00003C08FEF8093010180910A0190910B019C |
:1005C0009093050280930402DF91CF91089580916A |
:1005D0004401909145019093C9018093C801809195 |
:1005E0004801909149019093CB018093CA01809179 |
:1005F000420190914301892F99279093CD018093D7 |
:10060000CC0180911001909111019093D1018093C0 |
:10061000D00180914001909141019093D30180934A |
:10062000D20180914A0190914B019093D501809322 |
:10063000D4018091010199279093D7018093D6012D |
:1006400080916301909164019093D9018093D801C6 |
:100650008091820299279093DB018093DA01809147 |
:10066000830299279093DD018093DC0180918402BD |
:1006700099279093DF018093DE018091850299276D |
:100680009093E1018093E0018091860299279093F5 |
:10069000E3018093E2018E70907095958795909319 |
:1006A000E5018093E401809100019927909307026E |
:1006B000809306020895F8948091390190913A014F |
:1006C00020917101309172017894892B09F041C019 |
:1006D00040913701509138014115510589F08091C1 |
:1006E0004E01682F7727B3E0660F771FBA95E1F7C1 |
:1006F0001092020180916F008F7D80936F0020C067 |
:10070000809160018531F0F081E0809302012091B9 |
:100710006301309164018BE0293B380708F09A01AE |
:1007200087E02C3F380710F02BEF37E021353105FB |
:1007300030F480913401882311F4BA0101C0B90169 |
:10074000579A02C05798BA01109272011092710123 |
:1007500018C0B901809134018A3028F4285F3740ED |
:1007600010F060E070E0579A10924E011092640110 |
:10077000109263011092020180916F008F7D80932F |
:100780006F00209182022F3FB9F0CB01AA27BB272F |
:10079000332744275527BC01CD010E94301897FF0D |
:1007A00004C061507F4F8F4F9F4FBB2797FDBA9575 |
:1007B000A92F982F872FBC01209101012F3FC1F055 |
:1007C000CB01AA27BB27332744275527BC01CD01DE |
:1007D0000E94301897FF04C061507F4F8F4F9F4F8A |
:1007E000BB2797FDBA95A92F982F872FBC01579843 |
:1007F000209100012F3FC1F0CB01AA27BB2733274F |
:1008000044275527BC01CD010E94301897FF04C032 |
:1008100061507F4F8F4F9F4FBB2797FDBA95A92FF0 |
:10082000982F872FBC0157986115710511F0685CEE |
:100830007F4F87E06C3F780710F06BEF77E0CB01DC |
:10084000089585B1837F85B984B18C6084B95A9845 |
:10085000529A82E88093800089E0809381008091A1 |
:100860006F00816080936F00089596B5980F86B5EC |
:10087000891B87FDFCCF0895CF93C82F7894809370 |
:100880000001C150CF3F59F057988CE291E00E948F |
:100890004010579A8CE291E00E944010F2CF88EE0F |
:1008A00093E00E944010CF910895AF92BF92CF92F3 |
:1008B000DF92EF92FF920F931F93CF93DF938C0100 |
:1008C0003CE2A32E31E0B32EC12CD12C80B7877F20 |
:1008D00080BFC801880F991F880F991F90934B0103 |
:1008E00080934A0110924901109248010E94C00170 |
:1008F000109276010E9448168CE291E00E942C1022 |
:1009000090937801809377011BC00E94841180919D |
:100910004801909149018937910590F08BB1877C0E |
:100920008BB985B1837F85B984B18C6084B95A98BD |
:10093000529A8AE00E943C048AE0809389013EC07A |
:1009400080917701909178010E9435108823E9F217 |
:10095000E80113E0CC0FDD1F1A95E1F7D0934B01AE |
:10096000C0934A010E94C001EE24FF248701EA14CB |
:10097000FB040C051D0558F484E60E9435040E9412 |
:10098000620E0894E11CF11C011D111DF0CF0E94A4 |
:10099000841180914801909149018B35910588F02F |
:1009A0008BB1877C8BB985B1837F85B984B18C602D |
:1009B00084B95A98529A8AE00E943C0480E090E000 |
:1009C0002BC0C601B5012FE030E040E050E00E94AE |
:1009D0008218A21AB30AC40AD50A0894A108B10859 |
:1009E000C108D1088FE0A816B104C104D10418F4DD |
:1009F00081E090E011C00E944816809176018F5FDF |
:100A0000809376018091760166E00E944F18909362 |
:100A100076010E945E10A2CFDF91CF911F910F91BE |
:100A2000FF90EF90DF90CF90BF90AF900895CF935D |
:100A3000DF93EC0121978FEFCF3FD807E9F00E94B9 |
:100A40008411809112019091130188589F4F209139 |
:100A50004801309149018217930760F78BB1877C79 |
:100A60008BB985B1837F85B984B18C6084B95A987C |
:100A7000529A81E090E002C080E090E0DF91CF9157 |
:100A8000089501972FEF8F3F9207D9F780E090E00C |
:100A90000895CF92DF92EF92FF920F931F93CF931F |
:100AA000DF93CDB7DEB763970FB6F894DEBF0FBE06 |
:100AB000CDBF8E010F5F1F4F83E1E4E1F1E0D8016C |
:100AC00001900D928A95E1F7EE24AFEFFA2E579A36 |
:100AD00085B1837F85B984B18C6084B95A98529A64 |
:100AE0008AE00E94BE0A8DE00E94BE0A82E090E089 |
:100AF0000E94170580910301080F111DF8018081E4 |
:100B0000282F33278CE291E0289FA001299F500DC8 |
:100B1000389F500D1124CA018C599F4F0E944010DC |
:100B20008091710190917201892B09F0CDC180B73C |
:100B3000877F80BFF8948BB1877C8BB985B1837F29 |
:100B400085B984B18C6084B95A98529A1092470141 |
:100B50001092460184EF91E00E94170580914801B0 |
:100B600090914901909313018093120187E00E94B4 |
:100B70005C116C0184EF91E0909389008093880070 |
:100B8000109249011092480100E010E080E197E2E4 |
:100B90000E944105109349010093480180E197E2CA |
:100BA0000E9441051092890180EC80937C008BB1FA |
:100BB000877C8BB985B1837F85B984B18C6084B91A |
:100BC0005A98529A5C9A5D9A109349010093480191 |
:100BD00008E710E02398229A529A81E090E00E9460 |
:100BE000410580E00E945C118536910518F051E0C6 |
:100BF000F52A02C08EEFF82285B1837F85B984B1D2 |
:100C00008C6084B95A98529A8CE291E00E94410516 |
:100C10000150104017FFDECF8BB1877C8BB985B1B7 |
:100C2000837F85B984B18C6084B95A98529A5B9A53 |
:100C30005D9A04E810E02298239A529A81E090E0AD |
:100C40000E94410581E00E945C118536910518F0F3 |
:100C5000A2E0FA2A02C0BDEFFB2285B1837F85B9ED |
:100C600084B18C6084B95A98529A8CE291E00E94C7 |
:100C700041050150104017FFDECF8BB1877C8BB947 |
:100C800085B1837F85B984B18C6084B95A98529AB2 |
:100C90005B9A5C9A0EE610E084B18C6084B952983D |
:100CA00081E090E00E94410582E00E945C1185365F |
:100CB000910518F0E4E0FE2A02C0FBEFFF2285B1A7 |
:100CC000837F85B984B18C6084B95A98529A8AE43A |
:100CD00091E00E9441050150104017FFDDCF8BB11C |
:100CE000877C8BB985B1837F85B984B18C6084B9E9 |
:100CF0005A98529A5B9A08E710E02298239A529ADF |
:100D000081E090E00E94410580E00E945C11C816DD |
:100D1000D90618F447EFF42202C058E0F52A85B14D |
:100D2000837F85B984B18C6084B95A98529A8AE4D9 |
:100D300091E00E9441050150104017FFDECF8BB1BA |
:100D4000877C8BB985B1837F85B984B18C6084B988 |
:100D50005A98529A5D9A04E810E02298239A529A7F |
:100D600081E090E00E94410582E00E945C11C8167B |
:100D7000D90618F48FEDF82202C0A0E2FA2A85B154 |
:100D8000837F85B984B18C6084B95A98529A88E679 |
:100D900091E00E9441050150104017FFDECF8BB15A |
:100DA000877C8BB985B1837F85B984B18C6084B928 |
:100DB0005A98529A5C9A0EE610E084B18C6084B91D |
:100DC000529881E090E00E94410581E00E945C1110 |
:100DD000C816D90618F4BFEEFB2202C0E0E1FE2AD5 |
:100DE00085B1837F85B984B18C6084B95A98529A51 |
:100DF00088E691E00E9441050150104017FFDDCFC9 |
:100E00008BB1877C8BB985B1837F85B984B18C60C8 |
:100E100084B95A98529A8091C1008F778093C1000B |
:100E20008091C1008F7B8093C1007894FBEECF1638 |
:100E3000D10408F449C0909103018AEF989FC00142 |
:100E400011240E9440108F2D992780FD04C0F1E0ED |
:100E5000EF2E81E405C081FD07C0E2E0EE2E82E4C2 |
:100E60000E94BE0A8BE21AC082FD04C073E0E72E26 |
:100E700083E4F6CF83FD04C064E0E62E81E60BC078 |
:100E800084FD04C055E0E52E82E605C085FD08C05E |
:100E900046E0E42E83E60E94BE0A8DE20E94BE0A6E |
:100EA000E0928901EE2021F08E2D0E943C04FCCFBF |
:100EB0008E2D0E943C048EE20E94BE0A8AE00E94AF |
:100EC000BE0A8DE00E94BE0A63960FB6F894DEBF9C |
:100ED0000FBECDBFDF91CF911F910F91FF90EF908B |
:100EE000DF90CF900895CFEFD4E0DEBFCDBFEE24EA |
:100EF000E7B880E188B98EEB8AB9EBB88EE084B9A7 |
:100F000081EF85B9579885B1806C85B983EF91E001 |
:100F1000C29797FFFDCF1E9B06C01F9B02C081E0BA |
:100F200007C082E005C01F9B02C083E001C084E0CF |
:100F300080930301189905C0809103018C5F809311 |
:100F4000030180910301885F8093030180910C016C |
:100F5000992790930B0180930A01879731F48EE2D1 |
:100F600090E090930B0180930A0178940E94CA0A42 |
:100F70000E9421040E94A71180E50E94FC120E9499 |
:100F80004D100E94841184EF91E00E942C109093E8 |
:100F900078018093770106C0809171019091720170 |
:100FA000892B41F480917701909178010E9435104E |
:100FB000882391F310924B0110924A010E94C001C4 |
:100FC00081E080937C00109264011092630181E3C0 |
:100FD00085B98AE00E94BE0A8DE00E94BE0A809117 |
:100FE000710190917201892B11F40E94490585E6E7 |
:100FF00090E00E942C108C0186E690E00E942C105C |
:1010000087E690E00E942C109093780180937701FE |
:101010008EEF90E00E942C106C0189E690E00E9417 |
:101020002C10EC010E949B010E94B31710928102C8 |
:101030008091C10080688093C100E0907601109299 |
:101040001301109212010E945B0390934B01809355 |
:101050004A01892B31F40E945B0390934B018093EA |
:101060004A0180917601282F33278E2D992787FDFD |
:1010700090952817390771F0109206011092080117 |
:1010800086E990E00E942C1090937801809377017C |
:10109000E090760180914A0190914B01892BA1F556 |
:1010A000109235011092340110920801C8010E947B |
:1010B00035108823A9F180B7877F80BF81E08093B6 |
:1010C00006018BB1877C8BB985B1837F85B984B1EB |
:1010D0008C6084B95A98529A8091120190911301B0 |
:1010E00020914801309149012817390710F40197E0 |
:1010F00004C08217930728F40196909313018093FC |
:10110000120182E390E009C080910601882319F062 |
:1011100081E0809335018CED95E00E942C108C01CC |
:1011200080910601882321F010924B0110924A0110 |
:101130000E94C001809108018150809308018F3F77 |
:1011400009F081CF82E3809308010E94B01480915E |
:101150004C0190914D01892B21F00E94620E0E945A |
:10116000CA0D80910601882341F0809107018823F0 |
:1011700021F00E945E1010920701C6010E943510F6 |
:10118000882309F4F4C082E390E00E942C106C01E3 |
:1011900080913B01282F332780913C0190913D01A4 |
:1011A000B9010E945B188091480190914901909388 |
:1011B0003D0180933C0181E080933B0180911201CD |
:1011C000909113016817790798F0681B790B80914B |
:1011D00085029927689F9001699F300D789F300D97 |
:1011E0001124B901A6E076956795AA95E1F702C0AA |
:1011F00060E070E080914401909145018617970767 |
:1012000010F4019604C06817790728F401979093A9 |
:1012100045018093440180914401909145018B30B8 |
:10122000910588F0681B790B77FF02C0695F7F4FDB |
:10123000F3E075956795FA95E1F7860F971F909300 |
:10124000450180934401E0914401F0914501CF01B3 |
:101250006AE070E00E945B1840918302842F992716 |
:1012600086179707E8F48AE0489FC00111249F0180 |
:10127000281B390BC901880F991F820F931F2FEF6D |
:1012800030E0A901481B590BCA014931510514F43A |
:1012900089E190E08F3F910521F01CF0C90101C068 |
:1012A0008FEF809300018091320190913301845F30 |
:1012B0009140B0F084EF91E090933301809332013C |
:1012C0008091400190914101893C910548F08091C5 |
:1012D0004A0190914B01892B19F081E080933501EF |
:1012E0002091320130913301C901969587959093F1 |
:1012F00041018093400140913401453668F080916E |
:10130000300190913101969587952817390720F47F |
:1013100083E080933E0102C010923E0180914A0119 |
:1013200090914B01892B71F0453660F024313105E5 |
:1013300048F48091300190913101899718F081E053 |
:1013400080933501109231011092300110923301D7 |
:10135000109232010E94110280914C0190914D0136 |
:10136000009729F0019790934D0180934C01CE0195 |
:101370000E943510882379F085E090E00E942C10BF |
:10138000EC01809134018F3F19F08F5F809334011D |
:1013900081E08093070180917701909178010E940C |
:1013A0003510882331F080914001909141010A97D6 |
:1013B00028F080913501882309F445CE84E690E039 |
:1013C0000E942C1090937801809377011092340141 |
:1013D00051E0F52EF092060180B7877F80BF8091A3 |
:1013E0003501882309F42FCE80910E0190910F01D1 |
:1013F0008958994008F427CE579A109247011092C5 |
:1014000046011092350180918602282F33272E70D5 |
:101410003070220F331F809110019091110168E10B |
:1014200070E00E945B18261B370B255F3F4F24306E |
:10143000310514F424E030E0C9010E9455048823EA |
:1014400009F494C082E080933E011092060188E086 |
:1014500090E090934B0180934A010E94C00110924A |
:10146000330110923201109231011092300180B795 |
:101470008C7F80BF80B78A6080BF82E390E00E944B |
:101480002C1090937801809377018091770190914F |
:1014900078010E9435108823C1F380918602282F9D |
:1014A00033272E703070809110019091110144E02B |
:1014B000969587954A95E1F7281B390B2E5E3F4F8D |
:1014C0002830310514F428E030E0C3E0220F331F48 |
:1014D000CA95E1F7285C3F4F30934B0120934A01B6 |
:1014E0000E94C0010E945B03892B41F08CE291E0D5 |
:1014F0000E942C10909378018093770181E0809373 |
:101500003E0122C0809148019091490185369105A4 |
:10151000A8F08BB1877C8BB985B1837F85B984B105 |
:101520008C6084B95A98529A8AE00E943C040E94C6 |
:101530005B03892B19F081E08093350180913201A2 |
:1015400090913301892B41F080917701909178013E |
:101550000E9435108823B1F210923E0182E390E0A0 |
:101560000E942C10EC01B7E0EB2E6DCD0E945B03C6 |
:10157000892B09F468CDF092350165CD982F8091C3 |
:10158000C10083FF06C08091C00085FFFCCF90930F |
:10159000C6000895CF93CFB7F8948091C1008F779C |
:1015A0008093C1008091C1008F7B8093C1005098CF |
:1015B0005898519A59988091C00082608093C000D9 |
:1015C0008091C2008F778093C2008091C2008F7B90 |
:1015D0008093C2008091C2008F7D8093C200809171 |
:1015E000C2008F7E8093C2008091C200877F80936B |
:1015F000C2008091C1008B7F8093C1008091C200A6 |
:1016000084608093C2008091C20082608093C20097 |
:101610008091C10080618093C1008091C100886089 |
:101620008093C1008091C00087FF03C08091C600F5 |
:10163000F9CF8091C10080688093C1008091C10082 |
:101640008F7B8093C10080912701909128010E9497 |
:101650002C1090937702809376021092560110928C |
:101660005401109253011092520191E0909329017C |
:101670001092BC018FE18093BD019093C0018BE07B |
:101680008093BE011092BF018DE00E94BE0A8AE0E5 |
:101690000E94BE0A82E40E94BE0A8CE40E94BE0A36 |
:1016A0008AE30E94BE0A86E50E94BE0A80E30E9489 |
:1016B000BE0A8EE20E94BE0A83E30E94BE0A81E354 |
:1016C0000E94BE0A82E60E94BE0A8DE00E94BE0A07 |
:1016D0008AE00E94BE0A88E40E94BE0A87E50E9452 |
:1016E000BE0A8AE30E94BE0A82E30E94BE0A8EE21C |
:1016F0000E94BE0A80E30E94BE0A80E20E94BE0AE7 |
:1017000082E50E94BE0A85E60E94BE0A86E70E9424 |
:10171000BE0A80912C016AE00E944F18805D0E94F1 |
:10172000BE0A80912C016AE00E944F18892F805DCB |
:101730000E94BE0ACFBFCF9108958091C00086FF5E |
:1017400029C080912901882309F580915701909142 |
:10175000580101969093580180935701FC01E85F6E |
:10176000FD4FE081ED3019F08E36910539F410927D |
:1017700058011092570181E0809329018091C000A7 |
:1017800081608093C000E093C600089510925801D4 |
:101790001092570108951F920F920FB60F921124C5 |
:1017A0002F933F934F935F938F939F93AF93BF93E9 |
:1017B000CF93DF93EF93FF935091C6008091560132 |
:1017C000882309F074C040915B01442371F45332C3 |
:1017D00079F450938A0181E080935B0183E290E089 |
:1017E00090935A018093590162C0423308F05BC064 |
:1017F0002091590130915A01E42FFF275D3069F0A3 |
:10180000E657FE4F50834F5F40935B01250F311D1C |
:1018100030935A01209359014AC0DF01A657BE4FA9 |
:10182000FD0132978081281B3109ED0121978881C4 |
:10183000281B3109C9019F7090935A018093590167 |
:10184000689415F8969587951694E1F7982F935C10 |
:101850002F733070235C8081981701F588812817D9 |
:10186000E9F480ED97E090934D0180934C015C93F7 |
:101870004F5F4093550181E08093560180918C0128 |
:10188000823571F488E190E02CE00FB6F894A895C9 |
:10189000809360000FBE2093600002C0109256013A |
:1018A00010925B0104C080935B0180935601FF910D |
:1018B000EF91DF91CF91BF91AF919F918F915F9108 |
:1018C0004F913F912F910F900FBE0F901F90189541 |
:1018D000AC01A0E0B0E09D01A817B90748F4E8E02A |
:1018E000F2E08191280F311D1196A417B507C8F3B6 |
:1018F0003F70FD01E85FFD4FC90176E09695879541 |
:101900007A95E1F7835C80831196FD01E85FFD4FD6 |
:101910002F733070822F835C8083A75FBD4F8DE073 |
:101920008C9310922901809108028093C60008953B |
:10193000BF92CF92DF92EF92FF920F931F93CF93BC |
:10194000DF93CDB7DEB72C859D850E85BB2483E262 |
:10195000809308029F599093090220930A0233E072 |
:10196000E32EF12C002309F49EC0CF84D888BE0159 |
:101970006D5E7F4FA989BA890150109709F493C011 |
:101980001097B9F0F601EB0DF11DB394908111970A |
:1019900091F4002349F1FB016E5F7F4FDB01C080B2 |
:1019A000D1806E5F7F4F0D90BC91A02DBB24015064 |
:1019B00002C090E019C01097B9F0F601EB0DF11DCF |
:1019C000B3944081119791F4002341F1FB016E5FC4 |
:1019D0007F4FDB01C080D1806E5F7F4F0D90BC9147 |
:1019E000A02DBB24015002C040E018C01097B1F0F8 |
:1019F000F601EB0DF11DB3941081119781F40023D2 |
:101A000071F0FB013296DB01CD90DC90BF016E5F7F |
:101A10007F4FA081B181BB24015001C010E0F701CC |
:101A2000E85FFD4F892F86958695835C80830894B7 |
:101A3000E11CF11CF701E85FFD4F892F99278370A6 |
:101A4000907024E0880F991F2A95E1F755279A0195 |
:101A500094E0369527959A95E1F7822B835C8083F5 |
:101A60000894E11CF11CF701E85FFD4F4F705070C6 |
:101A7000440F551F440F551F812F992726E0969537 |
:101A800087952A95E1F7842B835C80830894E11C79 |
:101A9000F11CF701E85FFD4F1F73135C108308947E |
:101AA000E11CF11C6ACFC7010E94680CDF91CF9145 |
:101AB0001F910F91FF90EF90DF90CF90BF9008950E |
:101AC000A3E07A2F409155014650442309F458C0B1 |
:101AD000E72FFF27E657FE4F80818D537F5FE72F6B |
:101AE000FF27E657FE4F20812D537F5FE72FFF270B |
:101AF000E657FE4F30813D537F5FE72FFF27E657C4 |
:101B0000FE4F60816D537F5F9927880F991F880F63 |
:101B1000991F522F52955F70582B822F99278F70E3 |
:101B20009070F4E0880F991FFA95E1F7232F26951E |
:101B30002695282B832F992783709070E6E0880FD5 |
:101B4000991FEA95E1F7682B41504F3FC9F0EA2F02 |
:101B5000FF27E657FE4F5083AF5F41504F3F81F064 |
:101B6000EA2FFF27E657FE4F2083AF5F41504F3FDC |
:101B700039F0EA2FFF27E657FE4F6083AF5FA5CF0E |
:101B80008DE891E09093540180935301A350A0936A |
:101B90005201089580915601882309F492C00E9451 |
:101BA000600D80918B01863611F480918C018091BB |
:101BB0008C0199278437910509F445C08537910533 |
:101BC0004CF48136910509F468C08436910509F416 |
:101BD0004DC06FC08637910509F45BC0863791050B |
:101BE00024F087379105B9F064C0E0915301F0917A |
:101BF0005401908180910301981719F08081882306 |
:101C000019F410924F0103C082E080934F0180913C |
:101C1000510188604CC0E0915301F09154018081E2 |
:101C2000882329F0908180910301981729F4CF012E |
:101C300001960E944C1701C082E080934F01809171 |
:101C40005101806134C080910301E0915301F09112 |
:101C50005401E80FF11D3197808180934E0184EF8C |
:101C600091E0909338018093370123C0E0915301B4 |
:101C7000F091540190818AE0989FC00111249093C3 |
:101C8000280180932701892BA1F080915101826066 |
:101C90000EC08091510181600AC0E0915301F09122 |
:101CA0005401808180935001809151018460809320 |
:101CB000510110925401109253011092520110924E |
:101CC00056010895CF93DF93CDB7DEB761970FB676 |
:101CD000F894DEBF0FBECDBF80912901882319F48F |
:101CE0000E949D0BE6C08091510182FF30C080911F |
:101CF0005001992724E0880F991F2A95E1F78A550A |
:101D00009F4F40E150E0BC01CE0101960E94E017D8 |
:101D100080E190E09F938F93CE0101969F938F93E4 |
:101D200081E090E09F938F9380E591E09F938F9364 |
:101D300082E08F9385E08F9381E48F930E94980CCB |
:101D40008FEF80935001809151018B7FA8C08091CB |
:101D5000270190912801892B41F080917602909182 |
:101D600077020E943510882329F480915101992728 |
:101D700081FF20C00E94E70282E490E09F938F934E |
:101D800086EC91E09F938F9381E08F9385E08F9312 |
:101D900084E48F930E94980C8091270190912801F0 |
:101DA0000E942C10909377028093760280915101CB |
:101DB0008D7F15C080FF19C08AE090E09F938F93BC |
:101DC0008CEB91E09F938F9381E08F9385E08F93CD |
:101DD00086E58F930E94980C809151018E7F8093AD |
:101DE00051018DB79EB707965FC083FF35C08091C4 |
:101DF0004F01882319F481E0898B01C0198A88E09A |
:101E000090E09F938F9380E892E09F938F9321E0DF |
:101E100030E03F932F9383E091E09F938F933F9324 |
:101E20002F938FE491E09F938F933F932F93CE0155 |
:101E300041969F938F9384E08F9385E08F9385E500 |
:101E40008F930E94980C80915101877F809351015C |
:101E50008DB79EB7439628C084FF2BC080914F0159 |
:101E6000882319F481E0898B01C0198A21E030E0D0 |
:101E70003F932F938FE491E09F938F933F932F9302 |
:101E8000CE0141969F938F9382E08F9385E08F934D |
:101E900087E58F930E94980C809151018F7E8093EB |
:101EA00051018DB79EB70B960FB6F8949EBF0FBE2B |
:101EB0008DBF61960FB6F894DEBF0FBECDBFDF9128 |
:101EC000CF9108951F93CF93DF93EC0110E08881A9 |
:101ED000882369F0FE01E10FF11D1F5F80810E94E0 |
:101EE000BE0AFE01E10FF11D8081882399F7DF9181 |
:101EF000CF911F9108951F920F920FB60F92112448 |
:101F00002F933F934F935F936F937F938F939F9301 |
:101F1000AF93BF93EF93FF9380913F01882319F014 |
:101F2000815080933F0180915E01815080935E01DA |
:101F30008F3F09F080C083E080935E0180915C0157 |
:101F400090915D01019690935D0180935C01809179 |
:101F5000390190913A01009719F1019790933A0154 |
:101F60008093390121E0883B920739F021E08C32DF |
:101F7000920719F08436910599F480E50E940613C2 |
:101F80008091390190913A01885B914049F48091A8 |
:101F9000E6019091E70101969093E7018093E601B5 |
:101FA00080916101882331F080916101815080939B |
:101FB000610102C0809360018091370190913801E6 |
:101FC000009729F001979093380180933701809111 |
:101FD0003601882319F081508093360180912A01BF |
:101FE00090912B01019790932B0180932A018F5F91 |
:101FF0009F4F09F520914201309143018DEF283E1A |
:10200000380750F48091440190914501280F391F01 |
:10201000309343012093420188E795E090932B0190 |
:1020200080932A018091390190913A01892B19F40A |
:1020300080E50E940613FF91EF91BF91AF919F91B0 |
:102040008F917F916F915F914F913F912F910F9061 |
:102050000FBE0F901F90189520915C0130915D018B |
:10206000280F391FC9010197089520915C01309113 |
:102070005D01821B930B892F990F990B807808952E |
:10208000CF93DF930E942C10EC01CE010E943510FB |
:102090008823D9F3DF91CF91089586EA80937A005F |
:1020A00087EC80937C0080917A00806480937A0032 |
:1020B00080917B00806480937B000895809136013D |
:1020C0008150809336018F3F09F093C084E680935E |
:1020D000360180915F01815080935F018F3F09F04D |
:1020E00050C020917C0097EC90937C0080B7806872 |
:1020F00080BF83ED80937A0080917A008061809325 |
:102100007A0090937C0080917A00806480937A00BA |
:1021100080917A0084FFFCCF20937C00209178008E |
:102120003091790083E190E0289FA001299F500D14 |
:10213000389F500D11249A0166E0369527956A95CF |
:10214000E1F72F3F310519F010F02FEF30E08091CB |
:10215000100190911101820F931F9695879590938E |
:1021600011018093100110927A0080917B008064AD |
:1021700080937B0080B78F7780BF83E080935F017F |
:10218000089520917C0093EC90937C0080B7806848 |
:1021900080BF83ED80937A0080917A008061809384 |
:1021A0007A0090937C0080917A00806480937A001A |
:1021B00080917A0084FFFCCF20937C00809178008E |
:1021C000909179009C0143E0220F331F4A95E1F77B |
:1021D000280F391F280F391F80910E0190910F0190 |
:1021E000820F931F9695879590930F0180930E0110 |
:1021F00058C020917C0096EC90937C0080B780685A |
:1022000080BF83ED80937A0080917A008061809313 |
:102210007A0090937C0080917A00806480937A00A9 |
:1022200080917A0084FFFCCF20937C0080910C0188 |
:10223000282F33278091780090917900829FA00108 |
:10224000839F500D929F500D11249A0194E0369572 |
:1022500027959A95E1F780913C0190913D01820F7D |
:10226000931F90933D0180933C0180913B018F5FD0 |
:1022700080933B014091480150914901420F531F07 |
:1022800056954795509349014093480180914601E6 |
:10229000909147018417950720F45093470140938C |
:1022A000460110927A0080917B00806480937B00CD |
:1022B00080B78F7780BF089520917C00982F906C15 |
:1022C00090937C0080B7806880BF83ED80937A0014 |
:1022D00080917A00806180937A0090937C00809155 |
:1022E0007A00806480937A0080917A0084FFFCCF2A |
:1022F00020937C0010927A0080B78F7780BF809106 |
:10230000780090917900089586E00E945C112091F8 |
:102310000C013327829FA001839F500D929F500D87 |
:1023200011249A0174E0369527957A95E1F7309358 |
:1023300049012093480180914601909147018217FD |
:10234000930720F43093470120934601089580912C |
:102350008100806C809381008091810080648093F3 |
:10236000810080916F00806280936F0080916F0088 |
:10237000816080936F0084E08093B10008951F9284 |
:102380000F920FB60F9211242F933F938F939F9329 |
:1023900080916501282F33278F5F8093650121305D |
:1023A0003105B1F0223031051CF4232B41F038C047 |
:1023B00022303105B1F02330310511F131C0809167 |
:1023C0002D0190912E01909389008093880028C060 |
:1023D00080912F0120912D0130912E01823058F0F3 |
:1023E00008C080912F0120912D0130912E01833062 |
:1023F00011F42F5F3F4F309389002093880010C065 |
:1024000080912F0120912D0130912E01882311F010 |
:102410002F5F3F4F30938900209388001092650111 |
:10242000809162018F5F809362019F918F913F91B4 |
:102430002F910F900FBE0F901F9018951F920F9223 |
:102440000FB60F9211242F933F934F935F936F9387 |
:102450007F938F939F93AF93BF938091810086FF6B |
:1024600017C08091620180936A01809186009091EB |
:1024700087009093670180936601809181008F7B34 |
:102480008093810084E6809361011092B200A5C020 |
:102490008091810080648093810080916201282F67 |
:1024A000332780916A01281B3109322F2227330FED |
:1024B0008091860090918700280F391F80916601D6 |
:1024C00090916701281B390B3093690120936801B3 |
:1024D0008091B200682F7727689415F8660F771FF0 |
:1024E0001694E1F7AB01445D5E4F42175307A0F429 |
:1024F000C901805092409093690180936801481708 |
:10250000590738F580509240909369018093680193 |
:1025100048175907F0F419C0AB014C525140241729 |
:102520003507B8F4C90180509E4F9093690180939C |
:1025300068018417950768F480509E4F9093690155 |
:10254000809368018417950720F470936901609364 |
:102550006801809168019091690163E070E00E94D8 |
:102560005B187093690160936801809160018F3FEF |
:1025700051F06D587A40635F714028F4809160019A |
:102580008F5F8093600180916801909169018C5107 |
:102590009C4030F48CE19CE0909369018093680149 |
:1025A00080916801909169018C519C404091630138 |
:1025B000509164019A01220F331F240F351F280FF9 |
:1025C000391F3695279536952795309369012093C5 |
:1025D00068013093640120936301BF91AF919F9193 |
:1025E0008F917F916F915F914F913F912F910F90BC |
:1025F0000FBE0F901F90189590910301990F980F9F |
:102600009093BA0085EC8093BC0008951092BC00B2 |
:1026100090910301990F980F9093BA0085EC8093E5 |
:10262000BC0008951F920F920FB60F9211242F93A2 |
:102630003F934F935F936F937F938F939F93AF934A |
:10264000BF93EF93FF938091B9009927887F907093 |
:102650008038910529F1813891053CF4009709F4FF |
:102660005FC18036910591F067C1883B910509F4FF |
:10267000A8C0893B91052CF4883A910509F4A1C0C2 |
:102680005BC1883F910509F44BC156C18091BC00E4 |
:1026900080688093BC0010927501109274014FC144 |
:1026A0004091BB008091BC0080688093BC00809109 |
:1026B0007401282F33278F5F8093740121303105F7 |
:1026C00009F44AC0223031051CF4232B31F06FC0CD |
:1026D0002230310509F45BC06AC0442369F480915B |
:1026E0007301882349F08091390190913A01892B37 |
:1026F00019F081E090E011C08091390190913A0188 |
:10270000892B81F080917301882361F0842F9927B0 |
:1027100063E0880F991F6A95E1F7909372018093A7 |
:10272000710104C010927201109271014093730103 |
:1027300080916C0190916D0120914401309145018F |
:10274000820F931F90936D0180936C0180916B01B8 |
:102750008F5F80936B012EC02091710130917201C7 |
:102760002115310551F0842F992787709070280F1B |
:10277000391F3093720120937101842F992753E000 |
:10278000969587955A95E1F78093750113C08091CE |
:102790006E01883078F480916E01E82FFF27E858A9 |
:1027A000FD4F40838F5F80936E0182E001C08EEF0A |
:1027B0008093740184EF91E090933A018093390102 |
:1027C000BEC080917501282F3327442755278F5F7E |
:1027D00080937501F9012F31310508F097C0EC5C49 |
:1027E000FF4FEE0FFF1F0590F491E02D09948091AB |
:1027F0004401909145018E3F910570F48091440110 |
:1028000082C0809144019091450121E08E3F920762 |
:1028100018F49695879577C08EEF75C080917101F9 |
:1028200090917201892B11F48AEF6DC0809134016F |
:10283000823310F488E267C0909100018091010119 |
:10284000891708F460C09093BB0066C080910D01A9 |
:102850005AC08091400157C080914201909143013C |
:10286000892F992786954FC080914201909143010D |
:10287000892F992748C08091100145C080916F0130 |
:1028800042C08FE140C020916B01223348F43327CE |
:1028900080916C0190916D01B9010E945B1804C098 |
:1028A00060914401709145016E3F710518F4609389 |
:1028B000BB0003C08EEF8093BB0010926D0110929D |
:1028C0006C0110926B0128C0809180021CC0809125 |
:1028D000810219C08091820216C08091830213C0C8 |
:1028E0008091840210C0809185020DC08091860283 |
:1028F0000AC08091870207C08091890104C01092AC |
:10290000BB000AC085EA8093BB0006C08FEF8093AE |
:10291000BB008EEF809375018091BC0080680DC074 |
:1029200085ED8093BC0080916F01909170010196BC |
:102930009093700180936F0185EC8093BC00FF91B0 |
:10294000EF91BF91AF919F918F917F916F915F9127 |
:102950004F913F912F910F900FBE0F901F901895A0 |
:1029600080916E01883030F088E792E00E944C1729 |
:1029700010926E0108951F920F920FB60F921124BC |
:102980000F900FBE0F901F9018951F920F920FB6C9 |
:102990000F9211241F932F933F934F935F936F9345 |
:1029A0007F938F939F93AF93BF93CF93EF93FF93B7 |
:1029B0001EE180913F01882309F055C100B605FE54 |
:1029C00002C0C1E001C0C0E08091860280FD84C0E9 |
:1029D0008091760199278230910509F445C08330B2 |
:1029E00091052CF4009779F0019711F124C18430FE |
:1029F000910509F450C0843091050CF440C005974E |
:102A000009F460C018C12398229A529ACC2309F481 |
:102A1000E4C08BB1877E8BB95D9A809107018823D2 |
:102A200011F00E945E1080B78E7F80BF81EC82C063 |
:102A30008BB1877E8BB95D9ACC2309F0B8C0229800 |
:102A4000239A529A80910701882311F00E945E1008 |
:102A500080EC80937C0080B7836080BF809176019A |
:102A60008F5F80937601D5C02298239A529ACC2307 |
:102A700009F48DC08BB18F7C8BB95B9A80C08BB110 |
:102A80008F7C8BB95B9ACC2309F06DC084B18C60CC |
:102A900084B9529860C084B18C6084B95298CC23B8 |
:102AA00009F44BC08BB1877D8BB95C9A809107018B |
:102AB000882311F00E945E1080EC80937C0080B728 |
:102AC0008E7FCBCF8BB1877D8BB95C9ACC2309F0FD |
:102AD000AEC02398229A8EC08091760199278230C9 |
:102AE000910509F443C0833091052CF4009779F0E7 |
:102AF000019741F1A0C08430910509F45CC0843095 |
:102B000091050CF449C0059709F46CC094C0229853 |
:102B1000239A529ACC2389F08BB1877E8BB95D9A28 |
:102B200080910701882311F00E945E1080B78E7F8C |
:102B300080BF80EC80937C0091CF8BB18F7C8BB970 |
:102B40005B9A79C08BB1877E8BB95D9ACC2359F49F |
:102B50002398229A529A80910701882311F00E94AB |
:102B60005E1081EC76CF2298239A23C02398229A74 |
:102B7000529ACC2361F08BB1877D8BB95C9A80919E |
:102B80000701882311F00E945E1082EC96CF8BB172 |
:102B9000877E8BB95D9A4FC08BB1877D8BB95C9A6C |
:102BA000CC2329F484B18C6084B952984BCF2398FC |
:102BB000229A529A40C084B18C6084B95298CC2336 |
:102BC00061F08BB18F7C8BB95B9A80910701882370 |
:102BD00011F00E945E1081EC70CF8BB1877D8BB9B4 |
:102BE0005C9A29C08BB18F7C8BB95B9ACC23F9F4AA |
:102BF0002298239A529A80910701882311F00E940B |
:102C00005E1082EC80937C0080B7836080BFC093AD |
:102C100076018091320190913301019690933301B6 |
:102C20008093320180913E0180933F0104C084B1C2 |
:102C30008C6084B952988091300190913101019655 |
:102C4000909331018093300111501F3F61F000B625 |
:102C500005FC03C0CC2309F0B1CE00B605FE03C0CD |
:102C6000CC2309F4ABCE10920701FF91EF91CF91E5 |
:102C7000BF91AF919F918F917F916F915F914F9194 |
:102C80003F912F911F910F900FBE0F901F9018959D |
:102C90008091860280FD4FC0809176019927823015 |
:102CA000910539F1833091052CF4009761F001977B |
:102CB00091F008958430910561F1843091050CF113 |
:102CC000059781F108952398229A529A8BB1877DB6 |
:102CD0008BB95C9A4EC02398229A529A8BB1877E08 |
:102CE0008BB95D9A81EC80937C0080B78E7F80BF2A |
:102CF00008952298239A529A8BB1877E8BB95D9A58 |
:102D00005DC02298239A529A8BB18F7C8BB95B9AC3 |
:102D10004BC084B18C6084B952988BB18F7C8BB9D5 |
:102D20005B9A39C084B18C6084B952988BB1877D2D |
:102D30008BB95C9A27C080917601992782309105E2 |
:102D400019F1833091052CF4009761F0019799F007 |
:102D500008958430910551F184309105F4F0059780 |
:102D600099F108952298239A529A8BB18F7C8BB94E |
:102D70005B9A82EC24C02298239A529A8BB1877E68 |
:102D80008BB95D9A80ECAFCF2398229A529A8BB17F |
:102D9000877E8BB95D9A81EC12C02398229A529A51 |
:102DA0008BB1877D8BB95C9A82EC9DCF84B18C60AE |
:102DB00084B952988BB1877D8BB95C9A80EC8093F3 |
:102DC0007C0080B7836093CF84B18C6084B95298C3 |
:102DD0008BB18F7C8BB95B9A85CFF999FECF92BD71 |
:102DE00081BDF89A80B599270895F999FECF1FBA49 |
:102DF00092BD81BD60BD0FB6F894FA9AF99A0FBEE4 |
:102E000008954AEA20E030E02617370740F4FC0135 |
:102E10008191480F2F5F3F4F26173707C8F3842F44 |
:102E20009927089582E080938002109281028FEFAB |
:102E30008093820298E29093830284E680938402D6 |
:102E400080E48093850284E080938602809109016A |
:102E5000981710F08093830267E070E080E892E0BA |
:102E60000E9401178093870208958091800282302A |
:102E700091F467E070E080E892E00E94011780938F |
:102E8000870225EF36E148E050E060E872E080E03C |
:102E900090E00E940E180895CF93DF93EC0167E055 |
:102EA00070E00E9401179F81981719F085E090E06B |
:102EB00057C08881823019F084E090E051C0898148 |
:102EC00086FF03C00E94121744C0109281028981BC |
:102ED000282F332720FF03C08A818093820221FF9D |
:102EE00003C08B818093830222FF03C08C81809377 |
:102EF000840223FF03C08D818093850224FF08C0D4 |
:102F0000909186029E708E81817F982B909386028D |
:102F100025FF08C090918602917F8E818E70982B3C |
:102F20009093860280918402833718F083E7809320 |
:102F300084028091830290910901891710F0909387 |
:102F4000830267E070E080E892E00E9401178093BE |
:102F50008702898187FF02C00E94351780E090E0D8 |
:102F6000DF91CF9108952DEE36E148E050E060E02A |
:102F700070E080E892E00E94E91767E070E080E886 |
:102F800092E00E940117982F80918002823021F4F4 |
:102F900080918702891721F00E9412170E9435172D |
:102FA0008091830290910901891710F09093830218 |
:102FB00080918402833718F083E780938402089518 |
:102FC000FB01DC0102C005900D9241505040D8F742 |
:102FD0000895A0E0B0E0EFEEF7E10C94AC186C01BE |
:102FE0007B01EA01590121978FEFCF3FD80789F084 |
:102FF00086010894C11CD11CC7010894E11CF11C76 |
:10300000F5010995F80180832197FFEFCF3FDF0796 |
:1030100079F7EAE0CDB7DEB70C94C818A0E0B0E0CD |
:10302000E4E1F8E10C94AE188C017B01EA0169013E |
:1030300021978FEFCF3FD80771F0F70121917F01E2 |
:10304000C8010F5F1F4F622FF60109952197FFEF0F |
:10305000CF3FDF0791F7E8E0CDB7DEB70C94CA1891 |
:10306000629FD001739FF001829FE00DF11D649F6C |
:10307000E00DF11D929FF00D839FF00D749FF00DF8 |
:10308000659FF00D9927729FB00DE11DF91F639F99 |
:10309000B00DE11DF91FBD01CF0111240895991B49 |
:1030A00079E004C0991F961708F0961B881F7A953F |
:1030B000C9F780950895AA1BBB1B51E107C0AA1F41 |
:1030C000BB1FA617B70710F0A61BB70B881F991FC9 |
:1030D0005A95A9F780959095BC01CD01089597FB6D |
:1030E000092E07260AD077FD04D0E5DF06D00020A0 |
:1030F0001AF4709561957F4F0895F6F79095819534 |
:103100009F4F0895A1E21A2EAA1BBB1BFD010DC003 |
:10311000AA1FBB1FEE1FFF1FA217B307E407F50787 |
:1031200020F0A21BB30BE40BF50B661F771F881F63 |
:10313000991F1A9469F760957095809590959B01F9 |
:10314000AC01BD01CF0108952F923F924F925F9243 |
:103150006F927F928F929F92AF92BF92CF92DF92A7 |
:10316000EF92FF920F931F93CF93DF93CDB7DEB70C |
:10317000CA1BDB0B0FB6F894DEBF0FBECDBF0994A0 |
:103180002A88398848885F846E847D848C849B84F7 |
:10319000AA84B984C884DF80EE80FD800C811B8105 |
:1031A000AA81B981CE0FD11D0FB6F894DEBF0FBE34 |
:0831B000CDBFED010895FFCF32 |
:1031B800FFFF0101FB07010101281900191E204E1C |
:1031C8008000050000000201030405060708090A3B |
:0C31D8000B0C0D0E0F1011881301FF00EE |
:00000001FF |
/BL-Ctrl_2.0/V0.31/BL_2_0.txt |
---|
0,0 → 1,7 |
Hex-Files BL-Ctrl2.0 |
Adresses 1-8 and 9-12 |
Attention: |
The firmware only works on the original processor with MikroKopter BL2.0 Bootloader |
Do not install these files via ISP - only through MKUSB |
/BL-Ctrl_2.0/V0.31b/BL-Ctrl_MEGA168_V0_31b.hex |
---|
0,0 → 1,799 |
:100000000C9453010C9499010C9499010C9499014E |
:100010000C9499010C9499010C9499010C949901F8 |
:100020000C9499010C94B6140C9419120C94990127 |
:100030000C9499010C94BA110C9499010C949901A7 |
:100040000C94760F0C9499010C94C60B0C949901A6 |
:100050000C9499010C9499010C9499010C94C0147E |
:100060000C940D130C949901F21309142114241407 |
:100070002F14361439147A143C143E14FC1309144A |
:100080002114241427147A145F146214651468145C |
:100090006B146E14711474147714811481147A140F |
:1000A000811481147D1443757272656E7420202052 |
:1000B0005B302E31415D43757272656E74526177AB |
:1000C0002020202020206D41682020202020205B3F |
:1000D00031306D41685D54656D702E202020205BAD |
:1000E000302E31B0435D566F6C74616765202020FF |
:1000F0005B302E31565D72706D2028726177292039 |
:10010000202020202020536574706F696E74202099 |
:100110002020202020204D6178536574706F696E17 |
:1001200074202020202050504D536574706F696EEC |
:10013000742020202020506172616D2E50776D5305 |
:1001400063616C696E67506172616D2E4D617843B9 |
:10015000757272656E74506172616D2E4D61785466 |
:10016000656D702E2020506172616D2E5363616C3D |
:10017000652049202020506172616D2E42697473A0 |
:10018000202020202020506172616D2E53746172F6 |
:100190007450574D2020493243204C6F73742020F7 |
:1001A00020202020202044656275673136202020E1 |
:1001B00020202020202044656275673137202020D0 |
:1001C00020202020202044656275673138202020BF |
:1001D00020202020202044656275673139202020AE |
:1001E00020202020202044656275673230202020A6 |
:1001F0002020202020204465627567323120202095 |
:100200002020202020204465627567323220202083 |
:100210002020202020204465627567323320202072 |
:100220002020202020204465627567323420202061 |
:100230002020202020204465627567323520202050 |
:10024000202020202020446562756732362020203F |
:10025000202020202020446562756732372020202E |
:10026000202020202020446562756732382020201D |
:10027000202020202020446562756732392020200C |
:100280002020202020204861726477617265202040 |
:100290002020202020204C696D69742049202020D6 |
:1002A00020202020202011241FBECFEFD4E0DEBF6D |
:1002B000CDBF11E0A0E0B1E0EEEAF1E302C00590AD |
:1002C0000D92AC32B107D9F712E0ACE2B1E001C057 |
:1002D0001D92A838B107E1F74AEA20EF37E3A9E712 |
:1002E000B1E09FE0F9012F5F3F4F84918D939150D2 |
:1002F00097FFF8CFE9E7F1E09EE08191482740952C |
:10030000915097FFFACF80918801481711F00000B3 |
:10031000FECF8091800180932C0180918101809398 |
:100320000C0180918201809309010E9473070C9453 |
:10033000D6180C940000CF938AE00E94B90A81E499 |
:100340000E94B90A84E40E94B90A82E50E94B90AAF |
:100350008AE30E94B90AC09103018C2F805D8A3321 |
:1003600028F081E30E94B90A8C2F8A5D0E94B90AA5 |
:100370008DE00E94B90A8AE00E94B90ACF910895DF |
:1003800020914A0130914B01809183026AE0869F5F |
:10039000C0011124409148015091490184179507EB |
:1003A00090F4579880910901869FC0011124C2964C |
:1003B0008417950740F410928900109288008BB141 |
:1003C000877C8BB902C037FF02C020E030E080910B |
:1003D00034018F3F61F0992763E0880F991F6A9578 |
:1003E000E1F7805B9F4F821793070CF49C0187E035 |
:1003F0002C3F380714F02BEF37E0C90137FD039687 |
:10040000959587959595879590932E0180932D01CD |
:10041000880F991F880F991F281B390B20932F01D4 |
:100420000895CF93DF93E0910E01F0910F0181E2E7 |
:10043000E330F8071CF0C0E0D0E040C089E1E13FC4 |
:10044000F8074CF0CF0166E070E00E946A18CB011B |
:10045000C8E7D5E031C080E1E33CF8075CF0CF01AC |
:10046000F7FD079633E0959587953A95E1F7CAE64B |
:10047000D4E022C089E0E938F8074CF0CF0166E00B |
:1004800070E00E946A18CB01CEE1D5E015C085E08E |
:10049000E932F80754F0CF01F7FD0396959587955B |
:1004A00095958795CDEED5E007C0CF01F7FD019674 |
:1004B00095958795CAE3D7E0C81BD90BCE016AE0B2 |
:1004C00070E00E946A1860930D01D093CF01C09331 |
:1004D000CE016837D0F520910A0130910B012C9F95 |
:1004E000C0012D9F900D3C9F900D1124E92FFF27F7 |
:1004F000C901A3E0880F991FAA95E1F7820F931F06 |
:10050000820F931F67E070E00E946A18E61BF70BEA |
:10051000809144019091450173E0969587957A9575 |
:10052000E1F78E0F9F1F6AE070E00E946A18FB01DE |
:10053000C90163E070E00E946A186E177F070CF42F |
:10054000FB0180910A018E1B02C080910A018093F9 |
:100550000C018091440190914501EAEFF0E0E81B25 |
:10056000F90BE93CF10514F0E8ECF0E08FEFEE3C1C |
:10057000F80714F4EEECFFEF909184028AE0989F64 |
:10058000C00111248E0F9F1FFE01E81BF90B1E16E0 |
:100590001F067CF4EE0FFF1FCFEFD0E0CE1BDF0B6A |
:1005A000C230D10514F4C1E0D0E0C09301015798E6 |
:1005B00003C08FEF8093010180910A0190910B019C |
:1005C0009093050280930402DF91CF91089580916A |
:1005D0004401909145019093C9018093C801809195 |
:1005E0004801909149019093CB018093CA01809179 |
:1005F000420190914301892F99279093CD018093D7 |
:10060000CC0180911001909111019093D1018093C0 |
:10061000D00180914001909141019093D30180934A |
:10062000D20180914A0190914B019093D501809322 |
:10063000D4018091010199279093D7018093D6012D |
:1006400080916301909164019093D9018093D801C6 |
:100650008091820299279093DB018093DA01809147 |
:10066000830299279093DD018093DC0180918402BD |
:1006700099279093DF018093DE018091850299276D |
:100680009093E1018093E0018091860299279093F5 |
:10069000E3018093E2018E70907095958795909319 |
:1006A000E5018093E401809100019927909307026E |
:1006B000809306020895F8948091390190913A014F |
:1006C00020917101309172017894892B09F041C019 |
:1006D00040913701509138014115510589F08091C1 |
:1006E0004E01682F7727B3E0660F771FBA95E1F7C1 |
:1006F0001092020180916F008F7D80936F0020C067 |
:10070000809160018531F0F081E0809302012091B9 |
:100710006301309164018BE0293B380708F09A01AE |
:1007200087E02C3F380710F02BEF37E021353105FB |
:1007300030F480913401882311F4BA0101C0B90169 |
:10074000579A02C05798BA01109272011092710123 |
:1007500018C0B901809134018A3028F4285F3740ED |
:1007600010F060E070E0579A10924E011092640110 |
:10077000109263011092020180916F008F7D80932F |
:100780006F00209182022F3FB9F0CB01AA27BB272F |
:10079000332744275527BC01CD010E942B1897FF12 |
:1007A00004C061507F4F8F4F9F4FBB2797FDBA9575 |
:1007B000A92F982F872FBC01209101012F3FC1F055 |
:1007C000CB01AA27BB27332744275527BC01CD01DE |
:1007D0000E942B1897FF04C061507F4F8F4F9F4F8F |
:1007E000BB2797FDBA95A92F982F872FBC01579843 |
:1007F000209100012F3FC1F0CB01AA27BB2733274F |
:1008000044275527BC01CD010E942B1897FF04C037 |
:1008100061507F4F8F4F9F4FBB2797FDBA95A92FF0 |
:10082000982F872FBC0157986115710511F0685CEE |
:100830007F4F87E06C3F780710F06BEF77E0CB01DC |
:10084000089585B1837F85B984B18C6084B95A9845 |
:10085000529A82E88093800089E0809381008091A1 |
:100860006F00816080936F00089596B5980F86B5EC |
:10087000891B87FDFCCF0895CF93C82F7894809370 |
:100880000001C150CF3F59F057988CE291E00E948F |
:100890003B10579A8CE291E00E943B10F2CF88EE19 |
:1008A00093E00E943B10CF910895AF92BF92CF92F8 |
:1008B000DF92EF92FF920F931F93CF93DF938C0100 |
:1008C0003CE2A32E31E0B32EC12CD12C80B7877F20 |
:1008D00080BFC801880F991F880F991F90934B0103 |
:1008E00080934A0110924901109248010E94C00170 |
:1008F000109276010E9443168CE291E00E9427102C |
:1009000090937801809377011BC00E947F118091A2 |
:100910004801909149018937910590F08BB1877C0E |
:100920008BB985B1837F85B984B18C6084B95A98BD |
:10093000529A8AE00E943C048AE0809389013EC07A |
:1009400080917701909178010E9430108823E9F21C |
:10095000E80113E0CC0FDD1F1A95E1F7D0934B01AE |
:10096000C0934A010E94C001EE24FF248701EA14CB |
:10097000FB040C051D0558F484E60E9435040E9412 |
:100980005D0E0894E11CF11C011D111DF0CF0E94A9 |
:100990007F1180914801909149018B35910588F034 |
:1009A0008BB1877C8BB985B1837F85B984B18C602D |
:1009B00084B95A98529A8AE00E943C0480E090E000 |
:1009C0002BC0C601B5012FE030E040E050E00E94AE |
:1009D0007D18A21AB30AC40AD50A0894A108B1085E |
:1009E000C108D1088FE0A816B104C104D10418F4DD |
:1009F00081E090E011C00E944316809176018F5FE4 |
:100A0000809376018091760166E00E944A18909367 |
:100A100076010E945910A2CFDF91CF911F910F91C3 |
:100A2000FF90EF90DF90CF90BF90AF900895CF935D |
:100A3000DF93EC0121978FEFCF3FD807E9F00E94B9 |
:100A40007F11809112019091130188589F4F20913E |
:100A50004801309149018217930760F78BB1877C79 |
:100A60008BB985B1837F85B984B18C6084B95A987C |
:100A7000529A81E090E002C080E090E0DF91CF9157 |
:100A8000089501972FEF8F3F9207D9F780E090E00C |
:100A90000895CF92DF92EF92FF920F931F93CF931F |
:100AA000DF93CDB7DEB763970FB6F894DEBF0FBE06 |
:100AB000CDBF8E010F5F1F4F83E1E4E1F1E0D8016C |
:100AC00001900D928A95E1F7EE24AFEFFA2E579A36 |
:100AD00085B1837F85B984B18C6084B95A98529A64 |
:100AE0008AE00E94B90A8DE00E94B90A82E090E093 |
:100AF0000E94170580910301080F111DF8018081E4 |
:100B0000282F33278CE291E0289FA001299F500DC8 |
:100B1000389F500D1124CA018C599F4F0E943B10E1 |
:100B20008091710190917201892B09F0CDC180B73C |
:100B3000877F80BFF8948BB1877C8BB985B1837F29 |
:100B400085B984B18C6084B95A98529A1092470141 |
:100B50001092460184EF91E00E94170580914801B0 |
:100B600090914901909313018093120187E00E94B4 |
:100B700057116C0184EF91E0909389008093880075 |
:100B8000109249011092480100E010E080E197E2E4 |
:100B90000E944105109349010093480180E197E2CA |
:100BA0000E9441051092890180EC80937C008BB1FA |
:100BB000877C8BB985B1837F85B984B18C6084B91A |
:100BC0005A98529A5C9A5D9A109349010093480191 |
:100BD00008E710E02398229A529A81E090E00E9460 |
:100BE000410580E00E9457118536910518F051E0CB |
:100BF000F52A02C08EEFF82285B1837F85B984B1D2 |
:100C00008C6084B95A98529A8CE291E00E94410516 |
:100C10000150104017FFDECF8BB1877C8BB985B1B7 |
:100C2000837F85B984B18C6084B95A98529A5B9A53 |
:100C30005D9A04E810E02298239A529A81E090E0AD |
:100C40000E94410581E00E9457118536910518F0F8 |
:100C5000A2E0FA2A02C0BDEFFB2285B1837F85B9ED |
:100C600084B18C6084B95A98529A8CE291E00E94C7 |
:100C700041050150104017FFDECF8BB1877C8BB947 |
:100C800085B1837F85B984B18C6084B95A98529AB2 |
:100C90005B9A5C9A0EE610E084B18C6084B952983D |
:100CA00081E090E00E94410582E00E945711853664 |
:100CB000910518F0E4E0FE2A02C0FBEFFF2285B1A7 |
:100CC000837F85B984B18C6084B95A98529A8AE43A |
:100CD00091E00E9441050150104017FFDDCF8BB11C |
:100CE000877C8BB985B1837F85B984B18C6084B9E9 |
:100CF0005A98529A5B9A08E710E02298239A529ADF |
:100D000081E090E00E94410580E00E945711C816E2 |
:100D1000D90618F447EFF42202C058E0F52A85B14D |
:100D2000837F85B984B18C6084B95A98529A8AE4D9 |
:100D300091E00E9441050150104017FFDECF8BB1BA |
:100D4000877C8BB985B1837F85B984B18C6084B988 |
:100D50005A98529A5D9A04E810E02298239A529A7F |
:100D600081E090E00E94410582E00E945711C81680 |
:100D7000D90618F48FEDF82202C0A0E2FA2A85B154 |
:100D8000837F85B984B18C6084B95A98529A88E679 |
:100D900091E00E9441050150104017FFDECF8BB15A |
:100DA000877C8BB985B1837F85B984B18C6084B928 |
:100DB0005A98529A5C9A0EE610E084B18C6084B91D |
:100DC000529881E090E00E94410581E00E94571115 |
:100DD000C816D90618F4BFEEFB2202C0E0E1FE2AD5 |
:100DE00085B1837F85B984B18C6084B95A98529A51 |
:100DF00088E691E00E9441050150104017FFDDCFC9 |
:100E00008BB1877C8BB985B1837F85B984B18C60C8 |
:100E100084B95A98529A8091C1008F778093C1000B |
:100E20008091C1008F7B8093C1007894FBEECF1638 |
:100E3000D10408F449C0909103018AEF989FC00142 |
:100E400011240E943B108F2D992780FD04C0F1E0F2 |
:100E5000EF2E81E405C081FD07C0E2E0EE2E82E4C2 |
:100E60000E94B90A8BE21AC082FD04C073E0E72E2B |
:100E700083E4F6CF83FD04C064E0E62E81E60BC078 |
:100E800084FD04C055E0E52E82E605C085FD08C05E |
:100E900046E0E42E83E60E94B90A8DE20E94B90A78 |
:100EA000E0928901EE2021F08E2D0E943C04FCCFBF |
:100EB0008E2D0E943C048EE20E94B90A8AE00E94B4 |
:100EC000B90A8DE00E94B90A63960FB6F894DEBFA6 |
:100ED0000FBECDBFDF91CF911F910F91FF90EF908B |
:100EE000DF90CF900895CFEFD4E0DEBFCDBFEE24EA |
:100EF000E7B880E188B98EEB8AB9EBB88EE084B9A7 |
:100F000081EF85B9579885B1806C85B983EF91E001 |
:100F1000C29797FFFDCF1E9B06C01F9B02C081E0BA |
:100F200007C082E005C01F9B02C083E001C084E0CF |
:100F300080930301189905C0809103018C5F809311 |
:100F4000030180910C01992790930B0180930A0172 |
:100F5000879731F48EE290E090930B0180930A0121 |
:100F600078940E94C50A0E9421040E94A21180E583 |
:100F70000E94F7120E9448100E947F1184EF91E0B6 |
:100F80000E942710909378018093770106C080918A |
:100F9000710190917201892B41F4809177019091B8 |
:100FA00078010E943010882391F310924B01109227 |
:100FB0004A010E94C00181E080937C00109264018C |
:100FC0001092630181E385B98AE00E94B90A8DE03D |
:100FD0000E94B90A8091710190917201892B11F4DC |
:100FE0000E94490585E690E00E9427108C0186E664 |
:100FF00090E00E94271087E690E00E9427109093CF |
:101000007801809377018EEF90E00E9427106C01A9 |
:1010100089E690E00E942710EC010E949B010E944B |
:10102000AE17109281028091C10080688093C10048 |
:10103000E090760110921301109212010E945B035E |
:1010400090934B0180934A01892B31F40E945B03FA |
:1010500090934B0180934A0180917601282F33278A |
:101060008E2D992787FD90952817390771F01092DA |
:1010700006011092080186E990E00E9427109093E3 |
:10108000780180937701E090760180914A019091F8 |
:101090004B01892BA1F51092350110923401109269 |
:1010A0000801C8010E9430108823A9F180B7877F0A |
:1010B00080BF81E0809306018BB1877C8BB985B1BD |
:1010C000837F85B984B18C6084B95A98529A809193 |
:1010D0001201909113012091480130914901281784 |
:1010E000390710F4019704C08217930728F401967A |
:1010F000909313018093120182E390E009C08091E4 |
:101100000601882319F081E0809335018CED95E08C |
:101110000E9427108C0180910601882321F01092F3 |
:101120004B0110924A010E94C00180910801815038 |
:10113000809308018F3F09F081CF82E380930801FB |
:101140000E94AB1480914C0190914D01892B21F0AC |
:101150000E945D0E0E94C50D80910601882341F01A |
:1011600080910701882321F00E94591010920701F5 |
:10117000C6010E943010882309F4F4C082E390E095 |
:101180000E9427106C0180913B01282F332780910A |
:101190003C0190913D01B9010E945618809148018F |
:1011A0009091490190933D0180933C0181E08093AF |
:1011B0003B0180911201909113016817790798F013 |
:1011C000681B790B809185029927689F9001699F20 |
:1011D000300D789F300D1124B901A6E07695679502 |
:1011E000AA95E1F702C060E070E08091440190911F |
:1011F00045018617970710F4019604C06817790710 |
:1012000028F4019790934501809344018091440113 |
:10121000909145018B30910588F0681B790B77FF21 |
:1012200002C0695F7F4FF3E075956795FA95E1F726 |
:10123000860F971F9093450180934401E0914401EC |
:10124000F0914501CF016AE070E00E94561840918C |
:101250008302842F992786179707E8F48AE0489F2E |
:10126000C00111249F01281B390BC901880F991F48 |
:10127000820F931F2FEF30E0A901481B590BCA01C1 |
:101280004931510514F489E190E08F3F910521F037 |
:101290001CF0C90101C08FEF8093000180913201E1 |
:1012A00090913301845F9140B0F084EF91E090938E |
:1012B0003301809332018091400190914101893C3A |
:1012C000910548F080914A0190914B01892B19F0CA |
:1012D00081E0809335012091320130913301C901C1 |
:1012E00096958795909341018093400140913401F8 |
:1012F000453668F08091300190913101969587953F |
:101300002817390720F483E080933E0102C0109231 |
:101310003E0180914A0190914B01892B71F0453635 |
:1013200060F02431310548F4809130019091310111 |
:10133000899718F081E08093350110923101109265 |
:10134000300110923301109232010E9411028091FB |
:101350004C0190914D01009729F0019790934D0118 |
:1013600080934C01CE010E943010882379F085E0F3 |
:1013700090E00E942710EC01809134018F3F19F01A |
:101380008F5F8093340181E0809307018091770122 |
:10139000909178010E943010882331F080914001B3 |
:1013A000909141010A9728F080913501882309F432 |
:1013B00045CE84E690E00E942710909378018093B8 |
:1013C00077011092340151E0F52EF092060180B7BA |
:1013D000877F80BF80913501882309F42FCE8091CB |
:1013E0000E0190910F018958994008F427CE579A21 |
:1013F00010924701109246011092350180918602A9 |
:10140000282F33272E703070220F331F8091100148 |
:101410009091110168E170E00E945618261B370B6D |
:10142000255F3F4F2430310514F424E030E0C9013A |
:101430000E945504882309F494C082E080933E0101 |
:101440001092060188E090E090934B0180934A014E |
:101450000E94C001109233011092320110923101AA |
:101460001092300180B78C7F80BF80B78A6080BFC8 |
:1014700082E390E00E942710909378018093770197 |
:1014800080917701909178010E9430108823C1F3F8 |
:1014900080918602282F33272E70307080911001A2 |
:1014A0009091110144E0969587954A95E1F7281BA4 |
:1014B000390B2E5E3F4F2830310514F428E030E020 |
:1014C000C3E0220F331FCA95E1F7285C3F4F3093EA |
:1014D0004B0120934A010E94C0010E945B03892BAB |
:1014E00041F08CE291E00E94271090937801809364 |
:1014F000770181E080933E0122C080914801909164 |
:10150000490185369105A8F08BB1877C8BB985B1EF |
:10151000837F85B984B18C6084B95A98529A8AE0E5 |
:101520000E943C040E945B03892B19F081E08093A8 |
:1015300035018091320190913301892B41F08091E6 |
:101540007701909178010E9430108823B1F21092B7 |
:101550003E0182E390E00E942710EC01B7E0EB2E01 |
:101560006DCD0E945B03892B09F468CDF0923501A3 |
:1015700065CD982F8091C10083FF06C08091C00087 |
:1015800085FFFCCF9093C6000895CF93CFB7F89412 |
:101590008091C1008F778093C1008091C1008F7BC3 |
:1015A0008093C10050985898519A59988091C000E2 |
:1015B00082608093C0008091C2008F778093C200C8 |
:1015C0008091C2008F7B8093C2008091C2008F7D8A |
:1015D0008093C2008091C2008F7E8093C200809170 |
:1015E000C200877F8093C2008091C1008B7F80936F |
:1015F000C1008091C20084608093C2008091C200CB |
:1016000082608093C2008091C10080618093C1009C |
:101610008091C10088608093C1008091C00087FFE5 |
:1016200003C08091C600F9CF8091C100806880938B |
:10163000C1008091C1008F7B8093C1008091270100 |
:10164000909128010E942710909377028093760250 |
:1016500010925601109254011092530110925201AF |
:1016600091E0909329011092BC018FE18093BD011C |
:101670009093C0018BE08093BE011092BF018DE07A |
:101680000E94B90A8AE00E94B90A82E40E94B90A5B |
:101690008CE40E94B90A8AE30E94B90A86E50E9496 |
:1016A000B90A80E30E94B90A8EE20E94B90A83E374 |
:1016B0000E94B90A81E30E94B90A82E60E94B90A2F |
:1016C0008DE00E94B90A8AE00E94B90A88E40E946B |
:1016D000B90A87E50E94B90A8AE30E94B90A82E33F |
:1016E0000E94B90A8EE20E94B90A80E30E94B90AF8 |
:1016F00080E20E94B90A82E50E94B90A85E60E944A |
:10170000B90A86E70E94B90A80912C016AE00E941A |
:101710004A18805D0E94B90A80912C016AE00E94FB |
:101720004A18892F805D0E94B90ACFBFCF910895D2 |
:101730008091C00086FF29C080912901882309F586 |
:101740008091570190915801019690935801809390 |
:101750005701FC01E85FFD4FE081ED3019F08E3656 |
:10176000910539F4109258011092570181E080934D |
:1017700029018091C00081608093C000E093C60081 |
:101780000895109258011092570108951F920F92D8 |
:101790000FB60F9211242F933F934F935F938F9324 |
:1017A0009F93AF93BF93CF93DF93EF93FF935091AA |
:1017B000C60080915601882309F074C040915B01F6 |
:1017C000442371F4533279F450938A0181E0809379 |
:1017D0005B0183E290E090935A018093590162C0CB |
:1017E000423308F05BC02091590130915A01E42F37 |
:1017F000FF275D3069F0E657FE4F50834F5F4093FF |
:101800005B01250F311D30935A01209359014AC0C5 |
:10181000DF01A657BE4FFD0132978081281B310999 |
:10182000ED0121978881281B3109C9019F70909390 |
:101830005A0180935901689415F8969587951694E6 |
:10184000E1F7982F935C2F733070235C8081981799 |
:1018500001F588812817E9F480ED97E090934D0118 |
:1018600080934C015C934F5F4093550181E08093DE |
:10187000560180918C01823571F488E190E02CE072 |
:101880000FB6F894A895809360000FBE2093600077 |
:1018900002C01092560110925B0104C080935B015C |
:1018A00080935601FF91EF91DF91CF91BF91AF915E |
:1018B0009F918F915F914F913F912F910F900FBE0C |
:1018C0000F901F901895AC01A0E0B0E09D01A81703 |
:1018D000B90748F4E8E0F2E08191280F311D119634 |
:1018E000A417B507C8F33F70FD01E85FFD4FC901BC |
:1018F00076E0969587957A95E1F7835C80831196DB |
:10190000FD01E85FFD4F2F733070822F835C808371 |
:10191000A75FBD4F8DE08C93109229018091080242 |
:101920008093C6000895BF92CF92DF92EF92FF920C |
:101930000F931F93CF93DF93CDB7DEB72C859D8593 |
:101940000E85BB2483E2809308029F59909309027D |
:1019500020930A0233E0E32EF12C002309F49EC009 |
:10196000CF84D888BE016D5E7F4FA989BA890150A6 |
:10197000109709F493C01097B9F0F601EB0DF11D23 |
:10198000B3949081119791F4002349F1FB016E5FAC |
:101990007F4FDB01C080D1806E5F7F4F0D90BC9187 |
:1019A000A02DBB24015002C090E019C01097B9F0DF |
:1019B000F601EB0DF11DB3944081119791F40023D2 |
:1019C00041F1FB016E5F7F4FDB01C080D1806E5F14 |
:1019D0007F4F0D90BC91A02DBB24015002C040E070 |
:1019E00018C01097B1F0F601EB0DF11DB394108102 |
:1019F000119781F4002371F0FB013296DB01CD9049 |
:101A0000DC90BF016E5F7F4FA081B181BB2401508C |
:101A100001C010E0F701E85FFD4F892F869586959C |
:101A2000835C80830894E11CF11CF701E85FFD4FA3 |
:101A3000892F99278370907024E0880F991F2A9529 |
:101A4000E1F755279A0194E0369527959A95E1F7A5 |
:101A5000822B835C80830894E11CF11CF701E85F12 |
:101A6000FD4F4F705070440F551F440F551F812F6D |
:101A7000992726E0969587952A95E1F7842B835C34 |
:101A800080830894E11CF11CF701E85FFD4F1F7390 |
:101A9000135C10830894E11CF11C6ACFC7010E94FB |
:101AA000630CDF91CF911F910F91FF90EF90DF902A |
:101AB000CF90BF900895A3E07A2F409155014650F2 |
:101AC000442309F458C0E72FFF27E657FE4F8081D3 |
:101AD0008D537F5FE72FFF27E657FE4F20812D5361 |
:101AE0007F5FE72FFF27E657FE4F30813D537F5F33 |
:101AF000E72FFF27E657FE4F60816D537F5F9927E1 |
:101B0000880F991F880F991F522F52955F70582B7D |
:101B1000822F99278F709070F4E0880F991FFA95A3 |
:101B2000E1F7232F26952695282B832F992783705D |
:101B30009070E6E0880F991FEA95E1F7682B415015 |
:101B40004F3FC9F0EA2FFF27E657FE4F5083AF5FA4 |
:101B500041504F3F81F0EA2FFF27E657FE4F208389 |
:101B6000AF5F41504F3F39F0EA2FFF27E657FE4F56 |
:101B70006083AF5FA5CF8DE891E09093540180938F |
:101B80005301A350A09352010895809156018823D8 |
:101B900009F492C00E945B0D80918B01863611F48E |
:101BA00080918C0180918C0199278437910509F4EB |
:101BB00045C0853791054CF48136910509F468C01C |
:101BC0008436910509F44DC06FC08637910509F43C |
:101BD0005BC08637910524F087379105B9F064C062 |
:101BE000E0915301F0915401908180910301981785 |
:101BF00019F08081882319F410924F0103C082E00C |
:101C000080934F018091510188604CC0E091530155 |
:101C1000F09154018081882329F090818091030103 |
:101C2000981729F4CF0101960E94471701C082E05E |
:101C300080934F0180915101806134C080910301F4 |
:101C4000E0915301F0915401E80FF11D319780812B |
:101C500080934E0184EF91E0909338018093370197 |
:101C600023C0E0915301F091540190818AE0989F44 |
:101C7000C00111249093280180932701892BA1F0A2 |
:101C80008091510182600EC08091510181600AC033 |
:101C9000E0915301F0915401808180935001809133 |
:101CA00051018460809351011092540110925301AC |
:101CB00010925201109256010895CF93DF93CDB741 |
:101CC000DEB761970FB6F894DEBF0FBECDBF80912F |
:101CD0002901882319F40E94980BE6C080915101D4 |
:101CE00082FF30C080915001992724E0880F991F0E |
:101CF0002A95E1F78A559F4F40E150E0BC01CE01A3 |
:101D000001960E94DB1780E190E09F938F93CE01B4 |
:101D100001969F938F9381E090E09F938F9380E54E |
:101D200091E09F938F9382E08F9385E08F9381E47E |
:101D30008F930E94930C8FEF8093500180915101FB |
:101D40008B7FA8C08091270190912801892B41F0B9 |
:101D500080917602909177020E943010882329F4B6 |
:101D600080915101992781FF20C00E94E70282E4FF |
:101D700090E09F938F9386EC91E09F938F9381E007 |
:101D80008F9385E08F9384E48F930E94930C8091CE |
:101D90002701909128010E94271090937702809349 |
:101DA0007602809151018D7F15C080FF19C08AE0B5 |
:101DB00090E09F938F938CEB91E09F938F9381E0C2 |
:101DC0008F9385E08F9386E58F930E94930C80918B |
:101DD00051018E7F809351018DB79EB707965FC0EA |
:101DE00083FF35C080914F01882319F481E0898BEE |
:101DF00001C0198A88E090E09F938F9380E892E079 |
:101E00009F938F9321E030E03F932F9383E091E005 |
:101E10009F938F933F932F938FE491E09F938F93A2 |
:101E20003F932F93CE0141969F938F9384E08F939E |
:101E300085E08F9385E58F930E94930C80915101EB |
:101E4000877F809351018DB79EB7439628C084FF4A |
:101E50002BC080914F01882319F481E0898B01C048 |
:101E6000198A21E030E03F932F938FE491E09F9314 |
:101E70008F933F932F93CE0141969F938F9382E050 |
:101E80008F9385E08F9387E58F930E94930C8091C9 |
:101E900051018F7E809351018DB79EB70B960FB67F |
:101EA000F8949EBF0FBE8DBF61960FB6F894DEBF4B |
:101EB0000FBECDBFDF91CF9108951F93CF93DF93D6 |
:101EC000EC0110E08881882369F0FE01E10FF11D2B |
:101ED0001F5F80810E94B90AFE01E10FF11D808120 |
:101EE000882399F7DF91CF911F9108951F920F9248 |
:101EF0000FB60F9211242F933F934F935F936F93DD |
:101F00007F938F939F93AF93BF93EF93FF938091B2 |
:101F10003F01882319F0815080933F0180915E0139 |
:101F2000815080935E018F3F09F080C083E08093F1 |
:101F30005E0180915C0190915D01019690935D013D |
:101F400080935C018091390190913A01009719F1D9 |
:101F5000019790933A018093390121E0883B9207E1 |
:101F600039F021E08C32920719F08436910599F40A |
:101F700080E50E9401138091390190913A01885BBC |
:101F8000914049F48091E6019091E7010196909388 |
:101F9000E7018093E60180916101882331F080910F |
:101FA000610181508093610102C080936001809142 |
:101FB000370190913801009729F0019790933801EB |
:101FC0008093370180913601882319F081508093E6 |
:101FD000360180912A0190912B01019790932B015A |
:101FE00080932A018F5F9F4F09F520914201309124 |
:101FF00043018DEF283E380750F4809144019091C1 |
:102000004501280F391F309343012093420188E78F |
:1020100095E090932B0180932A0180913901909152 |
:102020003A01892B19F480E50E940113FF91EF9189 |
:10203000BF91AF919F918F917F916F915F914F91E0 |
:102040003F912F910F900FBE0F901F9018952091E8 |
:102050005C0130915D01280F391FC9010197089576 |
:1020600020915C0130915D01821B930B892F990FA8 |
:10207000990B80780895CF93DF930E942710EC018D |
:10208000CE010E9430108823D9F3DF91CF910895BB |
:1020900086EA80937A0087EC80937C0080917A00B6 |
:1020A000806480937A0080917B00806480937B00C1 |
:1020B0000895809136018150809336018F3F09F059 |
:1020C00093C084E68093360180915F0181508093B4 |
:1020D0005F018F3F09F050C020917C0097EC9093F6 |
:1020E0007C0080B7806880BF83ED80937A00809108 |
:1020F0007A00806180937A0090937C0080917A00CE |
:10210000806480937A0080917A0084FFFCCF2093D2 |
:102110007C00209178003091790083E190E0289F45 |
:10212000A001299F500D389F500D11249A0166E09F |
:10213000369527956A95E1F72F3F310519F010F094 |
:102140002FEF30E08091100190911101820F931FC9 |
:1021500096958795909311018093100110927A00C3 |
:1021600080917B00806480937B0080B78F7780BFF5 |
:1021700083E080935F01089520917C0093EC90931D |
:102180007C0080B7806880BF83ED80937A00809167 |
:102190007A00806180937A0090937C0080917A002D |
:1021A000806480937A0080917A0084FFFCCF209332 |
:1021B0007C0080917800909179009C0143E0220F8F |
:1021C000331F4A95E1F7280F391F280F391F8091D7 |
:1021D0000E0190910F01820F931F96958795909312 |
:1021E0000F0180930E0158C020917C0096EC9093D3 |
:1021F0007C0080B7806880BF83ED80937A008091F7 |
:102200007A00806180937A0090937C0080917A00BC |
:10221000806480937A0080917A0084FFFCCF2093C1 |
:102220007C0080910C01282F3327809178009091B9 |
:102230007900829FA001839F500D929F500D112421 |
:102240009A0194E0369527959A95E1F780913C01A3 |
:1022500090913D01820F931F90933D0180933C012B |
:1022600080913B018F5F80933B01409148015091E9 |
:102270004901420F531F569547955093490140938A |
:10228000480180914601909147018417950720F4F9 |
:10229000509347014093460110927A0080917B0051 |
:1022A000806480937B0080B78F7780BF08952091F2 |
:1022B0007C00982F906C90937C0080B7806880BFE2 |
:1022C00083ED80937A0080917A00806180937A0018 |
:1022D00090937C0080917A00806480937A00809152 |
:1022E0007A0084FFFCCF20937C0010927A0080B7A4 |
:1022F0008F7780BF8091780090917900089586E073 |
:102300000E94571120910C013327829FA001839FC7 |
:10231000500D929F500D11249A0174E03695279527 |
:102320007A95E1F730934901209348018091460165 |
:10233000909147018217930720F43093470120932F |
:102340004601089580918100806C80938100809186 |
:10235000810080648093810080916F00806280930F |
:102360006F0080916F00816080936F0084E08093A4 |
:10237000B10008951F920F920FB60F9211242F9360 |
:102380003F938F939F9380916501282F33278F5F11 |
:102390008093650121303105B1F0223031051CF404 |
:1023A000232B41F038C022303105B1F02330310504 |
:1023B00011F131C080912D0190912E0190938900EF |
:1023C0008093880028C080912F0120912D013091A9 |
:1023D0002E01823058F008C080912F0120912D01EC |
:1023E00030912E01833011F42F5F3F4F30938900DD |
:1023F0002093880010C080912F0120912D013091F1 |
:102400002E01882311F02F5F3F4F309389002093D6 |
:10241000880010926501809162018F5F8093620154 |
:102420009F918F913F912F910F900FBE0F901F9012 |
:1024300018951F920F920FB60F9211242F933F936E |
:102440004F935F936F937F938F939F93AF93BF93BC |
:102450008091810086FF17C08091620180936A019C |
:102460008091860090918700909367018093660128 |
:10247000809181008F7B8093810084E6809361014D |
:102480001092B200A5C08091810080648093810089 |
:1024900080916201282F332780916A01281B31091E |
:1024A000322F2227330F8091860090918700280FCA |
:1024B000391F8091660190916701281B390B309379 |
:1024C0006901209368018091B200682F7727689492 |
:1024D00015F8660F771F1694E1F7AB01445D5E4F68 |
:1024E00042175307A0F4C9018050924090936901AC |
:1024F000809368014817590738F5805092409093AF |
:1025000069018093680148175907F0F419C0AB01BD |
:102510004C52514024173507B8F4C90180509E4FE2 |
:1025200090936901809368018417950768F480503F |
:102530009E4F90936901809368018417950720F45A |
:1025400070936901609368018091680190916901BD |
:1025500063E070E00E94561870936901609368010F |
:10256000809160018F3F51F06D587A40635F7140F8 |
:1025700028F4809160018F5F8093600180916801F1 |
:10258000909169018C519C4030F48CE19CE09093D7 |
:1025900069018093680180916801909169018C5173 |
:1025A0009C4040916301509164019A01220F331FB6 |
:1025B000240F351F280F391F3695279536952795F7 |
:1025C0003093690120936801309364012093630183 |
:1025D000BF91AF919F918F917F916F915F914F913B |
:1025E0003F912F910F900FBE0F901F9018959091D3 |
:1025F0000301990F980F9093BA0085EC8093BC006B |
:1026000008951092BC0090910301990F980F909338 |
:10261000BA0085EC8093BC0008951F920F920FB60C |
:102620000F9211242F933F934F935F936F937F9358 |
:102630008F939F93AF93BF93EF93FF938091B900D4 |
:102640009927887F90708038910529F1813891050C |
:102650003CF4009709F45FC18036910591F067C1A1 |
:10266000883B910509F4A8C0893B91052CF4883A70 |
:10267000910509F4A1C05BC1883F910509F44BC1E4 |
:1026800056C18091BC0080688093BC001092750197 |
:10269000109274014FC14091BB008091BC008068D2 |
:1026A0008093BC0080917401282F33278F5F809323 |
:1026B00074012130310509F44AC0223031051CF47F |
:1026C000232B31F06FC02230310509F45BC06AC0A2 |
:1026D000442369F480917301882349F08091390182 |
:1026E00090913A01892B19F081E090E011C080911E |
:1026F000390190913A01892B81F0809173018823EF |
:1027000061F0842F992763E0880F991F6A95E1F79C |
:10271000909372018093710104C010927201109223 |
:1027200071014093730180916C0190916D01209132 |
:10273000440130914501820F931F90936D01809366 |
:102740006C0180916B018F5F80936B012EC0209193 |
:102750007101309172012115310551F0842F9927B3 |
:1027600087709070280F391F309372012093710188 |
:10277000842F992753E0969587955A95E1F7809392 |
:10278000750113C080916E01883078F480916E01DC |
:10279000E82FFF27E858FD4F40838F5F80936E013D |
:1027A00082E001C08EEF8093740184EF91E09093FA |
:1027B0003A0180933901BEC080917501282F3327DB |
:1027C000442755278F5F80937501F9012F3131051B |
:1027D00008F097C0EC5CFF4FEE0FFF1F0590F491DF |
:1027E000E02D099480914401909145018E3F91051F |
:1027F00070F48091440182C0809144019091450120 |
:1028000021E08E3F920718F49695879577C08EEF5A |
:1028100075C08091710190917201892B11F48AEF3A |
:102820006DC080913401823310F488E267C09091CA |
:10283000000180910101891708F460C09093BB00EA |
:1028400066C080910D015AC08091400157C08091AF |
:10285000420190914301892F992786954FC080911D |
:10286000420190914301892F992748C0809110011E |
:1028700045C080916F0142C08FE140C020916B0143 |
:10288000223348F4332780916C0190916D01B90196 |
:102890000E94561804C060914401709145016E3F3A |
:1028A000710518F46093BB0003C08EEF8093BB00EA |
:1028B00010926D0110926C0110926B0128C08091F2 |
:1028C00080021CC08091810219C08091820216C0D2 |
:1028D0008091830213C08091840210C08091850290 |
:1028E0000DC0809186020AC08091870207C0809146 |
:1028F000890104C01092BB000AC085EA8093BB0026 |
:1029000006C08FEF8093BB008EEF8093750180919E |
:10291000BC0080680DC085ED8093BC0080916F0184 |
:102920009091700101969093700180936F0185ECF6 |
:102930008093BC00FF91EF91BF91AF919F918F91D8 |
:102940007F916F915F914F913F912F910F900FBEAB |
:102950000F901F90189580916E01883030F088E7B5 |
:1029600092E00E94471710926E0108951F920F92F5 |
:102970000FB60F9211240F900FBE0F901F90189555 |
:102980001F920F920FB60F9211241F932F933F9314 |
:102990004F935F936F937F938F939F93AF93BF9367 |
:1029A000CF93EF93FF931EE180913F01882309F0BD |
:1029B00055C100B605FE02C0C1E001C0C0E0809173 |
:1029C000860280FD84C0809176019927823091052E |
:1029D00009F445C0833091052CF4009779F00197F4 |
:1029E00011F124C18430910509F450C0843091055F |
:1029F0000CF440C0059709F460C018C12398229ACE |
:102A0000529ACC2309F4E4C08BB1877E8BB95D9ACE |
:102A100080910701882311F00E94591080B78E7FA2 |
:102A200080BF81EC82C08BB1877E8BB95D9ACC234D |
:102A300009F0B8C02298239A529A809107018823FE |
:102A400011F00E94591080EC80937C0080B7836065 |
:102A500080BF809176018F5F80937601D5C02298E8 |
:102A6000239A529ACC2309F48DC08BB18F7C8BB9F9 |
:102A70005B9A80C08BB18F7C8BB95B9ACC2309F0B9 |
:102A80006DC084B18C6084B9529860C084B18C6090 |
:102A900084B95298CC2309F44BC08BB1877D8BB994 |
:102AA0005C9A80910701882311F00E94591080ECF4 |
:102AB00080937C0080B78E7FCBCF8BB1877D8BB925 |
:102AC0005C9ACC2309F0AEC02398229A8EC08091E4 |
:102AD000760199278230910509F443C0833091052E |
:102AE0002CF4009779F0019741F1A0C08430910552 |
:102AF00009F45CC0843091050CF449C0059709F4D1 |
:102B00006CC094C02298239A529ACC2389F08BB13E |
:102B1000877E8BB95D9A80910701882311F00E940E |
:102B2000591080B78E7F80BF80EC80937C0091CF5E |
:102B30008BB18F7C8BB95B9A79C08BB1877E8BB957 |
:102B40005D9ACC2359F42398229A529A80910701D6 |
:102B5000882311F00E94591081EC76CF2298239A95 |
:102B600023C02398229A529ACC2361F08BB1877D9F |
:102B70008BB95C9A80910701882311F00E9459104B |
:102B800082EC96CF8BB1877E8BB95D9A4FC08BB1AB |
:102B9000877D8BB95C9ACC2329F484B18C6084B98D |
:102BA00052984BCF2398229A529A40C084B18C609D |
:102BB00084B95298CC2361F08BB18F7C8BB95B9A2E |
:102BC00080910701882311F00E94591081EC70CF89 |
:102BD0008BB1877D8BB95C9A29C08BB18F7C8BB907 |
:102BE0005B9ACC23F9F42298239A529A8091070198 |
:102BF000882311F00E94591082EC80937C0080B7EA |
:102C0000836080BFC093760180913201909133013F |
:102C10000196909333018093320180913E0180931D |
:102C20003F0104C084B18C6084B952988091300116 |
:102C300090913101019690933101809330011150B0 |
:102C40001F3F61F000B605FC03C0CC2309F0B1CEF4 |
:102C500000B605FE03C0CC2309F4ABCE10920701E9 |
:102C6000FF91EF91CF91BF91AF919F918F917F9104 |
:102C70006F915F914F913F912F911F910F900FBED8 |
:102C80000F901F9018958091860280FD4FC0809113 |
:102C9000760199278230910539F1833091052CF422 |
:102CA000009761F0019791F008958430910561F1EA |
:102CB000843091050CF1059781F108952398229AAB |
:102CC000529A8BB1877D8BB95C9A4EC02398229A19 |
:102CD000529A8BB1877E8BB95D9A81EC80937C0090 |
:102CE00080B78E7F80BF08952298239A529A8BB125 |
:102CF000877E8BB95D9A5DC02298239A529A8BB1D8 |
:102D00008F7C8BB95B9A4BC084B18C6084B952982C |
:102D10008BB18F7C8BB95B9A39C084B18C6084B9DC |
:102D200052988BB1877D8BB95C9A27C080917601D0 |
:102D300099278230910519F1833091052CF4009781 |
:102D400061F0019799F008958430910551F1843034 |
:102D50009105F4F0059799F108952298239A529AD3 |
:102D60008BB18F7C8BB95B9A82EC24C02298239A1A |
:102D7000529A8BB1877E8BB95D9A80ECAFCF239846 |
:102D8000229A529A8BB1877E8BB95D9A81EC12C0E0 |
:102D90002398229A529A8BB1877D8BB95C9A82ECE8 |
:102DA0009DCF84B18C6084B952988BB1877D8BB9EB |
:102DB0005C9A80EC80937C0080B7836093CF84B171 |
:102DC0008C6084B952988BB18F7C8BB95B9A85CF1C |
:102DD000F999FECF92BD81BDF89A80B599270895E3 |
:102DE000F999FECF1FBA92BD81BD60BD0FB6F894B0 |
:102DF000FA9AF99A0FBE08954AEA20E030E02617C1 |
:102E0000370740F4FC018191480F2F5F3F4F261791 |
:102E10003707C8F3842F9927089582E080938002B2 |
:102E2000109281028FEF8093820298E29093830246 |
:102E300084E68093840280E48093850284E080931A |
:102E4000860280910901981710F08093830267E051 |
:102E500070E080E892E00E94FC168093870208955B |
:102E600080918002823091F467E070E080E892E027 |
:102E70000E94FC168093870220EF36E148E050E084 |
:102E800060E872E080E090E00E9409180895CF9316 |
:102E9000DF93EC0167E070E00E94FC169F819817B9 |
:102EA00019F085E090E057C08881823019F084E005 |
:102EB00090E051C0898186FF03C00E940D1744C075 |
:102EC000109281028981282F332720FF03C08A8135 |
:102ED0008093820221FF03C08B818093830222FFB3 |
:102EE00003C08C818093840223FF03C08D81809373 |
:102EF000850224FF08C0909186029E708E81817F9A |
:102F0000982B9093860225FF08C090918602917FAE |
:102F10008E818E70982B90938602809184028337E5 |
:102F200018F083E7809384028091830290910901D5 |
:102F3000891710F09093830267E070E080E892E0D8 |
:102F40000E94FC1680938702898187FF02C00E943D |
:102F5000301780E090E0DF91CF91089528EE36E1C0 |
:102F600048E050E060E070E080E892E00E94E41702 |
:102F700067E070E080E892E00E94FC16982F809154 |
:102F80008002823021F480918702891721F00E940B |
:102F90000D170E94301780918302909109018917C3 |
:102FA00010F09093830280918402833718F083E7B6 |
:102FB000809384020895FB01DC0102C005900D920C |
:102FC00041505040D8F70895A0E0B0E0EAEEF7E1B4 |
:102FD0000C94A7186C017B01EA01590121978FEF2E |
:102FE000CF3FD80789F086010894C11CD11CC701C6 |
:102FF0000894E11CF11CF5010995F80180832197E3 |
:10300000FFEFCF3FDF0779F7EAE0CDB7DEB70C94EB |
:10301000C318A0E0B0E0EFE0F8E10C94A9188C012F |
:103020007B01EA01690121978FEFCF3FD80771F04B |
:10303000F70121917F01C8010F5F1F4F622FF60139 |
:1030400009952197FFEFCF3FDF0791F7E8E0CDB774 |
:10305000DEB70C94C518629FD001739FF001829F68 |
:10306000E00DF11D649FE00DF11D929FF00D839F17 |
:10307000F00D749FF00D659FF00D9927729FB00DB4 |
:10308000E11DF91F639FB00DE11DF91FBD01CF01C7 |
:1030900011240895991B79E004C0991F961708F030 |
:1030A000961B881F7A95C9F780950895AA1BBB1BAC |
:1030B00051E107C0AA1FBB1FA617B70710F0A61B38 |
:1030C000B70B881F991F5A95A9F780959095BC0159 |
:1030D000CD01089597FB092E07260AD077FD04D06D |
:1030E000E5DF06D000201AF4709561957F4F0895B2 |
:1030F000F6F7909581959F4F0895A1E21A2EAA1B8D |
:10310000BB1BFD010DC0AA1FBB1FEE1FFF1FA21797 |
:10311000B307E407F50720F0A21BB30BE40BF50B94 |
:10312000661F771F881F991F1A9469F7609570951D |
:10313000809590959B01AC01BD01CF0108952F9220 |
:103140003F924F925F926F927F928F929F92AF9237 |
:10315000BF92CF92DF92EF92FF920F931F93CF9384 |
:10316000DF93CDB7DEB7CA1BDB0B0FB6F894DEBF1B |
:103170000FBECDBF09942A88398848885F846E8441 |
:103180007D848C849B84AA84B984C884DF80EE808B |
:10319000FD800C811B81AA81B981CE0FD11D0FB694 |
:0E31A000F894DEBF0FBECDBFED010895FFCF46 |
:1031AE00FFFF0101FB07010101281900191E204E26 |
:1031BE008000050000000201030405060708090A45 |
:0C31CE000B0C0D0E0F1011881301FF00F8 |
:00000001FF |
/BL-Ctrl_2.0/V0.31b/BL-Ctrl_MEGA168_V0_31b_ADR9-12.hex |
---|
0,0 → 1,800 |
:100000000C9453010C9499010C9499010C9499014E |
:100010000C9499010C9499010C9499010C949901F8 |
:100020000C9499010C94BB140C941E120C9499011D |
:100030000C9499010C94BF110C9499010C949901A2 |
:100040000C947B0F0C9499010C94CB0B0C9499019C |
:100050000C9499010C9499010C9499010C94C51479 |
:100060000C9412130C949901F7130E1426142914EE |
:1000700034143B143E147F144114431401140E1421 |
:10008000261429142C147F14641467146A146D1434 |
:1000900070147314761479147C14861486147F14E7 |
:1000A00086148614821443757272656E7420202043 |
:1000B0005B302E31415D43757272656E74526177AB |
:1000C0002020202020206D41682020202020205B3F |
:1000D00031306D41685D54656D702E202020205BAD |
:1000E000302E31B0435D566F6C74616765202020FF |
:1000F0005B302E31565D72706D2028726177292039 |
:10010000202020202020536574706F696E74202099 |
:100110002020202020204D6178536574706F696E17 |
:1001200074202020202050504D536574706F696EEC |
:10013000742020202020506172616D2E50776D5305 |
:1001400063616C696E67506172616D2E4D617843B9 |
:10015000757272656E74506172616D2E4D61785466 |
:10016000656D702E2020506172616D2E5363616C3D |
:10017000652049202020506172616D2E42697473A0 |
:10018000202020202020506172616D2E53746172F6 |
:100190007450574D2020493243204C6F73742020F7 |
:1001A00020202020202044656275673136202020E1 |
:1001B00020202020202044656275673137202020D0 |
:1001C00020202020202044656275673138202020BF |
:1001D00020202020202044656275673139202020AE |
:1001E00020202020202044656275673230202020A6 |
:1001F0002020202020204465627567323120202095 |
:100200002020202020204465627567323220202083 |
:100210002020202020204465627567323320202072 |
:100220002020202020204465627567323420202061 |
:100230002020202020204465627567323520202050 |
:10024000202020202020446562756732362020203F |
:10025000202020202020446562756732372020202E |
:10026000202020202020446562756732382020201D |
:10027000202020202020446562756732392020200C |
:100280002020202020204861726477617265202040 |
:100290002020202020204C696D69742049202020D6 |
:1002A00020202020202011241FBECFEFD4E0DEBF6D |
:1002B000CDBF11E0A0E0B1E0E8EBF1E302C00590B2 |
:1002C0000D92AC32B107D9F712E0ACE2B1E001C057 |
:1002D0001D92A838B107E1F74AEA20EF37E3A9E712 |
:1002E000B1E09FE0F9012F5F3F4F84918D939150D2 |
:1002F00097FFF8CFE9E7F1E09EE08191482740952C |
:10030000915097FFFACF80918801481711F00000B3 |
:10031000FECF8091800180932C0180918101809398 |
:100320000C0180918201809309010E9473070C9453 |
:10033000DB180C940000CF938AE00E94BE0A81E48F |
:100340000E94BE0A84E40E94BE0A82E50E94BE0AA0 |
:100350008AE30E94BE0AC09103018C2F805D8A331C |
:1003600028F081E30E94BE0A8C2F8A5D0E94BE0A9B |
:100370008DE00E94BE0A8AE00E94BE0ACF910895D5 |
:1003800020914A0130914B01809183026AE0869F5F |
:10039000C0011124409148015091490184179507EB |
:1003A00090F4579880910901869FC0011124C2964C |
:1003B0008417950740F410928900109288008BB141 |
:1003C000877C8BB902C037FF02C020E030E080910B |
:1003D00034018F3F61F0992763E0880F991F6A9578 |
:1003E000E1F7805B9F4F821793070CF49C0187E035 |
:1003F0002C3F380714F02BEF37E0C90137FD039687 |
:10040000959587959595879590932E0180932D01CD |
:10041000880F991F880F991F281B390B20932F01D4 |
:100420000895CF93DF93E0910E01F0910F0181E2E7 |
:10043000E330F8071CF0C0E0D0E040C089E1E13FC4 |
:10044000F8074CF0CF0166E070E00E946F18CB0116 |
:10045000C8E7D5E031C080E1E33CF8075CF0CF01AC |
:10046000F7FD079633E0959587953A95E1F7CAE64B |
:10047000D4E022C089E0E938F8074CF0CF0166E00B |
:1004800070E00E946F18CB01CEE1D5E015C085E089 |
:10049000E932F80754F0CF01F7FD0396959587955B |
:1004A00095958795CDEED5E007C0CF01F7FD019674 |
:1004B00095958795CAE3D7E0C81BD90BCE016AE0B2 |
:1004C00070E00E946F1860930D01D093CF01C0932C |
:1004D000CE016837D0F520910A0130910B012C9F95 |
:1004E000C0012D9F900D3C9F900D1124E92FFF27F7 |
:1004F000C901A3E0880F991FAA95E1F7820F931F06 |
:10050000820F931F67E070E00E946F18E61BF70BE5 |
:10051000809144019091450173E0969587957A9575 |
:10052000E1F78E0F9F1F6AE070E00E946F18FB01D9 |
:10053000C90163E070E00E946F186E177F070CF42A |
:10054000FB0180910A018E1B02C080910A018093F9 |
:100550000C018091440190914501EAEFF0E0E81B25 |
:10056000F90BE93CF10514F0E8ECF0E08FEFEE3C1C |
:10057000F80714F4EEECFFEF909184028AE0989F64 |
:10058000C00111248E0F9F1FFE01E81BF90B1E16E0 |
:100590001F067CF4EE0FFF1FCFEFD0E0CE1BDF0B6A |
:1005A000C230D10514F4C1E0D0E0C09301015798E6 |
:1005B00003C08FEF8093010180910A0190910B019C |
:1005C0009093050280930402DF91CF91089580916A |
:1005D0004401909145019093C9018093C801809195 |
:1005E0004801909149019093CB018093CA01809179 |
:1005F000420190914301892F99279093CD018093D7 |
:10060000CC0180911001909111019093D1018093C0 |
:10061000D00180914001909141019093D30180934A |
:10062000D20180914A0190914B019093D501809322 |
:10063000D4018091010199279093D7018093D6012D |
:1006400080916301909164019093D9018093D801C6 |
:100650008091820299279093DB018093DA01809147 |
:10066000830299279093DD018093DC0180918402BD |
:1006700099279093DF018093DE018091850299276D |
:100680009093E1018093E0018091860299279093F5 |
:10069000E3018093E2018E70907095958795909319 |
:1006A000E5018093E401809100019927909307026E |
:1006B000809306020895F8948091390190913A014F |
:1006C00020917101309172017894892B09F041C019 |
:1006D00040913701509138014115510589F08091C1 |
:1006E0004E01682F7727B3E0660F771FBA95E1F7C1 |
:1006F0001092020180916F008F7D80936F0020C067 |
:10070000809160018531F0F081E0809302012091B9 |
:100710006301309164018BE0293B380708F09A01AE |
:1007200087E02C3F380710F02BEF37E021353105FB |
:1007300030F480913401882311F4BA0101C0B90169 |
:10074000579A02C05798BA01109272011092710123 |
:1007500018C0B901809134018A3028F4285F3740ED |
:1007600010F060E070E0579A10924E011092640110 |
:10077000109263011092020180916F008F7D80932F |
:100780006F00209182022F3FB9F0CB01AA27BB272F |
:10079000332744275527BC01CD010E94301897FF0D |
:1007A00004C061507F4F8F4F9F4FBB2797FDBA9575 |
:1007B000A92F982F872FBC01209101012F3FC1F055 |
:1007C000CB01AA27BB27332744275527BC01CD01DE |
:1007D0000E94301897FF04C061507F4F8F4F9F4F8A |
:1007E000BB2797FDBA95A92F982F872FBC01579843 |
:1007F000209100012F3FC1F0CB01AA27BB2733274F |
:1008000044275527BC01CD010E94301897FF04C032 |
:1008100061507F4F8F4F9F4FBB2797FDBA95A92FF0 |
:10082000982F872FBC0157986115710511F0685CEE |
:100830007F4F87E06C3F780710F06BEF77E0CB01DC |
:10084000089585B1837F85B984B18C6084B95A9845 |
:10085000529A82E88093800089E0809381008091A1 |
:100860006F00816080936F00089596B5980F86B5EC |
:10087000891B87FDFCCF0895CF93C82F7894809370 |
:100880000001C150CF3F59F057988CE291E00E948F |
:100890004010579A8CE291E00E944010F2CF88EE0F |
:1008A00093E00E944010CF910895AF92BF92CF92F3 |
:1008B000DF92EF92FF920F931F93CF93DF938C0100 |
:1008C0003CE2A32E31E0B32EC12CD12C80B7877F20 |
:1008D00080BFC801880F991F880F991F90934B0103 |
:1008E00080934A0110924901109248010E94C00170 |
:1008F000109276010E9448168CE291E00E942C1022 |
:1009000090937801809377011BC00E94841180919D |
:100910004801909149018937910590F08BB1877C0E |
:100920008BB985B1837F85B984B18C6084B95A98BD |
:10093000529A8AE00E943C048AE0809389013EC07A |
:1009400080917701909178010E9435108823E9F217 |
:10095000E80113E0CC0FDD1F1A95E1F7D0934B01AE |
:10096000C0934A010E94C001EE24FF248701EA14CB |
:10097000FB040C051D0558F484E60E9435040E9412 |
:10098000620E0894E11CF11C011D111DF0CF0E94A4 |
:10099000841180914801909149018B35910588F02F |
:1009A0008BB1877C8BB985B1837F85B984B18C602D |
:1009B00084B95A98529A8AE00E943C0480E090E000 |
:1009C0002BC0C601B5012FE030E040E050E00E94AE |
:1009D0008218A21AB30AC40AD50A0894A108B10859 |
:1009E000C108D1088FE0A816B104C104D10418F4DD |
:1009F00081E090E011C00E944816809176018F5FDF |
:100A0000809376018091760166E00E944F18909362 |
:100A100076010E945E10A2CFDF91CF911F910F91BE |
:100A2000FF90EF90DF90CF90BF90AF900895CF935D |
:100A3000DF93EC0121978FEFCF3FD807E9F00E94B9 |
:100A40008411809112019091130188589F4F209139 |
:100A50004801309149018217930760F78BB1877C79 |
:100A60008BB985B1837F85B984B18C6084B95A987C |
:100A7000529A81E090E002C080E090E0DF91CF9157 |
:100A8000089501972FEF8F3F9207D9F780E090E00C |
:100A90000895CF92DF92EF92FF920F931F93CF931F |
:100AA000DF93CDB7DEB763970FB6F894DEBF0FBE06 |
:100AB000CDBF8E010F5F1F4F83E1E4E1F1E0D8016C |
:100AC00001900D928A95E1F7EE24AFEFFA2E579A36 |
:100AD00085B1837F85B984B18C6084B95A98529A64 |
:100AE0008AE00E94BE0A8DE00E94BE0A82E090E089 |
:100AF0000E94170580910301080F111DF8018081E4 |
:100B0000282F33278CE291E0289FA001299F500DC8 |
:100B1000389F500D1124CA018C599F4F0E944010DC |
:100B20008091710190917201892B09F0CDC180B73C |
:100B3000877F80BFF8948BB1877C8BB985B1837F29 |
:100B400085B984B18C6084B95A98529A1092470141 |
:100B50001092460184EF91E00E94170580914801B0 |
:100B600090914901909313018093120187E00E94B4 |
:100B70005C116C0184EF91E0909389008093880070 |
:100B8000109249011092480100E010E080E197E2E4 |
:100B90000E944105109349010093480180E197E2CA |
:100BA0000E9441051092890180EC80937C008BB1FA |
:100BB000877C8BB985B1837F85B984B18C6084B91A |
:100BC0005A98529A5C9A5D9A109349010093480191 |
:100BD00008E710E02398229A529A81E090E00E9460 |
:100BE000410580E00E945C118536910518F051E0C6 |
:100BF000F52A02C08EEFF82285B1837F85B984B1D2 |
:100C00008C6084B95A98529A8CE291E00E94410516 |
:100C10000150104017FFDECF8BB1877C8BB985B1B7 |
:100C2000837F85B984B18C6084B95A98529A5B9A53 |
:100C30005D9A04E810E02298239A529A81E090E0AD |
:100C40000E94410581E00E945C118536910518F0F3 |
:100C5000A2E0FA2A02C0BDEFFB2285B1837F85B9ED |
:100C600084B18C6084B95A98529A8CE291E00E94C7 |
:100C700041050150104017FFDECF8BB1877C8BB947 |
:100C800085B1837F85B984B18C6084B95A98529AB2 |
:100C90005B9A5C9A0EE610E084B18C6084B952983D |
:100CA00081E090E00E94410582E00E945C1185365F |
:100CB000910518F0E4E0FE2A02C0FBEFFF2285B1A7 |
:100CC000837F85B984B18C6084B95A98529A8AE43A |
:100CD00091E00E9441050150104017FFDDCF8BB11C |
:100CE000877C8BB985B1837F85B984B18C6084B9E9 |
:100CF0005A98529A5B9A08E710E02298239A529ADF |
:100D000081E090E00E94410580E00E945C11C816DD |
:100D1000D90618F447EFF42202C058E0F52A85B14D |
:100D2000837F85B984B18C6084B95A98529A8AE4D9 |
:100D300091E00E9441050150104017FFDECF8BB1BA |
:100D4000877C8BB985B1837F85B984B18C6084B988 |
:100D50005A98529A5D9A04E810E02298239A529A7F |
:100D600081E090E00E94410582E00E945C11C8167B |
:100D7000D90618F48FEDF82202C0A0E2FA2A85B154 |
:100D8000837F85B984B18C6084B95A98529A88E679 |
:100D900091E00E9441050150104017FFDECF8BB15A |
:100DA000877C8BB985B1837F85B984B18C6084B928 |
:100DB0005A98529A5C9A0EE610E084B18C6084B91D |
:100DC000529881E090E00E94410581E00E945C1110 |
:100DD000C816D90618F4BFEEFB2202C0E0E1FE2AD5 |
:100DE00085B1837F85B984B18C6084B95A98529A51 |
:100DF00088E691E00E9441050150104017FFDDCFC9 |
:100E00008BB1877C8BB985B1837F85B984B18C60C8 |
:100E100084B95A98529A8091C1008F778093C1000B |
:100E20008091C1008F7B8093C1007894FBEECF1638 |
:100E3000D10408F449C0909103018AEF989FC00142 |
:100E400011240E9440108F2D992780FD04C0F1E0ED |
:100E5000EF2E81E405C081FD07C0E2E0EE2E82E4C2 |
:100E60000E94BE0A8BE21AC082FD04C073E0E72E26 |
:100E700083E4F6CF83FD04C064E0E62E81E60BC078 |
:100E800084FD04C055E0E52E82E605C085FD08C05E |
:100E900046E0E42E83E60E94BE0A8DE20E94BE0A6E |
:100EA000E0928901EE2021F08E2D0E943C04FCCFBF |
:100EB0008E2D0E943C048EE20E94BE0A8AE00E94AF |
:100EC000BE0A8DE00E94BE0A63960FB6F894DEBF9C |
:100ED0000FBECDBFDF91CF911F910F91FF90EF908B |
:100EE000DF90CF900895CFEFD4E0DEBFCDBFEE24EA |
:100EF000E7B880E188B98EEB8AB9EBB88EE084B9A7 |
:100F000081EF85B9579885B1806C85B983EF91E001 |
:100F1000C29797FFFDCF1E9B06C01F9B02C081E0BA |
:100F200007C082E005C01F9B02C083E001C084E0CF |
:100F300080930301189905C0809103018C5F809311 |
:100F4000030180910301885F8093030180910C016C |
:100F5000992790930B0180930A01879731F48EE2D1 |
:100F600090E090930B0180930A0178940E94CA0A42 |
:100F70000E9421040E94A71180E50E94FC120E9499 |
:100F80004D100E94841184EF91E00E942C109093E8 |
:100F900078018093770106C0809171019091720170 |
:100FA000892B41F480917701909178010E9435104E |
:100FB000882391F310924B0110924A010E94C001C4 |
:100FC00081E080937C00109264011092630181E3C0 |
:100FD00085B98AE00E94BE0A8DE00E94BE0A809117 |
:100FE000710190917201892B11F40E94490585E6E7 |
:100FF00090E00E942C108C0186E690E00E942C105C |
:1010000087E690E00E942C109093780180937701FE |
:101010008EEF90E00E942C106C0189E690E00E9417 |
:101020002C10EC010E949B010E94B31710928102C8 |
:101030008091C10080688093C100E0907601109299 |
:101040001301109212010E945B0390934B01809355 |
:101050004A01892B31F40E945B0390934B018093EA |
:101060004A0180917601282F33278E2D992787FDFD |
:1010700090952817390771F0109206011092080117 |
:1010800086E990E00E942C1090937801809377017C |
:10109000E090760180914A0190914B01892BA1F556 |
:1010A000109235011092340110920801C8010E947B |
:1010B00035108823A9F180B7877F80BF81E08093B6 |
:1010C00006018BB1877C8BB985B1837F85B984B1EB |
:1010D0008C6084B95A98529A8091120190911301B0 |
:1010E00020914801309149012817390710F40197E0 |
:1010F00004C08217930728F40196909313018093FC |
:10110000120182E390E009C080910601882319F062 |
:1011100081E0809335018CED95E00E942C108C01CC |
:1011200080910601882321F010924B0110924A0110 |
:101130000E94C001809108018150809308018F3F77 |
:1011400009F081CF82E3809308010E94B01480915E |
:101150004C0190914D01892B21F00E94620E0E945A |
:10116000CA0D80910601882341F0809107018823F0 |
:1011700021F00E945E1010920701C6010E943510F6 |
:10118000882309F4F4C082E390E00E942C106C01E3 |
:1011900080913B01282F332780913C0190913D01A4 |
:1011A000B9010E945B188091480190914901909388 |
:1011B0003D0180933C0181E080933B0180911201CD |
:1011C000909113016817790798F0681B790B80914B |
:1011D00085029927689F9001699F300D789F300D97 |
:1011E0001124B901A6E076956795AA95E1F702C0AA |
:1011F00060E070E080914401909145018617970767 |
:1012000010F4019604C06817790728F401979093A9 |
:1012100045018093440180914401909145018B30B8 |
:10122000910588F0681B790B77FF02C0695F7F4FDB |
:10123000F3E075956795FA95E1F7860F971F909300 |
:10124000450180934401E0914401F0914501CF01B3 |
:101250006AE070E00E945B1840918302842F992716 |
:1012600086179707E8F48AE0489FC00111249F0180 |
:10127000281B390BC901880F991F820F931F2FEF6D |
:1012800030E0A901481B590BCA014931510514F43A |
:1012900089E190E08F3F910521F01CF0C90101C068 |
:1012A0008FEF809300018091320190913301845F30 |
:1012B0009140B0F084EF91E090933301809332013C |
:1012C0008091400190914101893C910548F08091C5 |
:1012D0004A0190914B01892B19F081E080933501EF |
:1012E0002091320130913301C901969587959093F1 |
:1012F00041018093400140913401453668F080916E |
:10130000300190913101969587952817390720F47F |
:1013100083E080933E0102C010923E0180914A0119 |
:1013200090914B01892B71F0453660F024313105E5 |
:1013300048F48091300190913101899718F081E053 |
:1013400080933501109231011092300110923301D7 |
:10135000109232010E94110280914C0190914D0136 |
:10136000009729F0019790934D0180934C01CE0195 |
:101370000E943510882379F085E090E00E942C10BF |
:10138000EC01809134018F3F19F08F5F809334011D |
:1013900081E08093070180917701909178010E940C |
:1013A0003510882331F080914001909141010A97D6 |
:1013B00028F080913501882309F445CE84E690E039 |
:1013C0000E942C1090937801809377011092340141 |
:1013D00051E0F52EF092060180B7877F80BF8091A3 |
:1013E0003501882309F42FCE80910E0190910F01D1 |
:1013F0008958994008F427CE579A109247011092C5 |
:1014000046011092350180918602282F33272E70D5 |
:101410003070220F331F809110019091110168E10B |
:1014200070E00E945B18261B370B255F3F4F24306E |
:10143000310514F424E030E0C9010E9455048823EA |
:1014400009F494C082E080933E011092060188E086 |
:1014500090E090934B0180934A010E94C00110924A |
:10146000330110923201109231011092300180B795 |
:101470008C7F80BF80B78A6080BF82E390E00E944B |
:101480002C1090937801809377018091770190914F |
:1014900078010E9435108823C1F380918602282F9D |
:1014A00033272E703070809110019091110144E02B |
:1014B000969587954A95E1F7281B390B2E5E3F4F8D |
:1014C0002830310514F428E030E0C3E0220F331F48 |
:1014D000CA95E1F7285C3F4F30934B0120934A01B6 |
:1014E0000E94C0010E945B03892B41F08CE291E0D5 |
:1014F0000E942C10909378018093770181E0809373 |
:101500003E0122C0809148019091490185369105A4 |
:10151000A8F08BB1877C8BB985B1837F85B984B105 |
:101520008C6084B95A98529A8AE00E943C040E94C6 |
:101530005B03892B19F081E08093350180913201A2 |
:1015400090913301892B41F080917701909178013E |
:101550000E9435108823B1F210923E0182E390E0A0 |
:101560000E942C10EC01B7E0EB2E6DCD0E945B03C6 |
:10157000892B09F468CDF092350165CD982F8091C3 |
:10158000C10083FF06C08091C00085FFFCCF90930F |
:10159000C6000895CF93CFB7F8948091C1008F779C |
:1015A0008093C1008091C1008F7B8093C1005098CF |
:1015B0005898519A59988091C00082608093C000D9 |
:1015C0008091C2008F778093C2008091C2008F7B90 |
:1015D0008093C2008091C2008F7D8093C200809171 |
:1015E000C2008F7E8093C2008091C200877F80936B |
:1015F000C2008091C1008B7F8093C1008091C200A6 |
:1016000084608093C2008091C20082608093C20097 |
:101610008091C10080618093C1008091C100886089 |
:101620008093C1008091C00087FF03C08091C600F5 |
:10163000F9CF8091C10080688093C1008091C10082 |
:101640008F7B8093C10080912701909128010E9497 |
:101650002C1090937702809376021092560110928C |
:101660005401109253011092520191E0909329017C |
:101670001092BC018FE18093BD019093C0018BE07B |
:101680008093BE011092BF018DE00E94BE0A8AE0E5 |
:101690000E94BE0A82E40E94BE0A8CE40E94BE0A36 |
:1016A0008AE30E94BE0A86E50E94BE0A80E30E9489 |
:1016B000BE0A8EE20E94BE0A83E30E94BE0A81E354 |
:1016C0000E94BE0A82E60E94BE0A8DE00E94BE0A07 |
:1016D0008AE00E94BE0A88E40E94BE0A87E50E9452 |
:1016E000BE0A8AE30E94BE0A82E30E94BE0A8EE21C |
:1016F0000E94BE0A80E30E94BE0A80E20E94BE0AE7 |
:1017000082E50E94BE0A85E60E94BE0A86E70E9424 |
:10171000BE0A80912C016AE00E944F18805D0E94F1 |
:10172000BE0A80912C016AE00E944F18892F805DCB |
:101730000E94BE0ACFBFCF9108958091C00086FF5E |
:1017400029C080912901882309F580915701909142 |
:10175000580101969093580180935701FC01E85F6E |
:10176000FD4FE081ED3019F08E36910539F410927D |
:1017700058011092570181E0809329018091C000A7 |
:1017800081608093C000E093C600089510925801D4 |
:101790001092570108951F920F920FB60F921124C5 |
:1017A0002F933F934F935F938F939F93AF93BF93E9 |
:1017B000CF93DF93EF93FF935091C6008091560132 |
:1017C000882309F074C040915B01442371F45332C3 |
:1017D00079F450938A0181E080935B0183E290E089 |
:1017E00090935A018093590162C0423308F05BC064 |
:1017F0002091590130915A01E42FFF275D3069F0A3 |
:10180000E657FE4F50834F5F40935B01250F311D1C |
:1018100030935A01209359014AC0DF01A657BE4FA9 |
:10182000FD0132978081281B3109ED0121978881C4 |
:10183000281B3109C9019F7090935A018093590167 |
:10184000689415F8969587951694E1F7982F935C10 |
:101850002F733070235C8081981701F588812817D9 |
:10186000E9F480ED97E090934D0180934C015C93F7 |
:101870004F5F4093550181E08093560180918C0128 |
:10188000823571F488E190E02CE00FB6F894A895C9 |
:10189000809360000FBE2093600002C0109256013A |
:1018A00010925B0104C080935B0180935601FF910D |
:1018B000EF91DF91CF91BF91AF919F918F915F9108 |
:1018C0004F913F912F910F900FBE0F901F90189541 |
:1018D000AC01A0E0B0E09D01A817B90748F4E8E02A |
:1018E000F2E08191280F311D1196A417B507C8F3B6 |
:1018F0003F70FD01E85FFD4FC90176E09695879541 |
:101900007A95E1F7835C80831196FD01E85FFD4FD6 |
:101910002F733070822F835C8083A75FBD4F8DE073 |
:101920008C9310922901809108028093C60008953B |
:10193000BF92CF92DF92EF92FF920F931F93CF93BC |
:10194000DF93CDB7DEB72C859D850E85BB2483E262 |
:10195000809308029F599093090220930A0233E072 |
:10196000E32EF12C002309F49EC0CF84D888BE0159 |
:101970006D5E7F4FA989BA890150109709F493C011 |
:101980001097B9F0F601EB0DF11DB394908111970A |
:1019900091F4002349F1FB016E5F7F4FDB01C080B2 |
:1019A000D1806E5F7F4F0D90BC91A02DBB24015064 |
:1019B00002C090E019C01097B9F0F601EB0DF11DCF |
:1019C000B3944081119791F4002341F1FB016E5FC4 |
:1019D0007F4FDB01C080D1806E5F7F4F0D90BC9147 |
:1019E000A02DBB24015002C040E018C01097B1F0F8 |
:1019F000F601EB0DF11DB3941081119781F40023D2 |
:101A000071F0FB013296DB01CD90DC90BF016E5F7F |
:101A10007F4FA081B181BB24015001C010E0F701CC |
:101A2000E85FFD4F892F86958695835C80830894B7 |
:101A3000E11CF11CF701E85FFD4F892F99278370A6 |
:101A4000907024E0880F991F2A95E1F755279A0195 |
:101A500094E0369527959A95E1F7822B835C8083F5 |
:101A60000894E11CF11CF701E85FFD4F4F705070C6 |
:101A7000440F551F440F551F812F992726E0969537 |
:101A800087952A95E1F7842B835C80830894E11C79 |
:101A9000F11CF701E85FFD4F1F73135C108308947E |
:101AA000E11CF11C6ACFC7010E94680CDF91CF9145 |
:101AB0001F910F91FF90EF90DF90CF90BF9008950E |
:101AC000A3E07A2F409155014650442309F458C0B1 |
:101AD000E72FFF27E657FE4F80818D537F5FE72F6B |
:101AE000FF27E657FE4F20812D537F5FE72FFF270B |
:101AF000E657FE4F30813D537F5FE72FFF27E657C4 |
:101B0000FE4F60816D537F5F9927880F991F880F63 |
:101B1000991F522F52955F70582B822F99278F70E3 |
:101B20009070F4E0880F991FFA95E1F7232F26951E |
:101B30002695282B832F992783709070E6E0880FD5 |
:101B4000991FEA95E1F7682B41504F3FC9F0EA2F02 |
:101B5000FF27E657FE4F5083AF5F41504F3F81F064 |
:101B6000EA2FFF27E657FE4F2083AF5F41504F3FDC |
:101B700039F0EA2FFF27E657FE4F6083AF5FA5CF0E |
:101B80008DE891E09093540180935301A350A0936A |
:101B90005201089580915601882309F492C00E9451 |
:101BA000600D80918B01863611F480918C018091BB |
:101BB0008C0199278437910509F445C08537910533 |
:101BC0004CF48136910509F468C08436910509F416 |
:101BD0004DC06FC08637910509F45BC0863791050B |
:101BE00024F087379105B9F064C0E0915301F0917A |
:101BF0005401908180910301981719F08081882306 |
:101C000019F410924F0103C082E080934F0180913C |
:101C1000510188604CC0E0915301F09154018081E2 |
:101C2000882329F0908180910301981729F4CF012E |
:101C300001960E944C1701C082E080934F01809171 |
:101C40005101806134C080910301E0915301F09112 |
:101C50005401E80FF11D3197808180934E0184EF8C |
:101C600091E0909338018093370123C0E0915301B4 |
:101C7000F091540190818AE0989FC00111249093C3 |
:101C8000280180932701892BA1F080915101826066 |
:101C90000EC08091510181600AC0E0915301F09122 |
:101CA0005401808180935001809151018460809320 |
:101CB000510110925401109253011092520110924E |
:101CC00056010895CF93DF93CDB7DEB761970FB676 |
:101CD000F894DEBF0FBECDBF80912901882319F48F |
:101CE0000E949D0BE6C08091510182FF30C080911F |
:101CF0005001992724E0880F991F2A95E1F78A550A |
:101D00009F4F40E150E0BC01CE0101960E94E017D8 |
:101D100080E190E09F938F93CE0101969F938F93E4 |
:101D200081E090E09F938F9380E591E09F938F9364 |
:101D300082E08F9385E08F9381E48F930E94980CCB |
:101D40008FEF80935001809151018B7FA8C08091CB |
:101D5000270190912801892B41F080917602909182 |
:101D600077020E943510882329F480915101992728 |
:101D700081FF20C00E94E70282E490E09F938F934E |
:101D800086EC91E09F938F9381E08F9385E08F9312 |
:101D900084E48F930E94980C8091270190912801F0 |
:101DA0000E942C10909377028093760280915101CB |
:101DB0008D7F15C080FF19C08AE090E09F938F93BC |
:101DC0008CEB91E09F938F9381E08F9385E08F93CD |
:101DD00086E58F930E94980C809151018E7F8093AD |
:101DE00051018DB79EB707965FC083FF35C08091C4 |
:101DF0004F01882319F481E0898B01C0198A88E09A |
:101E000090E09F938F9380E892E09F938F9321E0DF |
:101E100030E03F932F9383E091E09F938F933F9324 |
:101E20002F938FE491E09F938F933F932F93CE0155 |
:101E300041969F938F9384E08F9385E08F9385E500 |
:101E40008F930E94980C80915101877F809351015C |
:101E50008DB79EB7439628C084FF2BC080914F0159 |
:101E6000882319F481E0898B01C0198A21E030E0D0 |
:101E70003F932F938FE491E09F938F933F932F9302 |
:101E8000CE0141969F938F9382E08F9385E08F934D |
:101E900087E58F930E94980C809151018F7E8093EB |
:101EA00051018DB79EB70B960FB6F8949EBF0FBE2B |
:101EB0008DBF61960FB6F894DEBF0FBECDBFDF9128 |
:101EC000CF9108951F93CF93DF93EC0110E08881A9 |
:101ED000882369F0FE01E10FF11D1F5F80810E94E0 |
:101EE000BE0AFE01E10FF11D8081882399F7DF9181 |
:101EF000CF911F9108951F920F920FB60F92112448 |
:101F00002F933F934F935F936F937F938F939F9301 |
:101F1000AF93BF93EF93FF9380913F01882319F014 |
:101F2000815080933F0180915E01815080935E01DA |
:101F30008F3F09F080C083E080935E0180915C0157 |
:101F400090915D01019690935D0180935C01809179 |
:101F5000390190913A01009719F1019790933A0154 |
:101F60008093390121E0883B920739F021E08C32DF |
:101F7000920719F08436910599F480E50E940613C2 |
:101F80008091390190913A01885B914049F48091A8 |
:101F9000E6019091E70101969093E7018093E601B5 |
:101FA00080916101882331F080916101815080939B |
:101FB000610102C0809360018091370190913801E6 |
:101FC000009729F001979093380180933701809111 |
:101FD0003601882319F081508093360180912A01BF |
:101FE00090912B01019790932B0180932A018F5F91 |
:101FF0009F4F09F520914201309143018DEF283E1A |
:10200000380750F48091440190914501280F391F01 |
:10201000309343012093420188E795E090932B0190 |
:1020200080932A018091390190913A01892B19F40A |
:1020300080E50E940613FF91EF91BF91AF919F91B0 |
:102040008F917F916F915F914F913F912F910F9061 |
:102050000FBE0F901F90189520915C0130915D018B |
:10206000280F391FC9010197089520915C01309113 |
:102070005D01821B930B892F990F990B807808952E |
:10208000CF93DF930E942C10EC01CE010E943510FB |
:102090008823D9F3DF91CF91089586EA80937A005F |
:1020A00087EC80937C0080917A00806480937A0032 |
:1020B00080917B00806480937B000895809136013D |
:1020C0008150809336018F3F09F093C084E680935E |
:1020D000360180915F01815080935F018F3F09F04D |
:1020E00050C020917C0097EC90937C0080B7806872 |
:1020F00080BF83ED80937A0080917A008061809325 |
:102100007A0090937C0080917A00806480937A00BA |
:1021100080917A0084FFFCCF20937C00209178008E |
:102120003091790083E190E0289FA001299F500D14 |
:10213000389F500D11249A0166E0369527956A95CF |
:10214000E1F72F3F310519F010F02FEF30E08091CB |
:10215000100190911101820F931F9695879590938E |
:1021600011018093100110927A0080917B008064AD |
:1021700080937B0080B78F7780BF83E080935F017F |
:10218000089520917C0093EC90937C0080B7806848 |
:1021900080BF83ED80937A0080917A008061809384 |
:1021A0007A0090937C0080917A00806480937A001A |
:1021B00080917A0084FFFCCF20937C00809178008E |
:1021C000909179009C0143E0220F331F4A95E1F77B |
:1021D000280F391F280F391F80910E0190910F0190 |
:1021E000820F931F9695879590930F0180930E0110 |
:1021F00058C020917C0096EC90937C0080B780685A |
:1022000080BF83ED80937A0080917A008061809313 |
:102210007A0090937C0080917A00806480937A00A9 |
:1022200080917A0084FFFCCF20937C0080910C0188 |
:10223000282F33278091780090917900829FA00108 |
:10224000839F500D929F500D11249A0194E0369572 |
:1022500027959A95E1F780913C0190913D01820F7D |
:10226000931F90933D0180933C0180913B018F5FD0 |
:1022700080933B014091480150914901420F531F07 |
:1022800056954795509349014093480180914601E6 |
:10229000909147018417950720F45093470140938C |
:1022A000460110927A0080917B00806480937B00CD |
:1022B00080B78F7780BF089520917C00982F906C15 |
:1022C00090937C0080B7806880BF83ED80937A0014 |
:1022D00080917A00806180937A0090937C00809155 |
:1022E0007A00806480937A0080917A0084FFFCCF2A |
:1022F00020937C0010927A0080B78F7780BF809106 |
:10230000780090917900089586E00E945C112091F8 |
:102310000C013327829FA001839F500D929F500D87 |
:1023200011249A0174E0369527957A95E1F7309358 |
:1023300049012093480180914601909147018217FD |
:10234000930720F43093470120934601089580912C |
:102350008100806C809381008091810080648093F3 |
:10236000810080916F00806280936F0080916F0088 |
:10237000816080936F0084E08093B10008951F9284 |
:102380000F920FB60F9211242F933F938F939F9329 |
:1023900080916501282F33278F5F8093650121305D |
:1023A0003105B1F0223031051CF4232B41F038C047 |
:1023B00022303105B1F02330310511F131C0809167 |
:1023C0002D0190912E01909389008093880028C060 |
:1023D00080912F0120912D0130912E01823058F0F3 |
:1023E00008C080912F0120912D0130912E01833062 |
:1023F00011F42F5F3F4F309389002093880010C065 |
:1024000080912F0120912D0130912E01882311F010 |
:102410002F5F3F4F30938900209388001092650111 |
:10242000809162018F5F809362019F918F913F91B4 |
:102430002F910F900FBE0F901F9018951F920F9223 |
:102440000FB60F9211242F933F934F935F936F9387 |
:102450007F938F939F93AF93BF938091810086FF6B |
:1024600017C08091620180936A01809186009091EB |
:1024700087009093670180936601809181008F7B34 |
:102480008093810084E6809361011092B200A5C020 |
:102490008091810080648093810080916201282F67 |
:1024A000332780916A01281B3109322F2227330FED |
:1024B0008091860090918700280F391F80916601D6 |
:1024C00090916701281B390B3093690120936801B3 |
:1024D0008091B200682F7727689415F8660F771FF0 |
:1024E0001694E1F7AB01445D5E4F42175307A0F429 |
:1024F000C901805092409093690180936801481708 |
:10250000590738F580509240909369018093680193 |
:1025100048175907F0F419C0AB014C525140241729 |
:102520003507B8F4C90180509E4F9093690180939C |
:1025300068018417950768F480509E4F9093690155 |
:10254000809368018417950720F470936901609364 |
:102550006801809168019091690163E070E00E94D8 |
:102560005B187093690160936801809160018F3FEF |
:1025700051F06D587A40635F714028F4809160019A |
:102580008F5F8093600180916801909169018C5107 |
:102590009C4030F48CE19CE0909369018093680149 |
:1025A00080916801909169018C519C404091630138 |
:1025B000509164019A01220F331F240F351F280FF9 |
:1025C000391F3695279536952795309369012093C5 |
:1025D00068013093640120936301BF91AF919F9193 |
:1025E0008F917F916F915F914F913F912F910F90BC |
:1025F0000FBE0F901F90189590910301990F980F9F |
:102600009093BA0085EC8093BC0008951092BC00B2 |
:1026100090910301990F980F9093BA0085EC8093E5 |
:10262000BC0008951F920F920FB60F9211242F93A2 |
:102630003F934F935F936F937F938F939F93AF934A |
:10264000BF93EF93FF938091B9009927887F907093 |
:102650008038910529F1813891053CF4009709F4FF |
:102660005FC18036910591F067C1883B910509F4FF |
:10267000A8C0893B91052CF4883A910509F4A1C0C2 |
:102680005BC1883F910509F44BC156C18091BC00E4 |
:1026900080688093BC0010927501109274014FC144 |
:1026A0004091BB008091BC0080688093BC00809109 |
:1026B0007401282F33278F5F8093740121303105F7 |
:1026C00009F44AC0223031051CF4232B31F06FC0CD |
:1026D0002230310509F45BC06AC0442369F480915B |
:1026E0007301882349F08091390190913A01892B37 |
:1026F00019F081E090E011C08091390190913A0188 |
:10270000892B81F080917301882361F0842F9927B0 |
:1027100063E0880F991F6A95E1F7909372018093A7 |
:10272000710104C010927201109271014093730103 |
:1027300080916C0190916D0120914401309145018F |
:10274000820F931F90936D0180936C0180916B01B8 |
:102750008F5F80936B012EC02091710130917201C7 |
:102760002115310551F0842F992787709070280F1B |
:10277000391F3093720120937101842F992753E000 |
:10278000969587955A95E1F78093750113C08091CE |
:102790006E01883078F480916E01E82FFF27E858A9 |
:1027A000FD4F40838F5F80936E0182E001C08EEF0A |
:1027B0008093740184EF91E090933A018093390102 |
:1027C000BEC080917501282F3327442755278F5F7E |
:1027D00080937501F9012F31310508F097C0EC5C49 |
:1027E000FF4FEE0FFF1F0590F491E02D09948091AB |
:1027F0004401909145018E3F910570F48091440110 |
:1028000082C0809144019091450121E08E3F920762 |
:1028100018F49695879577C08EEF75C080917101F9 |
:1028200090917201892B11F48AEF6DC0809134016F |
:10283000823310F488E267C0909100018091010119 |
:10284000891708F460C09093BB0066C080910D01A9 |
:102850005AC08091400157C080914201909143013C |
:10286000892F992786954FC080914201909143010D |
:10287000892F992748C08091100145C080916F0130 |
:1028800042C08FE140C020916B01223348F43327CE |
:1028900080916C0190916D01B9010E945B1804C098 |
:1028A00060914401709145016E3F710518F4609389 |
:1028B000BB0003C08EEF8093BB0010926D0110929D |
:1028C0006C0110926B0128C0809180021CC0809125 |
:1028D000810219C08091820216C08091830213C0C8 |
:1028E0008091840210C0809185020DC08091860283 |
:1028F0000AC08091870207C08091890104C01092AC |
:10290000BB000AC085EA8093BB0006C08FEF8093AE |
:10291000BB008EEF809375018091BC0080680DC074 |
:1029200085ED8093BC0080916F01909170010196BC |
:102930009093700180936F0185EC8093BC00FF91B0 |
:10294000EF91BF91AF919F918F917F916F915F9127 |
:102950004F913F912F910F900FBE0F901F901895A0 |
:1029600080916E01883030F088E792E00E944C1729 |
:1029700010926E0108951F920F920FB60F921124BC |
:102980000F900FBE0F901F9018951F920F920FB6C9 |
:102990000F9211241F932F933F934F935F936F9345 |
:1029A0007F938F939F93AF93BF93CF93EF93FF93B7 |
:1029B0001EE180913F01882309F055C100B605FE54 |
:1029C00002C0C1E001C0C0E08091860280FD84C0E9 |
:1029D0008091760199278230910509F445C08330B2 |
:1029E00091052CF4009779F0019711F124C18430FE |
:1029F000910509F450C0843091050CF440C005974E |
:102A000009F460C018C12398229A529ACC2309F481 |
:102A1000E4C08BB1877E8BB95D9A809107018823D2 |
:102A200011F00E945E1080B78E7F80BF81EC82C063 |
:102A30008BB1877E8BB95D9ACC2309F0B8C0229800 |
:102A4000239A529A80910701882311F00E945E1008 |
:102A500080EC80937C0080B7836080BF809176019A |
:102A60008F5F80937601D5C02298239A529ACC2307 |
:102A700009F48DC08BB18F7C8BB95B9A80C08BB110 |
:102A80008F7C8BB95B9ACC2309F06DC084B18C60CC |
:102A900084B9529860C084B18C6084B95298CC23B8 |
:102AA00009F44BC08BB1877D8BB95C9A809107018B |
:102AB000882311F00E945E1080EC80937C0080B728 |
:102AC0008E7FCBCF8BB1877D8BB95C9ACC2309F0FD |
:102AD000AEC02398229A8EC08091760199278230C9 |
:102AE000910509F443C0833091052CF4009779F0E7 |
:102AF000019741F1A0C08430910509F45CC0843095 |
:102B000091050CF449C0059709F46CC094C0229853 |
:102B1000239A529ACC2389F08BB1877E8BB95D9A28 |
:102B200080910701882311F00E945E1080B78E7F8C |
:102B300080BF80EC80937C0091CF8BB18F7C8BB970 |
:102B40005B9A79C08BB1877E8BB95D9ACC2359F49F |
:102B50002398229A529A80910701882311F00E94AB |
:102B60005E1081EC76CF2298239A23C02398229A74 |
:102B7000529ACC2361F08BB1877D8BB95C9A80919E |
:102B80000701882311F00E945E1082EC96CF8BB172 |
:102B9000877E8BB95D9A4FC08BB1877D8BB95C9A6C |
:102BA000CC2329F484B18C6084B952984BCF2398FC |
:102BB000229A529A40C084B18C6084B95298CC2336 |
:102BC00061F08BB18F7C8BB95B9A80910701882370 |
:102BD00011F00E945E1081EC70CF8BB1877D8BB9B4 |
:102BE0005C9A29C08BB18F7C8BB95B9ACC23F9F4AA |
:102BF0002298239A529A80910701882311F00E940B |
:102C00005E1082EC80937C0080B7836080BFC093AD |
:102C100076018091320190913301019690933301B6 |
:102C20008093320180913E0180933F0104C084B1C2 |
:102C30008C6084B952988091300190913101019655 |
:102C4000909331018093300111501F3F61F000B625 |
:102C500005FC03C0CC2309F0B1CE00B605FE03C0CD |
:102C6000CC2309F4ABCE10920701FF91EF91CF91E5 |
:102C7000BF91AF919F918F917F916F915F914F9194 |
:102C80003F912F911F910F900FBE0F901F9018959D |
:102C90008091860280FD4FC0809176019927823015 |
:102CA000910539F1833091052CF4009761F001977B |
:102CB00091F008958430910561F1843091050CF113 |
:102CC000059781F108952398229A529A8BB1877DB6 |
:102CD0008BB95C9A4EC02398229A529A8BB1877E08 |
:102CE0008BB95D9A81EC80937C0080B78E7F80BF2A |
:102CF00008952298239A529A8BB1877E8BB95D9A58 |
:102D00005DC02298239A529A8BB18F7C8BB95B9AC3 |
:102D10004BC084B18C6084B952988BB18F7C8BB9D5 |
:102D20005B9A39C084B18C6084B952988BB1877D2D |
:102D30008BB95C9A27C080917601992782309105E2 |
:102D400019F1833091052CF4009761F0019799F007 |
:102D500008958430910551F184309105F4F0059780 |
:102D600099F108952298239A529A8BB18F7C8BB94E |
:102D70005B9A82EC24C02298239A529A8BB1877E68 |
:102D80008BB95D9A80ECAFCF2398229A529A8BB17F |
:102D9000877E8BB95D9A81EC12C02398229A529A51 |
:102DA0008BB1877D8BB95C9A82EC9DCF84B18C60AE |
:102DB00084B952988BB1877D8BB95C9A80EC8093F3 |
:102DC0007C0080B7836093CF84B18C6084B95298C3 |
:102DD0008BB18F7C8BB95B9A85CFF999FECF92BD71 |
:102DE00081BDF89A80B599270895F999FECF1FBA49 |
:102DF00092BD81BD60BD0FB6F894FA9AF99A0FBEE4 |
:102E000008954AEA20E030E02617370740F4FC0135 |
:102E10008191480F2F5F3F4F26173707C8F3842F44 |
:102E20009927089582E080938002109281028FEFAB |
:102E30008093820298E29093830284E680938402D6 |
:102E400080E48093850284E080938602809109016A |
:102E5000981710F08093830267E070E080E892E0BA |
:102E60000E9401178093870208958091800282302A |
:102E700091F467E070E080E892E00E94011780938F |
:102E8000870225EF36E148E050E060E872E080E03C |
:102E900090E00E940E180895CF93DF93EC0167E055 |
:102EA00070E00E9401179F81981719F085E090E06B |
:102EB00057C08881823019F084E090E051C0898148 |
:102EC00086FF03C00E94121744C0109281028981BC |
:102ED000282F332720FF03C08A818093820221FF9D |
:102EE00003C08B818093830222FF03C08C81809377 |
:102EF000840223FF03C08D818093850224FF08C0D4 |
:102F0000909186029E708E81817F982B909386028D |
:102F100025FF08C090918602917F8E818E70982B3C |
:102F20009093860280918402833718F083E7809320 |
:102F300084028091830290910901891710F0909387 |
:102F4000830267E070E080E892E00E9401178093BE |
:102F50008702898187FF02C00E94351780E090E0D8 |
:102F6000DF91CF9108952DEE36E148E050E060E02A |
:102F700070E080E892E00E94E91767E070E080E886 |
:102F800092E00E940117982F80918002823021F4F4 |
:102F900080918702891721F00E9412170E9435172D |
:102FA0008091830290910901891710F09093830218 |
:102FB00080918402833718F083E780938402089518 |
:102FC000FB01DC0102C005900D9241505040D8F742 |
:102FD0000895A0E0B0E0EFEEF7E10C94AC186C01BE |
:102FE0007B01EA01590121978FEFCF3FD80789F084 |
:102FF00086010894C11CD11CC7010894E11CF11C76 |
:10300000F5010995F80180832197FFEFCF3FDF0796 |
:1030100079F7EAE0CDB7DEB70C94C818A0E0B0E0CD |
:10302000E4E1F8E10C94AE188C017B01EA0169013E |
:1030300021978FEFCF3FD80771F0F70121917F01E2 |
:10304000C8010F5F1F4F622FF60109952197FFEF0F |
:10305000CF3FDF0791F7E8E0CDB7DEB70C94CA1891 |
:10306000629FD001739FF001829FE00DF11D649F6C |
:10307000E00DF11D929FF00D839FF00D749FF00DF8 |
:10308000659FF00D9927729FB00DE11DF91F639F99 |
:10309000B00DE11DF91FBD01CF0111240895991B49 |
:1030A00079E004C0991F961708F0961B881F7A953F |
:1030B000C9F780950895AA1BBB1B51E107C0AA1F41 |
:1030C000BB1FA617B70710F0A61BB70B881F991FC9 |
:1030D0005A95A9F780959095BC01CD01089597FB6D |
:1030E000092E07260AD077FD04D0E5DF06D00020A0 |
:1030F0001AF4709561957F4F0895F6F79095819534 |
:103100009F4F0895A1E21A2EAA1BBB1BFD010DC003 |
:10311000AA1FBB1FEE1FFF1FA217B307E407F50787 |
:1031200020F0A21BB30BE40BF50B661F771F881F63 |
:10313000991F1A9469F760957095809590959B01F9 |
:10314000AC01BD01CF0108952F923F924F925F9243 |
:103150006F927F928F929F92AF92BF92CF92DF92A7 |
:10316000EF92FF920F931F93CF93DF93CDB7DEB70C |
:10317000CA1BDB0B0FB6F894DEBF0FBECDBF0994A0 |
:103180002A88398848885F846E847D848C849B84F7 |
:10319000AA84B984C884DF80EE80FD800C811B8105 |
:1031A000AA81B981CE0FD11D0FB6F894DEBF0FBE34 |
:0831B000CDBFED010895FFCF32 |
:1031B800FFFF0101FB07010101281900191E204E1C |
:1031C8008000050000000201030405060708090A3B |
:0C31D8000B0C0D0E0F1011881301FF00EE |
:00000001FF |
/BL-Ctrl_2.0/V0.31b/BL_2_0.txt |
---|
0,0 → 1,7 |
Hex-Files BL-Ctrl2.0 |
Adresses 1-8 and 9-12 |
Attention: |
The firmware only works on the original processor with MikroKopter BL2.0 Bootloader |
Do not install these files via ISP - only through MKUSB |
/BL-Ctrl_V3/V1.06/BL-Ctrl3_MEGA168_Plus6_V1_06e_ADR7-12.hex |
---|
0,0 → 1,885 |
:100000000C9453010C949D010C949D010C949D0142 |
:100010000C949D010C949D010C949D010C949D01E8 |
:100020000C949D010C94C5130C9466140C949D01C2 |
:100030000C949D010C949B180C9465180C94CA1098 |
:100040000C94C0100C949D010C94880C0C949D0190 |
:100050000C949D010C949D010C949D010C942C1703 |
:100060000C9427160C949D01B815C515D115D415FF |
:10007000DB15DB15E115E415E615E815BB15C5150F |
:10008000D115DB15DE150616EB15EE15F115F41579 |
:10009000F715FA15FD15001603160D160D160616A2 |
:1000A0000D160D16091643757272656E74202020A8 |
:1000B0005B302E31415D43757272656E74206163F1 |
:1000C000742E2020202043757272656E7420706536 |
:1000D000616B2020202054656D702E202020205B35 |
:1000E000302E31B0435D566F6C74616765202020FF |
:1000F0005B302E31565D72706D2028726177292039 |
:10010000202020202020536574706F696E74202099 |
:100110002020202020204D6178536574706F696E17 |
:1001200074202020202050504D536574706F696EEC |
:10013000742020202020506172616D2E50776D5305 |
:1001400063616C696E67506172616D2E4D617843B9 |
:10015000757272656E74506172616D2E4D61785466 |
:10016000656D702E2020506172616D2E5363616C3D |
:10017000652049202020537461727420436F756E8E |
:10018000742020202020493243204C6F737420209B |
:100190002020202020204932432D424C2D537461D1 |
:1001A000746520202020313620202020202020208F |
:1001B0002020202020203137202020202020202017 |
:1001C0002020202020203138202020202020202006 |
:1001D00020202020202031392020202020202020F5 |
:1001E00020202020202032302020202020202020ED |
:1001F00020202020202032312020202020202020DC |
:100200002020202020204F76657243757272656E23 |
:100210007420636E742049204375746F66662020D5 |
:10022000202020636E7464652D6D61676E6574694E |
:100230007A6520636E74496E76616C696450756C82 |
:1002400073657320202049204C696D69742020203B |
:100250002020636E74204920426961732020202091 |
:10026000202020202020536C6F70652D4D61782058 |
:100270002020202020204572726F72436F64652019 |
:100280002020202020204861726477617265202040 |
:100290002020202020204C696D69742049202020D6 |
:1002A00020202020202011241FBECFEFD4E0DEBF6D |
:1002B000CDBF11E0A0E0B1E0E4EFF6E302C00590AD |
:1002C0000D92AA33B107D9F714E0AAE3B1E001C057 |
:1002D0001D92A132B107E1F74BEA20EF37E3A7EA1D |
:1002E000B1E09FE0F9012F5F3F4F84918D939150D2 |
:1002F00097FFF8CFE7EAF1E09EE08191482740952B |
:10030000915097FFFACF8091B601481711F0000085 |
:10031000FECF8091AE0180933A018091AF0180932E |
:100320000D018091B00180930A018091B101809309 |
:1003300009010E94B8070C94791B0C940000CF931C |
:1003400089E191E00E94F40BC09104018C2F805D43 |
:100350008A3328F081E30E94E10B8C2F8A5D0E9492 |
:10036000E10BCF9108956BEF77E0409161015091DF |
:100370006201A0911C042AE0A29FC0011124E09117 |
:100380005F01F09160018E179F0780F55798BF01BC |
:10039000681B790BCB01880F991F880F991FBA0131 |
:1003A000681B790B80910A01829FC0011124C296BB |
:1003B0008E179F07D8F480915401882319F080E0AC |
:1003C00092E002C080E094E09093890080938800DE |
:1003D0008BB1877C8BB960E070E08091FC029091DA |
:1003E000FD0201969093FD028093FC028091160419 |
:1003F0009927880F991F880F991F2BEF37E0281B2B |
:10040000390B261737070CF4B90180914D018F3F46 |
:1004100071F0282F3327B4E0220F331FBA95E1F78C |
:10042000245D3E4F2617370724F4B90102C010920D |
:100430004C0177FF02C060E070E0641775070CF4B0 |
:10044000AB0180913C0190913D018417950708F420 |
:10045000AC0180918B018823D9F482E080938B01D9 |
:1004600085E0A89FC0011124E817F90748F44C590A |
:100470005F4F50933D0140933C014456504008C0AB |
:10048000445F5F4F50933D0140933C014C505040BE |
:10049000F894CA0157FD01969595879590933F0171 |
:1004A00080933E01880F991F481B590B40934001D0 |
:1004B00078947093D7026093D6020895CF93DF9318 |
:1004C000E0910F01F091100181E2E330F8071CF098 |
:1004D000C0E0D0E040C089E1E13FF8074CF0CF0137 |
:1004E00066E070E00E940D1BCB01C8E7D5E031C08B |
:1004F00080E1E33CF8075CF0CF01F7FD0796F3E0FD |
:1005000095958795FA95E1F7CAE6D4E022C089E08F |
:10051000E938F8074CF0CF0166E070E00E940D1B4F |
:10052000CB01CEE1D5E015C085E0E932F80754F003 |
:10053000CF01F7FD03969595879595958795CDEE17 |
:10054000D5E007C0CF01F7FD019695958795CAE3E1 |
:10055000D7E0C81BD90BCE016AE070E00E940D1BEA |
:1005600060930E01D093CF02C093CE026837D0F5CE |
:1005700020910B0130910C012C9FC0012D9F900DFB |
:100580003C9F900D1124E92FFF27C90153E0880FEC |
:10059000991F5A95E1F7820F931F820F931F67E00F |
:1005A00070E00E940D1BE61BF70B80915B019091A0 |
:1005B0005C0143E0969587954A95E1F78E0F9F1F62 |
:1005C0006AE070E00E940D1BFB01C90163E070E06E |
:1005D0000E940D1B6E177F070CF4FB0180910B012D |
:1005E0008E1B02C080910B0180930D0180915B01F5 |
:1005F00090915C01EAEFF0E0E81BF90BE93CF105B2 |
:1006000014F0E8ECF0E08FEFEE3CF80714F4EEECB9 |
:10061000FFEF90911D048AE0989FC00111248E0F76 |
:100620009F1FFE01E81BF90B1E161F067CF4EE0F40 |
:10063000FF1FCDEFD0E0CE1BDF0BC230D10514F48D |
:10064000C1E0D0E0C0930201579803C08FEF8093C0 |
:100650000201DF91CF91089580915B0190915C013F |
:100660009093C9028093C80280915F0190916001CC |
:100670002091130130911401821B930B9093CB02B4 |
:100680008093CA0280911101909112019093D1023E |
:100690008093D0028091590190915A019093D30296 |
:1006A0008093D20280916101909162019093D50272 |
:1006B0008093D40280919201909193019093D902FA |
:1006C0008093D80280911B0499279093DB0280933A |
:1006D000DA0280911C0499279093DD028093DC025A |
:1006E00080911D0499279093DF028093DE02809110 |
:1006F0001E0499279093E1028093E00280915201B9 |
:1007000090915301892B39F40E94A5149927909355 |
:10071000E7028093E6028091160499279093FB02EA |
:100720008093FA0280913C0190913D0190930103E6 |
:10073000809300038091B7019927909303038093DE |
:10074000020380910B0190910C019093050380931B |
:100750000403809101019927909307038093060376 |
:10076000089560E070E0F8942091520130915301B7 |
:10077000E0919A01F0919B01789410923B01909145 |
:100780004D01992319F080E180933B01211531053A |
:1007900059F180913B01816080933B01BF019A3008 |
:1007A00030F487E0E83FF80710F060E070E0579A17 |
:1007B00081E02C3C380730F480913B0184608093C9 |
:1007C0003B010AC0309741F01092930110929201C0 |
:1007D0001092030110928F01309751F080913B01EC |
:1007E000826080933B0104C030939B0120939A0167 |
:1007F00081E0223C380758F080914B0180FF02C015 |
:10080000309729F080918F0188230CF04AC04091E5 |
:100810005001509151014115510579F080916701C6 |
:10082000682F7727B3E0660F771FBA95E1F710922C |
:100830000301579A10928F0134C080918F0187FF76 |
:1008400025C081E08093030180913B018860809303 |
:100850003B01209192013091930189E0253C3807BA |
:1008600008F09A0187E02C3F380710F02BEF37E0B3 |
:100870002333310540F4992331F480914E018823CC |
:1008800011F4BA0101C0B901579A0BC0232B09F426 |
:100890005798BF011092670180916F00806280932A |
:1008A0006F0020911B04809102018F3F19F0821785 |
:1008B00008F4282F809101018F3F19F0821708F466 |
:1008C000282F2F3FC1F0CB01AA27BB27332744276E |
:1008D0005527BC01CD010E94CE1A97FF04C061507C |
:1008E0007F4F8F4F9F4FBB2797FDBA95A92F982F0A |
:1008F000872FBC0157986115710511F0605B7F4F20 |
:1009000087E06C3F780710F06BEF77E08091A001F3 |
:10091000882311F061E070E0CB0108950E94561623 |
:100920008091810081608093810080916F0081605F |
:1009300080936F00E0911501F091160180E0099518 |
:1009400080915401882371F08091800082608093AF |
:1009500080008FEF91E0909389008093880084EF6E |
:1009600091E00DC0809180008360809380008FEFC4 |
:1009700093E0909389008093880088EE93E09093B1 |
:100980008B0080938A00089596B5980F86B5891BD1 |
:1009900087FDFCCF0895CF93C82F7894C150CF3FE7 |
:1009A00059F0579888EC90E00E948C11579A8AEF82 |
:1009B00090E00E948C11F2CF84EF91E00E948C11A4 |
:1009C000CF9108951F93CF93DF93162FEC012197BA |
:1009D0008FEFCF3FD807A9F0812F0E948913809114 |
:1009E0001301909114018A5B9F4F20915F01309118 |
:1009F00060018217930758F70E94561681E090E035 |
:100A000002C080E090E0DF91CF911F910895FF92A6 |
:100A10000F931F93CF93DF9300E0579A80910401C7 |
:100A2000F82EFA9423E0F222F394282F33278CE255 |
:100A300091E0289FE001299FD00D389FD00D11240F |
:100A400080919A0190919B01892B19F4CE010E940B |
:100A50008C1180B7877F80BF0093A101F89488E153 |
:100A60000FB6F89480936000109260000FBE0E9451 |
:100A7000561660E086E00E944F1310925E011092BD |
:100A80005D01C9E0D0E081E00E94B5112197D7FF58 |
:100A9000FACF80915D0190915E0190931401809353 |
:100AA0001301C39710F000E16DC061E083E00E9484 |
:100AB0004F134E978959934008F002E161E087E0B7 |
:100AC0000E944F1380559040815D924008F001E1F3 |
:100AD0000E94561619E015B98AE00E94C40461E02C |
:100AE00080E00E944F13883C910508F404E00E94C6 |
:100AF00056160E9456161BB98AE00E94C40461E093 |
:100B000080E00E944F134A9708F007E00E945616B3 |
:100B1000C1E1C5B98AE00E94C40461E0862F0E9449 |
:100B20004F13883C910508F405E00E9456160E9478 |
:100B30005616CBB98AE00E94C40461E0862F0E9459 |
:100B40004F134A9708F008E00E945616C1E2C5B953 |
:100B50008AE00E94C40461E082E00E944F13883C56 |
:100B6000910508F406E00E9456160E945616CBB96D |
:100B70008AE00E94C40461E0862F0E944F134A97C6 |
:100B800008F0012F0E94561680919A0190919B01C6 |
:100B9000892B09F0F5C08091190484FDF1C0002370 |
:100BA00061F0802F8F5B0E94E10BDFC00CE08DE4D1 |
:100BB0000E94E10B0E945616D8C08BB1877C8BB97E |
:100BC0008AB188638AB985B1886385B984B188633D |
:100BD00084B961E08AE090E00E94E2048091130110 |
:100BE000909114010A9620915F0130916001821763 |
:100BF000930708F40BE085B1877C85B984B18863DD |
:100C000084B98BB188638BB98AB188638AB961E092 |
:100C10008AE090E00E94E204809113019091140117 |
:100C20000A9620915F01309160018217930708F4C2 |
:100C30000AE08AEB93E090938900809388008CE926 |
:100C400093E090938B0080938A0081E08093A301CE |
:100C500010E061E088E090E00E94E20489E6F89EFE |
:100C6000C0011124C0E0D0E08052934009F441C09B |
:100C7000812F99278130910571F0823091051CF404 |
:100C8000892B21F011C0029759F00EC00E94631603 |
:100C90000E94911609C00E946F160E949B1604C004 |
:100CA0000E947B160E94871661E082E090E00E941D |
:100CB000E204882351F0012F0F5F812F8F5C0E9487 |
:100CC000E10B0E94561614E614C00E94561661E00D |
:100CD0008F2D99270E94E204219689E6F89E9001C3 |
:100CE000112480E293E0821B930BC817D90708F404 |
:100CF000BFCF1F5F133008F4ACCF0E9456168CE0B4 |
:100D000092E090938900809388008EEE91E090931A |
:100D10008B0080938A0061E08AE090E00E94E20408 |
:100D2000002319F51092600110925F01C0E0D0E03D |
:100D300084B1877C84B98AB1877C8AB961E081E01B |
:100D400090E00E94E20480911301909114010A96B0 |
:100D500020915F01309160018217930708F426CF3C |
:100D6000219684E0C030D80718F30E9456160093ED |
:100D7000B701002321F0802F0E94CB04FCCF789490 |
:100D8000DF91CF911F910F91FF9008956F927F9205 |
:100D90008F929F92AF92BF92CF92DF92EF92FF928B |
:100DA0000F931F938C0132E3632E712C812C912CB5 |
:100DB00080B7877F80BF1092A101E0911701F09169 |
:100DC00018018CEF09950E9456161092600110923E |
:100DD0005F01C8019695879590933F0180933E01EE |
:100DE0001092380180E00E948E1780E00E948E17DA |
:100DF00080911604853198F18EE591E00E94721180 |
:100E000090934401809343010CC085B1877C85B9E0 |
:100E100084B1886384B98BB188638BB98AB18863E4 |
:100E20008AB980914301909144010E947D118823E9 |
:100E300061F30E94561680E00E948E1788EC90E0C5 |
:100E400010C00E9456168FE08093B70181E00E9487 |
:100E5000CB0480E090E07FC081E090E07CC08EE138 |
:100E600090E00E947211909344018093430109C065 |
:100E70000E94891380915F019091600189379105EB |
:100E800000F780914301909144010E947D118823D5 |
:100E900079F380B7877F80BF1092A10110933F0143 |
:100EA00000933E011092420110924101EE24FF2472 |
:100EB00087016401530183E0AA0CBB1CCC1CDD1C20 |
:100EC0008A95D1F7D601C501860D971DA81DB91DBC |
:100ED000860D971DA81DB91DE816F9060A071B0700 |
:100EE00048F485E00E94C4040894E11CF11C011D33 |
:100EF000111DE8CF809113019091140188589F4FE4 |
:100F000020915F01309160018217930708F499CF17 |
:100F1000C401B3012FE030E040E050E00E94201B0C |
:100F2000621A730A840A950A089461087108810894 |
:100F300091088EE1681671048104910408F48CCF45 |
:100F40008091410190914201892B09F0ABCF80E063 |
:100F50000E948E17A7CF1F910F91FF90EF90DF9007 |
:100F6000CF90BF90AF909F908F907F906F9008959B |
:100F7000CFEFD4E0DEBFCDBF17B880E188B988EBF2 |
:100F80008AB987E08BB91EE014B981E085B957981A |
:100F900083E00E94C40415BC80EE8ABD18BD0E9487 |
:100FA000561680916E00826080936E0080916E0074 |
:100FB000846080936E00789480910D0199279093BE |
:100FC0000C0180930B010E94AD130E94441A809182 |
:100FD000C100877F8093C10052985A9AE09117010F |
:100FE000F09118018CEF099589E090E00E948C1136 |
:100FF0008091C100877F8093C1008091B40082FFFF |
:1010000006C0499B02C081E007C083E005C0499B40 |
:1010100002C082E001C084E0809304010E948E043B |
:101020008091B40082FF13C05A98529A8AE090E0EF |
:101030000E948C11F89452985A9AE0911701F091FD |
:1010400018018CEF099578944A9919C013C0529AE7 |
:101050005A9A8AE090E00E948C11F89452985A981B |
:101060005A9AE0911701F09118018CEF0995789444 |
:101070004A9B05C0809104018C5F8093040180919C |
:1010800004018A5F809304015298529A8091C100B2 |
:1010900088608093C1000E940D0C80E50E94EC14D2 |
:1010A0000E94A41180E00E94891384EF91E00E94C5 |
:1010B0007211909344018093430106C080919A017C |
:1010C00090919B01892B41F48091430190914401BF |
:1010D0000E947D11882391F31092620110926101A8 |
:1010E0000E94B30181E080937C00109293011092E2 |
:1010F000920185B910921A04109254010E940705BA |
:101100000E9469190E94ED0B0E949F010E940D0C24 |
:101110008091C10080688093C1000E945616109291 |
:10112000A3018BB5992790930C0180930B0110922A |
:101130008A01109289010E94B10390936201809309 |
:101140006101892B31F40E94B10390936201809375 |
:10115000610180914C01863008F0579880916101BF |
:1011600090916201892B09F047C010924E011092B4 |
:101170004D011092A3010E94561680914501909155 |
:1011800046010E947D11882309F458C010924C0139 |
:101190001092B70180B7877F80BF1092A10181E0D4 |
:1011A000809307011092160480911301909114010D |
:1011B00020915F01309160012817390710F40197E1 |
:1011C00004C08217930728F401969093140180932A |
:1011D000130182E390E00E94721190934601809384 |
:1011E000450180911301909114019093FF02809327 |
:1011F000FE0212BC11BC22C080910701882369F451 |
:101200002091590130915A012430310550F48091D8 |
:101210004D01853630F08A3F20F481E080934E0105 |
:1012200005C02930310510F010924E018CED95E08B |
:101230000E94721190934601809345012091A00174 |
:101240002223A1F48091410190914201892B71F0F8 |
:1012500080911604883C50F42093070186E990E0C1 |
:101260000E94721190934401809343018091070181 |
:10127000882321F010926201109261010E94B30153 |
:1012800080910801815080930801809108018F3F6F |
:1012900009F051CF8091610190916201892B11F485 |
:1012A0008AE001C084E6809308010E944B16809179 |
:1012B000650190916601892B21F00E94780F0E94B0 |
:1012C000720E8091490190914A010E947D118823FC |
:1012D00009F433C182E390E00E94721190934A01B5 |
:1012E000809349018091A001882391F08091A00111 |
:1012F00081508093A0018091A001882349F48091BE |
:10130000F4029091F50201969093F5028093F40215 |
:1013100080915701909158012091550130915601CB |
:10132000B9010E94F91A80915F0190916001909338 |
:1013300058018093570181E090E09093560180938B |
:10134000550180911301909114016817790798F065 |
:10135000681B790B80911E049927689F9001699FF3 |
:10136000300D789F300D1124B90116E07695679500 |
:101370001A95E1F702C060E070E080915B01909106 |
:101380005C018617970710F4019604C06817790767 |
:1013900028F4019790935C0180935B0180915B013D |
:1013A00090915C018B30910588F0681B790B77FF79 |
:1013B00002C0695F7F4FC3E075956795CA95E1F7F5 |
:1013C000860F971F90935C0180935B01E0915B0116 |
:1013D000F0915C01CF016AE070E00E94F91A40913F |
:1013E0001C04842F992786179707F0F48AE0489FFA |
:1013F000C00111249F01281B390BC901880F991FB7 |
:10140000820F931F2DEF30E0281B390B2931310556 |
:1014100014F429E130E02F3F310519F014F02FEFDB |
:1014200030E02093010103C08FEF80930101F89415 |
:101430006091410170914201AB0156954795209111 |
:10144000590130915A012417350728F450935A0155 |
:101450004093590118C0C901880F991F820F931F2B |
:10146000840F951F969587959695879590935A0129 |
:1014700080935901672B39F4009729F001979093D5 |
:101480005A018093590110924201109241017894BF |
:101490000E945E028091650190916601009731F093 |
:1014A0000197909366018093650102C010924B01F1 |
:1014B0008091A3018823B1F480914D01813590F092 |
:1014C00080911101909112018536910558F080911B |
:1014D000A001882339F480911F0485FD03C081E0B9 |
:1014E0008093A30180914D018E3120F481E080939F |
:1014F000000123C02091590130915A012734310550 |
:1015000048F480915B0190915C01409740F0293351 |
:10151000310528F0F8941092000178940EC027331A |
:10152000310558F480915F01909160010F9728F484 |
:10153000F89481E080930001789480914701909124 |
:1015400048010E947D118823F1F085E090E00E941F |
:1015500072119093480180934701809159019091B5 |
:101560005A01892B39F080914D018F3F19F08F5F1F |
:1015700080934D0180910701882329F0F89480E041 |
:101580000E948812789480914301909144010E94B6 |
:101590007D11882329F480914E01882309F4CBCD55 |
:1015A0008091590190915A014E9708F0C4CD84E67C |
:1015B00090E00E9472119093440180934301109235 |
:1015C0004D0151E0F52EF09207011092A30180B772 |
:1015D000877F80BF1092A1010E94B103892B09F47B |
:1015E000AACD80910F01909110018958994008F47B |
:1015F000A2CD10925E0110925D0110924E01809179 |
:101600001F0499278E70907004E110E0809FE00124 |
:10161000819FD00D909FD00D1124A096F0920001D3 |
:101620001092A301C0905001D09051018091E2022C |
:101630009091E30201969093E3028093E202CE013F |
:101640000E94C606882309F476CDD0925101C0923B |
:10165000500110923F0110923E018091A101882318 |
:1016600019F480B7886180BFF092A1011092070140 |
:10167000109216041092420110924101C8010E947A |
:1016800072119093440180934301809143019091A2 |
:1016900044010E947D118823C1F310925A011092D7 |
:1016A00059018AE090E090933F0180933E018C17AE |
:1016B0009D07E0F580913E0190913F010A9690933D |
:1016C0003F0180933E0184E190E00E94721190936B |
:1016D00044018093430113C080915F0190916001A8 |
:1016E0008937910540F00E9456168FE08093B7012C |
:1016F00081E00E94CB040E94780F0E94720E8091BC |
:101700004301909144010E947D11882329F3809127 |
:10171000410190914201892B49F0109242011092AF |
:10172000410180913E0190913F01C1CF80914C01D8 |
:10173000882321F0813039F4CC0FDD1FD0933F0195 |
:10174000C0933E0109C0CE01880F991F8C0F9D1FC9 |
:1017500090933F0180933E0184E690E00E947211D5 |
:10176000909344018093430104C00E94780F0E942B |
:10177000720E80914301909144010E947D11882353 |
:10178000A1F380914C018F5F80934C01D092510165 |
:10179000C092500182E390E00E9472119093480140 |
:1017A0008093470188EC90E00E947211909344016D |
:1017B000809343011092F9021092F8021092A00156 |
:1017C000BACC982F8091C10083FF06C08091C000E1 |
:1017D00085FFFCCF9093C60008958DE00E94E10B39 |
:1017E0008AE00E94E10B08951F93CF93DF93EC01F1 |
:1017F00010E08881882369F0FE01E10FF11D1F5F71 |
:1018000080810E94E10BFE01E10FF11D80818823A0 |
:1018100099F7DF91CF911F9108950F931F930FB701 |
:1018200088E18093C1001092700110926E011092B5 |
:101830006D0110926C0181E080931F018093BC02C6 |
:1018400086E08093BD0284E08093C0028BE08093A9 |
:10185000BE021092BF0280E291E00E94F40B81E38D |
:101860000E94E10B8EE20E94E10B80E30E94E10BFB |
:1018700086E30E94E10B85E60E94E10B87E291E09E |
:101880000E94F40B1AE080913A01612F0E94ED1A38 |
:10189000805D0E94E10B80913A01612F0E94ED1A58 |
:1018A000892F805D0E94E10B0FBF10926B011F9189 |
:1018B0000F9108958091C00086FF29C080911F017B |
:1018C000882309F58091710190917201019690939E |
:1018D000720180937101FC01E85FFC4FE081ED3003 |
:1018E00019F08A3F910539F410927201109271013A |
:1018F00081E080931F018091C00081608093C000CF |
:10190000E093C6000895109272011092710108953B |
:101910001F920F920FB60F9211242F933F934F9364 |
:101920005F938F939F93AF93BF93CF93DF93EF9387 |
:10193000FF935091C60080917001882309F065C023 |
:1019400040916B01442371F4533279F45093B80100 |
:1019500081E080936B0183E290E090937401809327 |
:10196000730153C04A3F08F04CC02091730130917D |
:101970007401E42FFF275D3069F0E854FE4F508377 |
:101980004F5F40936B01250F311D309374012093FD |
:1019900073013BC0DF01A854BE4FFD013297808127 |
:1019A000281B3109ED0121978881281B3109C901C4 |
:1019B0009F709093740180937301689415F89695C5 |
:1019C00087951694E1F7982F935C2F733070235C02 |
:1019D0008081981789F48881281771F480ED97E049 |
:1019E00090936601809365015C934F5F40936F0114 |
:1019F00081E08093700102C01092700110926B011F |
:101A000004C080936B0180937001FF91EF91DF918F |
:101A1000CF91BF91AF919F918F915F914F913F91E6 |
:101A20002F910F900FBE0F901F901895A0E0B0E07F |
:101A30009D01482F5527A417B50748F4E8E0F3E0C7 |
:101A40008191280F311D1196A417B507C8F33F7077 |
:101A5000FD01E85FFC4FC90176E0969587957A9580 |
:101A6000E1F7835C80831196FD01E85FFC4F2F73E3 |
:101A70003070822F835C8083A75FBC4F8DE08C9396 |
:101A800010921F01809108038093C6000895CF92A1 |
:101A9000DF92EF92FF920F931F93CF93DF93CDB717 |
:101AA000DEB72B859C850D85DD2483E280930803BA |
:101AB0009F599093090320930A0333E0C32E002318 |
:101AC00009F49AC0EE84FF84BE016E5E7F4FA88940 |
:101AD000B9890150109709F48FC01097B9F0F70138 |
:101AE000ED0DF11DD3949081119791F4002349F1EC |
:101AF000FB016E5F7F4FDB01E080F1806E5F7F4F07 |
:101B00000D90BC91A02DDD24015002C090E019C0C1 |
:101B10001097B9F0F701ED0DF11DD39440811197A5 |
:101B200091F4002341F1FB016E5F7F4FDB01E08008 |
:101B3000F1806E5F7F4F0D90BC91A02DDD24015090 |
:101B400002C040E018C01097B1F0F701ED0DF11D93 |
:101B5000D3941081119781F4002371F0FB01329628 |
:101B6000DB01ED90FC90BF016E5F7F4FA081B181E2 |
:101B7000DD24015001C010E0EC2DFF27E85FFC4F91 |
:101B8000892F86958695835C8083C394EC2DFF27EF |
:101B9000E85FFC4F892F99278370907024E0880FAD |
:101BA000991F2A95E1F755279A0194E036952795D4 |
:101BB0009A95E1F7822B835C8083C394EC2DFF27F9 |
:101BC000E85FFC4F4F705070440F551F440F551F76 |
:101BD000812F992726E0969587952A95E1F7842B02 |
:101BE000835C8083C394EC2DFF27E85FFC4F1F7359 |
:101BF000135C1083C3946ECF8C2D0E94160DDF9161 |
:101C0000CF911F910F91FF90EF90DF90CF900895AB |
:101C1000A3E07A2F40916F014650442309F458C045 |
:101C2000E72FFF27E854FE4F80818D537F5FE72F1A |
:101C3000FF27E854FE4F20812D537F5FE72FFF27BA |
:101C4000E854FE4F30813D537F5FE72FFF27E85474 |
:101C5000FE4F60816D537F5F9927880F991F880F12 |
:101C6000991F522F52955F70582B822F99278F7092 |
:101C70009070F4E0880F991FFA95E1F7232F2695CD |
:101C80002695282B832F992783709070E6E0880F84 |
:101C9000991FEA95E1F7682B41504F3FC9F0EA2FB1 |
:101CA000FF27E854FE4F5083AF5F41504F3F81F014 |
:101CB000EA2FFF27E854FE4F2083AF5F41504F3F8C |
:101CC00039F0EA2FFF27E854FE4F6083AF5FA5CFBE |
:101CD0008BEB91E090936E0180936D01A350A093E4 |
:101CE0006C01089580917001882309F400C10E945D |
:101CF000080E8091B9018B3668F08091B901282FC8 |
:101D0000332780910401992785599F4F2817390758 |
:101D100009F0E5C08091BA0199278436910509F44C |
:101D2000B5C0853691059CF48235910519F183354E |
:101D3000910544F48132910509F46AC08B9709F446 |
:101D4000C7C0CDC08136910509F4B5C0C8C085377C |
:101D50009105E9F0863791052CF48437910509F453 |
:101D600044C0BDC08637910509F4A1C087379105ED |
:101D700021F1B5C088E190E02CE00FB6F894A89569 |
:101D8000809360000FBE20936000F894FFCFE09135 |
:101D90006D01F0916E01908180910401981719F006 |
:101DA0008081882319F41092680103C082E0809337 |
:101DB000680180916A01886088C0E0916D01F091AE |
:101DC0006E018081882329F0908180910401981709 |
:101DD00029F4CF0101960E94D31901C082E08093BB |
:101DE000680180916A01806170C080910401E09176 |
:101DF0006D01F0916E01E80FF11D319780818093A4 |
:101E0000670180E293E0909351018093500167C095 |
:101E100084EF91E09093510180935001209104014F |
:101E2000A0916D01B0916E01FD01E20FF11D808165 |
:101E3000809367018C9187FD06C0809107018823FC |
:101E400011F01092670180916701882369F08091F9 |
:101E50003B0182FD03C08C9188231CF481E08093B8 |
:101E60004B0180914B01826080934B01E0916D01A9 |
:101E7000F0916E01808199278F70907033278217BF |
:101E8000930769F580916A0180621FC0E0916D013E |
:101E9000F0916E0190818AE0989FC0011124909387 |
:101EA00064018093630180916A0182600EC0809119 |
:101EB0006A0181600AC0E0916D01F0916E0180813C |
:101EC0008093690180916A01846080936A0107C0F0 |
:101ED000E0916D01F0916E0180818093C4001092B9 |
:101EE0006E0110926D0110926C01109270010895B4 |
:101EF000CF93DF93CDB7DEB721970FB6F894DEBF4F |
:101F00000FBECDBF80911F01882319F40E945A0C87 |
:101F10002EC180916A01992785FF37C080913B01CE |
:101F2000809375010E948A14809376010E94A51403 |
:101F30008093770180910E01809378018091110147 |
:101F4000909112018135910530F0809111018055F9 |
:101F50008093790104C0109212011092110185E062 |
:101F600090E09F938F9385E791E09F938F9381E01B |
:101F70008F9380910401865F8F938FE38F930E94EC |
:101F8000470D80916A018F7D70C082FF30C08091C3 |
:101F90006901992724E0880F991F2A95E1F78A554E |
:101FA0009F4F40E150E0BC0185E791E00E947E1A1E |
:101FB00080E190E09F938F9385E791E09F938F93CB |
:101FC00081E090E09F938F9389E691E09F938F93B8 |
:101FD00082E08F9385E08F9381E48F930E94470D79 |
:101FE0008FEF8093690180916A018B7FB6C08091E9 |
:101FF000630190916401892B41F080910C049091D0 |
:102000000D040E947D11882329F480916A0199278B |
:1020100081FF31C00E942C0380915D0190915E018F |
:102020009093CD028093CC0210925E0110925D01DC |
:1020300082E490E09F938F9386EC92E09F938F933E |
:1020400081E08F9385E08F9384E48F930E94470D06 |
:1020500080916301909164010E94721190930D042C |
:1020600080930C0480916A018D7F80936A018DB703 |
:102070009EB7079677C080FF14C08AE090E09F93D8 |
:102080008F938CEB92E09F938F9381E08F9385E009 |
:102090008F9386E58F930E94470D80916A018E7F12 |
:1020A000E4CF83FF36C080916801882319F481E072 |
:1020B000898301C0198288E090E09F938F9389E122 |
:1020C00094E09F938F9321E030E03F932F9384E03F |
:1020D00091E09F938F933F932F9388E691E09F9396 |
:1020E0008F933F932F93CE01820F931F9F938F93D4 |
:1020F00084E08F9385E08F9385E58F930E94470D51 |
:1021000080916A01877F80936A018DB79EB743965D |
:1021100029C084FF2CC080916801882319F481E0D4 |
:10212000898301C0198221E030E03F932F9388E634 |
:1021300091E09F938F933F932F93CE01820F931F34 |
:102140009F938F9382E08F9385E08F9387E58F93A2 |
:102150000E94470D80916A018F7E80936A018DB73E |
:102160009EB70B960FB6F8949EBF0FBE8DBF2196FB |
:102170000FB6F894DEBF0FBECDBFDF91CF910895AB |
:102180001F920F920FB60F9211240F900FBE0F9057 |
:102190001F9018951F920F920FB60F9211242F9334 |
:1021A0003F934F935F936F937F938F939F93AF93DF |
:1021B000BF93EF93FF9388B5845688BD80918C01BF |
:1021C000815080938C01882309F07BC082E080934A |
:1021D0008C018091890190918A01019690938A01E6 |
:1021E0008093890188E190E02BE00FB6F894A895E0 |
:1021F000809360000FBE2093600080915201909107 |
:102200005301009719F10197909353018093520164 |
:1022100021E0883B920739F021E08C32920719F0D7 |
:102220008436910599F480E50E94EC148091520166 |
:1022300090915301885B914049F48091E402909120 |
:10224000E50201969093E5028093E402809190016B |
:10225000882331F08091900181508093900102C0D9 |
:1022600080938F018091500190915101009729F046 |
:102270000197909351018093500180918B018823A5 |
:1022800029F080918B01815080938B0180913501E1 |
:1022900090913601019790933601809335018F5FBD |
:1022A0009F4F79F488E795E090933601809335014C |
:1022B0008091520190915301892B19F480E50E947D |
:1022C000EC14FF91EF91BF91AF919F918F917F910E |
:1022D0006F915F914F913F912F910F900FBE0F9093 |
:1022E0001F9018959C01F8948091890190918A0122 |
:1022F0007894820F931F01970895F8942091890193 |
:1023000030918A01821B930B892F992780787894CA |
:10231000992787FD90950895CF93DF930E947211BE |
:10232000EC010AC08091650190916601892B21F032 |
:102330000E94780F0E94720ECE010E947D118823A8 |
:1023400089F3DF91CF91089587EA80937A0087EC33 |
:1023500080937C0080917A00806480937A008091E1 |
:102360007B00806480937B000895CF93DF93C82F18 |
:1023700096EC90937C0080B7806880BF84ED80935A |
:102380007A0080917A00806180937A0090937C003B |
:1023900080917A00806480937A00809157019091B7 |
:1023A000580180569A4EB8F4809157019091580187 |
:1023B00020915F0130916001820F931F909358012B |
:1023C0008093570180915501909156010196909309 |
:1023D00056018093550180917A0084FD0DC0CC2375 |
:1023E000D1F38091BC0087FF02C00E94F814B59B16 |
:1023F000F2CF0E94D613EFCFC0917800D091790030 |
:1024000080910D019927C89F9001C99F300DD89FD9 |
:10241000300D112445E0369527954A95E1F7309324 |
:10242000600120935F0180915D0190915E018217B0 |
:10243000930720F430935E0120935D0132E0C935AB |
:10244000D30708F454C00E94561680915401882383 |
:1024500019F080E092E002C080E094E0909389005F |
:102460008093880010923F0110923E01109240012B |
:102470001092A30180913C0190913D012091610156 |
:10248000309162012817390720F430933D012093E1 |
:102490003C018AE080938B018091F6029091F702D3 |
:1024A00001969093F7028093F60283E0C73BD8072A |
:1024B00050F083E08093A00180914D01833318F0A8 |
:1024C00082E380934D0180910D019927C89F90016F |
:1024D000C99F300DD89F300D1124C90125E0969574 |
:1024E00087952A95E1F79093600180935F0184E0DE |
:1024F00080937A0080917B00806480937B0080B71A |
:102500008F7780BF80B7806180BFDF91CF910895C2 |
:102510001F93CF93182F80914F01815080934F01CB |
:102520008F3F09F0B6C08EE180934F0180918D01FD |
:10253000815080938D018F3F09F058C0C0917C007D |
:1025400097EC90937C0080B7806880BF84ED809387 |
:102550007A0080917A00806180937A0090937C0069 |
:1025600080917A00806480937A0080917A0084FD63 |
:102570000DC01123D1F38091BC0087FF02C00E94DF |
:10258000F814B59BF2CF0E94D613EFCFC0937C0016 |
:102590002091780030917900C901E4E0880F991FFB |
:1025A000EA95E1F7820F931F67E170E00E94F91A44 |
:1025B0008091110190911201860F971F9695879532 |
:1025C000909312018093110184E080937A008091AE |
:1025D0007B00806480937B0080B78F7780BF80B75B |
:1025E000806180BF83E080938D0156C0C0917C00E4 |
:1025F00093EC90937C0080B7806880BF84ED8093DB |
:102600007A0080917A00806180937A0090937C00B8 |
:1026100080917A00806480937A0080917A0084FDB2 |
:102620000DC01123D1F38091BC0087FF02C00E942E |
:10263000F814B59BF2CF0E94D613EFCFC0937C0065 |
:1026400080917800909179009C0163E0220F331F04 |
:102650006A95E1F7280F391F280F391F80910F0164 |
:1026600090911001820F931F96958795909310017A |
:1026700080930F0184E080937A0080917B008064D6 |
:1026800080937B0080B78F7780BF80B7806180BFE9 |
:1026900003C0812F0E94B511CF911F9108951F9300 |
:1026A000CF93C62F10917C00982F906C90937C0054 |
:1026B00080B7806880BF86ED80937A0080917A0031 |
:1026C000806180937A0090937C0080917A0080648E |
:1026D00080937A0080917A0084FD09C0CC23D1F3E5 |
:1026E0008091BC0087FFF6CF0E94F814F3CF1093BF |
:1026F0007C0087E080937A0080B78F7780BF80B7B7 |
:10270000806180BF8091780090917900CF911F9176 |
:102710000895682F86E00E944F1320910D01332702 |
:10272000829FA001839F500D929F500D11249A010A |
:10273000F5E036952795FA95E1F7309360012093FF |
:102740005F0180915D0190915E018217930720F4F3 |
:1027500030935E0120935D01089580918100806C2B |
:1027600080938100809181008064809381008091BA |
:102770006F00806280936F0080916F008160809312 |
:102780006F0082E08093B10008951F920F920FB600 |
:102790000F9211248F93809191018F5F809391010B |
:1027A0008F910F900FBE0F901F90189580916F0022 |
:1027B00085FF8AC08091810086FF17C01092B20009 |
:1027C00081E08093700010928E018091910180933E |
:1027D000960110929101809181008F7B80938100FE |
:1027E00084E680939001B89A6FC01092B100B89BB4 |
:1027F00005C0809191018F5F809391012091B2007B |
:10280000809191019927582F4427420F511D5093D1 |
:1028100095014093940182E08093B1008091810002 |
:1028200080648093810080918F018F3F51F04B5CD9 |
:1028300058404552524028F480918F018F5F809319 |
:102840008F0180919401909195012AE0803F920739 |
:102850003CF0805F9A40909395018093940104C06E |
:10286000109295011092940180919601843688F41B |
:1028700080914D01882369F0809194019091950198 |
:102880002091920130919301820F931F9695879525 |
:1028900017C080919201909193019C0143E0220F17 |
:1028A000331F4A95E1F7281B390B809194019091D1 |
:1028B0009501820F931F23E0969587952A95E1F75E |
:1028C0009093930180939201B59A08951F920F926D |
:1028D0000FB60F9211242F933F934F935F936F93F3 |
:1028E0007F938F939F93AF93BF93EF93FF930E9438 |
:1028F000D613FF91EF91BF91AF919F918F917F91EF |
:102900006F915F914F913F912F910F900FBE0F905C |
:102910001F90189580915B0190915C01893C910515 |
:1029200018F480915B010CC022E0853E920750F4C0 |
:10293000885C90406AE070E00E94F91ACB018853ED |
:10294000992708958EEF90E008958091B70188232C |
:10295000F1F580919A0190919B01892B71F48091FE |
:102960006701882351F480911F0485FD03C088EF1F |
:1029700090E0089589EF90E008958091A001882368 |
:1029800019F084E690E0089580914D01823350F46F |
:1029900080914C01863018F087E290E0089588E23B |
:1029A00090E0089580914B01882359F080910101B6 |
:1029B0008F3F39F4809102018F3F19F48EEF90E040 |
:1029C00008959091010180910201891710F49927CF |
:1029D0000895892F992708951092BC0090910401C1 |
:1029E000990F980F9093BA0085EC8093BC000895DE |
:1029F0008091B9009927887F90708038910529F1DE |
:102A0000813891053CF4009709F411C18036910595 |
:102A100091F019C1883B910509F494C0893B910557 |
:102A20002CF4883A910509F48DC00DC1883F9105B9 |
:102A300009F4FDC008C18091BC0080688093BC008F |
:102A400010929E0110929D0108954091BB008091CB |
:102A5000BC0080688093BC0080919D01282F3327A3 |
:102A60008F5F80939D0121303105B9F1223031050E |
:102A70001CF4232B31F05CC02230310509F448C02E |
:102A800057C0442369F480919C01882349F08091C8 |
:102A9000520190915301892B19F081E090E011C00F |
:102AA0008091520190915301892B81F080919C017A |
:102AB000882361F0842F992753E0880F991F5A9536 |
:102AC000E1F790939B0180939A0104C010929B01BF |
:102AD00010929A0140939C012EC020919A0130914E |
:102AE0009B012115310551F0842F99278770907033 |
:102AF000280F391F30939B0120939A01842F992727 |
:102B000033E0969587953A95E1F780939E0113C03F |
:102B100080919701883078F480919701E82FFF2702 |
:102B2000E25FFB4F40838F5F8093970182E001C09B |
:102B30008EEF80939D0184EF91E0909353018093F9 |
:102B40005201089580919E01282F3327442755274D |
:102B50008F5F80939E01F9012F31310508F05DC030 |
:102B6000EC5CFF4FEE0FFF1F0590F491E02D0994F0 |
:102B70000E948A144FC080915B0190915C0121E01A |
:102B80008E3F9207A8F08EEF45C00E94A514809357 |
:102B9000BB008091BB0099279093E7028093E602E7 |
:102BA00042C080910E0136C08091590190915A0126 |
:102BB000969587952FC0809111012CC08091590165 |
:102BC00029C08091980126C081E024C086E022C0FF |
:102BD0000E948A141FC0809119041CC080911A049D |
:102BE00019C080911B0416C080911C0413C08091F1 |
:102BF0001D0410C080911E040DC080911F040AC0E6 |
:102C00008091200407C08091B70104C01092BB00DE |
:102C10000AC085EA8093BB0006C08FEF8093BB009B |
:102C20008EEF80939E018091BC0080680DC085ED81 |
:102C30008093BC00809198019091990101969093A6 |
:102C400099018093980185EC8093BC0008951F92B0 |
:102C50000F920FB60F9211242F933F934F935F93D0 |
:102C60006F937F938F939F93AF93BF93EF93FF9354 |
:102C70000E94F814FF91EF91BF91AF919F918F91B6 |
:102C80007F916F915F914F913F912F910F900FBE68 |
:102C90000F901F90189580919701883030F08EE04A |
:102CA00094E00E94D3191092970108958BB1877C0C |
:102CB0008BB98AB188638AB985B1877C85B984B1BB |
:102CC000886384B908958AB180638AB984B18063C6 |
:102CD00084B923988091A3018111539808958AB1F2 |
:102CE00088628AB984B1886284B924988091A301EA |
:102CF0008111549808958AB188618AB984B1886134 |
:102D000084B925988091A3018111559808958BB1BC |
:102D10008F7C8BB9539A8091A001882309F45B9A28 |
:102D200008958BB1877D8BB9549A8091A001882337 |
:102D300009F45C9A08958BB1877E8BB9559A80917E |
:102D4000A001882309F45D9A0895FF920F931F93C1 |
:102D5000CF9380913801882309F079C000B605FE31 |
:102D600003C000B600FC06C000B605FC70C000B68B |
:102D700000FC6DC015BCC6B58091A401FC2EF81AEC |
:102D8000809100012F2D3327882331F08091A501F8 |
:102D9000F901E80FF11D03C0F901E20FF31F0091E3 |
:102DA000590110915A010332110510F4E0E9F1E0E4 |
:102DB00040913701242F3327CF01B9010E94F91A1E |
:102DC000CB01663020F4CF5FC7BDC15003C08C0F6C |
:102DD000855087BD85B5836085BD21E0209338018E |
:102DE0001092170480910001882351F0CF0166E012 |
:102DF00070E00E94F91ACB018C0F80939F011FC0D5 |
:102E0000CF0196958795969587958C0F80939F0116 |
:102E1000E135F10538F00A3F110520F4423310F492 |
:102E200020931704F29758F40E94561680911604C6 |
:102E30008B3F28F4809116048F5F80931604809155 |
:102E40009F0180931804C093A401F092A501CF9133 |
:102E50001F910F91FF9008951F920F920FB60F923E |
:102E600011242F933F934F935F936F937F938F938F |
:102E70009F93AF93BF93EF93FF93809100018823BB |
:102E800011F40E94A516FF91EF91BF91AF919F9110 |
:102E90008F917F916F915F914F913F912F910F9003 |
:102EA0000FBE0F901F90189580911704882399F1F9 |
:102EB0008091BC0087FF02C00E94F814B59B02C03D |
:102EC0000E94D6138091180496B5891B87FF17C0FE |
:102ED000809116048A3F28F4809116048B5F8093BA |
:102EE00016040E9456168091F8029091F9020196FC |
:102EF0009093F9028093F80281E090E0089500B683 |
:102F000000FE03C000B605FCD3CF00B600FC03C032 |
:102F100000B605FECDCF80E090E00895CF93C82F96 |
:102F200080914101909142010196909342018093DA |
:102F3000410180911F0480FD4AC08091A201992720 |
:102F40008230910529F1833091052CF4009749F0E6 |
:102F50000197D9F02EC083309105E9F0049711F163 |
:102F600028C00E949B168C2F0E94881281EC8093AF |
:102F70007C0080B78E7F80BF8091A2018F5F80939D |
:102F8000A20100B605FC4DC04AC00E946F165DC08C |
:102F90000E94871653C00E947B168C2F0E94B51189 |
:102FA00081EC6FC00E9491168C2F0E94B51180ECAD |
:102FB00057C00E9463168C2F0E94B51182EC80933B |
:102FC0007C0080B7836080BF1092A20164C08091B2 |
:102FD000A201992782309105B1F1833091052CF43B |
:102FE000009751F0019741F15AC08330910591F15A |
:102FF000049709F440C053C00E9463168C2F0E94AE |
:10300000881281EC80937C0080B7836080BF8091C0 |
:10301000A2018F5F8093A20100B605FE02C00E944C |
:10302000541780911604882309F44BC0809116042C |
:1030300081508093160445C00E9491168C2F0E94E7 |
:10304000B51182EC0DC00E947B168C2F0E94B51129 |
:1030500080EC17C00E9487168C2F0E94B51181EC5E |
:1030600080937C0080B78E7F80BF8091A2018F5FAC |
:103070008093A20121C00E946F168C2F0E94B5116F |
:1030800082EC80937C0080B7836080BF8091A20136 |
:103090008F5F8093A20100B605FE13C010C00E948E |
:1030A0009B168C2F0E94B51180EC80937C0080B71A |
:1030B0008E7F80BF1092A20100B605FC02C00E9464 |
:1030C000541710920801CF9108951F920F920FB6D6 |
:1030D0000F9211242F933F934F935F936F937F939E |
:1030E0008F939F93AF93BF93EF93FF93909138018A |
:1030F000913051F482E08093380180919F0187BD27 |
:10310000892F0E948E1706C080913801823011F4F9 |
:1031100010923801FF91EF91BF91AF919F918F91E4 |
:103120007F916F915F914F913F912F910F900FBEC3 |
:103130000F901F9018951F920F920FB60F921124A7 |
:103140002F933F934F935F936F937F938F939F93AF |
:10315000AF93BF93EF93FF93809154019091A60199 |
:103160008823E9F1292F33279F5F9093A60121300F |
:10317000310579F0223031051CF4232B29F01DC0D4 |
:103180002230310579F019C020913E0130913F0184 |
:1031900006C020913E0130913F012F5F3F4F369591 |
:1031A000279515C020913E0130913F013695279516 |
:1031B00080914001280F311D0AC020913E013091BD |
:1031C0003F012F5F3F4F369527951092A6018091C2 |
:1031D00080008E7F809380008FEF91E01DC09F5F05 |
:1031E0009093A601915029F420913E0130913F0126 |
:1031F0000CC08091400120913E0130913F01882315 |
:1032000011F02F5F3F4F1092A601809180008160E6 |
:10321000809380008FEF93E0821B930B9C018F3192 |
:10322000910520F0AC014E51504002C040E050E00A |
:10323000809181008E7F809381003093890020935C |
:10324000880050938B0040938A00809181008160B8 |
:103250008093810080910001882331F08091A10149 |
:10326000882311F00E94A516FF91EF91BF91AF91B5 |
:103270009F918F917F916F915F914F913F912F918E |
:103280000F900FBE0F901F901895F999FECF92BD29 |
:1032900081BDF89A80B599270895F999FECF1FBA94 |
:1032A00092BD81BD60BD0FB6F894FA9AF99A0FBE2F |
:1032B000089520E030E02617370740F4FC018191A3 |
:1032C000480F2F5F3F4F26173707C8F3842F9927E2 |
:1032D000089590911F0494FF03C01092540103C0FD |
:1032E00081E080935401292F332725FF02C01092DB |
:1032F000A301907C11F484E107C0C901807C907027 |
:103300008038910521F48CE380933701089580344F |
:10331000910511F48AE0F8CF803C910519F487E01B |
:1033200080933701089586E08093190410921A045F |
:103330008FEF80931B049091090190931C0484E605 |
:1033400080931D0480E480931E0484E880931F040E |
:1033500080910A01981710F080931C044AEA67E0F4 |
:1033600070E089E194E00E94591980932004089547 |
:103370008091190499278F709070069799F44AEA02 |
:1033800067E070E089E194E00E945919809320047D |
:103390002DE439E148E050E069E174E080E290E03A |
:1033A0000E94AC1A0895CF93DF93EC014AEA67E0DC |
:1033B00070E00E9459199F81981719F085E090E0FC |
:1033C00060C04881842F99278F709070069719F0FC |
:1033D00084E090E056C0898186FF03C00E94931963 |
:1033E00047C010921A048981282F332720FF03C079 |
:1033F0008A8180931B0421FF03C08B8180931C046E |
:1034000022FF03C08C8180931D0423FF03C08D81A4 |
:1034100080931E0424FF0AC090911F049E708E8129 |
:10342000817F982B90931F044093190425FF08C0B7 |
:1034300090911F04917F8E818E70982B90931F0422 |
:1034400080911D04833718F083E780931D048091D9 |
:103450001C0490910A01891710F090931C044AEA09 |
:1034600067E070E089E194E00E945919809320049C |
:10347000898187FF02C00E94B8190E94691980E003 |
:1034800090E0DF91CF91089525E439E148E050E0E4 |
:1034900060E270E089E194E00E94871A4AEA67E0FE |
:1034A00070E089E194E00E9459194AEA67E070E00F |
:1034B00089E194E00E945919282F809119049927D5 |
:1034C0008F709070069721F480912004821721F06C |
:1034D0000E9493190E94B8190E94691980911C04D6 |
:1034E00090910A01891710F090931C0480911D049B |
:1034F000833718F083E780931D040895FB01DC01F6 |
:1035000002C005900D9241505040D8F70895A0E0B8 |
:10351000B0E0EDE8FAE10C944A1B6C017B01EA0192 |
:10352000590121978FEFCF3FD80789F08601089482 |
:10353000C11CD11CC7010894E11CF11CF5010995BF |
:10354000F80180832197FFEFCF3FDF0779F7EAE0AB |
:10355000CDB7DEB70C94661BA0E0B0E0E2EBFAE179 |
:103560000C944C1B8C017B01EA01690121978FEFC0 |
:10357000CF3FD80771F0F70121917F01C8010F5F9C |
:103580001F4F622FF60109952197FFEFCF3FDF070D |
:1035900091F7E8E0CDB7DEB70C94681B629FD001CD |
:1035A000739FF001829FE00DF11D649FE00DF11DFE |
:1035B000929FF00D839FF00D749FF00D659FF00DAD |
:1035C0009927729FB00DE11DF91F639FB00DE11D9A |
:1035D000F91FBD01CF0111240895991B79E004C0A2 |
:1035E000991F961708F0961B881F7A95C9F7809542 |
:1035F0000895AA1BBB1B51E107C0AA1FBB1FA6173A |
:10360000B70710F0A61BB70B881F991F5A95A9F78B |
:1036100080959095BC01CD01089597FB092E072652 |
:103620000AD077FD04D0E5DF06D000201AF47095AB |
:1036300061957F4F0895F6F7909581959F4F089576 |
:10364000A1E21A2EAA1BBB1BFD010DC0AA1FBB1FA6 |
:10365000EE1FFF1FA217B307E407F50720F0A21B18 |
:10366000B30BE40BF50B661F771F881F991F1A9485 |
:1036700069F760957095809590959B01AC01BD01AF |
:10368000CF0108952F923F924F925F926F927F9257 |
:103690008F929F92AF92BF92CF92DF92EF92FF9262 |
:1036A0000F931F93CF93DF93CDB7DEB7CA1BDB0B0E |
:1036B0000FB6F894DEBF0FBECDBF09942A883988B3 |
:1036C00048885F846E847D848C849B84AA84B984BA |
:1036D000C884DF80EE80FD800C811B81AA81B981C6 |
:1036E000CE0FD11D0FB6F894DEBF0FBECDBFED01DA |
:0436F0000895FFCF6B |
:1036F40001FFFF0101FB0701011E280D000D1E2023 |
:103704004E80000A00F41FFC1F0A4144523A000193 |
:103714000A0D424C3A56000A0D48573A332E3020CF |
:0A3724005265762000FF0014020039 |
:00000001FF |
/BL-Ctrl_V3/V1.06/BL-Ctrl3_MEGA168_Plus8_V1_06e_ADR9-12.hex |
---|
0,0 → 1,885 |
:100000000C9453010C949D010C949D010C949D0142 |
:100010000C949D010C949D010C949D010C949D01E8 |
:100020000C949D010C94C5130C9466140C949D01C2 |
:100030000C949D010C949B180C9465180C94CA1098 |
:100040000C94C0100C949D010C94880C0C949D0190 |
:100050000C949D010C949D010C949D010C942C1703 |
:100060000C9427160C949D01B815C515D115D415FF |
:10007000DB15DB15E115E415E615E815BB15C5150F |
:10008000D115DB15DE150616EB15EE15F115F41579 |
:10009000F715FA15FD15001603160D160D160616A2 |
:1000A0000D160D16091643757272656E74202020A8 |
:1000B0005B302E31415D43757272656E74206163F1 |
:1000C000742E2020202043757272656E7420706536 |
:1000D000616B2020202054656D702E202020205B35 |
:1000E000302E31B0435D566F6C74616765202020FF |
:1000F0005B302E31565D72706D2028726177292039 |
:10010000202020202020536574706F696E74202099 |
:100110002020202020204D6178536574706F696E17 |
:1001200074202020202050504D536574706F696EEC |
:10013000742020202020506172616D2E50776D5305 |
:1001400063616C696E67506172616D2E4D617843B9 |
:10015000757272656E74506172616D2E4D61785466 |
:10016000656D702E2020506172616D2E5363616C3D |
:10017000652049202020537461727420436F756E8E |
:10018000742020202020493243204C6F737420209B |
:100190002020202020204932432D424C2D537461D1 |
:1001A000746520202020313620202020202020208F |
:1001B0002020202020203137202020202020202017 |
:1001C0002020202020203138202020202020202006 |
:1001D00020202020202031392020202020202020F5 |
:1001E00020202020202032302020202020202020ED |
:1001F00020202020202032312020202020202020DC |
:100200002020202020204F76657243757272656E23 |
:100210007420636E742049204375746F66662020D5 |
:10022000202020636E7464652D6D61676E6574694E |
:100230007A6520636E74496E76616C696450756C82 |
:1002400073657320202049204C696D69742020203B |
:100250002020636E74204920426961732020202091 |
:10026000202020202020536C6F70652D4D61782058 |
:100270002020202020204572726F72436F64652019 |
:100280002020202020204861726477617265202040 |
:100290002020202020204C696D69742049202020D6 |
:1002A00020202020202011241FBECFEFD4E0DEBF6D |
:1002B000CDBF11E0A0E0B1E0E4EFF6E302C00590AD |
:1002C0000D92AA33B107D9F714E0AAE3B1E001C057 |
:1002D0001D92A132B107E1F74BEA20EF37E3A7EA1D |
:1002E000B1E09FE0F9012F5F3F4F84918D939150D2 |
:1002F00097FFF8CFE7EAF1E09EE08191482740952B |
:10030000915097FFFACF8091B601481711F0000085 |
:10031000FECF8091AE0180933A018091AF0180932E |
:100320000D018091B00180930A018091B101809309 |
:1003300009010E94B8070C94791B0C940000CF931C |
:1003400089E191E00E94F40BC09104018C2F805D43 |
:100350008A3328F081E30E94E10B8C2F8A5D0E9492 |
:10036000E10BCF9108956BEF77E0409161015091DF |
:100370006201A0911C042AE0A29FC0011124E09117 |
:100380005F01F09160018E179F0780F55798BF01BC |
:10039000681B790BCB01880F991F880F991FBA0131 |
:1003A000681B790B80910A01829FC0011124C296BB |
:1003B0008E179F07D8F480915401882319F080E0AC |
:1003C00092E002C080E094E09093890080938800DE |
:1003D0008BB1877C8BB960E070E08091FC029091DA |
:1003E000FD0201969093FD028093FC028091160419 |
:1003F0009927880F991F880F991F2BEF37E0281B2B |
:10040000390B261737070CF4B90180914D018F3F46 |
:1004100071F0282F3327B4E0220F331FBA95E1F78C |
:10042000245D3E4F2617370724F4B90102C010920D |
:100430004C0177FF02C060E070E0641775070CF4B0 |
:10044000AB0180913C0190913D018417950708F420 |
:10045000AC0180918B018823D9F482E080938B01D9 |
:1004600085E0A89FC0011124E817F90748F44C590A |
:100470005F4F50933D0140933C014456504008C0AB |
:10048000445F5F4F50933D0140933C014C505040BE |
:10049000F894CA0157FD01969595879590933F0171 |
:1004A00080933E01880F991F481B590B40934001D0 |
:1004B00078947093D7026093D6020895CF93DF9318 |
:1004C000E0910F01F091100181E2E330F8071CF098 |
:1004D000C0E0D0E040C089E1E13FF8074CF0CF0137 |
:1004E00066E070E00E940D1BCB01C8E7D5E031C08B |
:1004F00080E1E33CF8075CF0CF01F7FD0796F3E0FD |
:1005000095958795FA95E1F7CAE6D4E022C089E08F |
:10051000E938F8074CF0CF0166E070E00E940D1B4F |
:10052000CB01CEE1D5E015C085E0E932F80754F003 |
:10053000CF01F7FD03969595879595958795CDEE17 |
:10054000D5E007C0CF01F7FD019695958795CAE3E1 |
:10055000D7E0C81BD90BCE016AE070E00E940D1BEA |
:1005600060930E01D093CF02C093CE026837D0F5CE |
:1005700020910B0130910C012C9FC0012D9F900DFB |
:100580003C9F900D1124E92FFF27C90153E0880FEC |
:10059000991F5A95E1F7820F931F820F931F67E00F |
:1005A00070E00E940D1BE61BF70B80915B019091A0 |
:1005B0005C0143E0969587954A95E1F78E0F9F1F62 |
:1005C0006AE070E00E940D1BFB01C90163E070E06E |
:1005D0000E940D1B6E177F070CF4FB0180910B012D |
:1005E0008E1B02C080910B0180930D0180915B01F5 |
:1005F00090915C01EAEFF0E0E81BF90BE93CF105B2 |
:1006000014F0E8ECF0E08FEFEE3CF80714F4EEECB9 |
:10061000FFEF90911D048AE0989FC00111248E0F76 |
:100620009F1FFE01E81BF90B1E161F067CF4EE0F40 |
:10063000FF1FCDEFD0E0CE1BDF0BC230D10514F48D |
:10064000C1E0D0E0C0930201579803C08FEF8093C0 |
:100650000201DF91CF91089580915B0190915C013F |
:100660009093C9028093C80280915F0190916001CC |
:100670002091130130911401821B930B9093CB02B4 |
:100680008093CA0280911101909112019093D1023E |
:100690008093D0028091590190915A019093D30296 |
:1006A0008093D20280916101909162019093D50272 |
:1006B0008093D40280919201909193019093D902FA |
:1006C0008093D80280911B0499279093DB0280933A |
:1006D000DA0280911C0499279093DD028093DC025A |
:1006E00080911D0499279093DF028093DE02809110 |
:1006F0001E0499279093E1028093E00280915201B9 |
:1007000090915301892B39F40E94A5149927909355 |
:10071000E7028093E6028091160499279093FB02EA |
:100720008093FA0280913C0190913D0190930103E6 |
:10073000809300038091B7019927909303038093DE |
:10074000020380910B0190910C019093050380931B |
:100750000403809101019927909307038093060376 |
:10076000089560E070E0F8942091520130915301B7 |
:10077000E0919A01F0919B01789410923B01909145 |
:100780004D01992319F080E180933B01211531053A |
:1007900059F180913B01816080933B01BF019A3008 |
:1007A00030F487E0E83FF80710F060E070E0579A17 |
:1007B00081E02C3C380730F480913B0184608093C9 |
:1007C0003B010AC0309741F01092930110929201C0 |
:1007D0001092030110928F01309751F080913B01EC |
:1007E000826080933B0104C030939B0120939A0167 |
:1007F00081E0223C380758F080914B0180FF02C015 |
:10080000309729F080918F0188230CF04AC04091E5 |
:100810005001509151014115510579F080916701C6 |
:10082000682F7727B3E0660F771FBA95E1F710922C |
:100830000301579A10928F0134C080918F0187FF76 |
:1008400025C081E08093030180913B018860809303 |
:100850003B01209192013091930189E0253C3807BA |
:1008600008F09A0187E02C3F380710F02BEF37E0B3 |
:100870002333310540F4992331F480914E018823CC |
:1008800011F4BA0101C0B901579A0BC0232B09F426 |
:100890005798BF011092670180916F00806280932A |
:1008A0006F0020911B04809102018F3F19F0821785 |
:1008B00008F4282F809101018F3F19F0821708F466 |
:1008C000282F2F3FC1F0CB01AA27BB27332744276E |
:1008D0005527BC01CD010E94CE1A97FF04C061507C |
:1008E0007F4F8F4F9F4FBB2797FDBA95A92F982F0A |
:1008F000872FBC0157986115710511F0605B7F4F20 |
:1009000087E06C3F780710F06BEF77E08091A001F3 |
:10091000882311F061E070E0CB0108950E94561623 |
:100920008091810081608093810080916F0081605F |
:1009300080936F00E0911501F091160180E0099518 |
:1009400080915401882371F08091800082608093AF |
:1009500080008FEF91E0909389008093880084EF6E |
:1009600091E00DC0809180008360809380008FEFC4 |
:1009700093E0909389008093880088EE93E09093B1 |
:100980008B0080938A00089596B5980F86B5891BD1 |
:1009900087FDFCCF0895CF93C82F7894C150CF3FE7 |
:1009A00059F0579888EC90E00E948C11579A8AEF82 |
:1009B00090E00E948C11F2CF84EF91E00E948C11A4 |
:1009C000CF9108951F93CF93DF93162FEC012197BA |
:1009D0008FEFCF3FD807A9F0812F0E948913809114 |
:1009E0001301909114018A5B9F4F20915F01309118 |
:1009F00060018217930758F70E94561681E090E035 |
:100A000002C080E090E0DF91CF911F910895FF92A6 |
:100A10000F931F93CF93DF9300E0579A80910401C7 |
:100A2000F82EFA9423E0F222F394282F33278CE255 |
:100A300091E0289FE001299FD00D389FD00D11240F |
:100A400080919A0190919B01892B19F4CE010E940B |
:100A50008C1180B7877F80BF0093A101F89488E153 |
:100A60000FB6F89480936000109260000FBE0E9451 |
:100A7000561660E086E00E944F1310925E011092BD |
:100A80005D01C9E0D0E081E00E94B5112197D7FF58 |
:100A9000FACF80915D0190915E0190931401809353 |
:100AA0001301C39710F000E16DC061E083E00E9484 |
:100AB0004F134E978959934008F002E161E087E0B7 |
:100AC0000E944F1380559040815D924008F001E1F3 |
:100AD0000E94561619E015B98AE00E94C40461E02C |
:100AE00080E00E944F13883C910508F404E00E94C6 |
:100AF00056160E9456161BB98AE00E94C40461E093 |
:100B000080E00E944F134A9708F007E00E945616B3 |
:100B1000C1E1C5B98AE00E94C40461E0862F0E9449 |
:100B20004F13883C910508F405E00E9456160E9478 |
:100B30005616CBB98AE00E94C40461E0862F0E9459 |
:100B40004F134A9708F008E00E945616C1E2C5B953 |
:100B50008AE00E94C40461E082E00E944F13883C56 |
:100B6000910508F406E00E9456160E945616CBB96D |
:100B70008AE00E94C40461E0862F0E944F134A97C6 |
:100B800008F0012F0E94561680919A0190919B01C6 |
:100B9000892B09F0F5C08091190484FDF1C0002370 |
:100BA00061F0802F8F5B0E94E10BDFC00CE08DE4D1 |
:100BB0000E94E10B0E945616D8C08BB1877C8BB97E |
:100BC0008AB188638AB985B1886385B984B188633D |
:100BD00084B961E08AE090E00E94E2048091130110 |
:100BE000909114010A9620915F0130916001821763 |
:100BF000930708F40BE085B1877C85B984B18863DD |
:100C000084B98BB188638BB98AB188638AB961E092 |
:100C10008AE090E00E94E204809113019091140117 |
:100C20000A9620915F01309160018217930708F4C2 |
:100C30000AE08AEB93E090938900809388008CE926 |
:100C400093E090938B0080938A0081E08093A301CE |
:100C500010E061E088E090E00E94E20489E6F89EFE |
:100C6000C0011124C0E0D0E08052934009F441C09B |
:100C7000812F99278130910571F0823091051CF404 |
:100C8000892B21F011C0029759F00EC00E94631603 |
:100C90000E94911609C00E946F160E949B1604C004 |
:100CA0000E947B160E94871661E082E090E00E941D |
:100CB000E204882351F0012F0F5F812F8F5C0E9487 |
:100CC000E10B0E94561614E614C00E94561661E00D |
:100CD0008F2D99270E94E204219689E6F89E9001C3 |
:100CE000112480E293E0821B930BC817D90708F404 |
:100CF000BFCF1F5F133008F4ACCF0E9456168CE0B4 |
:100D000092E090938900809388008EEE91E090931A |
:100D10008B0080938A0061E08AE090E00E94E20408 |
:100D2000002319F51092600110925F01C0E0D0E03D |
:100D300084B1877C84B98AB1877C8AB961E081E01B |
:100D400090E00E94E20480911301909114010A96B0 |
:100D500020915F01309160018217930708F426CF3C |
:100D6000219684E0C030D80718F30E9456160093ED |
:100D7000B701002321F0802F0E94CB04FCCF789490 |
:100D8000DF91CF911F910F91FF9008956F927F9205 |
:100D90008F929F92AF92BF92CF92DF92EF92FF928B |
:100DA0000F931F938C0132E3632E712C812C912CB5 |
:100DB00080B7877F80BF1092A101E0911701F09169 |
:100DC00018018CEF09950E9456161092600110923E |
:100DD0005F01C8019695879590933F0180933E01EE |
:100DE0001092380180E00E948E1780E00E948E17DA |
:100DF00080911604853198F18EE591E00E94721180 |
:100E000090934401809343010CC085B1877C85B9E0 |
:100E100084B1886384B98BB188638BB98AB18863E4 |
:100E20008AB980914301909144010E947D118823E9 |
:100E300061F30E94561680E00E948E1788EC90E0C5 |
:100E400010C00E9456168FE08093B70181E00E9487 |
:100E5000CB0480E090E07FC081E090E07CC08EE138 |
:100E600090E00E947211909344018093430109C065 |
:100E70000E94891380915F019091600189379105EB |
:100E800000F780914301909144010E947D118823D5 |
:100E900079F380B7877F80BF1092A10110933F0143 |
:100EA00000933E011092420110924101EE24FF2472 |
:100EB00087016401530183E0AA0CBB1CCC1CDD1C20 |
:100EC0008A95D1F7D601C501860D971DA81DB91DBC |
:100ED000860D971DA81DB91DE816F9060A071B0700 |
:100EE00048F485E00E94C4040894E11CF11C011D33 |
:100EF000111DE8CF809113019091140188589F4FE4 |
:100F000020915F01309160018217930708F499CF17 |
:100F1000C401B3012FE030E040E050E00E94201B0C |
:100F2000621A730A840A950A089461087108810894 |
:100F300091088EE1681671048104910408F48CCF45 |
:100F40008091410190914201892B09F0ABCF80E063 |
:100F50000E948E17A7CF1F910F91FF90EF90DF9007 |
:100F6000CF90BF90AF909F908F907F906F9008959B |
:100F7000CFEFD4E0DEBFCDBF17B880E188B988EBF2 |
:100F80008AB987E08BB91EE014B981E085B957981A |
:100F900083E00E94C40415BC80EE8ABD18BD0E9487 |
:100FA000561680916E00826080936E0080916E0074 |
:100FB000846080936E00789480910D0199279093BE |
:100FC0000C0180930B010E94AD130E94441A809182 |
:100FD000C100877F8093C10052985A9AE09117010F |
:100FE000F09118018CEF099589E090E00E948C1136 |
:100FF0008091C100877F8093C1008091B40082FFFF |
:1010000006C0499B02C081E007C083E005C0499B40 |
:1010100002C082E001C084E0809304010E948E043B |
:101020008091B40082FF13C05A98529A8AE090E0EF |
:101030000E948C11F89452985A9AE0911701F091FD |
:1010400018018CEF099578944A9919C013C0529AE7 |
:101050005A9A8AE090E00E948C11F89452985A981B |
:101060005A9AE0911701F09118018CEF0995789444 |
:101070004A9B05C0809104018C5F8093040180919C |
:101080000401885F809304015298529A8091C100B4 |
:1010900088608093C1000E940D0C80E50E94EC14D2 |
:1010A0000E94A41180E00E94891384EF91E00E94C5 |
:1010B0007211909344018093430106C080919A017C |
:1010C00090919B01892B41F48091430190914401BF |
:1010D0000E947D11882391F31092620110926101A8 |
:1010E0000E94B30181E080937C00109293011092E2 |
:1010F000920185B910921A04109254010E940705BA |
:101100000E9469190E94ED0B0E949F010E940D0C24 |
:101110008091C10080688093C1000E945616109291 |
:10112000A3018BB5992790930C0180930B0110922A |
:101130008A01109289010E94B10390936201809309 |
:101140006101892B31F40E94B10390936201809375 |
:10115000610180914C01863008F0579880916101BF |
:1011600090916201892B09F047C010924E011092B4 |
:101170004D011092A3010E94561680914501909155 |
:1011800046010E947D11882309F458C010924C0139 |
:101190001092B70180B7877F80BF1092A10181E0D4 |
:1011A000809307011092160480911301909114010D |
:1011B00020915F01309160012817390710F40197E1 |
:1011C00004C08217930728F401969093140180932A |
:1011D000130182E390E00E94721190934601809384 |
:1011E000450180911301909114019093FF02809327 |
:1011F000FE0212BC11BC22C080910701882369F451 |
:101200002091590130915A012430310550F48091D8 |
:101210004D01853630F08A3F20F481E080934E0105 |
:1012200005C02930310510F010924E018CED95E08B |
:101230000E94721190934601809345012091A00174 |
:101240002223A1F48091410190914201892B71F0F8 |
:1012500080911604883C50F42093070186E990E0C1 |
:101260000E94721190934401809343018091070181 |
:10127000882321F010926201109261010E94B30153 |
:1012800080910801815080930801809108018F3F6F |
:1012900009F051CF8091610190916201892B11F485 |
:1012A0008AE001C084E6809308010E944B16809179 |
:1012B000650190916601892B21F00E94780F0E94B0 |
:1012C000720E8091490190914A010E947D118823FC |
:1012D00009F433C182E390E00E94721190934A01B5 |
:1012E000809349018091A001882391F08091A00111 |
:1012F00081508093A0018091A001882349F48091BE |
:10130000F4029091F50201969093F5028093F40215 |
:1013100080915701909158012091550130915601CB |
:10132000B9010E94F91A80915F0190916001909338 |
:1013300058018093570181E090E09093560180938B |
:10134000550180911301909114016817790798F065 |
:10135000681B790B80911E049927689F9001699FF3 |
:10136000300D789F300D1124B90116E07695679500 |
:101370001A95E1F702C060E070E080915B01909106 |
:101380005C018617970710F4019604C06817790767 |
:1013900028F4019790935C0180935B0180915B013D |
:1013A00090915C018B30910588F0681B790B77FF79 |
:1013B00002C0695F7F4FC3E075956795CA95E1F7F5 |
:1013C000860F971F90935C0180935B01E0915B0116 |
:1013D000F0915C01CF016AE070E00E94F91A40913F |
:1013E0001C04842F992786179707F0F48AE0489FFA |
:1013F000C00111249F01281B390BC901880F991FB7 |
:10140000820F931F2DEF30E0281B390B2931310556 |
:1014100014F429E130E02F3F310519F014F02FEFDB |
:1014200030E02093010103C08FEF80930101F89415 |
:101430006091410170914201AB0156954795209111 |
:10144000590130915A012417350728F450935A0155 |
:101450004093590118C0C901880F991F820F931F2B |
:10146000840F951F969587959695879590935A0129 |
:1014700080935901672B39F4009729F001979093D5 |
:101480005A018093590110924201109241017894BF |
:101490000E945E028091650190916601009731F093 |
:1014A0000197909366018093650102C010924B01F1 |
:1014B0008091A3018823B1F480914D01813590F092 |
:1014C00080911101909112018536910558F080911B |
:1014D000A001882339F480911F0485FD03C081E0B9 |
:1014E0008093A30180914D018E3120F481E080939F |
:1014F000000123C02091590130915A012734310550 |
:1015000048F480915B0190915C01409740F0293351 |
:10151000310528F0F8941092000178940EC027331A |
:10152000310558F480915F01909160010F9728F484 |
:10153000F89481E080930001789480914701909124 |
:1015400048010E947D118823F1F085E090E00E941F |
:1015500072119093480180934701809159019091B5 |
:101560005A01892B39F080914D018F3F19F08F5F1F |
:1015700080934D0180910701882329F0F89480E041 |
:101580000E948812789480914301909144010E94B6 |
:101590007D11882329F480914E01882309F4CBCD55 |
:1015A0008091590190915A014E9708F0C4CD84E67C |
:1015B00090E00E9472119093440180934301109235 |
:1015C0004D0151E0F52EF09207011092A30180B772 |
:1015D000877F80BF1092A1010E94B103892B09F47B |
:1015E000AACD80910F01909110018958994008F47B |
:1015F000A2CD10925E0110925D0110924E01809179 |
:101600001F0499278E70907004E110E0809FE00124 |
:10161000819FD00D909FD00D1124A096F0920001D3 |
:101620001092A301C0905001D09051018091E2022C |
:101630009091E30201969093E3028093E202CE013F |
:101640000E94C606882309F476CDD0925101C0923B |
:10165000500110923F0110923E018091A101882318 |
:1016600019F480B7886180BFF092A1011092070140 |
:10167000109216041092420110924101C8010E947A |
:1016800072119093440180934301809143019091A2 |
:1016900044010E947D118823C1F310925A011092D7 |
:1016A00059018AE090E090933F0180933E018C17AE |
:1016B0009D07E0F580913E0190913F010A9690933D |
:1016C0003F0180933E0184E190E00E94721190936B |
:1016D00044018093430113C080915F0190916001A8 |
:1016E0008937910540F00E9456168FE08093B7012C |
:1016F00081E00E94CB040E94780F0E94720E8091BC |
:101700004301909144010E947D11882329F3809127 |
:10171000410190914201892B49F0109242011092AF |
:10172000410180913E0190913F01C1CF80914C01D8 |
:10173000882321F0813039F4CC0FDD1FD0933F0195 |
:10174000C0933E0109C0CE01880F991F8C0F9D1FC9 |
:1017500090933F0180933E0184E690E00E947211D5 |
:10176000909344018093430104C00E94780F0E942B |
:10177000720E80914301909144010E947D11882353 |
:10178000A1F380914C018F5F80934C01D092510165 |
:10179000C092500182E390E00E9472119093480140 |
:1017A0008093470188EC90E00E947211909344016D |
:1017B000809343011092F9021092F8021092A00156 |
:1017C000BACC982F8091C10083FF06C08091C000E1 |
:1017D00085FFFCCF9093C60008958DE00E94E10B39 |
:1017E0008AE00E94E10B08951F93CF93DF93EC01F1 |
:1017F00010E08881882369F0FE01E10FF11D1F5F71 |
:1018000080810E94E10BFE01E10FF11D80818823A0 |
:1018100099F7DF91CF911F9108950F931F930FB701 |
:1018200088E18093C1001092700110926E011092B5 |
:101830006D0110926C0181E080931F018093BC02C6 |
:1018400086E08093BD0284E08093C0028BE08093A9 |
:10185000BE021092BF0280E291E00E94F40B81E38D |
:101860000E94E10B8EE20E94E10B80E30E94E10BFB |
:1018700086E30E94E10B85E60E94E10B87E291E09E |
:101880000E94F40B1AE080913A01612F0E94ED1A38 |
:10189000805D0E94E10B80913A01612F0E94ED1A58 |
:1018A000892F805D0E94E10B0FBF10926B011F9189 |
:1018B0000F9108958091C00086FF29C080911F017B |
:1018C000882309F58091710190917201019690939E |
:1018D000720180937101FC01E85FFC4FE081ED3003 |
:1018E00019F08A3F910539F410927201109271013A |
:1018F00081E080931F018091C00081608093C000CF |
:10190000E093C6000895109272011092710108953B |
:101910001F920F920FB60F9211242F933F934F9364 |
:101920005F938F939F93AF93BF93CF93DF93EF9387 |
:10193000FF935091C60080917001882309F065C023 |
:1019400040916B01442371F4533279F45093B80100 |
:1019500081E080936B0183E290E090937401809327 |
:10196000730153C04A3F08F04CC02091730130917D |
:101970007401E42FFF275D3069F0E854FE4F508377 |
:101980004F5F40936B01250F311D309374012093FD |
:1019900073013BC0DF01A854BE4FFD013297808127 |
:1019A000281B3109ED0121978881281B3109C901C4 |
:1019B0009F709093740180937301689415F89695C5 |
:1019C00087951694E1F7982F935C2F733070235C02 |
:1019D0008081981789F48881281771F480ED97E049 |
:1019E00090936601809365015C934F5F40936F0114 |
:1019F00081E08093700102C01092700110926B011F |
:101A000004C080936B0180937001FF91EF91DF918F |
:101A1000CF91BF91AF919F918F915F914F913F91E6 |
:101A20002F910F900FBE0F901F901895A0E0B0E07F |
:101A30009D01482F5527A417B50748F4E8E0F3E0C7 |
:101A40008191280F311D1196A417B507C8F33F7077 |
:101A5000FD01E85FFC4FC90176E0969587957A9580 |
:101A6000E1F7835C80831196FD01E85FFC4F2F73E3 |
:101A70003070822F835C8083A75FBC4F8DE08C9396 |
:101A800010921F01809108038093C6000895CF92A1 |
:101A9000DF92EF92FF920F931F93CF93DF93CDB717 |
:101AA000DEB72B859C850D85DD2483E280930803BA |
:101AB0009F599093090320930A0333E0C32E002318 |
:101AC00009F49AC0EE84FF84BE016E5E7F4FA88940 |
:101AD000B9890150109709F48FC01097B9F0F70138 |
:101AE000ED0DF11DD3949081119791F4002349F1EC |
:101AF000FB016E5F7F4FDB01E080F1806E5F7F4F07 |
:101B00000D90BC91A02DDD24015002C090E019C0C1 |
:101B10001097B9F0F701ED0DF11DD39440811197A5 |
:101B200091F4002341F1FB016E5F7F4FDB01E08008 |
:101B3000F1806E5F7F4F0D90BC91A02DDD24015090 |
:101B400002C040E018C01097B1F0F701ED0DF11D93 |
:101B5000D3941081119781F4002371F0FB01329628 |
:101B6000DB01ED90FC90BF016E5F7F4FA081B181E2 |
:101B7000DD24015001C010E0EC2DFF27E85FFC4F91 |
:101B8000892F86958695835C8083C394EC2DFF27EF |
:101B9000E85FFC4F892F99278370907024E0880FAD |
:101BA000991F2A95E1F755279A0194E036952795D4 |
:101BB0009A95E1F7822B835C8083C394EC2DFF27F9 |
:101BC000E85FFC4F4F705070440F551F440F551F76 |
:101BD000812F992726E0969587952A95E1F7842B02 |
:101BE000835C8083C394EC2DFF27E85FFC4F1F7359 |
:101BF000135C1083C3946ECF8C2D0E94160DDF9161 |
:101C0000CF911F910F91FF90EF90DF90CF900895AB |
:101C1000A3E07A2F40916F014650442309F458C045 |
:101C2000E72FFF27E854FE4F80818D537F5FE72F1A |
:101C3000FF27E854FE4F20812D537F5FE72FFF27BA |
:101C4000E854FE4F30813D537F5FE72FFF27E85474 |
:101C5000FE4F60816D537F5F9927880F991F880F12 |
:101C6000991F522F52955F70582B822F99278F7092 |
:101C70009070F4E0880F991FFA95E1F7232F2695CD |
:101C80002695282B832F992783709070E6E0880F84 |
:101C9000991FEA95E1F7682B41504F3FC9F0EA2FB1 |
:101CA000FF27E854FE4F5083AF5F41504F3F81F014 |
:101CB000EA2FFF27E854FE4F2083AF5F41504F3F8C |
:101CC00039F0EA2FFF27E854FE4F6083AF5FA5CFBE |
:101CD0008BEB91E090936E0180936D01A350A093E4 |
:101CE0006C01089580917001882309F400C10E945D |
:101CF000080E8091B9018B3668F08091B901282FC8 |
:101D0000332780910401992785599F4F2817390758 |
:101D100009F0E5C08091BA0199278436910509F44C |
:101D2000B5C0853691059CF48235910519F183354E |
:101D3000910544F48132910509F46AC08B9709F446 |
:101D4000C7C0CDC08136910509F4B5C0C8C085377C |
:101D50009105E9F0863791052CF48437910509F453 |
:101D600044C0BDC08637910509F4A1C087379105ED |
:101D700021F1B5C088E190E02CE00FB6F894A89569 |
:101D8000809360000FBE20936000F894FFCFE09135 |
:101D90006D01F0916E01908180910401981719F006 |
:101DA0008081882319F41092680103C082E0809337 |
:101DB000680180916A01886088C0E0916D01F091AE |
:101DC0006E018081882329F0908180910401981709 |
:101DD00029F4CF0101960E94D31901C082E08093BB |
:101DE000680180916A01806170C080910401E09176 |
:101DF0006D01F0916E01E80FF11D319780818093A4 |
:101E0000670180E293E0909351018093500167C095 |
:101E100084EF91E09093510180935001209104014F |
:101E2000A0916D01B0916E01FD01E20FF11D808165 |
:101E3000809367018C9187FD06C0809107018823FC |
:101E400011F01092670180916701882369F08091F9 |
:101E50003B0182FD03C08C9188231CF481E08093B8 |
:101E60004B0180914B01826080934B01E0916D01A9 |
:101E7000F0916E01808199278F70907033278217BF |
:101E8000930769F580916A0180621FC0E0916D013E |
:101E9000F0916E0190818AE0989FC0011124909387 |
:101EA00064018093630180916A0182600EC0809119 |
:101EB0006A0181600AC0E0916D01F0916E0180813C |
:101EC0008093690180916A01846080936A0107C0F0 |
:101ED000E0916D01F0916E0180818093C4001092B9 |
:101EE0006E0110926D0110926C01109270010895B4 |
:101EF000CF93DF93CDB7DEB721970FB6F894DEBF4F |
:101F00000FBECDBF80911F01882319F40E945A0C87 |
:101F10002EC180916A01992785FF37C080913B01CE |
:101F2000809375010E948A14809376010E94A51403 |
:101F30008093770180910E01809378018091110147 |
:101F4000909112018135910530F0809111018055F9 |
:101F50008093790104C0109212011092110185E062 |
:101F600090E09F938F9385E791E09F938F9381E01B |
:101F70008F9380910401865F8F938FE38F930E94EC |
:101F8000470D80916A018F7D70C082FF30C08091C3 |
:101F90006901992724E0880F991F2A95E1F78A554E |
:101FA0009F4F40E150E0BC0185E791E00E947E1A1E |
:101FB00080E190E09F938F9385E791E09F938F93CB |
:101FC00081E090E09F938F9389E691E09F938F93B8 |
:101FD00082E08F9385E08F9381E48F930E94470D79 |
:101FE0008FEF8093690180916A018B7FB6C08091E9 |
:101FF000630190916401892B41F080910C049091D0 |
:102000000D040E947D11882329F480916A0199278B |
:1020100081FF31C00E942C0380915D0190915E018F |
:102020009093CD028093CC0210925E0110925D01DC |
:1020300082E490E09F938F9386EC92E09F938F933E |
:1020400081E08F9385E08F9384E48F930E94470D06 |
:1020500080916301909164010E94721190930D042C |
:1020600080930C0480916A018D7F80936A018DB703 |
:102070009EB7079677C080FF14C08AE090E09F93D8 |
:102080008F938CEB92E09F938F9381E08F9385E009 |
:102090008F9386E58F930E94470D80916A018E7F12 |
:1020A000E4CF83FF36C080916801882319F481E072 |
:1020B000898301C0198288E090E09F938F9389E122 |
:1020C00094E09F938F9321E030E03F932F9384E03F |
:1020D00091E09F938F933F932F9388E691E09F9396 |
:1020E0008F933F932F93CE01820F931F9F938F93D4 |
:1020F00084E08F9385E08F9385E58F930E94470D51 |
:1021000080916A01877F80936A018DB79EB743965D |
:1021100029C084FF2CC080916801882319F481E0D4 |
:10212000898301C0198221E030E03F932F9388E634 |
:1021300091E09F938F933F932F93CE01820F931F34 |
:102140009F938F9382E08F9385E08F9387E58F93A2 |
:102150000E94470D80916A018F7E80936A018DB73E |
:102160009EB70B960FB6F8949EBF0FBE8DBF2196FB |
:102170000FB6F894DEBF0FBECDBFDF91CF910895AB |
:102180001F920F920FB60F9211240F900FBE0F9057 |
:102190001F9018951F920F920FB60F9211242F9334 |
:1021A0003F934F935F936F937F938F939F93AF93DF |
:1021B000BF93EF93FF9388B5845688BD80918C01BF |
:1021C000815080938C01882309F07BC082E080934A |
:1021D0008C018091890190918A01019690938A01E6 |
:1021E0008093890188E190E02BE00FB6F894A895E0 |
:1021F000809360000FBE2093600080915201909107 |
:102200005301009719F10197909353018093520164 |
:1022100021E0883B920739F021E08C32920719F0D7 |
:102220008436910599F480E50E94EC148091520166 |
:1022300090915301885B914049F48091E402909120 |
:10224000E50201969093E5028093E402809190016B |
:10225000882331F08091900181508093900102C0D9 |
:1022600080938F018091500190915101009729F046 |
:102270000197909351018093500180918B018823A5 |
:1022800029F080918B01815080938B0180913501E1 |
:1022900090913601019790933601809335018F5FBD |
:1022A0009F4F79F488E795E090933601809335014C |
:1022B0008091520190915301892B19F480E50E947D |
:1022C000EC14FF91EF91BF91AF919F918F917F910E |
:1022D0006F915F914F913F912F910F900FBE0F9093 |
:1022E0001F9018959C01F8948091890190918A0122 |
:1022F0007894820F931F01970895F8942091890193 |
:1023000030918A01821B930B892F992780787894CA |
:10231000992787FD90950895CF93DF930E947211BE |
:10232000EC010AC08091650190916601892B21F032 |
:102330000E94780F0E94720ECE010E947D118823A8 |
:1023400089F3DF91CF91089587EA80937A0087EC33 |
:1023500080937C0080917A00806480937A008091E1 |
:102360007B00806480937B000895CF93DF93C82F18 |
:1023700096EC90937C0080B7806880BF84ED80935A |
:102380007A0080917A00806180937A0090937C003B |
:1023900080917A00806480937A00809157019091B7 |
:1023A000580180569A4EB8F4809157019091580187 |
:1023B00020915F0130916001820F931F909358012B |
:1023C0008093570180915501909156010196909309 |
:1023D00056018093550180917A0084FD0DC0CC2375 |
:1023E000D1F38091BC0087FF02C00E94F814B59B16 |
:1023F000F2CF0E94D613EFCFC0917800D091790030 |
:1024000080910D019927C89F9001C99F300DD89FD9 |
:10241000300D112445E0369527954A95E1F7309324 |
:10242000600120935F0180915D0190915E018217B0 |
:10243000930720F430935E0120935D0132E0C935AB |
:10244000D30708F454C00E94561680915401882383 |
:1024500019F080E092E002C080E094E0909389005F |
:102460008093880010923F0110923E01109240012B |
:102470001092A30180913C0190913D012091610156 |
:10248000309162012817390720F430933D012093E1 |
:102490003C018AE080938B018091F6029091F702D3 |
:1024A00001969093F7028093F60283E0C73BD8072A |
:1024B00050F083E08093A00180914D01833318F0A8 |
:1024C00082E380934D0180910D019927C89F90016F |
:1024D000C99F300DD89F300D1124C90125E0969574 |
:1024E00087952A95E1F79093600180935F0184E0DE |
:1024F00080937A0080917B00806480937B0080B71A |
:102500008F7780BF80B7806180BFDF91CF910895C2 |
:102510001F93CF93182F80914F01815080934F01CB |
:102520008F3F09F0B6C08EE180934F0180918D01FD |
:10253000815080938D018F3F09F058C0C0917C007D |
:1025400097EC90937C0080B7806880BF84ED809387 |
:102550007A0080917A00806180937A0090937C0069 |
:1025600080917A00806480937A0080917A0084FD63 |
:102570000DC01123D1F38091BC0087FF02C00E94DF |
:10258000F814B59BF2CF0E94D613EFCFC0937C0016 |
:102590002091780030917900C901E4E0880F991FFB |
:1025A000EA95E1F7820F931F67E170E00E94F91A44 |
:1025B0008091110190911201860F971F9695879532 |
:1025C000909312018093110184E080937A008091AE |
:1025D0007B00806480937B0080B78F7780BF80B75B |
:1025E000806180BF83E080938D0156C0C0917C00E4 |
:1025F00093EC90937C0080B7806880BF84ED8093DB |
:102600007A0080917A00806180937A0090937C00B8 |
:1026100080917A00806480937A0080917A0084FDB2 |
:102620000DC01123D1F38091BC0087FF02C00E942E |
:10263000F814B59BF2CF0E94D613EFCFC0937C0065 |
:1026400080917800909179009C0163E0220F331F04 |
:102650006A95E1F7280F391F280F391F80910F0164 |
:1026600090911001820F931F96958795909310017A |
:1026700080930F0184E080937A0080917B008064D6 |
:1026800080937B0080B78F7780BF80B7806180BFE9 |
:1026900003C0812F0E94B511CF911F9108951F9300 |
:1026A000CF93C62F10917C00982F906C90937C0054 |
:1026B00080B7806880BF86ED80937A0080917A0031 |
:1026C000806180937A0090937C0080917A0080648E |
:1026D00080937A0080917A0084FD09C0CC23D1F3E5 |
:1026E0008091BC0087FFF6CF0E94F814F3CF1093BF |
:1026F0007C0087E080937A0080B78F7780BF80B7B7 |
:10270000806180BF8091780090917900CF911F9176 |
:102710000895682F86E00E944F1320910D01332702 |
:10272000829FA001839F500D929F500D11249A010A |
:10273000F5E036952795FA95E1F7309360012093FF |
:102740005F0180915D0190915E018217930720F4F3 |
:1027500030935E0120935D01089580918100806C2B |
:1027600080938100809181008064809381008091BA |
:102770006F00806280936F0080916F008160809312 |
:102780006F0082E08093B10008951F920F920FB600 |
:102790000F9211248F93809191018F5F809391010B |
:1027A0008F910F900FBE0F901F90189580916F0022 |
:1027B00085FF8AC08091810086FF17C01092B20009 |
:1027C00081E08093700010928E018091910180933E |
:1027D000960110929101809181008F7B80938100FE |
:1027E00084E680939001B89A6FC01092B100B89BB4 |
:1027F00005C0809191018F5F809391012091B2007B |
:10280000809191019927582F4427420F511D5093D1 |
:1028100095014093940182E08093B1008091810002 |
:1028200080648093810080918F018F3F51F04B5CD9 |
:1028300058404552524028F480918F018F5F809319 |
:102840008F0180919401909195012AE0803F920739 |
:102850003CF0805F9A40909395018093940104C06E |
:10286000109295011092940180919601843688F41B |
:1028700080914D01882369F0809194019091950198 |
:102880002091920130919301820F931F9695879525 |
:1028900017C080919201909193019C0143E0220F17 |
:1028A000331F4A95E1F7281B390B809194019091D1 |
:1028B0009501820F931F23E0969587952A95E1F75E |
:1028C0009093930180939201B59A08951F920F926D |
:1028D0000FB60F9211242F933F934F935F936F93F3 |
:1028E0007F938F939F93AF93BF93EF93FF930E9438 |
:1028F000D613FF91EF91BF91AF919F918F917F91EF |
:102900006F915F914F913F912F910F900FBE0F905C |
:102910001F90189580915B0190915C01893C910515 |
:1029200018F480915B010CC022E0853E920750F4C0 |
:10293000885C90406AE070E00E94F91ACB018853ED |
:10294000992708958EEF90E008958091B70188232C |
:10295000F1F580919A0190919B01892B71F48091FE |
:102960006701882351F480911F0485FD03C088EF1F |
:1029700090E0089589EF90E008958091A001882368 |
:1029800019F084E690E0089580914D01823350F46F |
:1029900080914C01863018F087E290E0089588E23B |
:1029A00090E0089580914B01882359F080910101B6 |
:1029B0008F3F39F4809102018F3F19F48EEF90E040 |
:1029C00008959091010180910201891710F49927CF |
:1029D0000895892F992708951092BC0090910401C1 |
:1029E000990F980F9093BA0085EC8093BC000895DE |
:1029F0008091B9009927887F90708038910529F1DE |
:102A0000813891053CF4009709F411C18036910595 |
:102A100091F019C1883B910509F494C0893B910557 |
:102A20002CF4883A910509F48DC00DC1883F9105B9 |
:102A300009F4FDC008C18091BC0080688093BC008F |
:102A400010929E0110929D0108954091BB008091CB |
:102A5000BC0080688093BC0080919D01282F3327A3 |
:102A60008F5F80939D0121303105B9F1223031050E |
:102A70001CF4232B31F05CC02230310509F448C02E |
:102A800057C0442369F480919C01882349F08091C8 |
:102A9000520190915301892B19F081E090E011C00F |
:102AA0008091520190915301892B81F080919C017A |
:102AB000882361F0842F992753E0880F991F5A9536 |
:102AC000E1F790939B0180939A0104C010929B01BF |
:102AD00010929A0140939C012EC020919A0130914E |
:102AE0009B012115310551F0842F99278770907033 |
:102AF000280F391F30939B0120939A01842F992727 |
:102B000033E0969587953A95E1F780939E0113C03F |
:102B100080919701883078F480919701E82FFF2702 |
:102B2000E25FFB4F40838F5F8093970182E001C09B |
:102B30008EEF80939D0184EF91E0909353018093F9 |
:102B40005201089580919E01282F3327442755274D |
:102B50008F5F80939E01F9012F31310508F05DC030 |
:102B6000EC5CFF4FEE0FFF1F0590F491E02D0994F0 |
:102B70000E948A144FC080915B0190915C0121E01A |
:102B80008E3F9207A8F08EEF45C00E94A514809357 |
:102B9000BB008091BB0099279093E7028093E602E7 |
:102BA00042C080910E0136C08091590190915A0126 |
:102BB000969587952FC0809111012CC08091590165 |
:102BC00029C08091980126C081E024C086E022C0FF |
:102BD0000E948A141FC0809119041CC080911A049D |
:102BE00019C080911B0416C080911C0413C08091F1 |
:102BF0001D0410C080911E040DC080911F040AC0E6 |
:102C00008091200407C08091B70104C01092BB00DE |
:102C10000AC085EA8093BB0006C08FEF8093BB009B |
:102C20008EEF80939E018091BC0080680DC085ED81 |
:102C30008093BC00809198019091990101969093A6 |
:102C400099018093980185EC8093BC0008951F92B0 |
:102C50000F920FB60F9211242F933F934F935F93D0 |
:102C60006F937F938F939F93AF93BF93EF93FF9354 |
:102C70000E94F814FF91EF91BF91AF919F918F91B6 |
:102C80007F916F915F914F913F912F910F900FBE68 |
:102C90000F901F90189580919701883030F08EE04A |
:102CA00094E00E94D3191092970108958BB1877C0C |
:102CB0008BB98AB188638AB985B1877C85B984B1BB |
:102CC000886384B908958AB180638AB984B18063C6 |
:102CD00084B923988091A3018111539808958AB1F2 |
:102CE00088628AB984B1886284B924988091A301EA |
:102CF0008111549808958AB188618AB984B1886134 |
:102D000084B925988091A3018111559808958BB1BC |
:102D10008F7C8BB9539A8091A001882309F45B9A28 |
:102D200008958BB1877D8BB9549A8091A001882337 |
:102D300009F45C9A08958BB1877E8BB9559A80917E |
:102D4000A001882309F45D9A0895FF920F931F93C1 |
:102D5000CF9380913801882309F079C000B605FE31 |
:102D600003C000B600FC06C000B605FC70C000B68B |
:102D700000FC6DC015BCC6B58091A401FC2EF81AEC |
:102D8000809100012F2D3327882331F08091A501F8 |
:102D9000F901E80FF11D03C0F901E20FF31F0091E3 |
:102DA000590110915A010332110510F4E0E9F1E0E4 |
:102DB00040913701242F3327CF01B9010E94F91A1E |
:102DC000CB01663020F4CF5FC7BDC15003C08C0F6C |
:102DD000855087BD85B5836085BD21E0209338018E |
:102DE0001092170480910001882351F0CF0166E012 |
:102DF00070E00E94F91ACB018C0F80939F011FC0D5 |
:102E0000CF0196958795969587958C0F80939F0116 |
:102E1000E135F10538F00A3F110520F4423310F492 |
:102E200020931704F29758F40E94561680911604C6 |
:102E30008B3F28F4809116048F5F80931604809155 |
:102E40009F0180931804C093A401F092A501CF9133 |
:102E50001F910F91FF9008951F920F920FB60F923E |
:102E600011242F933F934F935F936F937F938F938F |
:102E70009F93AF93BF93EF93FF93809100018823BB |
:102E800011F40E94A516FF91EF91BF91AF919F9110 |
:102E90008F917F916F915F914F913F912F910F9003 |
:102EA0000FBE0F901F90189580911704882399F1F9 |
:102EB0008091BC0087FF02C00E94F814B59B02C03D |
:102EC0000E94D6138091180496B5891B87FF17C0FE |
:102ED000809116048A3F28F4809116048B5F8093BA |
:102EE00016040E9456168091F8029091F9020196FC |
:102EF0009093F9028093F80281E090E0089500B683 |
:102F000000FE03C000B605FCD3CF00B600FC03C032 |
:102F100000B605FECDCF80E090E00895CF93C82F96 |
:102F200080914101909142010196909342018093DA |
:102F3000410180911F0480FD4AC08091A201992720 |
:102F40008230910529F1833091052CF4009749F0E6 |
:102F50000197D9F02EC083309105E9F0049711F163 |
:102F600028C00E949B168C2F0E94881281EC8093AF |
:102F70007C0080B78E7F80BF8091A2018F5F80939D |
:102F8000A20100B605FC4DC04AC00E946F165DC08C |
:102F90000E94871653C00E947B168C2F0E94B51189 |
:102FA00081EC6FC00E9491168C2F0E94B51180ECAD |
:102FB00057C00E9463168C2F0E94B51182EC80933B |
:102FC0007C0080B7836080BF1092A20164C08091B2 |
:102FD000A201992782309105B1F1833091052CF43B |
:102FE000009751F0019741F15AC08330910591F15A |
:102FF000049709F440C053C00E9463168C2F0E94AE |
:10300000881281EC80937C0080B7836080BF8091C0 |
:10301000A2018F5F8093A20100B605FE02C00E944C |
:10302000541780911604882309F44BC0809116042C |
:1030300081508093160445C00E9491168C2F0E94E7 |
:10304000B51182EC0DC00E947B168C2F0E94B51129 |
:1030500080EC17C00E9487168C2F0E94B51181EC5E |
:1030600080937C0080B78E7F80BF8091A2018F5FAC |
:103070008093A20121C00E946F168C2F0E94B5116F |
:1030800082EC80937C0080B7836080BF8091A20136 |
:103090008F5F8093A20100B605FE13C010C00E948E |
:1030A0009B168C2F0E94B51180EC80937C0080B71A |
:1030B0008E7F80BF1092A20100B605FC02C00E9464 |
:1030C000541710920801CF9108951F920F920FB6D6 |
:1030D0000F9211242F933F934F935F936F937F939E |
:1030E0008F939F93AF93BF93EF93FF93909138018A |
:1030F000913051F482E08093380180919F0187BD27 |
:10310000892F0E948E1706C080913801823011F4F9 |
:1031100010923801FF91EF91BF91AF919F918F91E4 |
:103120007F916F915F914F913F912F910F900FBEC3 |
:103130000F901F9018951F920F920FB60F921124A7 |
:103140002F933F934F935F936F937F938F939F93AF |
:10315000AF93BF93EF93FF93809154019091A60199 |
:103160008823E9F1292F33279F5F9093A60121300F |
:10317000310579F0223031051CF4232B29F01DC0D4 |
:103180002230310579F019C020913E0130913F0184 |
:1031900006C020913E0130913F012F5F3F4F369591 |
:1031A000279515C020913E0130913F013695279516 |
:1031B00080914001280F311D0AC020913E013091BD |
:1031C0003F012F5F3F4F369527951092A6018091C2 |
:1031D00080008E7F809380008FEF91E01DC09F5F05 |
:1031E0009093A601915029F420913E0130913F0126 |
:1031F0000CC08091400120913E0130913F01882315 |
:1032000011F02F5F3F4F1092A601809180008160E6 |
:10321000809380008FEF93E0821B930B9C018F3192 |
:10322000910520F0AC014E51504002C040E050E00A |
:10323000809181008E7F809381003093890020935C |
:10324000880050938B0040938A00809181008160B8 |
:103250008093810080910001882331F08091A10149 |
:10326000882311F00E94A516FF91EF91BF91AF91B5 |
:103270009F918F917F916F915F914F913F912F918E |
:103280000F900FBE0F901F901895F999FECF92BD29 |
:1032900081BDF89A80B599270895F999FECF1FBA94 |
:1032A00092BD81BD60BD0FB6F894FA9AF99A0FBE2F |
:1032B000089520E030E02617370740F4FC018191A3 |
:1032C000480F2F5F3F4F26173707C8F3842F9927E2 |
:1032D000089590911F0494FF03C01092540103C0FD |
:1032E00081E080935401292F332725FF02C01092DB |
:1032F000A301907C11F484E107C0C901807C907027 |
:103300008038910521F48CE380933701089580344F |
:10331000910511F48AE0F8CF803C910519F487E01B |
:1033200080933701089586E08093190410921A045F |
:103330008FEF80931B049091090190931C0484E605 |
:1033400080931D0480E480931E0484E880931F040E |
:1033500080910A01981710F080931C044AEA67E0F4 |
:1033600070E089E194E00E94591980932004089547 |
:103370008091190499278F709070069799F44AEA02 |
:1033800067E070E089E194E00E945919809320047D |
:103390002DE439E148E050E069E174E080E290E03A |
:1033A0000E94AC1A0895CF93DF93EC014AEA67E0DC |
:1033B00070E00E9459199F81981719F085E090E0FC |
:1033C00060C04881842F99278F709070069719F0FC |
:1033D00084E090E056C0898186FF03C00E94931963 |
:1033E00047C010921A048981282F332720FF03C079 |
:1033F0008A8180931B0421FF03C08B8180931C046E |
:1034000022FF03C08C8180931D0423FF03C08D81A4 |
:1034100080931E0424FF0AC090911F049E708E8129 |
:10342000817F982B90931F044093190425FF08C0B7 |
:1034300090911F04917F8E818E70982B90931F0422 |
:1034400080911D04833718F083E780931D048091D9 |
:103450001C0490910A01891710F090931C044AEA09 |
:1034600067E070E089E194E00E945919809320049C |
:10347000898187FF02C00E94B8190E94691980E003 |
:1034800090E0DF91CF91089525E439E148E050E0E4 |
:1034900060E270E089E194E00E94871A4AEA67E0FE |
:1034A00070E089E194E00E9459194AEA67E070E00F |
:1034B00089E194E00E945919282F809119049927D5 |
:1034C0008F709070069721F480912004821721F06C |
:1034D0000E9493190E94B8190E94691980911C04D6 |
:1034E00090910A01891710F090931C0480911D049B |
:1034F000833718F083E780931D040895FB01DC01F6 |
:1035000002C005900D9241505040D8F70895A0E0B8 |
:10351000B0E0EDE8FAE10C944A1B6C017B01EA0192 |
:10352000590121978FEFCF3FD80789F08601089482 |
:10353000C11CD11CC7010894E11CF11CF5010995BF |
:10354000F80180832197FFEFCF3FDF0779F7EAE0AB |
:10355000CDB7DEB70C94661BA0E0B0E0E2EBFAE179 |
:103560000C944C1B8C017B01EA01690121978FEFC0 |
:10357000CF3FD80771F0F70121917F01C8010F5F9C |
:103580001F4F622FF60109952197FFEFCF3FDF070D |
:1035900091F7E8E0CDB7DEB70C94681B629FD001CD |
:1035A000739FF001829FE00DF11D649FE00DF11DFE |
:1035B000929FF00D839FF00D749FF00D659FF00DAD |
:1035C0009927729FB00DE11DF91F639FB00DE11D9A |
:1035D000F91FBD01CF0111240895991B79E004C0A2 |
:1035E000991F961708F0961B881F7A95C9F7809542 |
:1035F0000895AA1BBB1B51E107C0AA1FBB1FA6173A |
:10360000B70710F0A61BB70B881F991F5A95A9F78B |
:1036100080959095BC01CD01089597FB092E072652 |
:103620000AD077FD04D0E5DF06D000201AF47095AB |
:1036300061957F4F0895F6F7909581959F4F089576 |
:10364000A1E21A2EAA1BBB1BFD010DC0AA1FBB1FA6 |
:10365000EE1FFF1FA217B307E407F50720F0A21B18 |
:10366000B30BE40BF50B661F771F881F991F1A9485 |
:1036700069F760957095809590959B01AC01BD01AF |
:10368000CF0108952F923F924F925F926F927F9257 |
:103690008F929F92AF92BF92CF92DF92EF92FF9262 |
:1036A0000F931F93CF93DF93CDB7DEB7CA1BDB0B0E |
:1036B0000FB6F894DEBF0FBECDBF09942A883988B3 |
:1036C00048885F846E847D848C849B84AA84B984BA |
:1036D000C884DF80EE80FD800C811B81AA81B981C6 |
:1036E000CE0FD11D0FB6F894DEBF0FBECDBFED01DA |
:0436F0000895FFCF6B |
:1036F40001FFFF0101FB0701011E280D000D1E2023 |
:103704004E80000A00F41FFC1F0A4144523A000193 |
:103714000A0D424C3A56000A0D48573A332E3020CF |
:0A3724005265762000FF0014020039 |
:00000001FF |
/BL-Ctrl_V3/V1.06/BL-Ctrl3_MEGA168_V1_06e.hex |
---|
0,0 → 1,884 |
:100000000C9453010C949D010C949D010C949D0142 |
:100010000C949D010C949D010C949D010C949D01E8 |
:100020000C949D010C94C0130C9461140C949D01CC |
:100030000C949D010C9496180C9460180C94C510A7 |
:100040000C94BB100C949D010C94830C0C949D019A |
:100050000C949D010C949D010C949D010C94271708 |
:100060000C9422160C949D01B315C015CC15CF1518 |
:10007000D615D615DC15DF15E115E315B615C01537 |
:10008000CC15D615D9150116E615E915EC15EF15A1 |
:10009000F215F515F815FB15FE15081608160116CC |
:1000A00008160816041643757272656E74202020B7 |
:1000B0005B302E31415D43757272656E74206163F1 |
:1000C000742E2020202043757272656E7420706536 |
:1000D000616B2020202054656D702E202020205B35 |
:1000E000302E31B0435D566F6C74616765202020FF |
:1000F0005B302E31565D72706D2028726177292039 |
:10010000202020202020536574706F696E74202099 |
:100110002020202020204D6178536574706F696E17 |
:1001200074202020202050504D536574706F696EEC |
:10013000742020202020506172616D2E50776D5305 |
:1001400063616C696E67506172616D2E4D617843B9 |
:10015000757272656E74506172616D2E4D61785466 |
:10016000656D702E2020506172616D2E5363616C3D |
:10017000652049202020537461727420436F756E8E |
:10018000742020202020493243204C6F737420209B |
:100190002020202020204932432D424C2D537461D1 |
:1001A000746520202020313620202020202020208F |
:1001B0002020202020203137202020202020202017 |
:1001C0002020202020203138202020202020202006 |
:1001D00020202020202031392020202020202020F5 |
:1001E00020202020202032302020202020202020ED |
:1001F00020202020202032312020202020202020DC |
:100200002020202020204F76657243757272656E23 |
:100210007420636E742049204375746F66662020D5 |
:10022000202020636E7464652D6D61676E6574694E |
:100230007A6520636E74496E76616C696450756C82 |
:1002400073657320202049204C696D69742020203B |
:100250002020636E74204920426961732020202091 |
:10026000202020202020536C6F70652D4D61782058 |
:100270002020202020204572726F72436F64652019 |
:100280002020202020204861726477617265202040 |
:100290002020202020204C696D69742049202020D6 |
:1002A00020202020202011241FBECFEFD4E0DEBF6D |
:1002B000CDBF11E0A0E0B1E0EAEEF6E302C00590A8 |
:1002C0000D92AA33B107D9F714E0AAE3B1E001C057 |
:1002D0001D92A132B107E1F74BEA20EF37E3A7EA1D |
:1002E000B1E09FE0F9012F5F3F4F84918D939150D2 |
:1002F00097FFF8CFE7EAF1E09EE08191482740952B |
:10030000915097FFFACF8091B601481711F0000085 |
:10031000FECF8091AE0180933A018091AF0180932E |
:100320000D018091B00180930A018091B101809309 |
:1003300009010E94B8070C94741B0C940000CF9321 |
:1003400089E191E00E94EF0BC09104018C2F805D48 |
:100350008A3328F081E30E94DC0B8C2F8A5D0E9497 |
:10036000DC0BCF9108956BEF77E0409161015091E4 |
:100370006201A0911C042AE0A29FC0011124E09117 |
:100380005F01F09160018E179F0780F55798BF01BC |
:10039000681B790BCB01880F991F880F991FBA0131 |
:1003A000681B790B80910A01829FC0011124C296BB |
:1003B0008E179F07D8F480915401882319F080E0AC |
:1003C00092E002C080E094E09093890080938800DE |
:1003D0008BB1877C8BB960E070E08091FC029091DA |
:1003E000FD0201969093FD028093FC028091160419 |
:1003F0009927880F991F880F991F2BEF37E0281B2B |
:10040000390B261737070CF4B90180914D018F3F46 |
:1004100071F0282F3327B4E0220F331FBA95E1F78C |
:10042000245D3E4F2617370724F4B90102C010920D |
:100430004C0177FF02C060E070E0641775070CF4B0 |
:10044000AB0180913C0190913D018417950708F420 |
:10045000AC0180918B018823D9F482E080938B01D9 |
:1004600085E0A89FC0011124E817F90748F44C590A |
:100470005F4F50933D0140933C014456504008C0AB |
:10048000445F5F4F50933D0140933C014C505040BE |
:10049000F894CA0157FD01969595879590933F0171 |
:1004A00080933E01880F991F481B590B40934001D0 |
:1004B00078947093D7026093D6020895CF93DF9318 |
:1004C000E0910F01F091100181E2E330F8071CF098 |
:1004D000C0E0D0E040C089E1E13FF8074CF0CF0137 |
:1004E00066E070E00E94081BCB01C8E7D5E031C090 |
:1004F00080E1E33CF8075CF0CF01F7FD0796F3E0FD |
:1005000095958795FA95E1F7CAE6D4E022C089E08F |
:10051000E938F8074CF0CF0166E070E00E94081B54 |
:10052000CB01CEE1D5E015C085E0E932F80754F003 |
:10053000CF01F7FD03969595879595958795CDEE17 |
:10054000D5E007C0CF01F7FD019695958795CAE3E1 |
:10055000D7E0C81BD90BCE016AE070E00E94081BEF |
:1005600060930E01D093CF02C093CE026837D0F5CE |
:1005700020910B0130910C012C9FC0012D9F900DFB |
:100580003C9F900D1124E92FFF27C90153E0880FEC |
:10059000991F5A95E1F7820F931F820F931F67E00F |
:1005A00070E00E94081BE61BF70B80915B019091A5 |
:1005B0005C0143E0969587954A95E1F78E0F9F1F62 |
:1005C0006AE070E00E94081BFB01C90163E070E073 |
:1005D0000E94081B6E177F070CF4FB0180910B0132 |
:1005E0008E1B02C080910B0180930D0180915B01F5 |
:1005F00090915C01EAEFF0E0E81BF90BE93CF105B2 |
:1006000014F0E8ECF0E08FEFEE3CF80714F4EEECB9 |
:10061000FFEF90911D048AE0989FC00111248E0F76 |
:100620009F1FFE01E81BF90B1E161F067CF4EE0F40 |
:10063000FF1FCDEFD0E0CE1BDF0BC230D10514F48D |
:10064000C1E0D0E0C0930201579803C08FEF8093C0 |
:100650000201DF91CF91089580915B0190915C013F |
:100660009093C9028093C80280915F0190916001CC |
:100670002091130130911401821B930B9093CB02B4 |
:100680008093CA0280911101909112019093D1023E |
:100690008093D0028091590190915A019093D30296 |
:1006A0008093D20280916101909162019093D50272 |
:1006B0008093D40280919201909193019093D902FA |
:1006C0008093D80280911B0499279093DB0280933A |
:1006D000DA0280911C0499279093DD028093DC025A |
:1006E00080911D0499279093DF028093DE02809110 |
:1006F0001E0499279093E1028093E00280915201B9 |
:1007000090915301892B39F40E94A014992790935A |
:10071000E7028093E6028091160499279093FB02EA |
:100720008093FA0280913C0190913D0190930103E6 |
:10073000809300038091B7019927909303038093DE |
:10074000020380910B0190910C019093050380931B |
:100750000403809101019927909307038093060376 |
:10076000089560E070E0F8942091520130915301B7 |
:10077000E0919A01F0919B01789410923B01909145 |
:100780004D01992319F080E180933B01211531053A |
:1007900059F180913B01816080933B01BF019A3008 |
:1007A00030F487E0E83FF80710F060E070E0579A17 |
:1007B00081E02C3C380730F480913B0184608093C9 |
:1007C0003B010AC0309741F01092930110929201C0 |
:1007D0001092030110928F01309751F080913B01EC |
:1007E000826080933B0104C030939B0120939A0167 |
:1007F00081E0223C380758F080914B0180FF02C015 |
:10080000309729F080918F0188230CF04AC04091E5 |
:100810005001509151014115510579F080916701C6 |
:10082000682F7727B3E0660F771FBA95E1F710922C |
:100830000301579A10928F0134C080918F0187FF76 |
:1008400025C081E08093030180913B018860809303 |
:100850003B01209192013091930189E0253C3807BA |
:1008600008F09A0187E02C3F380710F02BEF37E0B3 |
:100870002333310540F4992331F480914E018823CC |
:1008800011F4BA0101C0B901579A0BC0232B09F426 |
:100890005798BF011092670180916F00806280932A |
:1008A0006F0020911B04809102018F3F19F0821785 |
:1008B00008F4282F809101018F3F19F0821708F466 |
:1008C000282F2F3FC1F0CB01AA27BB27332744276E |
:1008D0005527BC01CD010E94C91A97FF04C0615081 |
:1008E0007F4F8F4F9F4FBB2797FDBA95A92F982F0A |
:1008F000872FBC0157986115710511F0605B7F4F20 |
:1009000087E06C3F780710F06BEF77E08091A001F3 |
:10091000882311F061E070E0CB0108950E94511628 |
:100920008091810081608093810080916F0081605F |
:1009300080936F00E0911501F091160180E0099518 |
:1009400080915401882371F08091800082608093AF |
:1009500080008FEF91E0909389008093880084EF6E |
:1009600091E00DC0809180008360809380008FEFC4 |
:1009700093E0909389008093880088EE93E09093B1 |
:100980008B0080938A00089596B5980F86B5891BD1 |
:1009900087FDFCCF0895CF93C82F7894C150CF3FE7 |
:1009A00059F0579888EC90E00E948711579A8AEF87 |
:1009B00090E00E948711F2CF84EF91E00E948711AE |
:1009C000CF9108951F93CF93DF93162FEC012197BA |
:1009D0008FEFCF3FD807A9F0812F0E948413809119 |
:1009E0001301909114018A5B9F4F20915F01309118 |
:1009F00060018217930758F70E94511681E090E03A |
:100A000002C080E090E0DF91CF911F910895FF92A6 |
:100A10000F931F93CF93DF9300E0579A80910401C7 |
:100A2000F82EFA9423E0F222F394282F33278CE255 |
:100A300091E0289FE001299FD00D389FD00D11240F |
:100A400080919A0190919B01892B19F4CE010E940B |
:100A5000871180B7877F80BF0093A101F89488E158 |
:100A60000FB6F89480936000109260000FBE0E9451 |
:100A7000511660E086E00E944A1310925E011092C7 |
:100A80005D01C9E0D0E081E00E94B0112197D7FF5D |
:100A9000FACF80915D0190915E0190931401809353 |
:100AA0001301C39710F000E16DC061E083E00E9484 |
:100AB0004A134E978959934008F002E161E087E0BC |
:100AC0000E944A1380559040815D924008F001E1F8 |
:100AD0000E94511619E015B98AE00E94C40461E031 |
:100AE00080E00E944A13883C910508F404E00E94CB |
:100AF00051160E9451161BB98AE00E94C40461E09D |
:100B000080E00E944A134A9708F007E00E945116BD |
:100B1000C1E1C5B98AE00E94C40461E0862F0E9449 |
:100B20004A13883C910508F405E00E9451160E9482 |
:100B30005116CBB98AE00E94C40461E0862F0E945E |
:100B40004A134A9708F008E00E945116C1E2C5B95D |
:100B50008AE00E94C40461E082E00E944A13883C5B |
:100B6000910508F406E00E9451160E945116CBB977 |
:100B70008AE00E94C40461E0862F0E944A134A97CB |
:100B800008F0012F0E94511680919A0190919B01CB |
:100B9000892B09F0F5C08091190484FDF1C0002370 |
:100BA00061F0802F8F5B0E94DC0BDFC00CE08DE4D6 |
:100BB0000E94DC0B0E945116D8C08BB1877C8BB988 |
:100BC0008AB188638AB985B1886385B984B188633D |
:100BD00084B961E08AE090E00E94E2048091130110 |
:100BE000909114010A9620915F0130916001821763 |
:100BF000930708F40BE085B1877C85B984B18863DD |
:100C000084B98BB188638BB98AB188638AB961E092 |
:100C10008AE090E00E94E204809113019091140117 |
:100C20000A9620915F01309160018217930708F4C2 |
:100C30000AE08AEB93E090938900809388008CE926 |
:100C400093E090938B0080938A0081E08093A301CE |
:100C500010E061E088E090E00E94E20489E6F89EFE |
:100C6000C0011124C0E0D0E08052934009F441C09B |
:100C7000812F99278130910571F0823091051CF404 |
:100C8000892B21F011C0029759F00EC00E945E1608 |
:100C90000E948C1609C00E946A160E94961604C013 |
:100CA0000E9476160E94821661E082E090E00E9427 |
:100CB000E204882351F0012F0F5F812F8F5C0E9487 |
:100CC000DC0B0E94511614E614C00E94511661E01C |
:100CD0008F2D99270E94E204219689E6F89E9001C3 |
:100CE000112480E293E0821B930BC817D90708F404 |
:100CF000BFCF1F5F133008F4ACCF0E9451168CE0B9 |
:100D000092E090938900809388008EEE91E090931A |
:100D10008B0080938A0061E08AE090E00E94E20408 |
:100D2000002319F51092600110925F01C0E0D0E03D |
:100D300084B1877C84B98AB1877C8AB961E081E01B |
:100D400090E00E94E20480911301909114010A96B0 |
:100D500020915F01309160018217930708F426CF3C |
:100D6000219684E0C030D80718F30E9451160093F2 |
:100D7000B701002321F0802F0E94CB04FCCF789490 |
:100D8000DF91CF911F910F91FF9008956F927F9205 |
:100D90008F929F92AF92BF92CF92DF92EF92FF928B |
:100DA0000F931F938C0132E3632E712C812C912CB5 |
:100DB00080B7877F80BF1092A101E0911701F09169 |
:100DC00018018CEF09950E94511610926001109243 |
:100DD0005F01C8019695879590933F0180933E01EE |
:100DE0001092380180E00E94891780E00E948917E4 |
:100DF00080911604853198F18EE591E00E946D1185 |
:100E000090934401809343010CC085B1877C85B9E0 |
:100E100084B1886384B98BB188638BB98AB18863E4 |
:100E20008AB980914301909144010E9478118823EE |
:100E300061F30E94511680E00E94891788EC90E0CF |
:100E400010C00E9451168FE08093B70181E00E948C |
:100E5000CB0480E090E07FC081E090E07CC08EE138 |
:100E600090E00E946D11909344018093430109C06A |
:100E70000E94841380915F019091600189379105F0 |
:100E800000F780914301909144010E9478118823DA |
:100E900079F380B7877F80BF1092A10110933F0143 |
:100EA00000933E011092420110924101EE24FF2472 |
:100EB00087016401530183E0AA0CBB1CCC1CDD1C20 |
:100EC0008A95D1F7D601C501860D971DA81DB91DBC |
:100ED000860D971DA81DB91DE816F9060A071B0700 |
:100EE00048F485E00E94C4040894E11CF11C011D33 |
:100EF000111DE8CF809113019091140188589F4FE4 |
:100F000020915F01309160018217930708F499CF17 |
:100F1000C401B3012FE030E040E050E00E941B1B11 |
:100F2000621A730A840A950A089461087108810894 |
:100F300091088EE1681671048104910408F48CCF45 |
:100F40008091410190914201892B09F0ABCF80E063 |
:100F50000E948917A7CF1F910F91FF90EF90DF900C |
:100F6000CF90BF90AF909F908F907F906F9008959B |
:100F7000CFEFD4E0DEBFCDBF17B880E188B988EBF2 |
:100F80008AB987E08BB91EE014B981E085B957981A |
:100F900083E00E94C40415BC80EE8ABD18BD0E9487 |
:100FA000511680916E00826080936E0080916E0079 |
:100FB000846080936E00789480910D0199279093BE |
:100FC0000C0180930B010E94A8130E943F1A80918C |
:100FD000C100877F8093C10052985A9AE09117010F |
:100FE000F09118018CEF099589E090E00E9487113B |
:100FF0008091C100877F8093C1008091B40082FFFF |
:1010000006C0499B02C081E007C083E005C0499B40 |
:1010100002C082E001C084E0809304010E948E043B |
:101020008091B40082FF13C05A98529A8AE090E0EF |
:101030000E948711F89452985A9AE0911701F09102 |
:1010400018018CEF099578944A9919C013C0529AE7 |
:101050005A9A8AE090E00E948711F89452985A9820 |
:101060005A9AE0911701F09118018CEF0995789444 |
:101070004A9B05C0809104018C5F809304015298C3 |
:10108000529A8091C10088608093C1000E94080C30 |
:1010900080E50E94E7140E949F1180E00E94841363 |
:1010A00084EF91E00E946D1190934401809343017D |
:1010B00006C080919A0190919B01892B41F4809107 |
:1010C0004301909144010E947811882391F310927A |
:1010D0006201109261010E94B30181E080937C0063 |
:1010E000109293011092920185B910921A041092F5 |
:1010F00054010E9407050E9464190E94E80B0E9497 |
:101100009F010E94080C8091C10080688093C100FB |
:101110000E9451161092A3018BB5992790930C0150 |
:1011200080930B0110928A01109289010E94B103F1 |
:101130009093620180936101892B31F40E94B10385 |
:10114000909362018093610180914C01863008F098 |
:1011500057988091610190916201892B09F047C0F5 |
:1011600010924E0110924D011092A3010E9451164F |
:1011700080914501909146010E947811882309F4DD |
:1011800058C010924C011092B70180B7877F80BF82 |
:101190001092A10181E080930701109216048091C2 |
:1011A00013019091140120915F0130916001281783 |
:1011B000390710F4019704C08217930728F40196A9 |
:1011C000909314018093130182E390E00E946D11CB |
:1011D00090934601809345018091130190911401F1 |
:1011E0009093FF028093FE0212BC11BC22C080913A |
:1011F0000701882369F42091590130915A01243064 |
:10120000310550F480914D01853630F08A3F20F44D |
:1012100081E080934E0105C02930310510F0109215 |
:101220004E018CED95E00E946D11909346018093E4 |
:1012300045012091A0012223A1F4809141019091C8 |
:101240004201892B71F080911604883C50F4209360 |
:10125000070186E990E00E946D119093440180930C |
:10126000430180910701882321F0109262011092BE |
:1012700061010E94B30180910801815080930801AF |
:10128000809108018F3F09F051CF809161019091C9 |
:101290006201892B11F48AE001C084E68093080181 |
:1012A0000E9446168091650190916601892B21F07C |
:1012B0000E94730F0E946D0E8091490190914A0126 |
:1012C0000E947811882309F433C182E390E00E94E0 |
:1012D0006D1190934A01809349018091A001882368 |
:1012E00091F08091A00181508093A0018091A00194 |
:1012F000882349F48091F4029091F502019690932D |
:10130000F5028093F4028091570190915801209149 |
:10131000550130915601B9010E94F41A80915F0184 |
:1013200090916001909358018093570181E090E083 |
:10133000909356018093550180911301909114016F |
:101340006817790798F0681B790B80911E0499271C |
:10135000689F9001699F300D789F300D1124B9016D |
:1013600016E0769567951A95E1F702C060E070E0A7 |
:1013700080915B0190915C018617970710F40196AC |
:1013800004C06817790728F4019790935C01809353 |
:101390005B0180915B0190915C018B30910588F03D |
:1013A000681B790B77FF02C0695F7F4FC3E07595BB |
:1013B0006795CA95E1F7860F971F90935C0180931C |
:1013C0005B01E0915B01F0915C01CF016AE070E0AC |
:1013D0000E94F41A40911C04842F992786179707BE |
:1013E000F0F48AE0489FC00111249F01281B390BAB |
:1013F000C901880F991F820F931F2DEF30E0281B22 |
:10140000390B2931310514F429E130E02F3F310542 |
:1014100019F014F02FEF30E02093010103C08FEF9B |
:1014200080930101F8946091410170914201AB01F8 |
:10143000569547952091590130915A012417350747 |
:1014400028F450935A014093590118C0C901880FDC |
:10145000991F820F931F840F951F969587959695D8 |
:10146000879590935A0180935901672B39F400971F |
:1014700029F0019790935A018093590110924201EB |
:101480001092410178940E945E02809165019091D2 |
:101490006601009731F00197909366018093650192 |
:1014A00002C010924B018091A3018823B1F4809176 |
:1014B0004D01813590F08091110190911201853696 |
:1014C000910558F08091A001882339F480911F0480 |
:1014D00085FD03C081E08093A30180914D018E3191 |
:1014E00020F481E08093000123C0209159013091C4 |
:1014F0005A012734310548F480915B0190915C01D9 |
:10150000409740F02933310528F0F89410920001FB |
:1015100078940EC02733310558F480915F01909183 |
:1015200060010F9728F4F89481E08093000178948B |
:1015300080914701909148010E9478118823F1F031 |
:1015400085E090E00E946D119093480180934701DF |
:101550008091590190915A01892B39F080914D0168 |
:101560008F3F19F08F5F80934D0180910701882391 |
:1015700029F0F89480E00E948312789480914301CE |
:10158000909144010E947811882329F480914E01A2 |
:10159000882309F4CBCD8091590190915A014E973F |
:1015A00008F0C4CD84E690E00E946D119093440150 |
:1015B0008093430110924D0151E0F52EF092070106 |
:1015C0001092A30180B7877F80BF1092A1010E9473 |
:1015D000B103892B09F4AACD80910F0190911001DC |
:1015E0008958994008F4A2CD10925E0110925D01D5 |
:1015F00010924E0180911F0499278E70907004E123 |
:1016000010E0809FE001819FD00D909FD00D1124AC |
:10161000A096F09200011092A301C0905001D090CA |
:1016200051018091E2029091E30201969093E302CE |
:101630008093E202CE010E94C606882309F476CD8B |
:10164000D0925101C092500110923F0110923E0180 |
:101650008091A101882319F480B7886180BFF0923E |
:10166000A1011092070110921604109242011092EB |
:101670004101C8010E946D11909344018093430180 |
:1016800080914301909144010E9478118823C1F315 |
:1016900010925A01109259018AE090E090933F0114 |
:1016A00080933E018C179D07E0F580913E0190915B |
:1016B0003F010A9690933F0180933E0184E190E0C0 |
:1016C0000E946D11909344018093430113C0809157 |
:1016D0005F01909160018937910540F00E94511699 |
:1016E0008FE08093B70181E00E94CB040E94730FCA |
:1016F0000E946D0E80914301909144010E947811E7 |
:10170000882329F38091410190914201892B49F06E |
:10171000109242011092410180913E0190913F014F |
:10172000C1CF80914C01882321F0813039F4CC0F56 |
:10173000DD1FD0933F01C0933E0109C0CE01880F49 |
:10174000991F8C0F9D1F90933F0180933E0184E66B |
:1017500090E00E946D11909344018093430104C076 |
:101760000E94730F0E946D0E80914301909144017D |
:101770000E9478118823A1F380914C018F5F8093A0 |
:101780004C01D0925101C092500182E390E00E943E |
:101790006D11909348018093470188EC90E00E947E |
:1017A0006D1190934401809343011092F9021092BD |
:1017B000F8021092A001BACC982F8091C10083FF4B |
:1017C00006C08091C00085FFFCCF9093C6000895AD |
:1017D0008DE00E94DC0B8AE00E94DC0B08951F93D1 |
:1017E000CF93DF93EC0110E08881882369F0FE013C |
:1017F000E10FF11D1F5F80810E94DC0BFE01E10FF4 |
:10180000F11D8081882399F7DF91CF911F91089571 |
:101810000F931F930FB788E18093C100109270015E |
:1018200010926E0110926D0110926C0181E0809314 |
:101830001F018093BC0286E08093BD0284E0809308 |
:10184000C0028BE08093BE021092BF0280E291E062 |
:101850000E94EF0B81E30E94DC0B8EE20E94DC0B06 |
:1018600080E30E94DC0B86E30E94DC0B85E60E948D |
:10187000DC0B87E291E00E94EF0B1AE080913A01C5 |
:10188000612F0E94E81A805D0E94DC0B80913A0172 |
:10189000612F0E94E81A892F805D0E94DC0B0FBF28 |
:1018A00010926B011F910F9108958091C00086FFE7 |
:1018B00029C080911F01882309F5809171019091C1 |
:1018C000720101969093720180937101FC01E85FAF |
:1018D000FC4FE081ED3019F08A3F910539F4109208 |
:1018E00072011092710181E080931F018091C0000C |
:1018F00081608093C000E093C60008951092720149 |
:101900001092710108951F920F920FB60F92112439 |
:101910002F933F934F935F938F939F93AF93BF9377 |
:10192000CF93DF93EF93FF935091C60080917001A6 |
:10193000882309F065C040916B01442371F4533250 |
:1019400079F45093B80181E080936B0183E290E0D9 |
:10195000909374018093730153C04A3F08F04CC0C8 |
:101960002091730130917401E42FFF275D3069F0FD |
:10197000E854FE4F50834F5F40936B01250F311D9C |
:1019800030937401209373013BC0DF01A854BE4F14 |
:10199000FD0132978081281B3109ED012197888153 |
:1019A000281B3109C9019F709093740180937301C2 |
:1019B000689415F8969587951694E1F7982F935C9F |
:1019C0002F733070235C8081981789F488812817E1 |
:1019D00071F480ED97E090936601809365015C93CC |
:1019E0004F5F40936F0181E08093700102C01092BD |
:1019F000700110926B0104C080936B0180937001A1 |
:101A0000FF91EF91DF91CF91BF91AF919F918F9116 |
:101A10005F914F913F912F910F900FBE0F901F90AC |
:101A20001895A0E0B0E09D01482F5527A417B507F1 |
:101A300048F4E8E0F3E08191280F311D1196A417D6 |
:101A4000B507C8F33F70FD01E85FFC4FC90176E0C0 |
:101A5000969587957A95E1F7835C80831196FD01D1 |
:101A6000E85FFC4F2F733070822F835C8083A75F09 |
:101A7000BC4F8DE08C9310921F01809108038093DE |
:101A8000C6000895CF92DF92EF92FF920F931F93BB |
:101A9000CF93DF93CDB7DEB72B859C850D85DD24F5 |
:101AA00083E2809308039F599093090320930A03CC |
:101AB00033E0C32E002309F49AC0EE84FF84BE01F4 |
:101AC0006E5E7F4FA889B9890150109709F48FC0C5 |
:101AD0001097B9F0F701ED0DF11DD3949081119796 |
:101AE00091F4002349F1FB016E5F7F4FDB01E08041 |
:101AF000F1806E5F7F4F0D90BC91A02DDD240150D1 |
:101B000002C090E019C01097B9F0F701ED0DF11D7A |
:101B1000D3944081119791F4002341F1FB016E5F52 |
:101B20007F4FDB01E080F1806E5F7F4F0D90BC91B5 |
:101B3000A02DDD24015002C040E018C01097B1F084 |
:101B4000F701ED0DF11DD3941081119781F400235D |
:101B500071F0FB013296DB01ED90FC90BF016E5FEE |
:101B60007F4FA081B181DD24015001C010E0EC2D38 |
:101B7000FF27E85FFC4F892F86958695835C8083DD |
:101B8000C394EC2DFF27E85FFC4F892F99278370C2 |
:101B9000907024E0880F991F2A95E1F755279A0144 |
:101BA00094E0369527959A95E1F7822B835C8083A4 |
:101BB000C394EC2DFF27E85FFC4F4F705070440F2B |
:101BC000551F440F551F812F992726E0969587951D |
:101BD0002A95E1F7842B835C8083C394EC2DFF2747 |
:101BE000E85FFC4F1F73135C1083C3946ECF8C2D82 |
:101BF0000E94110DDF91CF911F910F91FF90EF90F7 |
:101C0000DF90CF900895A3E07A2F40916F01465066 |
:101C1000442309F458C0E72FFF27E854FE4F808182 |
:101C20008D537F5FE72FFF27E854FE4F20812D5310 |
:101C30007F5FE72FFF27E854FE4F30813D537F5FE2 |
:101C4000E72FFF27E854FE4F60816D537F5F992790 |
:101C5000880F991F880F991F522F52955F70582B2C |
:101C6000822F99278F709070F4E0880F991FFA9552 |
:101C7000E1F7232F26952695282B832F992783700C |
:101C80009070E6E0880F991FEA95E1F7682B4150C4 |
:101C90004F3FC9F0EA2FFF27E854FE4F5083AF5F54 |
:101CA00041504F3F81F0EA2FFF27E854FE4F208339 |
:101CB000AF5F41504F3F39F0EA2FFF27E854FE4F06 |
:101CC0006083AF5FA5CF8BEB91E090936E01809323 |
:101CD0006D01A350A0936C01089580917001882339 |
:101CE00009F400C10E94030E8091B9018B3668F09F |
:101CF0008091B901282F33278091040199278559B4 |
:101D00009F4F2817390709F0E5C08091BA0199273C |
:101D10008436910509F4B5C0853691059CF4823569 |
:101D2000910519F18335910544F48132910509F447 |
:101D30006AC08B9709F4C7C0CDC08136910509F4FC |
:101D4000B5C0C8C085379105E9F0863791052CF4F8 |
:101D50008437910509F444C0BDC08637910509F464 |
:101D6000A1C08737910521F1B5C088E190E02CE052 |
:101D70000FB6F894A895809360000FBE2093600082 |
:101D8000F894FFCFE0916D01F0916E019081809108 |
:101D90000401981719F08081882319F410926801C2 |
:101DA00003C082E08093680180916A01886088C0E6 |
:101DB000E0916D01F0916E018081882329F090817E |
:101DC00080910401981729F4CF0101960E94CE1941 |
:101DD00001C082E08093680180916A01806170C0D7 |
:101DE00080910401E0916D01F0916E01E80FF11D09 |
:101DF000319780818093670180E293E09093510155 |
:101E00008093500167C084EF91E0909351018093DB |
:101E1000500120910401A0916D01B0916E01FD016E |
:101E2000E20FF11D8081809367018C9187FD06C0D0 |
:101E300080910701882311F010926701809167015A |
:101E4000882369F080913B0182FD03C08C91882337 |
:101E50001CF481E080934B0180914B018260809360 |
:101E60004B01E0916D01F0916E01808199278F7097 |
:101E7000907033278217930769F580916A01806219 |
:101E80001FC0E0916D01F0916E0190818AE0989FF2 |
:101E9000C0011124909364018093630180916A01D1 |
:101EA00082600EC080916A0181600AC0E0916D017C |
:101EB000F0916E0180818093690180916A01846054 |
:101EC00080936A0107C0E0916D01F0916E018081FD |
:101ED0008093C40010926E0110926D0110926C01FB |
:101EE000109270010895CF93DF93CDB7DEB721979D |
:101EF0000FB6F894DEBF0FBECDBF80911F018823BF |
:101F000019F40E94550C2EC180916A01992785FF12 |
:101F100037C080913B01809375010E9485148093A6 |
:101F200076010E94A0148093770180910E01809326 |
:101F3000780180911101909112018135910530F065 |
:101F40008091110180558093790104C01092120193 |
:101F50001092110185E090E09F938F9385E791E0C7 |
:101F60009F938F9381E08F9380910401865F8F937D |
:101F70008FE38F930E94420D80916A018F7D70C024 |
:101F800082FF30C080916901992724E0880F991F52 |
:101F90002A95E1F78A559F4F40E150E0BC0185E763 |
:101FA00091E00E94791A80E190E09F938F9385E7FA |
:101FB00091E09F938F9381E090E09F938F9389E6C8 |
:101FC00091E09F938F9382E08F9385E08F9381E4DC |
:101FD0008F930E94420D8FEF8093690180916A0177 |
:101FE0008B7FB6C08091630190916401892B41F091 |
:101FF00080910C0490910D040E947811882329F49B |
:1020000080916A01992781FF31C00E942C03809141 |
:102010005D0190915E019093CD028093CC0210926D |
:102020005E0110925D0182E490E09F938F9386ECB5 |
:1020300092E09F938F9381E08F9385E08F9384E468 |
:102040008F930E94420D80916301909164010E94E0 |
:102050006D1190930D0480930C0480916A018D7F23 |
:1020600080936A018DB79EB7079677C080FF14C032 |
:102070008AE090E09F938F938CEB92E09F938F93F5 |
:1020800081E08F9385E08F9386E58F930E94420DC8 |
:1020900080916A018E7FE4CF83FF36C08091680112 |
:1020A000882319F481E0898301C0198288E090E0D7 |
:1020B0009F938F9389E194E09F938F9321E030E089 |
:1020C0003F932F9384E091E09F938F933F932F93BF |
:1020D00088E691E09F938F933F932F93CE01820FD9 |
:1020E000931F9F938F9384E08F9385E08F9385E573 |
:1020F0008F930E94420D80916A01877F80936A01CD |
:102100008DB79EB7439629C084FF2CC0809168018B |
:10211000882319F481E0898301C0198221E030E02D |
:102120003F932F9388E691E09F938F933F932F9354 |
:10213000CE01820F931F9F938F9382E08F9385E050 |
:102140008F9387E58F930E94420D80916A018F7E65 |
:1021500080936A018DB79EB70B960FB6F8949EBF19 |
:102160000FBE8DBF21960FB6F894DEBF0FBECDBF58 |
:10217000DF91CF9108951F920F920FB60F92112405 |
:102180000F900FBE0F901F9018951F920F920FB6D1 |
:102190000F9211242F933F934F935F936F937F93ED |
:1021A0008F939F93AF93BF93EF93FF9388B584561C |
:1021B00088BD80918C01815080938C01882309F027 |
:1021C0007BC082E080938C018091890190918A018B |
:1021D000019690938A018093890188E190E02BE039 |
:1021E0000FB6F894A895809360000FBE209360000E |
:1021F0008091520190915301009719F101979093AA |
:1022000053018093520121E0883B920739F021E08D |
:102210008C32920719F08436910599F480E50E947A |
:10222000E7148091520190915301885B914049F4E9 |
:102230008091E4029091E50201969093E5028093EB |
:10224000E40280919001882331F0809190018150C7 |
:102250008093900102C080938F01809150019091F2 |
:102260005101009729F001979093510180935001FB |
:1022700080918B01882329F080918B01815080937C |
:102280008B01809135019091360101979093360131 |
:10229000809335018F5F9F4F79F488E795E09093A5 |
:1022A0003601809335018091520190915301892B21 |
:1022B00019F480E50E94E714FF91EF91BF91AF916F |
:1022C0009F918F917F916F915F914F913F912F914E |
:1022D0000F900FBE0F901F9018959C01F89480915D |
:1022E000890190918A017894820F931F0197089534 |
:1022F000F8942091890130918A01821B930B892FD8 |
:10230000992780787894992787FD90950895CF93A1 |
:10231000DF930E946D11EC010AC0809165019091DC |
:102320006601892B21F00E94730F0E946D0ECE0171 |
:102330000E947811882389F3DF91CF91089587EA6D |
:1023400080937A0087EC80937C0080917A0080648F |
:1023500080937A0080917B00806480937B00089555 |
:10236000CF93DF93C82F96EC90937C0080B7806862 |
:1023700080BF84ED80937A0080917A0080618093A1 |
:102380007A0090937C0080917A00806480937A0038 |
:10239000809157019091580180569A4EB8F48091DF |
:1023A00057019091580120915F0130916001820F97 |
:1023B000931F9093580180935701809155019091FC |
:1023C00056010196909356018093550180917A00B1 |
:1023D00084FD0DC0CC23D1F38091BC0087FF02C0E7 |
:1023E0000E94F314B59BF2CF0E94D113EFCFC0919E |
:1023F0007800D091790080910D019927C89F9001B4 |
:10240000C99F300DD89F300D112445E03695279592 |
:102410004A95E1F73093600120935F0180915D015F |
:1024200090915E018217930720F430935E01209310 |
:102430005D0132E0C935D30708F454C00E9451163B |
:1024400080915401882319F080E092E002C080E07E |
:1024500094E0909389008093880010923F0110923D |
:102460003E01109240011092A30180913C01909195 |
:102470003D0120916101309162012817390720F454 |
:1024800030933D0120933C018AE080938B01809141 |
:10249000F6029091F70201969093F7028093F6026C |
:1024A00083E0C73BD80750F083E08093A001809180 |
:1024B0004D01833318F082E380934D0180910D012B |
:1024C0009927C89F9001C99F300DD89F300D1124C6 |
:1024D000C90125E0969587952A95E1F790936001CB |
:1024E00080935F0184E080937A0080917B00806418 |
:1024F00080937B0080B78F7780BF80B7806180BF7B |
:10250000DF91CF9108951F93CF93182F80914F01A2 |
:10251000815080934F018F3F09F0B6C08EE18093C8 |
:102520004F0180918D01815080938D018F3F09F083 |
:1025300058C0C0917C0097EC90937C0080B7806875 |
:1025400080BF84ED80937A0080917A0080618093CF |
:102550007A0090937C0080917A00806480937A0066 |
:1025600080917A0084FD0DC01123D1F38091BC00CD |
:1025700087FF02C00E94F314B59BF2CF0E94D113D3 |
:10258000EFCFC0937C002091780030917900C90191 |
:10259000E4E0880F991FEA95E1F7820F931F67E146 |
:1025A00070E00E94F41A8091110190911201860F3F |
:1025B000971F96958795909312018093110184E05F |
:1025C00080937A0080917B00806480937B0080B749 |
:1025D0008F7780BF80B7806180BF83E080938D015B |
:1025E00056C0C0917C0093EC90937C0080B78068CB |
:1025F00080BF84ED80937A0080917A00806180931F |
:102600007A0090937C0080917A00806480937A00B5 |
:1026100080917A0084FD0DC01123D1F38091BC001C |
:1026200087FF02C00E94F314B59BF2CF0E94D11322 |
:10263000EFCFC0937C0080917800909179009C014D |
:1026400063E0220F331F6A95E1F7280F391F280F27 |
:10265000391F80910F0190911001820F931F969561 |
:1026600087959093100180930F0184E080937A0006 |
:1026700080917B00806480937B0080B78F7780BFE0 |
:1026800080B7806180BF03C0812F0E94B011CF91BD |
:102690001F9108951F93CF93C62F10917C00982F00 |
:1026A000906C90937C0080B7806880BF86ED8093AB |
:1026B0007A0080917A00806180937A0090937C0008 |
:1026C00080917A00806480937A0080917A0084FD02 |
:1026D00009C0CC23D1F38091BC0087FFF6CF0E94C4 |
:1026E000F314F3CF10937C0087E080937A0080B7D7 |
:1026F0008F7780BF80B7806180BF80917800909194 |
:102700007900CF911F910895682F86E00E944A13A7 |
:1027100020910D013327829FA001839F500D929F2E |
:10272000500D11249A01F5E036952795FA95E1F7B9 |
:102730003093600120935F0180915D0190915E0173 |
:102740008217930720F430935E0120935D01089572 |
:1027500080918100806C80938100809181008064F1 |
:102760008093810080916F00806280936F008091E0 |
:102770006F00816080936F0082E08093B1000895C4 |
:102780001F920F920FB60F9211248F938091910197 |
:102790008F5F809391018F910F900FBE0F901F90CC |
:1027A000189580916F0085FF8AC08091810086FF17 |
:1027B00017C01092B20081E08093700010928E01D9 |
:1027C00080919101809396011092910180918100F6 |
:1027D0008F7B8093810084E680939001B89A6FC0CC |
:1027E0001092B100B89B05C0809191018F5F8093DA |
:1027F00091012091B200809191019927582F44278F |
:10280000420F511D509395014093940182E08093B3 |
:10281000B1008091810080648093810080918F015C |
:102820008F3F51F04B5C58404552524028F4809104 |
:102830008F018F5F80938F0180919401909195011A |
:102840002AE0803F92073CF0805F9A409093950188 |
:102850008093940104C0109295011092940180918C |
:102860009601843688F480914D01882369F0809127 |
:102870009401909195012091920130919301820FE2 |
:10288000931F9695879517C080919201909193011F |
:102890009C0143E0220F331F4A95E1F7281B390BB7 |
:1028A0008091940190919501820F931F23E096955A |
:1028B00087952A95E1F79093930180939201B59AB9 |
:1028C00008951F920F920FB60F9211242F933F93EA |
:1028D0004F935F936F937F938F939F93AF93BF9328 |
:1028E000EF93FF930E94D113FF91EF91BF91AF91AE |
:1028F0009F918F917F916F915F914F913F912F9118 |
:102900000F900FBE0F901F90189580915B019091D2 |
:102910005C01893C910518F480915B010CC022E0B8 |
:10292000853E920750F4885C90406AE070E00E9417 |
:10293000F41ACB018853992708958EEF90E00895FB |
:102940008091B7018823F1F580919A0190919B01C4 |
:10295000892B71F480916701882351F480911F04C1 |
:1029600085FD03C088EF90E0089589EF90E0089519 |
:102970008091A001882319F084E690E00895809169 |
:102980004D01823350F480914C01863018F087E27B |
:1029900090E0089588E290E0089580914B018823AB |
:1029A00059F0809101018F3F39F4809102018F3FEE |
:1029B00019F48EEF90E00895909101018091020149 |
:1029C000891710F499270895892F9927089510924F |
:1029D000BC0090910401990F980F9093BA0085EC78 |
:1029E0008093BC0008958091B9009927887F9070EA |
:1029F0008038910529F1813891053CF4009709F45C |
:102A000011C18036910591F019C1883B910509F4F7 |
:102A100094C0893B91052CF4883A910509F48DC046 |
:102A20000DC1883F910509F4FDC008C18091BC002B |
:102A300080688093BC0010929E0110929D010895C1 |
:102A40004091BB008091BC0080688093BC00809165 |
:102A50009D01282F33278F5F80939D012130310501 |
:102A6000B9F1223031051CF4232B31F05CC0223047 |
:102A7000310509F448C057C0442369F480919C0192 |
:102A8000882349F08091520190915301892B19F0CC |
:102A900081E090E011C08091520190915301892B07 |
:102AA00081F080919C01882361F0842F992753E065 |
:102AB000880F991F5A95E1F790939B0180939A0193 |
:102AC00004C010929B0110929A0140939C012EC069 |
:102AD00020919A0130919B012115310551F0842FED |
:102AE000992787709070280F391F30939B0120938E |
:102AF0009A01842F992733E0969587953A95E1F7C7 |
:102B000080939E0113C080919701883078F4809162 |
:102B10009701E82FFF27E25FFB4F40838F5F809391 |
:102B2000970182E001C08EEF80939D0184EF91E0D8 |
:102B30009093530180935201089580919E01282F14 |
:102B40003327442755278F5F80939E01F9012F314A |
:102B5000310508F05DC0EC5CFF4FEE0FFF1F0590E4 |
:102B6000F491E02D09940E9485144FC080915B017F |
:102B700090915C0121E08E3F9207A8F08EEF45C056 |
:102B80000E94A0148093BB008091BB009927909372 |
:102B9000E7028093E60242C080910E0136C0809128 |
:102BA000590190915A01969587952FC080911101F6 |
:102BB0002CC08091590129C08091980126C081E0E4 |
:102BC00024C086E022C00E9485141FC08091190491 |
:102BD0001CC080911A0419C080911B0416C08091FA |
:102BE0001C0413C080911D0410C080911E040DC0F0 |
:102BF00080911F040AC08091200407C08091B70112 |
:102C000004C01092BB000AC085EA8093BB0006C0D6 |
:102C10008FEF8093BB008EEF80939E018091BC006C |
:102C200080680DC085ED8093BC00809198019091E3 |
:102C300099010196909399018093980185EC809376 |
:102C4000BC0008951F920F920FB60F9211242F937C |
:102C50003F934F935F936F937F938F939F93AF9324 |
:102C6000BF93EF93FF930E94F314FF91EF91BF91F5 |
:102C7000AF919F918F917F916F915F914F913F9114 |
:102C80002F910F900FBE0F901F9018958091970174 |
:102C9000883030F08EE094E00E94CE1910929701B7 |
:102CA00008958BB1877C8BB98AB188638AB985B165 |
:102CB000877C85B984B1886384B908958AB18063BB |
:102CC0008AB984B1806384B923988091A30181116A |
:102CD000539808958AB188628AB984B1886284B9A8 |
:102CE00024988091A3018111549808958AB1886134 |
:102CF0008AB984B1886184B925988091A301811132 |
:102D0000559808958BB18F7C8BB9539A8091A0010F |
:102D1000882309F45B9A08958BB1877D8BB9549A07 |
:102D20008091A001882309F45C9A08958BB1877E75 |
:102D30008BB9559A8091A001882309F45D9A089572 |
:102D4000FF920F931F93CF9380913801882309F04E |
:102D500079C000B605FE03C000B600FC06C000B690 |
:102D600005FC70C000B600FC6DC015BCC6B58091F6 |
:102D7000A401FC2EF81A809100012F2D33278823FF |
:102D800031F08091A501F901E80FF11D03C0F901AF |
:102D9000E20FF31F0091590110915A0103321105FE |
:102DA00010F4E0E9F1E040913701242F3327CF01FF |
:102DB000B9010E94F41ACB01663020F4CF5FC7BD81 |
:102DC000C15003C08C0F855087BD85B5836085BD1C |
:102DD00021E020933801109217048091000188238C |
:102DE00051F0CF0166E070E00E94F41ACB018C0F25 |
:102DF00080939F011FC0CF019695879596958795E3 |
:102E00008C0F80939F01E135F10538F00A3F1105E1 |
:102E100020F4423310F420931704F29758F40E94E0 |
:102E20005116809116048B3F28F4809116048F5F11 |
:102E30008093160480919F0180931804C093A4018D |
:102E4000F092A501CF911F910F91FF9008951F92CD |
:102E50000F920FB60F9211242F933F934F935F93CE |
:102E60006F937F938F939F93AF93BF93EF93FF9352 |
:102E700080910001882311F40E94A016FF91EF9128 |
:102E8000BF91AF919F918F917F916F915F914F9182 |
:102E90003F912F910F900FBE0F901F90189580912A |
:102EA0001704882399F18091BC0087FF02C00E941B |
:102EB000F314B59B02C00E94D1138091180496B5FB |
:102EC000891B87FF17C0809116048A3F28F48091E0 |
:102ED00016048B5F809316040E9451168091F802AD |
:102EE0009091F90201969093F9028093F80281E0A3 |
:102EF00090E0089500B600FE03C000B605FCD3CFF5 |
:102F000000B600FC03C000B605FECDCF80E090E027 |
:102F10000895CF93C82F809141019091420101966D |
:102F2000909342018093410180911F0480FD4AC02B |
:102F30008091A20199278230910529F18330910572 |
:102F40002CF4009749F00197D9F02EC083309105F9 |
:102F5000E9F0049711F128C00E9496168C2F0E9468 |
:102F6000831281EC80937C0080B78E7F80BF80913C |
:102F7000A2018F5F8093A20100B605FC4DC04AC03C |
:102F80000E946A165DC00E94821653C00E94761687 |
:102F90008C2F0E94B01181EC6FC00E948C168C2F78 |
:102FA0000E94B01180EC57C00E945E168C2F0E94C8 |
:102FB000B01182EC80937C0080B7836080BF109258 |
:102FC000A20164C08091A201992782309105B1F1DC |
:102FD000833091052CF4009751F0019741F15AC0CC |
:102FE0008330910591F1049709F440C053C00E94C9 |
:102FF0005E168C2F0E94831281EC80937C0080B738 |
:10300000836080BF8091A2018F5F8093A20100B690 |
:1030100005FE02C00E944F1780911604882309F410 |
:103020004BC08091160481508093160445C00E94C5 |
:103030008C168C2F0E94B01182EC0DC00E94761667 |
:103040008C2F0E94B01180EC17C00E9482168C2F2A |
:103050000E94B01181EC80937C0080B78E7F80BF8E |
:103060008091A2018F5F8093A20121C00E946A1605 |
:103070008C2F0E94B01182EC80937C0080B783601B |
:1030800080BF8091A2018F5F8093A20100B605FEF0 |
:1030900013C010C00E9496168C2F0E94B01180ECB5 |
:1030A00080937C0080B78E7F80BF1092A20100B613 |
:1030B00005FC02C00E944F1710920801CF9108959D |
:1030C0001F920F920FB60F9211242F933F934F939D |
:1030D0005F936F937F938F939F93AF93BF93EF9380 |
:1030E000FF9390913801913051F482E08093380140 |
:1030F00080919F0187BD892F0E94891706C080910A |
:103100003801823011F410923801FF91EF91BF9194 |
:10311000AF919F918F917F916F915F914F913F916F |
:103120002F910F900FBE0F901F9018951F920F9226 |
:103130000FB60F9211242F933F934F935F936F938A |
:103140007F938F939F93AF93BF93EF93FF93809160 |
:1031500054019091A6018823E9F1292F33279F5F1D |
:103160009093A6012130310579F0223031051CF40D |
:10317000232B29F01DC02230310579F019C0209190 |
:103180003E0130913F0106C020913E0130913F0148 |
:103190002F5F3F4F3695279515C020913E01309106 |
:1031A0003F013695279580914001280F311D0AC0B7 |
:1031B00020913E0130913F012F5F3F4F369527957B |
:1031C0001092A601809180008E7F809380008FEF07 |
:1031D00091E01DC09F5F9093A601915029F420912A |
:1031E0003E0130913F010CC08091400120913E0191 |
:1031F00030913F01882311F02F5F3F4F1092A601BD |
:10320000809180008160809380008FEF93E0821B2B |
:10321000930B9C018F31910520F0AC014E51504031 |
:1032200002C040E050E0809181008E7F8093810059 |
:10323000309389002093880050938B0040938A003C |
:1032400080918100816080938100809100018823BA |
:1032500031F08091A101882311F00E94A016FF9106 |
:10326000EF91BF91AF919F918F917F916F915F91FE |
:103270004F913F912F910F900FBE0F901F90189577 |
:10328000F999FECF92BD81BDF89A80B5992708952E |
:10329000F999FECF1FBA92BD81BD60BD0FB6F894FB |
:1032A000FA9AF99A0FBE089520E030E02617370702 |
:1032B00040F4FC018191480F2F5F3F4F26173707DD |
:1032C000C8F3842F9927089590911F0494FF03C099 |
:1032D0001092540103C081E080935401292F3327B9 |
:1032E00025FF02C01092A301907C11F484E107C075 |
:1032F000C901807C90708038910521F48CE3809323 |
:10330000370108958034910511F48AE0F8CF803CAC |
:10331000910519F487E080933701089586E0809342 |
:10332000190410921A048FEF80931B0490910901E5 |
:1033300090931C0484E680931D0480E480931E0413 |
:1033400084E880931F0480910A01981710F08093FD |
:103350001C044AEA67E070E089E194E00E94541995 |
:103360008093200408958091190499278F7090709C |
:10337000069799F44AEA67E070E089E194E00E94D8 |
:1033800054198093200428E439E148E050E069E1D1 |
:1033900074E080E290E00E94A71A0895CF93DF9333 |
:1033A000EC014AEA67E070E00E9454199F81981787 |
:1033B00019F085E090E060C04881842F99278F70D4 |
:1033C0009070069719F084E090E056C0898186FFDE |
:1033D00003C00E948E1947C010921A048981282FB9 |
:1033E000332720FF03C08A8180931B0421FF03C081 |
:1033F0008B8180931C0422FF03C08C8180931D0469 |
:1034000023FF03C08D8180931E0424FF0AC0909186 |
:103410001F049E708E81817F982B90931F04409390 |
:10342000190425FF08C090911F04917F8E818E7032 |
:10343000982B90931F0480911D04833718F083E725 |
:1034400080931D0480911C0490910A01891710F04B |
:1034500090931C044AEA67E070E089E194E00E94DE |
:10346000541980932004898187FF02C00E94B319F8 |
:103470000E94641980E090E0DF91CF91089520E4EC |
:1034800039E148E050E060E270E089E194E00E94B8 |
:10349000821A4AEA67E070E089E194E00E945419D8 |
:1034A0004AEA67E070E089E194E00E945419282F0D |
:1034B0008091190499278F709070069721F480915C |
:1034C0002004821721F00E948E190E94B3190E94D5 |
:1034D000641980911C0490910A01891710F090934F |
:1034E0001C0480911D04833718F083E780931D042A |
:1034F0000895FB01DC0102C005900D92415050403F |
:10350000D8F70895A0E0B0E0E8E8FAE10C94451B94 |
:103510006C017B01EA01590121978FEFCF3FD8075A |
:1035200089F086010894C11CD11CC7010894E11CD4 |
:10353000F11CF5010995F80180832197FFEFCF3F3A |
:10354000DF0779F7EAE0CDB7DEB70C94611BA0E0A6 |
:10355000B0E0EDEAFAE10C94471B8C017B01EA0133 |
:10356000690121978FEFCF3FD80771F0F7012191C3 |
:103570007F01C8010F5F1F4F622FF6010995219748 |
:10358000FFEFCF3FDF0791F7E8E0CDB7DEB70C9450 |
:10359000631B629FD001739FF001829FE00DF11DBC |
:1035A000649FE00DF11D929FF00D839FF00D749FBD |
:1035B000F00D659FF00D9927729FB00DE11DF91F69 |
:1035C000639FB00DE11DF91FBD01CF0111240895C6 |
:1035D000991B79E004C0991F961708F0961B881F65 |
:1035E0007A95C9F780950895AA1BBB1B51E107C0C6 |
:1035F000AA1FBB1FA617B70710F0A61BB70B881F83 |
:10360000991F5A95A9F780959095BC01CD01089511 |
:1036100097FB092E07260AD077FD04D0E5DF06D0F8 |
:1036200000201AF4709561957F4F0895F6F79095F4 |
:1036300081959F4F0895A1E21A2EAA1BBB1BFD0185 |
:103640000DC0AA1FBB1FEE1FFF1FA217B307E40781 |
:10365000F50720F0A21BB30BE40BF50B661F771FD9 |
:10366000881F991F1A9469F76095709580959095B9 |
:103670009B01AC01BD01CF0108952F923F924F9263 |
:103680005F926F927F928F929F92AF92BF92CF92F2 |
:10369000DF92EF92FF920F931F93CF93DF93CDB7FB |
:1036A000DEB7CA1BDB0B0FB6F894DEBF0FBECDBF73 |
:1036B00009942A88398848885F846E847D848C8444 |
:1036C0009B84AA84B984C884DF80EE80FD800C814D |
:1036D0001B81AA81B981CE0FD11D0FB6F894DEBF30 |
:0A36E0000FBECDBFED010895FFCF2E |
:1036EA0001FFFF0101FB0701011E280D000D1E202D |
:1036FA004E80000A00F41FFC1F0A4144523A00019E |
:10370A000A0D424C3A56000A0D48573A332E3020D9 |
:0A371A005265762000FF0014020043 |
:00000001FF |
/BL-Ctrl_V3/V1.08/BL-Ctrl3_MEGA168_Plus6_V1_08c_ADR7-12.hex |
---|
0,0 → 1,885 |
:100000000C9453010C949D010C949D010C949D0142 |
:100010000C949D010C949D010C949D010C949D01E8 |
:100020000C949D010C94D7130C9478140C949D019E |
:100030000C949D010C949C180C945D180C94DE108B |
:100040000C94D4100C949D010C949F0C0C949D0165 |
:100050000C949D010C949D010C949D010C944417EB |
:100060000C9439160C949D01CA15D715E315E615A5 |
:10007000ED15ED15F315F615F815FA15CD15D7157F |
:10008000E315ED15F0151816FD15001603160616E6 |
:1000900009160C160F16121615161F161F1618160F |
:1000A0001F161F161B1643757272656E7420202072 |
:1000B0005B302E31415D43757272656E74206163F1 |
:1000C000742E2020202043757272656E7420706536 |
:1000D000616B2020202054656D702E202020205B35 |
:1000E000302E31B0435D566F6C74616765202020FF |
:1000F0005B302E31565D72706D2028726177292039 |
:10010000202020202020536574706F696E74202099 |
:100110002020202020204D6178536574706F696E17 |
:1001200074202020202050504D536574706F696EEC |
:10013000742020202020506172616D2E50776D5305 |
:1001400063616C696E67506172616D2E4D617843B9 |
:10015000757272656E74506172616D2E4D61785466 |
:10016000656D702E2020506172616D2E5363616C3D |
:10017000652049202020537461727420436F756E8E |
:10018000742020202020493243204C6F737420209B |
:100190002020202020204932432D424C2D537461D1 |
:1001A000746520202020313620202020202020208F |
:1001B0002020202020203137202020202020202017 |
:1001C0002020202020203138202020202020202006 |
:1001D00020202020202031392020202020202020F5 |
:1001E0002020202020204761702020202020202057 |
:1001F00020202020202049204269617320202020D7 |
:100200002020202020204F76657243757272656E23 |
:100210007420636E742049204375746F66662020D5 |
:10022000202020636E7464652D6D61676E6574694E |
:100230007A6520636E74496E76616C696450756C82 |
:1002400073657320202049204C696D69742020203B |
:100250002020636E7420536C6F70652D4D696E2085 |
:10026000202020202020536C6F70652D4D61782058 |
:100270002020202020204572726F72436F64652019 |
:100280002020202020204861726477617265202040 |
:100290002020202020204C696D69742049202020D6 |
:1002A00020202020202011241FBECFEFD4E0DEBF6D |
:1002B000CDBF11E0A0E0B1E0E6EFF6E302C00590AB |
:1002C0000D92AA33B107D9F714E0AAE3B1E001C057 |
:1002D0001D92A232B107E1F74BEA20EF37E3A8EA1B |
:1002E000B1E09FE0F9012F5F3F4F84918D939150D2 |
:1002F00097FFF8CFE8EAF1E09EE08191482740952A |
:10030000915097FFFACF8091B701481711F0000084 |
:10031000FECF8091AF0180933A018091B00180932C |
:100320000D018091B10180930A018091B201809307 |
:1003300009010E94D3070C947A1B0C940000CF9300 |
:1003400089E191E00E940B0CC09104018C2F805D2B |
:100350008A3328F081E30E94F80B8C2F8A5D0E947B |
:10036000F80BCF9108956BEF77E0409163015091C6 |
:100370006401A0911D042AE0A29FC0011124E09114 |
:100380006101F09162018E179F0780F55798BF01B8 |
:10039000681B790BCB01880F991F880F991FBA0131 |
:1003A000681B790B80910A01829FC0011124C296BB |
:1003B0008E179F07D8F480915601882319F080E0AA |
:1003C00092E002C080E094E09093890080938800DE |
:1003D0008BB1877C8BB960E070E08091FD029091D9 |
:1003E000FE0201969093FE028093FD028091170415 |
:1003F0009927880F991F880F991F2BEF37E0281B2B |
:10040000390B261737070CF4B90180914F018F3F44 |
:1004100071F0282F3327B4E0220F331FBA95E1F78C |
:10042000245D3E4F2617370724F4B90102C010920D |
:100430004E0180913C0190913D01481759070CF401 |
:10044000AC0177FF02C060E070E0641775070CF440 |
:10045000AB0180913E0190913F018417950708F40C |
:10046000AC0180918C01882319F582E080938C0186 |
:1004700085E0A89FC0011124E817F90748F44C59FA |
:100480005F4F50933F0140933E014456504008C097 |
:10049000445F5F4F50933F0140933E014C505040AA |
:1004A0004456504050933D0140933C014C595F4F9E |
:1004B000F894CA0157FD019695958795909341014F |
:1004C00080934001880F991F481B590B40934201AC |
:1004D00078947093D8026093D7020895CF93DF93F6 |
:1004E000E0910F01F091100181E2E330F8071CF078 |
:1004F000C0E0D0E040C089E1E13FF8074CF0CF0117 |
:1005000066E070E00E940E1BCB01C8E7D5E031C069 |
:1005100080E1E33CF8075CF0CF01F7FD0796F3E0DC |
:1005200095958795FA95E1F7CAE6D4E022C089E06F |
:10053000E938F8074CF0CF0166E070E00E940E1B2E |
:10054000CB01CEE1D5E015C085E0E932F80754F0E3 |
:10055000CF01F7FD03969595879595958795CDEEF7 |
:10056000D5E007C0CF01F7FD019695958795CAE3C1 |
:10057000D7E0C81BD90BCE016AE070E00E940E1BC9 |
:1005800060930E01D093D002C093CF026837D0F5AC |
:1005900020910B0130910C012C9FC0012D9F900DDB |
:1005A0003C9F900D1124E92FFF27C90153E0880FCC |
:1005B000991F5A95E1F7820F931F820F931F67E0EF |
:1005C00070E00E940E1BE61BF70B80915D0190917D |
:1005D0005E0143E0969587954A95E1F78E0F9F1F40 |
:1005E0006AE070E00E940E1BFB01C90163E070E04D |
:1005F0000E940E1B6E177F070CF4FB0180910B010C |
:100600008E1B02C080910B0180930D0180915D01D2 |
:1006100090915E01EAEFF0E0E81BF90BE93CF1058F |
:1006200014F0E8ECF0E08FEFEE3CF80714F4EEEC99 |
:10063000FFEF90911E048AE0989FC00111248E0F55 |
:100640009F1FFE01E81BF90B1E161F067CF4EE0F20 |
:10065000FF1FCDEFD0E0CE1BDF0BC230D10514F46D |
:10066000C1E0D0E0C0930201579803C08FEF8093A0 |
:100670000201DF91CF91089580915D0190915E011B |
:100680009093CA028093C9028091610190916201A6 |
:100690002091130130911401821B930B9093CC0293 |
:1006A0008093CB0280911101909112019093D2021C |
:1006B0008093D10280915B0190915C019093D40270 |
:1006C0008093D30280916301909164019093D6024C |
:1006D0008093D50280919301909194019093DA02D6 |
:1006E0008093D90280911C0499279093DC02809317 |
:1006F000DB0280911D0499279093DE028093DD0236 |
:1007000080911E0499279093E0028093DF028091EC |
:100710001F0499279093E2028093E1028091540193 |
:1007200090915501892B39F40E94B7149927909321 |
:10073000E8028093E7028091170499279093FC02C6 |
:100740008093FB0280913C0190913D0190930003C6 |
:100750008093FF0280913E0190913F0190930203AC |
:10076000809301038091B8019927909304038093AB |
:10077000030380910B0190910C01909306038093E9 |
:100780000503809101019927909308038093070343 |
:10079000089560E070E0F894209154013091550183 |
:1007A000E0919B01F0919C01789410923B01909113 |
:1007B0004F01992319F080E180933B012115310508 |
:1007C00059F180913B01816080933B01BF019A30D8 |
:1007D00030F487E0E83FF80710F060E070E0579AE7 |
:1007E00081E02C3C380730F480913B018460809399 |
:1007F0003B010AC0309741F010929401109293018E |
:100800001092030110929001309751F080913B01BA |
:10081000826080933B0104C030939C0120939B0134 |
:1008200081E0223C380758F080914D0180FF02C0E2 |
:10083000309729F08091900188230CF04AC04091B4 |
:100840005201509153014115510579F08091680191 |
:10085000682F7727B3E0660F771FBA95E1F71092FC |
:100860000301579A1092900134C08091900187FF44 |
:1008700025C081E08093030180913B0188608093D3 |
:100880003B01209193013091940189E0253C380788 |
:1008900008F09A0187E02C3F380710F02BEF37E083 |
:1008A0002333310540F4992331F48091500188239A |
:1008B00011F4BA0101C0B901579A0BC0232B09F4F6 |
:1008C0005798BF011092680180916F0080628093F9 |
:1008D0006F0020911C04809102018F3F19F0821754 |
:1008E00008F4282F809101018F3F19F0821708F436 |
:1008F000282F2F3FC1F0CB01AA27BB27332744273E |
:100900005527BC01CD010E94CF1A97FF04C061504A |
:100910007F4F8F4F9F4FBB2797FDBA95A92F982FD9 |
:10092000872FBC0157986115710511F0605B7F4FEF |
:1009300087E06C3F780710F06BEF77E08091A101C2 |
:10094000882311F061E070E0CB0108950E946816E1 |
:100950008091810081608093810080916F0081602F |
:1009600080936F00E0911501F091160180E00995E8 |
:1009700080915601882371F080918000826080937D |
:1009800080008FEF91E0909389008093880084EF3E |
:1009900091E00DC0809180008360809380008FEF94 |
:1009A00093E0909389008093880088EE93E0909381 |
:1009B0008B0080938A00089596B5980F86B5891BA1 |
:1009C00087FDFCCF0895CF939091C10090689093DC |
:1009D000C100C82FC150CF3F59F0579886E990E029 |
:1009E0000E94A011579A8CE291E00E94A011F2CFD0 |
:1009F00088E592E00E94A011CF9108951F93CF93B4 |
:100A0000DF93162FEC0121978FEFCF3FD807A9F086 |
:100A1000812F0E949B1380911301909114018A5B96 |
:100A20009F4F20916101309162018217930758F71F |
:100A30000E94681681E090E002C080E090E0DF91C3 |
:100A4000CF911F910895FF920F931F93CF93DF9340 |
:100A500000E0579A80910401F82EFA9423E0F222E4 |
:100A6000F394282F33278CE291E0289FE001299FFF |
:100A7000D00D389FD00D112480919B0190919C0145 |
:100A8000892B19F4CE010E94A01180B7877F80BF07 |
:100A90000093A201F89488E10FB6F8948093600067 |
:100AA000109260000FBE0E94681660E086E00E940F |
:100AB00061131092600110925F01C9E0D0E081E003 |
:100AC0000E94C7112197D7FFFACF80915F019091C3 |
:100AD00060019093140180931301C39710F000E11B |
:100AE0006EC061E083E00E9461134E978959934084 |
:100AF00008F002E161E087E00E94611380559040B8 |
:100B0000815D924010F001E15AC00E94681619E020 |
:100B100015B98AE00E94DC0461E080E00E94611364 |
:100B2000883C910508F404E00E9468160E9468164B |
:100B30001BB98AE00E94DC0461E080E00E9461133E |
:100B40004A9708F007E00E946816C1E1C5B98AE03B |
:100B50000E94DC0461E0862F0E946113883C9105AD |
:100B600008F405E00E9468160E946816CBB98AE076 |
:100B70000E94DC0461E0862F0E9461134A9708F00E |
:100B800008E00E946816C1E2C5B98AE00E94DC0450 |
:100B900061E082E00E946113883C910508F406E060 |
:100BA0000E9468160E946816CBB98AE00E94DC0495 |
:100BB00061E0862F0E9461134A9708F0012F0E947E |
:100BC000681680919B0190919C01892B09F0F5C0DA |
:100BD00080911A0484FDF1C0002361F0802F8F5BA7 |
:100BE0000E94F80BDFC00CE08DE40E94F80B0E941D |
:100BF0006816D8C08BB1877C8BB98AB188638AB9F3 |
:100C000085B1886385B984B1886384B961E08AE07D |
:100C100090E00E94FE0480911301909114010A96C5 |
:100C200020916101309162018217930708F40BE073 |
:100C300085B1877C85B984B1886384B98BB18863B9 |
:100C40008BB98AB188638AB961E08AE090E00E943A |
:100C5000FE0480911301909114010A962091610184 |
:100C6000309162018217930708F40AE08AEB93E05F |
:100C700090938900809388008CE993E090938B0097 |
:100C800080938A0081E08093A40110E061E088E015 |
:100C900090E00E94FE0489E6F89EC0011124C0E0A5 |
:100CA000D0E08052934009F441C0812F99278130D0 |
:100CB000910571F0823091051CF4892B21F011C04F |
:100CC000029759F00EC00E9475160E94A31609C023 |
:100CD0000E9481160E94AD1604C00E948D160E94CB |
:100CE000991661E082E090E00E94FE04882351F0B2 |
:100CF000012F0F5F812F8F5C0E94F80B0E946816F6 |
:100D000014E614C00E94681661E08F2D99270E9496 |
:100D1000FE04219689E6F89E9001112480E293E07A |
:100D2000821B930BC817D90708F4BFCF1F5F13307E |
:100D300008F4ACCF0E9468168CE092E09093890092 |
:100D4000809388008EEE91E090938B0080938A00D0 |
:100D500061E08AE090E00E94FE04002319F5109201 |
:100D6000620110926101C0E0D0E084B1877C84B957 |
:100D70008AB1877C8AB961E081E090E00E94FE043C |
:100D800080911301909114010A9620916101309194 |
:100D900062018217930708F426CF219684E0C030C1 |
:100DA000D80718F30E9468160093B80178940023BE |
:100DB00021F0802F0E94E304FCCFDF91CF911F919F |
:100DC0000F91FF9008956F927F928F929F92AF92B2 |
:100DD000BF92CF92DF92EF92FF920F931F938C01FD |
:100DE00032E3632E712C812C912C80B7877F80BFDA |
:100DF0001092A201E0911701F09118018CEF099572 |
:100E00000E9468161092620110926101C8019695C5 |
:100E10008795909341018093400180E00E94A31741 |
:100E200080E00E94A31780911704853198F18EE528 |
:100E300091E00E94861190934601809345010CC079 |
:100E400085B1877C85B984B1886384B98BB18863A7 |
:100E50008BB98AB188638AB9809145019091460126 |
:100E60000E949111882361F30E94681680E00E941D |
:100E7000A31788EC90E010C00E9468168FE0809362 |
:100E8000B80181E00E94E30480E090E07FC081E04F |
:100E900090E07CC08EE190E00E9486119093460124 |
:100EA0008093450109C00E949B138091610190913C |
:100EB00062018937910500F78091450190914601C3 |
:100EC0000E949111882379F380B7877F80BF1092A9 |
:100ED000A20110934101009340011092440110922D |
:100EE0004301EE24FF2487016401530183E0AA0C2F |
:100EF000BB1CCC1CDD1C8A95D1F7D601C501860D23 |
:100F0000971DA81DB91D860D971DA81DB91DE816B2 |
:100F1000F9060A071B0748F485E00E94DC040894E0 |
:100F2000E11CF11C011D111DE8CF8091130190916E |
:100F3000140188589F4F20916101309162018217FE |
:100F4000930708F499CFC401B3012FE030E040E0EB |
:100F500050E00E94211B621A730A840A950A0894C1 |
:100F600061087108810891088EE168167104810496 |
:100F7000910408F48CCF8091430190914401892B16 |
:100F800009F0ABCF80E00E94A317A7CF1F910F916C |
:100F9000FF90EF90DF90CF90BF90AF909F908F9099 |
:100FA0007F906F900895CFEFD4E0DEBFCDBF17B82C |
:100FB00080E188B988EB8AB987E08BB91EE014B963 |
:100FC00081E085B9579883E00E94DC0415BC80EE6F |
:100FD0008ABD18BD0E94681680916E008260809361 |
:100FE0006E0080916E00846080936E007894809192 |
:100FF0000D01992790930C0180930B010E94BF1360 |
:101000000E94451A8091C100877F8093C100529849 |
:101010005A9AE0911701F09118018CEF099589E037 |
:1010200090E00E94A0118091C100877F8093C10051 |
:101030008091B40082FF06C0499B02C081E007C0D6 |
:1010400083E005C0499B02C082E001C084E0809338 |
:1010500004010E94A6048091B40082FF13C05A9834 |
:10106000529A8AE090E00E94A011F89452985A9AFD |
:10107000E0911701F09118018CEF099578944A9945 |
:1010800019C013C0529A5A9A8AE090E00E94A011A7 |
:10109000F89452985A985A9AE0911701F0911801D1 |
:1010A0008CEF099578944A9B05C0809104018C5F70 |
:1010B00080930401809104018A5F80930401529817 |
:1010C000529A8091C10088608093C1000E94240CD4 |
:1010D00080E50E94FE140E94B61180E00E949B13DE |
:1010E00084EF91E00E948611909346018093450120 |
:1010F00006C080919B0190919C01892B41F48091C5 |
:101100004501909146010E949111882391F310921C |
:101110006401109263010E94B30181E080937C001E |
:10112000109294011092930185B910921B041092B1 |
:1011300056010E9423050E946A190E94040C0E9415 |
:101140009F010E94240C8091C10080688093C1009F |
:101150000E9468161092A4018BB5992790930C01F8 |
:1011600080930B0110928B0110928A01109238012A |
:101170000E94C9039093640180936301892B31F429 |
:101180000E94C903909364018093630180914E0192 |
:10119000863008F057988091630190916401892B03 |
:1011A00009F047C01092500110924F011092A40113 |
:1011B0000E94681680914701909148010E94911108 |
:1011C000882309F458C010924E011092B80180B7DC |
:1011D000877F80BF1092A20181E080930701109267 |
:1011E00017048091130190911401209161013091B5 |
:1011F00062012817390710F4019704C0821793077A |
:1012000028F40196909314018093130182E390E0F7 |
:101210000E948611909348018093470180911301A9 |
:10122000909114019093F4028093F30212BC11BCCC |
:1012300022C080910701882369F420915B013091DD |
:101240005C012430310550F480914F01853630F037 |
:101250008A3F20F481E08093500105C02930310598 |
:1012600010F0109250018CED95E00E948611909341 |
:101270004801809347012091A1012223A1F480918C |
:10128000430190914401892B71F080911704883CAF |
:1012900050F42093070186E990E00E948611909314 |
:1012A00046018093450180910701882321F0109227 |
:1012B0006401109263010E94B30180910801815082 |
:1012C00080930801809108018F3F09F051CF8091F0 |
:1012D000630190916401892B11F48AE001C084E6D6 |
:1012E000809308010E945D1680916701882321F098 |
:1012F0000E948C0F0E94860E80914B0190914C01B0 |
:101300000E949111882309F42FC182E390E00E948A |
:10131000861190934C0180934B018091A101882309 |
:1013200091F08091A10181508093A1018091A10150 |
:10133000882349F48091F5029091F60201969093EA |
:10134000F6028093F5028091590190915A01209103 |
:10135000570130915801B9010E94FA1A8091610138 |
:101360009091620190935A018093590181E090E03D |
:10137000909358018093570180911301909114012B |
:101380006817790798F0681B790B80911F049927DB |
:10139000689F9001699F300D789F300D1124B9012D |
:1013A00016E0769567951A95E1F702C060E070E067 |
:1013B00080915D0190915E018617970710F4019668 |
:1013C00004C06817790728F4019790935E01809311 |
:1013D0005D0180915D0190915E018B30910588F0F7 |
:1013E000681B790B77FF02C0695F7F4FC3E075957B |
:1013F0006795CA95E1F7860F971F90935E018093DA |
:101400005D01E0915D01F0915E01CF016AE070E065 |
:101410000E94FA1A40911D04842F99278617970776 |
:10142000F0F48AE0489FC00111249F01281B390B6A |
:10143000C901880F991F820F931F2DEF30E0281BE1 |
:10144000390B2931310514F429E130E02F3F310502 |
:1014500019F014F02FEF30E02093010103C08FEF5B |
:1014600080930101F8946091430170914401AB01B4 |
:101470005695479520915B0130915C012417350703 |
:1014800028F450935C0140935B0118C0C901880F98 |
:10149000991F820F931F840F951F96958795969598 |
:1014A000879590935C0180935B01672B39F40097DB |
:1014B00029F0019790935C0180935B0110924401A5 |
:1014C0001092430178940E946E02809167018823F4 |
:1014D00021F081508093670102C080934D0180917B |
:1014E000A4018823B1F480914F01813590F080915F |
:1014F0001101909112018536910558F08091A1015A |
:10150000882339F48091200485FD03C081E0809315 |
:10151000A40180914F018E3120F481E0809300017D |
:1015200023C020915B0130915C012734310548F4E0 |
:1015300080915D0190915E01409740F02933310523 |
:1015400028F0F8941092000178940EC027333105EA |
:1015500058F480916101909162010F9728F4F894FA |
:1015600081E08093000178948091490190914A0133 |
:101570000E9491118823F1F085E090E00E9486118D |
:1015800090934A018093490180915B0190915C01A5 |
:10159000892B39F080914F018F3F19F08F5F809335 |
:1015A0004F0180910701882329F0F89480E00E9480 |
:1015B0009A12789480914501909146010E94911170 |
:1015C000882329F480915001882309F4D1CD80919A |
:1015D0005B0190915C014E9708F0CACD84E690E0E3 |
:1015E0000E948611909346018093450110924F010D |
:1015F00051E0F52EF09207011092A40180B7877F89 |
:1016000080BF1092A2010E94C903892B09F4B0CDBA |
:1016100080910F01909110018958994008F4A8CD4C |
:101620001092600110925F0110925001809120048D |
:1016300099278E70907004E110E0809FE001819FF7 |
:10164000D00D909FD00D1124A096F0920001109221 |
:10165000A401C0905201D09053018091E302909177 |
:10166000E40201969093E4028093E302CE010E948B |
:10167000E306882309F47CCDD0925301C092520135 |
:1016800010924101109240018091A201882319F427 |
:1016900080B7886180BFF092A2011092070110927A |
:1016A00017041092440110924301C8010E94861150 |
:1016B00090934601809345018091450190914601A8 |
:1016C0000E9491118823C1F310925C0110925B017A |
:1016D0008AE090E090934101809340018C179D0730 |
:1016E000E0F580914001909141010A96909341016B |
:1016F0008093400184E190E00E948611909346011E |
:101700008093450113C080916101909162018937F6 |
:10171000910540F00E9468168FE08093B80181E047 |
:101720000E94E3040E948C0F0E94860E8091450166 |
:10173000909146010E949111882329F380914301E1 |
:1017400090914401892B49F0109244011092430179 |
:101750008091400190914101C1CF80914E01882339 |
:1017600021F0813039F4CC0FDD1FD0934101C093BB |
:10177000400109C0CE01880F991F8C0F9D1F9093C7 |
:1017800041018093400184E690E00E94861190938D |
:1017900046018093450104C00E948C0F0E94860E72 |
:1017A00080914501909146010E9491118823A1F3F7 |
:1017B00080914E018F5F80934E01D0925301C09271 |
:1017C000520182E390E00E94861190934A01809337 |
:1017D000490188EC90E00E94861190934601809325 |
:1017E00045011092FA021092F9021092A101C0CCA8 |
:1017F000982F8091C10083FF06C08091C00085FFB3 |
:10180000FCCF9093C60008958DE00E94F80B8AE00B |
:101810000E94F80B08951F93CF93DF93EC0110E023 |
:101820008881882369F0FE01E10FF11D1F5F80812F |
:101830000E94F80BFE01E10FF11D8081882399F7CA |
:10184000DF91CF911F9108950F931F930FB788E1F8 |
:101850008093C1001092710110926F0110926E017D |
:1018600010926D0181E080931F018093BD0288E09A |
:101870008093BE0282E08093C1028BE08093BF021E |
:101880001092C00280E291E00E940B0C81E30E9462 |
:10189000F80B8EE20E94F80B80E30E94F80B88E3BD |
:1018A0000E94F80B83E60E94F80B87E291E00E9409 |
:1018B0000B0C1AE080913A01612F0E94EE1A805DB4 |
:1018C0000E94F80B80913A01612F0E94EE1A892F35 |
:1018D000805D0E94F80B0FBF10926C011F910F9159 |
:1018E00008958091C00086FF29C080911F01882340 |
:1018F00009F58091720190917301019690937301A3 |
:1019000080937201FC01E75FFC4FE081ED3019F03C |
:101910008A3F910539F4109273011092720181E0AF |
:1019200080931F018091C00081608093C000E0938C |
:10193000C6000895109273011092720108951F92CB |
:101940000F920FB60F9211242F933F934F935F93F3 |
:101950008F939F93AF93BF93CF93DF93EF93FF93B7 |
:101960005091C60080917101882309F062C04091B6 |
:101970006C01442371F4533279F45093B90181E03E |
:1019800080936C0183E290E09093750180937401E1 |
:1019900050C04A3F08F049C0209174013091750150 |
:1019A000E42FFF275D3069F0E754FE4F50834F5F0F |
:1019B00040936C01250F311D309375012093740104 |
:1019C00038C0DF01A754BE4FFD0132978081281B2C |
:1019D0003109ED0121978881281B3109C9019F70C8 |
:1019E0009093750180937401689415F89695879586 |
:1019F0001694E1F7982F935C2F733070235C8081ED |
:101A0000981771F48881281759F484E68093670148 |
:101A10005C934F5F4093700181E08093710102C03D |
:101A20001092710110926C0104C080936C0180933C |
:101A30007101FF91EF91DF91CF91BF91AF919F9194 |
:101A40008F915F914F913F912F910F900FBE0F900B |
:101A50001F901895A0E0B0E09D01482F5527A417CE |
:101A6000B50748F4E9E0F3E08191280F311D1196A4 |
:101A7000A417B507C8F33F70FD01E75FFC4FC9012C |
:101A800076E0969587957A95E1F7835C8083119649 |
:101A9000FD01E75FFC4F2F733070822F835C8083E2 |
:101AA000A65FBC4F8DE08C9310921F0180910903BB |
:101AB0008093C6000895CF92DF92EF92FF920F932A |
:101AC0001F93CF93DF93CDB7DEB72B859C850D8514 |
:101AD000DD2483E2809309039F5990930A032093A6 |
:101AE0000B0333E0C32E002309F49AC0EE84FF8475 |
:101AF000BE016E5E7F4FA889B9890150109709F425 |
:101B00008FC01097B9F0F701ED0DF11DD3949081BE |
:101B1000119791F4002349F1FB016E5F7F4FDB01C8 |
:101B2000E080F1806E5F7F4F0D90BC91A02DDD2491 |
:101B3000015002C090E019C01097B9F0F701ED0D07 |
:101B4000F11DD3944081119791F4002341F1FB01E1 |
:101B50006E5F7F4FDB01E080F1806E5F7F4F0D9005 |
:101B6000BC91A02DDD24015002C040E018C01097A8 |
:101B7000B1F0F701ED0DF11DD3941081119781F4AF |
:101B8000002371F0FB013296DB01ED90FC90BF0168 |
:101B90006E5F7F4FA081B181DD24015001C010E054 |
:101BA000EC2DFF27E75FFC4F892F86958695835C98 |
:101BB0008083C394EC2DFF27E75FFC4F892F992783 |
:101BC0008370907024E0880F991F2A95E1F75527BC |
:101BD0009A0194E0369527959A95E1F7822B835CDC |
:101BE0008083C394EC2DFF27E75FFC4F4F7050704C |
:101BF000440F551F440F551F812F992726E09695B6 |
:101C000087952A95E1F7842B835C8083C394EC2D20 |
:101C1000FF27E75FFC4F1F73135C1083C3946ECFE5 |
:101C20008C2D0E942A0DDF91CF911F910F91FF9073 |
:101C3000EF90DF90CF900895A3E07A2F409170014C |
:101C40004650442309F458C0E72FFF27E754FE4FBE |
:101C500080818D537F5FE72FFF27E754FE4F208160 |
:101C60002D537F5FE72FFF27E754FE4F30813D5311 |
:101C70007F5FE72FFF27E754FE4F60816D537F5F43 |
:101C80009927880F991F880F991F522F52955F70BF |
:101C9000582B822F99278F709070F4E0880F991F2E |
:101CA000FA95E1F7232F26952695282B832F992740 |
:101CB00083709070E6E0880F991FEA95E1F7682B32 |
:101CC00041504F3FC9F0EA2FFF27E754FE4F5083A2 |
:101CD000AF5F41504F3F81F0EA2FFF27E754FE4F9F |
:101CE0002083AF5F41504F3F39F0EA2FFF27E75481 |
:101CF000FE4F6083AF5FA5CF8CEB91E090936F01B7 |
:101D000080936E01A350A0936D010895809171019D |
:101D1000882309F400C10E941C0E8091BA018B3601 |
:101D200068F08091BA01282F332780910401992708 |
:101D300085599F4F2817390709F0E5C08091BB01ED |
:101D400099278436910509F4B5C0853691059CF430 |
:101D50008235910519F18335910544F4813291055D |
:101D600009F46AC08B9709F4C7C0CDC081369105CC |
:101D700009F4B5C0C8C085379105E9F086379105EB |
:101D80002CF48437910509F444C0BDC08637910511 |
:101D900009F4A1C08737910521F1B5C088E190E031 |
:101DA0002CE00FB6F894A895809360000FBE2093A6 |
:101DB0006000F894FFCFE0916E01F0916F01908187 |
:101DC00080910401981719F08081882319F41092EA |
:101DD000690103C082E08093690180916B01886092 |
:101DE00088C0E0916E01F0916F018081882329F015 |
:101DF000908180910401981729F4CF0101960E94E7 |
:101E0000D41901C082E08093690180916B018061E7 |
:101E100070C080910401E0916E01F0916F01E80FB4 |
:101E2000F11D319780818093680180E293E0909367 |
:101E300053018093520167C084EF91E09093530166 |
:101E40008093520120910401A0916E01B0916F0125 |
:101E5000FD01E20FF11D8081809368018C9187FD67 |
:101E600006C080910701882311F0109268018091CB |
:101E70006801882369F080913B0182FD03C08C9149 |
:101E800088231CF481E080934D0180914D01826094 |
:101E900080934D01E0916E01F0916F01808199274F |
:101EA0008F70907033278217930769F580916B01CB |
:101EB00080621FC0E0916E01F0916F0190818AE015 |
:101EC000989FC001112490936601809365018091D1 |
:101ED0006B0182600EC080916B0181600AC0E0914D |
:101EE0006E01F0916F01808180936A0180916B0196 |
:101EF000846080936B0107C0E0916E01F0916F01E7 |
:101F000080818093C40010926F0110926E01109234 |
:101F10006D01109271010895CF93DF93CDB7DEB7B5 |
:101F200021970FB6F894DEBF0FBECDBF80911F0181 |
:101F3000882319F40E94710C2EC180916B0199279E |
:101F400085FF37C080913B01809376010E949C14ED |
:101F5000809377010E94B7148093780180910E01DD |
:101F60008093790180911101909112018135910541 |
:101F700030F080911101805580937A0104C0109255 |
:101F800012011092110185E090E09F938F9386E7F4 |
:101F900091E09F938F9381E08F9380910401865FFE |
:101FA0008F938FE38F930E945B0D80916B018F7DE8 |
:101FB00070C082FF30C080916A01992724E0880FA9 |
:101FC000991F2A95E1F78A559F4F40E150E0BC01E7 |
:101FD00086E791E00E947F1A80E190E09F938F93C3 |
:101FE00086E791E09F938F9381E090E09F938F939A |
:101FF0008AE691E09F938F9382E08F9385E08F93A1 |
:1020000081E48F930E945B0D8FEF80936A01809132 |
:102010006B018B7FB6C08091650190916601892B21 |
:1020200041F080910D0490910E040E94911188233B |
:1020300029F480916B01992781FF31C00E943C03F4 |
:1020400080915F01909160019093CE028093CD02C8 |
:102050001092600110925F0182E490E09F938F9351 |
:1020600087EC92E09F938F9381E08F9385E08F932D |
:1020700084E48F930E945B0D8091650190916601CD |
:102080000E94861190930E0480930D0480916B0141 |
:102090008D7F80936B018DB79EB7079677C080FFC9 |
:1020A00014C08AE090E09F938F938DEB92E09F9312 |
:1020B0008F9381E08F9385E08F9386E58F930E94C5 |
:1020C0005B0D80916B018E7FE4CF83FF36C08091E2 |
:1020D0006901882319F481E0898301C0198288E0AD |
:1020E00090E09F938F938AE194E09F938F9321E0F8 |
:1020F00030E03F932F9384E091E09F938F933F9341 |
:102100002F9389E691E09F938F933F932F93CE0176 |
:10211000820F931F9F938F9384E08F9385E08F931B |
:1021200085E58F930E945B0D80916B01877F809383 |
:102130006B018DB79EB7439629C084FF2CC0809158 |
:102140006901882319F481E0898301C0198221E0A3 |
:1021500030E03F932F9389E691E09F938F933F93D5 |
:102160002F93CE01820F931F9F938F9382E08F93C3 |
:1021700085E08F9387E58F930E945B0D80916B01C3 |
:102180008F7E80936B018DB79EB70B960FB6F89438 |
:102190009EBF0FBE8DBF21960FB6F894DEBF0FBE57 |
:1021A000CDBFDF91CF9108951F920F920FB60F927E |
:1021B00011240F900FBE0F901F9018951F920F9231 |
:1021C0000FB60F9211242F933F934F935F936F930A |
:1021D0007F938F939F93AF93BF93EF93FF9388B5B4 |
:1021E000845688BD80918D01815080938D01882314 |
:1021F00009F07BC082E080938D0180918A019091EB |
:102200008B01019690938B0180938A0188E190E085 |
:102210002BE00FB6F894A895809360000FBE209332 |
:1022200060008091540190915501009719F1019738 |
:10223000909355018093540121E0883B920739F037 |
:1022400021E08C32920719F08436910599F480E5EB |
:102250000E94FE148091540190915501885B914039 |
:1022600049F48091E5029091E60201969093E6028E |
:102270008093E50280919101882331F08091910152 |
:1022800081508093910102C080939001809152010E |
:1022900090915301009729F00197909353018093F7 |
:1022A000520180918C01882329F080918C0181500A |
:1022B00080938C0180913501909136010197909324 |
:1022C0003601809335018F5F9F4F79F488E795E061 |
:1022D000909336018093350180915401909155017E |
:1022E000892B19F480E50E94FE14FF91EF91BF91B4 |
:1022F000AF919F918F917F916F915F914F913F919E |
:102300002F910F900FBE0F901F9018959C01F8947D |
:1023100080918A0190918B017894820F931F01978D |
:102320000895F89420918A0130918B01821B930BC0 |
:10233000892F992780787894992787FD909508951B |
:10234000CF93DF930E948611EC0108C08091670152 |
:10235000882321F00E948C0F0E94860ECE010E94DD |
:102360009111882399F3DF91CF91089587EA8093A3 |
:102370007A0087EC80937C0080917A00806480935F |
:102380007A0080917B00806480937B000895CF93D6 |
:10239000DF93C82F96EC90937C0080B7806880BF55 |
:1023A00084ED80937A0080917A00806180937A0036 |
:1023B00090937C0080917A00806480937A00809171 |
:1023C000590190915A0180569A4EB8F48091590162 |
:1023D00090915A012091610130916201820F931F07 |
:1023E00090935A018093590180915701909158011F |
:1023F0000196909358018093570180917A0084FD53 |
:102400000DC0CC23D1F38091BC0087FF02C00E9495 |
:102410000A15B59BF2CF0E94E813EFCFC091780068 |
:10242000D091790080910D019927C89F9001C99F93 |
:10243000300DD89F300D112445E0369527954A95EB |
:10244000E1F7309362012093610180915F019091E7 |
:1024500060018217930720F43093600120935F019D |
:1024600032E0C935D30708F454C00E946816809141 |
:102470005601882319F080E092E002C080E094E0E9 |
:10248000909389008093880010924101109240013E |
:10249000109242011092A40180913E0190913F015F |
:1024A00020916301309164012817390720F430939B |
:1024B0003F0120933E018AE080938C018091F702D6 |
:1024C0009091F80201969093F8028093F70283E0CE |
:1024D000C73BD80750F083E08093A10180914F0162 |
:1024E000833318F082E380934F0180910D01992787 |
:1024F000C89F9001C99F300DD89F300D1124C9018C |
:1025000025E0969587952A95E1F79093620180934F |
:10251000610184E080937A0080917B0080648093E5 |
:102520007B0080B78F7780BF80B7806180BFDF91ED |
:10253000CF9108951F93CF93182F8091510181500F |
:10254000809351018F3F09F0B6C08EE18093510115 |
:1025500080918E01815080938E018F3F09F058C089 |
:10256000C0917C0097EC90937C0080B7806880BF1E |
:1025700084ED80937A0080917A00806180937A0064 |
:1025800090937C0080917A00806480937A0080919F |
:102590007A0084FD0DC01123D1F38091BC0087FF28 |
:1025A00002C00E940A15B59BF2CF0E94E813EFCF3C |
:1025B000C0937C002091780030917900C901E4E05B |
:1025C000880F991FEA95E1F7820F931F67E170E08A |
:1025D0000E94FA1A8091110190911201860F971FA3 |
:1025E00096958795909312018093110184E08093D2 |
:1025F0007A0080917B00806480937B0080B78F7726 |
:1026000080BF80B7806180BF83E080938E0156C019 |
:10261000C0917C0093EC90937C0080B7806880BF71 |
:1026200084ED80937A0080917A00806180937A00B3 |
:1026300090937C0080917A00806480937A008091EE |
:102640007A0084FD0DC01123D1F38091BC0087FF77 |
:1026500002C00E940A15B59BF2CF0E94E813EFCF8B |
:10266000C0937C0080917800909179009C0163E098 |
:10267000220F331F6A95E1F7280F391F280F391FE2 |
:1026800080910F0190911001820F931F969587956D |
:102690009093100180930F0184E080937A008091E1 |
:1026A0007B00806480937B0080B78F7780BF80B78A |
:1026B000806180BF03C0812F0E94C711CF911F91FD |
:1026C00008951F93CF93C62F10917C00982F906C84 |
:1026D00090937C0080B7806880BF86ED80937A00FD |
:1026E00080917A00806180937A0090937C00809141 |
:1026F0007A00806480937A0080917A0084FD09C01A |
:10270000CC23D1F38091BC0087FFF6CF0E940A153D |
:10271000F3CF10937C0087E080937A0080B78F77A7 |
:1027200080BF80B7806180BF8091780090917900F0 |
:10273000CF911F910895682F86E00E946113209128 |
:102740000D013327829FA001839F500D929F500D52 |
:1027500011249A01F5E036952795FA95E1F7309323 |
:1027600062012093610180915F0190916001821765 |
:10277000930720F43093600120935F0108958091C6 |
:102780008100806C809381008091810080648093BF |
:10279000810080916F00806280936F0080916F0054 |
:1027A000816080936F0082E08093B10008951F9252 |
:1027B0000F920FB60F9211248F93809192018F5F29 |
:1027C000809392018F910F900FBE0F901F901895DC |
:1027D00080916F0085FF8AC08091810086FF17C0BD |
:1027E0001092B20081E08093700010928F0180916E |
:1027F00092018093970110929201809181008F7BCA |
:102800008093810084E680939101B89A6FC0109202 |
:10281000B100B89B05C0809192018F5F80939201B7 |
:102820002091B200809192019927582F4427420F9E |
:10283000511D509396014093950182E08093B10021 |
:1028400080918100806480938100809190018F3F0E |
:1028500051F04B5C58404552524028F48091900111 |
:102860008F5F8093900180919501909196012AE06D |
:10287000803F92073CF0805F9A409093960180934E |
:10288000950104C0109296011092950180919701D4 |
:10289000843688F480914F01882369F080919501F6 |
:1028A000909196012091930130919401820F931F92 |
:1028B0009695879517C080919301909194019C0102 |
:1028C00043E0220F331F4A95E1F7281B390B809113 |
:1028D000950190919601820F931F23E0969587951D |
:1028E0002A95E1F79093940180939301B59A089506 |
:1028F0001F920F920FB60F9211242F933F934F9375 |
:102900005F936F937F938F939F93AF93BF93EF9357 |
:10291000FF930E94E813FF91EF91BF91AF919F91B8 |
:102920008F917F916F915F914F913F912F910F9078 |
:102930000FBE0F901F90189580915D0190915E01E0 |
:10294000893C910518F480915D010CC022E0853E20 |
:10295000920750F4885C90406AE070E00E94FA1A96 |
:10296000CB018853992708958EEF90E008958091C8 |
:10297000B8018823F1F580919B0190919C01892BEE |
:1029800071F480916801882351F48091200485FDC1 |
:1029900003C088EF90E0089589EF90E0089580915A |
:1029A000A101882319F084E690E0089580914F01F9 |
:1029B000823350F480914E01863018F087E290E027 |
:1029C000089588E290E0089580914D01882359F0A0 |
:1029D000809101018F3F39F4809102018F3F19F4FA |
:1029E0008EEF90E008959091010180910201891786 |
:1029F00010F499270895892F992708951092BC0003 |
:102A000090910401990F980F9093BA0085EC8093F0 |
:102A1000BC0008958091B9009927887F9070803814 |
:102A2000910529F1813891053CF4009709F411C111 |
:102A30008036910591F019C1883B910509F494C045 |
:102A4000893B91052CF4883A910509F48DC00DC19C |
:102A5000883F910509F4FDC008C18091BC008068E1 |
:102A60008093BC0010929F0110929E0108954091A6 |
:102A7000BB008091BC0080688093BC0080919E0167 |
:102A8000282F33278F5F80939E0121303105B9F1C4 |
:102A9000223031051CF4232B31F05CC0223031058B |
:102AA00009F448C057C0442369F480919D018823EC |
:102AB00049F08091540190915501892B19F081E0E2 |
:102AC00090E011C08091540190915501892B81F0C3 |
:102AD00080919D01882361F0842F992753E0880F0E |
:102AE000991F5A95E1F790939C0180939B0104C034 |
:102AF00010929C0110929B0140939D012EC0209149 |
:102B00009B0130919C012115310551F0842F9927AB |
:102B100087709070280F391F30939C0120939B0180 |
:102B2000842F992733E0969587953A95E1F780931E |
:102B30009F0113C080919801883078F480919801AA |
:102B4000E82FFF27E15FFB4F40838F5F8093980161 |
:102B500082E001C08EEF80939E0184EF91E090931C |
:102B6000550180935401089580919F01282F3327A8 |
:102B7000442755278F5F80939F01F9012F3131053D |
:102B800008F05DC0EC5CFF4FEE0FFF1F0590F49165 |
:102B9000E02D09940E949C144FC080915D0190919A |
:102BA0005E0121E08E3F9207A8F08EEF45C00E94A3 |
:102BB000B7148093BB008091BB0099279093E802E3 |
:102BC0008093E70242C080910E0136C080915B0184 |
:102BD00090915C01969587952FC0809111012CC032 |
:102BE00080915B0129C08091990126C081E024C0B9 |
:102BF00088E022C00E949C141FC080911A041CC04F |
:102C000080911B0419C080911C0416C080911D0482 |
:102C100013C080911E0410C080911F040DC08091CC |
:102C200020040AC08091210407C08091B80104C02B |
:102C30001092BB000AC085EA8093BB0006C08FEFEC |
:102C40008093BB008EEF80939F018091BC008068D1 |
:102C50000DC085ED8093BC008091990190919A01FF |
:102C6000019690939A018093990185EC8093BC0022 |
:102C700008951F920F920FB60F9211242F933F9336 |
:102C80004F935F936F937F938F939F93AF93BF9374 |
:102C9000EF93FF930E940A15FF91EF91BF91AF91BF |
:102CA0009F918F917F916F915F914F913F912F9164 |
:102CB0000F900FBE0F901F9018958091980188304B |
:102CC00030F08FE094E00E94D4191092980108959A |
:102CD0008BB1877C8BB98AB188638AB985B1877CCF |
:102CE00085B984B1886384B908958AB180638AB94B |
:102CF00084B1806384B923988091A4018111539891 |
:102D000008958AB188628AB984B1886284B92498A6 |
:102D10008091A4018111549808958AB188618AB97B |
:102D200084B1886184B925988091A4018111559856 |
:102D300008958BB18F7C8BB9539A8091A101882320 |
:102D400009F45B9A08958BB1877D8BB9549A809171 |
:102D5000A101882309F45C9A08958BB1877E8BB911 |
:102D6000559A8091A101882309F45D9A08950F93E3 |
:102D70001F93CF93DF9380913801882309F07FC0A0 |
:102D800000B605FE03C000B600FC06C000B605FC98 |
:102D900076C000B600FC73C015BC16B58091A501C5 |
:102DA000012F081B80910001202F3327882331F049 |
:102DB0008091A601E901C80FD11D03C0E901C20F2E |
:102DC000D31F80915B0190915C01839710F4C0E95F |
:102DD000D1E080913701282F3327CE01B9010E941D |
:102DE000FA1ACB01663020F41F5F17BD115003C0E3 |
:102DF000810F855087BD85B5836085BD21E0209317 |
:102E000038011092180480B7877F80BF809100013D |
:102E1000882351F0CE0166E070E00E94FA1ACB01DF |
:102E2000810F8093A0011DC0CE0196958795969540 |
:102E30008795810F8093A001C533D10560F40E946E |
:102E40006816809117048B3F60F4809117048F5FA0 |
:102E50008093170406C0CF3FD10509F010F42093EA |
:102E60001804CE0196958795810F809319041093CD |
:102E7000A5010093A601D093F202C093F102DF9165 |
:102E8000CF911F910F9108951F920F920FB60F923D |
:102E900011242F933F934F935F936F937F938F935F |
:102EA0009F93AF93BF93EF93FF938091000188238B |
:102EB00011F40E94B716FF91EF91BF91AF919F91CE |
:102EC0008F917F916F915F914F913F912F910F90D3 |
:102ED0000FBE0F901F90189580911804882391F1D0 |
:102EE00025C08091BC0087FF02C00E940A15B59BD7 |
:102EF00002C00E94E8138091190496B5891B87FFD0 |
:102F000015C00E946816809117048C3D28F48091AA |
:102F10001704825E809317048091F9029091FA025F |
:102F200001969093FA028093F902089500B600FE8C |
:102F300003C000B605FCD5CF00B600FC03C000B648 |
:102F400005FECFCF0895CF93C82F80914301909174 |
:102F500044010196909344018093430180912004A1 |
:102F600080FD4CC08091A301992782309105E1F04A |
:102F7000833091052CF4009749F0019791F033C00C |
:102F80008330910511F1049739F12DC00E94AD16DF |
:102F90008C2F0E949A1281EC80937C0080B78E7FE8 |
:102FA0004BC00E9481165FC00E9499168C2F0E9410 |
:102FB000C71182EC80937C0080B78E7F80BF8091A8 |
:102FC000A3018F5F8093A30172C00E948D168C2F86 |
:102FD0000E94C71181EC59C00E94A3168C2F0E9439 |
:102FE000C71180ECE7CF0E9475168C2F0E94C71185 |
:102FF00082EC80937C0080B7836056C08091A301EF |
:1030000099278230910569F1833091052CF400975E |
:1030100049F0019719F13EC08330910549F10497B9 |
:1030200071F138C00E9475168C2F0E949A1281ECA3 |
:1030300080937C0080B7836080BF8091A3018F5F05 |
:103040008093A3010E946C1780911704882389F153 |
:10305000809117048150809317042BC00E94A316FF |
:10306000A5CF0E948D168C2F0E94C71180EC0DC039 |
:103070000E9499168C2F0E94C71181EC9BCF0E9451 |
:1030800081168C2F0E94C71182EC80937C0080B740 |
:10309000836094CF0E94AD168C2F0E94C71180ECE4 |
:1030A00080937C0080B78E7F80BF1092A3010E9426 |
:1030B0006C1710920801CF9108951F920F920FB6CE |
:1030C0000F9211242F933F934F935F936F937F93AE |
:1030D0008F939F93AF93BF93EF93FF93909138019A |
:1030E000913051F482E0809338018091A00187BD36 |
:1030F000892F0E94A3170FC080913801823059F4A4 |
:103100001092380180B7886180BF809100018823C8 |
:1031100011F40E94B716FF91EF91BF91AF919F916B |
:103120008F917F916F915F914F913F912F910F9070 |
:103130000FBE0F901F9018951F920F920FB60F920F |
:1031400011242F933F934F935F936F937F938F93AC |
:103150009F93AF93BF93EF93FF938091560190910C |
:10316000A7018823E9F1292F33279F5F9093A701B7 |
:103170002130310579F0223031051CF4232B29F060 |
:103180001DC02230310579F019C0209140013091E5 |
:10319000410106C020914001309141012F5F3F4F16 |
:1031A0003695279515C02091400130914101369503 |
:1031B000279580914201280F311D0AC020914001BE |
:1031C000309141012F5F3F4F369527951092A7010F |
:1031D000809180008E7F809380008FEF91E01DC0F2 |
:1031E0009F5F9093A701915029F420914001309165 |
:1031F00041010CC080914201209140013091410178 |
:10320000882311F02F5F3F4F1092A701809180001B |
:103210008160809380008FEF93E0821B930B9C0171 |
:103220008F31910520F0AC014E51504002C040E07A |
:1032300050E0809181008E7F8093810030938900DF |
:103240002093880050938B0040938A0080918100E6 |
:1032500081608093810080910001882331F080910A |
:10326000A201882311F00E94B716FF91EF91BF9140 |
:10327000AF919F918F917F916F915F914F913F910E |
:103280002F910F900FBE0F901F901895F999FECFB8 |
:1032900092BD81BDF89A80B599270895F999FECF1E |
:1032A0001FBA92BD81BD60BD0FB6F894FA9AF99A23 |
:1032B0000FBE089520E030E02617370740F4FC01E8 |
:1032C0008191480F2F5F3F4F26173707C8F3842F90 |
:1032D000992708959091200494FF03C010925601FD |
:1032E00003C081E080935601292F332725FF02C0B8 |
:1032F0001092A401907C11F484E107C0C901807C84 |
:1033000090708038910521F48CE380933701089503 |
:103310008034910511F48AE0F8CF803C910519F4CE |
:1033200087E080933701089586E080931A04109215 |
:103330001B048FEF80931C049091090190931D044E |
:1033400084E680931E0480E480931F0484E08093CD |
:10335000200480910A01981710F080931D044AEA16 |
:1033600067E070E08AE194E00E945A19809321049A |
:10337000089580911A0499278F709070069799F498 |
:103380004AEA67E070E08AE194E00E945A1980936B |
:1033900021042EE439E148E050E06AE174E080E283 |
:1033A00090E00E94AD1A0895CF93DF93EC014AEAB2 |
:1033B00067E070E00E945A199F81981719F085E024 |
:1033C00090E060C04881842F99278F709070069795 |
:1033D00019F084E090E056C0898186FF03C00E9406 |
:1033E000941947C010921B048981282F332720FF8E |
:1033F00003C08A8180931C0421FF03C08B818093CA |
:103400001D0422FF03C08C8180931E0423FF03C090 |
:103410008D8180931F0424FF0AC0909120049E7028 |
:103420008E81817F982B9093200440931A0425FF6E |
:1034300008C090912004917F8E818E70982B90937C |
:10344000200480911E04833718F083E780931E04C4 |
:1034500080911D0490910A01891710F090931D042A |
:103460004AEA67E070E08AE194E00E945A1980938A |
:103470002104898187FF02C00E94B9190E946A193C |
:1034800080E090E0DF91CF91089526E439E148E0B3 |
:1034900050E060E270E08AE194E00E94881A4AEA13 |
:1034A00067E070E08AE194E00E945A194AEA67E016 |
:1034B00070E08AE194E00E945A19282F80911A0442 |
:1034C00099278F709070069721F4809121048217BC |
:1034D00021F00E9494190E94B9190E946A198091E2 |
:1034E0001D0490910A01891710F090931D0480919A |
:1034F0001E04833718F083E780931E040895FB01B0 |
:10350000DC0102C005900D9241505040D8F708955B |
:10351000A0E0B0E0EEE8FAE10C944B1B6C017B01FB |
:10352000EA01590121978FEFCF3FD80789F0860133 |
:103530000894C11CD11CC7010894E11CF11CF501C1 |
:103540000995F80180832197FFEFCF3FDF0779F7D7 |
:10355000EAE0CDB7DEB70C94671BA0E0B0E0E3EB88 |
:10356000FAE10C944D1B8C017B01EA016901219762 |
:103570008FEFCF3FD80771F0F70121917F01C8018C |
:103580000F5F1F4F622FF60109952197FFEFCF3F85 |
:10359000DF0791F7E8E0CDB7DEB70C94691B629FB7 |
:1035A000D001739FF001829FE00DF11D649FE00D3B |
:1035B000F11D929FF00D839FF00D749FF00D659F9C |
:1035C000F00D9927729FB00DE11DF91F639FB00D9B |
:1035D000E11DF91FBD01CF0111240895991B79E068 |
:1035E00004C0991F961708F0961B881F7A95C9F793 |
:1035F00080950895AA1BBB1B51E107C0AA1FBB1FE2 |
:10360000A617B70710F0A61BB70B881F991F5A956E |
:10361000A9F780959095BC01CD01089597FB092EDF |
:1036200007260AD077FD04D0E5DF06D000201AF483 |
:10363000709561957F4F0895F6F7909581959F4F0E |
:103640000895A1E21A2EAA1BBB1BFD010DC0AA1FE3 |
:10365000BB1FEE1FFF1FA217B307E407F50720F0FB |
:10366000A21BB30BE40BF50B661F771F881F991F76 |
:103670001A9469F760957095809590959B01AC01BF |
:10368000BD01CF0108952F923F924F925F926F92AA |
:103690007F928F929F92AF92BF92CF92DF92EF92E2 |
:1036A000FF920F931F93CF93DF93CDB7DEB7CA1B63 |
:1036B000DB0B0FB6F894DEBF0FBECDBF09942A888E |
:1036C000398848885F846E847D848C849B84AA8436 |
:1036D000B984C884DF80EE80FD800C811B81AA81C3 |
:1036E000B981CE0FD11D0FB6F894DEBF0FBECDBF8E |
:0636F000ED010895FFCF7B |
:1036F60001FFFF0101FB0701011E280D000D1E2021 |
:103706004E80000A00F41FFC1F0A4144523A000191 |
:103716000A0D424C3A56000A0D48573A332E3020CD |
:0A3726005265762000FF0014FF003A |
:00000001FF |
/BL-Ctrl_V3/V1.08/BL-Ctrl3_MEGA168_Plus8_V1_08c_ADR9-12.hex |
---|
0,0 → 1,885 |
:100000000C9453010C949D010C949D010C949D0142 |
:100010000C949D010C949D010C949D010C949D01E8 |
:100020000C949D010C94D7130C9478140C949D019E |
:100030000C949D010C949C180C945D180C94DE108B |
:100040000C94D4100C949D010C949F0C0C949D0165 |
:100050000C949D010C949D010C949D010C944417EB |
:100060000C9439160C949D01CA15D715E315E615A5 |
:10007000ED15ED15F315F615F815FA15CD15D7157F |
:10008000E315ED15F0151816FD15001603160616E6 |
:1000900009160C160F16121615161F161F1618160F |
:1000A0001F161F161B1643757272656E7420202072 |
:1000B0005B302E31415D43757272656E74206163F1 |
:1000C000742E2020202043757272656E7420706536 |
:1000D000616B2020202054656D702E202020205B35 |
:1000E000302E31B0435D566F6C74616765202020FF |
:1000F0005B302E31565D72706D2028726177292039 |
:10010000202020202020536574706F696E74202099 |
:100110002020202020204D6178536574706F696E17 |
:1001200074202020202050504D536574706F696EEC |
:10013000742020202020506172616D2E50776D5305 |
:1001400063616C696E67506172616D2E4D617843B9 |
:10015000757272656E74506172616D2E4D61785466 |
:10016000656D702E2020506172616D2E5363616C3D |
:10017000652049202020537461727420436F756E8E |
:10018000742020202020493243204C6F737420209B |
:100190002020202020204932432D424C2D537461D1 |
:1001A000746520202020313620202020202020208F |
:1001B0002020202020203137202020202020202017 |
:1001C0002020202020203138202020202020202006 |
:1001D00020202020202031392020202020202020F5 |
:1001E0002020202020204761702020202020202057 |
:1001F00020202020202049204269617320202020D7 |
:100200002020202020204F76657243757272656E23 |
:100210007420636E742049204375746F66662020D5 |
:10022000202020636E7464652D6D61676E6574694E |
:100230007A6520636E74496E76616C696450756C82 |
:1002400073657320202049204C696D69742020203B |
:100250002020636E7420536C6F70652D4D696E2085 |
:10026000202020202020536C6F70652D4D61782058 |
:100270002020202020204572726F72436F64652019 |
:100280002020202020204861726477617265202040 |
:100290002020202020204C696D69742049202020D6 |
:1002A00020202020202011241FBECFEFD4E0DEBF6D |
:1002B000CDBF11E0A0E0B1E0E6EFF6E302C00590AB |
:1002C0000D92AA33B107D9F714E0AAE3B1E001C057 |
:1002D0001D92A232B107E1F74BEA20EF37E3A8EA1B |
:1002E000B1E09FE0F9012F5F3F4F84918D939150D2 |
:1002F00097FFF8CFE8EAF1E09EE08191482740952A |
:10030000915097FFFACF8091B701481711F0000084 |
:10031000FECF8091AF0180933A018091B00180932C |
:100320000D018091B10180930A018091B201809307 |
:1003300009010E94D3070C947A1B0C940000CF9300 |
:1003400089E191E00E940B0CC09104018C2F805D2B |
:100350008A3328F081E30E94F80B8C2F8A5D0E947B |
:10036000F80BCF9108956BEF77E0409163015091C6 |
:100370006401A0911D042AE0A29FC0011124E09114 |
:100380006101F09162018E179F0780F55798BF01B8 |
:10039000681B790BCB01880F991F880F991FBA0131 |
:1003A000681B790B80910A01829FC0011124C296BB |
:1003B0008E179F07D8F480915601882319F080E0AA |
:1003C00092E002C080E094E09093890080938800DE |
:1003D0008BB1877C8BB960E070E08091FD029091D9 |
:1003E000FE0201969093FE028093FD028091170415 |
:1003F0009927880F991F880F991F2BEF37E0281B2B |
:10040000390B261737070CF4B90180914F018F3F44 |
:1004100071F0282F3327B4E0220F331FBA95E1F78C |
:10042000245D3E4F2617370724F4B90102C010920D |
:100430004E0180913C0190913D01481759070CF401 |
:10044000AC0177FF02C060E070E0641775070CF440 |
:10045000AB0180913E0190913F018417950708F40C |
:10046000AC0180918C01882319F582E080938C0186 |
:1004700085E0A89FC0011124E817F90748F44C59FA |
:100480005F4F50933F0140933E014456504008C097 |
:10049000445F5F4F50933F0140933E014C505040AA |
:1004A0004456504050933D0140933C014C595F4F9E |
:1004B000F894CA0157FD019695958795909341014F |
:1004C00080934001880F991F481B590B40934201AC |
:1004D00078947093D8026093D7020895CF93DF93F6 |
:1004E000E0910F01F091100181E2E330F8071CF078 |
:1004F000C0E0D0E040C089E1E13FF8074CF0CF0117 |
:1005000066E070E00E940E1BCB01C8E7D5E031C069 |
:1005100080E1E33CF8075CF0CF01F7FD0796F3E0DC |
:1005200095958795FA95E1F7CAE6D4E022C089E06F |
:10053000E938F8074CF0CF0166E070E00E940E1B2E |
:10054000CB01CEE1D5E015C085E0E932F80754F0E3 |
:10055000CF01F7FD03969595879595958795CDEEF7 |
:10056000D5E007C0CF01F7FD019695958795CAE3C1 |
:10057000D7E0C81BD90BCE016AE070E00E940E1BC9 |
:1005800060930E01D093D002C093CF026837D0F5AC |
:1005900020910B0130910C012C9FC0012D9F900DDB |
:1005A0003C9F900D1124E92FFF27C90153E0880FCC |
:1005B000991F5A95E1F7820F931F820F931F67E0EF |
:1005C00070E00E940E1BE61BF70B80915D0190917D |
:1005D0005E0143E0969587954A95E1F78E0F9F1F40 |
:1005E0006AE070E00E940E1BFB01C90163E070E04D |
:1005F0000E940E1B6E177F070CF4FB0180910B010C |
:100600008E1B02C080910B0180930D0180915D01D2 |
:1006100090915E01EAEFF0E0E81BF90BE93CF1058F |
:1006200014F0E8ECF0E08FEFEE3CF80714F4EEEC99 |
:10063000FFEF90911E048AE0989FC00111248E0F55 |
:100640009F1FFE01E81BF90B1E161F067CF4EE0F20 |
:10065000FF1FCDEFD0E0CE1BDF0BC230D10514F46D |
:10066000C1E0D0E0C0930201579803C08FEF8093A0 |
:100670000201DF91CF91089580915D0190915E011B |
:100680009093CA028093C9028091610190916201A6 |
:100690002091130130911401821B930B9093CC0293 |
:1006A0008093CB0280911101909112019093D2021C |
:1006B0008093D10280915B0190915C019093D40270 |
:1006C0008093D30280916301909164019093D6024C |
:1006D0008093D50280919301909194019093DA02D6 |
:1006E0008093D90280911C0499279093DC02809317 |
:1006F000DB0280911D0499279093DE028093DD0236 |
:1007000080911E0499279093E0028093DF028091EC |
:100710001F0499279093E2028093E1028091540193 |
:1007200090915501892B39F40E94B7149927909321 |
:10073000E8028093E7028091170499279093FC02C6 |
:100740008093FB0280913C0190913D0190930003C6 |
:100750008093FF0280913E0190913F0190930203AC |
:10076000809301038091B8019927909304038093AB |
:10077000030380910B0190910C01909306038093E9 |
:100780000503809101019927909308038093070343 |
:10079000089560E070E0F894209154013091550183 |
:1007A000E0919B01F0919C01789410923B01909113 |
:1007B0004F01992319F080E180933B012115310508 |
:1007C00059F180913B01816080933B01BF019A30D8 |
:1007D00030F487E0E83FF80710F060E070E0579AE7 |
:1007E00081E02C3C380730F480913B018460809399 |
:1007F0003B010AC0309741F010929401109293018E |
:100800001092030110929001309751F080913B01BA |
:10081000826080933B0104C030939C0120939B0134 |
:1008200081E0223C380758F080914D0180FF02C0E2 |
:10083000309729F08091900188230CF04AC04091B4 |
:100840005201509153014115510579F08091680191 |
:10085000682F7727B3E0660F771FBA95E1F71092FC |
:100860000301579A1092900134C08091900187FF44 |
:1008700025C081E08093030180913B0188608093D3 |
:100880003B01209193013091940189E0253C380788 |
:1008900008F09A0187E02C3F380710F02BEF37E083 |
:1008A0002333310540F4992331F48091500188239A |
:1008B00011F4BA0101C0B901579A0BC0232B09F4F6 |
:1008C0005798BF011092680180916F0080628093F9 |
:1008D0006F0020911C04809102018F3F19F0821754 |
:1008E00008F4282F809101018F3F19F0821708F436 |
:1008F000282F2F3FC1F0CB01AA27BB27332744273E |
:100900005527BC01CD010E94CF1A97FF04C061504A |
:100910007F4F8F4F9F4FBB2797FDBA95A92F982FD9 |
:10092000872FBC0157986115710511F0605B7F4FEF |
:1009300087E06C3F780710F06BEF77E08091A101C2 |
:10094000882311F061E070E0CB0108950E946816E1 |
:100950008091810081608093810080916F0081602F |
:1009600080936F00E0911501F091160180E00995E8 |
:1009700080915601882371F080918000826080937D |
:1009800080008FEF91E0909389008093880084EF3E |
:1009900091E00DC0809180008360809380008FEF94 |
:1009A00093E0909389008093880088EE93E0909381 |
:1009B0008B0080938A00089596B5980F86B5891BA1 |
:1009C00087FDFCCF0895CF939091C10090689093DC |
:1009D000C100C82FC150CF3F59F0579886E990E029 |
:1009E0000E94A011579A8CE291E00E94A011F2CFD0 |
:1009F00088E592E00E94A011CF9108951F93CF93B4 |
:100A0000DF93162FEC0121978FEFCF3FD807A9F086 |
:100A1000812F0E949B1380911301909114018A5B96 |
:100A20009F4F20916101309162018217930758F71F |
:100A30000E94681681E090E002C080E090E0DF91C3 |
:100A4000CF911F910895FF920F931F93CF93DF9340 |
:100A500000E0579A80910401F82EFA9423E0F222E4 |
:100A6000F394282F33278CE291E0289FE001299FFF |
:100A7000D00D389FD00D112480919B0190919C0145 |
:100A8000892B19F4CE010E94A01180B7877F80BF07 |
:100A90000093A201F89488E10FB6F8948093600067 |
:100AA000109260000FBE0E94681660E086E00E940F |
:100AB00061131092600110925F01C9E0D0E081E003 |
:100AC0000E94C7112197D7FFFACF80915F019091C3 |
:100AD00060019093140180931301C39710F000E11B |
:100AE0006EC061E083E00E9461134E978959934084 |
:100AF00008F002E161E087E00E94611380559040B8 |
:100B0000815D924010F001E15AC00E94681619E020 |
:100B100015B98AE00E94DC0461E080E00E94611364 |
:100B2000883C910508F404E00E9468160E9468164B |
:100B30001BB98AE00E94DC0461E080E00E9461133E |
:100B40004A9708F007E00E946816C1E1C5B98AE03B |
:100B50000E94DC0461E0862F0E946113883C9105AD |
:100B600008F405E00E9468160E946816CBB98AE076 |
:100B70000E94DC0461E0862F0E9461134A9708F00E |
:100B800008E00E946816C1E2C5B98AE00E94DC0450 |
:100B900061E082E00E946113883C910508F406E060 |
:100BA0000E9468160E946816CBB98AE00E94DC0495 |
:100BB00061E0862F0E9461134A9708F0012F0E947E |
:100BC000681680919B0190919C01892B09F0F5C0DA |
:100BD00080911A0484FDF1C0002361F0802F8F5BA7 |
:100BE0000E94F80BDFC00CE08DE40E94F80B0E941D |
:100BF0006816D8C08BB1877C8BB98AB188638AB9F3 |
:100C000085B1886385B984B1886384B961E08AE07D |
:100C100090E00E94FE0480911301909114010A96C5 |
:100C200020916101309162018217930708F40BE073 |
:100C300085B1877C85B984B1886384B98BB18863B9 |
:100C40008BB98AB188638AB961E08AE090E00E943A |
:100C5000FE0480911301909114010A962091610184 |
:100C6000309162018217930708F40AE08AEB93E05F |
:100C700090938900809388008CE993E090938B0097 |
:100C800080938A0081E08093A40110E061E088E015 |
:100C900090E00E94FE0489E6F89EC0011124C0E0A5 |
:100CA000D0E08052934009F441C0812F99278130D0 |
:100CB000910571F0823091051CF4892B21F011C04F |
:100CC000029759F00EC00E9475160E94A31609C023 |
:100CD0000E9481160E94AD1604C00E948D160E94CB |
:100CE000991661E082E090E00E94FE04882351F0B2 |
:100CF000012F0F5F812F8F5C0E94F80B0E946816F6 |
:100D000014E614C00E94681661E08F2D99270E9496 |
:100D1000FE04219689E6F89E9001112480E293E07A |
:100D2000821B930BC817D90708F4BFCF1F5F13307E |
:100D300008F4ACCF0E9468168CE092E09093890092 |
:100D4000809388008EEE91E090938B0080938A00D0 |
:100D500061E08AE090E00E94FE04002319F5109201 |
:100D6000620110926101C0E0D0E084B1877C84B957 |
:100D70008AB1877C8AB961E081E090E00E94FE043C |
:100D800080911301909114010A9620916101309194 |
:100D900062018217930708F426CF219684E0C030C1 |
:100DA000D80718F30E9468160093B80178940023BE |
:100DB00021F0802F0E94E304FCCFDF91CF911F919F |
:100DC0000F91FF9008956F927F928F929F92AF92B2 |
:100DD000BF92CF92DF92EF92FF920F931F938C01FD |
:100DE00032E3632E712C812C912C80B7877F80BFDA |
:100DF0001092A201E0911701F09118018CEF099572 |
:100E00000E9468161092620110926101C8019695C5 |
:100E10008795909341018093400180E00E94A31741 |
:100E200080E00E94A31780911704853198F18EE528 |
:100E300091E00E94861190934601809345010CC079 |
:100E400085B1877C85B984B1886384B98BB18863A7 |
:100E50008BB98AB188638AB9809145019091460126 |
:100E60000E949111882361F30E94681680E00E941D |
:100E7000A31788EC90E010C00E9468168FE0809362 |
:100E8000B80181E00E94E30480E090E07FC081E04F |
:100E900090E07CC08EE190E00E9486119093460124 |
:100EA0008093450109C00E949B138091610190913C |
:100EB00062018937910500F78091450190914601C3 |
:100EC0000E949111882379F380B7877F80BF1092A9 |
:100ED000A20110934101009340011092440110922D |
:100EE0004301EE24FF2487016401530183E0AA0C2F |
:100EF000BB1CCC1CDD1C8A95D1F7D601C501860D23 |
:100F0000971DA81DB91D860D971DA81DB91DE816B2 |
:100F1000F9060A071B0748F485E00E94DC040894E0 |
:100F2000E11CF11C011D111DE8CF8091130190916E |
:100F3000140188589F4F20916101309162018217FE |
:100F4000930708F499CFC401B3012FE030E040E0EB |
:100F500050E00E94211B621A730A840A950A0894C1 |
:100F600061087108810891088EE168167104810496 |
:100F7000910408F48CCF8091430190914401892B16 |
:100F800009F0ABCF80E00E94A317A7CF1F910F916C |
:100F9000FF90EF90DF90CF90BF90AF909F908F9099 |
:100FA0007F906F900895CFEFD4E0DEBFCDBF17B82C |
:100FB00080E188B988EB8AB987E08BB91EE014B963 |
:100FC00081E085B9579883E00E94DC0415BC80EE6F |
:100FD0008ABD18BD0E94681680916E008260809361 |
:100FE0006E0080916E00846080936E007894809192 |
:100FF0000D01992790930C0180930B010E94BF1360 |
:101000000E94451A8091C100877F8093C100529849 |
:101010005A9AE0911701F09118018CEF099589E037 |
:1010200090E00E94A0118091C100877F8093C10051 |
:101030008091B40082FF06C0499B02C081E007C0D6 |
:1010400083E005C0499B02C082E001C084E0809338 |
:1010500004010E94A6048091B40082FF13C05A9834 |
:10106000529A8AE090E00E94A011F89452985A9AFD |
:10107000E0911701F09118018CEF099578944A9945 |
:1010800019C013C0529A5A9A8AE090E00E94A011A7 |
:10109000F89452985A985A9AE0911701F0911801D1 |
:1010A0008CEF099578944A9B05C0809104018C5F70 |
:1010B0008093040180910401885F80930401529819 |
:1010C000529A8091C10088608093C1000E94240CD4 |
:1010D00080E50E94FE140E94B61180E00E949B13DE |
:1010E00084EF91E00E948611909346018093450120 |
:1010F00006C080919B0190919C01892B41F48091C5 |
:101100004501909146010E949111882391F310921C |
:101110006401109263010E94B30181E080937C001E |
:10112000109294011092930185B910921B041092B1 |
:1011300056010E9423050E946A190E94040C0E9415 |
:101140009F010E94240C8091C10080688093C1009F |
:101150000E9468161092A4018BB5992790930C01F8 |
:1011600080930B0110928B0110928A01109238012A |
:101170000E94C9039093640180936301892B31F429 |
:101180000E94C903909364018093630180914E0192 |
:10119000863008F057988091630190916401892B03 |
:1011A00009F047C01092500110924F011092A40113 |
:1011B0000E94681680914701909148010E94911108 |
:1011C000882309F458C010924E011092B80180B7DC |
:1011D000877F80BF1092A20181E080930701109267 |
:1011E00017048091130190911401209161013091B5 |
:1011F00062012817390710F4019704C0821793077A |
:1012000028F40196909314018093130182E390E0F7 |
:101210000E948611909348018093470180911301A9 |
:10122000909114019093F4028093F30212BC11BCCC |
:1012300022C080910701882369F420915B013091DD |
:101240005C012430310550F480914F01853630F037 |
:101250008A3F20F481E08093500105C02930310598 |
:1012600010F0109250018CED95E00E948611909341 |
:101270004801809347012091A1012223A1F480918C |
:10128000430190914401892B71F080911704883CAF |
:1012900050F42093070186E990E00E948611909314 |
:1012A00046018093450180910701882321F0109227 |
:1012B0006401109263010E94B30180910801815082 |
:1012C00080930801809108018F3F09F051CF8091F0 |
:1012D000630190916401892B11F48AE001C084E6D6 |
:1012E000809308010E945D1680916701882321F098 |
:1012F0000E948C0F0E94860E80914B0190914C01B0 |
:101300000E949111882309F42FC182E390E00E948A |
:10131000861190934C0180934B018091A101882309 |
:1013200091F08091A10181508093A1018091A10150 |
:10133000882349F48091F5029091F60201969093EA |
:10134000F6028093F5028091590190915A01209103 |
:10135000570130915801B9010E94FA1A8091610138 |
:101360009091620190935A018093590181E090E03D |
:10137000909358018093570180911301909114012B |
:101380006817790798F0681B790B80911F049927DB |
:10139000689F9001699F300D789F300D1124B9012D |
:1013A00016E0769567951A95E1F702C060E070E067 |
:1013B00080915D0190915E018617970710F4019668 |
:1013C00004C06817790728F4019790935E01809311 |
:1013D0005D0180915D0190915E018B30910588F0F7 |
:1013E000681B790B77FF02C0695F7F4FC3E075957B |
:1013F0006795CA95E1F7860F971F90935E018093DA |
:101400005D01E0915D01F0915E01CF016AE070E065 |
:101410000E94FA1A40911D04842F99278617970776 |
:10142000F0F48AE0489FC00111249F01281B390B6A |
:10143000C901880F991F820F931F2DEF30E0281BE1 |
:10144000390B2931310514F429E130E02F3F310502 |
:1014500019F014F02FEF30E02093010103C08FEF5B |
:1014600080930101F8946091430170914401AB01B4 |
:101470005695479520915B0130915C012417350703 |
:1014800028F450935C0140935B0118C0C901880F98 |
:10149000991F820F931F840F951F96958795969598 |
:1014A000879590935C0180935B01672B39F40097DB |
:1014B00029F0019790935C0180935B0110924401A5 |
:1014C0001092430178940E946E02809167018823F4 |
:1014D00021F081508093670102C080934D0180917B |
:1014E000A4018823B1F480914F01813590F080915F |
:1014F0001101909112018536910558F08091A1015A |
:10150000882339F48091200485FD03C081E0809315 |
:10151000A40180914F018E3120F481E0809300017D |
:1015200023C020915B0130915C012734310548F4E0 |
:1015300080915D0190915E01409740F02933310523 |
:1015400028F0F8941092000178940EC027333105EA |
:1015500058F480916101909162010F9728F4F894FA |
:1015600081E08093000178948091490190914A0133 |
:101570000E9491118823F1F085E090E00E9486118D |
:1015800090934A018093490180915B0190915C01A5 |
:10159000892B39F080914F018F3F19F08F5F809335 |
:1015A0004F0180910701882329F0F89480E00E9480 |
:1015B0009A12789480914501909146010E94911170 |
:1015C000882329F480915001882309F4D1CD80919A |
:1015D0005B0190915C014E9708F0CACD84E690E0E3 |
:1015E0000E948611909346018093450110924F010D |
:1015F00051E0F52EF09207011092A40180B7877F89 |
:1016000080BF1092A2010E94C903892B09F4B0CDBA |
:1016100080910F01909110018958994008F4A8CD4C |
:101620001092600110925F0110925001809120048D |
:1016300099278E70907004E110E0809FE001819FF7 |
:10164000D00D909FD00D1124A096F0920001109221 |
:10165000A401C0905201D09053018091E302909177 |
:10166000E40201969093E4028093E302CE010E948B |
:10167000E306882309F47CCDD0925301C092520135 |
:1016800010924101109240018091A201882319F427 |
:1016900080B7886180BFF092A2011092070110927A |
:1016A00017041092440110924301C8010E94861150 |
:1016B00090934601809345018091450190914601A8 |
:1016C0000E9491118823C1F310925C0110925B017A |
:1016D0008AE090E090934101809340018C179D0730 |
:1016E000E0F580914001909141010A96909341016B |
:1016F0008093400184E190E00E948611909346011E |
:101700008093450113C080916101909162018937F6 |
:10171000910540F00E9468168FE08093B80181E047 |
:101720000E94E3040E948C0F0E94860E8091450166 |
:10173000909146010E949111882329F380914301E1 |
:1017400090914401892B49F0109244011092430179 |
:101750008091400190914101C1CF80914E01882339 |
:1017600021F0813039F4CC0FDD1FD0934101C093BB |
:10177000400109C0CE01880F991F8C0F9D1F9093C7 |
:1017800041018093400184E690E00E94861190938D |
:1017900046018093450104C00E948C0F0E94860E72 |
:1017A00080914501909146010E9491118823A1F3F7 |
:1017B00080914E018F5F80934E01D0925301C09271 |
:1017C000520182E390E00E94861190934A01809337 |
:1017D000490188EC90E00E94861190934601809325 |
:1017E00045011092FA021092F9021092A101C0CCA8 |
:1017F000982F8091C10083FF06C08091C00085FFB3 |
:10180000FCCF9093C60008958DE00E94F80B8AE00B |
:101810000E94F80B08951F93CF93DF93EC0110E023 |
:101820008881882369F0FE01E10FF11D1F5F80812F |
:101830000E94F80BFE01E10FF11D8081882399F7CA |
:10184000DF91CF911F9108950F931F930FB788E1F8 |
:101850008093C1001092710110926F0110926E017D |
:1018600010926D0181E080931F018093BD0288E09A |
:101870008093BE0282E08093C1028BE08093BF021E |
:101880001092C00280E291E00E940B0C81E30E9462 |
:10189000F80B8EE20E94F80B80E30E94F80B88E3BD |
:1018A0000E94F80B83E60E94F80B87E291E00E9409 |
:1018B0000B0C1AE080913A01612F0E94EE1A805DB4 |
:1018C0000E94F80B80913A01612F0E94EE1A892F35 |
:1018D000805D0E94F80B0FBF10926C011F910F9159 |
:1018E00008958091C00086FF29C080911F01882340 |
:1018F00009F58091720190917301019690937301A3 |
:1019000080937201FC01E75FFC4FE081ED3019F03C |
:101910008A3F910539F4109273011092720181E0AF |
:1019200080931F018091C00081608093C000E0938C |
:10193000C6000895109273011092720108951F92CB |
:101940000F920FB60F9211242F933F934F935F93F3 |
:101950008F939F93AF93BF93CF93DF93EF93FF93B7 |
:101960005091C60080917101882309F062C04091B6 |
:101970006C01442371F4533279F45093B90181E03E |
:1019800080936C0183E290E09093750180937401E1 |
:1019900050C04A3F08F049C0209174013091750150 |
:1019A000E42FFF275D3069F0E754FE4F50834F5F0F |
:1019B00040936C01250F311D309375012093740104 |
:1019C00038C0DF01A754BE4FFD0132978081281B2C |
:1019D0003109ED0121978881281B3109C9019F70C8 |
:1019E0009093750180937401689415F89695879586 |
:1019F0001694E1F7982F935C2F733070235C8081ED |
:101A0000981771F48881281759F484E68093670148 |
:101A10005C934F5F4093700181E08093710102C03D |
:101A20001092710110926C0104C080936C0180933C |
:101A30007101FF91EF91DF91CF91BF91AF919F9194 |
:101A40008F915F914F913F912F910F900FBE0F900B |
:101A50001F901895A0E0B0E09D01482F5527A417CE |
:101A6000B50748F4E9E0F3E08191280F311D1196A4 |
:101A7000A417B507C8F33F70FD01E75FFC4FC9012C |
:101A800076E0969587957A95E1F7835C8083119649 |
:101A9000FD01E75FFC4F2F733070822F835C8083E2 |
:101AA000A65FBC4F8DE08C9310921F0180910903BB |
:101AB0008093C6000895CF92DF92EF92FF920F932A |
:101AC0001F93CF93DF93CDB7DEB72B859C850D8514 |
:101AD000DD2483E2809309039F5990930A032093A6 |
:101AE0000B0333E0C32E002309F49AC0EE84FF8475 |
:101AF000BE016E5E7F4FA889B9890150109709F425 |
:101B00008FC01097B9F0F701ED0DF11DD3949081BE |
:101B1000119791F4002349F1FB016E5F7F4FDB01C8 |
:101B2000E080F1806E5F7F4F0D90BC91A02DDD2491 |
:101B3000015002C090E019C01097B9F0F701ED0D07 |
:101B4000F11DD3944081119791F4002341F1FB01E1 |
:101B50006E5F7F4FDB01E080F1806E5F7F4F0D9005 |
:101B6000BC91A02DDD24015002C040E018C01097A8 |
:101B7000B1F0F701ED0DF11DD3941081119781F4AF |
:101B8000002371F0FB013296DB01ED90FC90BF0168 |
:101B90006E5F7F4FA081B181DD24015001C010E054 |
:101BA000EC2DFF27E75FFC4F892F86958695835C98 |
:101BB0008083C394EC2DFF27E75FFC4F892F992783 |
:101BC0008370907024E0880F991F2A95E1F75527BC |
:101BD0009A0194E0369527959A95E1F7822B835CDC |
:101BE0008083C394EC2DFF27E75FFC4F4F7050704C |
:101BF000440F551F440F551F812F992726E09695B6 |
:101C000087952A95E1F7842B835C8083C394EC2D20 |
:101C1000FF27E75FFC4F1F73135C1083C3946ECFE5 |
:101C20008C2D0E942A0DDF91CF911F910F91FF9073 |
:101C3000EF90DF90CF900895A3E07A2F409170014C |
:101C40004650442309F458C0E72FFF27E754FE4FBE |
:101C500080818D537F5FE72FFF27E754FE4F208160 |
:101C60002D537F5FE72FFF27E754FE4F30813D5311 |
:101C70007F5FE72FFF27E754FE4F60816D537F5F43 |
:101C80009927880F991F880F991F522F52955F70BF |
:101C9000582B822F99278F709070F4E0880F991F2E |
:101CA000FA95E1F7232F26952695282B832F992740 |
:101CB00083709070E6E0880F991FEA95E1F7682B32 |
:101CC00041504F3FC9F0EA2FFF27E754FE4F5083A2 |
:101CD000AF5F41504F3F81F0EA2FFF27E754FE4F9F |
:101CE0002083AF5F41504F3F39F0EA2FFF27E75481 |
:101CF000FE4F6083AF5FA5CF8CEB91E090936F01B7 |
:101D000080936E01A350A0936D010895809171019D |
:101D1000882309F400C10E941C0E8091BA018B3601 |
:101D200068F08091BA01282F332780910401992708 |
:101D300085599F4F2817390709F0E5C08091BB01ED |
:101D400099278436910509F4B5C0853691059CF430 |
:101D50008235910519F18335910544F4813291055D |
:101D600009F46AC08B9709F4C7C0CDC081369105CC |
:101D700009F4B5C0C8C085379105E9F086379105EB |
:101D80002CF48437910509F444C0BDC08637910511 |
:101D900009F4A1C08737910521F1B5C088E190E031 |
:101DA0002CE00FB6F894A895809360000FBE2093A6 |
:101DB0006000F894FFCFE0916E01F0916F01908187 |
:101DC00080910401981719F08081882319F41092EA |
:101DD000690103C082E08093690180916B01886092 |
:101DE00088C0E0916E01F0916F018081882329F015 |
:101DF000908180910401981729F4CF0101960E94E7 |
:101E0000D41901C082E08093690180916B018061E7 |
:101E100070C080910401E0916E01F0916F01E80FB4 |
:101E2000F11D319780818093680180E293E0909367 |
:101E300053018093520167C084EF91E09093530166 |
:101E40008093520120910401A0916E01B0916F0125 |
:101E5000FD01E20FF11D8081809368018C9187FD67 |
:101E600006C080910701882311F0109268018091CB |
:101E70006801882369F080913B0182FD03C08C9149 |
:101E800088231CF481E080934D0180914D01826094 |
:101E900080934D01E0916E01F0916F01808199274F |
:101EA0008F70907033278217930769F580916B01CB |
:101EB00080621FC0E0916E01F0916F0190818AE015 |
:101EC000989FC001112490936601809365018091D1 |
:101ED0006B0182600EC080916B0181600AC0E0914D |
:101EE0006E01F0916F01808180936A0180916B0196 |
:101EF000846080936B0107C0E0916E01F0916F01E7 |
:101F000080818093C40010926F0110926E01109234 |
:101F10006D01109271010895CF93DF93CDB7DEB7B5 |
:101F200021970FB6F894DEBF0FBECDBF80911F0181 |
:101F3000882319F40E94710C2EC180916B0199279E |
:101F400085FF37C080913B01809376010E949C14ED |
:101F5000809377010E94B7148093780180910E01DD |
:101F60008093790180911101909112018135910541 |
:101F700030F080911101805580937A0104C0109255 |
:101F800012011092110185E090E09F938F9386E7F4 |
:101F900091E09F938F9381E08F9380910401865FFE |
:101FA0008F938FE38F930E945B0D80916B018F7DE8 |
:101FB00070C082FF30C080916A01992724E0880FA9 |
:101FC000991F2A95E1F78A559F4F40E150E0BC01E7 |
:101FD00086E791E00E947F1A80E190E09F938F93C3 |
:101FE00086E791E09F938F9381E090E09F938F939A |
:101FF0008AE691E09F938F9382E08F9385E08F93A1 |
:1020000081E48F930E945B0D8FEF80936A01809132 |
:102010006B018B7FB6C08091650190916601892B21 |
:1020200041F080910D0490910E040E94911188233B |
:1020300029F480916B01992781FF31C00E943C03F4 |
:1020400080915F01909160019093CE028093CD02C8 |
:102050001092600110925F0182E490E09F938F9351 |
:1020600087EC92E09F938F9381E08F9385E08F932D |
:1020700084E48F930E945B0D8091650190916601CD |
:102080000E94861190930E0480930D0480916B0141 |
:102090008D7F80936B018DB79EB7079677C080FFC9 |
:1020A00014C08AE090E09F938F938DEB92E09F9312 |
:1020B0008F9381E08F9385E08F9386E58F930E94C5 |
:1020C0005B0D80916B018E7FE4CF83FF36C08091E2 |
:1020D0006901882319F481E0898301C0198288E0AD |
:1020E00090E09F938F938AE194E09F938F9321E0F8 |
:1020F00030E03F932F9384E091E09F938F933F9341 |
:102100002F9389E691E09F938F933F932F93CE0176 |
:10211000820F931F9F938F9384E08F9385E08F931B |
:1021200085E58F930E945B0D80916B01877F809383 |
:102130006B018DB79EB7439629C084FF2CC0809158 |
:102140006901882319F481E0898301C0198221E0A3 |
:1021500030E03F932F9389E691E09F938F933F93D5 |
:102160002F93CE01820F931F9F938F9382E08F93C3 |
:1021700085E08F9387E58F930E945B0D80916B01C3 |
:102180008F7E80936B018DB79EB70B960FB6F89438 |
:102190009EBF0FBE8DBF21960FB6F894DEBF0FBE57 |
:1021A000CDBFDF91CF9108951F920F920FB60F927E |
:1021B00011240F900FBE0F901F9018951F920F9231 |
:1021C0000FB60F9211242F933F934F935F936F930A |
:1021D0007F938F939F93AF93BF93EF93FF9388B5B4 |
:1021E000845688BD80918D01815080938D01882314 |
:1021F00009F07BC082E080938D0180918A019091EB |
:102200008B01019690938B0180938A0188E190E085 |
:102210002BE00FB6F894A895809360000FBE209332 |
:1022200060008091540190915501009719F1019738 |
:10223000909355018093540121E0883B920739F037 |
:1022400021E08C32920719F08436910599F480E5EB |
:102250000E94FE148091540190915501885B914039 |
:1022600049F48091E5029091E60201969093E6028E |
:102270008093E50280919101882331F08091910152 |
:1022800081508093910102C080939001809152010E |
:1022900090915301009729F00197909353018093F7 |
:1022A000520180918C01882329F080918C0181500A |
:1022B00080938C0180913501909136010197909324 |
:1022C0003601809335018F5F9F4F79F488E795E061 |
:1022D000909336018093350180915401909155017E |
:1022E000892B19F480E50E94FE14FF91EF91BF91B4 |
:1022F000AF919F918F917F916F915F914F913F919E |
:102300002F910F900FBE0F901F9018959C01F8947D |
:1023100080918A0190918B017894820F931F01978D |
:102320000895F89420918A0130918B01821B930BC0 |
:10233000892F992780787894992787FD909508951B |
:10234000CF93DF930E948611EC0108C08091670152 |
:10235000882321F00E948C0F0E94860ECE010E94DD |
:102360009111882399F3DF91CF91089587EA8093A3 |
:102370007A0087EC80937C0080917A00806480935F |
:102380007A0080917B00806480937B000895CF93D6 |
:10239000DF93C82F96EC90937C0080B7806880BF55 |
:1023A00084ED80937A0080917A00806180937A0036 |
:1023B00090937C0080917A00806480937A00809171 |
:1023C000590190915A0180569A4EB8F48091590162 |
:1023D00090915A012091610130916201820F931F07 |
:1023E00090935A018093590180915701909158011F |
:1023F0000196909358018093570180917A0084FD53 |
:102400000DC0CC23D1F38091BC0087FF02C00E9495 |
:102410000A15B59BF2CF0E94E813EFCFC091780068 |
:10242000D091790080910D019927C89F9001C99F93 |
:10243000300DD89F300D112445E0369527954A95EB |
:10244000E1F7309362012093610180915F019091E7 |
:1024500060018217930720F43093600120935F019D |
:1024600032E0C935D30708F454C00E946816809141 |
:102470005601882319F080E092E002C080E094E0E9 |
:10248000909389008093880010924101109240013E |
:10249000109242011092A40180913E0190913F015F |
:1024A00020916301309164012817390720F430939B |
:1024B0003F0120933E018AE080938C018091F702D6 |
:1024C0009091F80201969093F8028093F70283E0CE |
:1024D000C73BD80750F083E08093A10180914F0162 |
:1024E000833318F082E380934F0180910D01992787 |
:1024F000C89F9001C99F300DD89F300D1124C9018C |
:1025000025E0969587952A95E1F79093620180934F |
:10251000610184E080937A0080917B0080648093E5 |
:102520007B0080B78F7780BF80B7806180BFDF91ED |
:10253000CF9108951F93CF93182F8091510181500F |
:10254000809351018F3F09F0B6C08EE18093510115 |
:1025500080918E01815080938E018F3F09F058C089 |
:10256000C0917C0097EC90937C0080B7806880BF1E |
:1025700084ED80937A0080917A00806180937A0064 |
:1025800090937C0080917A00806480937A0080919F |
:102590007A0084FD0DC01123D1F38091BC0087FF28 |
:1025A00002C00E940A15B59BF2CF0E94E813EFCF3C |
:1025B000C0937C002091780030917900C901E4E05B |
:1025C000880F991FEA95E1F7820F931F67E170E08A |
:1025D0000E94FA1A8091110190911201860F971FA3 |
:1025E00096958795909312018093110184E08093D2 |
:1025F0007A0080917B00806480937B0080B78F7726 |
:1026000080BF80B7806180BF83E080938E0156C019 |
:10261000C0917C0093EC90937C0080B7806880BF71 |
:1026200084ED80937A0080917A00806180937A00B3 |
:1026300090937C0080917A00806480937A008091EE |
:102640007A0084FD0DC01123D1F38091BC0087FF77 |
:1026500002C00E940A15B59BF2CF0E94E813EFCF8B |
:10266000C0937C0080917800909179009C0163E098 |
:10267000220F331F6A95E1F7280F391F280F391FE2 |
:1026800080910F0190911001820F931F969587956D |
:102690009093100180930F0184E080937A008091E1 |
:1026A0007B00806480937B0080B78F7780BF80B78A |
:1026B000806180BF03C0812F0E94C711CF911F91FD |
:1026C00008951F93CF93C62F10917C00982F906C84 |
:1026D00090937C0080B7806880BF86ED80937A00FD |
:1026E00080917A00806180937A0090937C00809141 |
:1026F0007A00806480937A0080917A0084FD09C01A |
:10270000CC23D1F38091BC0087FFF6CF0E940A153D |
:10271000F3CF10937C0087E080937A0080B78F77A7 |
:1027200080BF80B7806180BF8091780090917900F0 |
:10273000CF911F910895682F86E00E946113209128 |
:102740000D013327829FA001839F500D929F500D52 |
:1027500011249A01F5E036952795FA95E1F7309323 |
:1027600062012093610180915F0190916001821765 |
:10277000930720F43093600120935F0108958091C6 |
:102780008100806C809381008091810080648093BF |
:10279000810080916F00806280936F0080916F0054 |
:1027A000816080936F0082E08093B10008951F9252 |
:1027B0000F920FB60F9211248F93809192018F5F29 |
:1027C000809392018F910F900FBE0F901F901895DC |
:1027D00080916F0085FF8AC08091810086FF17C0BD |
:1027E0001092B20081E08093700010928F0180916E |
:1027F00092018093970110929201809181008F7BCA |
:102800008093810084E680939101B89A6FC0109202 |
:10281000B100B89B05C0809192018F5F80939201B7 |
:102820002091B200809192019927582F4427420F9E |
:10283000511D509396014093950182E08093B10021 |
:1028400080918100806480938100809190018F3F0E |
:1028500051F04B5C58404552524028F48091900111 |
:102860008F5F8093900180919501909196012AE06D |
:10287000803F92073CF0805F9A409093960180934E |
:10288000950104C0109296011092950180919701D4 |
:10289000843688F480914F01882369F080919501F6 |
:1028A000909196012091930130919401820F931F92 |
:1028B0009695879517C080919301909194019C0102 |
:1028C00043E0220F331F4A95E1F7281B390B809113 |
:1028D000950190919601820F931F23E0969587951D |
:1028E0002A95E1F79093940180939301B59A089506 |
:1028F0001F920F920FB60F9211242F933F934F9375 |
:102900005F936F937F938F939F93AF93BF93EF9357 |
:10291000FF930E94E813FF91EF91BF91AF919F91B8 |
:102920008F917F916F915F914F913F912F910F9078 |
:102930000FBE0F901F90189580915D0190915E01E0 |
:10294000893C910518F480915D010CC022E0853E20 |
:10295000920750F4885C90406AE070E00E94FA1A96 |
:10296000CB018853992708958EEF90E008958091C8 |
:10297000B8018823F1F580919B0190919C01892BEE |
:1029800071F480916801882351F48091200485FDC1 |
:1029900003C088EF90E0089589EF90E0089580915A |
:1029A000A101882319F084E690E0089580914F01F9 |
:1029B000823350F480914E01863018F087E290E027 |
:1029C000089588E290E0089580914D01882359F0A0 |
:1029D000809101018F3F39F4809102018F3F19F4FA |
:1029E0008EEF90E008959091010180910201891786 |
:1029F00010F499270895892F992708951092BC0003 |
:102A000090910401990F980F9093BA0085EC8093F0 |
:102A1000BC0008958091B9009927887F9070803814 |
:102A2000910529F1813891053CF4009709F411C111 |
:102A30008036910591F019C1883B910509F494C045 |
:102A4000893B91052CF4883A910509F48DC00DC19C |
:102A5000883F910509F4FDC008C18091BC008068E1 |
:102A60008093BC0010929F0110929E0108954091A6 |
:102A7000BB008091BC0080688093BC0080919E0167 |
:102A8000282F33278F5F80939E0121303105B9F1C4 |
:102A9000223031051CF4232B31F05CC0223031058B |
:102AA00009F448C057C0442369F480919D018823EC |
:102AB00049F08091540190915501892B19F081E0E2 |
:102AC00090E011C08091540190915501892B81F0C3 |
:102AD00080919D01882361F0842F992753E0880F0E |
:102AE000991F5A95E1F790939C0180939B0104C034 |
:102AF00010929C0110929B0140939D012EC0209149 |
:102B00009B0130919C012115310551F0842F9927AB |
:102B100087709070280F391F30939C0120939B0180 |
:102B2000842F992733E0969587953A95E1F780931E |
:102B30009F0113C080919801883078F480919801AA |
:102B4000E82FFF27E15FFB4F40838F5F8093980161 |
:102B500082E001C08EEF80939E0184EF91E090931C |
:102B6000550180935401089580919F01282F3327A8 |
:102B7000442755278F5F80939F01F9012F3131053D |
:102B800008F05DC0EC5CFF4FEE0FFF1F0590F49165 |
:102B9000E02D09940E949C144FC080915D0190919A |
:102BA0005E0121E08E3F9207A8F08EEF45C00E94A3 |
:102BB000B7148093BB008091BB0099279093E802E3 |
:102BC0008093E70242C080910E0136C080915B0184 |
:102BD00090915C01969587952FC0809111012CC032 |
:102BE00080915B0129C08091990126C081E024C0B9 |
:102BF00088E022C00E949C141FC080911A041CC04F |
:102C000080911B0419C080911C0416C080911D0482 |
:102C100013C080911E0410C080911F040DC08091CC |
:102C200020040AC08091210407C08091B80104C02B |
:102C30001092BB000AC085EA8093BB0006C08FEFEC |
:102C40008093BB008EEF80939F018091BC008068D1 |
:102C50000DC085ED8093BC008091990190919A01FF |
:102C6000019690939A018093990185EC8093BC0022 |
:102C700008951F920F920FB60F9211242F933F9336 |
:102C80004F935F936F937F938F939F93AF93BF9374 |
:102C9000EF93FF930E940A15FF91EF91BF91AF91BF |
:102CA0009F918F917F916F915F914F913F912F9164 |
:102CB0000F900FBE0F901F9018958091980188304B |
:102CC00030F08FE094E00E94D4191092980108959A |
:102CD0008BB1877C8BB98AB188638AB985B1877CCF |
:102CE00085B984B1886384B908958AB180638AB94B |
:102CF00084B1806384B923988091A4018111539891 |
:102D000008958AB188628AB984B1886284B92498A6 |
:102D10008091A4018111549808958AB188618AB97B |
:102D200084B1886184B925988091A4018111559856 |
:102D300008958BB18F7C8BB9539A8091A101882320 |
:102D400009F45B9A08958BB1877D8BB9549A809171 |
:102D5000A101882309F45C9A08958BB1877E8BB911 |
:102D6000559A8091A101882309F45D9A08950F93E3 |
:102D70001F93CF93DF9380913801882309F07FC0A0 |
:102D800000B605FE03C000B600FC06C000B605FC98 |
:102D900076C000B600FC73C015BC16B58091A501C5 |
:102DA000012F081B80910001202F3327882331F049 |
:102DB0008091A601E901C80FD11D03C0E901C20F2E |
:102DC000D31F80915B0190915C01839710F4C0E95F |
:102DD000D1E080913701282F3327CE01B9010E941D |
:102DE000FA1ACB01663020F41F5F17BD115003C0E3 |
:102DF000810F855087BD85B5836085BD21E0209317 |
:102E000038011092180480B7877F80BF809100013D |
:102E1000882351F0CE0166E070E00E94FA1ACB01DF |
:102E2000810F8093A0011DC0CE0196958795969540 |
:102E30008795810F8093A001C533D10560F40E946E |
:102E40006816809117048B3F60F4809117048F5FA0 |
:102E50008093170406C0CF3FD10509F010F42093EA |
:102E60001804CE0196958795810F809319041093CD |
:102E7000A5010093A601D093F202C093F102DF9165 |
:102E8000CF911F910F9108951F920F920FB60F923D |
:102E900011242F933F934F935F936F937F938F935F |
:102EA0009F93AF93BF93EF93FF938091000188238B |
:102EB00011F40E94B716FF91EF91BF91AF919F91CE |
:102EC0008F917F916F915F914F913F912F910F90D3 |
:102ED0000FBE0F901F90189580911804882391F1D0 |
:102EE00025C08091BC0087FF02C00E940A15B59BD7 |
:102EF00002C00E94E8138091190496B5891B87FFD0 |
:102F000015C00E946816809117048C3D28F48091AA |
:102F10001704825E809317048091F9029091FA025F |
:102F200001969093FA028093F902089500B600FE8C |
:102F300003C000B605FCD5CF00B600FC03C000B648 |
:102F400005FECFCF0895CF93C82F80914301909174 |
:102F500044010196909344018093430180912004A1 |
:102F600080FD4CC08091A301992782309105E1F04A |
:102F7000833091052CF4009749F0019791F033C00C |
:102F80008330910511F1049739F12DC00E94AD16DF |
:102F90008C2F0E949A1281EC80937C0080B78E7FE8 |
:102FA0004BC00E9481165FC00E9499168C2F0E9410 |
:102FB000C71182EC80937C0080B78E7F80BF8091A8 |
:102FC000A3018F5F8093A30172C00E948D168C2F86 |
:102FD0000E94C71181EC59C00E94A3168C2F0E9439 |
:102FE000C71180ECE7CF0E9475168C2F0E94C71185 |
:102FF00082EC80937C0080B7836056C08091A301EF |
:1030000099278230910569F1833091052CF400975E |
:1030100049F0019719F13EC08330910549F10497B9 |
:1030200071F138C00E9475168C2F0E949A1281ECA3 |
:1030300080937C0080B7836080BF8091A3018F5F05 |
:103040008093A3010E946C1780911704882389F153 |
:10305000809117048150809317042BC00E94A316FF |
:10306000A5CF0E948D168C2F0E94C71180EC0DC039 |
:103070000E9499168C2F0E94C71181EC9BCF0E9451 |
:1030800081168C2F0E94C71182EC80937C0080B740 |
:10309000836094CF0E94AD168C2F0E94C71180ECE4 |
:1030A00080937C0080B78E7F80BF1092A3010E9426 |
:1030B0006C1710920801CF9108951F920F920FB6CE |
:1030C0000F9211242F933F934F935F936F937F93AE |
:1030D0008F939F93AF93BF93EF93FF93909138019A |
:1030E000913051F482E0809338018091A00187BD36 |
:1030F000892F0E94A3170FC080913801823059F4A4 |
:103100001092380180B7886180BF809100018823C8 |
:1031100011F40E94B716FF91EF91BF91AF919F916B |
:103120008F917F916F915F914F913F912F910F9070 |
:103130000FBE0F901F9018951F920F920FB60F920F |
:1031400011242F933F934F935F936F937F938F93AC |
:103150009F93AF93BF93EF93FF938091560190910C |
:10316000A7018823E9F1292F33279F5F9093A701B7 |
:103170002130310579F0223031051CF4232B29F060 |
:103180001DC02230310579F019C0209140013091E5 |
:10319000410106C020914001309141012F5F3F4F16 |
:1031A0003695279515C02091400130914101369503 |
:1031B000279580914201280F311D0AC020914001BE |
:1031C000309141012F5F3F4F369527951092A7010F |
:1031D000809180008E7F809380008FEF91E01DC0F2 |
:1031E0009F5F9093A701915029F420914001309165 |
:1031F00041010CC080914201209140013091410178 |
:10320000882311F02F5F3F4F1092A701809180001B |
:103210008160809380008FEF93E0821B930B9C0171 |
:103220008F31910520F0AC014E51504002C040E07A |
:1032300050E0809181008E7F8093810030938900DF |
:103240002093880050938B0040938A0080918100E6 |
:1032500081608093810080910001882331F080910A |
:10326000A201882311F00E94B716FF91EF91BF9140 |
:10327000AF919F918F917F916F915F914F913F910E |
:103280002F910F900FBE0F901F901895F999FECFB8 |
:1032900092BD81BDF89A80B599270895F999FECF1E |
:1032A0001FBA92BD81BD60BD0FB6F894FA9AF99A23 |
:1032B0000FBE089520E030E02617370740F4FC01E8 |
:1032C0008191480F2F5F3F4F26173707C8F3842F90 |
:1032D000992708959091200494FF03C010925601FD |
:1032E00003C081E080935601292F332725FF02C0B8 |
:1032F0001092A401907C11F484E107C0C901807C84 |
:1033000090708038910521F48CE380933701089503 |
:103310008034910511F48AE0F8CF803C910519F4CE |
:1033200087E080933701089586E080931A04109215 |
:103330001B048FEF80931C049091090190931D044E |
:1033400084E680931E0480E480931F0484E08093CD |
:10335000200480910A01981710F080931D044AEA16 |
:1033600067E070E08AE194E00E945A19809321049A |
:10337000089580911A0499278F709070069799F498 |
:103380004AEA67E070E08AE194E00E945A1980936B |
:1033900021042EE439E148E050E06AE174E080E283 |
:1033A00090E00E94AD1A0895CF93DF93EC014AEAB2 |
:1033B00067E070E00E945A199F81981719F085E024 |
:1033C00090E060C04881842F99278F709070069795 |
:1033D00019F084E090E056C0898186FF03C00E9406 |
:1033E000941947C010921B048981282F332720FF8E |
:1033F00003C08A8180931C0421FF03C08B818093CA |
:103400001D0422FF03C08C8180931E0423FF03C090 |
:103410008D8180931F0424FF0AC0909120049E7028 |
:103420008E81817F982B9093200440931A0425FF6E |
:1034300008C090912004917F8E818E70982B90937C |
:10344000200480911E04833718F083E780931E04C4 |
:1034500080911D0490910A01891710F090931D042A |
:103460004AEA67E070E08AE194E00E945A1980938A |
:103470002104898187FF02C00E94B9190E946A193C |
:1034800080E090E0DF91CF91089526E439E148E0B3 |
:1034900050E060E270E08AE194E00E94881A4AEA13 |
:1034A00067E070E08AE194E00E945A194AEA67E016 |
:1034B00070E08AE194E00E945A19282F80911A0442 |
:1034C00099278F709070069721F4809121048217BC |
:1034D00021F00E9494190E94B9190E946A198091E2 |
:1034E0001D0490910A01891710F090931D0480919A |
:1034F0001E04833718F083E780931E040895FB01B0 |
:10350000DC0102C005900D9241505040D8F708955B |
:10351000A0E0B0E0EEE8FAE10C944B1B6C017B01FB |
:10352000EA01590121978FEFCF3FD80789F0860133 |
:103530000894C11CD11CC7010894E11CF11CF501C1 |
:103540000995F80180832197FFEFCF3FDF0779F7D7 |
:10355000EAE0CDB7DEB70C94671BA0E0B0E0E3EB88 |
:10356000FAE10C944D1B8C017B01EA016901219762 |
:103570008FEFCF3FD80771F0F70121917F01C8018C |
:103580000F5F1F4F622FF60109952197FFEFCF3F85 |
:10359000DF0791F7E8E0CDB7DEB70C94691B629FB7 |
:1035A000D001739FF001829FE00DF11D649FE00D3B |
:1035B000F11D929FF00D839FF00D749FF00D659F9C |
:1035C000F00D9927729FB00DE11DF91F639FB00D9B |
:1035D000E11DF91FBD01CF0111240895991B79E068 |
:1035E00004C0991F961708F0961B881F7A95C9F793 |
:1035F00080950895AA1BBB1B51E107C0AA1FBB1FE2 |
:10360000A617B70710F0A61BB70B881F991F5A956E |
:10361000A9F780959095BC01CD01089597FB092EDF |
:1036200007260AD077FD04D0E5DF06D000201AF483 |
:10363000709561957F4F0895F6F7909581959F4F0E |
:103640000895A1E21A2EAA1BBB1BFD010DC0AA1FE3 |
:10365000BB1FEE1FFF1FA217B307E407F50720F0FB |
:10366000A21BB30BE40BF50B661F771F881F991F76 |
:103670001A9469F760957095809590959B01AC01BF |
:10368000BD01CF0108952F923F924F925F926F92AA |
:103690007F928F929F92AF92BF92CF92DF92EF92E2 |
:1036A000FF920F931F93CF93DF93CDB7DEB7CA1B63 |
:1036B000DB0B0FB6F894DEBF0FBECDBF09942A888E |
:1036C000398848885F846E847D848C849B84AA8436 |
:1036D000B984C884DF80EE80FD800C811B81AA81C3 |
:1036E000B981CE0FD11D0FB6F894DEBF0FBECDBF8E |
:0636F000ED010895FFCF7B |
:1036F60001FFFF0101FB0701011E280D000D1E2021 |
:103706004E80000A00F41FFC1F0A4144523A000191 |
:103716000A0D424C3A56000A0D48573A332E3020CD |
:0A3726005265762000FF0014FF003A |
:00000001FF |
/BL-Ctrl_V3/V1.08/BL-Ctrl3_MEGA168_V1_08c.hex |
---|
0,0 → 1,884 |
:100000000C9453010C949D010C949D010C949D0142 |
:100010000C949D010C949D010C949D010C949D01E8 |
:100020000C949D010C94D2130C9473140C949D01A8 |
:100030000C949D010C9497180C9458180C94D9109A |
:100040000C94CF100C949D010C949A0C0C949D016F |
:100050000C949D010C949D010C949D010C943F17F0 |
:100060000C9434160C949D01C515D215DE15E115BE |
:10007000E815E815EE15F115F315F515C815D215A7 |
:10008000DE15E815EB151316F815FB15FE15011610 |
:10009000041607160A160D1610161A161A16131637 |
:1000A0001A161A16161643757272656E7420202081 |
:1000B0005B302E31415D43757272656E74206163F1 |
:1000C000742E2020202043757272656E7420706536 |
:1000D000616B2020202054656D702E202020205B35 |
:1000E000302E31B0435D566F6C74616765202020FF |
:1000F0005B302E31565D72706D2028726177292039 |
:10010000202020202020536574706F696E74202099 |
:100110002020202020204D6178536574706F696E17 |
:1001200074202020202050504D536574706F696EEC |
:10013000742020202020506172616D2E50776D5305 |
:1001400063616C696E67506172616D2E4D617843B9 |
:10015000757272656E74506172616D2E4D61785466 |
:10016000656D702E2020506172616D2E5363616C3D |
:10017000652049202020537461727420436F756E8E |
:10018000742020202020493243204C6F737420209B |
:100190002020202020204932432D424C2D537461D1 |
:1001A000746520202020313620202020202020208F |
:1001B0002020202020203137202020202020202017 |
:1001C0002020202020203138202020202020202006 |
:1001D00020202020202031392020202020202020F5 |
:1001E0002020202020204761702020202020202057 |
:1001F00020202020202049204269617320202020D7 |
:100200002020202020204F76657243757272656E23 |
:100210007420636E742049204375746F66662020D5 |
:10022000202020636E7464652D6D61676E6574694E |
:100230007A6520636E74496E76616C696450756C82 |
:1002400073657320202049204C696D69742020203B |
:100250002020636E7420536C6F70652D4D696E2085 |
:10026000202020202020536C6F70652D4D61782058 |
:100270002020202020204572726F72436F64652019 |
:100280002020202020204861726477617265202040 |
:100290002020202020204C696D69742049202020D6 |
:1002A00020202020202011241FBECFEFD4E0DEBF6D |
:1002B000CDBF11E0A0E0B1E0ECEEF6E302C00590A6 |
:1002C0000D92AA33B107D9F714E0AAE3B1E001C057 |
:1002D0001D92A232B107E1F74BEA20EF37E3A8EA1B |
:1002E000B1E09FE0F9012F5F3F4F84918D939150D2 |
:1002F00097FFF8CFE8EAF1E09EE08191482740952A |
:10030000915097FFFACF8091B701481711F0000084 |
:10031000FECF8091AF0180933A018091B00180932C |
:100320000D018091B10180930A018091B201809307 |
:1003300009010E94D3070C94751B0C940000CF9305 |
:1003400089E191E00E94060CC09104018C2F805D30 |
:100350008A3328F081E30E94F30B8C2F8A5D0E9480 |
:10036000F30BCF9108956BEF77E0409163015091CB |
:100370006401A0911D042AE0A29FC0011124E09114 |
:100380006101F09162018E179F0780F55798BF01B8 |
:10039000681B790BCB01880F991F880F991FBA0131 |
:1003A000681B790B80910A01829FC0011124C296BB |
:1003B0008E179F07D8F480915601882319F080E0AA |
:1003C00092E002C080E094E09093890080938800DE |
:1003D0008BB1877C8BB960E070E08091FD029091D9 |
:1003E000FE0201969093FE028093FD028091170415 |
:1003F0009927880F991F880F991F2BEF37E0281B2B |
:10040000390B261737070CF4B90180914F018F3F44 |
:1004100071F0282F3327B4E0220F331FBA95E1F78C |
:10042000245D3E4F2617370724F4B90102C010920D |
:100430004E0180913C0190913D01481759070CF401 |
:10044000AC0177FF02C060E070E0641775070CF440 |
:10045000AB0180913E0190913F018417950708F40C |
:10046000AC0180918C01882319F582E080938C0186 |
:1004700085E0A89FC0011124E817F90748F44C59FA |
:100480005F4F50933F0140933E014456504008C097 |
:10049000445F5F4F50933F0140933E014C505040AA |
:1004A0004456504050933D0140933C014C595F4F9E |
:1004B000F894CA0157FD019695958795909341014F |
:1004C00080934001880F991F481B590B40934201AC |
:1004D00078947093D8026093D7020895CF93DF93F6 |
:1004E000E0910F01F091100181E2E330F8071CF078 |
:1004F000C0E0D0E040C089E1E13FF8074CF0CF0117 |
:1005000066E070E00E94091BCB01C8E7D5E031C06E |
:1005100080E1E33CF8075CF0CF01F7FD0796F3E0DC |
:1005200095958795FA95E1F7CAE6D4E022C089E06F |
:10053000E938F8074CF0CF0166E070E00E94091B33 |
:10054000CB01CEE1D5E015C085E0E932F80754F0E3 |
:10055000CF01F7FD03969595879595958795CDEEF7 |
:10056000D5E007C0CF01F7FD019695958795CAE3C1 |
:10057000D7E0C81BD90BCE016AE070E00E94091BCE |
:1005800060930E01D093D002C093CF026837D0F5AC |
:1005900020910B0130910C012C9FC0012D9F900DDB |
:1005A0003C9F900D1124E92FFF27C90153E0880FCC |
:1005B000991F5A95E1F7820F931F820F931F67E0EF |
:1005C00070E00E94091BE61BF70B80915D01909182 |
:1005D0005E0143E0969587954A95E1F78E0F9F1F40 |
:1005E0006AE070E00E94091BFB01C90163E070E052 |
:1005F0000E94091B6E177F070CF4FB0180910B0111 |
:100600008E1B02C080910B0180930D0180915D01D2 |
:1006100090915E01EAEFF0E0E81BF90BE93CF1058F |
:1006200014F0E8ECF0E08FEFEE3CF80714F4EEEC99 |
:10063000FFEF90911E048AE0989FC00111248E0F55 |
:100640009F1FFE01E81BF90B1E161F067CF4EE0F20 |
:10065000FF1FCDEFD0E0CE1BDF0BC230D10514F46D |
:10066000C1E0D0E0C0930201579803C08FEF8093A0 |
:100670000201DF91CF91089580915D0190915E011B |
:100680009093CA028093C9028091610190916201A6 |
:100690002091130130911401821B930B9093CC0293 |
:1006A0008093CB0280911101909112019093D2021C |
:1006B0008093D10280915B0190915C019093D40270 |
:1006C0008093D30280916301909164019093D6024C |
:1006D0008093D50280919301909194019093DA02D6 |
:1006E0008093D90280911C0499279093DC02809317 |
:1006F000DB0280911D0499279093DE028093DD0236 |
:1007000080911E0499279093E0028093DF028091EC |
:100710001F0499279093E2028093E1028091540193 |
:1007200090915501892B39F40E94B2149927909326 |
:10073000E8028093E7028091170499279093FC02C6 |
:100740008093FB0280913C0190913D0190930003C6 |
:100750008093FF0280913E0190913F0190930203AC |
:10076000809301038091B8019927909304038093AB |
:10077000030380910B0190910C01909306038093E9 |
:100780000503809101019927909308038093070343 |
:10079000089560E070E0F894209154013091550183 |
:1007A000E0919B01F0919C01789410923B01909113 |
:1007B0004F01992319F080E180933B012115310508 |
:1007C00059F180913B01816080933B01BF019A30D8 |
:1007D00030F487E0E83FF80710F060E070E0579AE7 |
:1007E00081E02C3C380730F480913B018460809399 |
:1007F0003B010AC0309741F010929401109293018E |
:100800001092030110929001309751F080913B01BA |
:10081000826080933B0104C030939C0120939B0134 |
:1008200081E0223C380758F080914D0180FF02C0E2 |
:10083000309729F08091900188230CF04AC04091B4 |
:100840005201509153014115510579F08091680191 |
:10085000682F7727B3E0660F771FBA95E1F71092FC |
:100860000301579A1092900134C08091900187FF44 |
:1008700025C081E08093030180913B0188608093D3 |
:100880003B01209193013091940189E0253C380788 |
:1008900008F09A0187E02C3F380710F02BEF37E083 |
:1008A0002333310540F4992331F48091500188239A |
:1008B00011F4BA0101C0B901579A0BC0232B09F4F6 |
:1008C0005798BF011092680180916F0080628093F9 |
:1008D0006F0020911C04809102018F3F19F0821754 |
:1008E00008F4282F809101018F3F19F0821708F436 |
:1008F000282F2F3FC1F0CB01AA27BB27332744273E |
:100900005527BC01CD010E94CA1A97FF04C061504F |
:100910007F4F8F4F9F4FBB2797FDBA95A92F982FD9 |
:10092000872FBC0157986115710511F0605B7F4FEF |
:1009300087E06C3F780710F06BEF77E08091A101C2 |
:10094000882311F061E070E0CB0108950E946316E6 |
:100950008091810081608093810080916F0081602F |
:1009600080936F00E0911501F091160180E00995E8 |
:1009700080915601882371F080918000826080937D |
:1009800080008FEF91E0909389008093880084EF3E |
:1009900091E00DC0809180008360809380008FEF94 |
:1009A00093E0909389008093880088EE93E0909381 |
:1009B0008B0080938A00089596B5980F86B5891BA1 |
:1009C00087FDFCCF0895CF939091C10090689093DC |
:1009D000C100C82FC150CF3F59F0579886E990E029 |
:1009E0000E949B11579A8CE291E00E949B11F2CFDA |
:1009F00088E592E00E949B11CF9108951F93CF93B9 |
:100A0000DF93162FEC0121978FEFCF3FD807A9F086 |
:100A1000812F0E94961380911301909114018A5B9B |
:100A20009F4F20916101309162018217930758F71F |
:100A30000E94631681E090E002C080E090E0DF91C8 |
:100A4000CF911F910895FF920F931F93CF93DF9340 |
:100A500000E0579A80910401F82EFA9423E0F222E4 |
:100A6000F394282F33278CE291E0289FE001299FFF |
:100A7000D00D389FD00D112480919B0190919C0145 |
:100A8000892B19F4CE010E949B1180B7877F80BF0C |
:100A90000093A201F89488E10FB6F8948093600067 |
:100AA000109260000FBE0E94631660E086E00E9414 |
:100AB0005C131092600110925F01C9E0D0E081E008 |
:100AC0000E94C2112197D7FFFACF80915F019091C8 |
:100AD00060019093140180931301C39710F000E11B |
:100AE0006EC061E083E00E945C134E978959934089 |
:100AF00008F002E161E087E00E945C1380559040BD |
:100B0000815D924010F001E15AC00E94631619E025 |
:100B100015B98AE00E94DC0461E080E00E945C1369 |
:100B2000883C910508F404E00E9463160E94631655 |
:100B30001BB98AE00E94DC0461E080E00E945C1343 |
:100B40004A9708F007E00E946316C1E1C5B98AE040 |
:100B50000E94DC0461E0862F0E945C13883C9105B2 |
:100B600008F405E00E9463160E946316CBB98AE080 |
:100B70000E94DC0461E0862F0E945C134A9708F013 |
:100B800008E00E946316C1E2C5B98AE00E94DC0455 |
:100B900061E082E00E945C13883C910508F406E065 |
:100BA0000E9463160E946316CBB98AE00E94DC049F |
:100BB00061E0862F0E945C134A9708F0012F0E9483 |
:100BC000631680919B0190919C01892B09F0F5C0DF |
:100BD00080911A0484FDF1C0002361F0802F8F5BA7 |
:100BE0000E94F30BDFC00CE08DE40E94F30B0E9427 |
:100BF0006316D8C08BB1877C8BB98AB188638AB9F8 |
:100C000085B1886385B984B1886384B961E08AE07D |
:100C100090E00E94FE0480911301909114010A96C5 |
:100C200020916101309162018217930708F40BE073 |
:100C300085B1877C85B984B1886384B98BB18863B9 |
:100C40008BB98AB188638AB961E08AE090E00E943A |
:100C5000FE0480911301909114010A962091610184 |
:100C6000309162018217930708F40AE08AEB93E05F |
:100C700090938900809388008CE993E090938B0097 |
:100C800080938A0081E08093A40110E061E088E015 |
:100C900090E00E94FE0489E6F89EC0011124C0E0A5 |
:100CA000D0E08052934009F441C0812F99278130D0 |
:100CB000910571F0823091051CF4892B21F011C04F |
:100CC000029759F00EC00E9470160E949E1609C02D |
:100CD0000E947C160E94A81604C00E9488160E94DA |
:100CE000941661E082E090E00E94FE04882351F0B7 |
:100CF000012F0F5F812F8F5C0E94F30B0E94631600 |
:100D000014E614C00E94631661E08F2D99270E949B |
:100D1000FE04219689E6F89E9001112480E293E07A |
:100D2000821B930BC817D90708F4BFCF1F5F13307E |
:100D300008F4ACCF0E9463168CE092E09093890097 |
:100D4000809388008EEE91E090938B0080938A00D0 |
:100D500061E08AE090E00E94FE04002319F5109201 |
:100D6000620110926101C0E0D0E084B1877C84B957 |
:100D70008AB1877C8AB961E081E090E00E94FE043C |
:100D800080911301909114010A9620916101309194 |
:100D900062018217930708F426CF219684E0C030C1 |
:100DA000D80718F30E9463160093B80178940023C3 |
:100DB00021F0802F0E94E304FCCFDF91CF911F919F |
:100DC0000F91FF9008956F927F928F929F92AF92B2 |
:100DD000BF92CF92DF92EF92FF920F931F938C01FD |
:100DE00032E3632E712C812C912C80B7877F80BFDA |
:100DF0001092A201E0911701F09118018CEF099572 |
:100E00000E9463161092620110926101C8019695CA |
:100E10008795909341018093400180E00E949E1746 |
:100E200080E00E949E1780911704853198F18EE52D |
:100E300091E00E94811190934601809345010CC07E |
:100E400085B1877C85B984B1886384B98BB18863A7 |
:100E50008BB98AB188638AB9809145019091460126 |
:100E60000E948C11882361F30E94631680E00E9427 |
:100E70009E1788EC90E010C00E9463168FE080936C |
:100E8000B80181E00E94E30480E090E07FC081E04F |
:100E900090E07CC08EE190E00E9481119093460129 |
:100EA0008093450109C00E94961380916101909141 |
:100EB00062018937910500F78091450190914601C3 |
:100EC0000E948C11882379F380B7877F80BF1092AE |
:100ED000A20110934101009340011092440110922D |
:100EE0004301EE24FF2487016401530183E0AA0C2F |
:100EF000BB1CCC1CDD1C8A95D1F7D601C501860D23 |
:100F0000971DA81DB91D860D971DA81DB91DE816B2 |
:100F1000F9060A071B0748F485E00E94DC040894E0 |
:100F2000E11CF11C011D111DE8CF8091130190916E |
:100F3000140188589F4F20916101309162018217FE |
:100F4000930708F499CFC401B3012FE030E040E0EB |
:100F500050E00E941C1B621A730A840A950A0894C6 |
:100F600061087108810891088EE168167104810496 |
:100F7000910408F48CCF8091430190914401892B16 |
:100F800009F0ABCF80E00E949E17A7CF1F910F9171 |
:100F9000FF90EF90DF90CF90BF90AF909F908F9099 |
:100FA0007F906F900895CFEFD4E0DEBFCDBF17B82C |
:100FB00080E188B988EB8AB987E08BB91EE014B963 |
:100FC00081E085B9579883E00E94DC0415BC80EE6F |
:100FD0008ABD18BD0E94631680916E008260809366 |
:100FE0006E0080916E00846080936E007894809192 |
:100FF0000D01992790930C0180930B010E94BA1365 |
:101000000E94401A8091C100877F8093C10052984E |
:101010005A9AE0911701F09118018CEF099589E037 |
:1010200090E00E949B118091C100877F8093C10056 |
:101030008091B40082FF06C0499B02C081E007C0D6 |
:1010400083E005C0499B02C082E001C084E0809338 |
:1010500004010E94A6048091B40082FF13C05A9834 |
:10106000529A8AE090E00E949B11F89452985A9A02 |
:10107000E0911701F09118018CEF099578944A9945 |
:1010800019C013C0529A5A9A8AE090E00E949B11AC |
:10109000F89452985A985A9AE0911701F0911801D1 |
:1010A0008CEF099578944A9B05C0809104018C5F70 |
:1010B000809304015298529A8091C1008860809375 |
:1010C000C1000E941F0C80E50E94F9140E94B1111A |
:1010D00080E00E94961384EF91E00E94811190932A |
:1010E00046018093450106C080919B0190919C012F |
:1010F000892B41F480914501909146010E948C1109 |
:10110000882391F310926401109263010E94B3014D |
:1011100081E080937C00109294011092930185B934 |
:1011200010921B04109256010E9423050E9465191B |
:101130000E94FF0B0E949F010E941F0C8091C10022 |
:1011400080688093C1000E9463161092A4018BB541 |
:10115000992790930C0180930B0110928B011092B0 |
:101160008A01109238010E94C90390936401809310 |
:101170006301892B31F40E94C90390936401809329 |
:10118000630180914E01863008F057988091630189 |
:1011900090916401892B09F047C010925001109280 |
:1011A0004F011092A4010E94631680914701909113 |
:1011B00048010E948C11882309F458C010924E01F6 |
:1011C0001092B80180B7877F80BF1092A20181E0A2 |
:1011D00080930701109217048091130190911401DC |
:1011E00020916101309162012817390710F40197AD |
:1011F00004C08217930728F40196909314018093FA |
:10120000130182E390E00E94811190934801809342 |
:10121000470180911301909114019093F4028093FF |
:10122000F30212BC11BC22C080910701882369F42B |
:1012300020915B0130915C012430310550F48091A4 |
:101240004F01853630F08A3F20F481E080935001D1 |
:1012500005C02930310510F0109250018CED95E059 |
:101260000E94811190934801809347012091A10130 |
:101270002223A1F48091430190914401892B71F0C4 |
:1012800080911704883C50F42093070186E990E090 |
:101290000E9481119093460180934501809107013E |
:1012A000882321F010926401109263010E94B3011F |
:1012B00080910801815080930801809108018F3F3F |
:1012C00009F051CF8091630190916401892B11F451 |
:1012D0008AE001C084E6809308010E94581680913C |
:1012E0006701882321F00E94870F0E94810E809160 |
:1012F0004B0190914C010E948C11882309F42FC15D |
:1013000082E390E00E94811190934C0180934B0105 |
:101310008091A101882391F08091A1018150809357 |
:10132000A1018091A101882349F48091F502909157 |
:10133000F60201969093F6028093F502809159018E |
:1013400090915A012091570130915801B9010E94A2 |
:10135000F51A809161019091620190935A018093F6 |
:10136000590181E090E0909358018093570180915A |
:101370001301909114016817790798F0681B790B95 |
:1013800080911F049927689F9001699F300D789F75 |
:10139000300D1124B90116E0769567951A95E1F79D |
:1013A00002C060E070E080915D0190915E0186175F |
:1013B000970710F4019604C06817790728F401977D |
:1013C00090935E0180935D0180915D0190915E013B |
:1013D0008B30910588F0681B790B77FF02C0695F3D |
:1013E0007F4FC3E075956795CA95E1F7860F971F04 |
:1013F00090935E0180935D01E0915D01F0915E014B |
:10140000CF016AE070E00E94F51A40911D04842F1C |
:10141000992786179707F0F48AE0489FC0011124A6 |
:101420009F01281B390BC901880F991F820F931F39 |
:101430002DEF30E0281B390B2931310514F429E157 |
:1014400030E02F3F310519F014F02FEF30E02093FA |
:10145000010103C08FEF80930101F8946091430173 |
:1014600070914401AB015695479520915B013091F5 |
:101470005C012417350728F450935C0140935B010D |
:1014800018C0C901880F991F820F931F840F951FE1 |
:10149000969587959695879590935C0180935B01CF |
:1014A000672B39F4009729F0019790935C018093A2 |
:1014B0005B01109244011092430178940E946E02E5 |
:1014C00080916701882321F081508093670102C0D9 |
:1014D00080934D018091A4018823B1F480914F0144 |
:1014E000813590F08091110190911201853691051E |
:1014F00058F08091A101882339F48091200485FD62 |
:1015000003C081E08093A40180914F018E3120F4CB |
:1015100081E08093000123C020915B0130915C0148 |
:101520002734310548F480915D0190915E01409728 |
:1015300040F02933310528F0F89410920001789496 |
:101540000EC02733310558F48091610190916201FA |
:101550000F9728F4F89481E08093000178948091AB |
:10156000490190914A010E948C118823F1F085E095 |
:1015700090E00E94811190934A01809349018091EB |
:101580005B0190915C01892B39F080914F018F3F75 |
:1015900019F08F5F80934F0180910701882329F014 |
:1015A000F89480E00E949512789480914501909182 |
:1015B00046010E948C11882329F4809150018823D0 |
:1015C00009F4D1CD80915B0190915C014E9708F0B8 |
:1015D000CACD84E690E00E948111909346018093E9 |
:1015E000450110924F0151E0F52EF0920701109243 |
:1015F000A40180B7877F80BF1092A2010E94C90317 |
:10160000892B09F4B0CD80910F0190911001895878 |
:10161000994008F4A8CD1092600110925F011092D9 |
:1016200050018091200499278E70907004E110E0A1 |
:10163000809FE001819FD00D909FD00D1124A09636 |
:10164000F09200011092A401C0905201D090530179 |
:101650008091E3029091E40201969093E4028093DA |
:10166000E302CE010E94E306882309F47CCDD092E8 |
:101670005301C09252011092410110924001809199 |
:10168000A201882319F480B7886180BFF092A2017B |
:101690001092070110921704109244011092430116 |
:1016A000C8010E9481119093460180934501809169 |
:1016B0004501909146010E948C118823C1F310923C |
:1016C0005C0110925B018AE090E09093410180936D |
:1016D00040018C179D07E0F58091400190914101F8 |
:1016E0000A96909341018093400184E190E00E942A |
:1016F0008111909346018093450113C0809161014F |
:10170000909162018937910540F00E9463168FE045 |
:101710008093B80181E00E94E3040E94870F0E9439 |
:10172000810E80914501909146010E948C11882381 |
:1017300029F38091430190914401892B49F0109243 |
:101740004401109243018091400190914101C1CF29 |
:1017500080914E01882321F0813039F4CC0FDD1FB8 |
:10176000D0934101C093400109C0CE01880F991F59 |
:101770008C0F9D1F909341018093400184E690E07F |
:101780000E948111909346018093450104C00E94FC |
:10179000870F0E94810E80914501909146010E9421 |
:1017A0008C118823A1F380914E018F5F80934E01AD |
:1017B000D0925301C092520182E390E00E948111C5 |
:1017C00090934A018093490188EC90E00E94811136 |
:1017D00090934601809345011092FA021092F9020B |
:1017E0001092A101C0CC982F8091C10083FF06C048 |
:1017F0008091C00085FFFCCF9093C60008958DE0D6 |
:101800000E94F30B8AE00E94F30B08951F93CF937D |
:10181000DF93EC0110E08881882369F0FE01E10F7D |
:10182000F11D1F5F80810E94F30BFE01E10FF11D8E |
:101830008081882399F7DF91CF911F9108950F93AD |
:101840001F930FB788E18093C1001092710110922D |
:101850006F0110926E0110926D0181E080931F0163 |
:101860008093BD0288E08093BE0282E08093C10233 |
:101870008BE08093BF021092C00280E291E00E9450 |
:10188000060C81E30E94F30B8EE20E94F30B80E3CF |
:101890000E94F30B88E30E94F30B83E60E94F30B94 |
:1018A00087E291E00E94060C1AE080913A01612FD4 |
:1018B0000E94E91A805D0E94F30B80913A01612F2A |
:1018C0000E94E91A892F805D0E94F30B0FBF1092CE |
:1018D0006C011F910F9108958091C00086FF29C06F |
:1018E00080911F01882309F5809172019091730105 |
:1018F00001969093730180937201FC01E75FFC4FA6 |
:10190000E081ED3019F08A3F910539F410927301AE |
:101910001092720181E080931F018091C00081606C |
:101920008093C000E093C600089510927301109256 |
:10193000720108951F920F920FB60F9211242F93E8 |
:101940003F934F935F938F939F93AF93BF93CF93A7 |
:10195000DF93EF93FF935091C6008091710188232C |
:1019600009F062C040916C01442371F4533279F460 |
:101970005093B90181E080936C0183E290E09093F1 |
:1019800075018093740150C04A3F08F049C020910E |
:10199000740130917501E42FFF275D3069F0E75441 |
:1019A000FE4F50834F5F40936C01250F311D3093E4 |
:1019B00075012093740138C0DF01A754BE4FFD01AB |
:1019C00032978081281B3109ED0121978881281BDE |
:1019D0003109C9019F7090937501809374016894D7 |
:1019E00015F8969587951694E1F7982F935C2F73C9 |
:1019F0003070235C8081981771F48881281759F41E |
:101A000084E6809367015C934F5F4093700181E0AF |
:101A10008093710102C01092710110926C0104C098 |
:101A200080936C0180937101FF91EF91DF91CF91D1 |
:101A3000BF91AF919F918F915F914F913F912F9166 |
:101A40000F900FBE0F901F901895A0E0B0E09D0181 |
:101A5000482F5527A417B50748F4E9E0F3E0819132 |
:101A6000280F311D1196A417B507C8F33F70FD016B |
:101A7000E75FFC4FC90176E0969587957A95E1F787 |
:101A8000835C80831196FD01E75FFC4F2F733070FC |
:101A9000822F835C8083A65FBC4F8DE08C93109275 |
:101AA0001F01809109038093C6000895CF92DF92B1 |
:101AB000EF92FF920F931F93CF93DF93CDB7DEB7D3 |
:101AC0002B859C850D85DD2483E2809309039F5936 |
:101AD00090930A0320930B0333E0C32E002309F4F1 |
:101AE0009AC0EE84FF84BE016E5E7F4FA889B989DB |
:101AF0000150109709F48FC01097B9F0F701ED0D60 |
:101B0000F11DD3949081119791F4002349F1FB01C9 |
:101B10006E5F7F4FDB01E080F1806E5F7F4F0D9045 |
:101B2000BC91A02DDD24015002C090E019C0109797 |
:101B3000B9F0F701ED0DF11DD3944081119791F4A7 |
:101B4000002341F1FB016E5F7F4FDB01E080F180FC |
:101B50006E5F7F4F0D90BC91A02DDD24015002C01F |
:101B600040E018C01097B1F0F701ED0DF11DD394CE |
:101B70001081119781F4002371F0FB013296DB0193 |
:101B8000ED90FC90BF016E5F7F4FA081B181DD249D |
:101B9000015001C010E0EC2DFF27E75FFC4F892FBB |
:101BA00086958695835C8083C394EC2DFF27E75F41 |
:101BB000FC4F892F99278370907024E0880F991F1C |
:101BC0002A95E1F755279A0194E0369527959A953D |
:101BD000E1F7822B835C8083C394EC2DFF27E75FC2 |
:101BE000FC4F4F705070440F551F440F551F812FED |
:101BF000992726E0969587952A95E1F7842B835CB3 |
:101C00008083C394EC2DFF27E75FFC4F1F73135CA9 |
:101C10001083C3946ECF8C2D0E94250DDF91CF9140 |
:101C20001F910F91FF90EF90DF90CF900895A3E068 |
:101C30007A2F409170014650442309F458C0E72F91 |
:101C4000FF27E754FE4F80818D537F5FE72FFF27EB |
:101C5000E754FE4F20812D537F5FE72FFF27E75486 |
:101C6000FE4F30813D537F5FE72FFF27E754FE4F44 |
:101C700060816D537F5F9927880F991F880F991F87 |
:101C8000522F52955F70582B822F99278F7090702A |
:101C9000F4E0880F991FFA95E1F7232F26952695F2 |
:101CA000282B832F992783709070E6E0880F991F67 |
:101CB000EA95E1F7682B41504F3FC9F0EA2FFF2723 |
:101CC000E754FE4F5083AF5F41504F3F81F0EA2F02 |
:101CD000FF27E754FE4F2083AF5F41504F3F39F05D |
:101CE000EA2FFF27E754FE4F6083AF5FA5CF8CEB51 |
:101CF00091E090936F0180936E01A350A0936D01CA |
:101D0000089580917101882309F400C10E94170E83 |
:101D10008091BA018B3668F08091BA01282F332761 |
:101D200080910401992785599F4F2817390709F099 |
:101D3000E5C08091BB0199278436910509F4B5C0AF |
:101D4000853691059CF48235910519F1833591050D |
:101D500044F48132910509F46AC08B9709F4C7C035 |
:101D6000CDC08136910509F4B5C0C8C0853791054D |
:101D7000E9F0863791052CF48437910509F444C0C5 |
:101D8000BDC08637910509F4A1C08737910521F1BF |
:101D9000B5C088E190E02CE00FB6F894A895809348 |
:101DA00060000FBE20936000F894FFCFE0916E01B9 |
:101DB000F0916F01908180910401981719F0808152 |
:101DC000882319F41092690103C082E080936901AD |
:101DD00080916B01886088C0E0916E01F0916F0185 |
:101DE0008081882329F0908180910401981729F43B |
:101DF000CF0101960E94CF1901C082E08093690152 |
:101E000080916B01806170C080910401E0916E014E |
:101E1000F0916F01E80FF11D319780818093680187 |
:101E200080E293E0909353018093520167C084EF66 |
:101E300091E0909353018093520120910401A0916D |
:101E40006E01B0916F01FD01E20FF11D8081809361 |
:101E500068018C9187FD06C080910701882311F0ED |
:101E60001092680180916801882369F080913B019C |
:101E700082FD03C08C9188231CF481E080934D0186 |
:101E800080914D01826080934D01E0916E01F0914F |
:101E90006F01808199278F70907033278217930785 |
:101EA00069F580916B0180621FC0E0916E01F09135 |
:101EB0006F0190818AE0989FC00111249093660180 |
:101EC0008093650180916B0182600EC080916B01EF |
:101ED00081600AC0E0916E01F0916F018081809372 |
:101EE0006A0180916B01846080936B0107C0E0916F |
:101EF0006E01F0916F0180818093C40010926F0198 |
:101F000010926E0110926D01109271010895CF939D |
:101F1000DF93CDB7DEB721970FB6F894DEBF0FBEC3 |
:101F2000CDBF80911F01882319F40E946C0C2EC133 |
:101F300080916B01992785FF37C080913B01809389 |
:101F400076010E949714809377010E94B2148093C7 |
:101F5000780180910E018093790180911101909117 |
:101F600012018135910530F08091110180558093E7 |
:101F70007A0104C0109212011092110185E090E0E4 |
:101F80009F938F9386E791E09F938F9381E08F9348 |
:101F900080910401865F8F938FE38F930E94560D8B |
:101FA00080916B018F7D70C082FF30C080916A018B |
:101FB000992724E0880F991F2A95E1F78A559F4FAA |
:101FC00040E150E0BC0186E791E00E947A1A80E18E |
:101FD00090E09F938F9386E791E09F938F9381E0AA |
:101FE00090E09F938F938AE691E09F938F9382E096 |
:101FF0008F9385E08F9381E48F930E94560D8FEF2E |
:1020000080936A0180916B018B7FB6C080916501DE |
:1020100090916601892B41F080910D0490910E04FE |
:102020000E948C11882329F480916B01992781FFEC |
:1020300031C00E943C0380915F01909160019093B8 |
:10204000CE028093CD021092600110925F0182E473 |
:1020500090E09F938F9387EC92E09F938F9381E022 |
:102060008F9385E08F9384E48F930E94560D809127 |
:102070006501909166010E94811190930E048093F6 |
:102080000D0480916B018D7F80936B018DB79EB79E |
:10209000079677C080FF14C08AE090E09F938F93EB |
:1020A0008DEB92E09F938F9381E08F9385E08F93E8 |
:1020B00086E58F930E94560D80916B018E7FE4CF51 |
:1020C00083FF36C080916901882319F481E08983F8 |
:1020D00001C0198288E090E09F938F938AE194E099 |
:1020E0009F938F9321E030E03F932F9384E091E022 |
:1020F0009F938F933F932F9389E691E09F938F93C4 |
:102100003F932F93CE01820F931F9F938F9384E071 |
:102110008F9385E08F9385E58F930E94560D809174 |
:102120006B01877F80936B018DB79EB7439629C063 |
:1021300084FF2CC080916901882319F481E0898390 |
:1021400001C0198221E030E03F932F9389E691E0AE |
:102150009F938F933F932F93CE01820F931F9F9353 |
:102160008F9382E08F9385E08F9387E58F930E9412 |
:10217000560D80916B018F7E80936B018DB79EB75A |
:102180000B960FB6F8949EBF0FBE8DBF21960FB66B |
:10219000F894DEBF0FBECDBFDF91CF9108951F929F |
:1021A0000F920FB60F9211240F900FBE0F901F9039 |
:1021B00018951F920F920FB60F9211242F933F93F1 |
:1021C0004F935F936F937F938F939F93AF93BF933F |
:1021D000EF93FF9388B5845688BD80918D0181501F |
:1021E00080938D01882309F07BC082E080938D016C |
:1021F00080918A0190918B01019690938B0180933D |
:102200008A0188E190E02BE00FB6F894A8958093BE |
:1022100060000FBE209360008091540190915501A1 |
:10222000009719F10197909355018093540121E093 |
:10223000883B920739F021E08C32920719F08436FE |
:10224000910599F480E50E94F914809154019091D0 |
:102250005501885B914049F48091E5029091E60236 |
:1022600001969093E6028093E50280919101882384 |
:1022700031F08091910181508093910102C080934F |
:1022800090018091520190915301009729F001979C |
:10229000909353018093520180918C01882329F0FF |
:1022A00080918C01815080938C01809135019091B7 |
:1022B0003601019790933601809335018F5F9F4FD0 |
:1022C00079F488E795E09093360180933501809109 |
:1022D000540190915501892B19F480E50E94F9145D |
:1022E000FF91EF91BF91AF919F918F917F916F91EE |
:1022F0005F914F913F912F910F900FBE0F901F90C4 |
:1023000018959C01F89480918A0190918B017894A2 |
:10231000820F931F01970895F89420918A013091BC |
:102320008B01821B930B892F9927807878949927AA |
:1023300087FD90950895CF93DF930E948111EC0162 |
:1023400008C080916701882321F00E94870F0E94B6 |
:10235000810ECE010E948C11882399F3DF91CF91D9 |
:10236000089587EA80937A0087EC80937C008091BF |
:102370007A00806480937A0080917B0080648093EF |
:102380007B000895CF93DF93C82F96EC90937C0049 |
:1023900080B7806880BF84ED80937A0080917A0056 |
:1023A000806180937A0090937C0080917A008064B1 |
:1023B00080937A008091590190915A0180569A4EEB |
:1023C000B8F48091590190915A01209161013091A6 |
:1023D0006201820F931F90935A018093590180915B |
:1023E000570190915801019690935801809357019D |
:1023F00080917A0084FD0DC0CC23D1F38091BC0084 |
:1024000087FF02C00E940515B59BF2CF0E94E3131F |
:10241000EFCFC0917800D091790080910D0199277C |
:10242000C89F9001C99F300DD89F300D112445E001 |
:10243000369527954A95E1F7309362012093610123 |
:1024400080915F01909160018217930720F430938F |
:10245000600120935F0132E0C935D30708F454C00E |
:102460000E94631680915601882319F080E092E063 |
:1024700002C080E094E090938900809388001092DD |
:10248000410110924001109242011092A4018091EA |
:102490003E0190913F012091630130916401281722 |
:1024A000390720F430933F0120933E018AE0809366 |
:1024B0008C018091F7029091F80201969093F802B6 |
:1024C0008093F70283E0C73BD80750F083E0809306 |
:1024D000A10180914F01833318F082E380934F0173 |
:1024E00080910D019927C89F9001C99F300DD89FF9 |
:1024F000300D1124C90125E0969587952A95E1F7BD |
:10250000909362018093610184E080937A008091CE |
:102510007B00806480937B0080B78F7780BF80B71B |
:10252000806180BFDF91CF9108951F93CF93182FC3 |
:10253000809151018150809351018F3F09F0B6C0C5 |
:102540008EE18093510180918E01815080938E01A4 |
:102550008F3F09F058C0C0917C0097EC90937C00AD |
:1025600080B7806880BF84ED80937A0080917A0084 |
:10257000806180937A0090937C0080917A008064DF |
:1025800080937A0080917A0084FD0DC01123D1F3ED |
:102590008091BC0087FF02C00E940515B59BF2CF59 |
:1025A0000E94E313EFCFC0937C002091780030911C |
:1025B0007900C901E4E0880F991FEA95E1F7820FDD |
:1025C000931F67E170E00E94F51A809111019091CC |
:1025D0001201860F971F969587959093120180930D |
:1025E000110184E080937A0080917B008064809365 |
:1025F0007B0080B78F7780BF80B7806180BF83E02A |
:1026000080938E0156C0C0917C0093EC90937C0027 |
:1026100080B7806880BF84ED80937A0080917A00D3 |
:10262000806180937A0090937C0080917A0080642E |
:1026300080937A0080917A0084FD0DC01123D1F33C |
:102640008091BC0087FF02C00E940515B59BF2CFA8 |
:102650000E94E313EFCFC0937C00809178009091AB |
:1026600079009C0163E0220F331F6A95E1F7280F80 |
:10267000391F280F391F80910F0190911001820F8F |
:10268000931F969587959093100180930F0184E096 |
:1026900080937A0080917B00806480937B0080B778 |
:1026A0008F7780BF80B7806180BF03C0812F0E9479 |
:1026B000C211CF911F9108951F93CF93C62F1091F0 |
:1026C0007C00982F906C90937C0080B7806880BFCE |
:1026D00086ED80937A0080917A00806180937A0001 |
:1026E00090937C0080917A00806480937A0080913E |
:1026F0007A0084FD09C0CC23D1F38091BC0087FF10 |
:10270000F6CF0E940515F3CF10937C0087E08093ED |
:102710007A0080B78F7780BF80B7806180BF80915B |
:10272000780090917900CF911F910895682F86E0ED |
:102730000E945C1320910D013327829FA001839F8B |
:10274000500D929F500D11249A01F5E03695279572 |
:10275000FA95E1F7309362012093610180915F0166 |
:10276000909160018217930720F4309360012093C9 |
:102770005F01089580918100806C80938100809139 |
:10278000810080648093810080916F0080628093DB |
:102790006F0080916F00816080936F0082E0809372 |
:1027A000B10008951F920F920FB60F9211248F93CC |
:1027B000809192018F5F809392018F910F900FBE55 |
:1027C0000F901F90189580916F0085FF8AC08091AF |
:1027D000810086FF17C01092B20081E080937000E4 |
:1027E00010928F0180919201809397011092920133 |
:1027F000809181008F7B8093810084E6809391019A |
:10280000B89A6FC01092B100B89B05C08091920138 |
:102810008F5F809392012091B2008091920199275D |
:10282000582F4427420F511D509396014093950114 |
:1028300082E08093B1008091810080648093810068 |
:10284000809190018F3F51F04B5C5840455252406F |
:1028500028F4809190018F5F809390018091950181 |
:10286000909196012AE0803F92073CF0805F9A4069 |
:10287000909396018093950104C010929601109256 |
:10288000950180919701843688F480914F018823C7 |
:1028900069F080919501909196012091930130917A |
:1028A0009401820F931F9695879517C0809193018D |
:1028B000909194019C0143E0220F331F4A95E1F768 |
:1028C000281B390B8091950190919601820F931FDF |
:1028D00023E0969587952A95E1F79093940180934C |
:1028E0009301B59A08951F920F920FB60F9211247B |
:1028F0002F933F934F935F936F937F938F939F9308 |
:10290000AF93BF93EF93FF930E94E313FF91EF9177 |
:10291000BF91AF919F918F917F916F915F914F91F7 |
:102920003F912F910F900FBE0F901F90189580919F |
:102930005D0190915E01893C910518F480915D01E3 |
:102940000CC022E0853E920750F4885C90406AE01B |
:1029500070E00E94F51ACB018853992708958EEFF5 |
:1029600090E008958091B8018823F1F580919B0152 |
:1029700090919C01892B71F480916801882351F416 |
:102980008091200485FD03C088EF90E0089589EFD1 |
:1029900090E008958091A101882319F084E690E0E9 |
:1029A000089580914F01823350F480914E0186301A |
:1029B00018F087E290E0089588E290E00895809111 |
:1029C0004D01882359F0809101018F3F39F48091A6 |
:1029D00002018F3F19F48EEF90E00895909101016C |
:1029E00080910201891710F499270895892F99275A |
:1029F00008951092BC0090910401990F980F909344 |
:102A0000BA0085EC8093BC0008958091B9009927A5 |
:102A1000887F90708038910529F1813891053CF4C8 |
:102A2000009709F411C18036910591F019C1883BD6 |
:102A3000910509F494C0893B91052CF4883A9105DD |
:102A400009F48DC00DC1883F910509F4FDC008C18E |
:102A50008091BC0080688093BC0010929F0110920E |
:102A60009E0108954091BB008091BC0080688093D6 |
:102A7000BC0080919E01282F33278F5F80939E0199 |
:102A800021303105B9F1223031051CF4232B31F00E |
:102A90005CC02230310509F448C057C0442369F4B2 |
:102AA00080919D01882349F08091540190915501B6 |
:102AB000892B19F081E090E011C080915401909130 |
:102AC0005501892B81F080919D01882361F0842F2D |
:102AD000992753E0880F991F5A95E1F790939C012D |
:102AE00080939B0104C010929C0110929B01409323 |
:102AF0009D012EC020919B0130919C012115310533 |
:102B000051F0842F992787709070280F391F3093C8 |
:102B10009C0120939B01842F992733E096958795FC |
:102B20003A95E1F780939F0113C080919801883016 |
:102B300078F480919801E82FFF27E15FFB4F4083F5 |
:102B40008F5F8093980182E001C08EEF80939E0199 |
:102B500084EF91E090935501809354010895809102 |
:102B60009F01282F3327442755278F5F80939F018C |
:102B7000F9012F31310508F05DC0EC5CFF4FEE0F1D |
:102B8000FF1F0590F491E02D09940E9497144FC007 |
:102B900080915D0190915E0121E08E3F9207A8F047 |
:102BA0008EEF45C00E94B2148093BB008091BB00A1 |
:102BB00099279093E8028093E70242C080910E012A |
:102BC00036C080915B0190915C01969587952FC0EE |
:102BD000809111012CC080915B0129C080919901E5 |
:102BE00026C081E024C088E022C00E9497141FC044 |
:102BF00080911A041CC080911B0419C080911C0490 |
:102C000016C080911D0413C080911E0410C08091D5 |
:102C10001F040DC0809120040AC08091210407C0C8 |
:102C20008091B80104C01092BB000AC085EA80936D |
:102C3000BB0006C08FEF8093BB008EEF80939F0197 |
:102C40008091BC0080680DC085ED8093BC008091B0 |
:102C5000990190919A01019690939A01809399011C |
:102C600085EC8093BC0008951F920F920FB60F92CF |
:102C700011242F933F934F935F936F937F938F9381 |
:102C80009F93AF93BF93EF93FF930E940515FF911E |
:102C9000EF91BF91AF919F918F917F916F915F91D4 |
:102CA0004F913F912F910F900FBE0F901F9018954D |
:102CB00080919801883030F08FE094E00E94CF1925 |
:102CC0001092980108958BB1877C8BB98AB1886383 |
:102CD0008AB985B1877C85B984B1886384B9089540 |
:102CE0008AB180638AB984B1806384B92398809162 |
:102CF000A4018111539808958AB188628AB984B178 |
:102D0000886284B924988091A4018111549808950F |
:102D10008AB188618AB984B1886184B92598809123 |
:102D2000A4018111559808958BB18F7C8BB9539A6A |
:102D30008091A101882309F45B9A08958BB1877D66 |
:102D40008BB9549A8091A101882309F45C9A089563 |
:102D50008BB1877E8BB9559A8091A101882309F4A4 |
:102D60005D9A08950F931F93CF93DF93809138015D |
:102D7000882309F07FC000B605FE03C000B600FC42 |
:102D800006C000B605FC76C000B600FC73C015BCDA |
:102D900016B58091A501012F081B80910001202FFD |
:102DA0003327882331F08091A601E901C80FD11D96 |
:102DB00003C0E901C20FD31F80915B0190915C01B8 |
:102DC000839710F4C0E9D1E080913701282F332791 |
:102DD000CE01B9010E94F51ACB01663020F41F5FC5 |
:102DE00017BD115003C0810F855087BD85B5836025 |
:102DF00085BD21E0209338011092180480B7877FA9 |
:102E000080BF80910001882351F0CE0166E070E020 |
:102E10000E94F51ACB01810F8093A0011DC0CE0145 |
:102E20009695879596958795810F8093A001C533D8 |
:102E3000D10560F40E946316809117048B3F60F403 |
:102E4000809117048F5F8093170406C0CF3FD10590 |
:102E500009F010F420931804CE0196958795810F00 |
:102E6000809319041093A5010093A601D093F20258 |
:102E7000C093F102DF91CF911F910F9108951F929E |
:102E80000F920FB60F9211242F933F934F935F939E |
:102E90006F937F938F939F93AF93BF93EF93FF9322 |
:102EA00080910001882311F40E94B216FF91EF91E6 |
:102EB000BF91AF919F918F917F916F915F914F9152 |
:102EC0003F912F910F900FBE0F901F9018958091FA |
:102ED0001804882391F125C08091BC0087FF02C0AF |
:102EE0000E940515B59B02C00E94E313809119044E |
:102EF00096B5891B87FF15C00E9463168091170441 |
:102F00008C3D28F480911704825E80931704809191 |
:102F1000F9029091FA0201969093FA028093F902D5 |
:102F2000089500B600FE03C000B605FCD5CF00B67C |
:102F300000FC03C000B605FECFCF0895CF93C82F85 |
:102F400080914301909144010196909344018093B4 |
:102F500043018091200480FD4CC08091A3019927FA |
:102F600082309105E1F0833091052CF4009749F00F |
:102F7000019791F033C08330910511F1049739F135 |
:102F80002DC00E94A8168C2F0E94951281EC809370 |
:102F90007C0080B78E7F4BC00E947C165FC00E9471 |
:102FA00094168C2F0E94C21182EC80937C0080B713 |
:102FB0008E7F80BF8091A3018F5F8093A30172C039 |
:102FC0000E9488168C2F0E94C21181EC59C00E9469 |
:102FD0009E168C2F0E94C21180ECE7CF0E947016C3 |
:102FE0008C2F0E94C21182EC80937C0080B783609A |
:102FF00056C08091A30199278230910569F18330F1 |
:1030000091052CF4009749F0019719F13EC08330E7 |
:10301000910549F1049771F138C00E9470168C2F08 |
:103020000E94951281EC80937C0080B7836080BF02 |
:103030008091A3018F5F8093A3010E946717809105 |
:103040001704882389F18091170481508093170415 |
:103050002BC00E949E16A5CF0E9488168C2F0E941E |
:10306000C21180EC0DC00E9494168C2F0E94C211D8 |
:1030700081EC9BCF0E947C168C2F0E94C21182ECA7 |
:1030800080937C0080B7836094CF0E94A8168C2F19 |
:103090000E94C21180EC80937C0080B78E7F80BF3D |
:1030A0001092A3010E94671710920801CF91089512 |
:1030B0001F920F920FB60F9211242F933F934F93AD |
:1030C0005F936F937F938F939F93AF93BF93EF9390 |
:1030D000FF9390913801913051F482E08093380150 |
:1030E0008091A00187BD892F0E949E170FC08091FB |
:1030F0003801823059F41092380180B7886180BF5E |
:1031000080910001882311F40E94B216FF91EF9183 |
:10311000BF91AF919F918F917F916F915F914F91EF |
:103120003F912F910F900FBE0F901F9018951F92F7 |
:103130000F920FB60F9211242F933F934F935F93EB |
:103140006F937F938F939F93AF93BF93EF93FF936F |
:10315000809156019091A7018823E9F1292F332707 |
:103160009F5F9093A7012130310579F0223031051E |
:103170001CF4232B29F01DC02230310579F019C031 |
:10318000209140013091410106C0209140013091D1 |
:1031900041012F5F3F4F3695279515C02091400183 |
:1031A000309141013695279580914201280F311DBC |
:1031B0000AC020914001309141012F5F3F4F369569 |
:1031C00027951092A701809180008E7F80938000C8 |
:1031D0008FEF91E01DC09F5F9093A701915029F45C |
:1031E00020914001309141010CC080914201209119 |
:1031F000400130914101882311F02F5F3F4F109221 |
:10320000A701809180008160809380008FEF93E020 |
:10321000821B930B9C018F31910520F0AC014E5124 |
:10322000504002C040E050E0809181008E7F80934A |
:103230008100309389002093880050938B00409345 |
:103240008A008091810081608093810080910001DB |
:10325000882331F08091A201882311F00E94B216D8 |
:10326000FF91EF91BF91AF919F918F917F916F915E |
:103270005F914F913F912F910F900FBE0F901F9034 |
:103280001895F999FECF92BD81BDF89A80B599271E |
:103290000895F999FECF1FBA92BD81BD60BD0FB6EA |
:1032A000F894FA9AF99A0FBE089520E030E02617B4 |
:1032B000370740F4FC018191480F2F5F3F4F2617DD |
:1032C0003707C8F3842F992708959091200494FF1D |
:1032D00003C01092560103C081E080935601292F4C |
:1032E000332725FF02C01092A401907C11F484E1E1 |
:1032F00007C0C901807C90708038910521F48CE36F |
:103300008093370108958034910511F48AE0F8CF55 |
:10331000803C910519F487E080933701089586E099 |
:1033200080931A0410921B048FEF80931C049091D9 |
:10333000090190931D0484E680931E0480E4809329 |
:103340001F0484E08093200480910A01981710F0F4 |
:1033500080931D044AEA67E070E08AE194E00E94ED |
:10336000551980932104089580911A0499278F702C |
:103370009070069799F44AEA67E070E08AE194E079 |
:103380000E9455198093210429E439E148E050E076 |
:103390006AE174E080E290E00E94A81A0895CF9359 |
:1033A000DF93EC014AEA67E070E00E9455199F81C3 |
:1033B000981719F085E090E060C04881842F992724 |
:1033C0008F709070069719F084E090E056C0898164 |
:1033D00086FF03C00E948F1947C010921B04898189 |
:1033E000282F332720FF03C08A8180931C0421FFEC |
:1033F00003C08B8180931D0422FF03C08C818093C6 |
:103400001E0423FF03C08D8180931F0424FF0AC084 |
:10341000909120049E708E81817F982B9093200440 |
:1034200040931A0425FF08C090912004917F8E815B |
:103430008E70982B9093200480911E04833718F08F |
:1034400083E780931E0480911D0490910A018917DF |
:1034500010F090931D044AEA67E070E08AE194E07E |
:103460000E94551980932104898187FF02C00E9420 |
:10347000B4190E94651980E090E0DF91CF91089522 |
:1034800021E439E148E050E060E270E08AE194E054 |
:103490000E94831A4AEA67E070E08AE194E00E94A1 |
:1034A00055194AEA67E070E08AE194E00E945519F4 |
:1034B000282F80911A0499278F709070069721F415 |
:1034C00080912104821721F00E948F190E94B41963 |
:1034D0000E94651980911D0490910A01891710F0CE |
:1034E00090931D0480911E04833718F083E7809326 |
:1034F0001E040895FB01DC0102C005900D924150AD |
:103500005040D8F70895A0E0B0E0E9E8FAE10C9463 |
:10351000461B6C017B01EA01590121978FEFCF3FD8 |
:10352000D80789F086010894C11CD11CC7010894F2 |
:10353000E11CF11CF5010995F80180832197FFEF4B |
:10354000CF3FDF0779F7EAE0CDB7DEB70C94621B17 |
:10355000A0E0B0E0EEEAFAE10C94481B8C017B019C |
:10356000EA01690121978FEFCF3FD80771F0F7018A |
:1035700021917F01C8010F5F1F4F622FF60109954E |
:103580002197FFEFCF3FDF0791F7E8E0CDB7DEB738 |
:103590000C94641B629FD001739FF001829FE00D29 |
:1035A000F11D649FE00DF11D929FF00D839FF00DC2 |
:1035B000749FF00D659FF00D9927729FB00DE11D6E |
:1035C000F91F639FB00DE11DF91FBD01CF0111244B |
:1035D0000895991B79E004C0991F961708F0961B6F |
:1035E000881F7A95C9F780950895AA1BBB1B51E1E6 |
:1035F00007C0AA1FBB1FA617B70710F0A61BB70B63 |
:10360000881F991F5A95A9F780959095BC01CD0107 |
:10361000089597FB092E07260AD077FD04D0E5DF31 |
:1036200006D000201AF4709561957F4F0895F6F743 |
:10363000909581959F4F0895A1E21A2EAA1BBB1B5E |
:10364000FD010DC0AA1FBB1FEE1FFF1FA217B3076E |
:10365000E407F50720F0A21BB30BE40BF50B661F84 |
:10366000771F881F991F1A9469F760957095809548 |
:1036700090959B01AC01BD01CF0108952F923F921F |
:103680004F925F926F927F928F929F92AF92BF9272 |
:10369000CF92DF92EF92FF920F931F93CF93DF931E |
:1036A000CDB7DEB7CA1BDB0B0FB6F894DEBF0FBE7B |
:1036B000CDBF09942A88398848885F846E847D84C8 |
:1036C0008C849B84AA84B984C884DF80EE80FD80CA |
:1036D0000C811B81AA81B981CE0FD11D0FB6F89440 |
:0C36E000DEBF0FBECDBFED010895FFCF8F |
:1036EC0001FFFF0101FB0701011E280D000D1E202B |
:1036FC004E80000A00F41FFC1F0A4144523A00019C |
:10370C000A0D424C3A56000A0D48573A332E3020D7 |
:0A371C005265762000FF0014FF0044 |
:00000001FF |
/BL-Ctrl_V3/V1.10/BL-Ctrl3_MEGA168_Plus6_V1_10c_ADR7-12.hex |
---|
0,0 → 1,886 |
:100000000C9453010C949D010C949D010C949D0142 |
:100010000C949D010C949D010C949D010C949D01E8 |
:100020000C949D010C94D4130C9475140C949D01A4 |
:100030000C949D010C94A9180C946A180C94DB1074 |
:100040000C94D1100C949D010C949C0C0C949D016B |
:100050000C949D010C949D010C949D010C945117DE |
:100060000C9436160C949D01C715D415E015E315B4 |
:10007000EA15EA15F015F315F515F715CA15D41597 |
:10008000E015EA15ED151516FA15FD1500160316FF |
:10009000061609160C160F1612161C161C16151627 |
:1000A0001C161C16181643757272656E742020207B |
:1000B0005B302E31415D43757272656E74206163F1 |
:1000C000742E2020202043757272656E7420706536 |
:1000D000616B2020202054656D702E202020205B35 |
:1000E000302E31B0435D566F6C74616765202020FF |
:1000F0005B302E31565D72706D2028726177292039 |
:10010000202020202020536574706F696E74202099 |
:100110002020202020204D6178536574706F696E17 |
:1001200074202020202050504D536574706F696EEC |
:10013000742020202020506172616D2E50776D5305 |
:1001400063616C696E67506172616D2E4D617843B9 |
:10015000757272656E74506172616D2E4D61785466 |
:10016000656D702E2020506172616D2E5363616C3D |
:10017000652049202020537461727420436F756E8E |
:10018000742020202020493243204C6F737420209B |
:100190002020202020204932432D424C2D537461D1 |
:1001A000746520202020313620202020202020208F |
:1001B0002020202020203137202020202020202017 |
:1001C0002020202020203138202020202020202006 |
:1001D00020202020202031392020202020202020F5 |
:1001E0002020202020204761702020202020202057 |
:1001F00020202020202049204269617320202020D7 |
:100200002020202020204F76657243757272656E23 |
:100210007420636E742049204375746F66662020D5 |
:10022000202020636E7464652D6D61676E6574694E |
:100230007A6520636E74496E76616C696450756C82 |
:1002400073657320202049204C696D69742020203B |
:100250002020636E7420536C6F70652D4D696E2085 |
:10026000202020202020536C6F70652D4D61782058 |
:100270002020202020204572726F72436F64652019 |
:100280002020202020204861726477617265202040 |
:100290002020202020204C696D69742049202020D6 |
:1002A00020202020202011241FBECFEFD4E0DEBF6D |
:1002B000CDBF11E0A0E0B1E0E0E1F7E302C00590BE |
:1002C0000D92AA33B107D9F714E0AAE3B1E001C057 |
:1002D0001D92A232B107E1F74BEA20EF37E3A8EA1B |
:1002E000B1E09FE0F9012F5F3F4F84918D939150D2 |
:1002F00097FFF8CFE8EAF1E09EE08191482740952A |
:10030000915097FFFACF8091B701481711F0000084 |
:10031000FECF8091AF0180933A018091B00180932C |
:100320000D018091B10180930A018091B201809307 |
:1003300009010E94D7070C94871B0C940000CF93EF |
:1003400089E191E00E94090CC09104018C2F805D2D |
:100350008A3328F081E30E94F60B8C2F8A5D0E947D |
:10036000F60BCF9108956BEF77E0409163015091C8 |
:100370006401A0911D042AE0A29FC0011124E09114 |
:100380006101F09162018E179F0780F55798BF01B8 |
:10039000681B790BCB01880F991F880F991FBA0131 |
:1003A000681B790B80910A01829FC0011124C296BB |
:1003B0008E179F07D8F480915601882319F080E0AA |
:1003C00092E002C080E094E09093890080938800DE |
:1003D0008BB1877C8BB960E070E08091FD029091D9 |
:1003E000FE0201969093FE028093FD028091170415 |
:1003F0009927880F991F880F991F2BEF37E0281B2B |
:10040000390B261737070CF4B90180914F018F3F44 |
:1004100071F0282F3327B4E0220F331FBA95E1F78C |
:10042000245D3E4F2617370724F4B90102C010920D |
:100430004E0180913C0190913D01481759070CF401 |
:10044000AC0177FF02C060E070E0641775070CF440 |
:10045000AB0180913E0190913F018417950708F40C |
:10046000AC0180918C01882319F582E080938C0186 |
:1004700085E0A89FC0011124E817F90748F44C59FA |
:100480005F4F50933F0140933E014456504008C097 |
:10049000445F5F4F50933F0140933E014C505040AA |
:1004A0004456504050933D0140933C014C595F4F9E |
:1004B000F894CA0157FD019695958795909341014F |
:1004C00080934001880F991F481B590B40934201AC |
:1004D00078947093D8026093D7020895CF93DF93F6 |
:1004E000E0910F01F091100181E2E330F8071CF078 |
:1004F000C0E0D0E040C089E1E13FF8074CF0CF0117 |
:1005000066E070E00E941B1BCB01C8E7D5E031C05C |
:1005100080E1E33CF8075CF0CF01F7FD0796F3E0DC |
:1005200095958795FA95E1F7CAE6D4E022C089E06F |
:10053000E938F8074CF0CF0166E070E00E941B1B21 |
:10054000CB01CEE1D5E015C085E0E932F80754F0E3 |
:10055000CF01F7FD03969595879595958795CDEEF7 |
:10056000D5E007C0CF01F7FD019695958795CAE3C1 |
:10057000D7E0C81BD90BCE016AE070E00E941B1BBC |
:1005800060930E01D093D002C093CF026837D0F5AC |
:1005900020910B0130910C012C9FC0012D9F900DDB |
:1005A0003C9F900D1124E92FFF27C90153E0880FCC |
:1005B000991F5A95E1F7820F931F820F931F67E0EF |
:1005C00070E00E941B1BE61BF70B80915D01909170 |
:1005D0005E0143E0969587954A95E1F78E0F9F1F40 |
:1005E0006AE070E00E941B1BFB01C90163E070E040 |
:1005F0000E941B1B6E177F070CF4FB0180910B01FF |
:100600008E1B02C080910B0180930D0180915D01D2 |
:1006100090915E01EAEFF0E0E81BF90BE93CF1058F |
:1006200014F0E8ECF0E08FEFEE3CF80714F4EEEC99 |
:10063000FFEF90911E048AE0989FC00111248E0F55 |
:100640009F1FFE01E81BF90B1E161F067CF4EE0F20 |
:10065000FF1FCDEFD0E0CE1BDF0BC230D10514F46D |
:10066000C1E0D0E0C0930201579803C08FEF8093A0 |
:100670000201DF91CF91089580915D0190915E011B |
:100680009093CA028093C9028091610190916201A6 |
:100690002091130130911401821B930B9093CC0293 |
:1006A0008093CB0280911101909112019093D2021C |
:1006B0008093D10280915B0190915C019093D40270 |
:1006C0008093D30280916301909164019093D6024C |
:1006D0008093D50280919301909194019093DA02D6 |
:1006E0008093D90280911C0499279093DC02809317 |
:1006F000DB0280911D0499279093DE028093DD0236 |
:1007000080911E0499279093E0028093DF028091EC |
:100710001F0499279093E2028093E1028091540193 |
:1007200090915501892B39F40E94B4149927909324 |
:10073000E8028093E7028091170499279093FC02C6 |
:100740008093FB0280913C0190913D0190930003C6 |
:100750008093FF0280913E0190913F0190930203AC |
:10076000809301038091B8019927909304038093AB |
:10077000030380910B0190910C01909306038093E9 |
:100780000503809101019927909308038093070343 |
:10079000089560E070E0F894209154013091550183 |
:1007A000E0919B01F0919C01789410923B01909113 |
:1007B0004F01992319F080E180933B012115310508 |
:1007C00059F180913B01816080933B01BF019A30D8 |
:1007D00030F487E0E83FF80710F060E070E0579AE7 |
:1007E00081E02C3C380730F480913B018460809399 |
:1007F0003B010AC0309741F010929401109293018E |
:100800001092030110929001309751F080913B01BA |
:10081000826080933B0104C030939C0120939B0134 |
:1008200081E0223C380758F080914D0180FF02C0E2 |
:10083000309729F08091900188230CF04AC04091B4 |
:100840005201509153014115510579F08091680191 |
:10085000682F7727B3E0660F771FBA95E1F71092FC |
:100860000301579A1092900134C08091900187FF44 |
:1008700025C081E08093030180913B0188608093D3 |
:100880003B01209193013091940189E0253C380788 |
:1008900008F09A0187E02C3F380710F02BEF37E083 |
:1008A0002333310540F4992331F48091500188239A |
:1008B00011F4BA0101C0B901579A0BC0232B09F4F6 |
:1008C0005798BF011092680180916F0080628093F9 |
:1008D0006F0020911C04809102018F3F19F0821754 |
:1008E00008F4282F809101018F3F19F0821708F436 |
:1008F000282F2F3FC1F0CB01AA27BB27332744273E |
:100900005527BC01CD010E94DC1A97FF04C061503D |
:100910007F4F8F4F9F4FBB2797FDBA95A92F982FD9 |
:10092000872FBC0157986115710511F0605B7F4FEF |
:1009300087E06C3F780710F06BEF77E08091A101C2 |
:10094000882331F080914F01882311F061E070E03D |
:10095000CB0108950E94651680918100816080938B |
:10096000810080916F00816080936F00E09115019C |
:10097000F091160180E0099580915601882371F06D |
:10098000809180008260809380008FEF91E090934F |
:1009900089008093880084EF91E00DC080918000F1 |
:1009A0008360809380008FEF93E090938900809321 |
:1009B000880088EE93E090938B0080938A000895DE |
:1009C00096B5980F86B5891B87FDFCCF0895CF9308 |
:1009D0009091C10090689093C100C82FC150CF3F43 |
:1009E00059F0579886E990E00E949D11579A8CE241 |
:1009F00091E00E949D11F2CF88E592E00E949D1146 |
:100A0000CF9108951F93CF93DF93162FEC01219779 |
:100A10008FEFCF3FD807A9F0812F0E9498138091C4 |
:100A20001301909114018A5B9F4F209161013091D5 |
:100A300062018217930758F70E94651681E090E0E3 |
:100A400002C080E090E0DF91CF911F910895FF9266 |
:100A50000F931F93CF93DF9300E0579A8091040187 |
:100A6000F82EFA9423E0F222F394282F33278CE215 |
:100A700091E0289FE001299FD00D389FD00D1124CF |
:100A800080919B0190919C01892B19F4CE010E94C9 |
:100A90009D1180B7877F80BF0093A201F89488E101 |
:100AA0000FB6F89480936000109260000FBE0E9411 |
:100AB000651660E086E00E945E131092600110925D |
:100AC0005F01C9E0D0E081E00E94C4112197D7FF07 |
:100AD000FACF80915F01909160019093140180930F |
:100AE0001301C39710F000E16EC061E083E00E9443 |
:100AF0005E134E978959934008F002E161E087E068 |
:100B00000E945E1380559040815D924010F001E19B |
:100B10005AC00E94651619E015B98AE00E94E004E7 |
:100B200061E080E00E945E13883C910508F404E0D7 |
:100B30000E9465160E9465161BB98AE00E94E004B7 |
:100B400061E080E00E945E134A9708F007E00E948F |
:100B50006516C1E1C5B98AE00E94E00461E0862F14 |
:100B60000E945E13883C910508F405E00E9465161A |
:100B70000E946516CBB98AE00E94E00461E0862FEE |
:100B80000E945E134A9708F008E00E946516C1E2D1 |
:100B9000C5B98AE00E94E00461E082E00E945E1331 |
:100BA000883C910508F406E00E9465160E946516CF |
:100BB000CBB98AE00E94E00461E0862F0E945E13B8 |
:100BC0004A9708F0012F0E94651680919B01909131 |
:100BD0009C01892B09F0F5C080911A0484FDF1C0B5 |
:100BE000002361F0802F8F5B0E94F60BDFC00CE0CA |
:100BF0008DE40E94F60B0E946516D8C08BB1877CED |
:100C00008BB98AB188638AB985B1886385B984B1A3 |
:100C1000886384B961E08AE090E00E9402058091D7 |
:100C20001301909114010A962091610130916201A3 |
:100C30008217930708F40BE085B1877C85B984B1EE |
:100C4000886384B98BB188638BB98AB188638AB9A8 |
:100C500061E08AE090E00E9402058091130190918A |
:100C600014010A9620916101309162018217930765 |
:100C700008F40AE08AEB93E090938900809388005F |
:100C80008CE993E090938B0080938A0081E08093BD |
:100C9000A40110E061E088E090E00E94020589E68E |
:100CA000F89EC0011124C0E0D0E08052934009F4C6 |
:100CB00041C0812F99278130910571F082309105D3 |
:100CC0001CF4892B21F011C0029759F00EC00E942C |
:100CD00072160E94A01609C00E947E160E94AA16D3 |
:100CE00004C00E948A160E94961661E082E090E09D |
:100CF0000E940205882351F0012F0F5F812F8F5C26 |
:100D00000E94F60B0E94651614E614C00E94651638 |
:100D100061E08F2D99270E940205219689E6F89EB1 |
:100D20009001112480E293E0821B930BC817D9072E |
:100D300008F4BFCF1F5F133008F4ACCF0E946516D4 |
:100D40008CE092E090938900809388008EEE91E091 |
:100D500090938B0080938A0061E08AE090E00E948B |
:100D60000205002319F51092620110926101C0E0A2 |
:100D7000D0E084B1877C84B98AB1877C8AB961E08C |
:100D800081E090E00E94020580911301909114018E |
:100D90000A9620916101309162018217930708F44D |
:100DA00026CF219684E0C030D80718F30E9465163C |
:100DB0000093B8017894002321F0802F0E94E7046B |
:100DC000FCCFDF91CF911F910F91FF9008956F920B |
:100DD0007F928F929F92AF92BF92CF92DF92EF92CB |
:100DE000FF920F931F938C0132E3632E712C812CA1 |
:100DF000912C80B7877F80BF1092A201E0911701EC |
:100E0000F09118018CEF09950E946516109262010D |
:100E100010926101C8019695879590934101809346 |
:100E2000400180E00E94B01780E00E94B0178091DE |
:100E30001704853198F18EE591E00E94831190931B |
:100E40004601809345010CC085B1877C85B984B18A |
:100E5000886384B98BB188638BB98AB188638AB996 |
:100E600080914501909146010E948E11882361F383 |
:100E70000E94651680E00E94B01788EC90E010C0D8 |
:100E80000E9465168FE08093B80181E00E94E7041C |
:100E900080E090E07FC081E090E07CC08EE190E057 |
:100EA0000E948311909346018093450109C00E94DE |
:100EB000981380916101909162018937910500F743 |
:100EC00080914501909146010E948E11882379F30B |
:100ED00080B7877F80BF1092A201109341010093D9 |
:100EE00040011092440110924301EE24FF24870137 |
:100EF0006401530183E0AA0CBB1CCC1CDD1C8A9549 |
:100F0000D1F7D601C501860D971DA81DB91D860D07 |
:100F1000971DA81DB91DE816F9060A071B0748F416 |
:100F200085E00E94E0040894E11CF11C011D111DE4 |
:100F3000E8CF809113019091140188589F4F209120 |
:100F40006101309162018217930708F499CFC401BF |
:100F5000B3012FE030E040E050E00E942E1B621A07 |
:100F6000730A840A950A0894610871088108910837 |
:100F70008EE1681671048104910408F48CCF80918D |
:100F8000430190914401892B09F0ABCF80E00E948E |
:100F9000B017A7CF1F910F91FF90EF90DF90CF90E8 |
:100FA000BF90AF909F908F907F906F900895CFEFFC |
:100FB000D4E0DEBFCDBF17B880E188B988EB8AB92D |
:100FC00087E08BB91EE014B981E085B9579883E0BA |
:100FD0000E94E00415BC80EE8ABD18BD0E94651613 |
:100FE00080916E00826080936E0080916E008460BC |
:100FF00080936E00789480910D01992790930C0155 |
:1010000080930B010E94BC130E94521A8091C10070 |
:10101000877F8093C10052985A9AE0911701F0910E |
:1010200018018CEF099589E090E00E949D11809154 |
:10103000C100877F8093C1008091B40082FF06C009 |
:10104000499B02C081E007C083E005C0499B02C004 |
:1010500082E001C084E0809304010E94AA04809190 |
:10106000B40082FF13C05A98529A8AE090E00E941E |
:101070009D11F89452985A9AE0911701F091180135 |
:101080008CEF099578944A9919C013C0529A5A9ACC |
:101090008AE090E00E949D11F89452985A985A9ACA |
:1010A000E0911701F09118018CEF099578944A9B13 |
:1010B00005C0809104018C5F80930401809104013C |
:1010C0008A5F809304015298529A8091C10088608F |
:1010D0008093C1000E94220C80E50E94FB140E94B4 |
:1010E000B31180E00E94981384EF91E00E94831175 |
:1010F000909346018093450106C080919B01909199 |
:101100009C01892B41F480914501909146010E94F8 |
:101110008E11882391F310926401109263010E9452 |
:10112000B30181E080937C001092940110929301AE |
:1011300085B910921B04109256010E9427050E9447 |
:1011400077190E94020C0E949F010E94220C80913C |
:10115000C10080688093C1000E9465161092A401AE |
:101160008BB5992790930C0180930B0110928B0102 |
:1011700010928A01109238010E94C9039093640171 |
:1011800080936301892B31F40E94C9039093640119 |
:101190008093630180914E01863008F057988091CA |
:1011A000630190916401892B09F047C010925001AE |
:1011B00010924F011092A4010E9465168091470180 |
:1011C000909148010E948E11882309F458C0109212 |
:1011D0004E011092B80180B7877F80BF1092A201A4 |
:1011E00081E0809307011092170480911301909180 |
:1011F000140120916101309162012817390710F420 |
:10120000019704C08217930728F401969093140164 |
:101210008093130182E390E00E9483119093480130 |
:101220008093470180911301909114019093F402EF |
:101230008093F30212BC11BC22C080910701882365 |
:1012400069F420915B0130915C012430310550F448 |
:1012500080914F01853630F08A3F20F481E0809301 |
:10126000500105C02930310510F0109250018CED6D |
:1012700095E00E948311909348018093470120914B |
:10128000A1012223A1F48091430190914401892B73 |
:1012900071F080911704883C50F42093070186E98F |
:1012A00090E00E94831190934601809345018091C4 |
:1012B0000701882321F010926401109263010E94BB |
:1012C000B301809108018150809308018091080149 |
:1012D0008F3F09F051CF8091630190916401892B78 |
:1012E00011F48AE001C084E6809308010E945A1636 |
:1012F00080916701882321F00E94890F0E94830E4C |
:1013000080914B0190914C010E948E11882309F429 |
:1013100029C182E390E00E94831190934C01809355 |
:101320004B018091A101882391F08091A10181500E |
:101330008093A1018091A101882349F48091F50255 |
:101340009091F60201969093F6028093F5028091B7 |
:10135000590190915A012091570130915801B901DA |
:101360000E94071B809161019091620190935A0144 |
:101370008093590181E090E0909358018093570148 |
:1013800080911301909114016817790798F0681BF8 |
:10139000790B80911F049927689F9001699F300DF8 |
:1013A000789F300D1124B90116E0769567951A954E |
:1013B000E1F702C060E070E080915D0190915E0114 |
:1013C0008617970710F4019604C06817790728F468 |
:1013D000019790935E0180935D0180915D019091F2 |
:1013E0005E018B30910588F0681B790B77FF02C096 |
:1013F000695F7F4FC3E075956795CA95E1F7860FE2 |
:10140000971F90935E0180935D01E0915D01F091E3 |
:101410005E01CF016AE070E00E94071B40911D044D |
:10142000842F992786179707F0F48AE0489FC00118 |
:1014300011249F01281B390BC901880F991F820FA6 |
:10144000931F2DEF30E0281B390B2931310514F49F |
:1014500029E130E02F3F310519F014F02FEF30E093 |
:101460002093010103C08FEF80930101F8946091F4 |
:10147000430170914401AB015695479520915B0162 |
:1014800030915C012417350728F450935C01409398 |
:101490005B0118C0C901880F991F820F931F840F29 |
:1014A000951F969587959695879590935C01809367 |
:1014B0005B01672B39F4009729F0019790935C0149 |
:1014C00080935B01109244011092430178940E9432 |
:1014D0006E0280916701882321F08150809367011B |
:1014E00002C080934D018091A4018823B1F48091C2 |
:1014F0004F01813590F08091110190911201853654 |
:10150000910558F08091A101882339F4809120043D |
:1015100085FD03C081E08093A40180914F018E314D |
:1015200020F481E0809300011DC020915B01309187 |
:101530005C012333310528F0F8941092000178946F |
:1015400011C02E32310530F480915D0190915E0121 |
:101550000F9718F02931310528F4F89481E0809331 |
:10156000000178948091490190914A010E948E1166 |
:101570008823F1F085E090E00E94831190934A0166 |
:101580008093490180915B0190915C01892B39F036 |
:1015900080914F018F3F19F08F5F80934F018091B1 |
:1015A0000701882329F0F89480E00E94971278942C |
:1015B00080914501909146010E948E11882329F463 |
:1015C00080915001882309F4D7CD80915B019091DF |
:1015D0005C014E9708F0D0CD84E690E00E94831124 |
:1015E000909346018093450110924F0151E0F52EF2 |
:1015F000F09207011092A40180B7877F80BF1092FC |
:10160000A2010E94C903892B09F4B6CD80910F0174 |
:10161000909110018958994008F4AECD1092600164 |
:1016200010925F01109250018091200499278E70D2 |
:10163000907004E110E0809FE001819FD00D909FA9 |
:10164000D00D1124A096F09200011092A401C09038 |
:101650005201D09053018091E3029091E4020196EF |
:101660009093E4028093E302CE010E94E706882370 |
:1016700009F482CDD0925301C092520110924101DF |
:10168000109240018091A201882319F480B78861EB |
:1016900080BFF092A20110920701109217041092DD |
:1016A000440110924301C8010E94831190934601A6 |
:1016B0008093450180914501909146010E948E11D1 |
:1016C0008823C1F310925C0110925B018AE090E0E4 |
:1016D00090934101809340018C179D07E0F5809124 |
:1016E0004001909141010A969093410180934001FD |
:1016F00084E190E00E94831190934601809345011C |
:1017000013C080916101909162018937910540F089 |
:101710000E9465168FE08093B80181E00E94E70483 |
:101720000E94890F0E94830E80914501909146018D |
:101730000E948E11882329F38091430190914401E6 |
:10174000892B49F01092440110924301809140018D |
:1017500090914101C1CF80914E01882321F08130C9 |
:1017600039F4CC0FDD1FD0934101C093400109C073 |
:10177000CE01880F991F8C0F9D1F9093410180937C |
:10178000400184E690E00E9483119093460180938B |
:10179000450104C00E94890F0E94830E809145017B |
:1017A000909146010E948E118823A1F380914E01F1 |
:1017B0008F5F80934E01D0925301C092520182E319 |
:1017C00090E00E94831190934A018093490188EC34 |
:1017D00090E00E94831190934601809345011092FE |
:1017E000FA021092F9021092A101C6CC982F8091B2 |
:1017F000C10083FF06C08091C00085FFFCCF90939D |
:10180000C60008958DE00E94F60B8AE00E94F60B58 |
:1018100008951F93CF93DF93EC0110E08881882314 |
:1018200069F0FE01E10FF11D1F5F80810E94F60B40 |
:10183000FE01E10FF11D8081882399F7DF91CF919F |
:101840001F9108950F931F930FB788E18093C100F4 |
:101850001092710110926F0110926E0110926D0141 |
:1018600081E080931F018093BD021AE01093BE02B5 |
:1018700082E08093C1028BE08093BF021092C0028D |
:1018800080E291E00E94090C81E30E94F60B8EE257 |
:101890000E94F60B81E30E94F60B80E30E94F60B98 |
:1018A00083E60E94F60B87E291E00E94090C80918A |
:1018B0003A01612F0E94FB1A805D0E94F60B809115 |
:1018C0003A01612F0E94FB1A892F805D0E94F60B5E |
:1018D0000FBF10926C011F910F9108958091C0006D |
:1018E00086FF29C080911F01882309F5809172012C |
:1018F0009091730101969093730180937201FC01A2 |
:10190000E75FFC4FE081ED3019F08A3F910539F433 |
:10191000109273011092720181E080931F018091F7 |
:10192000C00081608093C000E093C60008951092CB |
:1019300073011092720108951F920F920FB60F92C9 |
:1019400011242F933F934F935F938F939F93AF9364 |
:10195000BF93CF93DF93EF93FF935091C600809195 |
:101960007101882309F062C040916C01442371F435 |
:10197000533279F45093B90181E080936C0183E292 |
:1019800090E0909375018093740150C04A3F08F035 |
:1019900049C02091740130917501E42FFF275D301B |
:1019A00069F0E754FE4F50834F5F40936C01250F61 |
:1019B000311D309375012093740138C0DF01A754A5 |
:1019C000BE4FFD0132978081281B3109ED0121971F |
:1019D0008881281B3109C9019F70909375018093FC |
:1019E0007401689415F8969587951694E1F7982FE9 |
:1019F000935C2F733070235C8081981771F4888119 |
:101A0000281759F484E6809367015C934F5F4093F5 |
:101A1000700181E08093710102C0109271011092F7 |
:101A20006C0104C080936C0180937101FF91EF9170 |
:101A3000DF91CF91BF91AF919F918F915F914F9126 |
:101A40003F912F910F900FBE0F901F901895A0E01F |
:101A5000B0E09D01482F5527A417B50748F4E9E0E9 |
:101A6000F3E08191280F311D1196A417B507C8F333 |
:101A70003F70FD01E75FFC4FC90176E096958795C1 |
:101A80007A95E1F7835C80831196FD01E75FFC4F57 |
:101A90002F733070822F835C8083A65FBC4F8DE0F4 |
:101AA0008C9310921F01809109038093C6000895C2 |
:101AB000CF92DF92EF92FF920F931F93CF93DF931A |
:101AC000CDB7DEB72B859C850D85DD2483E2809321 |
:101AD00009039F5990930A0320930B0333E0C32E0D |
:101AE000002309F49AC0EE84FF84BE016E5E7F4F2E |
:101AF000A889B9890150109709F48FC01097B9F0DF |
:101B0000F701ED0DF11DD3949081119791F400230D |
:101B100049F1FB016E5F7F4FDB01E080F1806E5F7A |
:101B20007F4F0D90BC91A02DDD24015002C090E0AC |
:101B300019C01097B9F0F701ED0DF11DD394408154 |
:101B4000119791F4002341F1FB016E5F7F4FDB01A0 |
:101B5000E080F1806E5F7F4F0D90BC91A02DDD2461 |
:101B6000015002C040E018C01097B1F0F701ED0D30 |
:101B7000F11DD3941081119781F4002371F0FB01C2 |
:101B80003296DB01ED90FC90BF016E5F7F4FA0812C |
:101B9000B181DD24015001C010E0EC2DFF27E75F8B |
:101BA000FC4F892F86958695835C8083C394EC2DAA |
:101BB000FF27E75FFC4F892F99278370907024E0FF |
:101BC000880F991F2A95E1F755279A0194E03695D9 |
:101BD00027959A95E1F7822B835C8083C394EC2D43 |
:101BE000FF27E75FFC4F4F705070440F551F440FA5 |
:101BF000551F812F992726E0969587952A95E1F71D |
:101C0000842B835C8083C394EC2DFF27E75FFC4F1C |
:101C10001F73135C1083C3946ECF8C2D0E94270D0D |
:101C2000DF91CF911F910F91FF90EF90DF90CF90B8 |
:101C30000895A3E07A2F409170014650442309F49F |
:101C400058C0E72FFF27E754FE4F80818D537F5FF9 |
:101C5000E72FFF27E754FE4F20812D537F5FE72FAB |
:101C6000FF27E754FE4F30813D537F5FE72FFF276B |
:101C7000E754FE4F60816D537F5F9927880F991F4E |
:101C8000880F991F522F52955F70582B822F9927DA |
:101C90008F709070F4E0880F991FFA95E1F7232F69 |
:101CA00026952695282B832F992783709070E6E040 |
:101CB000880F991FEA95E1F7682B41504F3FC9F013 |
:101CC000EA2FFF27E754FE4F5083AF5F41504F3F4D |
:101CD00081F0EA2FFF27E754FE4F2083AF5F41508A |
:101CE0004F3F39F0EA2FFF27E754FE4F6083AF5F85 |
:101CF000A5CF8CEB91E090936F0180936E01A35080 |
:101D0000A0936D01089580917101882309F400C1A9 |
:101D10000E94190E8091BA018B3668F08091BA0149 |
:101D2000282F332780910401992785599F4F281721 |
:101D3000390709F0E5C08091BB01992784369105E8 |
:101D400009F4B5C0853691059CF48235910519F1E9 |
:101D50008335910544F48132910509F46AC08B976B |
:101D600009F4C7C0CDC08136910509F4B5C0C8C01B |
:101D700085379105E9F0863791052CF48437910574 |
:101D800009F444C0BDC08637910509F4A1C0873766 |
:101D9000910521F1B5C088E190E02CE00FB6F894F0 |
:101DA000A895809360000FBE20936000F894FFCF49 |
:101DB000E0916E01F0916F0190818091040198177C |
:101DC00019F08081882319F41092690103C082E020 |
:101DD0008093690180916B01886088C0E0916E01F9 |
:101DE000F0916F018081882329F090818091040116 |
:101DF000981729F4CF0101960E94E11901C082E0F1 |
:101E00008093690180916B01806170C080910401B1 |
:101E1000E0916E01F0916F01E80FF11D3197808123 |
:101E20008093680180E293E0909353018093520184 |
:101E300067C084EF91E09093530180935201209109 |
:101E40000401A0916E01B0916F01FD01E20FF11D3F |
:101E50008081809368018C9187FD06C08091070185 |
:101E6000882311F01092680180916801882369F03D |
:101E700080913B0182FD03C08C9188231CF481E09A |
:101E800080934D0180914D01826080934D01E091DE |
:101E90006E01F0916F01808199278F7090703327C8 |
:101EA0008217930769F580916B0180621FC0E091F2 |
:101EB0006E01F0916F0190818AE0989FC00111241A |
:101EC000909366018093650180916B0182600EC0E2 |
:101ED00080916B0181600AC0E0916E01F0916F0109 |
:101EE000808180936A0180916B01846080936B0193 |
:101EF00007C0E0916E01F0916F0180818093C40072 |
:101F000010926F0110926E0110926D01109271018A |
:101F10000895CF93DF93CDB7DEB721970FB6F8942E |
:101F2000DEBF0FBECDBF80911F01882319F40E9430 |
:101F30006E0C2EC180916B01992785FF37C080916F |
:101F40003B01809376010E949914809377010E944F |
:101F5000B4148093780180910E018093790180916F |
:101F60001101909112018135910530F0809111019C |
:101F7000805580937A0104C01092120110921101D1 |
:101F800085E090E09F938F9386E791E09F938F93F6 |
:101F900081E08F9380910401865F8F938FE38F930D |
:101FA0000E94580D80916B018F7D70C082FF30C000 |
:101FB00080916A01992724E0880F991F2A95E1F7FB |
:101FC0008A559F4F40E150E0BC0186E791E00E94B6 |
:101FD0008C1A80E190E09F938F9386E791E09F9326 |
:101FE0008F9381E090E09F938F938AE691E09F9397 |
:101FF0008F9382E08F9385E08F9381E48F930E948B |
:10200000580D8FEF80936A0180916B018B7FB6C072 |
:102010008091650190916601892B41F080910D04BA |
:1020200090910E040E948E11882329F480916B01F7 |
:10203000992781FF31C00E943C0380915F019091FC |
:1020400060019093CE028093CD02109260011092B5 |
:102050005F0182E490E09F938F9387EC92E09F93DF |
:102060008F9381E08F9385E08F9384E48F930E9418 |
:10207000580D80916501909166010E9483119093A3 |
:102080000E0480930D0480916B018D7F80936B0112 |
:102090008DB79EB7079677C080FF14C08AE090E0A6 |
:1020A0009F938F938DEB92E09F938F9381E08F931B |
:1020B00085E08F9386E58F930E94580D80916B0188 |
:1020C0008E7FE4CF83FF36C080916901882319F4A5 |
:1020D00081E0898301C0198288E090E09F938F930B |
:1020E0008AE194E09F938F9321E030E03F932F9318 |
:1020F00084E091E09F938F933F932F9389E691E043 |
:102100009F938F933F932F93CE01820F931F9F93A3 |
:102110008F9384E08F9385E08F9385E58F930E9462 |
:10212000580D80916B01877F80936B018DB79EB7AF |
:10213000439629C084FF2CC080916901882319F43B |
:1021400081E0898301C0198221E030E03F932F9321 |
:1021500089E691E09F938F933F932F93CE01820F57 |
:10216000931F9F938F9382E08F9385E08F9387E5F2 |
:102170008F930E94580D80916B018F7E80936B012D |
:102180008DB79EB70B960FB6F8949EBF0FBE8DBF4E |
:1021900021960FB6F894DEBF0FBECDBFDF91CF9171 |
:1021A00008951F920F920FB60F9211240F900FBE39 |
:1021B0000F901F9018951F920F920FB60F92112437 |
:1021C0002F933F934F935F936F937F938F939F933F |
:1021D000AF93BF93EF93FF9388B5845688BD8091EA |
:1021E0008D01815080938D01882309F07BC082E0AE |
:1021F00080938D0180918A0190918B01019690933B |
:102200008B0180938A0188E190E02BE00FB6F8946F |
:10221000A895809360000FBE2093600080915401C8 |
:1022200090915501009719F1019790935501809372 |
:10223000540121E0883B920739F021E08C3292076B |
:1022400019F08436910599F480E50E94FB14809181 |
:10225000540190915501885B914049F48091E502C9 |
:102260009091E60201969093E6028093E5028091B8 |
:102270009101882331F080919101815080939101E7 |
:1022800002C0809390018091520190915301009778 |
:1022900029F00197909353018093520180918C0112 |
:1022A000882329F080918C01815080938C0180914A |
:1022B0003501909136010197909336018093350155 |
:1022C0008F5F9F4F79F488E795E090933601809374 |
:1022D00035018091540190915501892B19F480E5C5 |
:1022E0000E94FB14FF91EF91BF91AF919F918F914D |
:1022F0007F916F915F914F913F912F910F900FBE02 |
:102300000F901F9018959C01F89480918A019091EC |
:102310008B017894820F931F01970895F894209170 |
:102320008A0130918B01821B930B892F992780782A |
:102330007894992787FD90950895CF93DF930E9415 |
:102340008311EC0108C080916701882321F00E946D |
:10235000890F0E94830ECE010E948E11882399F36B |
:10236000DF91CF91089587EA80937A0087EC80937C |
:102370007C0080917A00806480937A0080917B0059 |
:10238000806480937B000895CF93DF93C82F96ECF1 |
:1023900090937C0080B7806880BF84ED80937A0042 |
:1023A00080917A00806180937A0090937C00809184 |
:1023B0007A00806480937A008091590190915A014B |
:1023C00080569A4EB8F48091590190915A0120910B |
:1023D000610130916201820F931F90935A018093A3 |
:1023E000590180915701909158010196909358019D |
:1023F0008093570180917A0084FD0DC0CC23D1F3E6 |
:102400008091BC0087FF02C00E940715B59BF2CFE8 |
:102410000E94E513EFCFC0917800D09179008091B0 |
:102420000D019927C89F9001C99F300DD89F300D8D |
:10243000112445E0369527954A95E1F730936201DE |
:102440002093610180915F01909160018217930751 |
:1024500020F43093600120935F0132E0C935D30747 |
:1024600008F454C00E94651680915601882319F023 |
:1024700080E092E002C080E094E090938900809335 |
:102480008800109241011092400110924201109276 |
:10249000A40180913E0190913F0120916301309110 |
:1024A00064012817390720F430933F0120933E013F |
:1024B0008AE080938C018091F7029091F802019656 |
:1024C0009093F8028093F70283E0C73BD80750F05F |
:1024D00083E08093A10180914F01833318F082E360 |
:1024E00080934F0180910D019927C89F9001C99F4A |
:1024F000300DD89F300D1124C90125E096958795A0 |
:102500002A95E1F7909362018093610184E08093C2 |
:102510007A0080917B00806480937B0080B78F7706 |
:1025200080BF80B7806180BFDF91CF9108951F93F6 |
:10253000CF93182F809151018150809351018F3F8B |
:1025400009F0B6C08EE18093510180918E018150D7 |
:1025500080938E018F3F09F058C0C0917C0097ECAA |
:1025600090937C0080B7806880BF84ED80937A0070 |
:1025700080917A00806180937A0090937C008091B2 |
:102580007A00806480937A0080917A0084FD0DC087 |
:102590001123D1F38091BC0087FF02C00E94071570 |
:1025A000B59BF2CF0E94E513EFCFC0937C00209142 |
:1025B000780030917900C901E4E0880F991FEA950D |
:1025C000E1F7820F931F67E170E00E94071B809183 |
:1025D000110190911201860F971F96958795909300 |
:1025E00012018093110184E080937A0080917B0036 |
:1025F000806480937B0080B78F7780BF80B78061D5 |
:1026000080BF83E080938E0156C0C0917C0093EC24 |
:1026100090937C0080B7806880BF84ED80937A00BF |
:1026200080917A00806180937A0090937C00809101 |
:102630007A00806480937A0080917A0084FD0DC0D6 |
:102640001123D1F38091BC0087FF02C00E940715BF |
:10265000B59BF2CF0E94E513EFCFC0937C00809131 |
:102660007800909179009C0163E0220F331F6A95F6 |
:10267000E1F7280F391F280F391F80910F01909122 |
:102680001001820F931F9695879590931001809368 |
:102690000F0184E080937A0080917B0080648093B6 |
:1026A0007B0080B78F7780BF80B7806180BF03C019 |
:1026B000812F0E94C411CF911F9108951F93CF9332 |
:1026C000C62F10917C00982F906C90937C0080B75F |
:1026D000806880BF86ED80937A0080917A00806167 |
:1026E00080937A0090937C0080917A00806480933C |
:1026F0007A0080917A0084FD09C0CC23D1F38091C7 |
:10270000BC0087FFF6CF0E940715F3CF10937C0023 |
:1027100087E080937A0080B78F7780BF80B7806131 |
:1027200080BF8091780090917900CF911F9108959A |
:10273000682F86E00E945E1320910D013327829F4F |
:10274000A001839F500D929F500D11249A01F5E036 |
:1027500036952795FA95E1F7309362012093610150 |
:1027600080915F01909160018217930720F430936C |
:10277000600120935F01089580918100806C8093B7 |
:1027800081008091810080648093810080916F003E |
:10279000806280936F0080916F00816080936F00F2 |
:1027A00082E08093B10008951F920F920FB60F92AE |
:1027B00011248F93809192018F5F809392018F916A |
:1027C0000F900FBE0F901F90189580916F0085FF9E |
:1027D0008AC08091810086FF17C01092B20081E00C |
:1027E0008093700010928F018091920180939701E5 |
:1027F00010929201809181008F7B8093810084E60A |
:1028000080939101B89A6FC01092B100B89B05C037 |
:10281000809192018F5F809392012091B20080910C |
:1028200092019927582F4427420F511D509396012A |
:102830004093950182E08093B10080918100806493 |
:1028400080938100809190018F3F51F04B5C584004 |
:102850004552524028F4809190018F5F80939001FF |
:1028600080919501909196012AE0803F92073CF07B |
:10287000805F9A40909396018093950104C01092D6 |
:1028800096011092950180919701843688F4809189 |
:102890004F01882369F080919501909196012091D4 |
:1028A000930130919401820F931F9695879517C0DD |
:1028B00080919301909194019C0143E0220F331F7A |
:1028C0004A95E1F7281B390B80919501909196016B |
:1028D000820F931F23E0969587952A95E1F79093B1 |
:1028E000940180939301B59A08951F920F920FB6A9 |
:1028F0000F9211242F933F934F935F936F937F9386 |
:102900008F939F93AF93BF93EF93FF930E94E51331 |
:10291000FF91EF91BF91AF919F918F917F916F91B7 |
:102920005F914F913F912F910F900FBE0F901F908D |
:10293000189580915D0190915E01893C910518F494 |
:1029400080915D010CC022E0853E920750F4885CC6 |
:1029500090406AE070E00E94071BCB0188539927E2 |
:1029600008958EEF90E008958091B8018823F1F5E5 |
:1029700080919B0190919C01892B71F48091680159 |
:10298000882351F48091200485FD03C088EF90E0F6 |
:10299000089589EF90E008958091A101882319F0AE |
:1029A00084E690E0089580914F01823350F4809145 |
:1029B0004E01863018F087E290E0089588E290E0BA |
:1029C000089580914D01882359F0809101018F3F36 |
:1029D00039F4809102018F3F19F48EEF90E0089551 |
:1029E0009091010180910201891710F499270895AF |
:1029F000892F992708951092BC0090910401990F96 |
:102A0000980F9093BA0085EC8093BC000895809154 |
:102A1000B9009927887F90708038910529F1813815 |
:102A200091053CF4009709F411C18036910591F0AD |
:102A300019C1883B910509F494C0893B91052CF498 |
:102A4000883A910509F48DC00DC1883F910509F4BC |
:102A5000FDC008C18091BC0080688093BC001092CA |
:102A60009F0110929E0108954091BB008091BC008F |
:102A700080688093BC0080919E01282F33278F5F50 |
:102A800080939E0121303105B9F1223031051CF4CB |
:102A9000232B31F05CC02230310509F448C057C007 |
:102AA000442369F480919D01882349F08091540169 |
:102AB00090915501892B19F081E090E011C080912F |
:102AC000540190915501892B81F080919D018823BB |
:102AD00061F0842F992753E0880F991F5A95E1F7E9 |
:102AE00090939C0180939B0104C010929C011092D2 |
:102AF0009B0140939D012EC020919B0130919C0130 |
:102B00002115310551F0842F992787709070280F77 |
:102B1000391F30939C0120939B01842F992733E028 |
:102B2000969587953A95E1F780939F0113C0809120 |
:102B30009801883078F480919801E82FFF27E15FB1 |
:102B4000FB4F40838F5F8093980182E001C08EEF3E |
:102B500080939E0184EF91E09093550180935401FE |
:102B6000089580919F01282F3327442755278F5F91 |
:102B700080939F01F9012F31310508F05DC0EC5CB5 |
:102B8000FF4FEE0FFF1F0590F491E02D09940E9476 |
:102B900099144FC080915D0190915E0121E08E3FBC |
:102BA0009207A8F08EEF45C00E94B4148093BB003A |
:102BB0008091BB0099279093E8028093E70242C07E |
:102BC00080910E0136C080915B0190915C019695D9 |
:102BD00087952FC0809111012CC080915B0129C085 |
:102BE0008091990126C081E024C08AE022C00E9421 |
:102BF00099141FC080911A041CC080911B0419C035 |
:102C000080911C0416C080911D0413C080911E0485 |
:102C100010C080911F040DC0809120040AC08091D3 |
:102C2000210407C08091B80104C01092BB000AC003 |
:102C300085EA8093BB0006C08FEF8093BB008EEFC8 |
:102C400080939F018091BC0080680DC085ED8093CA |
:102C5000BC008091990190919A01019690939A01FC |
:102C60008093990185EC8093BC0008951F920F9288 |
:102C70000FB60F9211242F933F934F935F936F934F |
:102C80007F938F939F93AF93BF93EF93FF930E9494 |
:102C90000715FF91EF91BF91AF919F918F917F9118 |
:102CA0006F915F914F913F912F910F900FBE0F90B9 |
:102CB0001F90189580919801883030F08FE094E053 |
:102CC0000E94E1191092980108958BB1877C8BB90D |
:102CD0008AB188638AB985B1877C85B984B18863F4 |
:102CE00084B908958AB180638AB984B1806384B954 |
:102CF00023988091A4018111539808958AB1886224 |
:102D00008AB984B1886284B924988091A401811120 |
:102D1000549808958AB188618AB984B1886184B968 |
:102D200025988091A4018111559808958BB18F7CCD |
:102D30008BB9539A8091A101882309F45B9A089575 |
:102D40008BB1877D8BB9549A8091A101882309F4B6 |
:102D50005C9A08958BB1877E8BB9559A8091A101B9 |
:102D6000882309F45D9A08950F931F93CF93DF93FF |
:102D700080913801882309F08FC000B605FE03C09A |
:102D800000B600FC06C000B605FC86C000B600FC1C |
:102D900083C015BC16B58091A501012F081B809139 |
:102DA0000001202F3327882331F08091A601E9010B |
:102DB000C80FD11D03C0E901C20FD31FE0915B0111 |
:102DC000F0915C01E332F10510F4C0E9D1E08091AB |
:102DD0003701282F3327CE01B9010E94071B962FF8 |
:102DE00080910001882311F097E006C0663020F43E |
:102DF0001F5F17BD115003C0910F955097BD85B54A |
:102E0000836085BD00B605FE03C000B600FC0DC0A2 |
:102E100000B605FC03C000B600FE07C080910001AB |
:102E2000882319F4E43BF105B8F121E0209338013F |
:102E30001092180480B7877F80BFCE019695879542 |
:102E400096958795810F8093A0018091000188233A |
:102E5000A9F4C533D10560F40E946516809117046A |
:102E60008B3F60F4809117048F5F8093170406C036 |
:102E7000CF3FD10509F010F420931804CE019695A8 |
:102E80008795810F809319041093A5010093A601E3 |
:102E9000D093F202C093F102DF91CF911F910F9175 |
:102EA00008951F920F920FB60F9211242F933F9304 |
:102EB0004F935F936F937F938F939F93AF93BF9342 |
:102EC000EF93FF9380910001882311F40E94B416C0 |
:102ED000FF91EF91BF91AF919F918F917F916F91F2 |
:102EE0005F914F913F912F910F900FBE0F901F90C8 |
:102EF000189580911804882391F125C08091BC0019 |
:102F000087FF02C00E940715B59B02C00E94E5130F |
:102F10008091190496B5891B87FF15C00E9465161C |
:102F2000809117048C3D28F480911704825E809371 |
:102F300017048091F9029091FA0201969093FA0297 |
:102F40008093F902089500B600FE03C000B605FCA8 |
:102F5000D5CF00B600FC03C000B605FECFCF089564 |
:102F6000CF93C82F80914301909144010196909393 |
:102F70004401809343018091200480FD4CC08091E6 |
:102F8000A301992782309105E1F0833091052CF45B |
:102F9000009749F0019791F033C08330910511F10A |
:102FA000049739F12DC00E94AA168C2F0E94971207 |
:102FB00081EC80937C0080B78E7F4BC00E947E1690 |
:102FC0005FC00E9496168C2F0E94C41182EC8093E1 |
:102FD0007C0080B78E7F80BF8091A3018F5F80933C |
:102FE000A30172C00E948A168C2F0E94C41181EC2A |
:102FF00059C00E94A0168C2F0E94C41180ECE7CF0C |
:103000000E9472168C2F0E94C41182EC80937C0067 |
:1030100080B7836056C08091A301992782309105C3 |
:1030200069F1833091052CF4009749F0019719F16B |
:103030003EC08330910549F1049771F138C00E9478 |
:1030400072168C2F0E94971281EC80937C0080B7BF |
:10305000836080BF8091A3018F5F8093A3010E9452 |
:10306000791780911704882389F180911704815082 |
:10307000809317042BC00E94A016A5CF0E948A1629 |
:103080008C2F0E94C41180EC0DC00E9496168C2FCC |
:103090000E94C41181EC9BCF0E947E168C2F0E944F |
:1030A000C41182EC80937C0080B7836094CF0E942F |
:1030B000AA168C2F0E94C41180EC80937C0080B7EC |
:1030C0008E7F80BF1092A3010E9479171092080191 |
:1030D000CF9108951F920F920FB60F9211242F9344 |
:1030E0003F934F935F936F937F938F939F93AF9390 |
:1030F000BF93EF93FF9390913801913051F482E0A8 |
:10310000809338018091A00187BD892F0E94B0175C |
:103110000FC080913801823059F41092380180B785 |
:10312000886180BF80910001882311F40E94B41649 |
:10313000FF91EF91BF91AF919F918F917F916F918F |
:103140005F914F913F912F910F900FBE0F901F9065 |
:1031500018951F920F920FB60F9211242F933F9341 |
:103160004F935F936F937F938F939F93AF93BF938F |
:10317000EF93FF93809156019091A7018823E9F185 |
:10318000292F33279F5F9093A7012130310579F0D4 |
:10319000223031051CF4232B29F01DC022303105CB |
:1031A00079F019C0209140013091410106C0209171 |
:1031B0004001309141012F5F3F4F3695279515C053 |
:1031C000209140013091410136952795809142012F |
:1031D000280F311D0AC020914001309141012F5F1D |
:1031E0003F4F369527951092A701809180008E7FE2 |
:1031F000809380008FEF91E01DC09F5F9093A701A7 |
:10320000915029F420914001309141010CC08091EE |
:1032100042012091400130914101882311F02F5F3C |
:103220003F4F1092A70180918000816080938000C1 |
:103230008FEF93E0821B930B9C018F31910520F05F |
:10324000AC014E51504002C040E050E080918100FE |
:103250008E7F809381003093890020938800509363 |
:103260008B0040938A00809181008160809381006F |
:1032700080910001882331F08091A201882311F010 |
:103280000E94B416FF91EF91BF91AF919F918F91E2 |
:103290007F916F915F914F913F912F910F900FBE52 |
:1032A0000F901F901895F999FECF92BD81BDF89AA5 |
:1032B00080B599270895F999FECF1FBA92BD81BDB7 |
:1032C00060BD0FB6F894FA9AF99A0FBE089520E0FF |
:1032D00030E02617370740F4FC018191480F2F5F3B |
:1032E0003F4F26173707C8F3842F992708959091E9 |
:1032F000200494FF03C01092560103C081E0809324 |
:103300005601292F332725FF02C01092A401907C7B |
:1033100011F484E107C0C901807C90708038910568 |
:1033200021F48CE38093370108958034910511F4E2 |
:103330008AE0F8CF803C910519F487E0809337014B |
:10334000089586E080931A0410921B048FEF8093F7 |
:103350001C049091090190931D0484E680931E043F |
:1033600080E480931F0484E08093200480910A010C |
:10337000981710F080931D044AEA67E070E08AE134 |
:1033800094E00E94671980932104089580911A04A3 |
:1033900099278F709070069799F44AEA67E070E079 |
:1033A0008AE194E00E946719809321042BE539E1BA |
:1033B00048E050E06AE174E080E290E00E94BA1ACE |
:1033C0000895CF93DF93EC014AEA67E070E00E9432 |
:1033D00067199F81981719F085E090E060C04881D7 |
:1033E000842F99278F709070069719F084E090E0F1 |
:1033F00056C0898186FF03C00E94A11947C0109260 |
:103400001B048981282F332720FF03C08A818093E2 |
:103410001C0421FF03C08B8180931D0422FF03C085 |
:103420008C8180931E0423FF03C08D8180931F0431 |
:1034300024FF0AC0909120049E708E81817F982B7A |
:103440009093200440931A0425FF08C09091200413 |
:10345000917F8E818E70982B9093200480911E0412 |
:10346000833718F083E780931E0480911D049091A8 |
:103470000A01891710F090931D044AEA67E070E092 |
:103480008AE194E00E94671980932104898187FF73 |
:1034900002C00E94C6190E94771980E090E0DF9177 |
:1034A000CF91089523E539E148E050E060E270E013 |
:1034B0008AE194E00E94951A4AEA67E070E08AE1A6 |
:1034C00094E00E9467194AEA67E070E08AE194E0BC |
:1034D0000E946719282F80911A0499278F70907085 |
:1034E000069721F480912104821721F00E94A119EE |
:1034F0000E94C6190E94771980911D0490910A01BB |
:10350000891710F090931D0480911E04833718F0E2 |
:1035100083E780931E040895FB01DC0102C005903F |
:103520000D9241505040D8F70895A0E0B0E0EBE98B |
:10353000FAE10C94581B6C017B01EA0159012197B7 |
:103540008FEFCF3FD80789F086010894C11CD11CAA |
:10355000C7010894E11CF11CF5010995F80180836D |
:103560002197FFEFCF3FDF0779F7EAE0CDB7DEB76E |
:103570000C94741BA0E0B0E0E0ECFAE10C945A1B50 |
:103580008C017B01EA01690121978FEFCF3FD807BA |
:1035900071F0F70121917F01C8010F5F1F4F622F6A |
:1035A000F60109952197FFEFCF3FDF0791F7E8E09C |
:1035B000CDB7DEB70C94761B629FD001739FF001EC |
:1035C000829FE00DF11D649FE00DF11D929FF00DB3 |
:1035D000839FF00D749FF00D659FF00D9927729FEA |
:1035E000B00DE11DF91F639FB00DE11DF91FBD0175 |
:1035F000CF0111240895991B79E004C0991F9617F3 |
:1036000008F0961B881F7A95C9F780950895AA1B24 |
:10361000BB1B51E107C0AA1FBB1FA617B70710F0BD |
:10362000A61BB70B881F991F5A95A9F780959095EF |
:10363000BC01CD01089597FB092E07260AD077FD1E |
:1036400004D0E5DF06D000201AF4709561957F4F15 |
:103650000895F6F7909581959F4F0895A1E21A2E4F |
:10366000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F26 |
:10367000A217B307E407F50720F0A21BB30BE40B76 |
:10368000F50B661F771F881F991F1A9469F76095BD |
:103690007095809590959B01AC01BD01CF01089577 |
:1036A0002F923F924F925F926F927F928F929F9252 |
:1036B000AF92BF92CF92DF92EF92FF920F931F9340 |
:1036C000CF93DF93CDB7DEB7CA1BDB0B0FB6F894F1 |
:1036D000DEBF0FBECDBF09942A88398848885F8431 |
:1036E0006E847D848C849B84AA84B984C884DF80A2 |
:1036F000EE80FD800C811B81AA81B981CE0FD11D86 |
:103700000FB6F894DEBF0FBECDBFED010895FFCF19 |
:1037100001FFFF0101FB0701011E280D000D1E2006 |
:103720004E80000A00F41FFC1F0A4144523A000177 |
:103730000A0D424C3A56000A0D48573A332E3020B3 |
:0A3740005265762000FF0014FF0020 |
:00000001FF |
/BL-Ctrl_V3/V1.10/BL-Ctrl3_MEGA168_Plus8_V1_10c_ADR9-16.hex |
---|
0,0 → 1,886 |
:100000000C9453010C949D010C949D010C949D0142 |
:100010000C949D010C949D010C949D010C949D01E8 |
:100020000C949D010C94D4130C9475140C949D01A4 |
:100030000C949D010C94A9180C946A180C94DB1074 |
:100040000C94D1100C949D010C949C0C0C949D016B |
:100050000C949D010C949D010C949D010C945117DE |
:100060000C9436160C949D01C715D415E015E315B4 |
:10007000EA15EA15F015F315F515F715CA15D41597 |
:10008000E015EA15ED151516FA15FD1500160316FF |
:10009000061609160C160F1612161C161C16151627 |
:1000A0001C161C16181643757272656E742020207B |
:1000B0005B302E31415D43757272656E74206163F1 |
:1000C000742E2020202043757272656E7420706536 |
:1000D000616B2020202054656D702E202020205B35 |
:1000E000302E31B0435D566F6C74616765202020FF |
:1000F0005B302E31565D72706D2028726177292039 |
:10010000202020202020536574706F696E74202099 |
:100110002020202020204D6178536574706F696E17 |
:1001200074202020202050504D536574706F696EEC |
:10013000742020202020506172616D2E50776D5305 |
:1001400063616C696E67506172616D2E4D617843B9 |
:10015000757272656E74506172616D2E4D61785466 |
:10016000656D702E2020506172616D2E5363616C3D |
:10017000652049202020537461727420436F756E8E |
:10018000742020202020493243204C6F737420209B |
:100190002020202020204932432D424C2D537461D1 |
:1001A000746520202020313620202020202020208F |
:1001B0002020202020203137202020202020202017 |
:1001C0002020202020203138202020202020202006 |
:1001D00020202020202031392020202020202020F5 |
:1001E0002020202020204761702020202020202057 |
:1001F00020202020202049204269617320202020D7 |
:100200002020202020204F76657243757272656E23 |
:100210007420636E742049204375746F66662020D5 |
:10022000202020636E7464652D6D61676E6574694E |
:100230007A6520636E74496E76616C696450756C82 |
:1002400073657320202049204C696D69742020203B |
:100250002020636E7420536C6F70652D4D696E2085 |
:10026000202020202020536C6F70652D4D61782058 |
:100270002020202020204572726F72436F64652019 |
:100280002020202020204861726477617265202040 |
:100290002020202020204C696D69742049202020D6 |
:1002A00020202020202011241FBECFEFD4E0DEBF6D |
:1002B000CDBF11E0A0E0B1E0E0E1F7E302C00590BE |
:1002C0000D92AA33B107D9F714E0AAE3B1E001C057 |
:1002D0001D92A232B107E1F74BEA20EF37E3A8EA1B |
:1002E000B1E09FE0F9012F5F3F4F84918D939150D2 |
:1002F00097FFF8CFE8EAF1E09EE08191482740952A |
:10030000915097FFFACF8091B701481711F0000084 |
:10031000FECF8091AF0180933A018091B00180932C |
:100320000D018091B10180930A018091B201809307 |
:1003300009010E94D7070C94871B0C940000CF93EF |
:1003400089E191E00E94090CC09104018C2F805D2D |
:100350008A3328F081E30E94F60B8C2F8A5D0E947D |
:10036000F60BCF9108956BEF77E0409163015091C8 |
:100370006401A0911D042AE0A29FC0011124E09114 |
:100380006101F09162018E179F0780F55798BF01B8 |
:10039000681B790BCB01880F991F880F991FBA0131 |
:1003A000681B790B80910A01829FC0011124C296BB |
:1003B0008E179F07D8F480915601882319F080E0AA |
:1003C00092E002C080E094E09093890080938800DE |
:1003D0008BB1877C8BB960E070E08091FD029091D9 |
:1003E000FE0201969093FE028093FD028091170415 |
:1003F0009927880F991F880F991F2BEF37E0281B2B |
:10040000390B261737070CF4B90180914F018F3F44 |
:1004100071F0282F3327B4E0220F331FBA95E1F78C |
:10042000245D3E4F2617370724F4B90102C010920D |
:100430004E0180913C0190913D01481759070CF401 |
:10044000AC0177FF02C060E070E0641775070CF440 |
:10045000AB0180913E0190913F018417950708F40C |
:10046000AC0180918C01882319F582E080938C0186 |
:1004700085E0A89FC0011124E817F90748F44C59FA |
:100480005F4F50933F0140933E014456504008C097 |
:10049000445F5F4F50933F0140933E014C505040AA |
:1004A0004456504050933D0140933C014C595F4F9E |
:1004B000F894CA0157FD019695958795909341014F |
:1004C00080934001880F991F481B590B40934201AC |
:1004D00078947093D8026093D7020895CF93DF93F6 |
:1004E000E0910F01F091100181E2E330F8071CF078 |
:1004F000C0E0D0E040C089E1E13FF8074CF0CF0117 |
:1005000066E070E00E941B1BCB01C8E7D5E031C05C |
:1005100080E1E33CF8075CF0CF01F7FD0796F3E0DC |
:1005200095958795FA95E1F7CAE6D4E022C089E06F |
:10053000E938F8074CF0CF0166E070E00E941B1B21 |
:10054000CB01CEE1D5E015C085E0E932F80754F0E3 |
:10055000CF01F7FD03969595879595958795CDEEF7 |
:10056000D5E007C0CF01F7FD019695958795CAE3C1 |
:10057000D7E0C81BD90BCE016AE070E00E941B1BBC |
:1005800060930E01D093D002C093CF026837D0F5AC |
:1005900020910B0130910C012C9FC0012D9F900DDB |
:1005A0003C9F900D1124E92FFF27C90153E0880FCC |
:1005B000991F5A95E1F7820F931F820F931F67E0EF |
:1005C00070E00E941B1BE61BF70B80915D01909170 |
:1005D0005E0143E0969587954A95E1F78E0F9F1F40 |
:1005E0006AE070E00E941B1BFB01C90163E070E040 |
:1005F0000E941B1B6E177F070CF4FB0180910B01FF |
:100600008E1B02C080910B0180930D0180915D01D2 |
:1006100090915E01EAEFF0E0E81BF90BE93CF1058F |
:1006200014F0E8ECF0E08FEFEE3CF80714F4EEEC99 |
:10063000FFEF90911E048AE0989FC00111248E0F55 |
:100640009F1FFE01E81BF90B1E161F067CF4EE0F20 |
:10065000FF1FCDEFD0E0CE1BDF0BC230D10514F46D |
:10066000C1E0D0E0C0930201579803C08FEF8093A0 |
:100670000201DF91CF91089580915D0190915E011B |
:100680009093CA028093C9028091610190916201A6 |
:100690002091130130911401821B930B9093CC0293 |
:1006A0008093CB0280911101909112019093D2021C |
:1006B0008093D10280915B0190915C019093D40270 |
:1006C0008093D30280916301909164019093D6024C |
:1006D0008093D50280919301909194019093DA02D6 |
:1006E0008093D90280911C0499279093DC02809317 |
:1006F000DB0280911D0499279093DE028093DD0236 |
:1007000080911E0499279093E0028093DF028091EC |
:100710001F0499279093E2028093E1028091540193 |
:1007200090915501892B39F40E94B4149927909324 |
:10073000E8028093E7028091170499279093FC02C6 |
:100740008093FB0280913C0190913D0190930003C6 |
:100750008093FF0280913E0190913F0190930203AC |
:10076000809301038091B8019927909304038093AB |
:10077000030380910B0190910C01909306038093E9 |
:100780000503809101019927909308038093070343 |
:10079000089560E070E0F894209154013091550183 |
:1007A000E0919B01F0919C01789410923B01909113 |
:1007B0004F01992319F080E180933B012115310508 |
:1007C00059F180913B01816080933B01BF019A30D8 |
:1007D00030F487E0E83FF80710F060E070E0579AE7 |
:1007E00081E02C3C380730F480913B018460809399 |
:1007F0003B010AC0309741F010929401109293018E |
:100800001092030110929001309751F080913B01BA |
:10081000826080933B0104C030939C0120939B0134 |
:1008200081E0223C380758F080914D0180FF02C0E2 |
:10083000309729F08091900188230CF04AC04091B4 |
:100840005201509153014115510579F08091680191 |
:10085000682F7727B3E0660F771FBA95E1F71092FC |
:100860000301579A1092900134C08091900187FF44 |
:1008700025C081E08093030180913B0188608093D3 |
:100880003B01209193013091940189E0253C380788 |
:1008900008F09A0187E02C3F380710F02BEF37E083 |
:1008A0002333310540F4992331F48091500188239A |
:1008B00011F4BA0101C0B901579A0BC0232B09F4F6 |
:1008C0005798BF011092680180916F0080628093F9 |
:1008D0006F0020911C04809102018F3F19F0821754 |
:1008E00008F4282F809101018F3F19F0821708F436 |
:1008F000282F2F3FC1F0CB01AA27BB27332744273E |
:100900005527BC01CD010E94DC1A97FF04C061503D |
:100910007F4F8F4F9F4FBB2797FDBA95A92F982FD9 |
:10092000872FBC0157986115710511F0605B7F4FEF |
:1009300087E06C3F780710F06BEF77E08091A101C2 |
:10094000882331F080914F01882311F061E070E03D |
:10095000CB0108950E94651680918100816080938B |
:10096000810080916F00816080936F00E09115019C |
:10097000F091160180E0099580915601882371F06D |
:10098000809180008260809380008FEF91E090934F |
:1009900089008093880084EF91E00DC080918000F1 |
:1009A0008360809380008FEF93E090938900809321 |
:1009B000880088EE93E090938B0080938A000895DE |
:1009C00096B5980F86B5891B87FDFCCF0895CF9308 |
:1009D0009091C10090689093C100C82FC150CF3F43 |
:1009E00059F0579886E990E00E949D11579A8CE241 |
:1009F00091E00E949D11F2CF88E592E00E949D1146 |
:100A0000CF9108951F93CF93DF93162FEC01219779 |
:100A10008FEFCF3FD807A9F0812F0E9498138091C4 |
:100A20001301909114018A5B9F4F209161013091D5 |
:100A300062018217930758F70E94651681E090E0E3 |
:100A400002C080E090E0DF91CF911F910895FF9266 |
:100A50000F931F93CF93DF9300E0579A8091040187 |
:100A6000F82EFA9423E0F222F394282F33278CE215 |
:100A700091E0289FE001299FD00D389FD00D1124CF |
:100A800080919B0190919C01892B19F4CE010E94C9 |
:100A90009D1180B7877F80BF0093A201F89488E101 |
:100AA0000FB6F89480936000109260000FBE0E9411 |
:100AB000651660E086E00E945E131092600110925D |
:100AC0005F01C9E0D0E081E00E94C4112197D7FF07 |
:100AD000FACF80915F01909160019093140180930F |
:100AE0001301C39710F000E16EC061E083E00E9443 |
:100AF0005E134E978959934008F002E161E087E068 |
:100B00000E945E1380559040815D924010F001E19B |
:100B10005AC00E94651619E015B98AE00E94E004E7 |
:100B200061E080E00E945E13883C910508F404E0D7 |
:100B30000E9465160E9465161BB98AE00E94E004B7 |
:100B400061E080E00E945E134A9708F007E00E948F |
:100B50006516C1E1C5B98AE00E94E00461E0862F14 |
:100B60000E945E13883C910508F405E00E9465161A |
:100B70000E946516CBB98AE00E94E00461E0862FEE |
:100B80000E945E134A9708F008E00E946516C1E2D1 |
:100B9000C5B98AE00E94E00461E082E00E945E1331 |
:100BA000883C910508F406E00E9465160E946516CF |
:100BB000CBB98AE00E94E00461E0862F0E945E13B8 |
:100BC0004A9708F0012F0E94651680919B01909131 |
:100BD0009C01892B09F0F5C080911A0484FDF1C0B5 |
:100BE000002361F0802F8F5B0E94F60BDFC00CE0CA |
:100BF0008DE40E94F60B0E946516D8C08BB1877CED |
:100C00008BB98AB188638AB985B1886385B984B1A3 |
:100C1000886384B961E08AE090E00E9402058091D7 |
:100C20001301909114010A962091610130916201A3 |
:100C30008217930708F40BE085B1877C85B984B1EE |
:100C4000886384B98BB188638BB98AB188638AB9A8 |
:100C500061E08AE090E00E9402058091130190918A |
:100C600014010A9620916101309162018217930765 |
:100C700008F40AE08AEB93E090938900809388005F |
:100C80008CE993E090938B0080938A0081E08093BD |
:100C9000A40110E061E088E090E00E94020589E68E |
:100CA000F89EC0011124C0E0D0E08052934009F4C6 |
:100CB00041C0812F99278130910571F082309105D3 |
:100CC0001CF4892B21F011C0029759F00EC00E942C |
:100CD00072160E94A01609C00E947E160E94AA16D3 |
:100CE00004C00E948A160E94961661E082E090E09D |
:100CF0000E940205882351F0012F0F5F812F8F5C26 |
:100D00000E94F60B0E94651614E614C00E94651638 |
:100D100061E08F2D99270E940205219689E6F89EB1 |
:100D20009001112480E293E0821B930BC817D9072E |
:100D300008F4BFCF1F5F133008F4ACCF0E946516D4 |
:100D40008CE092E090938900809388008EEE91E091 |
:100D500090938B0080938A0061E08AE090E00E948B |
:100D60000205002319F51092620110926101C0E0A2 |
:100D7000D0E084B1877C84B98AB1877C8AB961E08C |
:100D800081E090E00E94020580911301909114018E |
:100D90000A9620916101309162018217930708F44D |
:100DA00026CF219684E0C030D80718F30E9465163C |
:100DB0000093B8017894002321F0802F0E94E7046B |
:100DC000FCCFDF91CF911F910F91FF9008956F920B |
:100DD0007F928F929F92AF92BF92CF92DF92EF92CB |
:100DE000FF920F931F938C0132E3632E712C812CA1 |
:100DF000912C80B7877F80BF1092A201E0911701EC |
:100E0000F09118018CEF09950E946516109262010D |
:100E100010926101C8019695879590934101809346 |
:100E2000400180E00E94B01780E00E94B0178091DE |
:100E30001704853198F18EE591E00E94831190931B |
:100E40004601809345010CC085B1877C85B984B18A |
:100E5000886384B98BB188638BB98AB188638AB996 |
:100E600080914501909146010E948E11882361F383 |
:100E70000E94651680E00E94B01788EC90E010C0D8 |
:100E80000E9465168FE08093B80181E00E94E7041C |
:100E900080E090E07FC081E090E07CC08EE190E057 |
:100EA0000E948311909346018093450109C00E94DE |
:100EB000981380916101909162018937910500F743 |
:100EC00080914501909146010E948E11882379F30B |
:100ED00080B7877F80BF1092A201109341010093D9 |
:100EE00040011092440110924301EE24FF24870137 |
:100EF0006401530183E0AA0CBB1CCC1CDD1C8A9549 |
:100F0000D1F7D601C501860D971DA81DB91D860D07 |
:100F1000971DA81DB91DE816F9060A071B0748F416 |
:100F200085E00E94E0040894E11CF11C011D111DE4 |
:100F3000E8CF809113019091140188589F4F209120 |
:100F40006101309162018217930708F499CFC401BF |
:100F5000B3012FE030E040E050E00E942E1B621A07 |
:100F6000730A840A950A0894610871088108910837 |
:100F70008EE1681671048104910408F48CCF80918D |
:100F8000430190914401892B09F0ABCF80E00E948E |
:100F9000B017A7CF1F910F91FF90EF90DF90CF90E8 |
:100FA000BF90AF909F908F907F906F900895CFEFFC |
:100FB000D4E0DEBFCDBF17B880E188B988EB8AB92D |
:100FC00087E08BB91EE014B981E085B9579883E0BA |
:100FD0000E94E00415BC80EE8ABD18BD0E94651613 |
:100FE00080916E00826080936E0080916E008460BC |
:100FF00080936E00789480910D01992790930C0155 |
:1010000080930B010E94BC130E94521A8091C10070 |
:10101000877F8093C10052985A9AE0911701F0910E |
:1010200018018CEF099589E090E00E949D11809154 |
:10103000C100877F8093C1008091B40082FF06C009 |
:10104000499B02C081E007C083E005C0499B02C004 |
:1010500082E001C084E0809304010E94AA04809190 |
:10106000B40082FF13C05A98529A8AE090E00E941E |
:101070009D11F89452985A9AE0911701F091180135 |
:101080008CEF099578944A9919C013C0529A5A9ACC |
:101090008AE090E00E949D11F89452985A985A9ACA |
:1010A000E0911701F09118018CEF099578944A9B13 |
:1010B00005C0809104018C5F80930401809104013C |
:1010C000885F809304015298529A8091C100886091 |
:1010D0008093C1000E94220C80E50E94FB140E94B4 |
:1010E000B31180E00E94981384EF91E00E94831175 |
:1010F000909346018093450106C080919B01909199 |
:101100009C01892B41F480914501909146010E94F8 |
:101110008E11882391F310926401109263010E9452 |
:10112000B30181E080937C001092940110929301AE |
:1011300085B910921B04109256010E9427050E9447 |
:1011400077190E94020C0E949F010E94220C80913C |
:10115000C10080688093C1000E9465161092A401AE |
:101160008BB5992790930C0180930B0110928B0102 |
:1011700010928A01109238010E94C9039093640171 |
:1011800080936301892B31F40E94C9039093640119 |
:101190008093630180914E01863008F057988091CA |
:1011A000630190916401892B09F047C010925001AE |
:1011B00010924F011092A4010E9465168091470180 |
:1011C000909148010E948E11882309F458C0109212 |
:1011D0004E011092B80180B7877F80BF1092A201A4 |
:1011E00081E0809307011092170480911301909180 |
:1011F000140120916101309162012817390710F420 |
:10120000019704C08217930728F401969093140164 |
:101210008093130182E390E00E9483119093480130 |
:101220008093470180911301909114019093F402EF |
:101230008093F30212BC11BC22C080910701882365 |
:1012400069F420915B0130915C012430310550F448 |
:1012500080914F01853630F08A3F20F481E0809301 |
:10126000500105C02930310510F0109250018CED6D |
:1012700095E00E948311909348018093470120914B |
:10128000A1012223A1F48091430190914401892B73 |
:1012900071F080911704883C50F42093070186E98F |
:1012A00090E00E94831190934601809345018091C4 |
:1012B0000701882321F010926401109263010E94BB |
:1012C000B301809108018150809308018091080149 |
:1012D0008F3F09F051CF8091630190916401892B78 |
:1012E00011F48AE001C084E6809308010E945A1636 |
:1012F00080916701882321F00E94890F0E94830E4C |
:1013000080914B0190914C010E948E11882309F429 |
:1013100029C182E390E00E94831190934C01809355 |
:101320004B018091A101882391F08091A10181500E |
:101330008093A1018091A101882349F48091F50255 |
:101340009091F60201969093F6028093F5028091B7 |
:10135000590190915A012091570130915801B901DA |
:101360000E94071B809161019091620190935A0144 |
:101370008093590181E090E0909358018093570148 |
:1013800080911301909114016817790798F0681BF8 |
:10139000790B80911F049927689F9001699F300DF8 |
:1013A000789F300D1124B90116E0769567951A954E |
:1013B000E1F702C060E070E080915D0190915E0114 |
:1013C0008617970710F4019604C06817790728F468 |
:1013D000019790935E0180935D0180915D019091F2 |
:1013E0005E018B30910588F0681B790B77FF02C096 |
:1013F000695F7F4FC3E075956795CA95E1F7860FE2 |
:10140000971F90935E0180935D01E0915D01F091E3 |
:101410005E01CF016AE070E00E94071B40911D044D |
:10142000842F992786179707F0F48AE0489FC00118 |
:1014300011249F01281B390BC901880F991F820FA6 |
:10144000931F2DEF30E0281B390B2931310514F49F |
:1014500029E130E02F3F310519F014F02FEF30E093 |
:101460002093010103C08FEF80930101F8946091F4 |
:10147000430170914401AB015695479520915B0162 |
:1014800030915C012417350728F450935C01409398 |
:101490005B0118C0C901880F991F820F931F840F29 |
:1014A000951F969587959695879590935C01809367 |
:1014B0005B01672B39F4009729F0019790935C0149 |
:1014C00080935B01109244011092430178940E9432 |
:1014D0006E0280916701882321F08150809367011B |
:1014E00002C080934D018091A4018823B1F48091C2 |
:1014F0004F01813590F08091110190911201853654 |
:10150000910558F08091A101882339F4809120043D |
:1015100085FD03C081E08093A40180914F018E314D |
:1015200020F481E0809300011DC020915B01309187 |
:101530005C012333310528F0F8941092000178946F |
:1015400011C02E32310530F480915D0190915E0121 |
:101550000F9718F02931310528F4F89481E0809331 |
:10156000000178948091490190914A010E948E1166 |
:101570008823F1F085E090E00E94831190934A0166 |
:101580008093490180915B0190915C01892B39F036 |
:1015900080914F018F3F19F08F5F80934F018091B1 |
:1015A0000701882329F0F89480E00E94971278942C |
:1015B00080914501909146010E948E11882329F463 |
:1015C00080915001882309F4D7CD80915B019091DF |
:1015D0005C014E9708F0D0CD84E690E00E94831124 |
:1015E000909346018093450110924F0151E0F52EF2 |
:1015F000F09207011092A40180B7877F80BF1092FC |
:10160000A2010E94C903892B09F4B6CD80910F0174 |
:10161000909110018958994008F4AECD1092600164 |
:1016200010925F01109250018091200499278E70D2 |
:10163000907004E110E0809FE001819FD00D909FA9 |
:10164000D00D1124A096F09200011092A401C09038 |
:101650005201D09053018091E3029091E4020196EF |
:101660009093E4028093E302CE010E94E706882370 |
:1016700009F482CDD0925301C092520110924101DF |
:10168000109240018091A201882319F480B78861EB |
:1016900080BFF092A20110920701109217041092DD |
:1016A000440110924301C8010E94831190934601A6 |
:1016B0008093450180914501909146010E948E11D1 |
:1016C0008823C1F310925C0110925B018AE090E0E4 |
:1016D00090934101809340018C179D07E0F5809124 |
:1016E0004001909141010A969093410180934001FD |
:1016F00084E190E00E94831190934601809345011C |
:1017000013C080916101909162018937910540F089 |
:101710000E9465168FE08093B80181E00E94E70483 |
:101720000E94890F0E94830E80914501909146018D |
:101730000E948E11882329F38091430190914401E6 |
:10174000892B49F01092440110924301809140018D |
:1017500090914101C1CF80914E01882321F08130C9 |
:1017600039F4CC0FDD1FD0934101C093400109C073 |
:10177000CE01880F991F8C0F9D1F9093410180937C |
:10178000400184E690E00E9483119093460180938B |
:10179000450104C00E94890F0E94830E809145017B |
:1017A000909146010E948E118823A1F380914E01F1 |
:1017B0008F5F80934E01D0925301C092520182E319 |
:1017C00090E00E94831190934A018093490188EC34 |
:1017D00090E00E94831190934601809345011092FE |
:1017E000FA021092F9021092A101C6CC982F8091B2 |
:1017F000C10083FF06C08091C00085FFFCCF90939D |
:10180000C60008958DE00E94F60B8AE00E94F60B58 |
:1018100008951F93CF93DF93EC0110E08881882314 |
:1018200069F0FE01E10FF11D1F5F80810E94F60B40 |
:10183000FE01E10FF11D8081882399F7DF91CF919F |
:101840001F9108950F931F930FB788E18093C100F4 |
:101850001092710110926F0110926E0110926D0141 |
:1018600081E080931F018093BD021AE01093BE02B5 |
:1018700082E08093C1028BE08093BF021092C0028D |
:1018800080E291E00E94090C81E30E94F60B8EE257 |
:101890000E94F60B81E30E94F60B80E30E94F60B98 |
:1018A00083E60E94F60B87E291E00E94090C80918A |
:1018B0003A01612F0E94FB1A805D0E94F60B809115 |
:1018C0003A01612F0E94FB1A892F805D0E94F60B5E |
:1018D0000FBF10926C011F910F9108958091C0006D |
:1018E00086FF29C080911F01882309F5809172012C |
:1018F0009091730101969093730180937201FC01A2 |
:10190000E75FFC4FE081ED3019F08A3F910539F433 |
:10191000109273011092720181E080931F018091F7 |
:10192000C00081608093C000E093C60008951092CB |
:1019300073011092720108951F920F920FB60F92C9 |
:1019400011242F933F934F935F938F939F93AF9364 |
:10195000BF93CF93DF93EF93FF935091C600809195 |
:101960007101882309F062C040916C01442371F435 |
:10197000533279F45093B90181E080936C0183E292 |
:1019800090E0909375018093740150C04A3F08F035 |
:1019900049C02091740130917501E42FFF275D301B |
:1019A00069F0E754FE4F50834F5F40936C01250F61 |
:1019B000311D309375012093740138C0DF01A754A5 |
:1019C000BE4FFD0132978081281B3109ED0121971F |
:1019D0008881281B3109C9019F70909375018093FC |
:1019E0007401689415F8969587951694E1F7982FE9 |
:1019F000935C2F733070235C8081981771F4888119 |
:101A0000281759F484E6809367015C934F5F4093F5 |
:101A1000700181E08093710102C0109271011092F7 |
:101A20006C0104C080936C0180937101FF91EF9170 |
:101A3000DF91CF91BF91AF919F918F915F914F9126 |
:101A40003F912F910F900FBE0F901F901895A0E01F |
:101A5000B0E09D01482F5527A417B50748F4E9E0E9 |
:101A6000F3E08191280F311D1196A417B507C8F333 |
:101A70003F70FD01E75FFC4FC90176E096958795C1 |
:101A80007A95E1F7835C80831196FD01E75FFC4F57 |
:101A90002F733070822F835C8083A65FBC4F8DE0F4 |
:101AA0008C9310921F01809109038093C6000895C2 |
:101AB000CF92DF92EF92FF920F931F93CF93DF931A |
:101AC000CDB7DEB72B859C850D85DD2483E2809321 |
:101AD00009039F5990930A0320930B0333E0C32E0D |
:101AE000002309F49AC0EE84FF84BE016E5E7F4F2E |
:101AF000A889B9890150109709F48FC01097B9F0DF |
:101B0000F701ED0DF11DD3949081119791F400230D |
:101B100049F1FB016E5F7F4FDB01E080F1806E5F7A |
:101B20007F4F0D90BC91A02DDD24015002C090E0AC |
:101B300019C01097B9F0F701ED0DF11DD394408154 |
:101B4000119791F4002341F1FB016E5F7F4FDB01A0 |
:101B5000E080F1806E5F7F4F0D90BC91A02DDD2461 |
:101B6000015002C040E018C01097B1F0F701ED0D30 |
:101B7000F11DD3941081119781F4002371F0FB01C2 |
:101B80003296DB01ED90FC90BF016E5F7F4FA0812C |
:101B9000B181DD24015001C010E0EC2DFF27E75F8B |
:101BA000FC4F892F86958695835C8083C394EC2DAA |
:101BB000FF27E75FFC4F892F99278370907024E0FF |
:101BC000880F991F2A95E1F755279A0194E03695D9 |
:101BD00027959A95E1F7822B835C8083C394EC2D43 |
:101BE000FF27E75FFC4F4F705070440F551F440FA5 |
:101BF000551F812F992726E0969587952A95E1F71D |
:101C0000842B835C8083C394EC2DFF27E75FFC4F1C |
:101C10001F73135C1083C3946ECF8C2D0E94270D0D |
:101C2000DF91CF911F910F91FF90EF90DF90CF90B8 |
:101C30000895A3E07A2F409170014650442309F49F |
:101C400058C0E72FFF27E754FE4F80818D537F5FF9 |
:101C5000E72FFF27E754FE4F20812D537F5FE72FAB |
:101C6000FF27E754FE4F30813D537F5FE72FFF276B |
:101C7000E754FE4F60816D537F5F9927880F991F4E |
:101C8000880F991F522F52955F70582B822F9927DA |
:101C90008F709070F4E0880F991FFA95E1F7232F69 |
:101CA00026952695282B832F992783709070E6E040 |
:101CB000880F991FEA95E1F7682B41504F3FC9F013 |
:101CC000EA2FFF27E754FE4F5083AF5F41504F3F4D |
:101CD00081F0EA2FFF27E754FE4F2083AF5F41508A |
:101CE0004F3F39F0EA2FFF27E754FE4F6083AF5F85 |
:101CF000A5CF8CEB91E090936F0180936E01A35080 |
:101D0000A0936D01089580917101882309F400C1A9 |
:101D10000E94190E8091BA018B3668F08091BA0149 |
:101D2000282F332780910401992785599F4F281721 |
:101D3000390709F0E5C08091BB01992784369105E8 |
:101D400009F4B5C0853691059CF48235910519F1E9 |
:101D50008335910544F48132910509F46AC08B976B |
:101D600009F4C7C0CDC08136910509F4B5C0C8C01B |
:101D700085379105E9F0863791052CF48437910574 |
:101D800009F444C0BDC08637910509F4A1C0873766 |
:101D9000910521F1B5C088E190E02CE00FB6F894F0 |
:101DA000A895809360000FBE20936000F894FFCF49 |
:101DB000E0916E01F0916F0190818091040198177C |
:101DC00019F08081882319F41092690103C082E020 |
:101DD0008093690180916B01886088C0E0916E01F9 |
:101DE000F0916F018081882329F090818091040116 |
:101DF000981729F4CF0101960E94E11901C082E0F1 |
:101E00008093690180916B01806170C080910401B1 |
:101E1000E0916E01F0916F01E80FF11D3197808123 |
:101E20008093680180E293E0909353018093520184 |
:101E300067C084EF91E09093530180935201209109 |
:101E40000401A0916E01B0916F01FD01E20FF11D3F |
:101E50008081809368018C9187FD06C08091070185 |
:101E6000882311F01092680180916801882369F03D |
:101E700080913B0182FD03C08C9188231CF481E09A |
:101E800080934D0180914D01826080934D01E091DE |
:101E90006E01F0916F01808199278F7090703327C8 |
:101EA0008217930769F580916B0180621FC0E091F2 |
:101EB0006E01F0916F0190818AE0989FC00111241A |
:101EC000909366018093650180916B0182600EC0E2 |
:101ED00080916B0181600AC0E0916E01F0916F0109 |
:101EE000808180936A0180916B01846080936B0193 |
:101EF00007C0E0916E01F0916F0180818093C40072 |
:101F000010926F0110926E0110926D01109271018A |
:101F10000895CF93DF93CDB7DEB721970FB6F8942E |
:101F2000DEBF0FBECDBF80911F01882319F40E9430 |
:101F30006E0C2EC180916B01992785FF37C080916F |
:101F40003B01809376010E949914809377010E944F |
:101F5000B4148093780180910E018093790180916F |
:101F60001101909112018135910530F0809111019C |
:101F7000805580937A0104C01092120110921101D1 |
:101F800085E090E09F938F9386E791E09F938F93F6 |
:101F900081E08F9380910401865F8F938FE38F930D |
:101FA0000E94580D80916B018F7D70C082FF30C000 |
:101FB00080916A01992724E0880F991F2A95E1F7FB |
:101FC0008A559F4F40E150E0BC0186E791E00E94B6 |
:101FD0008C1A80E190E09F938F9386E791E09F9326 |
:101FE0008F9381E090E09F938F938AE691E09F9397 |
:101FF0008F9382E08F9385E08F9381E48F930E948B |
:10200000580D8FEF80936A0180916B018B7FB6C072 |
:102010008091650190916601892B41F080910D04BA |
:1020200090910E040E948E11882329F480916B01F7 |
:10203000992781FF31C00E943C0380915F019091FC |
:1020400060019093CE028093CD02109260011092B5 |
:102050005F0182E490E09F938F9387EC92E09F93DF |
:102060008F9381E08F9385E08F9384E48F930E9418 |
:10207000580D80916501909166010E9483119093A3 |
:102080000E0480930D0480916B018D7F80936B0112 |
:102090008DB79EB7079677C080FF14C08AE090E0A6 |
:1020A0009F938F938DEB92E09F938F9381E08F931B |
:1020B00085E08F9386E58F930E94580D80916B0188 |
:1020C0008E7FE4CF83FF36C080916901882319F4A5 |
:1020D00081E0898301C0198288E090E09F938F930B |
:1020E0008AE194E09F938F9321E030E03F932F9318 |
:1020F00084E091E09F938F933F932F9389E691E043 |
:102100009F938F933F932F93CE01820F931F9F93A3 |
:102110008F9384E08F9385E08F9385E58F930E9462 |
:10212000580D80916B01877F80936B018DB79EB7AF |
:10213000439629C084FF2CC080916901882319F43B |
:1021400081E0898301C0198221E030E03F932F9321 |
:1021500089E691E09F938F933F932F93CE01820F57 |
:10216000931F9F938F9382E08F9385E08F9387E5F2 |
:102170008F930E94580D80916B018F7E80936B012D |
:102180008DB79EB70B960FB6F8949EBF0FBE8DBF4E |
:1021900021960FB6F894DEBF0FBECDBFDF91CF9171 |
:1021A00008951F920F920FB60F9211240F900FBE39 |
:1021B0000F901F9018951F920F920FB60F92112437 |
:1021C0002F933F934F935F936F937F938F939F933F |
:1021D000AF93BF93EF93FF9388B5845688BD8091EA |
:1021E0008D01815080938D01882309F07BC082E0AE |
:1021F00080938D0180918A0190918B01019690933B |
:102200008B0180938A0188E190E02BE00FB6F8946F |
:10221000A895809360000FBE2093600080915401C8 |
:1022200090915501009719F1019790935501809372 |
:10223000540121E0883B920739F021E08C3292076B |
:1022400019F08436910599F480E50E94FB14809181 |
:10225000540190915501885B914049F48091E502C9 |
:102260009091E60201969093E6028093E5028091B8 |
:102270009101882331F080919101815080939101E7 |
:1022800002C0809390018091520190915301009778 |
:1022900029F00197909353018093520180918C0112 |
:1022A000882329F080918C01815080938C0180914A |
:1022B0003501909136010197909336018093350155 |
:1022C0008F5F9F4F79F488E795E090933601809374 |
:1022D00035018091540190915501892B19F480E5C5 |
:1022E0000E94FB14FF91EF91BF91AF919F918F914D |
:1022F0007F916F915F914F913F912F910F900FBE02 |
:102300000F901F9018959C01F89480918A019091EC |
:102310008B017894820F931F01970895F894209170 |
:102320008A0130918B01821B930B892F992780782A |
:102330007894992787FD90950895CF93DF930E9415 |
:102340008311EC0108C080916701882321F00E946D |
:10235000890F0E94830ECE010E948E11882399F36B |
:10236000DF91CF91089587EA80937A0087EC80937C |
:102370007C0080917A00806480937A0080917B0059 |
:10238000806480937B000895CF93DF93C82F96ECF1 |
:1023900090937C0080B7806880BF84ED80937A0042 |
:1023A00080917A00806180937A0090937C00809184 |
:1023B0007A00806480937A008091590190915A014B |
:1023C00080569A4EB8F48091590190915A0120910B |
:1023D000610130916201820F931F90935A018093A3 |
:1023E000590180915701909158010196909358019D |
:1023F0008093570180917A0084FD0DC0CC23D1F3E6 |
:102400008091BC0087FF02C00E940715B59BF2CFE8 |
:102410000E94E513EFCFC0917800D09179008091B0 |
:102420000D019927C89F9001C99F300DD89F300D8D |
:10243000112445E0369527954A95E1F730936201DE |
:102440002093610180915F01909160018217930751 |
:1024500020F43093600120935F0132E0C935D30747 |
:1024600008F454C00E94651680915601882319F023 |
:1024700080E092E002C080E094E090938900809335 |
:102480008800109241011092400110924201109276 |
:10249000A40180913E0190913F0120916301309110 |
:1024A00064012817390720F430933F0120933E013F |
:1024B0008AE080938C018091F7029091F802019656 |
:1024C0009093F8028093F70283E0C73BD80750F05F |
:1024D00083E08093A10180914F01833318F082E360 |
:1024E00080934F0180910D019927C89F9001C99F4A |
:1024F000300DD89F300D1124C90125E096958795A0 |
:102500002A95E1F7909362018093610184E08093C2 |
:102510007A0080917B00806480937B0080B78F7706 |
:1025200080BF80B7806180BFDF91CF9108951F93F6 |
:10253000CF93182F809151018150809351018F3F8B |
:1025400009F0B6C08EE18093510180918E018150D7 |
:1025500080938E018F3F09F058C0C0917C0097ECAA |
:1025600090937C0080B7806880BF84ED80937A0070 |
:1025700080917A00806180937A0090937C008091B2 |
:102580007A00806480937A0080917A0084FD0DC087 |
:102590001123D1F38091BC0087FF02C00E94071570 |
:1025A000B59BF2CF0E94E513EFCFC0937C00209142 |
:1025B000780030917900C901E4E0880F991FEA950D |
:1025C000E1F7820F931F67E170E00E94071B809183 |
:1025D000110190911201860F971F96958795909300 |
:1025E00012018093110184E080937A0080917B0036 |
:1025F000806480937B0080B78F7780BF80B78061D5 |
:1026000080BF83E080938E0156C0C0917C0093EC24 |
:1026100090937C0080B7806880BF84ED80937A00BF |
:1026200080917A00806180937A0090937C00809101 |
:102630007A00806480937A0080917A0084FD0DC0D6 |
:102640001123D1F38091BC0087FF02C00E940715BF |
:10265000B59BF2CF0E94E513EFCFC0937C00809131 |
:102660007800909179009C0163E0220F331F6A95F6 |
:10267000E1F7280F391F280F391F80910F01909122 |
:102680001001820F931F9695879590931001809368 |
:102690000F0184E080937A0080917B0080648093B6 |
:1026A0007B0080B78F7780BF80B7806180BF03C019 |
:1026B000812F0E94C411CF911F9108951F93CF9332 |
:1026C000C62F10917C00982F906C90937C0080B75F |
:1026D000806880BF86ED80937A0080917A00806167 |
:1026E00080937A0090937C0080917A00806480933C |
:1026F0007A0080917A0084FD09C0CC23D1F38091C7 |
:10270000BC0087FFF6CF0E940715F3CF10937C0023 |
:1027100087E080937A0080B78F7780BF80B7806131 |
:1027200080BF8091780090917900CF911F9108959A |
:10273000682F86E00E945E1320910D013327829F4F |
:10274000A001839F500D929F500D11249A01F5E036 |
:1027500036952795FA95E1F7309362012093610150 |
:1027600080915F01909160018217930720F430936C |
:10277000600120935F01089580918100806C8093B7 |
:1027800081008091810080648093810080916F003E |
:10279000806280936F0080916F00816080936F00F2 |
:1027A00082E08093B10008951F920F920FB60F92AE |
:1027B00011248F93809192018F5F809392018F916A |
:1027C0000F900FBE0F901F90189580916F0085FF9E |
:1027D0008AC08091810086FF17C01092B20081E00C |
:1027E0008093700010928F018091920180939701E5 |
:1027F00010929201809181008F7B8093810084E60A |
:1028000080939101B89A6FC01092B100B89B05C037 |
:10281000809192018F5F809392012091B20080910C |
:1028200092019927582F4427420F511D509396012A |
:102830004093950182E08093B10080918100806493 |
:1028400080938100809190018F3F51F04B5C584004 |
:102850004552524028F4809190018F5F80939001FF |
:1028600080919501909196012AE0803F92073CF07B |
:10287000805F9A40909396018093950104C01092D6 |
:1028800096011092950180919701843688F4809189 |
:102890004F01882369F080919501909196012091D4 |
:1028A000930130919401820F931F9695879517C0DD |
:1028B00080919301909194019C0143E0220F331F7A |
:1028C0004A95E1F7281B390B80919501909196016B |
:1028D000820F931F23E0969587952A95E1F79093B1 |
:1028E000940180939301B59A08951F920F920FB6A9 |
:1028F0000F9211242F933F934F935F936F937F9386 |
:102900008F939F93AF93BF93EF93FF930E94E51331 |
:10291000FF91EF91BF91AF919F918F917F916F91B7 |
:102920005F914F913F912F910F900FBE0F901F908D |
:10293000189580915D0190915E01893C910518F494 |
:1029400080915D010CC022E0853E920750F4885CC6 |
:1029500090406AE070E00E94071BCB0188539927E2 |
:1029600008958EEF90E008958091B8018823F1F5E5 |
:1029700080919B0190919C01892B71F48091680159 |
:10298000882351F48091200485FD03C088EF90E0F6 |
:10299000089589EF90E008958091A101882319F0AE |
:1029A00084E690E0089580914F01823350F4809145 |
:1029B0004E01863018F087E290E0089588E290E0BA |
:1029C000089580914D01882359F0809101018F3F36 |
:1029D00039F4809102018F3F19F48EEF90E0089551 |
:1029E0009091010180910201891710F499270895AF |
:1029F000892F992708951092BC0090910401990F96 |
:102A0000980F9093BA0085EC8093BC000895809154 |
:102A1000B9009927887F90708038910529F1813815 |
:102A200091053CF4009709F411C18036910591F0AD |
:102A300019C1883B910509F494C0893B91052CF498 |
:102A4000883A910509F48DC00DC1883F910509F4BC |
:102A5000FDC008C18091BC0080688093BC001092CA |
:102A60009F0110929E0108954091BB008091BC008F |
:102A700080688093BC0080919E01282F33278F5F50 |
:102A800080939E0121303105B9F1223031051CF4CB |
:102A9000232B31F05CC02230310509F448C057C007 |
:102AA000442369F480919D01882349F08091540169 |
:102AB00090915501892B19F081E090E011C080912F |
:102AC000540190915501892B81F080919D018823BB |
:102AD00061F0842F992753E0880F991F5A95E1F7E9 |
:102AE00090939C0180939B0104C010929C011092D2 |
:102AF0009B0140939D012EC020919B0130919C0130 |
:102B00002115310551F0842F992787709070280F77 |
:102B1000391F30939C0120939B01842F992733E028 |
:102B2000969587953A95E1F780939F0113C0809120 |
:102B30009801883078F480919801E82FFF27E15FB1 |
:102B4000FB4F40838F5F8093980182E001C08EEF3E |
:102B500080939E0184EF91E09093550180935401FE |
:102B6000089580919F01282F3327442755278F5F91 |
:102B700080939F01F9012F31310508F05DC0EC5CB5 |
:102B8000FF4FEE0FFF1F0590F491E02D09940E9476 |
:102B900099144FC080915D0190915E0121E08E3FBC |
:102BA0009207A8F08EEF45C00E94B4148093BB003A |
:102BB0008091BB0099279093E8028093E70242C07E |
:102BC00080910E0136C080915B0190915C019695D9 |
:102BD00087952FC0809111012CC080915B0129C085 |
:102BE0008091990126C081E024C08AE022C00E9421 |
:102BF00099141FC080911A041CC080911B0419C035 |
:102C000080911C0416C080911D0413C080911E0485 |
:102C100010C080911F040DC0809120040AC08091D3 |
:102C2000210407C08091B80104C01092BB000AC003 |
:102C300085EA8093BB0006C08FEF8093BB008EEFC8 |
:102C400080939F018091BC0080680DC085ED8093CA |
:102C5000BC008091990190919A01019690939A01FC |
:102C60008093990185EC8093BC0008951F920F9288 |
:102C70000FB60F9211242F933F934F935F936F934F |
:102C80007F938F939F93AF93BF93EF93FF930E9494 |
:102C90000715FF91EF91BF91AF919F918F917F9118 |
:102CA0006F915F914F913F912F910F900FBE0F90B9 |
:102CB0001F90189580919801883030F08FE094E053 |
:102CC0000E94E1191092980108958BB1877C8BB90D |
:102CD0008AB188638AB985B1877C85B984B18863F4 |
:102CE00084B908958AB180638AB984B1806384B954 |
:102CF00023988091A4018111539808958AB1886224 |
:102D00008AB984B1886284B924988091A401811120 |
:102D1000549808958AB188618AB984B1886184B968 |
:102D200025988091A4018111559808958BB18F7CCD |
:102D30008BB9539A8091A101882309F45B9A089575 |
:102D40008BB1877D8BB9549A8091A101882309F4B6 |
:102D50005C9A08958BB1877E8BB9559A8091A101B9 |
:102D6000882309F45D9A08950F931F93CF93DF93FF |
:102D700080913801882309F08FC000B605FE03C09A |
:102D800000B600FC06C000B605FC86C000B600FC1C |
:102D900083C015BC16B58091A501012F081B809139 |
:102DA0000001202F3327882331F08091A601E9010B |
:102DB000C80FD11D03C0E901C20FD31FE0915B0111 |
:102DC000F0915C01E332F10510F4C0E9D1E08091AB |
:102DD0003701282F3327CE01B9010E94071B962FF8 |
:102DE00080910001882311F097E006C0663020F43E |
:102DF0001F5F17BD115003C0910F955097BD85B54A |
:102E0000836085BD00B605FE03C000B600FC0DC0A2 |
:102E100000B605FC03C000B600FE07C080910001AB |
:102E2000882319F4E43BF105B8F121E0209338013F |
:102E30001092180480B7877F80BFCE019695879542 |
:102E400096958795810F8093A0018091000188233A |
:102E5000A9F4C533D10560F40E946516809117046A |
:102E60008B3F60F4809117048F5F8093170406C036 |
:102E7000CF3FD10509F010F420931804CE019695A8 |
:102E80008795810F809319041093A5010093A601E3 |
:102E9000D093F202C093F102DF91CF911F910F9175 |
:102EA00008951F920F920FB60F9211242F933F9304 |
:102EB0004F935F936F937F938F939F93AF93BF9342 |
:102EC000EF93FF9380910001882311F40E94B416C0 |
:102ED000FF91EF91BF91AF919F918F917F916F91F2 |
:102EE0005F914F913F912F910F900FBE0F901F90C8 |
:102EF000189580911804882391F125C08091BC0019 |
:102F000087FF02C00E940715B59B02C00E94E5130F |
:102F10008091190496B5891B87FF15C00E9465161C |
:102F2000809117048C3D28F480911704825E809371 |
:102F300017048091F9029091FA0201969093FA0297 |
:102F40008093F902089500B600FE03C000B605FCA8 |
:102F5000D5CF00B600FC03C000B605FECFCF089564 |
:102F6000CF93C82F80914301909144010196909393 |
:102F70004401809343018091200480FD4CC08091E6 |
:102F8000A301992782309105E1F0833091052CF45B |
:102F9000009749F0019791F033C08330910511F10A |
:102FA000049739F12DC00E94AA168C2F0E94971207 |
:102FB00081EC80937C0080B78E7F4BC00E947E1690 |
:102FC0005FC00E9496168C2F0E94C41182EC8093E1 |
:102FD0007C0080B78E7F80BF8091A3018F5F80933C |
:102FE000A30172C00E948A168C2F0E94C41181EC2A |
:102FF00059C00E94A0168C2F0E94C41180ECE7CF0C |
:103000000E9472168C2F0E94C41182EC80937C0067 |
:1030100080B7836056C08091A301992782309105C3 |
:1030200069F1833091052CF4009749F0019719F16B |
:103030003EC08330910549F1049771F138C00E9478 |
:1030400072168C2F0E94971281EC80937C0080B7BF |
:10305000836080BF8091A3018F5F8093A3010E9452 |
:10306000791780911704882389F180911704815082 |
:10307000809317042BC00E94A016A5CF0E948A1629 |
:103080008C2F0E94C41180EC0DC00E9496168C2FCC |
:103090000E94C41181EC9BCF0E947E168C2F0E944F |
:1030A000C41182EC80937C0080B7836094CF0E942F |
:1030B000AA168C2F0E94C41180EC80937C0080B7EC |
:1030C0008E7F80BF1092A3010E9479171092080191 |
:1030D000CF9108951F920F920FB60F9211242F9344 |
:1030E0003F934F935F936F937F938F939F93AF9390 |
:1030F000BF93EF93FF9390913801913051F482E0A8 |
:10310000809338018091A00187BD892F0E94B0175C |
:103110000FC080913801823059F41092380180B785 |
:10312000886180BF80910001882311F40E94B41649 |
:10313000FF91EF91BF91AF919F918F917F916F918F |
:103140005F914F913F912F910F900FBE0F901F9065 |
:1031500018951F920F920FB60F9211242F933F9341 |
:103160004F935F936F937F938F939F93AF93BF938F |
:10317000EF93FF93809156019091A7018823E9F185 |
:10318000292F33279F5F9093A7012130310579F0D4 |
:10319000223031051CF4232B29F01DC022303105CB |
:1031A00079F019C0209140013091410106C0209171 |
:1031B0004001309141012F5F3F4F3695279515C053 |
:1031C000209140013091410136952795809142012F |
:1031D000280F311D0AC020914001309141012F5F1D |
:1031E0003F4F369527951092A701809180008E7FE2 |
:1031F000809380008FEF91E01DC09F5F9093A701A7 |
:10320000915029F420914001309141010CC08091EE |
:1032100042012091400130914101882311F02F5F3C |
:103220003F4F1092A70180918000816080938000C1 |
:103230008FEF93E0821B930B9C018F31910520F05F |
:10324000AC014E51504002C040E050E080918100FE |
:103250008E7F809381003093890020938800509363 |
:103260008B0040938A00809181008160809381006F |
:1032700080910001882331F08091A201882311F010 |
:103280000E94B416FF91EF91BF91AF919F918F91E2 |
:103290007F916F915F914F913F912F910F900FBE52 |
:1032A0000F901F901895F999FECF92BD81BDF89AA5 |
:1032B00080B599270895F999FECF1FBA92BD81BDB7 |
:1032C00060BD0FB6F894FA9AF99A0FBE089520E0FF |
:1032D00030E02617370740F4FC018191480F2F5F3B |
:1032E0003F4F26173707C8F3842F992708959091E9 |
:1032F000200494FF03C01092560103C081E0809324 |
:103300005601292F332725FF02C01092A401907C7B |
:1033100011F484E107C0C901807C90708038910568 |
:1033200021F48CE38093370108958034910511F4E2 |
:103330008AE0F8CF803C910519F487E0809337014B |
:10334000089586E080931A0410921B048FEF8093F7 |
:103350001C049091090190931D0484E680931E043F |
:1033600080E480931F0484E08093200480910A010C |
:10337000981710F080931D044AEA67E070E08AE134 |
:1033800094E00E94671980932104089580911A04A3 |
:1033900099278F709070069799F44AEA67E070E079 |
:1033A0008AE194E00E946719809321042BE539E1BA |
:1033B00048E050E06AE174E080E290E00E94BA1ACE |
:1033C0000895CF93DF93EC014AEA67E070E00E9432 |
:1033D00067199F81981719F085E090E060C04881D7 |
:1033E000842F99278F709070069719F084E090E0F1 |
:1033F00056C0898186FF03C00E94A11947C0109260 |
:103400001B048981282F332720FF03C08A818093E2 |
:103410001C0421FF03C08B8180931D0422FF03C085 |
:103420008C8180931E0423FF03C08D8180931F0431 |
:1034300024FF0AC0909120049E708E81817F982B7A |
:103440009093200440931A0425FF08C09091200413 |
:10345000917F8E818E70982B9093200480911E0412 |
:10346000833718F083E780931E0480911D049091A8 |
:103470000A01891710F090931D044AEA67E070E092 |
:103480008AE194E00E94671980932104898187FF73 |
:1034900002C00E94C6190E94771980E090E0DF9177 |
:1034A000CF91089523E539E148E050E060E270E013 |
:1034B0008AE194E00E94951A4AEA67E070E08AE1A6 |
:1034C00094E00E9467194AEA67E070E08AE194E0BC |
:1034D0000E946719282F80911A0499278F70907085 |
:1034E000069721F480912104821721F00E94A119EE |
:1034F0000E94C6190E94771980911D0490910A01BB |
:10350000891710F090931D0480911E04833718F0E2 |
:1035100083E780931E040895FB01DC0102C005903F |
:103520000D9241505040D8F70895A0E0B0E0EBE98B |
:10353000FAE10C94581B6C017B01EA0159012197B7 |
:103540008FEFCF3FD80789F086010894C11CD11CAA |
:10355000C7010894E11CF11CF5010995F80180836D |
:103560002197FFEFCF3FDF0779F7EAE0CDB7DEB76E |
:103570000C94741BA0E0B0E0E0ECFAE10C945A1B50 |
:103580008C017B01EA01690121978FEFCF3FD807BA |
:1035900071F0F70121917F01C8010F5F1F4F622F6A |
:1035A000F60109952197FFEFCF3FDF0791F7E8E09C |
:1035B000CDB7DEB70C94761B629FD001739FF001EC |
:1035C000829FE00DF11D649FE00DF11D929FF00DB3 |
:1035D000839FF00D749FF00D659FF00D9927729FEA |
:1035E000B00DE11DF91F639FB00DE11DF91FBD0175 |
:1035F000CF0111240895991B79E004C0991F9617F3 |
:1036000008F0961B881F7A95C9F780950895AA1B24 |
:10361000BB1B51E107C0AA1FBB1FA617B70710F0BD |
:10362000A61BB70B881F991F5A95A9F780959095EF |
:10363000BC01CD01089597FB092E07260AD077FD1E |
:1036400004D0E5DF06D000201AF4709561957F4F15 |
:103650000895F6F7909581959F4F0895A1E21A2E4F |
:10366000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F26 |
:10367000A217B307E407F50720F0A21BB30BE40B76 |
:10368000F50B661F771F881F991F1A9469F76095BD |
:103690007095809590959B01AC01BD01CF01089577 |
:1036A0002F923F924F925F926F927F928F929F9252 |
:1036B000AF92BF92CF92DF92EF92FF920F931F9340 |
:1036C000CF93DF93CDB7DEB7CA1BDB0B0FB6F894F1 |
:1036D000DEBF0FBECDBF09942A88398848885F8431 |
:1036E0006E847D848C849B84AA84B984C884DF80A2 |
:1036F000EE80FD800C811B81AA81B981CE0FD11D86 |
:103700000FB6F894DEBF0FBECDBFED010895FFCF19 |
:1037100001FFFF0101FB0701011E280D000D1E2006 |
:103720004E80000A00F41FFC1F0A4144523A000177 |
:103730000A0D424C3A56000A0D48573A332E3020B3 |
:0A3740005265762000FF0014FF0020 |
:00000001FF |
/BL-Ctrl_V3/V1.10/BL-Ctrl3_MEGA168_V1_10c.hex |
---|
0,0 → 1,886 |
:100000000C9453010C949D010C949D010C949D0142 |
:100010000C949D010C949D010C949D010C949D01E8 |
:100020000C949D010C94CF130C9470140C949D01AE |
:100030000C949D010C94A4180C9465180C94D61083 |
:100040000C94CC100C949D010C94970C0C949D0175 |
:100050000C949D010C949D010C949D010C944C17E3 |
:100060000C9431160C949D01C215CF15DB15DE15CD |
:10007000E515E515EB15EE15F015F215C515CF15BF |
:10008000DB15E515E8151016F515F815FB15FE1529 |
:100090000116041607160A160D161716171610164F |
:1000A00017161716131643757272656E742020208A |
:1000B0005B302E31415D43757272656E74206163F1 |
:1000C000742E2020202043757272656E7420706536 |
:1000D000616B2020202054656D702E202020205B35 |
:1000E000302E31B0435D566F6C74616765202020FF |
:1000F0005B302E31565D72706D2028726177292039 |
:10010000202020202020536574706F696E74202099 |
:100110002020202020204D6178536574706F696E17 |
:1001200074202020202050504D536574706F696EEC |
:10013000742020202020506172616D2E50776D5305 |
:1001400063616C696E67506172616D2E4D617843B9 |
:10015000757272656E74506172616D2E4D61785466 |
:10016000656D702E2020506172616D2E5363616C3D |
:10017000652049202020537461727420436F756E8E |
:10018000742020202020493243204C6F737420209B |
:100190002020202020204932432D424C2D537461D1 |
:1001A000746520202020313620202020202020208F |
:1001B0002020202020203137202020202020202017 |
:1001C0002020202020203138202020202020202006 |
:1001D00020202020202031392020202020202020F5 |
:1001E0002020202020204761702020202020202057 |
:1001F00020202020202049204269617320202020D7 |
:100200002020202020204F76657243757272656E23 |
:100210007420636E742049204375746F66662020D5 |
:10022000202020636E7464652D6D61676E6574694E |
:100230007A6520636E74496E76616C696450756C82 |
:1002400073657320202049204C696D69742020203B |
:100250002020636E7420536C6F70652D4D696E2085 |
:10026000202020202020536C6F70652D4D61782058 |
:100270002020202020204572726F72436F64652019 |
:100280002020202020204861726477617265202040 |
:100290002020202020204C696D69742049202020D6 |
:1002A00020202020202011241FBECFEFD4E0DEBF6D |
:1002B000CDBF11E0A0E0B1E0E6E0F7E302C00590B9 |
:1002C0000D92AA33B107D9F714E0AAE3B1E001C057 |
:1002D0001D92A232B107E1F74BEA20EF37E3A8EA1B |
:1002E000B1E09FE0F9012F5F3F4F84918D939150D2 |
:1002F00097FFF8CFE8EAF1E09EE08191482740952A |
:10030000915097FFFACF8091B701481711F0000084 |
:10031000FECF8091AF0180933A018091B00180932C |
:100320000D018091B10180930A018091B201809307 |
:1003300009010E94D7070C94821B0C940000CF93F4 |
:1003400089E191E00E94040CC09104018C2F805D32 |
:100350008A3328F081E30E94F10B8C2F8A5D0E9482 |
:10036000F10BCF9108956BEF77E0409163015091CD |
:100370006401A0911D042AE0A29FC0011124E09114 |
:100380006101F09162018E179F0780F55798BF01B8 |
:10039000681B790BCB01880F991F880F991FBA0131 |
:1003A000681B790B80910A01829FC0011124C296BB |
:1003B0008E179F07D8F480915601882319F080E0AA |
:1003C00092E002C080E094E09093890080938800DE |
:1003D0008BB1877C8BB960E070E08091FD029091D9 |
:1003E000FE0201969093FE028093FD028091170415 |
:1003F0009927880F991F880F991F2BEF37E0281B2B |
:10040000390B261737070CF4B90180914F018F3F44 |
:1004100071F0282F3327B4E0220F331FBA95E1F78C |
:10042000245D3E4F2617370724F4B90102C010920D |
:100430004E0180913C0190913D01481759070CF401 |
:10044000AC0177FF02C060E070E0641775070CF440 |
:10045000AB0180913E0190913F018417950708F40C |
:10046000AC0180918C01882319F582E080938C0186 |
:1004700085E0A89FC0011124E817F90748F44C59FA |
:100480005F4F50933F0140933E014456504008C097 |
:10049000445F5F4F50933F0140933E014C505040AA |
:1004A0004456504050933D0140933C014C595F4F9E |
:1004B000F894CA0157FD019695958795909341014F |
:1004C00080934001880F991F481B590B40934201AC |
:1004D00078947093D8026093D7020895CF93DF93F6 |
:1004E000E0910F01F091100181E2E330F8071CF078 |
:1004F000C0E0D0E040C089E1E13FF8074CF0CF0117 |
:1005000066E070E00E94161BCB01C8E7D5E031C061 |
:1005100080E1E33CF8075CF0CF01F7FD0796F3E0DC |
:1005200095958795FA95E1F7CAE6D4E022C089E06F |
:10053000E938F8074CF0CF0166E070E00E94161B26 |
:10054000CB01CEE1D5E015C085E0E932F80754F0E3 |
:10055000CF01F7FD03969595879595958795CDEEF7 |
:10056000D5E007C0CF01F7FD019695958795CAE3C1 |
:10057000D7E0C81BD90BCE016AE070E00E94161BC1 |
:1005800060930E01D093D002C093CF026837D0F5AC |
:1005900020910B0130910C012C9FC0012D9F900DDB |
:1005A0003C9F900D1124E92FFF27C90153E0880FCC |
:1005B000991F5A95E1F7820F931F820F931F67E0EF |
:1005C00070E00E94161BE61BF70B80915D01909175 |
:1005D0005E0143E0969587954A95E1F78E0F9F1F40 |
:1005E0006AE070E00E94161BFB01C90163E070E045 |
:1005F0000E94161B6E177F070CF4FB0180910B0104 |
:100600008E1B02C080910B0180930D0180915D01D2 |
:1006100090915E01EAEFF0E0E81BF90BE93CF1058F |
:1006200014F0E8ECF0E08FEFEE3CF80714F4EEEC99 |
:10063000FFEF90911E048AE0989FC00111248E0F55 |
:100640009F1FFE01E81BF90B1E161F067CF4EE0F20 |
:10065000FF1FCDEFD0E0CE1BDF0BC230D10514F46D |
:10066000C1E0D0E0C0930201579803C08FEF8093A0 |
:100670000201DF91CF91089580915D0190915E011B |
:100680009093CA028093C9028091610190916201A6 |
:100690002091130130911401821B930B9093CC0293 |
:1006A0008093CB0280911101909112019093D2021C |
:1006B0008093D10280915B0190915C019093D40270 |
:1006C0008093D30280916301909164019093D6024C |
:1006D0008093D50280919301909194019093DA02D6 |
:1006E0008093D90280911C0499279093DC02809317 |
:1006F000DB0280911D0499279093DE028093DD0236 |
:1007000080911E0499279093E0028093DF028091EC |
:100710001F0499279093E2028093E1028091540193 |
:1007200090915501892B39F40E94AF149927909329 |
:10073000E8028093E7028091170499279093FC02C6 |
:100740008093FB0280913C0190913D0190930003C6 |
:100750008093FF0280913E0190913F0190930203AC |
:10076000809301038091B8019927909304038093AB |
:10077000030380910B0190910C01909306038093E9 |
:100780000503809101019927909308038093070343 |
:10079000089560E070E0F894209154013091550183 |
:1007A000E0919B01F0919C01789410923B01909113 |
:1007B0004F01992319F080E180933B012115310508 |
:1007C00059F180913B01816080933B01BF019A30D8 |
:1007D00030F487E0E83FF80710F060E070E0579AE7 |
:1007E00081E02C3C380730F480913B018460809399 |
:1007F0003B010AC0309741F010929401109293018E |
:100800001092030110929001309751F080913B01BA |
:10081000826080933B0104C030939C0120939B0134 |
:1008200081E0223C380758F080914D0180FF02C0E2 |
:10083000309729F08091900188230CF04AC04091B4 |
:100840005201509153014115510579F08091680191 |
:10085000682F7727B3E0660F771FBA95E1F71092FC |
:100860000301579A1092900134C08091900187FF44 |
:1008700025C081E08093030180913B0188608093D3 |
:100880003B01209193013091940189E0253C380788 |
:1008900008F09A0187E02C3F380710F02BEF37E083 |
:1008A0002333310540F4992331F48091500188239A |
:1008B00011F4BA0101C0B901579A0BC0232B09F4F6 |
:1008C0005798BF011092680180916F0080628093F9 |
:1008D0006F0020911C04809102018F3F19F0821754 |
:1008E00008F4282F809101018F3F19F0821708F436 |
:1008F000282F2F3FC1F0CB01AA27BB27332744273E |
:100900005527BC01CD010E94D71A97FF04C0615042 |
:100910007F4F8F4F9F4FBB2797FDBA95A92F982FD9 |
:10092000872FBC0157986115710511F0605B7F4FEF |
:1009300087E06C3F780710F06BEF77E08091A101C2 |
:10094000882331F080914F01882311F061E070E03D |
:10095000CB0108950E946016809181008160809390 |
:10096000810080916F00816080936F00E09115019C |
:10097000F091160180E0099580915601882371F06D |
:10098000809180008260809380008FEF91E090934F |
:1009900089008093880084EF91E00DC080918000F1 |
:1009A0008360809380008FEF93E090938900809321 |
:1009B000880088EE93E090938B0080938A000895DE |
:1009C00096B5980F86B5891B87FDFCCF0895CF9308 |
:1009D0009091C10090689093C100C82FC150CF3F43 |
:1009E00059F0579886E990E00E949811579A8CE246 |
:1009F00091E00E949811F2CF88E592E00E94981150 |
:100A0000CF9108951F93CF93DF93162FEC01219779 |
:100A10008FEFCF3FD807A9F0812F0E9493138091C9 |
:100A20001301909114018A5B9F4F209161013091D5 |
:100A300062018217930758F70E94601681E090E0E8 |
:100A400002C080E090E0DF91CF911F910895FF9266 |
:100A50000F931F93CF93DF9300E0579A8091040187 |
:100A6000F82EFA9423E0F222F394282F33278CE215 |
:100A700091E0289FE001299FD00D389FD00D1124CF |
:100A800080919B0190919C01892B19F4CE010E94C9 |
:100A9000981180B7877F80BF0093A201F89488E106 |
:100AA0000FB6F89480936000109260000FBE0E9411 |
:100AB000601660E086E00E94591310926001109267 |
:100AC0005F01C9E0D0E081E00E94BF112197D7FF0C |
:100AD000FACF80915F01909160019093140180930F |
:100AE0001301C39710F000E16EC061E083E00E9443 |
:100AF00059134E978959934008F002E161E087E06D |
:100B00000E94591380559040815D924010F001E1A0 |
:100B10005AC00E94601619E015B98AE00E94E004EC |
:100B200061E080E00E945913883C910508F404E0DC |
:100B30000E9460160E9460161BB98AE00E94E004C1 |
:100B400061E080E00E9459134A9708F007E00E9494 |
:100B50006016C1E1C5B98AE00E94E00461E0862F19 |
:100B60000E945913883C910508F405E00E94601624 |
:100B70000E946016CBB98AE00E94E00461E0862FF3 |
:100B80000E9459134A9708F008E00E946016C1E2DB |
:100B9000C5B98AE00E94E00461E082E00E94591336 |
:100BA000883C910508F406E00E9460160E946016D9 |
:100BB000CBB98AE00E94E00461E0862F0E945913BD |
:100BC0004A9708F0012F0E94601680919B01909136 |
:100BD0009C01892B09F0F5C080911A0484FDF1C0B5 |
:100BE000002361F0802F8F5B0E94F10BDFC00CE0CF |
:100BF0008DE40E94F10B0E946016D8C08BB1877CF7 |
:100C00008BB98AB188638AB985B1886385B984B1A3 |
:100C1000886384B961E08AE090E00E9402058091D7 |
:100C20001301909114010A962091610130916201A3 |
:100C30008217930708F40BE085B1877C85B984B1EE |
:100C4000886384B98BB188638BB98AB188638AB9A8 |
:100C500061E08AE090E00E9402058091130190918A |
:100C600014010A9620916101309162018217930765 |
:100C700008F40AE08AEB93E090938900809388005F |
:100C80008CE993E090938B0080938A0081E08093BD |
:100C9000A40110E061E088E090E00E94020589E68E |
:100CA000F89EC0011124C0E0D0E08052934009F4C6 |
:100CB00041C0812F99278130910571F082309105D3 |
:100CC0001CF4892B21F011C0029759F00EC00E942C |
:100CD0006D160E949B1609C00E9479160E94A516E7 |
:100CE00004C00E9485160E94911661E082E090E0A7 |
:100CF0000E940205882351F0012F0F5F812F8F5C26 |
:100D00000E94F10B0E94601614E614C00E94601647 |
:100D100061E08F2D99270E940205219689E6F89EB1 |
:100D20009001112480E293E0821B930BC817D9072E |
:100D300008F4BFCF1F5F133008F4ACCF0E946016D9 |
:100D40008CE092E090938900809388008EEE91E091 |
:100D500090938B0080938A0061E08AE090E00E948B |
:100D60000205002319F51092620110926101C0E0A2 |
:100D7000D0E084B1877C84B98AB1877C8AB961E08C |
:100D800081E090E00E94020580911301909114018E |
:100D90000A9620916101309162018217930708F44D |
:100DA00026CF219684E0C030D80718F30E94601641 |
:100DB0000093B8017894002321F0802F0E94E7046B |
:100DC000FCCFDF91CF911F910F91FF9008956F920B |
:100DD0007F928F929F92AF92BF92CF92DF92EF92CB |
:100DE000FF920F931F938C0132E3632E712C812CA1 |
:100DF000912C80B7877F80BF1092A201E0911701EC |
:100E0000F09118018CEF09950E9460161092620112 |
:100E100010926101C8019695879590934101809346 |
:100E2000400180E00E94AB1780E00E94AB178091E8 |
:100E30001704853198F18EE591E00E947E11909320 |
:100E40004601809345010CC085B1877C85B984B18A |
:100E5000886384B98BB188638BB98AB188638AB996 |
:100E600080914501909146010E948911882361F388 |
:100E70000E94601680E00E94AB1788EC90E010C0E2 |
:100E80000E9460168FE08093B80181E00E94E70421 |
:100E900080E090E07FC081E090E07CC08EE190E057 |
:100EA0000E947E11909346018093450109C00E94E3 |
:100EB000931380916101909162018937910500F748 |
:100EC00080914501909146010E948911882379F310 |
:100ED00080B7877F80BF1092A201109341010093D9 |
:100EE00040011092440110924301EE24FF24870137 |
:100EF0006401530183E0AA0CBB1CCC1CDD1C8A9549 |
:100F0000D1F7D601C501860D971DA81DB91D860D07 |
:100F1000971DA81DB91DE816F9060A071B0748F416 |
:100F200085E00E94E0040894E11CF11C011D111DE4 |
:100F3000E8CF809113019091140188589F4F209120 |
:100F40006101309162018217930708F499CFC401BF |
:100F5000B3012FE030E040E050E00E94291B621A0C |
:100F6000730A840A950A0894610871088108910837 |
:100F70008EE1681671048104910408F48CCF80918D |
:100F8000430190914401892B09F0ABCF80E00E948E |
:100F9000AB17A7CF1F910F91FF90EF90DF90CF90ED |
:100FA000BF90AF909F908F907F906F900895CFEFFC |
:100FB000D4E0DEBFCDBF17B880E188B988EB8AB92D |
:100FC00087E08BB91EE014B981E085B9579883E0BA |
:100FD0000E94E00415BC80EE8ABD18BD0E94601618 |
:100FE00080916E00826080936E0080916E008460BC |
:100FF00080936E00789480910D01992790930C0155 |
:1010000080930B010E94B7130E944D1A8091C1007A |
:10101000877F8093C10052985A9AE0911701F0910E |
:1010200018018CEF099589E090E00E949811809159 |
:10103000C100877F8093C1008091B40082FF06C009 |
:10104000499B02C081E007C083E005C0499B02C004 |
:1010500082E001C084E0809304010E94AA04809190 |
:10106000B40082FF13C05A98529A8AE090E00E941E |
:101070009811F89452985A9AE0911701F09118013A |
:101080008CEF099578944A9919C013C0529A5A9ACC |
:101090008AE090E00E949811F89452985A985A9ACF |
:1010A000E0911701F09118018CEF099578944A9B13 |
:1010B00005C0809104018C5F809304015298529A7C |
:1010C0008091C10088608093C1000E941D0C80E562 |
:1010D0000E94F6140E94AE1180E00E94931384EFE8 |
:1010E00091E00E947E11909346018093450106C0D5 |
:1010F00080919B0190919C01892B41F48091450145 |
:10110000909146010E948911882391F31092640105 |
:10111000109263010E94B30181E080937C001092E1 |
:1011200094011092930185B910921B0410925601FC |
:101130000E9427050E9472190E94FD0B0E949F01C8 |
:101140000E941D0C8091C10080688093C1000E94A4 |
:1011500060161092A4018BB5992790930C0180938F |
:101160000B0110928B0110928A01109238010E949B |
:10117000C9039093640180936301892B31F40E9429 |
:10118000C903909364018093630180914E0186307E |
:1011900008F057988091630190916401892B09F0C0 |
:1011A00047C01092500110924F011092A4010E946A |
:1011B000601680914701909148010E94891188230F |
:1011C00009F458C010924E011092B80180B7877F81 |
:1011D00080BF1092A20181E0809307011092170452 |
:1011E000809113019091140120916101309162016D |
:1011F0002817390710F4019704C08217930728F4C1 |
:101200000196909314018093130182E390E00E9471 |
:101210007E11909348018093470180911301909132 |
:1012200014019093F4028093F30212BC11BC22C00B |
:1012300080910701882369F420915B0130915C0162 |
:101240002430310550F480914F01853630F08A3FCB |
:1012500020F481E08093500105C02930310510F061 |
:10126000109250018CED95E00E947E119093480100 |
:10127000809347012091A1012223A1F48091430191 |
:1012800090914401892B71F080911704883C50F4AF |
:101290002093070186E990E00E947E119093460119 |
:1012A0008093450180910701882321F01092640109 |
:1012B000109263010E94B3018091080181508093D4 |
:1012C0000801809108018F3F09F051CF809163019F |
:1012D00090916401892B11F48AE001C084E6809327 |
:1012E00008010E94551680916701882321F00E9411 |
:1012F000840F0E947E0E80914B0190914C010E94C0 |
:101300008911882309F429C182E390E00E947E11AB |
:1013100090934C0180934B018091A101882391F01F |
:101320008091A10181508093A1018091A101882326 |
:1013300049F48091F5029091F60201969093F6029D |
:101340008093F5028091590190915A0120915701A3 |
:1013500030915801B9010E94021B80916101909166 |
:10136000620190935A018093590181E090E090933B |
:1013700058018093570180911301909114016817CF |
:10138000790798F0681B790B80911F049927689F53 |
:101390009001699F300D789F300D1124B90116E03E |
:1013A000769567951A95E1F702C060E070E080914C |
:1013B0005D0190915E018617970710F4019604C0B5 |
:1013C0006817790728F4019790935E0180935D0177 |
:1013D00080915D0190915E018B30910588F0681BD2 |
:1013E000790B77FF02C0695F7F4FC3E07595679502 |
:1013F000CA95E1F7860F971F90935E0180935D0178 |
:10140000E0915D01F0915E01CF016AE070E00E9421 |
:10141000021B40911D04842F992786179707F0F42B |
:101420008AE0489FC00111249F01281B390BC90184 |
:10143000880F991F820F931F2DEF30E0281B390B67 |
:101440002931310514F429E130E02F3F310519F03D |
:1014500014F02FEF30E02093010103C08FEF809351 |
:101460000101F8946091430170914401AB015695DC |
:10147000479520915B0130915C012417350728F4D2 |
:1014800050935C0140935B0118C0C901880F991FFC |
:10149000820F931F840F951F969587959695879534 |
:1014A00090935C0180935B01672B39F4009729F0DE |
:1014B000019790935C0180935B011092440110921C |
:1014C000430178940E946E0280916701882321F085 |
:1014D00081508093670102C080934D018091A401E7 |
:1014E0008823B1F480914F01813590F080911101F2 |
:1014F000909112018536910558F08091A1018823C1 |
:1015000039F48091200485FD03C081E08093A4011B |
:1015100080914F018E3120F481E0809300011DC045 |
:1015200020915B0130915C012333310528F0F89460 |
:1015300010920001789411C02E32310530F4809160 |
:101540005D0190915E010F9718F02931310528F463 |
:10155000F89481E080930001789480914901909102 |
:101560004A010E9489118823F1F085E090E00E94F1 |
:101570007E1190934A018093490180915B01909183 |
:101580005C01892B39F080914F018F3F19F08F5FFB |
:1015900080934F0180910701882329F0F89480E01F |
:1015A0000E949212789480914501909146010E9488 |
:1015B0008911882329F480915001882309F4D7CD1B |
:1015C00080915B0190915C014E9708F0D0CD84E64C |
:1015D00090E00E947E119093460180934501109205 |
:1015E0004F0151E0F52EF09207011092A40180B74F |
:1015F000877F80BF1092A2010E94C903892B09F442 |
:10160000B6CD80910F01909110018958994008F44E |
:10161000AECD1092600110925F0110925001809146 |
:10162000200499278E70907004E110E0809FE00103 |
:10163000819FD00D909FD00D1124A096F0920001B3 |
:101640001092A401C0905201D09053018091E30206 |
:101650009091E40201969093E4028093E302CE011C |
:101660000E94E706882309F482CDD0925301C092EC |
:10167000520110924101109240018091A2018823F1 |
:1016800019F480B7886180BFF092A201109207011F |
:10169000109217041092440110924301C8010E9455 |
:1016A0007E11909346018093450180914501909170 |
:1016B00046010E9489118823C1F310925C011092A7 |
:1016C0005B018AE090E090934101809340018C1788 |
:1016D0009D07E0F580914001909141010A96909319 |
:1016E00041018093400184E190E00E947E1190933B |
:1016F00046018093450113C0809161019091620180 |
:101700008937910540F00E9460168FE08093B80100 |
:1017100081E00E94E7040E94840F0E947E0E809167 |
:101720004501909146010E948911882329F38091F7 |
:10173000430190914401892B49F010924401109289 |
:1017400043018091400190914101C1CF80914E01B0 |
:10175000882321F0813039F4CC0FDD1FD093410173 |
:10176000C093400109C0CE01880F991F8C0F9D1FA7 |
:10177000909341018093400184E690E00E947E11A5 |
:10178000909346018093450104C00E94840F0E94FB |
:101790007E0E80914501909146010E948911882317 |
:1017A000A1F380914E018F5F80934E01D09253013F |
:1017B000C092520182E390E00E947E1190934A0110 |
:1017C0008093490188EC90E00E947E11909346013D |
:1017D000809345011092FA021092F9021092A10131 |
:1017E000C6CC982F8091C10083FF06C08091C000B5 |
:1017F00085FFFCCF9093C60008958DE00E94F10B09 |
:101800008AE00E94F10B08951F93CF93DF93EC01C0 |
:1018100010E08881882369F0FE01E10FF11D1F5F50 |
:1018200080810E94F10BFE01E10FF11D8081882370 |
:1018300099F7DF91CF911F9108950F931F930FB7E1 |
:1018400088E18093C1001092710110926F01109293 |
:101850006E0110926D0181E080931F018093BD02A3 |
:101860001AE01093BE0282E08093C1028BE0809365 |
:10187000BF021092C00280E291E00E94040C81E35A |
:101880000E94F10B8EE20E94F10B81E30E94F10BAA |
:1018900080E30E94F10B83E60E94F10B87E291E066 |
:1018A0000E94040C80913A01612F0E94F61A805D1B |
:1018B0000E94F10B80913A01612F0E94F61A892F44 |
:1018C000805D0E94F10B0FBF10926C011F910F9170 |
:1018D00008958091C00086FF29C080911F01882350 |
:1018E00009F58091720190917301019690937301B3 |
:1018F00080937201FC01E75FFC4FE081ED3019F04D |
:101900008A3F910539F4109273011092720181E0BF |
:1019100080931F018091C00081608093C000E0939C |
:10192000C6000895109273011092720108951F92DB |
:101930000F920FB60F9211242F933F934F935F9303 |
:101940008F939F93AF93BF93CF93DF93EF93FF93C7 |
:101950005091C60080917101882309F062C04091C6 |
:101960006C01442371F4533279F45093B90181E04E |
:1019700080936C0183E290E09093750180937401F1 |
:1019800050C04A3F08F049C0209174013091750160 |
:10199000E42FFF275D3069F0E754FE4F50834F5F1F |
:1019A00040936C01250F311D309375012093740114 |
:1019B00038C0DF01A754BE4FFD0132978081281B3C |
:1019C0003109ED0121978881281B3109C9019F70D8 |
:1019D0009093750180937401689415F89695879596 |
:1019E0001694E1F7982F935C2F733070235C8081FD |
:1019F000981771F48881281759F484E68093670159 |
:101A00005C934F5F4093700181E08093710102C04D |
:101A10001092710110926C0104C080936C0180934C |
:101A20007101FF91EF91DF91CF91BF91AF919F91A4 |
:101A30008F915F914F913F912F910F900FBE0F901B |
:101A40001F901895A0E0B0E09D01482F5527A417DE |
:101A5000B50748F4E9E0F3E08191280F311D1196B4 |
:101A6000A417B507C8F33F70FD01E75FFC4FC9013C |
:101A700076E0969587957A95E1F7835C8083119659 |
:101A8000FD01E75FFC4F2F733070822F835C8083F2 |
:101A9000A65FBC4F8DE08C9310921F0180910903CB |
:101AA0008093C6000895CF92DF92EF92FF920F933A |
:101AB0001F93CF93DF93CDB7DEB72B859C850D8524 |
:101AC000DD2483E2809309039F5990930A032093B6 |
:101AD0000B0333E0C32E002309F49AC0EE84FF8485 |
:101AE000BE016E5E7F4FA889B9890150109709F435 |
:101AF0008FC01097B9F0F701ED0DF11DD3949081CF |
:101B0000119791F4002349F1FB016E5F7F4FDB01D8 |
:101B1000E080F1806E5F7F4F0D90BC91A02DDD24A1 |
:101B2000015002C090E019C01097B9F0F701ED0D17 |
:101B3000F11DD3944081119791F4002341F1FB01F1 |
:101B40006E5F7F4FDB01E080F1806E5F7F4F0D9015 |
:101B5000BC91A02DDD24015002C040E018C01097B8 |
:101B6000B1F0F701ED0DF11DD3941081119781F4BF |
:101B7000002371F0FB013296DB01ED90FC90BF0178 |
:101B80006E5F7F4FA081B181DD24015001C010E064 |
:101B9000EC2DFF27E75FFC4F892F86958695835CA8 |
:101BA0008083C394EC2DFF27E75FFC4F892F992793 |
:101BB0008370907024E0880F991F2A95E1F75527CC |
:101BC0009A0194E0369527959A95E1F7822B835CEC |
:101BD0008083C394EC2DFF27E75FFC4F4F7050705C |
:101BE000440F551F440F551F812F992726E09695C6 |
:101BF00087952A95E1F7842B835C8083C394EC2D31 |
:101C0000FF27E75FFC4F1F73135C1083C3946ECFF5 |
:101C10008C2D0E94220DDF91CF911F910F91FF908B |
:101C2000EF90DF90CF900895A3E07A2F409170015C |
:101C30004650442309F458C0E72FFF27E754FE4FCE |
:101C400080818D537F5FE72FFF27E754FE4F208170 |
:101C50002D537F5FE72FFF27E754FE4F30813D5321 |
:101C60007F5FE72FFF27E754FE4F60816D537F5F53 |
:101C70009927880F991F880F991F522F52955F70CF |
:101C8000582B822F99278F709070F4E0880F991F3E |
:101C9000FA95E1F7232F26952695282B832F992750 |
:101CA00083709070E6E0880F991FEA95E1F7682B42 |
:101CB00041504F3FC9F0EA2FFF27E754FE4F5083B2 |
:101CC000AF5F41504F3F81F0EA2FFF27E754FE4FAF |
:101CD0002083AF5F41504F3F39F0EA2FFF27E75491 |
:101CE000FE4F6083AF5FA5CF8CEB91E090936F01C7 |
:101CF00080936E01A350A0936D01089580917101AE |
:101D0000882309F400C10E94140E8091BA018B3619 |
:101D100068F08091BA01282F332780910401992718 |
:101D200085599F4F2817390709F0E5C08091BB01FD |
:101D300099278436910509F4B5C0853691059CF440 |
:101D40008235910519F18335910544F4813291056D |
:101D500009F46AC08B9709F4C7C0CDC081369105DC |
:101D600009F4B5C0C8C085379105E9F086379105FB |
:101D70002CF48437910509F444C0BDC08637910521 |
:101D800009F4A1C08737910521F1B5C088E190E041 |
:101D90002CE00FB6F894A895809360000FBE2093B6 |
:101DA0006000F894FFCFE0916E01F0916F01908197 |
:101DB00080910401981719F08081882319F41092FA |
:101DC000690103C082E08093690180916B018860A2 |
:101DD00088C0E0916E01F0916F018081882329F025 |
:101DE000908180910401981729F4CF0101960E94F7 |
:101DF000DC1901C082E08093690180916B018061F0 |
:101E000070C080910401E0916E01F0916F01E80FC4 |
:101E1000F11D319780818093680180E293E0909377 |
:101E200053018093520167C084EF91E09093530176 |
:101E30008093520120910401A0916E01B0916F0135 |
:101E4000FD01E20FF11D8081809368018C9187FD77 |
:101E500006C080910701882311F0109268018091DB |
:101E60006801882369F080913B0182FD03C08C9159 |
:101E700088231CF481E080934D0180914D018260A4 |
:101E800080934D01E0916E01F0916F01808199275F |
:101E90008F70907033278217930769F580916B01DB |
:101EA00080621FC0E0916E01F0916F0190818AE025 |
:101EB000989FC001112490936601809365018091E1 |
:101EC0006B0182600EC080916B0181600AC0E0915D |
:101ED0006E01F0916F01808180936A0180916B01A6 |
:101EE000846080936B0107C0E0916E01F0916F01F7 |
:101EF00080818093C40010926F0110926E01109245 |
:101F00006D01109271010895CF93DF93CDB7DEB7C5 |
:101F100021970FB6F894DEBF0FBECDBF80911F0191 |
:101F2000882319F40E94690C2EC180916B019927B6 |
:101F300085FF37C080913B01809376010E94941405 |
:101F4000809377010E94AF148093780180910E01F5 |
:101F50008093790180911101909112018135910551 |
:101F600030F080911101805580937A0104C0109265 |
:101F700012011092110185E090E09F938F9386E704 |
:101F800091E09F938F9381E08F9380910401865F0E |
:101F90008F938FE38F930E94530D80916B018F7D00 |
:101FA00070C082FF30C080916A01992724E0880FB9 |
:101FB000991F2A95E1F78A559F4F40E150E0BC01F7 |
:101FC00086E791E00E94871A80E190E09F938F93CB |
:101FD00086E791E09F938F9381E090E09F938F93AA |
:101FE0008AE691E09F938F9382E08F9385E08F93B1 |
:101FF00081E48F930E94530D8FEF80936A0180914B |
:102000006B018B7FB6C08091650190916601892B31 |
:1020100041F080910D0490910E040E948911882353 |
:1020200029F480916B01992781FF31C00E943C0304 |
:1020300080915F01909160019093CE028093CD02D8 |
:102040001092600110925F0182E490E09F938F9361 |
:1020500087EC92E09F938F9381E08F9385E08F933D |
:1020600084E48F930E94530D8091650190916601E5 |
:102070000E947E1190930E0480930D0480916B0159 |
:102080008D7F80936B018DB79EB7079677C080FFD9 |
:1020900014C08AE090E09F938F938DEB92E09F9322 |
:1020A0008F9381E08F9385E08F9386E58F930E94D5 |
:1020B000530D80916B018E7FE4CF83FF36C08091FA |
:1020C0006901882319F481E0898301C0198288E0BD |
:1020D00090E09F938F938AE194E09F938F9321E008 |
:1020E00030E03F932F9384E091E09F938F933F9351 |
:1020F0002F9389E691E09F938F933F932F93CE0187 |
:10210000820F931F9F938F9384E08F9385E08F932B |
:1021100085E58F930E94530D80916B01877F80939B |
:102120006B018DB79EB7439629C084FF2CC0809168 |
:102130006901882319F481E0898301C0198221E0B3 |
:1021400030E03F932F9389E691E09F938F933F93E5 |
:102150002F93CE01820F931F9F938F9382E08F93D3 |
:1021600085E08F9387E58F930E94530D80916B01DB |
:102170008F7E80936B018DB79EB70B960FB6F89448 |
:102180009EBF0FBE8DBF21960FB6F894DEBF0FBE67 |
:10219000CDBFDF91CF9108951F920F920FB60F928E |
:1021A00011240F900FBE0F901F9018951F920F9241 |
:1021B0000FB60F9211242F933F934F935F936F931A |
:1021C0007F938F939F93AF93BF93EF93FF9388B5C4 |
:1021D000845688BD80918D01815080938D01882324 |
:1021E00009F07BC082E080938D0180918A019091FB |
:1021F0008B01019690938B0180938A0188E190E096 |
:102200002BE00FB6F894A895809360000FBE209342 |
:1022100060008091540190915501009719F1019748 |
:10222000909355018093540121E0883B920739F047 |
:1022300021E08C32920719F08436910599F480E5FB |
:102240000E94F6148091540190915501885B914051 |
:1022500049F48091E5029091E60201969093E6029E |
:102260008093E50280919101882331F08091910162 |
:1022700081508093910102C080939001809152011E |
:1022800090915301009729F0019790935301809307 |
:10229000520180918C01882329F080918C0181501A |
:1022A00080938C0180913501909136010197909334 |
:1022B0003601809335018F5F9F4F79F488E795E071 |
:1022C000909336018093350180915401909155018E |
:1022D000892B19F480E50E94F614FF91EF91BF91CC |
:1022E000AF919F918F917F916F915F914F913F91AE |
:1022F0002F910F900FBE0F901F9018959C01F8948E |
:1023000080918A0190918B017894820F931F01979D |
:102310000895F89420918A0130918B01821B930BD0 |
:10232000892F992780787894992787FD909508952B |
:10233000CF93DF930E947E11EC0108C0809167016A |
:10234000882321F00E94840F0E947E0ECE010E94FD |
:102350008911882399F3DF91CF91089587EA8093BB |
:102360007A0087EC80937C0080917A00806480936F |
:102370007A0080917B00806480937B000895CF93E6 |
:10238000DF93C82F96EC90937C0080B7806880BF65 |
:1023900084ED80937A0080917A00806180937A0046 |
:1023A00090937C0080917A00806480937A00809181 |
:1023B000590190915A0180569A4EB8F48091590172 |
:1023C00090915A012091610130916201820F931F17 |
:1023D00090935A018093590180915701909158012F |
:1023E0000196909358018093570180917A0084FD63 |
:1023F0000DC0CC23D1F38091BC0087FF02C00E94A6 |
:102400000215B59BF2CF0E94E013EFCFC091780088 |
:10241000D091790080910D019927C89F9001C99FA3 |
:10242000300DD89F300D112445E0369527954A95FB |
:10243000E1F7309362012093610180915F019091F7 |
:1024400060018217930720F43093600120935F01AD |
:1024500032E0C935D30708F454C00E946016809159 |
:102460005601882319F080E092E002C080E094E0F9 |
:10247000909389008093880010924101109240014E |
:10248000109242011092A40180913E0190913F016F |
:1024900020916301309164012817390720F43093AB |
:1024A0003F0120933E018AE080938C018091F702E6 |
:1024B0009091F80201969093F8028093F70283E0DE |
:1024C000C73BD80750F083E08093A10180914F0172 |
:1024D000833318F082E380934F0180910D01992797 |
:1024E000C89F9001C99F300DD89F300D1124C9019C |
:1024F00025E0969587952A95E1F790936201809360 |
:10250000610184E080937A0080917B0080648093F5 |
:102510007B0080B78F7780BF80B7806180BFDF91FD |
:10252000CF9108951F93CF93182F8091510181501F |
:10253000809351018F3F09F0B6C08EE18093510125 |
:1025400080918E01815080938E018F3F09F058C099 |
:10255000C0917C0097EC90937C0080B7806880BF2E |
:1025600084ED80937A0080917A00806180937A0074 |
:1025700090937C0080917A00806480937A008091AF |
:102580007A0084FD0DC01123D1F38091BC0087FF38 |
:1025900002C00E940215B59BF2CF0E94E013EFCF5C |
:1025A000C0937C002091780030917900C901E4E06B |
:1025B000880F991FEA95E1F7820F931F67E170E09A |
:1025C0000E94021B8091110190911201860F971FAA |
:1025D00096958795909312018093110184E08093E2 |
:1025E0007A0080917B00806480937B0080B78F7736 |
:1025F00080BF80B7806180BF83E080938E0156C02A |
:10260000C0917C0093EC90937C0080B7806880BF81 |
:1026100084ED80937A0080917A00806180937A00C3 |
:1026200090937C0080917A00806480937A008091FE |
:102630007A0084FD0DC01123D1F38091BC0087FF87 |
:1026400002C00E940215B59BF2CF0E94E013EFCFAB |
:10265000C0937C0080917800909179009C0163E0A8 |
:10266000220F331F6A95E1F7280F391F280F391FF2 |
:1026700080910F0190911001820F931F969587957D |
:102680009093100180930F0184E080937A008091F1 |
:102690007B00806480937B0080B78F7780BF80B79A |
:1026A000806180BF03C0812F0E94BF11CF911F9115 |
:1026B00008951F93CF93C62F10917C00982F906C94 |
:1026C00090937C0080B7806880BF86ED80937A000D |
:1026D00080917A00806180937A0090937C00809151 |
:1026E0007A00806480937A0080917A0084FD09C02A |
:1026F000CC23D1F38091BC0087FFF6CF0E94021556 |
:10270000F3CF10937C0087E080937A0080B78F77B7 |
:1027100080BF80B7806180BF809178009091790000 |
:10272000CF911F910895682F86E00E945913209140 |
:102730000D013327829FA001839F500D929F500D62 |
:1027400011249A01F5E036952795FA95E1F7309333 |
:1027500062012093610180915F0190916001821775 |
:10276000930720F43093600120935F0108958091D6 |
:102770008100806C809381008091810080648093CF |
:10278000810080916F00806280936F0080916F0064 |
:10279000816080936F0082E08093B10008951F9262 |
:1027A0000F920FB60F9211248F93809192018F5F39 |
:1027B000809392018F910F900FBE0F901F901895EC |
:1027C00080916F0085FF8AC08091810086FF17C0CD |
:1027D0001092B20081E08093700010928F0180917E |
:1027E00092018093970110929201809181008F7BDA |
:1027F0008093810084E680939101B89A6FC0109213 |
:10280000B100B89B05C0809192018F5F80939201C7 |
:102810002091B200809192019927582F4427420FAE |
:10282000511D509396014093950182E08093B10031 |
:1028300080918100806480938100809190018F3F1E |
:1028400051F04B5C58404552524028F48091900121 |
:102850008F5F8093900180919501909196012AE07D |
:10286000803F92073CF0805F9A409093960180935E |
:10287000950104C0109296011092950180919701E4 |
:10288000843688F480914F01882369F08091950106 |
:10289000909196012091930130919401820F931FA2 |
:1028A0009695879517C080919301909194019C0112 |
:1028B00043E0220F331F4A95E1F7281B390B809123 |
:1028C000950190919601820F931F23E0969587952D |
:1028D0002A95E1F79093940180939301B59A089516 |
:1028E0001F920F920FB60F9211242F933F934F9385 |
:1028F0005F936F937F938F939F93AF93BF93EF9368 |
:10290000FF930E94E013FF91EF91BF91AF919F91D0 |
:102910008F917F916F915F914F913F912F910F9088 |
:102920000FBE0F901F90189580915D0190915E01F0 |
:10293000893C910518F480915D010CC022E0853E30 |
:10294000920750F4885C90406AE070E00E94021B9D |
:10295000CB018853992708958EEF90E008958091D8 |
:10296000B8018823F1F580919B0190919C01892BFE |
:1029700071F480916801882351F48091200485FDD1 |
:1029800003C088EF90E0089589EF90E0089580916A |
:10299000A101882319F084E690E0089580914F0109 |
:1029A000823350F480914E01863018F087E290E037 |
:1029B000089588E290E0089580914D01882359F0B0 |
:1029C000809101018F3F39F4809102018F3F19F40A |
:1029D0008EEF90E008959091010180910201891796 |
:1029E00010F499270895892F992708951092BC0013 |
:1029F00090910401990F980F9093BA0085EC809301 |
:102A0000BC0008958091B9009927887F9070803824 |
:102A1000910529F1813891053CF4009709F411C121 |
:102A20008036910591F019C1883B910509F494C055 |
:102A3000893B91052CF4883A910509F48DC00DC1AC |
:102A4000883F910509F4FDC008C18091BC008068F1 |
:102A50008093BC0010929F0110929E0108954091B6 |
:102A6000BB008091BC0080688093BC0080919E0177 |
:102A7000282F33278F5F80939E0121303105B9F1D4 |
:102A8000223031051CF4232B31F05CC0223031059B |
:102A900009F448C057C0442369F480919D018823FC |
:102AA00049F08091540190915501892B19F081E0F2 |
:102AB00090E011C08091540190915501892B81F0D3 |
:102AC00080919D01882361F0842F992753E0880F1E |
:102AD000991F5A95E1F790939C0180939B0104C044 |
:102AE00010929C0110929B0140939D012EC0209159 |
:102AF0009B0130919C012115310551F0842F9927BC |
:102B000087709070280F391F30939C0120939B0190 |
:102B1000842F992733E0969587953A95E1F780932E |
:102B20009F0113C080919801883078F480919801BA |
:102B3000E82FFF27E15FFB4F40838F5F8093980171 |
:102B400082E001C08EEF80939E0184EF91E090932C |
:102B5000550180935401089580919F01282F3327B8 |
:102B6000442755278F5F80939F01F9012F3131054D |
:102B700008F05DC0EC5CFF4FEE0FFF1F0590F49175 |
:102B8000E02D09940E9494144FC080915D019091B2 |
:102B90005E0121E08E3F9207A8F08EEF45C00E94B3 |
:102BA000AF148093BB008091BB0099279093E802FB |
:102BB0008093E70242C080910E0136C080915B0194 |
:102BC00090915C01969587952FC0809111012CC042 |
:102BD00080915B0129C08091990126C081E024C0C9 |
:102BE0008AE022C00E9494141FC080911A041CC065 |
:102BF00080911B0419C080911C0416C080911D0493 |
:102C000013C080911E0410C080911F040DC08091DC |
:102C100020040AC08091210407C08091B80104C03B |
:102C20001092BB000AC085EA8093BB0006C08FEFFC |
:102C30008093BB008EEF80939F018091BC008068E1 |
:102C40000DC085ED8093BC008091990190919A010F |
:102C5000019690939A018093990185EC8093BC0032 |
:102C600008951F920F920FB60F9211242F933F9346 |
:102C70004F935F936F937F938F939F93AF93BF9384 |
:102C8000EF93FF930E940215FF91EF91BF91AF91D7 |
:102C90009F918F917F916F915F914F913F912F9174 |
:102CA0000F900FBE0F901F9018958091980188305B |
:102CB00030F08FE094E00E94DC19109298010895A2 |
:102CC0008BB1877C8BB98AB188638AB985B1877CDF |
:102CD00085B984B1886384B908958AB180638AB95B |
:102CE00084B1806384B923988091A40181115398A1 |
:102CF00008958AB188628AB984B1886284B92498B7 |
:102D00008091A4018111549808958AB188618AB98B |
:102D100084B1886184B925988091A4018111559866 |
:102D200008958BB18F7C8BB9539A8091A101882330 |
:102D300009F45B9A08958BB1877D8BB9549A809181 |
:102D4000A101882309F45C9A08958BB1877E8BB921 |
:102D5000559A8091A101882309F45D9A08950F93F3 |
:102D60001F93CF93DF9380913801882309F08FC0A0 |
:102D700000B605FE03C000B600FC06C000B605FCA8 |
:102D800086C000B600FC83C015BC16B58091A501B5 |
:102D9000012F081B80910001202F3327882331F059 |
:102DA0008091A601E901C80FD11D03C0E901C20F3E |
:102DB000D31FE0915B01F0915C01E332F10510F467 |
:102DC000C0E9D1E080913701282F3327CE01B90126 |
:102DD0000E94021B962F80910001882311F097E03A |
:102DE00006C0663020F41F5F17BD115003C0910F5D |
:102DF000955097BD85B5836085BD00B605FE03C0BF |
:102E000000B600FC0DC000B605FC03C000B600FE15 |
:102E100007C080910001882319F4E43BF105B8F163 |
:102E200021E0209338011092180480B7877F80BF7B |
:102E3000CE019695879596958795810F8093A001F1 |
:102E4000809100018823A9F4C533D10560F40E9464 |
:102E50006016809117048B3F60F4809117048F5F98 |
:102E60008093170406C0CF3FD10509F010F42093DA |
:102E70001804CE0196958795810F809319041093BD |
:102E8000A5010093A601D093F202C093F102DF9155 |
:102E9000CF911F910F9108951F920F920FB60F922D |
:102EA00011242F933F934F935F936F937F938F934F |
:102EB0009F93AF93BF93EF93FF938091000188237B |
:102EC00011F40E94AF16FF91EF91BF91AF919F91C6 |
:102ED0008F917F916F915F914F913F912F910F90C3 |
:102EE0000FBE0F901F90189580911804882391F1C0 |
:102EF00025C08091BC0087FF02C00E940215B59BCF |
:102F000002C00E94E0138091190496B5891B87FFC7 |
:102F100015C00E946016809117048C3D28F48091A2 |
:102F20001704825E809317048091F9029091FA024F |
:102F300001969093FA028093F902089500B600FE7C |
:102F400003C000B605FCD5CF00B600FC03C000B638 |
:102F500005FECFCF0895CF93C82F80914301909164 |
:102F60004401019690934401809343018091200491 |
:102F700080FD4CC08091A301992782309105E1F03A |
:102F8000833091052CF4009749F0019791F033C0FC |
:102F90008330910511F1049739F12DC00E94A516D7 |
:102FA0008C2F0E94921281EC80937C0080B78E7FE0 |
:102FB0004BC00E9479165FC00E9491168C2F0E9410 |
:102FC000BF1182EC80937C0080B78E7F80BF8091A0 |
:102FD000A3018F5F8093A30172C00E9485168C2F7E |
:102FE0000E94BF1181EC59C00E949B168C2F0E9439 |
:102FF000BF1180ECE7CF0E946D168C2F0E94BF118D |
:1030000082EC80937C0080B7836056C08091A301DE |
:1030100099278230910569F1833091052CF400974E |
:1030200049F0019719F13EC08330910549F10497A9 |
:1030300071F138C00E946D168C2F0E94921281ECA3 |
:1030400080937C0080B7836080BF8091A3018F5FF5 |
:103050008093A3010E94741780911704882389F13B |
:10306000809117048150809317042BC00E949B16F7 |
:10307000A5CF0E9485168C2F0E94BF1180EC0DC039 |
:103080000E9491168C2F0E94BF1181EC9BCF0E9451 |
:1030900079168C2F0E94BF1182EC80937C0080B740 |
:1030A000836094CF0E94A5168C2F0E94BF1180ECE4 |
:1030B00080937C0080B78E7F80BF1092A3010E9416 |
:1030C000741710920801CF9108951F920F920FB6B6 |
:1030D0000F9211242F933F934F935F936F937F939E |
:1030E0008F939F93AF93BF93EF93FF93909138018A |
:1030F000913051F482E0809338018091A00187BD26 |
:10310000892F0E94AB170FC080913801823059F48B |
:103110001092380180B7886180BF809100018823B8 |
:1031200011F40E94AF16FF91EF91BF91AF919F9163 |
:103130008F917F916F915F914F913F912F910F9060 |
:103140000FBE0F901F9018951F920F920FB60F92FF |
:1031500011242F933F934F935F936F937F938F939C |
:103160009F93AF93BF93EF93FF93809156019091FC |
:10317000A7018823E9F1292F33279F5F9093A701A7 |
:103180002130310579F0223031051CF4232B29F050 |
:103190001DC02230310579F019C0209140013091D5 |
:1031A000410106C020914001309141012F5F3F4F06 |
:1031B0003695279515C020914001309141013695F3 |
:1031C000279580914201280F311D0AC020914001AE |
:1031D000309141012F5F3F4F369527951092A701FF |
:1031E000809180008E7F809380008FEF91E01DC0E2 |
:1031F0009F5F9093A701915029F420914001309155 |
:1032000041010CC080914201209140013091410167 |
:10321000882311F02F5F3F4F1092A701809180000B |
:103220008160809380008FEF93E0821B930B9C0161 |
:103230008F31910520F0AC014E51504002C040E06A |
:1032400050E0809181008E7F8093810030938900CF |
:103250002093880050938B0040938A0080918100D6 |
:1032600081608093810080910001882331F08091FA |
:10327000A201882311F00E94AF16FF91EF91BF9138 |
:10328000AF919F918F917F916F915F914F913F91FE |
:103290002F910F900FBE0F901F901895F999FECFA8 |
:1032A00092BD81BDF89A80B599270895F999FECF0E |
:1032B0001FBA92BD81BD60BD0FB6F894FA9AF99A13 |
:1032C0000FBE089520E030E02617370740F4FC01D8 |
:1032D0008191480F2F5F3F4F26173707C8F3842F80 |
:1032E000992708959091200494FF03C010925601ED |
:1032F00003C081E080935601292F332725FF02C0A8 |
:103300001092A401907C11F484E107C0C901807C73 |
:1033100090708038910521F48CE3809337010895F3 |
:103320008034910511F48AE0F8CF803C910519F4BE |
:1033300087E080933701089586E080931A04109205 |
:103340001B048FEF80931C049091090190931D043E |
:1033500084E680931E0480E480931F0484E08093BD |
:10336000200480910A01981710F080931D044AEA06 |
:1033700067E070E08AE194E00E9462198093210482 |
:10338000089580911A0499278F709070069799F488 |
:103390004AEA67E070E08AE194E00E946219809353 |
:1033A000210426E539E148E050E06AE174E080E27A |
:1033B00090E00E94B51A0895CF93DF93EC014AEA9A |
:1033C00067E070E00E9462199F81981719F085E00C |
:1033D00090E060C04881842F99278F709070069785 |
:1033E00019F084E090E056C0898186FF03C00E94F6 |
:1033F0009C1947C010921B048981282F332720FF76 |
:1034000003C08A8180931C0421FF03C08B818093B9 |
:103410001D0422FF03C08C8180931E0423FF03C080 |
:103420008D8180931F0424FF0AC0909120049E7018 |
:103430008E81817F982B9093200440931A0425FF5E |
:1034400008C090912004917F8E818E70982B90936C |
:10345000200480911E04833718F083E780931E04B4 |
:1034600080911D0490910A01891710F090931D041A |
:103470004AEA67E070E08AE194E00E946219809372 |
:103480002104898187FF02C00E94C1190E9472191C |
:1034900080E090E0DF91CF9108952EE439E148E09B |
:1034A00050E060E270E08AE194E00E94901A4AEAFB |
:1034B00067E070E08AE194E00E9462194AEA67E0FE |
:1034C00070E08AE194E00E946219282F80911A042A |
:1034D00099278F709070069721F4809121048217AC |
:1034E00021F00E949C190E94C1190E9472198091BA |
:1034F0001D0490910A01891710F090931D0480918A |
:103500001E04833718F083E780931E040895FB019F |
:10351000DC0102C005900D9241505040D8F708954B |
:10352000A0E0B0E0E6E9FAE10C94531B6C017B01EA |
:10353000EA01590121978FEFCF3FD80789F0860123 |
:103540000894C11CD11CC7010894E11CF11CF501B1 |
:103550000995F80180832197FFEFCF3FDF0779F7C7 |
:10356000EAE0CDB7DEB70C946F1BA0E0B0E0EBEB68 |
:10357000FAE10C94551B8C017B01EA01690121974A |
:103580008FEFCF3FD80771F0F70121917F01C8017C |
:103590000F5F1F4F622FF60109952197FFEFCF3F75 |
:1035A000DF0791F7E8E0CDB7DEB70C94711B629F9F |
:1035B000D001739FF001829FE00DF11D649FE00D2B |
:1035C000F11D929FF00D839FF00D749FF00D659F8C |
:1035D000F00D9927729FB00DE11DF91F639FB00D8B |
:1035E000E11DF91FBD01CF0111240895991B79E058 |
:1035F00004C0991F961708F0961B881F7A95C9F783 |
:1036000080950895AA1BBB1B51E107C0AA1FBB1FD1 |
:10361000A617B70710F0A61BB70B881F991F5A955E |
:10362000A9F780959095BC01CD01089597FB092ECF |
:1036300007260AD077FD04D0E5DF06D000201AF473 |
:10364000709561957F4F0895F6F7909581959F4FFE |
:103650000895A1E21A2EAA1BBB1BFD010DC0AA1FD3 |
:10366000BB1FEE1FFF1FA217B307E407F50720F0EB |
:10367000A21BB30BE40BF50B661F771F881F991F66 |
:103680001A9469F760957095809590959B01AC01AF |
:10369000BD01CF0108952F923F924F925F926F929A |
:1036A0007F928F929F92AF92BF92CF92DF92EF92D2 |
:1036B000FF920F931F93CF93DF93CDB7DEB7CA1B53 |
:1036C000DB0B0FB6F894DEBF0FBECDBF09942A887E |
:1036D000398848885F846E847D848C849B84AA8426 |
:1036E000B984C884DF80EE80FD800C811B81AA81B3 |
:1036F000B981CE0FD11D0FB6F894DEBF0FBECDBF7E |
:06370000ED010895FFCF6A |
:1037060001FFFF0101FB0701011E280D000D1E2010 |
:103716004E80000A00F41FFC1F0A4144523A000181 |
:103726000A0D424C3A56000A0D48573A332E3020BD |
:0A3736005265762000FF0014FF002A |
:00000001FF |
/LICENSE.TXT |
---|
0,0 → 1,69 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software Nutzungsbedingungen (english version: see below) |
// + der Fa. HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland - nachfolgend Lizenzgeber genannt - |
// + |
// + Der Lizenzgeber räumt dem Kunden ein nicht-ausschließliches, zeitlich und räumlich* unbeschränktes Recht ein, die im den |
// + Mikrocontroller verwendete Firmware für die Hardware Flight-Ctrl, Navi-Ctrl, BL-Ctrl, MK3Mag & PC-Programm MikroKopter-Tool |
// + - nachfolgend Software genannt - nur für private Zwecke zu nutzen. |
// + Der Einsatz dieser Software ist nur auf oder mit Produkten des Lizenzgebers zulässig. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die vom Lizenzgeber gelieferte Software ist urheberrechtlich geschützt. Alle Rechte an der Software sowie an sonstigen im |
// + Rahmen der Vertragsanbahnung und Vertragsdurchführung überlassenen Unterlagen stehen im Verhältnis der Vertragspartner ausschließlich dem Lizenzgeber zu. |
// + Die in der Software enthaltenen Copyright-Vermerke, Markenzeichen, andere Rechtsvorbehalte, Seriennummern sowie |
// + sonstige der Programmidentifikation dienenden Merkmale dürfen vom Kunden nicht verändert oder unkenntlich gemacht werden. |
// + Der Kunde trifft angemessene Vorkehrungen für den sicheren Einsatz der Software. Er wird die Software gründlich auf deren |
// + Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Die Haftung des Lizenzgebers wird - soweit gesetzlich zulässig - begrenzt in Höhe des typischen und vorhersehbaren |
// + Schadens. Die gesetzliche Haftung bei Personenschäden und nach dem Produkthaftungsgesetz bleibt unberührt. Dem Lizenzgeber steht jedoch der Einwand |
// + des Mitverschuldens offen. |
// + Der Kunde trifft angemessene Vorkehrungen für den Fall, dass die Software ganz oder teilweise nicht ordnungsgemäß arbeitet. |
// + Er wird die Software gründlich auf deren Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Der Kunde wird er seine Daten vor Einsatz der Software nach dem Stand der Technik sichern. |
// + Der Kunde ist darüber unterrichtet, dass der Lizenzgeber seine Daten im zur Vertragsdurchführung erforderlichen Umfang |
// + und auf Grundlage der Datenschutzvorschriften erhebt, speichert, verarbeitet und, sofern notwendig, an Dritte übermittelt. |
// + *) Die räumliche Nutzung bezieht sich nur auf den Einsatzort, nicht auf die Reichweite der programmierten Software. |
// + #### ENDE DER NUTZUNGSBEDINGUNGEN ####' |
// + Hinweis: Informationen über erweiterte Nutzungsrechte (wie z.B. Nutzung für nicht-private Zwecke) sind auf Anfrage per Email an info(@)hisystems.de verfügbar. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software LICENSING TERMS |
// + of HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland, Germany - the Licensor - |
// + |
// + The Licensor grants the customer a non-exclusive license to use the microcontroller firmware of the Flight-Ctrl, Navi-Ctrl, BL-Ctrl, and MK3Mag hardware |
// + (the Software) exclusively for private purposes. The License is unrestricted with respect to time and territory*. |
// + The Software may only be used with the Licensor's products. |
// + The Software provided by the Licensor is protected by copyright. With respect to the relationship between the parties to this |
// + agreement, all rights pertaining to the Software and other documents provided during the preparation and execution of this |
// + agreement shall be the property of the Licensor. |
// + The information contained in the Software copyright notices, trademarks, other legal reservations, serial numbers and other |
// + features that can be used to identify the program may not be altered or defaced by the customer. |
// + The customer shall be responsible for taking reasonable precautions |
// + for the safe use of the Software. The customer shall test the Software thoroughly regarding its suitability for the |
// + intended purpose before implementing it for actual operation. The Licensor's liability shall be limited to the extent of typical and |
// + foreseeable damage to the extent permitted by law, notwithstanding statutory liability for bodily injury and product |
// + liability. However, the Licensor shall be entitled to the defense of contributory negligence. |
// + The customer will take adequate precautions in the case, that the software is not working properly. The customer will test |
// + the software for his purpose before any operational usage. The customer will backup his data before using the software. |
// + The customer understands that the Licensor collects, stores and processes, and, where required, forwards, customer data |
// + to third parties to the extent necessary for executing the agreement, subject to applicable data protection and privacy regulations. |
// + *) The territory aspect only refers to the place where the Software is used, not its programmed range. |
// + #### END OF LICENSING TERMS #### |
// + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + * porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
/README.TXT |
---|
0,0 → 1,10 |
Subversion Projektarchiv |
######################## |
Verzeichnisstruktur: |
/tags/ : lauffähige Versionen |
/branches/ : verschiedene Test- und Sonderversionen |
/branches/README.txt |
---|
0,0 → 1,5 |
This is a Subversion repository; use the 'svnadmin' tool to examine |
it. Do not add, delete, or modify files here unless you know how |
to avoid corrupting the repository. |
Visit http://subversion.tigris.org/ for more information. |
/branches/V0.37_neueStruktur/makefile |
---|
0,0 → 1,396 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega8 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 37 |
#------------------------------------------------------------------- |
#Output dir |
OUT = ./out |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
TARGET = BrushLess-Ctrl_V$(HAUPT_VERSION)_$(NEBEN_VERSION) |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = $(wildcard src/*.c) |
#printf_P.c |
########################################################################################################## |
# If there is more than one source file, append them above, or modify and |
# uncomment the following: |
#SRC += foo.c bar.c |
# You can also wrap lines by appending a backslash to the end of the line: |
#SRC += baz.c \ |
#xyzzy.c |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -g -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) |
ifeq ($(AVR_CTRL_PLATINE), 1) |
CFLAGS += -DAVR_CTRL_PLATINE=$(AVR_CTRL_PLATINE) |
endif |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
#AVRDUDE_FLAGS += -V -E noreset |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
MOVE = mv |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
MSG_MOVE = Moving Files: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter tooutdir finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
$(REMOVE) ./out/* |
tooutdir: |
@echo |
@echo $(MSG_MOVE) |
-$(MOVE) $(TARGET).hex $(OUT) |
# -$(MOVE) $(TARGET).eep $(OUT) |
# -$(MOVE) $(TARGET).obj $(OUT) |
# -$(MOVE) $(TARGET).cof $(OUT) |
-$(MOVE) $(TARGET).elf $(OUT) |
-$(MOVE) $(TARGET).map $(OUT) |
# -$(MOVE) $(TARGET).a90 $(OUT) |
-$(MOVE) $(TARGET).sym $(OUT) |
# -$(MOVE) $(TARGET).lnk $(OUT) |
-$(MOVE) $(TARGET).lss $(OUT) |
-$(MOVE) $(OBJ) $(OUT) |
-$(MOVE) $(LST) $(OUT) |
# -$(MOVE) $(SRC:.c=.s) $(OUT) |
# -$(MOVE) $(SRC:.c=.d) $(OUT) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
#%.d: %.c |
# set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
# | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
# [ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
#-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/V0.37_neueStruktur/src/BLMC.c |
---|
0,0 → 1,235 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + Nur für den privaten Gebrauch |
// + Copyright (c) 12.2007 Holger Buss |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile unsigned char Phase = 0,ShadowTCCR1A = 0; |
volatile unsigned char CompFreigabeTimer = 100; |
volatile unsigned char CompInterruptFreigabe = 0; |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW2) |
//############################################################################ |
{ |
} |
//############################################################################ |
// + Interruptroutine |
// + Wird durch den Analogkomperator ausgelöst |
// + Dadurch wird das Kommutieren erzeugt |
SIGNAL(SIG_COMPARATOR) |
//############################################################################ |
{ |
unsigned char sense = 0; |
do |
{ |
if(SENSE_H) sense = 1; else sense = 0; |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
if(sense) |
{ |
STEUER_C_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_FALLING_INT; |
SENSE_B; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_L; |
} |
break; |
case 1: |
STEUER_C_L; |
if(!sense) |
{ |
STEUER_B_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_H; |
} |
break; |
case 2: |
STEUER_B_H; |
if(sense) |
{ |
STEUER_A_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_L; |
} |
break; |
case 3: |
STEUER_A_L; |
if(!sense) |
{ |
STEUER_C_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_B; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_H; |
} |
break; |
case 4: |
STEUER_C_H; |
if(sense) |
{ |
STEUER_B_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_L; |
} |
break; |
case 5: |
STEUER_B_L; |
if(!sense) |
{ |
STEUER_A_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_RISING_INT; |
Phase = 0; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_H; |
} |
break; |
} |
} |
while((SENSE_L && sense) || (SENSE_H && !sense)); |
ZeitZumAdWandeln = 0; |
} |
//############################################################################ |
// |
void Manuell(void) |
//############################################################################ |
{ |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
STEUER_B_L; |
SENSE_C; |
SENSE_RISING_INT; |
break; |
case 1: |
STEUER_A_H; |
STEUER_C_L; |
SENSE_B; |
SENSE_FALLING_INT; |
break; |
case 2: |
STEUER_B_H; |
STEUER_C_L; |
SENSE_A; |
SENSE_RISING_INT; |
break; |
case 3: |
STEUER_B_H; |
STEUER_A_L; |
SENSE_C; |
SENSE_FALLING_INT; |
break; |
case 4: |
STEUER_C_H; |
STEUER_A_L; |
SENSE_B; |
SENSE_RISING_INT; |
break; |
case 5: |
STEUER_C_H; |
STEUER_B_L; |
SENSE_A; |
SENSE_FALLING_INT; |
break; |
} |
} |
/branches/V0.37_neueStruktur/src/BLMC.h |
---|
0,0 → 1,98 |
/*############################################################################ |
############################################################################*/ |
#ifndef BLMC_H_ |
#define BLMC_H_ |
extern volatile unsigned char Phase; |
extern volatile unsigned char ShadowTCCR1A; |
extern volatile unsigned char CompInterruptFreigabe; |
void Blc(void); |
void Manuell(void); |
// anselm |
/* |
#define COM1A ((0 << COM1A0) | (1 << COM1A1)) // COM1A-> OC1A non inverting mode |
#define COM1B ((0 << COM1B0) | (1 << COM1B1)) // COM1B-> OC1B non inverting mode |
#define COM2 ((0 << COM20) | (1 << COM21)) // COM2-> OC2 non inverting mode |
#ifdef _32KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> fast PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (1 << WGM21) | (1 << CS20)) // WGM20:21-> fast PWM, no prescale |
#endif |
#ifdef _16KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> phase corr, PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (0 << WGM21) | (1 << CS20)) // WGM20:21-> phase corr. PWM, no prescale |
#endif |
#define PWM_C_ON {TCCR1A = COM1A | WGM1 | COM1B; TCCR2 = WGMCS2; |
DDRB = 0x02;} // Steuer_C+ output |
#define PWM_B_ON {TCCR1A = COM1B | WGM1 | COM1A; TCCR2 = WGMCS2; \ |
DDRB = 0x04;} // Steuer_B+ output |
#define PWM_A_ON {TCCR1A = WGM1; TCCR2 = COM2 | WGMCS2; \ |
DDRB = 0x08;} // Steuer_A+ output |
#define PWM_OFF {TCCR1A = WGM1; \ |
TCCR2 = WGMCS2; \ |
PORTB &= ~0x0E; DDRB = 0x0E;} // OC1x & OC2 disconnected, Steuer_X+ output low |
// anselm |
*/ |
#ifdef _32KHZ |
#define PWM_C_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xAD; TCCR2 = 0x69;DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x0D; TCCR2 = 0x49;PORTC &= ~0x0E;} |
#endif |
#ifdef _16KHZ |
// #define PWM_C_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0A;} |
// #define PWM_B_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0C;} |
// #define PWM_A_ON {TCCR1A = 0xA2; TCCR2 = 0x61; DDRB = 0x08;} |
// #define PWM_C_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0A;} else { TCCR1A = 0x81; DDRB = 0x0E;}} |
// #define PWM_B_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0C;} else { TCCR1A = 0x21; DDRB = 0x0E;}} |
// #define PWM_A_ON {TCCR2 = 0x61; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x08;} else { TCCR1A = 0x01; DDRB = 0x0E;}} |
#define PWM_C_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x02;} |
#define PWM_B_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x04;} |
#define PWM_A_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x08;} |
// #define PWM_C_ON {TCCR1A = 0x82; TCCR2 = 0x41; PORTB &= ~0x04; DDRB = 0x0E;} |
// #define PWM_B_ON {TCCR1A = 0x22; TCCR2 = 0x41; PORTB &= ~0x02; DDRB = 0x0E;} |
// #define PWM_A_ON {TCCR1A = 0x02; TCCR2 = 0x61; PORTB &= ~0x06; DDRB = 0x0E;} |
#define PWM_OFF {TCCR1A = 0x01; TCCR2 = 0x41; DDRB = 0x0E; PORTB &= ~0x0E;} |
#endif |
#define STEUER_A_H {PWM_A_ON} |
#define STEUER_B_H {PWM_B_ON} |
#define STEUER_C_H {PWM_C_ON} |
#define STEUER_A_L {PORTD &= ~0x30; PORTD |= 0x08;} |
#define STEUER_B_L {PORTD &= ~0x28; PORTD |= 0x10;} |
#define STEUER_C_L {PORTD &= ~0x18; PORTD |= 0x20;} |
#define STEUER_OFF {PORTD &= ~0x38; PWM_OFF; } |
#define FETS_OFF {PORTD &= ~0x38; PORTB &= ~0x0E; } |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
#define ENABLE_SENSE_INT {CompInterruptFreigabe = 1;ACSR |= 0x0A; } |
#define DISABLE_SENSE_INT {CompInterruptFreigabe = 0; ACSR &= ~0x08; } |
#define SENSE_FALLING_INT ACSR &= ~0x01 |
#define SENSE_RISING_INT ACSR |= 0x03 |
#define SENSE_TOGGLE_INT ACSR &= ~0x03 |
#endif //BLMC_H_ |
/branches/V0.37_neueStruktur/src/PPM_Decode.c |
---|
0,0 → 1,76 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned int PPM_Signal = 0; |
volatile unsigned char Timer1Overflow = 0; |
volatile unsigned char PPM_Timeout = 0, anz_ppm_werte = 0; // Ungültig, wenn Null |
//############################################################################ |
// |
void InitPPM(void) |
//############################################################################ |
{ |
TCCR1B |= (1<<ICES1)|(1<<ICNC1); |
ICP_POS_FLANKE; |
ICP_INT_ENABLE; |
TIMER1_INT_ENABLE; |
} |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW1) |
//############################################################################ |
{ |
Timer1Overflow++; |
} |
//############################################################################ |
// |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int tim_alt; |
static unsigned int ppm; |
if(TCCR1B & (1<<ICES1)) // Positive Flanke |
{ |
Timer1Overflow = 0; |
tim_alt = ICR1; |
ICP_NEG_FLANKE; |
PPM_Timeout = 100; |
} |
else // Negative Flanke |
{ |
ICP_POS_FLANKE; |
#ifdef _32KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 32; |
#endif |
#ifdef _16KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 32; |
#endif |
if(ppm < 280) ppm = 280; |
ppm -= 280; |
if(PPM_Signal < ppm) PPM_Signal++; |
else if(PPM_Signal > ppm) PPM_Signal--; |
if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern |
PPM_Signal = ppm; |
if(anz_ppm_werte < 255) anz_ppm_werte++; |
ZeitZumAdWandeln = 1; |
} |
} |
//############################################################################ |
// |
SIGNAL(SIG_INTERRUPT0) |
//############################################################################ |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
} |
/branches/V0.37_neueStruktur/src/PPM_Decode.h |
---|
0,0 → 1,27 |
/*############################################################################ |
############################################################################*/ |
extern volatile unsigned int PPM_Signal; |
extern volatile unsigned char PPM_Timeout, anz_ppm_werte; |
void InitPPM(void); |
#define INT0_ENABLE GIMSK |= 0x40 |
#define INT0_DISABLE GIMSK &= ~0x40 |
#define TIM0_START TIMSK |= 0x01 |
#define TIM0_STOPP TIMSK &= ~0x01 |
#define ICP_INT_ENABLE TIMSK |= 0x20 |
#define ICP_INT_DISABLE TIMSK &= ~0x20 |
#define TIMER1_INT_ENABLE TIMSK |= 0x04 |
#define TIMER1_INT_DISABLE TIMSK &= ~0x04 |
#define TIMER2_INT_ENABLE TIMSK |= 0x40 |
#define TIMER2_INT_DISABLE TIMSK &= ~0x40 |
#define INT0_POS_FLANKE MCUCR |= 0x01 |
#define INT0_ANY_FLANKE MCUCR |= 0x01 |
#define INT0_NEG_FLANKE MCUCR &= ~0x01 |
#define CLR_INT0_FLAG GIFR &= ~0x40 |
#define INIT_INT0_FLANKE MCUCR &= ~0x03; MCUCR |= 0x02; |
#define TIMER0_PRESCALER TCCR0 |
#define ICP_POS_FLANKE TCCR1B |= (1<<ICES1) |
#define ICP_NEG_FLANKE TCCR1B &= ~(1<<ICES1) |
/branches/V0.37_neueStruktur/src/analog.c |
---|
0,0 → 1,76 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
//############################################################################ |
//Init ADC |
void ADC_Init(void) |
//############################################################################ |
{ |
ADCSRA = 0xA6; // Free Run & 1MHZ |
ADMUX = 7; // Kanal 7 |
ADCSRA |= 0x40; // Start |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void AdConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = 0x06; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = 0x06; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
i = ADCW * 4; |
// if(i > 300) i = 300; |
Strom = (i + Strom * 7) / 8; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
//############################################################################ |
//Strom Analogwerte lesen |
unsigned int MessAD(unsigned char channel) |
//############################################################################ |
{ |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = channel; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = channel; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
return(ADCW); |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void FastADConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
i = MessAD(6) * 4; |
// i = ADCW * 4; |
if(i > 200) i = 200; |
Strom = i;//(i + Strom * 1) / 2; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
/branches/V0.37_neueStruktur/src/analog.h |
---|
0,0 → 1,6 |
extern void ADC_Init(void); |
extern void GetAnalogWerte(void); |
extern void AdConvert(void); |
extern void FastADConvert(void); |
/branches/V0.37_neueStruktur/src/main.c |
---|
0,0 → 1,721 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + Nur für den privaten Gebrauch |
// + Copyright (c) 12.2007 Holger Buss |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int PWM = 0; |
unsigned int Strom = 0,RuheStrom; //ca. in 0,1A |
unsigned char Strom_max = 0; |
unsigned char Mittelstrom = 0; |
unsigned int Drehzahl = 0; // in 100UPM 60 = 6000 |
unsigned int KommutierDelay = 10; |
unsigned int I2C_Timeout = 0; |
unsigned int SIO_Timeout = 0; |
unsigned int SollDrehzahl = 0; |
unsigned int IstDrehzahl = 0; |
unsigned int DrehZahlTabelle[256];//vorberechnete Werte zur Drehzahlerfassung |
unsigned char ZeitFuerBerechnungen = 1; |
unsigned char MotorAnwerfen = 0; |
unsigned char MotorGestoppt = 1; |
unsigned char MaxPWM = MAX_PWM; |
unsigned int CntKommutierungen = 0; |
unsigned int SIO_Drehzahl = 0; |
unsigned char ZeitZumAdWandeln = 1; |
unsigned char MotorAdresse = 1; |
unsigned char PPM_Betrieb = 1; |
//############################################################################ |
// |
void SetPWM(void) |
//############################################################################ |
{ |
unsigned char tmp_pwm; |
tmp_pwm = PWM; |
if(tmp_pwm > MaxPWM) // Strombegrenzung |
{ |
tmp_pwm = MaxPWM; |
PORTC |= ROT; |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
PORTC |= ROT; |
Strom--; |
} |
else |
{ |
#ifdef _32KHZ |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
#ifdef _16KHZ |
//OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
} |
} |
//############################################################################ |
// |
void PWM_Init(void) |
//############################################################################ |
{ |
PWM_OFF; |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
/* TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
*/ |
} |
//############################################################################ |
// |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
while((TCNT0 - dauer) & 0x80); |
} |
//############################################################################ |
// |
void Anwerfen(unsigned char pwm) |
//############################################################################ |
{ |
unsigned long timer = 300,i; |
DISABLE_SENSE_INT; |
PWM = 5; |
SetPWM(); |
Manuell(); |
Delay_ms(200); |
PWM = pwm; |
while(1) |
{ |
for(i=0;i<timer; i++) |
{ |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
Wait(100); // warten |
} |
timer-= timer/15+1; |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return; } |
Manuell(); |
Phase++; |
Phase %= 6; |
AdConvert(); |
PWM = pwm; |
SetPWM(); |
if(SENSE) |
{ |
PORTD ^= GRUEN; |
} |
} |
} |
/* |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
*/ |
void RotBlink(unsigned char anz) |
{ |
sei(); // Interrupts ein |
while(anz--) |
{ |
PORTC |= ROT; |
Delay_ms(300); |
PORTC &= ~ROT; |
Delay_ms(300); |
} |
Delay_ms(1000); |
} |
#define TEST_STROMGRENZE 120 |
unsigned char DelayM(unsigned int timer) |
{ |
while(timer--) |
{ |
FastADConvert(); |
if(Strom > (TEST_STROMGRENZE + RuheStrom)) |
{ |
FETS_OFF; |
return(1); |
} |
} |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
{ |
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
return(0); |
} |
/* |
void ShowSense(void) |
{ |
if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
*/ |
#define HIGH_A_EIN PORTB |= 0x08 |
#define HIGH_B_EIN PORTB |= 0x04 |
#define HIGH_C_EIN PORTB |= 0x02 |
#define LOW_A_EIN PORTD |= 0x08 |
#define LOW_B_EIN PORTD |= 0x10 |
#define LOW_C_EIN PORTD |= 0x20 |
void MotorTon(void) |
//############################################################################ |
{ |
unsigned char ADR_TAB[5] = {0,0,2,1,3}; |
unsigned int timer = 300,i; |
unsigned int t = 0; |
unsigned char anz = 0,MosfetOkay = 0, grenze = 50; |
PORTC &= ~ROT; |
Delay_ms(300 * ADR_TAB[MotorAdresse]); |
DISABLE_SENSE_INT; |
cli();//Globale Interrupts Ausschalten |
uart_putchar('\n'); |
STEUER_OFF; |
Strom_max = 0; |
DelayM(50); |
RuheStrom = Strom_max; |
// uart_putchar(RuheStrom + 'A'); |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Strom = 0; |
LOW_B_EIN; |
HIGH_A_EIN; |
if(DelayM(3)) |
{ |
anz = 1; |
uart_putchar('1'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_A_EIN; |
HIGH_B_EIN; |
if(DelayM(3)) |
{ |
anz = 2; |
uart_putchar('2'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_B_EIN; // Low C ein |
HIGH_C_EIN; // High B ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('3'); |
} |
FETS_OFF; |
Delay(1000); |
LOW_A_EIN; // Low A ein; und A gegen C |
HIGH_C_EIN; // High C ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('7'); |
} |
FETS_OFF; |
DelayM(10000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ LOW-Mosfets auf Schalten und Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_A_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_A_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); break;} |
Delay(5); |
} |
Delay(10000); |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_B_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_B_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); break;} |
Delay(5); |
} |
Strom = 0; |
Delay(10000); |
for(i=0;i<t;i++) |
{ |
LOW_C_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_C_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); break;} |
Delay(5); |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_A; |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
LOW_C_EIN; // Low C ein |
Strom = 0; |
#define TONDAUER 40000 |
#define SOUND_E 2 |
#define SOUND1_A 300 |
#define SOUND2_A 330 |
#define SOUND3_A 360 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_A_EIN; // Test A |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
FETS_OFF; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Low-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_B; |
LOW_A_EIN; // Low A ein |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
//++++++++++++++++++++++++++++++++++++ |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
sei();//Globale Interrupts Einschalten |
// Delay_ms(250 * MotorAdresse); |
/* |
LOW_A_EIN; // Low B ein |
#define SOUND8_A 650 |
for(i=0; i<(TONDAUER / SOUND8_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
PORTB = 0; |
Delay(SOUND8_A); |
} |
*/ |
Delay_ms(300 * (4-ADR_TAB[MotorAdresse])); |
if(!(MosfetOkay & 0x01)) { anz = 1; UDR='A'; } else |
if(!(MosfetOkay & 0x02)) { anz = 2; UDR='B'; } else |
if(!(MosfetOkay & 0x04)) { anz = 3; UDR='C'; } else |
if(!(MosfetOkay & 0x08)) { anz = 4; UDR='a'; } else |
if(!(MosfetOkay & 0x10)) { anz = 5; UDR='b'; } else |
if(!(MosfetOkay & 0x20)) { anz = 6; UDR='c'; } |
if(anz) Delay_ms(1000); |
RotBlink(anz); |
uart_putchar('.'); |
} |
//############################################################################ |
// |
unsigned char SollwertErmittlung(void) |
//############################################################################ |
{ |
static unsigned int sollwert = 0; |
unsigned int ppm; |
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
PPM_Betrieb = 0; |
ICP_INT_DISABLE; |
PORTC &= ~ROT; |
} |
else |
if(anz_ppm_werte > 20) // es gibt gültige PPM-Daten |
{ |
PPM_Betrieb = 1; |
ppm = PPM_Signal; |
if(ppm > 300) ppm = 0; // ungültiges Signal |
if(ppm > 200) ppm = 200; |
if(ppm <= MIN_PPM) sollwert = 0; |
else |
{ |
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM); |
} |
PORTC &= ~ROT; |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
PORTC |= ROT; |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
PPM_Betrieb = 0; |
PORTC &= ~ROT; |
ICP_INT_DISABLE; |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
return(sollwert); |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
char altPhase = 0; |
int test = 0; |
unsigned int MinUpmPulse,Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
DDRC = 0x08; |
PORTC = 0x08; |
DDRD = 0xBA; |
PORTD = 0x00; |
DDRB = 0x0E; |
PORTB = 0x31; |
#if (MOTORADRESSE == 0) |
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl |
for(test=0;test<500;test++); |
if (PINB & ADR1) |
{ |
if (PINB & ADR2) MotorAdresse = 1; |
else MotorAdresse = 2; |
} |
else |
{ |
if (PINB & ADR2) MotorAdresse = 3; |
else MotorAdresse = 4; |
} |
#else |
MotorAdresse = MOTORADRESSE; |
#endif |
UART_Init(); |
Timer0_Init(); |
sei();//Globale Interrupts Einschalten |
// Am Blinken erkennt man die richtige Motoradresse |
/* |
for(test=0;test<5;test++) |
{ |
if(test == MotorAdresse) PORTD |= GRUEN; |
Delay_ms(150); |
PORTD &= ~GRUEN; |
Delay_ms(250); |
} |
Delay_ms(500); |
*/ |
// UART_Init(); // war doppelt |
PWM_Init(); |
InitIC2_Slave(0x50); |
InitPPM(); |
Blink = SetDelay(101); |
Blink2 = SetDelay(102); |
MinUpmPulse = SetDelay(103); |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)) |
{ |
if(SollwertErmittlung()) break; |
} |
; |
PORTD |= GRUEN; |
PWM = 0; |
SetPWM(); |
SFIOR = 0x08; // Analog Comperator ein |
ADMUX = 1; |
MinUpmPulse = SetDelay(10); |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
if(!SollwertErmittlung()) MotorTon(); |
//MotorTon(); |
PORTB = 0x31; // Pullups wieder einschalten |
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung |
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder |
while (1) |
{ |
//ShowSense(); |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt |
{ |
MotorGestoppt = 0; |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
MinUpmPulse = SetDelay(250); // Timeout, falls ein Motor stehen bleibt |
altPhase = Phase; |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!PWM) // Sollwert == 0 |
{ |
MotorAnwerfen = 0; // kein Startversuch |
ZeitFuerBerechnungen = 0; |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(MotorGestopptTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
STEUER_OFF; |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
MotorGestopptTimer = SetDelay(1500); |
} |
if(MotorGestoppt && !TEST_SCHUB) PWM = 0; |
SetPWM(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
{ |
if(MotorGestoppt) PORTD |= GRUEN; //else PORTD &= ~GRUEN; |
if(SIO_DEBUG) |
{ |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
} |
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung |
if(CheckDelay(MittelstromTimer)) |
{ |
MittelstromTimer = SetDelay(50); // alle 50ms |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
else if(Mittelstrom > Strom) Mittelstrom--; |
if(Strom > MAX_STROM) MaxPWM -= MaxPWM / 32; |
if((Mittelstrom > LIMIT_STROM))// Strom am Limit? |
{ |
if(MaxPWM) MaxPWM--;// dann die Maximale PWM herunterfahren |
PORTC |= ROT; |
} |
else |
{ |
if(MaxPWM < MAX_PWM) MaxPWM++; |
} |
} |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
{ |
DrehzahlMessTimer = SetDelay(10); |
SIO_Drehzahl = CntKommutierungen;//(6 * CntKommutierungen) / (POLANZAHL / 2); |
CntKommutierungen = 0; |
if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
} |
if(TEST_SCHUB) |
{ |
if(CheckDelay(TestschubTimer)) |
{ |
TestschubTimer = SetDelay(1500); |
switch(test) |
{ |
case 0: PWM = 50; test++; break; |
case 1: PWM = 130; test++; break; |
case 2: PWM = 60; test++; break; |
case 3: PWM = 140; test++; break; |
case 4: PWM = 150; test = 0; break; |
default: test = 0; |
} |
} |
} |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
{ |
MotorGestoppt = 1; |
DISABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
if(MotorAnwerfen) |
{ |
PORTC &= ~ROT; |
MotorAnwerfen = 0; |
Anwerfen(10); |
PORTD |= GRUEN; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(20); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 15; |
SetPWM(); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)); // kurz Durchstarten |
// Drehzahlmessung wieder aufsetzen |
DrehzahlMessTimer = SetDelay(50); |
altPhase = 7; |
} |
} |
} // ZeitFuerBerechnungen |
} // while(1) - Hauptschleife |
} |
/branches/V0.37_neueStruktur/src/main.h |
---|
0,0 → 1,138 |
#ifndef _MAIN_H |
#define _MAIN_H |
#define MOTORADRESSE 0 // Adresse (1-4) 0 = Motoradresse über Lötjumper auf BL-Ctrl V1.1 |
#define MANUELL_PWM 0 // zur manuellen Vorgabe der PWM Werte: 0-255 |
#define TEST_MANUELL 0 // zum Testen der Hardware ohne Kommutierungsdetektion Werte: 0-255 (PWM) |
#define TEST_SCHUB 0 // Erzeugt ein Schubmuster Werte: 0 = normal 1 = Test |
#define POLANZAHL 12 // Anzahl der Pole (Magnete) Wird nur zur Drehzahlausgabe über Debug gebraucht |
#define MAX_PWM 255 |
#define MIN_PWM 3 |
#define MIN_PPM 10 // ab hier (PPM-Signal) schaltet der Regler erst ein |
#define FILTER_PPM 7 // wie stark soll das PPM-Signal gefiltert werden (Werte: 0-30)? |
#define SIO_DEBUG 0 // Testwertausgaben auf der seriellen Schnittstelle |
#define X3D_SIO 0 // serielles Protokoll des X3D (38400Bd) Achtung: dann muss SIO_DEBUG = 0 sein |
#define _16KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define _32KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
#define FDD6637_IRLR7843 1 // bessere MosFet bestückt? bewirkt höhere Stromgrenzen |
#ifdef _16KHZ |
#ifdef FDD6637_IRLR7843 // bessere Fets = mehr Strom zulassen |
#define MAX_STROM 200 // ab ca. 20A PWM ausschalten |
#define LIMIT_STROM 120 // ab ca. 12A PWM begrenzen |
#else |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 65 // ab ca. 6,5A PWM begrenzen |
#endif |
#endif |
#ifdef _32KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 50 // ab ca. 5,0A PWM begrenzen |
#endif |
#define SYSCLK 8000000L //Quarz Frequenz in Hz |
//Robbe Roxxy 2824-34 mit Todd 10x4,5 bei 16kHz |
//PWM Strom Schub |
//10 0,18A 21g |
//20 0,30A 38g |
//30 0,40A 49g |
//40 0,54A 60g |
//50 0,70A 83g |
//60 0,95A 102g |
//70 1,25A 128g |
//80 1,50A 151g |
//90 1,83A 175g |
//100 2,25A 206g |
//110 2,66A 228g |
//120 3,10A 257g |
//130 3,55A 278g |
//140 4,00A 305g |
//150 4,50A 330g |
//160 5,30A 355g |
//170 5,85A 387g |
//180 6,40A 400g |
//190 7,10A 425g |
//200 7,60A 460g |
//0,5A 63g 14% |
//1,0A 110g 24% |
//1,5A 170g 32% |
//2,0A 195g 37% |
//2,5A 230g 41% |
//3,0A 260g 46% |
//3,5A 290g 50% |
//4,0A 310g 53% |
//4,5A 340g 58% |
//5,0A 360g 63% |
//5,5A 380g 67% |
//6,0A 400g 68% |
//6,5A 420g 70% |
//7,0A 450g 75% |
//7,5A 460g 78% |
//8,0A 475g 82% |
//9,0A 550g 86% |
//11 A 600g 100% |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "twislave.h" |
#include "old_macros.h" |
#include "analog.h" |
#include "uart.h" |
#include "timer0.h" |
#include "BLMC.h" |
#include "PPM_Decode.h" |
extern unsigned int I2C_Timeout; |
extern unsigned int SIO_Timeout; |
extern unsigned int PWM; |
extern unsigned int Strom; //ca. in 0,1A |
extern unsigned char Strom_max; |
extern unsigned char Mittelstrom; |
extern unsigned int CntKommutierungen; |
extern unsigned char MotorAnwerfen; |
extern unsigned char MotorGestoppt; |
extern unsigned char ZeitZumAdWandeln; |
extern unsigned char MaxPWM; |
extern unsigned char MotorAdresse; |
extern unsigned char PPM_Betrieb; |
#define ROT 0x08 |
#define GRUEN 0x80 |
#define ADR1 0x40 // für Motoradresswahl |
#define ADR2 0x80 // |
#if defined(__AVR_ATmega8__) |
# define OC1 PB1 |
# define DDROC DDRB |
# define OCR OCR1A |
# define PWM10 WGM10 |
# define PWM11 WGM11 |
#endif |
#endif //_MAIN_H |
/branches/V0.37_neueStruktur/src/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/branches/V0.37_neueStruktur/src/timer0.c |
---|
0,0 → 1,59 |
/***************************************************************************** |
*****************************************************************************/ |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile unsigned char Timer0Overflow; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL(SIG_OVERFLOW0) |
{ |
static unsigned char cnt; |
Timer0Overflow++; |
if(!cnt--) |
{ |
cnt = 3; |
CountMilliseconds += 1; |
if(I2C_Timeout) I2C_Timeout--; |
if(PPM_Timeout) PPM_Timeout--; else anz_ppm_werte = 0; |
if(SIO_Timeout) SIO_Timeout--; |
} |
} |
void Timer0_Init(void) |
{ |
TCCR0 = TIMER_TEILER; |
// TCNT0 = -TIMER_RELOAD_VALUE; // reload |
TIM0_START; |
TIMER2_INT_ENABLE; |
} |
unsigned int SetDelay(unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
} |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
} |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
/branches/V0.37_neueStruktur/src/timer0.h |
---|
0,0 → 1,15 |
#if defined (__AVR_ATmega8__) |
#define TIMER_TEILER CK8 |
//#define TIMER_RELOAD_VALUE 125 |
#endif |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char Timer0Overflow; |
void Timer1_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
/branches/V0.37_neueStruktur/src/twislave.c |
---|
0,0 → 1,75 |
/*############################################################################ |
Slaveadr = 0x52 = Vorne, 0x54 = Hinten, 0x56 = Rechts, 0x58 = Links |
############################################################################*/ |
#include <avr/io.h> |
#include <util/twi.h> |
#include "main.h" |
unsigned char I2C_RXBuffer; |
unsigned char Byte_Counter=0; |
//############################################################################ |
//I2C (TWI) Interface Init |
void InitIC2_Slave(uint8_t adr) |
//############################################################################ |
{ |
TWAR = adr + (2*MotorAdresse); // Eigene Adresse setzen |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
//############################################################################ |
//ISR, die bei einem Ereignis auf dem Bus ausgelöst wird. Im Register TWSR befindet |
//sich dann ein Statuscode, anhand dessen die Situation festgestellt werden kann. |
ISR (TWI_vect) |
//############################################################################ |
{ |
switch (TWSR & 0xF8) |
{ |
case SR_SLA_ACK: |
TWCR |= (1<<TWINT); |
Byte_Counter=0; |
return; |
// Daten Empfangen |
case SR_PREV_ACK: |
I2C_RXBuffer = TWDR; |
I2C_Timeout = 500; |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_SLA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_DATA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_2: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_1: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
} |
TWCR =(1<<TWEA) | (1<<TWINT) | (1<<TWEN) | (1<<TWIE); // TWI Reset |
} |
/branches/V0.37_neueStruktur/src/twislave.h |
---|
0,0 → 1,32 |
#ifndef _TWI_SLAVE_H_ |
#define _TWI_SLAVE_H_ |
extern unsigned char I2C_RXBuffer; |
extern unsigned char Byte_Counter; |
extern void InitIC2_Slave (uint8_t adr); |
#define TWI_BUS_ERR_1 0x00 |
#define TWI_BUS_ERR_2 0xF8 |
// Status Slave RX Mode |
#define SR_SLA_ACK 0x60 |
#define SR_LOST_ACK 0x68 |
#define SR_GEN_CALL_ACK 0x70 |
#define GEN_LOST_ACK 0x78 |
#define SR_PREV_ACK 0x80 |
#define SR_PREV_NACK 0x88 |
#define GEN_PREV_ACK 0x90 |
#define GEN_PREV_NACK 0x98 |
#define STOP_CONDITION 0xA0 |
#define REPEATED_START 0xA0 |
// Status Slave TX mode |
#define SW_SLA_ACK 0xA8 |
#define SW_LOST_ACK 0xB0 |
#define SW_DATA_ACK 0xB8 |
#define SW_DATA_NACK 0xC0 |
#define SW_LAST_ACK 0xC8 |
#endif |
/branches/V0.37_neueStruktur/src/uart.c |
---|
0,0 → 1,277 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + (c) 01.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + Keine Garantie auf Fehlerfreiheit |
// + Kommerzielle Nutzung nur mit meiner Zustimmung |
// + Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
// + www.mikrocontroller.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
#define MAX_SENDE_BUFF 100 |
#define MAX_EMPFANGS_BUFF 100 |
unsigned volatile char SIO_Sollwert = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned char MeineSlaveAdresse; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
struct str_DebugOut DebugOut; |
int Debug_Timer; |
SIGNAL(INT_VEC_TX) |
{ |
} |
void SendUart(void) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!(UCSRA & 0x40)) return; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
USR |= (1<TXC); |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
#if X3D_SIO == 1 |
static unsigned char serPacketCounter = 100; |
SioTmp = UDR; |
if(SioTmp == 0xF5) // Startzeichen |
{ |
serPacketCounter = 0; |
} |
else |
{ |
if(++serPacketCounter == MotorAdresse) // (1-4) |
{ |
SIO_Sollwert = SioTmp; |
SIO_Timeout = 200; // werte für 200ms gültig |
} |
else |
{ |
if(serPacketCounter > 100) serPacketCounter = 100; |
} |
} |
#else |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; }; |
if(CrcOkay) // Datensatz schon verarbeitet |
{ |
//NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
uart_putchar(RxdBuffer[2]); |
if (RxdBuffer[2] == 't') // Motortest |
{ Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
SIO_Sollwert = MotorTest[MotorAdresse - 1]; |
SIO_Timeout = 500; // werte für 500ms gültig |
} |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
#endif |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); // serieller Empfangsinterrupt |
// TX-Interrupt Freigabe |
// UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR= (SYSCLK / (BAUD_RATE * 8L) -1 ); |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
Debug_Timer = SetDelay(200); |
// Version beim Start ausgeben (nicht schön, aber geht... ) |
uart_putchar ('\n');uart_putchar ('B');uart_putchar ('L');uart_putchar (':'); |
uart_putchar ('V');uart_putchar (0x30 + VERSION_HAUPTVERSION);uart_putchar ('.');uart_putchar (0x30 + VERSION_NEBENVERSION/10); uart_putchar (0x30 + VERSION_NEBENVERSION%10); |
uart_putchar ('\n');uart_putchar ('A');uart_putchar ('D');uart_putchar ('R'); uart_putchar (':'); uart_putchar (0x30 + MotorAdresse); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen)) // im Singlestep-Betrieb in jedem Schtitt senden |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
Debug_Timer = SetDelay(50); // Sendeintervall |
} |
} |
/branches/V0.37_neueStruktur/src/uart.h |
---|
0,0 → 1,82 |
#ifndef _UART_H |
#define _UART_H |
extern unsigned volatile char SIO_Sollwert; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned char MeineSlaveAdresse; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void SendUart(void); |
extern void DatenUebertragung(void); |
struct str_DebugOut |
{ |
unsigned char Digital[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned int Analog[8]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
//Die Baud_Rate der Seriellen Schnittstelle |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
#if X3D_SIO == 1 |
#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#else |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
#endif |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega8__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/branches/V0.41-Hexa/BLMC.c |
---|
0,0 → 1,235 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + Nur für den privaten Gebrauch |
// + Copyright (c) 12.2007 Holger Buss |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile unsigned char Phase = 0,ShadowTCCR1A = 0; |
volatile unsigned char CompFreigabeTimer = 100; |
volatile unsigned char CompInterruptFreigabe = 0; |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW2) |
//############################################################################ |
{ |
} |
//############################################################################ |
// + Interruptroutine |
// + Wird durch den Analogkomperator ausgelöst |
// + Dadurch wird das Kommutieren erzeugt |
SIGNAL(SIG_COMPARATOR) |
//############################################################################ |
{ |
unsigned char sense = 0; |
do |
{ |
if(SENSE_H) sense = 1; else sense = 0; |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
if(sense) |
{ |
STEUER_C_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_FALLING_INT; |
SENSE_B; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_L; |
} |
break; |
case 1: |
STEUER_C_L; |
if(!sense) |
{ |
STEUER_B_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_H; |
} |
break; |
case 2: |
STEUER_B_H; |
if(sense) |
{ |
STEUER_A_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_L; |
} |
break; |
case 3: |
STEUER_A_L; |
if(!sense) |
{ |
STEUER_C_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_B; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_H; |
} |
break; |
case 4: |
STEUER_C_H; |
if(sense) |
{ |
STEUER_B_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_L; |
} |
break; |
case 5: |
STEUER_B_L; |
if(!sense) |
{ |
STEUER_A_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_RISING_INT; |
Phase = 0; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_H; |
} |
break; |
} |
} |
while((SENSE_L && sense) || (SENSE_H && !sense)); |
ZeitZumAdWandeln = 0; |
} |
//############################################################################ |
// |
void Manuell(void) |
//############################################################################ |
{ |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
STEUER_B_L; |
SENSE_C; |
SENSE_RISING_INT; |
break; |
case 1: |
STEUER_A_H; |
STEUER_C_L; |
SENSE_B; |
SENSE_FALLING_INT; |
break; |
case 2: |
STEUER_B_H; |
STEUER_C_L; |
SENSE_A; |
SENSE_RISING_INT; |
break; |
case 3: |
STEUER_B_H; |
STEUER_A_L; |
SENSE_C; |
SENSE_FALLING_INT; |
break; |
case 4: |
STEUER_C_H; |
STEUER_A_L; |
SENSE_B; |
SENSE_RISING_INT; |
break; |
case 5: |
STEUER_C_H; |
STEUER_B_L; |
SENSE_A; |
SENSE_FALLING_INT; |
break; |
} |
} |
/branches/V0.41-Hexa/BLMC.h |
---|
0,0 → 1,97 |
/*############################################################################ |
############################################################################*/ |
#ifndef BLMC_H_ |
#define BLMC_H_ |
extern volatile unsigned char Phase; |
extern volatile unsigned char ShadowTCCR1A; |
extern volatile unsigned char CompInterruptFreigabe; |
void Blc(void); |
void Manuell(void); |
// anselm |
/* |
#define COM1A ((0 << COM1A0) | (1 << COM1A1)) // COM1A-> OC1A non inverting mode |
#define COM1B ((0 << COM1B0) | (1 << COM1B1)) // COM1B-> OC1B non inverting mode |
#define COM2 ((0 << COM20) | (1 << COM21)) // COM2-> OC2 non inverting mode |
#ifdef _32KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> fast PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (1 << WGM21) | (1 << CS20)) // WGM20:21-> fast PWM, no prescale |
#endif |
#ifdef _16KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> phase corr, PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (0 << WGM21) | (1 << CS20)) // WGM20:21-> phase corr. PWM, no prescale |
#endif |
#define PWM_C_ON {TCCR1A = COM1A | WGM1 | COM1B; TCCR2 = WGMCS2; |
DDRB = 0x02;} // Steuer_C+ output |
#define PWM_B_ON {TCCR1A = COM1B | WGM1 | COM1A; TCCR2 = WGMCS2; \ |
DDRB = 0x04;} // Steuer_B+ output |
#define PWM_A_ON {TCCR1A = WGM1; TCCR2 = COM2 | WGMCS2; \ |
DDRB = 0x08;} // Steuer_A+ output |
#define PWM_OFF {TCCR1A = WGM1; \ |
TCCR2 = WGMCS2; \ |
PORTB &= ~0x0E; DDRB = 0x0E;} // OC1x & OC2 disconnected, Steuer_X+ output low |
// anselm |
*/ |
#ifdef _32KHZ |
#define PWM_C_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xAD; TCCR2 = 0x69;DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x0D; TCCR2 = 0x49;PORTC &= ~0x0E;} |
#endif |
#ifdef _16KHZ |
// #define PWM_C_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0A;} |
// #define PWM_B_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0C;} |
// #define PWM_A_ON {TCCR1A = 0xA2; TCCR2 = 0x61; DDRB = 0x08;} |
// #define PWM_C_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0A;} else { TCCR1A = 0x81; DDRB = 0x0E;}} |
// #define PWM_B_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0C;} else { TCCR1A = 0x21; DDRB = 0x0E;}} |
// #define PWM_A_ON {TCCR2 = 0x61; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x08;} else { TCCR1A = 0x01; DDRB = 0x0E;}} |
#define PWM_C_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x02;} |
#define PWM_B_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x04;} |
#define PWM_A_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x08;} |
// #define PWM_C_ON {TCCR1A = 0x82; TCCR2 = 0x41; PORTB &= ~0x04; DDRB = 0x0E;} |
// #define PWM_B_ON {TCCR1A = 0x22; TCCR2 = 0x41; PORTB &= ~0x02; DDRB = 0x0E;} |
// #define PWM_A_ON {TCCR1A = 0x02; TCCR2 = 0x61; PORTB &= ~0x06; DDRB = 0x0E;} |
#define PWM_OFF {OCR1A = 0; OCR1B = 0; OCR2 = 0; TCCR1A = 0x01; TCCR2 = 0x41; DDRB = 0x0E; PORTB &= ~0x0E;} |
#endif |
#define STEUER_A_H {PWM_A_ON} |
#define STEUER_B_H {PWM_B_ON} |
#define STEUER_C_H {PWM_C_ON} |
#define STEUER_A_L {PORTD &= ~0x30; PORTD |= 0x08;} |
#define STEUER_B_L {PORTD &= ~0x28; PORTD |= 0x10;} |
#define STEUER_C_L {PORTD &= ~0x18; PORTD |= 0x20;} |
#define STEUER_OFF {PORTD &= ~0x38; PWM_OFF; } |
#define FETS_OFF {PORTD &= ~0x38; PORTB &= ~0x0E; } |
#define SENSE_A ADMUX = 0 | IntRef; |
#define SENSE_B ADMUX = 1 | IntRef; |
#define SENSE_C ADMUX = 2 | IntRef; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
#define ENABLE_SENSE_INT {CompInterruptFreigabe = 1;ACSR |= 0x0A; } |
#define DISABLE_SENSE_INT {CompInterruptFreigabe = 0; ACSR &= ~0x08; } |
#define SENSE_FALLING_INT ACSR &= ~0x01 |
#define SENSE_RISING_INT ACSR |= 0x03 |
#define SENSE_TOGGLE_INT ACSR &= ~0x03 |
#endif //BLMC_H_ |
/branches/V0.41-Hexa/BLMC.lst |
---|
0,0 → 1,532 |
1 .file "BLMC.c" |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __CCP__ = 0x34 |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
15 .Ltext0: |
16 .global __vector_4 |
18 __vector_4: |
19 .LFB3: |
20 .LM1: |
21 0000 1F92 push __zero_reg__ |
22 0002 0F92 push r0 |
23 0004 0FB6 in r0,__SREG__ |
24 0006 0F92 push r0 |
25 0008 1124 clr __zero_reg__ |
26 /* prologue: Signal */ |
27 /* frame size = 0 */ |
28 /* epilogue start */ |
29 .LM2: |
30 000a 0F90 pop r0 |
31 000c 0FBE out __SREG__,r0 |
32 000e 0F90 pop r0 |
33 0010 1F90 pop __zero_reg__ |
34 0012 1895 reti |
35 .LFE3: |
37 .global Manuell |
39 Manuell: |
40 .LFB5: |
41 .LM3: |
42 /* prologue: function */ |
43 /* frame size = 0 */ |
44 .LM4: |
45 0014 8091 0000 lds r24,Phase |
46 0018 8230 cpi r24,lo8(2) |
47 001a 01F0 breq .L7 |
48 001c 8330 cpi r24,lo8(3) |
49 001e 00F4 brsh .L11 |
50 0020 8823 tst r24 |
51 0022 01F0 breq .L5 |
52 0024 8130 cpi r24,lo8(1) |
53 0026 01F0 breq .+2 |
54 0028 00C0 rjmp .L12 |
55 002a 00C0 rjmp .L15 |
56 .L11: |
57 002c 8430 cpi r24,lo8(4) |
58 002e 01F4 brne .+2 |
59 0030 00C0 rjmp .L9 |
60 0032 8430 cpi r24,lo8(4) |
61 0034 00F0 brlo .L8 |
62 0036 8530 cpi r24,lo8(5) |
63 0038 01F0 breq .+2 |
64 003a 00C0 rjmp .L12 |
65 003c 00C0 rjmp .L16 |
66 .L5: |
67 .LM5: |
68 003e 81EA ldi r24,lo8(-95) |
69 0040 8FBD out 79-32,r24 |
70 0042 81E6 ldi r24,lo8(97) |
71 0044 85BD out 69-32,r24 |
72 0046 88E0 ldi r24,lo8(8) |
73 0048 87BB out 55-32,r24 |
74 .LM6: |
75 004a 82B3 in r24,50-32 |
76 004c 877D andi r24,lo8(-41) |
77 004e 82BB out 50-32,r24 |
78 0050 949A sbi 50-32,4 |
79 .LM7: |
80 0052 8091 0000 lds r24,IntRef |
81 0056 8260 ori r24,lo8(2) |
82 0058 00C0 rjmp .L13 |
83 .L15: |
84 .LM8: |
85 005a 81EA ldi r24,lo8(-95) |
86 005c 8FBD out 79-32,r24 |
87 005e 81E6 ldi r24,lo8(97) |
88 0060 85BD out 69-32,r24 |
89 0062 88E0 ldi r24,lo8(8) |
90 0064 87BB out 55-32,r24 |
91 .LM9: |
92 0066 82B3 in r24,50-32 |
93 0068 877E andi r24,lo8(-25) |
94 006a 82BB out 50-32,r24 |
95 006c 959A sbi 50-32,5 |
96 .LM10: |
97 006e 8091 0000 lds r24,IntRef |
98 0072 8160 ori r24,lo8(1) |
99 0074 00C0 rjmp .L14 |
100 .L7: |
101 .LM11: |
102 0076 81EA ldi r24,lo8(-95) |
103 0078 8FBD out 79-32,r24 |
104 007a 81E6 ldi r24,lo8(97) |
105 007c 85BD out 69-32,r24 |
106 007e 84E0 ldi r24,lo8(4) |
107 0080 87BB out 55-32,r24 |
108 .LM12: |
109 0082 82B3 in r24,50-32 |
110 0084 877E andi r24,lo8(-25) |
111 0086 82BB out 50-32,r24 |
112 0088 959A sbi 50-32,5 |
113 .LM13: |
114 008a 8091 0000 lds r24,IntRef |
115 008e 00C0 rjmp .L13 |
116 .L8: |
117 .LM14: |
118 0090 81EA ldi r24,lo8(-95) |
119 0092 8FBD out 79-32,r24 |
120 0094 81E6 ldi r24,lo8(97) |
121 0096 85BD out 69-32,r24 |
122 0098 84E0 ldi r24,lo8(4) |
123 009a 87BB out 55-32,r24 |
124 .LM15: |
125 009c 82B3 in r24,50-32 |
126 009e 8F7C andi r24,lo8(-49) |
127 00a0 82BB out 50-32,r24 |
128 00a2 939A sbi 50-32,3 |
129 .LM16: |
130 00a4 8091 0000 lds r24,IntRef |
131 00a8 8260 ori r24,lo8(2) |
132 .L14: |
133 00aa 87B9 out 39-32,r24 |
134 .LM17: |
135 00ac 4098 cbi 40-32,0 |
136 00ae 0895 ret |
137 .L9: |
138 .LM18: |
139 00b0 81EA ldi r24,lo8(-95) |
140 00b2 8FBD out 79-32,r24 |
141 00b4 81E6 ldi r24,lo8(97) |
142 00b6 85BD out 69-32,r24 |
143 00b8 82E0 ldi r24,lo8(2) |
144 00ba 87BB out 55-32,r24 |
145 .LM19: |
146 00bc 82B3 in r24,50-32 |
147 00be 8F7C andi r24,lo8(-49) |
148 00c0 82BB out 50-32,r24 |
149 00c2 939A sbi 50-32,3 |
150 .LM20: |
151 00c4 8091 0000 lds r24,IntRef |
152 00c8 8160 ori r24,lo8(1) |
153 .L13: |
154 00ca 87B9 out 39-32,r24 |
155 .LM21: |
156 00cc 88B1 in r24,40-32 |
157 00ce 8360 ori r24,lo8(3) |
158 00d0 88B9 out 40-32,r24 |
159 00d2 0895 ret |
160 .L16: |
161 .LM22: |
162 00d4 81EA ldi r24,lo8(-95) |
163 00d6 8FBD out 79-32,r24 |
164 00d8 81E6 ldi r24,lo8(97) |
165 00da 85BD out 69-32,r24 |
166 00dc 82E0 ldi r24,lo8(2) |
167 00de 87BB out 55-32,r24 |
168 .LM23: |
169 00e0 82B3 in r24,50-32 |
170 00e2 877D andi r24,lo8(-41) |
171 00e4 82BB out 50-32,r24 |
172 00e6 949A sbi 50-32,4 |
173 .LM24: |
174 00e8 8091 0000 lds r24,IntRef |
175 00ec 87B9 out 39-32,r24 |
176 .LM25: |
177 00ee 4098 cbi 40-32,0 |
178 .L12: |
179 00f0 0895 ret |
180 .LFE5: |
182 .global __vector_16 |
184 __vector_16: |
185 .LFB4: |
186 .LM26: |
187 00f2 1F92 push __zero_reg__ |
188 00f4 0F92 push r0 |
189 00f6 0FB6 in r0,__SREG__ |
190 00f8 0F92 push r0 |
191 00fa 1124 clr __zero_reg__ |
192 00fc CF92 push r12 |
193 00fe DF92 push r13 |
194 0100 EF92 push r14 |
195 0102 FF92 push r15 |
196 0104 0F93 push r16 |
197 0106 1F93 push r17 |
198 0108 2F93 push r18 |
199 010a 3F93 push r19 |
200 010c 4F93 push r20 |
201 010e 5F93 push r21 |
202 0110 6F93 push r22 |
203 0112 7F93 push r23 |
204 0114 8F93 push r24 |
205 0116 9F93 push r25 |
206 0118 AF93 push r26 |
207 011a BF93 push r27 |
208 011c EF93 push r30 |
209 011e FF93 push r31 |
210 /* prologue: Signal */ |
211 /* frame size = 0 */ |
212 .LM27: |
213 0120 61EA ldi r22,lo8(-95) |
214 0122 F62E mov r15,r22 |
215 0124 01E6 ldi r16,lo8(97) |
216 0126 52E0 ldi r21,lo8(2) |
217 0128 C52E mov r12,r21 |
218 .LM28: |
219 012a 44E0 ldi r20,lo8(4) |
220 012c D42E mov r13,r20 |
221 .LM29: |
222 012e 38E0 ldi r19,lo8(8) |
223 0130 E32E mov r14,r19 |
224 .LVL0: |
225 .L44: |
226 .LM30: |
227 0132 88B1 in r24,40-32 |
228 0134 90E0 ldi r25,lo8(0) |
229 0136 25E0 ldi r18,5 |
230 0138 9695 1: lsr r25 |
231 013a 8795 ror r24 |
232 013c 2A95 dec r18 |
233 013e 01F4 brne 1b |
234 0140 182F mov r17,r24 |
235 0142 1170 andi r17,lo8(1) |
236 .LM31: |
237 0144 8091 0000 lds r24,Phase |
238 0148 8230 cpi r24,lo8(2) |
239 014a 01F4 brne .+2 |
240 014c 00C0 rjmp .L21 |
241 014e 8330 cpi r24,lo8(3) |
242 0150 00F4 brsh .L25 |
243 0152 8823 tst r24 |
244 0154 01F0 breq .L19 |
245 0156 8130 cpi r24,lo8(1) |
246 0158 01F0 breq .+2 |
247 015a 00C0 rjmp .L18 |
248 015c 00C0 rjmp .L49 |
249 .L25: |
250 015e 8430 cpi r24,lo8(4) |
251 0160 01F4 brne .+2 |
252 0162 00C0 rjmp .L23 |
253 0164 8430 cpi r24,lo8(4) |
254 0166 00F4 brsh .+2 |
255 0168 00C0 rjmp .L22 |
256 016a 8530 cpi r24,lo8(5) |
257 016c 01F0 breq .+2 |
258 016e 00C0 rjmp .L18 |
259 0170 00C0 rjmp .L50 |
260 .L19: |
261 .LM32: |
262 0172 FFBC out 79-32,r15 |
263 0174 05BD out 69-32,r16 |
264 0176 E7BA out 55-32,r14 |
265 .LM33: |
266 0178 1123 tst r17 |
267 017a 01F0 breq .L26 |
268 .LM34: |
269 017c 82B3 in r24,50-32 |
270 017e 877E andi r24,lo8(-25) |
271 0180 82BB out 50-32,r24 |
272 0182 959A sbi 50-32,5 |
273 .LM35: |
274 0184 8091 0000 lds r24,ZeitZumAdWandeln |
275 0188 8111 cpse r24,__zero_reg__ |
276 018a 00D0 rcall AdConvert |
277 .L27: |
278 .LM36: |
279 018c 4098 cbi 40-32,0 |
280 .LM37: |
281 018e 8091 0000 lds r24,IntRef |
282 0192 8160 ori r24,lo8(1) |
283 0194 87B9 out 39-32,r24 |
284 0196 00C0 rjmp .L45 |
285 .L26: |
286 .LM38: |
287 0198 82B3 in r24,50-32 |
288 019a 877D andi r24,lo8(-41) |
289 019c 82BB out 50-32,r24 |
290 019e 949A sbi 50-32,4 |
291 01a0 00C0 rjmp .L18 |
292 .L49: |
293 .LM39: |
294 01a2 82B3 in r24,50-32 |
295 01a4 877E andi r24,lo8(-25) |
296 01a6 82BB out 50-32,r24 |
297 01a8 959A sbi 50-32,5 |
298 .LM40: |
299 01aa 1123 tst r17 |
300 01ac 01F4 brne .L28 |
301 .LM41: |
302 01ae FFBC out 79-32,r15 |
303 01b0 05BD out 69-32,r16 |
304 01b2 D7BA out 55-32,r13 |
305 .LM42: |
306 01b4 8091 0000 lds r24,ZeitZumAdWandeln |
307 01b8 8111 cpse r24,__zero_reg__ |
308 01ba 00D0 rcall AdConvert |
309 .L29: |
310 .LM43: |
311 01bc 8091 0000 lds r24,IntRef |
312 .L48: |
313 01c0 87B9 out 39-32,r24 |
314 .LM44: |
315 01c2 88B1 in r24,40-32 |
316 01c4 8360 ori r24,lo8(3) |
317 01c6 88B9 out 40-32,r24 |
318 .L45: |
319 .LM45: |
320 01c8 8091 0000 lds r24,Phase |
321 01cc 8F5F subi r24,lo8(-(1)) |
322 01ce 8093 0000 sts Phase,r24 |
323 .L46: |
324 .LM46: |
325 01d2 8091 0000 lds r24,CntKommutierungen |
326 01d6 9091 0000 lds r25,(CntKommutierungen)+1 |
327 01da 0196 adiw r24,1 |
328 01dc 9093 0000 sts (CntKommutierungen)+1,r25 |
329 01e0 8093 0000 sts CntKommutierungen,r24 |
330 01e4 00C0 rjmp .L18 |
331 .L28: |
332 .LM47: |
333 01e6 FFBC out 79-32,r15 |
334 01e8 05BD out 69-32,r16 |
335 01ea E7BA out 55-32,r14 |
336 01ec 00C0 rjmp .L18 |
337 .L21: |
338 .LM48: |
339 01ee FFBC out 79-32,r15 |
340 01f0 05BD out 69-32,r16 |
341 01f2 D7BA out 55-32,r13 |
342 .LM49: |
343 01f4 1123 tst r17 |
344 01f6 01F0 breq .L30 |
345 .LM50: |
346 01f8 82B3 in r24,50-32 |
347 01fa 8F7C andi r24,lo8(-49) |
348 01fc 82BB out 50-32,r24 |
349 01fe 939A sbi 50-32,3 |
350 .LM51: |
351 0200 8091 0000 lds r24,ZeitZumAdWandeln |
352 0204 8111 cpse r24,__zero_reg__ |
353 0206 00D0 rcall AdConvert |
354 .L31: |
355 .LM52: |
356 0208 8091 0000 lds r24,IntRef |
357 020c 8260 ori r24,lo8(2) |
358 020e 00C0 rjmp .L47 |
359 .L30: |
360 .LM53: |
361 0210 82B3 in r24,50-32 |
362 0212 877E andi r24,lo8(-25) |
363 0214 82BB out 50-32,r24 |
364 0216 959A sbi 50-32,5 |
365 0218 00C0 rjmp .L18 |
366 .L22: |
367 .LM54: |
368 021a 82B3 in r24,50-32 |
369 021c 8F7C andi r24,lo8(-49) |
370 021e 82BB out 50-32,r24 |
371 0220 939A sbi 50-32,3 |
372 .LM55: |
373 0222 1123 tst r17 |
374 0224 01F4 brne .L32 |
375 .LM56: |
376 0226 FFBC out 79-32,r15 |
377 0228 05BD out 69-32,r16 |
378 022a C7BA out 55-32,r12 |
379 .LM57: |
380 022c 8091 0000 lds r24,ZeitZumAdWandeln |
381 0230 8111 cpse r24,__zero_reg__ |
382 0232 00D0 rcall AdConvert |
383 .L33: |
384 .LM58: |
385 0234 8091 0000 lds r24,IntRef |
386 0238 8160 ori r24,lo8(1) |
387 023a 00C0 rjmp .L48 |
388 .L32: |
389 .LM59: |
390 023c FFBC out 79-32,r15 |
391 023e 05BD out 69-32,r16 |
392 0240 D7BA out 55-32,r13 |
393 0242 00C0 rjmp .L18 |
394 .L23: |
395 .LM60: |
396 0244 FFBC out 79-32,r15 |
397 0246 05BD out 69-32,r16 |
398 0248 C7BA out 55-32,r12 |
399 .LM61: |
400 024a 1123 tst r17 |
401 024c 01F0 breq .L34 |
402 .LM62: |
403 024e 82B3 in r24,50-32 |
404 0250 877D andi r24,lo8(-41) |
405 0252 82BB out 50-32,r24 |
406 0254 949A sbi 50-32,4 |
407 .LM63: |
408 0256 8091 0000 lds r24,ZeitZumAdWandeln |
409 025a 8111 cpse r24,__zero_reg__ |
410 025c 00D0 rcall AdConvert |
411 .L35: |
412 .LM64: |
413 025e 8091 0000 lds r24,IntRef |
414 .L47: |
415 0262 87B9 out 39-32,r24 |
416 .LM65: |
417 0264 4098 cbi 40-32,0 |
418 0266 00C0 rjmp .L45 |
419 .L34: |
420 .LM66: |
421 0268 82B3 in r24,50-32 |
422 026a 8F7C andi r24,lo8(-49) |
423 026c 82BB out 50-32,r24 |
424 026e 939A sbi 50-32,3 |
425 0270 00C0 rjmp .L18 |
426 .L50: |
427 .LM67: |
428 0272 82B3 in r24,50-32 |
429 0274 877D andi r24,lo8(-41) |
430 0276 82BB out 50-32,r24 |
431 0278 949A sbi 50-32,4 |
432 .LM68: |
433 027a 1123 tst r17 |
434 027c 01F4 brne .L36 |
435 .LM69: |
436 027e FFBC out 79-32,r15 |
437 0280 05BD out 69-32,r16 |
438 0282 E7BA out 55-32,r14 |
439 .LM70: |
440 0284 8091 0000 lds r24,ZeitZumAdWandeln |
441 0288 8111 cpse r24,__zero_reg__ |
442 028a 00D0 rcall AdConvert |
443 .L37: |
444 .LM71: |
445 028c 8091 0000 lds r24,IntRef |
446 0290 8260 ori r24,lo8(2) |
447 0292 87B9 out 39-32,r24 |
448 .LM72: |
449 0294 88B1 in r24,40-32 |
450 0296 8360 ori r24,lo8(3) |
451 0298 88B9 out 40-32,r24 |
452 .LM73: |
453 029a 1092 0000 sts Phase,__zero_reg__ |
454 029e 00C0 rjmp .L46 |
455 .L36: |
456 .LM74: |
457 02a0 FFBC out 79-32,r15 |
458 02a2 05BD out 69-32,r16 |
459 02a4 C7BA out 55-32,r12 |
460 .L18: |
461 .LM75: |
462 02a6 4599 sbic 40-32,5 |
463 02a8 00C0 rjmp .L38 |
464 02aa 1123 tst r17 |
465 02ac 01F0 breq .+2 |
466 02ae 00C0 rjmp .L44 |
467 .L38: |
468 02b0 459B sbis 40-32,5 |
469 02b2 00C0 rjmp .L40 |
470 02b4 1123 tst r17 |
471 02b6 01F4 brne .+2 |
472 02b8 00C0 rjmp .L44 |
473 .L40: |
474 .LM76: |
475 02ba 1092 0000 sts ZeitZumAdWandeln,__zero_reg__ |
476 /* epilogue start */ |
477 .LM77: |
478 02be FF91 pop r31 |
479 02c0 EF91 pop r30 |
480 02c2 BF91 pop r27 |
481 02c4 AF91 pop r26 |
482 02c6 9F91 pop r25 |
483 02c8 8F91 pop r24 |
484 02ca 7F91 pop r23 |
485 02cc 6F91 pop r22 |
486 02ce 5F91 pop r21 |
487 02d0 4F91 pop r20 |
488 02d2 3F91 pop r19 |
489 02d4 2F91 pop r18 |
490 02d6 1F91 pop r17 |
491 .LVL1: |
492 02d8 0F91 pop r16 |
493 02da FF90 pop r15 |
494 02dc EF90 pop r14 |
495 02de DF90 pop r13 |
496 02e0 CF90 pop r12 |
497 02e2 0F90 pop r0 |
498 02e4 0FBE out __SREG__,r0 |
499 02e6 0F90 pop r0 |
500 02e8 1F90 pop __zero_reg__ |
501 02ea 1895 reti |
502 .LFE4: |
504 .global Phase |
505 .global Phase |
506 .section .bss |
509 Phase: |
510 0000 00 .skip 1,0 |
511 .global ShadowTCCR1A |
512 .global ShadowTCCR1A |
515 ShadowTCCR1A: |
516 0001 00 .skip 1,0 |
517 .global CompFreigabeTimer |
518 .data |
521 CompFreigabeTimer: |
522 0000 64 .byte 100 |
523 .global CompInterruptFreigabe |
524 .global CompInterruptFreigabe |
525 .section .bss |
528 CompInterruptFreigabe: |
529 0002 00 .skip 1,0 |
570 .Letext0: |
DEFINED SYMBOLS |
*ABS*:00000000 BLMC.c |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:2 *ABS*:0000003f __SREG__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:3 *ABS*:0000003e __SP_H__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:4 *ABS*:0000003d __SP_L__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:5 *ABS*:00000034 __CCP__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:18 .text:00000000 __vector_4 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:39 .text:00000014 Manuell |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:509 .bss:00000000 Phase |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:184 .text:000000f2 __vector_16 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:515 .bss:00000001 ShadowTCCR1A |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:521 .data:00000000 CompFreigabeTimer |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccK1BcMH.s:528 .bss:00000002 CompInterruptFreigabe |
UNDEFINED SYMBOLS |
IntRef |
ZeitZumAdWandeln |
AdConvert |
CntKommutierungen |
__do_copy_data |
__do_clear_bss |
/branches/V0.41-Hexa/BL_Ctrl.pnproj |
---|
0,0 → 1,0 |
<Project name="avr_ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="analog.h"></File><File path="analog.c"></File><File path="PPM_Decode.c"></File><File path="PPM_Decode.h"></File><File path="twislave.c"></File><File path="twislave.h"></File><File path="BLMC.c"></File><File path="BLMC.h"></File></Project> |
/branches/V0.41-Hexa/BL_Ctrl.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="avr_ctrl" x="true"></e></ViewState></pd> |
/branches/V0.41-Hexa/BrushLess-Ctrl_V0_41_10A.eep |
---|
0,0 → 1,0 |
:00000001FF |
/branches/V0.41-Hexa/BrushLess-Ctrl_V0_41_10A.elf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/V0.41-Hexa/BrushLess-Ctrl_V0_41_10A.hex |
---|
0,0 → 1,448 |
:1000000012C050CA2BC02AC0B5CAB5C927C026C065 |
:10001000A1C9A9C823C065C721C03AC61FC01EC058 |
:1000200022CB57CA1BC011241FBECFE5D4E0DEBFD0 |
:10003000CDBF10E0A0E6B0E0EAECFBE102C0059025 |
:100040000D92A837B107D9F713E0A8E7B0E001C0D7 |
:100050001D92A03AB107E1F746D4B5CDD1CF40917A |
:10006000780080916400841710F4AB9A482F209197 |
:100070007A0030917B00293C3105C8F01BBC1ABCCA |
:1000800019BC18BC13BC82B3877C82BBAB9A80912D |
:100090009003909191030196909391038093900324 |
:1000A0002150304030937B0020937A000895842FB4 |
:1000B00090E09BBD8ABD99BD88BD43BD0895E4E82D |
:1000C000F3E080917A0090917B0090938503809378 |
:1000D000840380917D0080938603138280918B003E |
:1000E00090918C0090938903809388038091A50060 |
:1000F0009091A60090938B0380938A0383B580939D |
:100100008C03118608951BBC1ABC19BC18BC13BC07 |
:1001100091E09FBD81E485BD8EE087BB88B3817F80 |
:1001200088BB9EBD089592B7980F82B7891B87FD43 |
:10013000FCCF089501C001970097E9F780E008958A |
:100140008091800090918100892B09F059C08091A5 |
:10015000820090918300892B99F0909190008FEF0D |
:10016000989FC001112468EC70E086DB70938F00CB |
:1001700060938E001092670089B78F7D89BF31C070 |
:100180008091A900853178F181E08093670020910A |
:10019000A5003091A60041E02D32340730F4293C0F |
:1001A000310540F42B30310538F410928F00109255 |
:1001B0008E0017C028EC30E08CEF90E0AC01249F5B |
:1001C000C001259F900D349F900D1124885D9940AA |
:1001D00064EB70E051DB6D5F7F4F70938F00609335 |
:1001E0008E00AB9819C080918E0090918F0000977F |
:1001F00029F0019790938F0080938E00AB9A0CC0EA |
:100200008091950380938E0010928F00109267006A |
:10021000AB9889B78F7D89BF80918E0090918F00B8 |
:100220008F3F910539F030F08FEF90E090938F0081 |
:1002300080938E0080918E000895CF93DF93EC0120 |
:1002400017C05FD821978091B5029091B602885867 |
:100250009F4F20917A0030917B008217930740F4E2 |
:1002600082B3877C82BB88B3817F88BB81E003C077 |
:10027000209739F780E0DF91CF9108951F93182FD1 |
:10028000789409C0AB9A8CE291E0D2D7AB988CE21B |
:1002900091E0CED711501123A9F788EE93E0C8D78B |
:1002A0001F910895AF92BF92DF92EF92FF920F934A |
:1002B0001F93DF93CF93CDB7DEB727970FB6F89490 |
:1002C000DEBF0FBECDBFDE011196E8E6F0E087E0AD |
:1002D00001900D928150E1F7AB9880916600FE018C |
:1002E000E80FF11D818190E02CE231E0AC01429FEA |
:1002F000C001439F900D529F900D112499D71092E9 |
:10030000B1004398F8948AE0DFD582B3877C82BB42 |
:100310001BBC1ABC19BC18BC13BC81E08FBD81E4A6 |
:1003200085BD8EE087BB88B3817F88BB10927C003F |
:1003300082E390E082DF80917C008093B50210928E |
:10034000B60210927B0010927A008CB1803231F0AC |
:1003500038EEE32E33E0F32E82E306C08FE5B4D50A |
:10036000EE24EA94FE2C88E210927B0010927A0030 |
:1003700000E010E0A82EBB24939A81E090E05DDFBE |
:1003800082B3877C82BB88B3817F88BBC39A81E0BC |
:1003900090E053DF82B3877C82BB88B3817F88BBC8 |
:1003A0008091B5029091B6028A0D9B1D20917A0032 |
:1003B00030917B008217930738F00F5F1F4F0E15A7 |
:1003C0001F05D0F2DD240AC084E37ED582B3877C8A |
:1003D00082BB88B3817F88BB24E0D22E80E197E284 |
:1003E00000C001975FEF8F3F9507D9F710927B0010 |
:1003F00010927A0000E010E0949A81E090E01DDF16 |
:1004000082B3877C82BB88B3817F88BBC29A81E03C |
:1004100090E013DF82B3877C82BB88B3817F88BB87 |
:100420008091B5029091B6028A0D9B1D20917A00B1 |
:1004300030917B008217930730F00F5F1F4F0E152E |
:100440001F05D0F20AC085E33FD582B3877C82BB0B |
:1004500088B3817F88BB95E0D92E10927B001092E3 |
:100460007A0080E197E200C001972FEF8F3F92075B |
:10047000D9F700E010E0959A81E090E0DEDE82B3EB |
:10048000877C82BB88B3817F88BBC19A81E090E082 |
:10049000D4DE82B3877C82BB88B3817F88BB8091A6 |
:1004A000B5029091B6028A0D9B1D20917A00309181 |
:1004B0007B008217930730F00F5F1F4F0E151F054B |
:1004C000D0F20BC086E300D582B3877C82BB88B3B1 |
:1004D000817F88BB86E0D82E02C0DD2019F08D2DEB |
:1004E000CDDEFDCF80918D0087B982B3877C82BB42 |
:1004F00088B3817F88BB949A959A10927B00109262 |
:100500007A0000E010E0FF24C39A80E0E5D6C397AC |
:1005100018F041E0F42A02C05EEFF52218BA8CE22E |
:1005200091E000C001972FEF8F3F9207D9F70F5F3F |
:100530001F4F0937110541F782B3877C82BB88B30F |
:10054000817F88BB939A959A00E010E0C29A81E07F |
:10055000C3D6C39718F042E0F42A02C05DEFF5223B |
:1005600018BA8CE291E000C001972FEF8F3F9207FD |
:10057000D9F70F5F1F4F0538110541F782B3877C0C |
:1005800082BB88B3817F88BB939A949A00E010E085 |
:10059000C19A82E0A1D6C39718F044E0F42A02C0C1 |
:1005A0005BEFF52218BA8AE491E000C001972FEFC3 |
:1005B0008F3F9207D9F70F5F1F4F0F36110541F795 |
:1005C00082B3877C82BB88B3817F88BB939A00E02B |
:1005D00010E0C29A80E080D68138910518F047EF8C |
:1005E000F42202C058E0F52A18BA8AE491E000C06B |
:1005F00001972FEF8F3F9207D9F70F5F1F4F0937F2 |
:10060000110539F7959A00E010E0C29A82E064D6AD |
:100610008138910518F04FEDF42202C050E2F52A1E |
:1006200018BA88E691E000C001972FEF8F3F92073C |
:10063000D9F70F5F1F4F0538110539F782B3877C53 |
:1006400082BB88B3817F88BB82B3877C82BB88B33F |
:10065000817F88BB949A00E010E0C19A81E03CD68B |
:100660008138910518F04FEEF42202C050E1F52ACE |
:1006700018BA88E691E000C001972FEF8F3F9207EC |
:10068000D9F70F5F1F4F0F36110539F782B3877CFB |
:1006900082BB88B3817F88BB789480916600FE011D |
:1006A000E80FF11D218183E090E0821B91092CE28B |
:1006B00031E0AC01429FC001439F900D529F900DCD |
:1006C0001124B6D5F0FC04C081E48CB911E01DC042 |
:1006D000F1FC04C082E48CB912E017C0F2FC04C043 |
:1006E00083E48CB913E011C0F3FC04C081E68CB93B |
:1006F00014E00BC0F4FC04C082E68CB915E005C020 |
:10070000F5FC06C083E68CB916E0812FB7DDFDCF7E |
:1007100080E0B4DD8EE2D8D327960FB6F894DEBF22 |
:100720000FBECDBFCF91DF911F910F91FF90EF9042 |
:10073000DF90BF90AF9008956F927F929F92AF929B |
:10074000BF92CF92DF92EF92FF920F931F93CF93BE |
:10075000DF93982E1092B100439885E090E090933B |
:100760007900809378007BDC0FD78CE291E04CD548 |
:100770009093B4028093B30209C0C3D580917A00EC |
:1007800090917B008937910508F05CC08091B3029D |
:100790009091B40243D5882381F39092780010920F |
:1007A00079005CE2A52E51E0B52EC12CD12CC6E813 |
:1007B000D3E046E0642E712C6C0E7D1EEE24FF24E7 |
:1007C000870180916F00882311F46CD201C06ED430 |
:1007D00082B78C59982F82B7891B87FDFCCF08946C |
:1007E000E11CF11C011D111DEA14FB040C051D0583 |
:1007F00040F380917A0090917B00909385038093E1 |
:10080000840380917D0080938603198280918B0000 |
:1008100090918C0090938903809388038091A50028 |
:100820009091A60090938B0380938A0383B5809365 |
:100830008C03F301118265D580917A0090917B0041 |
:10084000CD97A8F082B3877C82BB1BBC1ABC19BCB5 |
:1008500018BC13BC81E08FBD81E485BD8EE087BBF1 |
:1008600088B3817F88BB8AE009DD80E02EC0C601A5 |
:10087000B5012FE030E040E050E012D820953095EF |
:1008800040955095A20EB31EC41ED51EF9E1AF16B9 |
:10089000B104C104D104C0F077D68091AF008F5F5E |
:1008A0008093AF008091AF0066E0DAD79093AF00FD |
:1008B000DCD49092780010927900D1DB449B7ECFFB |
:1008C00082B3805882BB7ACF81E0DF91CF911F91B4 |
:1008D0000F91FF90EF90DF90CF90BF90AF909F90DF |
:1008E0007F906F9008955F926F927F928F929F9208 |
:1008F000AF92BF92CF92DF92EF92FF920F931F932E |
:10090000CF93DF9388E084BB85BB8AE381BB12BAB7 |
:100910008EE087BB81E388BB88B3806C88BBB69BC5 |
:1009200006C0B79B02C081E007C082E005C0B79B4C |
:1009300002C083E001C084E0809366008BE0809376 |
:10094000B200879B06C08CE08093B20080EC80935D |
:100950008D008AEB81BBC4D34ED47894D4DB80E580 |
:10096000B0D5EBD485E690E04FD486E690E04CD449 |
:1009700087E690E049D49093B4028093B3028EEF5F |
:1009800090E042D46C018DEE93E03ED4EC018EEE0B |
:1009900093E03AD403C0D4DB882339F48091B302C6 |
:1009A0009091B4023BD48823B1F38091B2008C3093 |
:1009B00010F4979A01C097981092790010927800DD |
:1009C0004EDB88E080BF81E087B98AE090E01CD4EC |
:1009D0009093B4028093B30281E090E090938703F8 |
:1009E000809386031092A6001092A500A9DB8823AD |
:1009F00009F458DC81E388BB10E0FF24F394F1E4B0 |
:100A0000EF2EEEE05E2E71E0672E712C6FE0862EE9 |
:100A1000912C01C0102F94DB809378001092790004 |
:100A20000091AF00011769F010926300109262000C |
:100A30008AEF90E0E9D39093B4028093B3020091DF |
:100A4000AF008091780090917900892BE1F41092A9 |
:100A5000880010926200C501E1D38823F1F0109262 |
:100A6000B1004398F092630082B3877C82BB1BBCC9 |
:100A70001ABC19BC18BC13BCFFBCE5BC57BA88B380 |
:100A8000817F88BB0AC080916300882311F0F092B7 |
:100A900088008CED95E0B8D35C01809163008823D9 |
:100AA00021F01092790010927800D9DA80916200DA |
:100AB0008F5F80936200815009F0ACCF809163001A |
:100AC000882341F08091B2008C3010F4979A01C0D5 |
:100AD000979817D4C601A2D38823A9F182E390E0A6 |
:100AE00093D36C0180917D00482F50E020917A00D3 |
:100AF00030917B004217530710F48F5F04C0241716 |
:100B0000350718F4815080937D00293C310548F069 |
:100B100080916400982F929596959770891B809389 |
:100B2000640080917D0090916400893738F09923AA |
:100B300019F0915090936400AB9A05C09F3F19F053 |
:100B40009F5F90936400CE0169D3882391F08AE07F |
:100B500090E05AD3EC018091890090918A009093A3 |
:100B60008C0080938B0010928A0010928900F09282 |
:100B700065008091B3029091B40250D3882331F084 |
:100B800080918B0090918C00892B29F080918800B6 |
:100B9000882309F43FCFF09263001092B10043988C |
:100BA00084E690E031D39093B4028093B3028091B5 |
:100BB0008800882309F42ECFAB9810927C00109205 |
:100BC00088008AE0B9DD882309F45BC08091B20017 |
:100BD0008C3010F4979A01C097981092630080911E |
:100BE000AF0081508093AF007092790060927800DE |
:100BF00036DA88B18C7F88B9F092B10088B18A600A |
:100C000088B984E190E000D39093B4028093B3025A |
:100C10008091B3029091B40201D38823C9F39092DA |
:100C20007900809278001BDA8CE291E0EDD290930B |
:100C3000B4028093B30218C080917A0090917B0037 |
:100C4000CD9790F082B3877C82BB1BBC1ABC19BCC9 |
:100C500018BC13BCFFBCE5BC57BA88B3817F88BB06 |
:100C60008AE00CDBF09288008091B3029091B4028C |
:100C7000D5D2882309F382E390E0C6D2EC0107E0E5 |
:100C8000C9CE5EDA882309F4C5CEF0928800C2CEC0 |
:100C90001F920F920FB60F9211240F900FBE0F905C |
:100CA0001F9018955E9B24C080916F008823E1F40B |
:100CB0008091A0009091A10001969093A100809353 |
:100CC000A000FC01E854FD4FE081ED3019F08436BE |
:100CD000910539F41092A1001092A00081E0809358 |
:100CE0006F00589AECB908951092A1001092A000DC |
:100CF00008951F93CF93DF93EC0170E0A22FB0E033 |
:100D0000119748C0E42FF0E0E25EFC4F30814F5F66 |
:100D1000E42FF0E0E25EFC4F50814F5FE42FF0E003 |
:100D2000E25EFC4F10814F5FE42FF0E0E25EFC4F8B |
:100D300020814F5F842F90E08A179B0774F55D53E5 |
:100D4000FE01E70FF11D852F82958F703D53330F04 |
:100D5000330F382B3083613001F1912F9D537F5F2A |
:100D6000FE01E70FF11D71505295507F892F869536 |
:100D70008695582B5083623081F063507E5FFE0170 |
:100D8000E70FF11D9295990F990F907C2D53922B9F |
:100D900090837F5F662309F0B5CFDF91CF911F91DC |
:100DA0000895DC0120E030E040E050E008C0FA01A6 |
:100DB000E854FD4F8081280F311D4F5F5F4F4A1768 |
:100DC0005B07A8F33F70C90136E0969587953A9581 |
:100DD000E1F7835CFD01E854FD4F808311962F738A |
:100DE000235CFD01E854FD4F2083A754BD4F8DE0E7 |
:100DF0008C9310926F008091B8028CB90895CF93B4 |
:100E0000DF93EA01B22F93E29093B8026093B902A4 |
:100E10008093BA0263E070E0A0E04EC0FE01EA0FEA |
:100E2000F11D9081AF5FB15019F430E040E00FC088 |
:100E3000FE01EA0FF11D4081AF5FB15011F430E0C7 |
:100E400006C0FE01EA0FF11D3081AF5FB150892F5E |
:100E500086958695835CFB01E854FD4F8083242FA3 |
:100E600022952F70892F90E08370907054E0880F46 |
:100E7000991F5A95E1F7282B235CFB01E754FD4F9E |
:100E80002083842F90E08F709070880F991F880FB7 |
:100E9000991F232F2295269526952370282B235CB6 |
:100EA000FB01E654FD4F20833F73335CFB01E554A7 |
:100EB000FD4F30836C5F7F4FBB2309F0AFCFCB0179 |
:100EC00070DFDF91CF9108951F93182F8A3011F4AE |
:100ED0008DE0FADF5D9BFECF1CB980E090E01F91B2 |
:100EE00008951F920F920FB60F9211242F933F93E4 |
:100EF0004F935F936F937F938F939F93AF93BF9322 |
:100F0000CF93DF93EF93FF938CB180939100409147 |
:100F10009B00443610F010929A00509191005D3081 |
:100F200009F064C080919A00823009F05FC010928D |
:100F30009A00A42FB0E0FD01E45EFC4F3081ED018A |
:100F4000C35EDC4F288180919E0090919F00831B9F |
:100F50009109821B91099F7090939F0080939E003E |
:100F60009C0166E0369527956A95E1F7235C20930E |
:100F70009D00982F9F73935C90939C00808128170D |
:100F800009F080C08881981709F07CC040939900CF |
:100F9000A25EBC4F5C9380912003823549F42CE023 |
:100FA00088E190E00FB6F894A89581BD0FBE21BDF1 |
:100FB0008091200389DF80912003843709F062C08B |
:100FC0002091990083E990E066E043E092DEE091B1 |
:100FD0006600F0E0EE56FF4F80818093900084EF32 |
:100FE00091E090938300809382004CC080919A009E |
:100FF0008130F9F0813020F0823009F041C024C006 |
:1010000080919100833239F480919200882319F401 |
:1010100081E080939A008091910080931E0381E08B |
:1010200080939B008091910080939E0010929F007E |
:1010300029C082E080939A00E42FF0E08091910033 |
:10104000E25EFC4F808309C0E42FF0E080919100C4 |
:10105000E25EFC4F8083443620F44F5F40939B0058 |
:1010600002C010929A002091910080919E00909170 |
:101070009F00820F911D90939F0080939E0002C05D |
:1010800010929A00FF91EF91DF91CF91BF91AF91B4 |
:101090009F918F917F916F915F914F913F912F9190 |
:1010A0000F900FBE0F901F901895089580911C030C |
:1010B00090911D03B3D0882391F080916F00882315 |
:1010C00071F084E46091B70242E853E022E197DED8 |
:1010D00082E390E099D090931D0380931C030895C0 |
:1010E00088E18AB9599A579A80E189B984E697E0EC |
:1010F00060E070E0F7D388EC90E086D090931D0319 |
:1011000080931C038AE0E0DE82E4DEDE8CE4DCDE39 |
:101110008AE3DADE86E5D8DE80E3D6DE8EE2D4DE50 |
:1011200084E3D2DE81E3D0DE8AE0CEDE88E4CCDE6A |
:1011300087E5CADE8AE3C8DE81E3C6DE8EE2C4DE6E |
:101140008091B2008A5DC0DE8AE0BEDE81E4BCDE52 |
:1011500084E4BADE82E5B8DE8AE3B6DE809166001A |
:10116000805DB2DE08951F920F920FB60F92112488 |
:101170008F939F93809194038F5F809394038091CA |
:10118000A40081508093A4008F5F71F583E0809369 |
:10119000A4008091A2009091A30001969093A300D7 |
:1011A0008093A2008091800090918100009729F0A7 |
:1011B000019790938100809380008091A8008823FC |
:1011C00031F08091A80081508093A80002C0109255 |
:1011D000A9008091820090918300009729F00197E7 |
:1011E00090938300809382009F918F910F900FBE08 |
:1011F0000F901F90189582E083BF89B7816089BFE7 |
:1012000089B7806489BF08952091A2003091A3001E |
:1012100021503040280F391FC90108952091A200A4 |
:101220003091A300821B930B80709078892F0895D2 |
:101230002091A2003091A30021503040280F391F87 |
:101240008091A2009091A300A901481B590BCA01EB |
:10125000807090789923A1F3089586EA86B98091E9 |
:101260008D00876087B9369A089527B190918D00D7 |
:10127000966097B910BE83ED86B9349A97B9369ABD |
:10128000349BFECF27B984B195B120917A0030917B |
:101290007B00A90163E0440F551F6A95E1F7421BEB |
:1012A000530B880F991F880F991F480F591F83E010 |
:1012B000569547958A95E1F750937B0040937A00C5 |
:1012C00080917C0090E08417950710F440937C0097 |
:1012D00016B888E080BF089527B190918D00982BB3 |
:1012E00097B910BE83ED86B9349A97B9369A349B74 |
:1012F000FECF27B916B888E080BF24B135B1C90147 |
:10130000089586E0E9DF9C01220F331F220F331F6F |
:10131000293C310510F028EC30E030937B0020931D |
:101320007A0080917C0090E08217930710F420935C |
:101330007C0016B888E080BF08958EB5806C8EBDA5 |
:101340008EB580648EBD89B7806289BF89B784609D |
:1013500089BF08951F920F920FB60F9211248F9399 |
:101360008091A7008F5F8093A7008F910F900FBE91 |
:101370000F901F9018951F920F920FB60F92112485 |
:101380002F933F934F935F938F939F930EB406FEDB |
:101390000FC01092A70086B597B59093AD008093CB |
:1013A000AC008EB58F7B8EBD84E68093A8006FC0A5 |
:1013B0008EB580648EBD26B537B54091A70080916B |
:1013C000AC009091AD00281B390B942F990F80E051 |
:1013D000280F391F85E0369527958A95E1F73093D8 |
:1013E000AB002093AA002851314030F488E191E00D |
:1013F0009093AB008093AA004091AA005091AB005B |
:10140000485151408091A5009091A60084179507FE |
:1014100030F48091A5009091A60001960CC08091B7 |
:10142000A5009091A6004817590748F48091A5009F |
:101430009091A60001979093A6008093A5008091BB |
:10144000A5009091A6009C01220F331F220F331F8D |
:10145000220F331F281B390B240F351F83E03695CD |
:1014600027958A95E1F73093AB002093AA0030933B |
:10147000A6002093A5008091A9008F3F29F08091BC |
:10148000A9008F5F8093A90081E0809365009F9100 |
:101490008F915F914F913F912F910F900FBE0F90C1 |
:1014A0001F9018951F920F920FB60F9211248F93D1 |
:1014B0008AB78F7B8ABF8F910F900FBE0F901F90BE |
:1014C000189590916600990F980F92B985EC86BF98 |
:1014D00008951F920F920FB60F9211248F939F932E |
:1014E00081B190E0887F907080389105C9F0813893 |
:1014F000910534F4009791F18036910591F50AC079 |
:10150000883B9105B9F0883F910529F1883A91050A |
:1015100041F510C086B7806886BF1092AE0023C028 |
:1015200083B18093950384EF91E090938100809341 |
:1015300080000EC08091AE00882339F480917D0038 |
:1015400083B981E08093AE0003C08091640083B9C9 |
:1015500086B7806807C086B7806986BF86B780690E |
:1015600086BF85EC86BF9F918F910F900FBE0F9025 |
:101570001F9018951F920F920FB60F9211240F9083 |
:101580000FBE0F901F9018958091AF00823069F1C7 |
:10159000833030F4882369F0813009F063C017C0CC |
:1015A000843009F43FC0843068F1853009F05AC0B6 |
:1015B0004BC081EA8FBD81E685BD88E087BB82B3E1 |
:1015C000877D82BB949A80918D00826038C081EAC9 |
:1015D0008FBD81E685BD88E087BB82B3877E82BBF5 |
:1015E000959A80918D0081601AC081EA8FBD81E655 |
:1015F00085BD84E087BB82B3877E82BB959A80914C |
:101600008D001DC081EA8FBD81E685BD84E087BB6A |
:1016100082B38F7C82BB939A80918D00826087B960 |
:101620004098089581EA8FBD81E685BD82E087BB41 |
:1016300082B38F7C82BB939A80918D00816087B941 |
:1016400088B1836088B9089581EA8FBD81E685BD40 |
:1016500082E087BB82B3877D82BB949A80918D00A4 |
:1016600087B9409808951F920F920FB60F921124D8 |
:10167000CF92DF92EF92FF920F931F932F933F939E |
:101680004F935F936F937F938F939F93AF93BF938A |
:10169000EF93FF9361EAF62E01E652E0C52E44E097 |
:1016A000D42E38E0E32E88B190E025E0969587951A |
:1016B0002A95E1F7182F11708091AF00823009F45C |
:1016C00050C0833030F4882371F0813009F0A5C018 |
:1016D00022C0843009F470C0843008F458C08530CA |
:1016E00009F09BC080C0FFBC05BDE7BA112371F0B3 |
:1016F00082B3877E82BB959A809165008111B5DDAA |
:10170000409880918D00816087B918C082B3877D31 |
:1017100082BB949A82C082B3877E82BB959A112342 |
:10172000E1F4FFBC05BDD7BA8091650081119DDD54 |
:1017300080918D0087B988B1836088B98091AF00AE |
:101740008F5F8093AF008091890090918A0001960D |
:1017500090938A008093890060C0FFBC05BDE7BA02 |
:101760005CC0FFBC05BDD7BA112361F082B38F7C8A |
:1017700082BB939A80916500811177DD80918D0005 |
:10178000826029C082B3877E82BB959A46C082B3AD |
:101790008F7C82BB939A112359F4FFBC05BDC7BA55 |
:1017A00080916500811161DD80918D008160C2CFE3 |
:1017B000FFBC05BDD7BA31C0FFBC05BDC7BA1123F8 |
:1017C00069F082B3877D82BB949A80916500811114 |
:1017D0004CDD80918D0087B94098B0CF82B38F7C6B |
:1017E00082BB939A1AC082B3877D82BB949A1123DD |
:1017F00089F4FFBC05BDE7BA80916500811135DD34 |
:1018000080918D00826087B988B1836088B9109219 |
:10181000AF0099CFFFBC05BDC7BA459903C01123DE |
:1018200009F041CF459B03C0112309F43CCF10922E |
:101830006500FF91EF91BF91AF919F918F917F9143 |
:101840006F915F914F913F912F911F910F91FF9059 |
:10185000EF90DF90CF900F900FBE0F901F901895D4 |
:10186000991B79E004C0991F961708F0961B881FF2 |
:101870007A95C9F780950895AA1BBB1B51E107C053 |
:10188000AA1FBB1FA617B70710F0A61BB70B881F10 |
:10189000991F5A95A9F780959095BC01CD0108959F |
:1018A000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F64 |
:1018B000EE1FFF1FA217B307E407F50720F0A21BD6 |
:1018C000B30BE40BF50B661F771F881F991F1A9443 |
:1018D00069F760957095809590959B01AC01BD016D |
:1018E000CF0108950F931F93CF93DF938C01EB01EA |
:1018F000009731F46115710519F420E030E037C02C |
:1019000081E090E06EE070E038D0FC019C0100972F |
:1019100071F180E88383209771F0D387C28781E8D3 |
:1019200083838091960390919703892B21F4F09300 |
:101930009703E093960301151105C9F011870087FD |
:101940008381826083838091980390919903892B8E |
:1019500071F4F0939903E093980380919A03909126 |
:101960009B03892B21F4F0939B03E0939A03C90115 |
:10197000DF91CF911F910F9108950F931F93CF93F4 |
:10198000DF93689F8001699F100D789F100D1124CF |
:10199000C8010DD0EC01009721F060E070E0A801D3 |
:1019A0000BD1CE01DF91CF911F910F910895CF936D |
:1019B000DF93BC018230910510F462E070E0A091E9 |
:1019C0009E03B0919F03ED01E0E0F0E040E050E0C5 |
:1019D00021C0888199818617970769F48A819B8144 |
:1019E000309719F09383828304C090939F03809370 |
:1019F0009E03FE0134C06817790738F4411551057C |
:101A000019F08417950708F4AC01FE018A819B81C7 |
:101A10009C01E9012097E9F641155105A9F1CA0198 |
:101A2000861B970B049708F4BA01E0E0F0E02AC0A7 |
:101A30008D919C91119784179507F9F46417750798 |
:101A400081F412968D919C911397309719F093839E |
:101A5000828304C090939F0380939E03FD0132967E |
:101A60004FC0CA01861B970BFD01E80FF91F619358 |
:101A7000719302978D939C9343C0FD018281938162 |
:101A80009C01D9011097A1F680919C0390919D0330 |
:101A9000892B41F4809173009091740090939D0381 |
:101AA00080939C034091750050917600411551053B |
:101AB00041F44DB75EB78091710090917200481B60 |
:101AC000590B20919C0330919D0324173507B0F4E6 |
:101AD000CA01821B930B8617970780F0AB014E5FFC |
:101AE0005F4F8417950750F0420F531F50939D038B |
:101AF00040939C03F9016193719302C0E0E0F0E030 |
:101B0000CF01DF91CF910895CF93DF93009709F430 |
:101B100050C0EC0122971B821A82A0919E03B091C3 |
:101B20009F03109709F140E050E0AC17BD0708F1A2 |
:101B3000BB83AA83FE0121913191E20FF31FAE17FF |
:101B4000BF0779F48D919C911197280F391F2E5F53 |
:101B50003F4F3983288312968D919C9113979B83D5 |
:101B60008A834115510571F4D0939F03C0939E035E |
:101B700020C012968D919C911397AD01009711F0A2 |
:101B8000DC01D3CFFA01D383C28321913191E20FDB |
:101B9000F31FCE17DF0769F488819981280F391F59 |
:101BA0002E5F3F4FFA01318320838A819B8193838B |
:101BB0008283DF91CF910895DC0101C06D93415084 |
:0A1BC0005040E0F70895F894FFCFBD |
:101BCA000A000101FF0101010000000101020201F6 |
:081BDA00642000A003000000DC |
:00000001FF |
/branches/V0.41-Hexa/BrushLess-Ctrl_V0_41_10A.lss |
---|
0,0 → 1,4807 |
BrushLess-Ctrl_V0_41_10A.elf: file format elf32-avr |
Sections: |
Idx Name Size VMA LMA File off Algn |
0 .text 00001bca 00000000 00000000 00000094 2**1 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
1 .data 00000018 00800060 00001bca 00001c5e 2**0 |
CONTENTS, ALLOC, LOAD, DATA |
2 .bss 00000328 00800078 00800078 00001c76 2**0 |
ALLOC |
3 .debug_aranges 000000e0 00000000 00000000 00001c76 2**0 |
CONTENTS, READONLY, DEBUGGING |
4 .debug_pubnames 000005da 00000000 00000000 00001d56 2**0 |
CONTENTS, READONLY, DEBUGGING |
5 .debug_info 00001379 00000000 00000000 00002330 2**0 |
CONTENTS, READONLY, DEBUGGING |
6 .debug_abbrev 0000077a 00000000 00000000 000036a9 2**0 |
CONTENTS, READONLY, DEBUGGING |
7 .debug_line 00001739 00000000 00000000 00003e23 2**0 |
CONTENTS, READONLY, DEBUGGING |
8 .debug_frame 000002e0 00000000 00000000 0000555c 2**2 |
CONTENTS, READONLY, DEBUGGING |
9 .debug_str 000005bf 00000000 00000000 0000583c 2**0 |
CONTENTS, READONLY, DEBUGGING |
10 .debug_loc 0000073a 00000000 00000000 00005dfb 2**0 |
CONTENTS, READONLY, DEBUGGING |
11 .debug_ranges 00000018 00000000 00000000 00006535 2**0 |
CONTENTS, READONLY, DEBUGGING |
Disassembly of section .text: |
00000000 <__vectors>: |
0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end> |
2: 50 ca rjmp .-2912 ; 0xfffff4a4 <__eeprom_end+0xff7ef4a4> |
4: 2b c0 rjmp .+86 ; 0x5c <__bad_interrupt> |
6: 2a c0 rjmp .+84 ; 0x5c <__bad_interrupt> |
8: b5 ca rjmp .-2710 ; 0xfffff574 <__eeprom_end+0xff7ef574> |
a: b5 c9 rjmp .-3222 ; 0xfffff376 <__eeprom_end+0xff7ef376> |
c: 27 c0 rjmp .+78 ; 0x5c <__bad_interrupt> |
e: 26 c0 rjmp .+76 ; 0x5c <__bad_interrupt> |
10: a1 c9 rjmp .-3262 ; 0xfffff354 <__eeprom_end+0xff7ef354> |
12: a9 c8 rjmp .-3758 ; 0xfffff166 <__eeprom_end+0xff7ef166> |
14: 23 c0 rjmp .+70 ; 0x5c <__bad_interrupt> |
16: 65 c7 rjmp .+3786 ; 0xee2 <__vector_11> |
18: 21 c0 rjmp .+66 ; 0x5c <__bad_interrupt> |
1a: 3a c6 rjmp .+3188 ; 0xc90 <__vector_13> |
1c: 1f c0 rjmp .+62 ; 0x5c <__bad_interrupt> |
1e: 1e c0 rjmp .+60 ; 0x5c <__bad_interrupt> |
20: 22 cb rjmp .-2492 ; 0xfffff666 <__eeprom_end+0xff7ef666> |
22: 57 ca rjmp .-2898 ; 0xfffff4d2 <__eeprom_end+0xff7ef4d2> |
24: 1b c0 rjmp .+54 ; 0x5c <__bad_interrupt> |
00000026 <__ctors_end>: |
26: 11 24 eor r1, r1 |
28: 1f be out 0x3f, r1 ; 63 |
2a: cf e5 ldi r28, 0x5F ; 95 |
2c: d4 e0 ldi r29, 0x04 ; 4 |
2e: de bf out 0x3e, r29 ; 62 |
30: cd bf out 0x3d, r28 ; 61 |
00000032 <__do_copy_data>: |
32: 10 e0 ldi r17, 0x00 ; 0 |
34: a0 e6 ldi r26, 0x60 ; 96 |
36: b0 e0 ldi r27, 0x00 ; 0 |
38: ea ec ldi r30, 0xCA ; 202 |
3a: fb e1 ldi r31, 0x1B ; 27 |
3c: 02 c0 rjmp .+4 ; 0x42 <.do_copy_data_start> |
0000003e <.do_copy_data_loop>: |
3e: 05 90 lpm r0, Z+ |
40: 0d 92 st X+, r0 |
00000042 <.do_copy_data_start>: |
42: a8 37 cpi r26, 0x78 ; 120 |
44: b1 07 cpc r27, r17 |
46: d9 f7 brne .-10 ; 0x3e <.do_copy_data_loop> |
00000048 <__do_clear_bss>: |
48: 13 e0 ldi r17, 0x03 ; 3 |
4a: a8 e7 ldi r26, 0x78 ; 120 |
4c: b0 e0 ldi r27, 0x00 ; 0 |
4e: 01 c0 rjmp .+2 ; 0x52 <.do_clear_bss_start> |
00000050 <.do_clear_bss_loop>: |
50: 1d 92 st X+, r1 |
00000052 <.do_clear_bss_start>: |
52: a0 3a cpi r26, 0xA0 ; 160 |
54: b1 07 cpc r27, r17 |
56: e1 f7 brne .-8 ; 0x50 <.do_clear_bss_loop> |
58: 46 d4 rcall .+2188 ; 0x8e6 <main> |
5a: b5 cd rjmp .-1174 ; 0xfffffbc6 <__eeprom_end+0xff7efbc6> |
0000005c <__bad_interrupt>: |
5c: d1 cf rjmp .-94 ; 0x0 <__vectors> |
0000005e <SetPWM>: |
// |
void SetPWM(void) |
//############################################################################ |
{ |
unsigned char tmp_pwm; |
tmp_pwm = PWM; |
5e: 40 91 78 00 lds r20, 0x0078 |
if(tmp_pwm > MaxPWM) // Strombegrenzung |
62: 80 91 64 00 lds r24, 0x0064 |
66: 84 17 cp r24, r20 |
68: 10 f4 brcc .+4 ; 0x6e <SetPWM+0x10> |
{ |
tmp_pwm = MaxPWM; |
PORTC |= ROT; |
6a: ab 9a sbi 0x15, 3 ; 21 |
6c: 48 2f mov r20, r24 |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
6e: 20 91 7a 00 lds r18, 0x007A |
72: 30 91 7b 00 lds r19, 0x007B |
76: 29 3c cpi r18, 0xC9 ; 201 |
78: 31 05 cpc r19, r1 |
7a: c8 f0 brcs .+50 ; 0xae <SetPWM+0x50> |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
7c: 1b bc out 0x2b, r1 ; 43 |
7e: 1a bc out 0x2a, r1 ; 42 |
80: 19 bc out 0x29, r1 ; 41 |
82: 18 bc out 0x28, r1 ; 40 |
84: 13 bc out 0x23, r1 ; 35 |
PORTD &= ~0x38; |
86: 82 b3 in r24, 0x12 ; 18 |
88: 87 7c andi r24, 0xC7 ; 199 |
8a: 82 bb out 0x12, r24 ; 18 |
PORTC |= ROT; |
8c: ab 9a sbi 0x15, 3 ; 21 |
DebugOut.Analog[6]++; |
8e: 80 91 90 03 lds r24, 0x0390 |
92: 90 91 91 03 lds r25, 0x0391 |
96: 01 96 adiw r24, 0x01 ; 1 |
98: 90 93 91 03 sts 0x0391, r25 |
9c: 80 93 90 03 sts 0x0390, r24 |
Strom--; |
a0: 21 50 subi r18, 0x01 ; 1 |
a2: 30 40 sbci r19, 0x00 ; 0 |
a4: 30 93 7b 00 sts 0x007B, r19 |
a8: 20 93 7a 00 sts 0x007A, r18 |
ac: 08 95 ret |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
#ifdef _16KHZ |
//OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
ae: 84 2f mov r24, r20 |
b0: 90 e0 ldi r25, 0x00 ; 0 |
b2: 9b bd out 0x2b, r25 ; 43 |
b4: 8a bd out 0x2a, r24 ; 42 |
b6: 99 bd out 0x29, r25 ; 41 |
b8: 88 bd out 0x28, r24 ; 40 |
ba: 43 bd out 0x23, r20 ; 35 |
bc: 08 95 ret |
000000be <DebugAusgaben>: |
} |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
be: e4 e8 ldi r30, 0x84 ; 132 |
c0: f3 e0 ldi r31, 0x03 ; 3 |
c2: 80 91 7a 00 lds r24, 0x007A |
c6: 90 91 7b 00 lds r25, 0x007B |
ca: 90 93 85 03 sts 0x0385, r25 |
ce: 80 93 84 03 sts 0x0384, r24 |
DebugOut.Analog[1] = Mittelstrom; |
d2: 80 91 7d 00 lds r24, 0x007D |
d6: 80 93 86 03 sts 0x0386, r24 |
da: 13 82 std Z+3, r1 ; 0x03 |
DebugOut.Analog[2] = SIO_Drehzahl; |
dc: 80 91 8b 00 lds r24, 0x008B |
e0: 90 91 8c 00 lds r25, 0x008C |
e4: 90 93 89 03 sts 0x0389, r25 |
e8: 80 93 88 03 sts 0x0388, r24 |
DebugOut.Analog[3] = PPM_Signal; |
ec: 80 91 a5 00 lds r24, 0x00A5 |
f0: 90 91 a6 00 lds r25, 0x00A6 |
f4: 90 93 8b 03 sts 0x038B, r25 |
f8: 80 93 8a 03 sts 0x038A, r24 |
DebugOut.Analog[4] = OCR2; |
fc: 83 b5 in r24, 0x23 ; 35 |
fe: 80 93 8c 03 sts 0x038C, r24 |
102: 11 86 std Z+9, r1 ; 0x09 |
// DebugOut.Analog[5] = PWM; |
} |
104: 08 95 ret |
00000106 <PWM_Init>: |
//############################################################################ |
// |
void PWM_Init(void) |
//############################################################################ |
{ |
PWM_OFF; |
106: 1b bc out 0x2b, r1 ; 43 |
108: 1a bc out 0x2a, r1 ; 42 |
10a: 19 bc out 0x29, r1 ; 41 |
10c: 18 bc out 0x28, r1 ; 40 |
10e: 13 bc out 0x23, r1 ; 35 |
110: 91 e0 ldi r25, 0x01 ; 1 |
112: 9f bd out 0x2f, r25 ; 47 |
114: 81 e4 ldi r24, 0x41 ; 65 |
116: 85 bd out 0x25, r24 ; 37 |
118: 8e e0 ldi r24, 0x0E ; 14 |
11a: 87 bb out 0x17, r24 ; 23 |
11c: 88 b3 in r24, 0x18 ; 24 |
11e: 81 7f andi r24, 0xF1 ; 241 |
120: 88 bb out 0x18, r24 ; 24 |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) | |
122: 9e bd out 0x2e, r25 ; 46 |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
/* TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
*/ |
} |
124: 08 95 ret |
00000126 <Wait>: |
//############################################################################ |
// |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
126: 92 b7 in r25, 0x32 ; 50 |
128: 98 0f add r25, r24 |
while((TCNT0 - dauer) & 0x80); |
12a: 82 b7 in r24, 0x32 ; 50 |
12c: 89 1b sub r24, r25 |
12e: 87 fd sbrc r24, 7 |
130: fc cf rjmp .-8 ; 0x12a <Wait+0x4> |
} |
132: 08 95 ret |
00000134 <Delay>: |
} |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
134: 01 c0 rjmp .+2 ; 0x138 <Delay+0x4> |
while(timer--) |
{ |
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
asm volatile(""); |
136: 01 97 sbiw r24, 0x01 ; 1 |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
138: 00 97 sbiw r24, 0x00 ; 0 |
13a: e9 f7 brne .-6 ; 0x136 <Delay+0x2> |
{ |
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
asm volatile(""); |
} |
return(0); |
} |
13c: 80 e0 ldi r24, 0x00 ; 0 |
13e: 08 95 ret |
00000140 <SollwertErmittlung>: |
unsigned char SollwertErmittlung(void) |
//############################################################################ |
{ |
static unsigned int sollwert = 0; |
unsigned int ppm; |
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig |
140: 80 91 80 00 lds r24, 0x0080 |
144: 90 91 81 00 lds r25, 0x0081 |
148: 89 2b or r24, r25 |
14a: 09 f0 breq .+2 ; 0x14e <SollwertErmittlung+0xe> |
14c: 59 c0 rjmp .+178 ; 0x200 <SollwertErmittlung+0xc0> |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
14e: 80 91 82 00 lds r24, 0x0082 |
152: 90 91 83 00 lds r25, 0x0083 |
156: 89 2b or r24, r25 |
158: 99 f0 breq .+38 ; 0x180 <SollwertErmittlung+0x40> |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
15a: 90 91 90 00 lds r25, 0x0090 |
15e: 8f ef ldi r24, 0xFF ; 255 |
160: 98 9f mul r25, r24 |
162: c0 01 movw r24, r0 |
164: 11 24 eor r1, r1 |
166: 68 ec ldi r22, 0xC8 ; 200 |
168: 70 e0 ldi r23, 0x00 ; 0 |
16a: 86 db rcall .-2292 ; 0xfffff878 <__eeprom_end+0xff7ef878> |
16c: 70 93 8f 00 sts 0x008F, r23 |
170: 60 93 8e 00 sts 0x008E, r22 |
PPM_Betrieb = 0; |
174: 10 92 67 00 sts 0x0067, r1 |
ICP_INT_DISABLE; |
178: 89 b7 in r24, 0x39 ; 57 |
17a: 8f 7d andi r24, 0xDF ; 223 |
17c: 89 bf out 0x39, r24 ; 57 |
17e: 31 c0 rjmp .+98 ; 0x1e2 <SollwertErmittlung+0xa2> |
PORTC &= ~ROT; |
} |
else |
if(anz_ppm_werte > 20) // es gibt gültige PPM-Daten |
180: 80 91 a9 00 lds r24, 0x00A9 |
184: 85 31 cpi r24, 0x15 ; 21 |
186: 78 f1 brcs .+94 ; 0x1e6 <SollwertErmittlung+0xa6> |
{ |
PPM_Betrieb = 1; |
188: 81 e0 ldi r24, 0x01 ; 1 |
18a: 80 93 67 00 sts 0x0067, r24 |
ppm = PPM_Signal; |
18e: 20 91 a5 00 lds r18, 0x00A5 |
192: 30 91 a6 00 lds r19, 0x00A6 |
if(ppm > 300) ppm = 0; // ungültiges Signal |
196: 41 e0 ldi r20, 0x01 ; 1 |
198: 2d 32 cpi r18, 0x2D ; 45 |
19a: 34 07 cpc r19, r20 |
19c: 30 f4 brcc .+12 ; 0x1aa <SollwertErmittlung+0x6a> |
if(ppm > 200) ppm = 200; |
19e: 29 3c cpi r18, 0xC9 ; 201 |
1a0: 31 05 cpc r19, r1 |
1a2: 40 f4 brcc .+16 ; 0x1b4 <SollwertErmittlung+0x74> |
if(ppm <= MIN_PPM) sollwert = 0; |
1a4: 2b 30 cpi r18, 0x0B ; 11 |
1a6: 31 05 cpc r19, r1 |
1a8: 38 f4 brcc .+14 ; 0x1b8 <SollwertErmittlung+0x78> |
1aa: 10 92 8f 00 sts 0x008F, r1 |
1ae: 10 92 8e 00 sts 0x008E, r1 |
1b2: 17 c0 rjmp .+46 ; 0x1e2 <SollwertErmittlung+0xa2> |
1b4: 28 ec ldi r18, 0xC8 ; 200 |
1b6: 30 e0 ldi r19, 0x00 ; 0 |
else |
{ |
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM); |
1b8: 8c ef ldi r24, 0xFC ; 252 |
1ba: 90 e0 ldi r25, 0x00 ; 0 |
1bc: ac 01 movw r20, r24 |
1be: 24 9f mul r18, r20 |
1c0: c0 01 movw r24, r0 |
1c2: 25 9f mul r18, r21 |
1c4: 90 0d add r25, r0 |
1c6: 34 9f mul r19, r20 |
1c8: 90 0d add r25, r0 |
1ca: 11 24 eor r1, r1 |
1cc: 88 5d subi r24, 0xD8 ; 216 |
1ce: 99 40 sbci r25, 0x09 ; 9 |
1d0: 64 eb ldi r22, 0xB4 ; 180 |
1d2: 70 e0 ldi r23, 0x00 ; 0 |
1d4: 51 db rcall .-2398 ; 0xfffff878 <__eeprom_end+0xff7ef878> |
1d6: 6d 5f subi r22, 0xFD ; 253 |
1d8: 7f 4f sbci r23, 0xFF ; 255 |
1da: 70 93 8f 00 sts 0x008F, r23 |
1de: 60 93 8e 00 sts 0x008E, r22 |
} |
PORTC &= ~ROT; |
1e2: ab 98 cbi 0x15, 3 ; 21 |
1e4: 19 c0 rjmp .+50 ; 0x218 <SollwertErmittlung+0xd8> |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
1e6: 80 91 8e 00 lds r24, 0x008E |
1ea: 90 91 8f 00 lds r25, 0x008F |
1ee: 00 97 sbiw r24, 0x00 ; 0 |
1f0: 29 f0 breq .+10 ; 0x1fc <SollwertErmittlung+0xbc> |
1f2: 01 97 sbiw r24, 0x01 ; 1 |
1f4: 90 93 8f 00 sts 0x008F, r25 |
1f8: 80 93 8e 00 sts 0x008E, r24 |
PORTC |= ROT; |
1fc: ab 9a sbi 0x15, 3 ; 21 |
1fe: 0c c0 rjmp .+24 ; 0x218 <SollwertErmittlung+0xd8> |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
200: 80 91 95 03 lds r24, 0x0395 |
204: 80 93 8e 00 sts 0x008E, r24 |
208: 10 92 8f 00 sts 0x008F, r1 |
PPM_Betrieb = 0; |
20c: 10 92 67 00 sts 0x0067, r1 |
PORTC &= ~ROT; |
210: ab 98 cbi 0x15, 3 ; 21 |
ICP_INT_DISABLE; |
212: 89 b7 in r24, 0x39 ; 57 |
214: 8f 7d andi r24, 0xDF ; 223 |
216: 89 bf out 0x39, r24 ; 57 |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
218: 80 91 8e 00 lds r24, 0x008E |
21c: 90 91 8f 00 lds r25, 0x008F |
220: 8f 3f cpi r24, 0xFF ; 255 |
222: 91 05 cpc r25, r1 |
224: 39 f0 breq .+14 ; 0x234 <SollwertErmittlung+0xf4> |
226: 30 f0 brcs .+12 ; 0x234 <SollwertErmittlung+0xf4> |
228: 8f ef ldi r24, 0xFF ; 255 |
22a: 90 e0 ldi r25, 0x00 ; 0 |
22c: 90 93 8f 00 sts 0x008F, r25 |
230: 80 93 8e 00 sts 0x008E, r24 |
return(sollwert); |
} |
234: 80 91 8e 00 lds r24, 0x008E |
238: 08 95 ret |
0000023a <DelayM>: |
*/ |
#define TEST_STROMGRENZE 120 |
unsigned char DelayM(unsigned int timer) |
{ |
23a: cf 93 push r28 |
23c: df 93 push r29 |
23e: ec 01 movw r28, r24 |
240: 17 c0 rjmp .+46 ; 0x270 <DelayM+0x36> |
while(timer--) |
{ |
FastADConvert(); |
242: 5f d8 rcall .-3906 ; 0xfffff302 <__eeprom_end+0xff7ef302> |
244: 21 97 sbiw r28, 0x01 ; 1 |
if(Strom > (TEST_STROMGRENZE + RuheStrom)) |
246: 80 91 b5 02 lds r24, 0x02B5 |
24a: 90 91 b6 02 lds r25, 0x02B6 |
24e: 88 58 subi r24, 0x88 ; 136 |
250: 9f 4f sbci r25, 0xFF ; 255 |
252: 20 91 7a 00 lds r18, 0x007A |
256: 30 91 7b 00 lds r19, 0x007B |
25a: 82 17 cp r24, r18 |
25c: 93 07 cpc r25, r19 |
25e: 40 f4 brcc .+16 ; 0x270 <DelayM+0x36> |
{ |
FETS_OFF; |
260: 82 b3 in r24, 0x12 ; 18 |
262: 87 7c andi r24, 0xC7 ; 199 |
264: 82 bb out 0x12, r24 ; 18 |
266: 88 b3 in r24, 0x18 ; 24 |
268: 81 7f andi r24, 0xF1 ; 241 |
26a: 88 bb out 0x18, r24 ; 24 |
26c: 81 e0 ldi r24, 0x01 ; 1 |
26e: 03 c0 rjmp .+6 ; 0x276 <DelayM+0x3c> |
#define TEST_STROMGRENZE 120 |
unsigned char DelayM(unsigned int timer) |
{ |
while(timer--) |
270: 20 97 sbiw r28, 0x00 ; 0 |
272: 39 f7 brne .-50 ; 0x242 <DelayM+0x8> |
274: 80 e0 ldi r24, 0x00 ; 0 |
FETS_OFF; |
return(1); |
} |
} |
return(0); |
} |
276: df 91 pop r29 |
278: cf 91 pop r28 |
27a: 08 95 ret |
0000027c <RotBlink>: |
dauer = (unsigned char)TCNT0 + dauer; |
while((TCNT0 - dauer) & 0x80); |
} |
void RotBlink(unsigned char anz) |
{ |
27c: 1f 93 push r17 |
27e: 18 2f mov r17, r24 |
sei(); // Interrupts ein |
280: 78 94 sei |
282: 09 c0 rjmp .+18 ; 0x296 <RotBlink+0x1a> |
while(anz--) |
{ |
PORTC |= ROT; |
284: ab 9a sbi 0x15, 3 ; 21 |
Delay_ms(300); |
286: 8c e2 ldi r24, 0x2C ; 44 |
288: 91 e0 ldi r25, 0x01 ; 1 |
28a: d2 d7 rcall .+4004 ; 0x1230 <Delay_ms> |
PORTC &= ~ROT; |
28c: ab 98 cbi 0x15, 3 ; 21 |
Delay_ms(300); |
28e: 8c e2 ldi r24, 0x2C ; 44 |
290: 91 e0 ldi r25, 0x01 ; 1 |
292: ce d7 rcall .+3996 ; 0x1230 <Delay_ms> |
294: 11 50 subi r17, 0x01 ; 1 |
} |
void RotBlink(unsigned char anz) |
{ |
sei(); // Interrupts ein |
while(anz--) |
296: 11 23 and r17, r17 |
298: a9 f7 brne .-22 ; 0x284 <RotBlink+0x8> |
PORTC |= ROT; |
Delay_ms(300); |
PORTC &= ~ROT; |
Delay_ms(300); |
} |
Delay_ms(1000); |
29a: 88 ee ldi r24, 0xE8 ; 232 |
29c: 93 e0 ldi r25, 0x03 ; 3 |
29e: c8 d7 rcall .+3984 ; 0x1230 <Delay_ms> |
} |
2a0: 1f 91 pop r17 |
2a2: 08 95 ret |
000002a4 <MotorTon>: |
#define LOW_B_EIN PORTD |= 0x10 |
#define LOW_C_EIN PORTD |= 0x20 |
void MotorTon(void) |
//############################################################################ |
{ |
2a4: af 92 push r10 |
2a6: bf 92 push r11 |
2a8: df 92 push r13 |
2aa: ef 92 push r14 |
2ac: ff 92 push r15 |
2ae: 0f 93 push r16 |
2b0: 1f 93 push r17 |
2b2: df 93 push r29 |
2b4: cf 93 push r28 |
2b6: cd b7 in r28, 0x3d ; 61 |
2b8: de b7 in r29, 0x3e ; 62 |
2ba: 27 97 sbiw r28, 0x07 ; 7 |
2bc: 0f b6 in r0, 0x3f ; 63 |
2be: f8 94 cli |
2c0: de bf out 0x3e, r29 ; 62 |
2c2: 0f be out 0x3f, r0 ; 63 |
2c4: cd bf out 0x3d, r28 ; 61 |
unsigned char ADR_TAB[7] = {0,0,0,1,1,2,2}; |
2c6: de 01 movw r26, r28 |
2c8: 11 96 adiw r26, 0x01 ; 1 |
2ca: e8 e6 ldi r30, 0x68 ; 104 |
2cc: f0 e0 ldi r31, 0x00 ; 0 |
2ce: 87 e0 ldi r24, 0x07 ; 7 |
2d0: 01 90 ld r0, Z+ |
2d2: 0d 92 st X+, r0 |
2d4: 81 50 subi r24, 0x01 ; 1 |
2d6: e1 f7 brne .-8 ; 0x2d0 <MotorTon+0x2c> |
unsigned int timer = 300,i; |
unsigned int t = 0; |
unsigned char anz = 0,MosfetOkay = 0, grenze = 50; |
PORTC &= ~ROT; |
2d8: ab 98 cbi 0x15, 3 ; 21 |
Delay_ms(300 * ADR_TAB[MotorAdresse]); |
2da: 80 91 66 00 lds r24, 0x0066 |
2de: fe 01 movw r30, r28 |
2e0: e8 0f add r30, r24 |
2e2: f1 1d adc r31, r1 |
2e4: 81 81 ldd r24, Z+1 ; 0x01 |
2e6: 90 e0 ldi r25, 0x00 ; 0 |
2e8: 2c e2 ldi r18, 0x2C ; 44 |
2ea: 31 e0 ldi r19, 0x01 ; 1 |
2ec: ac 01 movw r20, r24 |
2ee: 42 9f mul r20, r18 |
2f0: c0 01 movw r24, r0 |
2f2: 43 9f mul r20, r19 |
2f4: 90 0d add r25, r0 |
2f6: 52 9f mul r21, r18 |
2f8: 90 0d add r25, r0 |
2fa: 11 24 eor r1, r1 |
2fc: 99 d7 rcall .+3890 ; 0x1230 <Delay_ms> |
DISABLE_SENSE_INT; |
2fe: 10 92 b1 00 sts 0x00B1, r1 |
302: 43 98 cbi 0x08, 3 ; 8 |
cli();//Globale Interrupts Ausschalten |
304: f8 94 cli |
uart_putchar('\n'); |
306: 8a e0 ldi r24, 0x0A ; 10 |
308: df d5 rcall .+3006 ; 0xec8 <uart_putchar> |
STEUER_OFF; |
30a: 82 b3 in r24, 0x12 ; 18 |
30c: 87 7c andi r24, 0xC7 ; 199 |
30e: 82 bb out 0x12, r24 ; 18 |
310: 1b bc out 0x2b, r1 ; 43 |
312: 1a bc out 0x2a, r1 ; 42 |
314: 19 bc out 0x29, r1 ; 41 |
316: 18 bc out 0x28, r1 ; 40 |
318: 13 bc out 0x23, r1 ; 35 |
31a: 81 e0 ldi r24, 0x01 ; 1 |
31c: 8f bd out 0x2f, r24 ; 47 |
31e: 81 e4 ldi r24, 0x41 ; 65 |
320: 85 bd out 0x25, r24 ; 37 |
322: 8e e0 ldi r24, 0x0E ; 14 |
324: 87 bb out 0x17, r24 ; 23 |
326: 88 b3 in r24, 0x18 ; 24 |
328: 81 7f andi r24, 0xF1 ; 241 |
32a: 88 bb out 0x18, r24 ; 24 |
Strom_max = 0; |
32c: 10 92 7c 00 sts 0x007C, r1 |
DelayM(50); |
330: 82 e3 ldi r24, 0x32 ; 50 |
332: 90 e0 ldi r25, 0x00 ; 0 |
334: 82 df rcall .-252 ; 0x23a <DelayM> |
RuheStrom = Strom_max; |
336: 80 91 7c 00 lds r24, 0x007C |
33a: 80 93 b5 02 sts 0x02B5, r24 |
33e: 10 92 b6 02 sts 0x02B6, r1 |
// uart_putchar(RuheStrom + 'A'); |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Strom = 0; |
342: 10 92 7b 00 sts 0x007B, r1 |
346: 10 92 7a 00 sts 0x007A, r1 |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
*/ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ LOW-Mosfets auf Schalten und Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
34a: 8c b1 in r24, 0x0c ; 12 |
34c: 80 32 cpi r24, 0x20 ; 32 |
34e: 31 f0 breq .+12 ; 0x35c <MotorTon+0xb8> |
350: 38 ee ldi r19, 0xE8 ; 232 |
352: e3 2e mov r14, r19 |
354: 33 e0 ldi r19, 0x03 ; 3 |
356: f3 2e mov r15, r19 |
358: 82 e3 ldi r24, 0x32 ; 50 |
35a: 06 c0 rjmp .+12 ; 0x368 <MotorTon+0xc4> |
35c: 8f e5 ldi r24, 0x5F ; 95 |
35e: b4 d5 rcall .+2920 ; 0xec8 <uart_putchar> |
360: ee 24 eor r14, r14 |
362: ea 94 dec r14 |
364: fe 2c mov r15, r14 |
366: 88 e2 ldi r24, 0x28 ; 40 |
Strom = 0; |
368: 10 92 7b 00 sts 0x007B, r1 |
36c: 10 92 7a 00 sts 0x007A, r1 |
370: 00 e0 ldi r16, 0x00 ; 0 |
372: 10 e0 ldi r17, 0x00 ; 0 |
FETS_OFF; |
Delay(5); |
HIGH_A_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;} |
374: a8 2e mov r10, r24 |
376: bb 24 eor r11, r11 |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_A_EIN; |
378: 93 9a sbi 0x12, 3 ; 18 |
DelayM(1); |
37a: 81 e0 ldi r24, 0x01 ; 1 |
37c: 90 e0 ldi r25, 0x00 ; 0 |
37e: 5d df rcall .-326 ; 0x23a <DelayM> |
FETS_OFF; |
380: 82 b3 in r24, 0x12 ; 18 |
382: 87 7c andi r24, 0xC7 ; 199 |
384: 82 bb out 0x12, r24 ; 18 |
386: 88 b3 in r24, 0x18 ; 24 |
388: 81 7f andi r24, 0xF1 ; 241 |
38a: 88 bb out 0x18, r24 ; 24 |
Delay(5); |
HIGH_A_EIN; |
38c: c3 9a sbi 0x18, 3 ; 24 |
DelayM(1); |
38e: 81 e0 ldi r24, 0x01 ; 1 |
390: 90 e0 ldi r25, 0x00 ; 0 |
392: 53 df rcall .-346 ; 0x23a <DelayM> |
FETS_OFF; |
394: 82 b3 in r24, 0x12 ; 18 |
396: 87 7c andi r24, 0xC7 ; 199 |
398: 82 bb out 0x12, r24 ; 18 |
39a: 88 b3 in r24, 0x18 ; 24 |
39c: 81 7f andi r24, 0xF1 ; 241 |
39e: 88 bb out 0x18, r24 ; 24 |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;} |
3a0: 80 91 b5 02 lds r24, 0x02B5 |
3a4: 90 91 b6 02 lds r25, 0x02B6 |
3a8: 8a 0d add r24, r10 |
3aa: 9b 1d adc r25, r11 |
3ac: 20 91 7a 00 lds r18, 0x007A |
3b0: 30 91 7b 00 lds r19, 0x007B |
3b4: 82 17 cp r24, r18 |
3b6: 93 07 cpc r25, r19 |
3b8: 38 f0 brcs .+14 ; 0x3c8 <MotorTon+0x124> |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ LOW-Mosfets auf Schalten und Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
Strom = 0; |
for(i=0;i<t;i++) |
3ba: 0f 5f subi r16, 0xFF ; 255 |
3bc: 1f 4f sbci r17, 0xFF ; 255 |
3be: 0e 15 cp r16, r14 |
3c0: 1f 05 cpc r17, r15 |
3c2: d0 f2 brcs .-76 ; 0x378 <MotorTon+0xd4> |
3c4: dd 24 eor r13, r13 |
3c6: 0a c0 rjmp .+20 ; 0x3dc <MotorTon+0x138> |
FETS_OFF; |
Delay(5); |
HIGH_A_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;} |
3c8: 84 e3 ldi r24, 0x34 ; 52 |
3ca: 7e d5 rcall .+2812 ; 0xec8 <uart_putchar> |
3cc: 82 b3 in r24, 0x12 ; 18 |
3ce: 87 7c andi r24, 0xC7 ; 199 |
3d0: 82 bb out 0x12, r24 ; 18 |
3d2: 88 b3 in r24, 0x18 ; 24 |
3d4: 81 7f andi r24, 0xF1 ; 241 |
3d6: 88 bb out 0x18, r24 ; 24 |
3d8: 24 e0 ldi r18, 0x04 ; 4 |
3da: d2 2e mov r13, r18 |
3dc: 80 e1 ldi r24, 0x10 ; 16 |
3de: 97 e2 ldi r25, 0x27 ; 39 |
3e0: 00 c0 rjmp .+0 ; 0x3e2 <MotorTon+0x13e> |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
3e2: 01 97 sbiw r24, 0x01 ; 1 |
3e4: 5f ef ldi r21, 0xFF ; 255 |
3e6: 8f 3f cpi r24, 0xFF ; 255 |
3e8: 95 07 cpc r25, r21 |
3ea: d9 f7 brne .-10 ; 0x3e2 <MotorTon+0x13e> |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;} |
Delay(5); |
} |
Delay(10000); |
Strom = 0; |
3ec: 10 92 7b 00 sts 0x007B, r1 |
3f0: 10 92 7a 00 sts 0x007A, r1 |
3f4: 00 e0 ldi r16, 0x00 ; 0 |
3f6: 10 e0 ldi r17, 0x00 ; 0 |
for(i=0;i<t;i++) |
{ |
LOW_B_EIN; |
3f8: 94 9a sbi 0x12, 4 ; 18 |
DelayM(1); |
3fa: 81 e0 ldi r24, 0x01 ; 1 |
3fc: 90 e0 ldi r25, 0x00 ; 0 |
3fe: 1d df rcall .-454 ; 0x23a <DelayM> |
FETS_OFF; |
400: 82 b3 in r24, 0x12 ; 18 |
402: 87 7c andi r24, 0xC7 ; 199 |
404: 82 bb out 0x12, r24 ; 18 |
406: 88 b3 in r24, 0x18 ; 24 |
408: 81 7f andi r24, 0xF1 ; 241 |
40a: 88 bb out 0x18, r24 ; 24 |
Delay(5); |
HIGH_B_EIN; |
40c: c2 9a sbi 0x18, 2 ; 24 |
DelayM(1); |
40e: 81 e0 ldi r24, 0x01 ; 1 |
410: 90 e0 ldi r25, 0x00 ; 0 |
412: 13 df rcall .-474 ; 0x23a <DelayM> |
FETS_OFF; |
414: 82 b3 in r24, 0x12 ; 18 |
416: 87 7c andi r24, 0xC7 ; 199 |
418: 82 bb out 0x12, r24 ; 18 |
41a: 88 b3 in r24, 0x18 ; 24 |
41c: 81 7f andi r24, 0xF1 ; 241 |
41e: 88 bb out 0x18, r24 ; 24 |
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); FETS_OFF;break;} |
420: 80 91 b5 02 lds r24, 0x02B5 |
424: 90 91 b6 02 lds r25, 0x02B6 |
428: 8a 0d add r24, r10 |
42a: 9b 1d adc r25, r11 |
42c: 20 91 7a 00 lds r18, 0x007A |
430: 30 91 7b 00 lds r19, 0x007B |
434: 82 17 cp r24, r18 |
436: 93 07 cpc r25, r19 |
438: 30 f0 brcs .+12 ; 0x446 <MotorTon+0x1a2> |
Delay(5); |
} |
Delay(10000); |
Strom = 0; |
for(i=0;i<t;i++) |
43a: 0f 5f subi r16, 0xFF ; 255 |
43c: 1f 4f sbci r17, 0xFF ; 255 |
43e: 0e 15 cp r16, r14 |
440: 1f 05 cpc r17, r15 |
442: d0 f2 brcs .-76 ; 0x3f8 <MotorTon+0x154> |
444: 0a c0 rjmp .+20 ; 0x45a <MotorTon+0x1b6> |
FETS_OFF; |
Delay(5); |
HIGH_B_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); FETS_OFF;break;} |
446: 85 e3 ldi r24, 0x35 ; 53 |
448: 3f d5 rcall .+2686 ; 0xec8 <uart_putchar> |
44a: 82 b3 in r24, 0x12 ; 18 |
44c: 87 7c andi r24, 0xC7 ; 199 |
44e: 82 bb out 0x12, r24 ; 18 |
450: 88 b3 in r24, 0x18 ; 24 |
452: 81 7f andi r24, 0xF1 ; 241 |
454: 88 bb out 0x18, r24 ; 24 |
456: 95 e0 ldi r25, 0x05 ; 5 |
458: d9 2e mov r13, r25 |
Delay(5); |
} |
Strom = 0; |
45a: 10 92 7b 00 sts 0x007B, r1 |
45e: 10 92 7a 00 sts 0x007A, r1 |
462: 80 e1 ldi r24, 0x10 ; 16 |
464: 97 e2 ldi r25, 0x27 ; 39 |
466: 00 c0 rjmp .+0 ; 0x468 <__stack+0x9> |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
468: 01 97 sbiw r24, 0x01 ; 1 |
46a: 2f ef ldi r18, 0xFF ; 255 |
46c: 8f 3f cpi r24, 0xFF ; 255 |
46e: 92 07 cpc r25, r18 |
470: d9 f7 brne .-10 ; 0x468 <__stack+0x9> |
472: 00 e0 ldi r16, 0x00 ; 0 |
474: 10 e0 ldi r17, 0x00 ; 0 |
Strom = 0; |
Delay(10000); |
for(i=0;i<t;i++) |
{ |
LOW_C_EIN; |
476: 95 9a sbi 0x12, 5 ; 18 |
DelayM(1); |
478: 81 e0 ldi r24, 0x01 ; 1 |
47a: 90 e0 ldi r25, 0x00 ; 0 |
47c: de de rcall .-580 ; 0x23a <DelayM> |
FETS_OFF; |
47e: 82 b3 in r24, 0x12 ; 18 |
480: 87 7c andi r24, 0xC7 ; 199 |
482: 82 bb out 0x12, r24 ; 18 |
484: 88 b3 in r24, 0x18 ; 24 |
486: 81 7f andi r24, 0xF1 ; 241 |
488: 88 bb out 0x18, r24 ; 24 |
Delay(5); |
HIGH_C_EIN; |
48a: c1 9a sbi 0x18, 1 ; 24 |
DelayM(1); |
48c: 81 e0 ldi r24, 0x01 ; 1 |
48e: 90 e0 ldi r25, 0x00 ; 0 |
490: d4 de rcall .-600 ; 0x23a <DelayM> |
FETS_OFF; |
492: 82 b3 in r24, 0x12 ; 18 |
494: 87 7c andi r24, 0xC7 ; 199 |
496: 82 bb out 0x12, r24 ; 18 |
498: 88 b3 in r24, 0x18 ; 24 |
49a: 81 7f andi r24, 0xF1 ; 241 |
49c: 88 bb out 0x18, r24 ; 24 |
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); FETS_OFF; break;} |
49e: 80 91 b5 02 lds r24, 0x02B5 |
4a2: 90 91 b6 02 lds r25, 0x02B6 |
4a6: 8a 0d add r24, r10 |
4a8: 9b 1d adc r25, r11 |
4aa: 20 91 7a 00 lds r18, 0x007A |
4ae: 30 91 7b 00 lds r19, 0x007B |
4b2: 82 17 cp r24, r18 |
4b4: 93 07 cpc r25, r19 |
4b6: 30 f0 brcs .+12 ; 0x4c4 <__stack+0x65> |
} |
Strom = 0; |
Delay(10000); |
for(i=0;i<t;i++) |
4b8: 0f 5f subi r16, 0xFF ; 255 |
4ba: 1f 4f sbci r17, 0xFF ; 255 |
4bc: 0e 15 cp r16, r14 |
4be: 1f 05 cpc r17, r15 |
4c0: d0 f2 brcs .-76 ; 0x476 <__stack+0x17> |
4c2: 0b c0 rjmp .+22 ; 0x4da <__stack+0x7b> |
FETS_OFF; |
Delay(5); |
HIGH_C_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); FETS_OFF; break;} |
4c4: 86 e3 ldi r24, 0x36 ; 54 |
4c6: 00 d5 rcall .+2560 ; 0xec8 <uart_putchar> |
4c8: 82 b3 in r24, 0x12 ; 18 |
4ca: 87 7c andi r24, 0xC7 ; 199 |
4cc: 82 bb out 0x12, r24 ; 18 |
4ce: 88 b3 in r24, 0x18 ; 24 |
4d0: 81 7f andi r24, 0xF1 ; 241 |
4d2: 88 bb out 0x18, r24 ; 24 |
4d4: 86 e0 ldi r24, 0x06 ; 6 |
4d6: d8 2e mov r13, r24 |
4d8: 02 c0 rjmp .+4 ; 0x4de <__stack+0x7f> |
Delay(5); |
} |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
4da: dd 20 and r13, r13 |
4dc: 19 f0 breq .+6 ; 0x4e4 <__stack+0x85> |
4de: 8d 2d mov r24, r13 |
4e0: cd de rcall .-614 ; 0x27c <RotBlink> |
4e2: fd cf rjmp .-6 ; 0x4de <__stack+0x7f> |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_A; |
4e4: 80 91 8d 00 lds r24, 0x008D |
4e8: 87 b9 out 0x07, r24 ; 7 |
FETS_OFF; |
4ea: 82 b3 in r24, 0x12 ; 18 |
4ec: 87 7c andi r24, 0xC7 ; 199 |
4ee: 82 bb out 0x12, r24 ; 18 |
4f0: 88 b3 in r24, 0x18 ; 24 |
4f2: 81 7f andi r24, 0xF1 ; 241 |
4f4: 88 bb out 0x18, r24 ; 24 |
LOW_B_EIN; // Low B ein |
4f6: 94 9a sbi 0x12, 4 ; 18 |
LOW_C_EIN; // Low C ein |
4f8: 95 9a sbi 0x12, 5 ; 18 |
Strom = 0; |
4fa: 10 92 7b 00 sts 0x007B, r1 |
4fe: 10 92 7a 00 sts 0x007A, r1 |
502: 00 e0 ldi r16, 0x00 ; 0 |
504: 10 e0 ldi r17, 0x00 ; 0 |
506: ff 24 eor r15, r15 |
#define SOUND2_A 330 |
#define SOUND3_A 360 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_A_EIN; // Test A |
508: c3 9a sbi 0x18, 3 ; 24 |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;}; |
50a: 80 e0 ldi r24, 0x00 ; 0 |
50c: e5 d6 rcall .+3530 ; 0x12d8 <MessAD> |
50e: c3 97 sbiw r24, 0x33 ; 51 |
510: 18 f0 brcs .+6 ; 0x518 <__stack+0xb9> |
512: 41 e0 ldi r20, 0x01 ; 1 |
514: f4 2a or r15, r20 |
516: 02 c0 rjmp .+4 ; 0x51c <__stack+0xbd> |
518: 5e ef ldi r21, 0xFE ; 254 |
51a: f5 22 and r15, r21 |
PORTB = 0; |
51c: 18 ba out 0x18, r1 ; 24 |
51e: 8c e2 ldi r24, 0x2C ; 44 |
520: 91 e0 ldi r25, 0x01 ; 1 |
522: 00 c0 rjmp .+0 ; 0x524 <__stack+0xc5> |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
524: 01 97 sbiw r24, 0x01 ; 1 |
526: 2f ef ldi r18, 0xFF ; 255 |
528: 8f 3f cpi r24, 0xFF ; 255 |
52a: 92 07 cpc r25, r18 |
52c: d9 f7 brne .-10 ; 0x524 <__stack+0xc5> |
#define SOUND_E 1 // 1 |
#define SOUND1_A 300 |
#define SOUND2_A 330 |
#define SOUND3_A 360 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
52e: 0f 5f subi r16, 0xFF ; 255 |
530: 1f 4f sbci r17, 0xFF ; 255 |
532: 09 37 cpi r16, 0x79 ; 121 |
534: 11 05 cpc r17, r1 |
536: 41 f7 brne .-48 ; 0x508 <__stack+0xa9> |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
538: 82 b3 in r24, 0x12 ; 18 |
53a: 87 7c andi r24, 0xC7 ; 199 |
53c: 82 bb out 0x12, r24 ; 18 |
53e: 88 b3 in r24, 0x18 ; 24 |
540: 81 7f andi r24, 0xF1 ; 241 |
542: 88 bb out 0x18, r24 ; 24 |
LOW_A_EIN; // Low A ein |
544: 93 9a sbi 0x12, 3 ; 18 |
LOW_C_EIN; // Low C ein |
546: 95 9a sbi 0x12, 5 ; 18 |
548: 00 e0 ldi r16, 0x00 ; 0 |
54a: 10 e0 ldi r17, 0x00 ; 0 |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
54c: c2 9a sbi 0x18, 2 ; 24 |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;}; |
54e: 81 e0 ldi r24, 0x01 ; 1 |
550: c3 d6 rcall .+3462 ; 0x12d8 <MessAD> |
552: c3 97 sbiw r24, 0x33 ; 51 |
554: 18 f0 brcs .+6 ; 0x55c <__stack+0xfd> |
556: 42 e0 ldi r20, 0x02 ; 2 |
558: f4 2a or r15, r20 |
55a: 02 c0 rjmp .+4 ; 0x560 <__stack+0x101> |
55c: 5d ef ldi r21, 0xFD ; 253 |
55e: f5 22 and r15, r21 |
PORTB = 0; |
560: 18 ba out 0x18, r1 ; 24 |
562: 8c e2 ldi r24, 0x2C ; 44 |
564: 91 e0 ldi r25, 0x01 ; 1 |
566: 00 c0 rjmp .+0 ; 0x568 <__stack+0x109> |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
568: 01 97 sbiw r24, 0x01 ; 1 |
56a: 2f ef ldi r18, 0xFF ; 255 |
56c: 8f 3f cpi r24, 0xFF ; 255 |
56e: 92 07 cpc r25, r18 |
570: d9 f7 brne .-10 ; 0x568 <__stack+0x109> |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
572: 0f 5f subi r16, 0xFF ; 255 |
574: 1f 4f sbci r17, 0xFF ; 255 |
576: 05 38 cpi r16, 0x85 ; 133 |
578: 11 05 cpc r17, r1 |
57a: 41 f7 brne .-48 ; 0x54c <__stack+0xed> |
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
57c: 82 b3 in r24, 0x12 ; 18 |
57e: 87 7c andi r24, 0xC7 ; 199 |
580: 82 bb out 0x12, r24 ; 18 |
582: 88 b3 in r24, 0x18 ; 24 |
584: 81 7f andi r24, 0xF1 ; 241 |
586: 88 bb out 0x18, r24 ; 24 |
LOW_A_EIN; // Low A ein |
588: 93 9a sbi 0x12, 3 ; 18 |
LOW_B_EIN; // Low B ein |
58a: 94 9a sbi 0x12, 4 ; 18 |
58c: 00 e0 ldi r16, 0x00 ; 0 |
58e: 10 e0 ldi r17, 0x00 ; 0 |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
590: c1 9a sbi 0x18, 1 ; 24 |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;}; |
592: 82 e0 ldi r24, 0x02 ; 2 |
594: a1 d6 rcall .+3394 ; 0x12d8 <MessAD> |
596: c3 97 sbiw r24, 0x33 ; 51 |
598: 18 f0 brcs .+6 ; 0x5a0 <__stack+0x141> |
59a: 44 e0 ldi r20, 0x04 ; 4 |
59c: f4 2a or r15, r20 |
59e: 02 c0 rjmp .+4 ; 0x5a4 <__stack+0x145> |
5a0: 5b ef ldi r21, 0xFB ; 251 |
5a2: f5 22 and r15, r21 |
PORTB = 0; |
5a4: 18 ba out 0x18, r1 ; 24 |
5a6: 8a e4 ldi r24, 0x4A ; 74 |
5a8: 91 e0 ldi r25, 0x01 ; 1 |
5aa: 00 c0 rjmp .+0 ; 0x5ac <__stack+0x14d> |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
5ac: 01 97 sbiw r24, 0x01 ; 1 |
5ae: 2f ef ldi r18, 0xFF ; 255 |
5b0: 8f 3f cpi r24, 0xFF ; 255 |
5b2: 92 07 cpc r25, r18 |
5b4: d9 f7 brne .-10 ; 0x5ac <__stack+0x14d> |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
5b6: 0f 5f subi r16, 0xFF ; 255 |
5b8: 1f 4f sbci r17, 0xFF ; 255 |
5ba: 0f 36 cpi r16, 0x6F ; 111 |
5bc: 11 05 cpc r17, r1 |
5be: 41 f7 brne .-48 ; 0x590 <__stack+0x131> |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
FETS_OFF; |
5c0: 82 b3 in r24, 0x12 ; 18 |
5c2: 87 7c andi r24, 0xC7 ; 199 |
5c4: 82 bb out 0x12, r24 ; 18 |
5c6: 88 b3 in r24, 0x18 ; 24 |
5c8: 81 7f andi r24, 0xF1 ; 241 |
5ca: 88 bb out 0x18, r24 ; 24 |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Low-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// SENSE_B; |
LOW_A_EIN; // Low A ein |
5cc: 93 9a sbi 0x12, 3 ; 18 |
5ce: 00 e0 ldi r16, 0x00 ; 0 |
5d0: 10 e0 ldi r17, 0x00 ; 0 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_B_EIN; // Test B |
5d2: c2 9a sbi 0x18, 2 ; 24 |
Delay(SOUND_E); |
if(MessAD(0) > 128) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;}; |
5d4: 80 e0 ldi r24, 0x00 ; 0 |
5d6: 80 d6 rcall .+3328 ; 0x12d8 <MessAD> |
5d8: 81 38 cpi r24, 0x81 ; 129 |
5da: 91 05 cpc r25, r1 |
5dc: 18 f0 brcs .+6 ; 0x5e4 <__stack+0x185> |
5de: 47 ef ldi r20, 0xF7 ; 247 |
5e0: f4 22 and r15, r20 |
5e2: 02 c0 rjmp .+4 ; 0x5e8 <__stack+0x189> |
5e4: 58 e0 ldi r21, 0x08 ; 8 |
5e6: f5 2a or r15, r21 |
PORTB = 0; |
5e8: 18 ba out 0x18, r1 ; 24 |
5ea: 8a e4 ldi r24, 0x4A ; 74 |
5ec: 91 e0 ldi r25, 0x01 ; 1 |
5ee: 00 c0 rjmp .+0 ; 0x5f0 <__stack+0x191> |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
5f0: 01 97 sbiw r24, 0x01 ; 1 |
5f2: 2f ef ldi r18, 0xFF ; 255 |
5f4: 8f 3f cpi r24, 0xFF ; 255 |
5f6: 92 07 cpc r25, r18 |
5f8: d9 f7 brne .-10 ; 0x5f0 <__stack+0x191> |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Low-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// SENSE_B; |
LOW_A_EIN; // Low A ein |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
5fa: 0f 5f subi r16, 0xFF ; 255 |
5fc: 1f 4f sbci r17, 0xFF ; 255 |
5fe: 09 37 cpi r16, 0x79 ; 121 |
600: 11 05 cpc r17, r1 |
602: 39 f7 brne .-50 ; 0x5d2 <__stack+0x173> |
PORTB = 0; |
Delay(SOUND2_A); |
} |
//++++++++++++++++++++++++++++++++++++ |
LOW_C_EIN; // Low C ein |
604: 95 9a sbi 0x12, 5 ; 18 |
606: 00 e0 ldi r16, 0x00 ; 0 |
608: 10 e0 ldi r17, 0x00 ; 0 |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
60a: c2 9a sbi 0x18, 2 ; 24 |
Delay(SOUND_E); |
if(MessAD(2) > 128) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;}; |
60c: 82 e0 ldi r24, 0x02 ; 2 |
60e: 64 d6 rcall .+3272 ; 0x12d8 <MessAD> |
610: 81 38 cpi r24, 0x81 ; 129 |
612: 91 05 cpc r25, r1 |
614: 18 f0 brcs .+6 ; 0x61c <__stack+0x1bd> |
616: 4f ed ldi r20, 0xDF ; 223 |
618: f4 22 and r15, r20 |
61a: 02 c0 rjmp .+4 ; 0x620 <__stack+0x1c1> |
61c: 50 e2 ldi r21, 0x20 ; 32 |
61e: f5 2a or r15, r21 |
PORTB = 0; |
620: 18 ba out 0x18, r1 ; 24 |
622: 88 e6 ldi r24, 0x68 ; 104 |
624: 91 e0 ldi r25, 0x01 ; 1 |
626: 00 c0 rjmp .+0 ; 0x628 <__stack+0x1c9> |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
628: 01 97 sbiw r24, 0x01 ; 1 |
62a: 2f ef ldi r18, 0xFF ; 255 |
62c: 8f 3f cpi r24, 0xFF ; 255 |
62e: 92 07 cpc r25, r18 |
630: d9 f7 brne .-10 ; 0x628 <__stack+0x1c9> |
Delay(SOUND2_A); |
} |
//++++++++++++++++++++++++++++++++++++ |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
632: 0f 5f subi r16, 0xFF ; 255 |
634: 1f 4f sbci r17, 0xFF ; 255 |
636: 05 38 cpi r16, 0x85 ; 133 |
638: 11 05 cpc r17, r1 |
63a: 39 f7 brne .-50 ; 0x60a <__stack+0x1ab> |
Delay(SOUND_E); |
if(MessAD(2) > 128) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
63c: 82 b3 in r24, 0x12 ; 18 |
63e: 87 7c andi r24, 0xC7 ; 199 |
640: 82 bb out 0x12, r24 ; 18 |
642: 88 b3 in r24, 0x18 ; 24 |
644: 81 7f andi r24, 0xF1 ; 241 |
646: 88 bb out 0x18, r24 ; 24 |
//++++++++++++++++++++++++++++++++++++ |
FETS_OFF; |
648: 82 b3 in r24, 0x12 ; 18 |
64a: 87 7c andi r24, 0xC7 ; 199 |
64c: 82 bb out 0x12, r24 ; 18 |
64e: 88 b3 in r24, 0x18 ; 24 |
650: 81 7f andi r24, 0xF1 ; 241 |
652: 88 bb out 0x18, r24 ; 24 |
LOW_B_EIN; // Low B ein |
654: 94 9a sbi 0x12, 4 ; 18 |
656: 00 e0 ldi r16, 0x00 ; 0 |
658: 10 e0 ldi r17, 0x00 ; 0 |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
65a: c1 9a sbi 0x18, 1 ; 24 |
Delay(SOUND_E); |
if(MessAD(1) > 128) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;}; |
65c: 81 e0 ldi r24, 0x01 ; 1 |
65e: 3c d6 rcall .+3192 ; 0x12d8 <MessAD> |
660: 81 38 cpi r24, 0x81 ; 129 |
662: 91 05 cpc r25, r1 |
664: 18 f0 brcs .+6 ; 0x66c <__stack+0x20d> |
666: 4f ee ldi r20, 0xEF ; 239 |
668: f4 22 and r15, r20 |
66a: 02 c0 rjmp .+4 ; 0x670 <__stack+0x211> |
66c: 50 e1 ldi r21, 0x10 ; 16 |
66e: f5 2a or r15, r21 |
PORTB = 0; |
670: 18 ba out 0x18, r1 ; 24 |
672: 88 e6 ldi r24, 0x68 ; 104 |
674: 91 e0 ldi r25, 0x01 ; 1 |
676: 00 c0 rjmp .+0 ; 0x678 <__stack+0x219> |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
678: 01 97 sbiw r24, 0x01 ; 1 |
67a: 2f ef ldi r18, 0xFF ; 255 |
67c: 8f 3f cpi r24, 0xFF ; 255 |
67e: 92 07 cpc r25, r18 |
680: d9 f7 brne .-10 ; 0x678 <__stack+0x219> |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
682: 0f 5f subi r16, 0xFF ; 255 |
684: 1f 4f sbci r17, 0xFF ; 255 |
686: 0f 36 cpi r16, 0x6F ; 111 |
688: 11 05 cpc r17, r1 |
68a: 39 f7 brne .-50 ; 0x65a <__stack+0x1fb> |
Delay(SOUND_E); |
if(MessAD(1) > 128) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
68c: 82 b3 in r24, 0x12 ; 18 |
68e: 87 7c andi r24, 0xC7 ; 199 |
690: 82 bb out 0x12, r24 ; 18 |
692: 88 b3 in r24, 0x18 ; 24 |
694: 81 7f andi r24, 0xF1 ; 241 |
696: 88 bb out 0x18, r24 ; 24 |
//++++++++++++++++++++++++++++++++++++ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
sei();//Globale Interrupts Einschalten |
698: 78 94 sei |
Delay(SOUND_E); |
PORTB = 0; |
Delay(SOUND8_A); |
} |
*/ |
Delay_ms(300 * (3-ADR_TAB[MotorAdresse])); |
69a: 80 91 66 00 lds r24, 0x0066 |
69e: fe 01 movw r30, r28 |
6a0: e8 0f add r30, r24 |
6a2: f1 1d adc r31, r1 |
6a4: 21 81 ldd r18, Z+1 ; 0x01 |
6a6: 83 e0 ldi r24, 0x03 ; 3 |
6a8: 90 e0 ldi r25, 0x00 ; 0 |
6aa: 82 1b sub r24, r18 |
6ac: 91 09 sbc r25, r1 |
6ae: 2c e2 ldi r18, 0x2C ; 44 |
6b0: 31 e0 ldi r19, 0x01 ; 1 |
6b2: ac 01 movw r20, r24 |
6b4: 42 9f mul r20, r18 |
6b6: c0 01 movw r24, r0 |
6b8: 43 9f mul r20, r19 |
6ba: 90 0d add r25, r0 |
6bc: 52 9f mul r21, r18 |
6be: 90 0d add r25, r0 |
6c0: 11 24 eor r1, r1 |
6c2: b6 d5 rcall .+2924 ; 0x1230 <Delay_ms> |
if(!(MosfetOkay & 0x01)) { anz = 1; UDR='A'; } else |
6c4: f0 fc sbrc r15, 0 |
6c6: 04 c0 rjmp .+8 ; 0x6d0 <__stack+0x271> |
6c8: 81 e4 ldi r24, 0x41 ; 65 |
6ca: 8c b9 out 0x0c, r24 ; 12 |
6cc: 11 e0 ldi r17, 0x01 ; 1 |
6ce: 1d c0 rjmp .+58 ; 0x70a <__stack+0x2ab> |
if(!(MosfetOkay & 0x02)) { anz = 2; UDR='B'; } else |
6d0: f1 fc sbrc r15, 1 |
6d2: 04 c0 rjmp .+8 ; 0x6dc <__stack+0x27d> |
6d4: 82 e4 ldi r24, 0x42 ; 66 |
6d6: 8c b9 out 0x0c, r24 ; 12 |
6d8: 12 e0 ldi r17, 0x02 ; 2 |
6da: 17 c0 rjmp .+46 ; 0x70a <__stack+0x2ab> |
if(!(MosfetOkay & 0x04)) { anz = 3; UDR='C'; } else |
6dc: f2 fc sbrc r15, 2 |
6de: 04 c0 rjmp .+8 ; 0x6e8 <__stack+0x289> |
6e0: 83 e4 ldi r24, 0x43 ; 67 |
6e2: 8c b9 out 0x0c, r24 ; 12 |
6e4: 13 e0 ldi r17, 0x03 ; 3 |
6e6: 11 c0 rjmp .+34 ; 0x70a <__stack+0x2ab> |
if(!(MosfetOkay & 0x08)) { anz = 4; UDR='a'; } else |
6e8: f3 fc sbrc r15, 3 |
6ea: 04 c0 rjmp .+8 ; 0x6f4 <__stack+0x295> |
6ec: 81 e6 ldi r24, 0x61 ; 97 |
6ee: 8c b9 out 0x0c, r24 ; 12 |
6f0: 14 e0 ldi r17, 0x04 ; 4 |
6f2: 0b c0 rjmp .+22 ; 0x70a <__stack+0x2ab> |
if(!(MosfetOkay & 0x10)) { anz = 5; UDR='b'; } else |
6f4: f4 fc sbrc r15, 4 |
6f6: 04 c0 rjmp .+8 ; 0x700 <__stack+0x2a1> |
6f8: 82 e6 ldi r24, 0x62 ; 98 |
6fa: 8c b9 out 0x0c, r24 ; 12 |
6fc: 15 e0 ldi r17, 0x05 ; 5 |
6fe: 05 c0 rjmp .+10 ; 0x70a <__stack+0x2ab> |
if(!(MosfetOkay & 0x20)) { anz = 6; UDR='c'; } |
700: f5 fc sbrc r15, 5 |
702: 06 c0 rjmp .+12 ; 0x710 <__stack+0x2b1> |
704: 83 e6 ldi r24, 0x63 ; 99 |
706: 8c b9 out 0x0c, r24 ; 12 |
708: 16 e0 ldi r17, 0x06 ; 6 |
// if(anz) Delay_ms(1000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
70a: 81 2f mov r24, r17 |
70c: b7 dd rcall .-1170 ; 0x27c <RotBlink> |
70e: fd cf rjmp .-6 ; 0x70a <__stack+0x2ab> |
RotBlink(anz); |
710: 80 e0 ldi r24, 0x00 ; 0 |
712: b4 dd rcall .-1176 ; 0x27c <RotBlink> |
uart_putchar('.'); |
714: 8e e2 ldi r24, 0x2E ; 46 |
716: d8 d3 rcall .+1968 ; 0xec8 <uart_putchar> |
} |
718: 27 96 adiw r28, 0x07 ; 7 |
71a: 0f b6 in r0, 0x3f ; 63 |
71c: f8 94 cli |
71e: de bf out 0x3e, r29 ; 62 |
720: 0f be out 0x3f, r0 ; 63 |
722: cd bf out 0x3d, r28 ; 61 |
724: cf 91 pop r28 |
726: df 91 pop r29 |
728: 1f 91 pop r17 |
72a: 0f 91 pop r16 |
72c: ff 90 pop r15 |
72e: ef 90 pop r14 |
730: df 90 pop r13 |
732: bf 90 pop r11 |
734: af 90 pop r10 |
736: 08 95 ret |
00000738 <Anwerfen>: |
//############################################################################ |
// |
char Anwerfen(unsigned char pwm) |
//############################################################################ |
{ |
738: 6f 92 push r6 |
73a: 7f 92 push r7 |
73c: 9f 92 push r9 |
73e: af 92 push r10 |
740: bf 92 push r11 |
742: cf 92 push r12 |
744: df 92 push r13 |
746: ef 92 push r14 |
748: ff 92 push r15 |
74a: 0f 93 push r16 |
74c: 1f 93 push r17 |
74e: cf 93 push r28 |
750: df 93 push r29 |
752: 98 2e mov r9, r24 |
unsigned long timer = 300,i; |
DISABLE_SENSE_INT; |
754: 10 92 b1 00 sts 0x00B1, r1 |
758: 43 98 cbi 0x08, 3 ; 8 |
PWM = 5; |
75a: 85 e0 ldi r24, 0x05 ; 5 |
75c: 90 e0 ldi r25, 0x00 ; 0 |
75e: 90 93 79 00 sts 0x0079, r25 |
762: 80 93 78 00 sts 0x0078, r24 |
SetPWM(); |
766: 7b dc rcall .-1802 ; 0x5e <SetPWM> |
Manuell(); |
768: 0f d7 rcall .+3614 ; 0x1588 <Manuell> |
// Delay_ms(200); |
MinUpmPulse = SetDelay(300); |
76a: 8c e2 ldi r24, 0x2C ; 44 |
76c: 91 e0 ldi r25, 0x01 ; 1 |
76e: 4c d5 rcall .+2712 ; 0x1208 <SetDelay> |
770: 90 93 b4 02 sts 0x02B4, r25 |
774: 80 93 b3 02 sts 0x02B3, r24 |
778: 09 c0 rjmp .+18 ; 0x78c <Anwerfen+0x54> |
while(!CheckDelay(MinUpmPulse)) |
{ |
FastADConvert(); |
77a: c3 d5 rcall .+2950 ; 0x1302 <FastADConvert> |
if(Strom > 120) |
77c: 80 91 7a 00 lds r24, 0x007A |
780: 90 91 7b 00 lds r25, 0x007B |
784: 89 37 cpi r24, 0x79 ; 121 |
786: 91 05 cpc r25, r1 |
788: 08 f0 brcs .+2 ; 0x78c <Anwerfen+0x54> |
78a: 5c c0 rjmp .+184 ; 0x844 <Anwerfen+0x10c> |
PWM = 5; |
SetPWM(); |
Manuell(); |
// Delay_ms(200); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) |
78c: 80 91 b3 02 lds r24, 0x02B3 |
790: 90 91 b4 02 lds r25, 0x02B4 |
794: 43 d5 rcall .+2694 ; 0x121c <CheckDelay> |
796: 88 23 and r24, r24 |
798: 81 f3 breq .-32 ; 0x77a <Anwerfen+0x42> |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
} |
PWM = pwm; |
79a: 90 92 78 00 sts 0x0078, r9 |
79e: 10 92 79 00 sts 0x0079, r1 |
7a2: 5c e2 ldi r21, 0x2C ; 44 |
7a4: a5 2e mov r10, r21 |
7a6: 51 e0 ldi r21, 0x01 ; 1 |
7a8: b5 2e mov r11, r21 |
7aa: c1 2c mov r12, r1 |
7ac: d1 2c mov r13, r1 |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
7ae: c6 e8 ldi r28, 0x86 ; 134 |
7b0: d3 e0 ldi r29, 0x03 ; 3 |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
DebugOut.Analog[4] = OCR2; |
7b2: 46 e0 ldi r20, 0x06 ; 6 |
7b4: 64 2e mov r6, r20 |
7b6: 71 2c mov r7, r1 |
7b8: 6c 0e add r6, r28 |
7ba: 7d 1e adc r7, r29 |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
} |
PWM = pwm; |
7bc: ee 24 eor r14, r14 |
7be: ff 24 eor r15, r15 |
7c0: 87 01 movw r16, r14 |
while(1) |
{ |
for(i=0;i<timer; i++) |
{ |
if(!UebertragungAbgeschlossen) SendUart(); |
7c2: 80 91 6f 00 lds r24, 0x006F |
7c6: 88 23 and r24, r24 |
7c8: 11 f4 brne .+4 ; 0x7ce <Anwerfen+0x96> |
7ca: 6c d2 rcall .+1240 ; 0xca4 <SendUart> |
7cc: 01 c0 rjmp .+2 ; 0x7d0 <Anwerfen+0x98> |
else DatenUebertragung(); |
7ce: 6e d4 rcall .+2268 ; 0x10ac <DatenUebertragung> |
//############################################################################ |
// |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
7d0: 82 b7 in r24, 0x32 ; 50 |
7d2: 8c 59 subi r24, 0x9C ; 156 |
while((TCNT0 - dauer) & 0x80); |
7d4: 98 2f mov r25, r24 |
7d6: 82 b7 in r24, 0x32 ; 50 |
7d8: 89 1b sub r24, r25 |
7da: 87 fd sbrc r24, 7 |
7dc: fc cf rjmp .-8 ; 0x7d6 <Anwerfen+0x9e> |
} |
} |
PWM = pwm; |
while(1) |
{ |
for(i=0;i<timer; i++) |
7de: 08 94 sec |
7e0: e1 1c adc r14, r1 |
7e2: f1 1c adc r15, r1 |
7e4: 01 1d adc r16, r1 |
7e6: 11 1d adc r17, r1 |
7e8: ea 14 cp r14, r10 |
7ea: fb 04 cpc r15, r11 |
7ec: 0c 05 cpc r16, r12 |
7ee: 1d 05 cpc r17, r13 |
7f0: 40 f3 brcs .-48 ; 0x7c2 <Anwerfen+0x8a> |
} |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
7f2: 80 91 7a 00 lds r24, 0x007A |
7f6: 90 91 7b 00 lds r25, 0x007B |
7fa: 90 93 85 03 sts 0x0385, r25 |
7fe: 80 93 84 03 sts 0x0384, r24 |
DebugOut.Analog[1] = Mittelstrom; |
802: 80 91 7d 00 lds r24, 0x007D |
806: 80 93 86 03 sts 0x0386, r24 |
80a: 19 82 std Y+1, r1 ; 0x01 |
DebugOut.Analog[2] = SIO_Drehzahl; |
80c: 80 91 8b 00 lds r24, 0x008B |
810: 90 91 8c 00 lds r25, 0x008C |
814: 90 93 89 03 sts 0x0389, r25 |
818: 80 93 88 03 sts 0x0388, r24 |
DebugOut.Analog[3] = PPM_Signal; |
81c: 80 91 a5 00 lds r24, 0x00A5 |
820: 90 91 a6 00 lds r25, 0x00A6 |
824: 90 93 8b 03 sts 0x038B, r25 |
828: 80 93 8a 03 sts 0x038A, r24 |
DebugOut.Analog[4] = OCR2; |
82c: 83 b5 in r24, 0x23 ; 35 |
82e: 80 93 8c 03 sts 0x038C, r24 |
832: f3 01 movw r30, r6 |
834: 11 82 std Z+1, r1 ; 0x01 |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
Wait(100); // warten |
} |
DebugAusgaben(); |
FastADConvert(); |
836: 65 d5 rcall .+2762 ; 0x1302 <FastADConvert> |
if(Strom > 60) |
838: 80 91 7a 00 lds r24, 0x007A |
83c: 90 91 7b 00 lds r25, 0x007B |
840: cd 97 sbiw r24, 0x3d ; 61 |
842: a8 f0 brcs .+42 ; 0x86e <Anwerfen+0x136> |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
844: 82 b3 in r24, 0x12 ; 18 |
846: 87 7c andi r24, 0xC7 ; 199 |
848: 82 bb out 0x12, r24 ; 18 |
84a: 1b bc out 0x2b, r1 ; 43 |
84c: 1a bc out 0x2a, r1 ; 42 |
84e: 19 bc out 0x29, r1 ; 41 |
850: 18 bc out 0x28, r1 ; 40 |
852: 13 bc out 0x23, r1 ; 35 |
854: 81 e0 ldi r24, 0x01 ; 1 |
856: 8f bd out 0x2f, r24 ; 47 |
858: 81 e4 ldi r24, 0x41 ; 65 |
85a: 85 bd out 0x25, r24 ; 37 |
85c: 8e e0 ldi r24, 0x0E ; 14 |
85e: 87 bb out 0x17, r24 ; 23 |
860: 88 b3 in r24, 0x18 ; 24 |
862: 81 7f andi r24, 0xF1 ; 241 |
864: 88 bb out 0x18, r24 ; 24 |
RotBlink(10); |
866: 8a e0 ldi r24, 0x0A ; 10 |
868: 09 dd rcall .-1518 ; 0x27c <RotBlink> |
86a: 80 e0 ldi r24, 0x00 ; 0 |
86c: 2e c0 rjmp .+92 ; 0x8ca <Anwerfen+0x192> |
return(0); |
} |
timer-= timer/15+1; |
86e: c6 01 movw r24, r12 |
870: b5 01 movw r22, r10 |
872: 2f e0 ldi r18, 0x0F ; 15 |
874: 30 e0 ldi r19, 0x00 ; 0 |
876: 40 e0 ldi r20, 0x00 ; 0 |
878: 50 e0 ldi r21, 0x00 ; 0 |
87a: 12 d8 rcall .-4060 ; 0xfffff8a0 <__eeprom_end+0xff7ef8a0> |
87c: 20 95 com r18 |
87e: 30 95 com r19 |
880: 40 95 com r20 |
882: 50 95 com r21 |
884: a2 0e add r10, r18 |
886: b3 1e adc r11, r19 |
888: c4 1e adc r12, r20 |
88a: d5 1e adc r13, r21 |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return(1); } |
88c: f9 e1 ldi r31, 0x19 ; 25 |
88e: af 16 cp r10, r31 |
890: b1 04 cpc r11, r1 |
892: c1 04 cpc r12, r1 |
894: d1 04 cpc r13, r1 |
896: c0 f0 brcs .+48 ; 0x8c8 <Anwerfen+0x190> |
Manuell(); |
898: 77 d6 rcall .+3310 ; 0x1588 <Manuell> |
Phase++; |
89a: 80 91 af 00 lds r24, 0x00AF |
89e: 8f 5f subi r24, 0xFF ; 255 |
8a0: 80 93 af 00 sts 0x00AF, r24 |
Phase %= 6; |
8a4: 80 91 af 00 lds r24, 0x00AF |
8a8: 66 e0 ldi r22, 0x06 ; 6 |
8aa: da d7 rcall .+4020 ; 0x1860 <__udivmodqi4> |
8ac: 90 93 af 00 sts 0x00AF, r25 |
AdConvert(); |
8b0: dc d4 rcall .+2488 ; 0x126a <AdConvert> |
PWM = pwm; |
8b2: 90 92 78 00 sts 0x0078, r9 |
8b6: 10 92 79 00 sts 0x0079, r1 |
SetPWM(); |
8ba: d1 db rcall .-2142 ; 0x5e <SetPWM> |
if(SENSE) |
8bc: 44 9b sbis 0x08, 4 ; 8 |
8be: 7e cf rjmp .-260 ; 0x7bc <Anwerfen+0x84> |
{ |
PORTD ^= GRUEN; |
8c0: 82 b3 in r24, 0x12 ; 18 |
8c2: 80 58 subi r24, 0x80 ; 128 |
8c4: 82 bb out 0x12, r24 ; 18 |
8c6: 7a cf rjmp .-268 ; 0x7bc <Anwerfen+0x84> |
8c8: 81 e0 ldi r24, 0x01 ; 1 |
} |
} |
} |
8ca: df 91 pop r29 |
8cc: cf 91 pop r28 |
8ce: 1f 91 pop r17 |
8d0: 0f 91 pop r16 |
8d2: ff 90 pop r15 |
8d4: ef 90 pop r14 |
8d6: df 90 pop r13 |
8d8: cf 90 pop r12 |
8da: bf 90 pop r11 |
8dc: af 90 pop r10 |
8de: 9f 90 pop r9 |
8e0: 7f 90 pop r7 |
8e2: 6f 90 pop r6 |
8e4: 08 95 ret |
000008e6 <main>: |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
8e6: 5f 92 push r5 |
8e8: 6f 92 push r6 |
8ea: 7f 92 push r7 |
8ec: 8f 92 push r8 |
8ee: 9f 92 push r9 |
8f0: af 92 push r10 |
8f2: bf 92 push r11 |
8f4: cf 92 push r12 |
8f6: df 92 push r13 |
8f8: ef 92 push r14 |
8fa: ff 92 push r15 |
8fc: 0f 93 push r16 |
8fe: 1f 93 push r17 |
900: cf 93 push r28 |
902: df 93 push r29 |
char altPhase = 0; |
int test = 0; |
unsigned int Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
DDRC = 0x08; |
904: 88 e0 ldi r24, 0x08 ; 8 |
906: 84 bb out 0x14, r24 ; 20 |
PORTC = 0x08; |
908: 85 bb out 0x15, r24 ; 21 |
DDRD = 0x3A; |
90a: 8a e3 ldi r24, 0x3A ; 58 |
90c: 81 bb out 0x11, r24 ; 17 |
PORTD = 0x00; |
90e: 12 ba out 0x12, r1 ; 18 |
DDRB = 0x0E; |
910: 8e e0 ldi r24, 0x0E ; 14 |
912: 87 bb out 0x17, r24 ; 23 |
PORTB = 0x31; |
914: 81 e3 ldi r24, 0x31 ; 49 |
916: 88 bb out 0x18, r24 ; 24 |
#if (MOTORADRESSE == 0) |
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl |
918: 88 b3 in r24, 0x18 ; 24 |
91a: 80 6c ori r24, 0xC0 ; 192 |
91c: 88 bb out 0x18, r24 ; 24 |
for(test=0;test<500;test++); |
if(PINB & ADR1) |
91e: b6 9b sbis 0x16, 6 ; 22 |
920: 06 c0 rjmp .+12 ; 0x92e <main+0x48> |
{ |
if (PINB & ADR2) MotorAdresse = 1; |
922: b7 9b sbis 0x16, 7 ; 22 |
924: 02 c0 rjmp .+4 ; 0x92a <main+0x44> |
926: 81 e0 ldi r24, 0x01 ; 1 |
928: 07 c0 rjmp .+14 ; 0x938 <main+0x52> |
else MotorAdresse = 2; |
92a: 82 e0 ldi r24, 0x02 ; 2 |
92c: 05 c0 rjmp .+10 ; 0x938 <main+0x52> |
} |
else |
{ |
if (PINB & ADR2) MotorAdresse = 3; |
92e: b7 9b sbis 0x16, 7 ; 22 |
930: 02 c0 rjmp .+4 ; 0x936 <main+0x50> |
932: 83 e0 ldi r24, 0x03 ; 3 |
934: 01 c0 rjmp .+2 ; 0x938 <main+0x52> |
else MotorAdresse = 4; |
936: 84 e0 ldi r24, 0x04 ; 4 |
938: 80 93 66 00 sts 0x0066, r24 |
} |
HwVersion = 11; |
93c: 8b e0 ldi r24, 0x0B ; 11 |
93e: 80 93 b2 00 sts 0x00B2, r24 |
#else |
MotorAdresse = MOTORADRESSE; |
HwVersion = 10; |
#endif |
if(PIND & 0x80) {HwVersion = 12; IntRef = 0xc0;} |
942: 87 9b sbis 0x10, 7 ; 16 |
944: 06 c0 rjmp .+12 ; 0x952 <main+0x6c> |
946: 8c e0 ldi r24, 0x0C ; 12 |
948: 80 93 b2 00 sts 0x00B2, r24 |
94c: 80 ec ldi r24, 0xC0 ; 192 |
94e: 80 93 8d 00 sts 0x008D, r24 |
DDRD = 0xBA; |
952: 8a eb ldi r24, 0xBA ; 186 |
954: 81 bb out 0x11, r24 ; 17 |
UART_Init(); |
956: c4 d3 rcall .+1928 ; 0x10e0 <UART_Init> |
Timer0_Init(); |
958: 4e d4 rcall .+2204 ; 0x11f6 <Timer0_Init> |
sei();//Globale Interrupts Einschalten |
95a: 78 94 sei |
} |
Delay_ms(500); |
*/ |
// UART_Init(); // war doppelt |
PWM_Init(); |
95c: d4 db rcall .-2136 ; 0x106 <PWM_Init> |
InitIC2_Slave(0x50); |
95e: 80 e5 ldi r24, 0x50 ; 80 |
960: b0 d5 rcall .+2912 ; 0x14c2 <InitIC2_Slave> |
InitPPM(); |
962: eb d4 rcall .+2518 ; 0x133a <InitPPM> |
Blink = SetDelay(101); |
964: 85 e6 ldi r24, 0x65 ; 101 |
966: 90 e0 ldi r25, 0x00 ; 0 |
968: 4f d4 rcall .+2206 ; 0x1208 <SetDelay> |
Blink2 = SetDelay(102); |
96a: 86 e6 ldi r24, 0x66 ; 102 |
96c: 90 e0 ldi r25, 0x00 ; 0 |
96e: 4c d4 rcall .+2200 ; 0x1208 <SetDelay> |
MinUpmPulse = SetDelay(103); |
970: 87 e6 ldi r24, 0x67 ; 103 |
972: 90 e0 ldi r25, 0x00 ; 0 |
974: 49 d4 rcall .+2194 ; 0x1208 <SetDelay> |
976: 90 93 b4 02 sts 0x02B4, r25 |
97a: 80 93 b3 02 sts 0x02B3, r24 |
MittelstromTimer = SetDelay(254); |
97e: 8e ef ldi r24, 0xFE ; 254 |
980: 90 e0 ldi r25, 0x00 ; 0 |
982: 42 d4 rcall .+2180 ; 0x1208 <SetDelay> |
984: 6c 01 movw r12, r24 |
DrehzahlMessTimer = SetDelay(1005); |
986: 8d ee ldi r24, 0xED ; 237 |
988: 93 e0 ldi r25, 0x03 ; 3 |
98a: 3e d4 rcall .+2172 ; 0x1208 <SetDelay> |
98c: ec 01 movw r28, r24 |
TestschubTimer = SetDelay(1006); |
98e: 8e ee ldi r24, 0xEE ; 238 |
990: 93 e0 ldi r25, 0x03 ; 3 |
992: 3a d4 rcall .+2164 ; 0x1208 <SetDelay> |
994: 03 c0 rjmp .+6 ; 0x99c <main+0xb6> |
while(!CheckDelay(MinUpmPulse)) |
{ |
if(SollwertErmittlung()) break; |
996: d4 db rcall .-2136 ; 0x140 <SollwertErmittlung> |
998: 88 23 and r24, r24 |
99a: 39 f4 brne .+14 ; 0x9aa <main+0xc4> |
Blink2 = SetDelay(102); |
MinUpmPulse = SetDelay(103); |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)) |
99c: 80 91 b3 02 lds r24, 0x02B3 |
9a0: 90 91 b4 02 lds r25, 0x02B4 |
9a4: 3b d4 rcall .+2166 ; 0x121c <CheckDelay> |
9a6: 88 23 and r24, r24 |
9a8: b1 f3 breq .-20 ; 0x996 <main+0xb0> |
{ |
if(SollwertErmittlung()) break; |
} |
GRN_ON; |
9aa: 80 91 b2 00 lds r24, 0x00B2 |
9ae: 8c 30 cpi r24, 0x0C ; 12 |
9b0: 10 f4 brcc .+4 ; 0x9b6 <main+0xd0> |
9b2: 97 9a sbi 0x12, 7 ; 18 |
9b4: 01 c0 rjmp .+2 ; 0x9b8 <main+0xd2> |
9b6: 97 98 cbi 0x12, 7 ; 18 |
PWM = 0; |
9b8: 10 92 79 00 sts 0x0079, r1 |
9bc: 10 92 78 00 sts 0x0078, r1 |
SetPWM(); |
9c0: 4e db rcall .-2404 ; 0x5e <SetPWM> |
SFIOR = 0x08; // Analog Comperator ein |
9c2: 88 e0 ldi r24, 0x08 ; 8 |
9c4: 80 bf out 0x30, r24 ; 48 |
ADMUX = 1; |
9c6: 81 e0 ldi r24, 0x01 ; 1 |
9c8: 87 b9 out 0x07, r24 ; 7 |
MinUpmPulse = SetDelay(10); |
9ca: 8a e0 ldi r24, 0x0A ; 10 |
9cc: 90 e0 ldi r25, 0x00 ; 0 |
9ce: 1c d4 rcall .+2104 ; 0x1208 <SetDelay> |
9d0: 90 93 b4 02 sts 0x02B4, r25 |
9d4: 80 93 b3 02 sts 0x02B3, r24 |
DebugOut.Analog[1] = 1; |
9d8: 81 e0 ldi r24, 0x01 ; 1 |
9da: 90 e0 ldi r25, 0x00 ; 0 |
9dc: 90 93 87 03 sts 0x0387, r25 |
9e0: 80 93 86 03 sts 0x0386, r24 |
PPM_Signal = 0; |
9e4: 10 92 a6 00 sts 0x00A6, r1 |
9e8: 10 92 a5 00 sts 0x00A5, r1 |
if(!SollwertErmittlung()) MotorTon(); |
9ec: a9 db rcall .-2222 ; 0x140 <SollwertErmittlung> |
9ee: 88 23 and r24, r24 |
9f0: 09 f4 brne .+2 ; 0x9f4 <main+0x10e> |
9f2: 58 dc rcall .-1872 ; 0x2a4 <MotorTon> |
//MotorTon(); |
PORTB = 0x31; // Pullups wieder einschalten |
9f4: 81 e3 ldi r24, 0x31 ; 49 |
9f6: 88 bb out 0x18, r24 ; 24 |
9f8: 10 e0 ldi r17, 0x00 ; 0 |
STEUER_OFF; |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
9fa: ff 24 eor r15, r15 |
9fc: f3 94 inc r15 |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(MotorGestopptTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
STEUER_OFF; |
9fe: f1 e4 ldi r31, 0x41 ; 65 |
a00: ef 2e mov r14, r31 |
a02: ee e0 ldi r30, 0x0E ; 14 |
a04: 5e 2e mov r5, r30 |
if(Anwerfen(10)) |
{ |
GRN_ON; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
a06: 71 e0 ldi r23, 0x01 ; 1 |
a08: 67 2e mov r6, r23 |
a0a: 71 2c mov r7, r1 |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(20); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 15; |
a0c: 6f e0 ldi r22, 0x0F ; 15 |
a0e: 86 2e mov r8, r22 |
a10: 91 2c mov r9, r1 |
a12: 01 c0 rjmp .+2 ; 0xa16 <main+0x130> |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
if(!SollwertErmittlung()) MotorTon(); |
//MotorTon(); |
PORTB = 0x31; // Pullups wieder einschalten |
a14: 10 2f mov r17, r16 |
while (1) |
{ |
//ShowSense(); |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
a16: 94 db rcall .-2264 ; 0x140 <SollwertErmittlung> |
a18: 80 93 78 00 sts 0x0078, r24 |
a1c: 10 92 79 00 sts 0x0079, r1 |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt |
a20: 00 91 af 00 lds r16, 0x00AF |
a24: 01 17 cp r16, r17 |
a26: 69 f0 breq .+26 ; 0xa42 <main+0x15c> |
{ |
MotorGestoppt = 0; |
a28: 10 92 63 00 sts 0x0063, r1 |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
a2c: 10 92 62 00 sts 0x0062, r1 |
MinUpmPulse = SetDelay(250); // Timeout, falls ein Motor stehen bleibt |
a30: 8a ef ldi r24, 0xFA ; 250 |
a32: 90 e0 ldi r25, 0x00 ; 0 |
a34: e9 d3 rcall .+2002 ; 0x1208 <SetDelay> |
a36: 90 93 b4 02 sts 0x02B4, r25 |
a3a: 80 93 b3 02 sts 0x02B3, r24 |
altPhase = Phase; |
a3e: 00 91 af 00 lds r16, 0x00AF |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!PWM) // Sollwert == 0 |
a42: 80 91 78 00 lds r24, 0x0078 |
a46: 90 91 79 00 lds r25, 0x0079 |
a4a: 89 2b or r24, r25 |
a4c: e1 f4 brne .+56 ; 0xa86 <main+0x1a0> |
{ |
MotorAnwerfen = 0; // kein Startversuch |
a4e: 10 92 88 00 sts 0x0088, r1 |
ZeitFuerBerechnungen = 0; |
a52: 10 92 62 00 sts 0x0062, r1 |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(MotorGestopptTimer)) |
a56: c5 01 movw r24, r10 |
a58: e1 d3 rcall .+1986 ; 0x121c <CheckDelay> |
a5a: 88 23 and r24, r24 |
a5c: f1 f0 breq .+60 ; 0xa9a <main+0x1b4> |
{ |
DISABLE_SENSE_INT; |
a5e: 10 92 b1 00 sts 0x00B1, r1 |
a62: 43 98 cbi 0x08, 3 ; 8 |
MotorGestoppt = 1; |
a64: f0 92 63 00 sts 0x0063, r15 |
STEUER_OFF; |
a68: 82 b3 in r24, 0x12 ; 18 |
a6a: 87 7c andi r24, 0xC7 ; 199 |
a6c: 82 bb out 0x12, r24 ; 18 |
a6e: 1b bc out 0x2b, r1 ; 43 |
a70: 1a bc out 0x2a, r1 ; 42 |
a72: 19 bc out 0x29, r1 ; 41 |
a74: 18 bc out 0x28, r1 ; 40 |
a76: 13 bc out 0x23, r1 ; 35 |
a78: ff bc out 0x2f, r15 ; 47 |
a7a: e5 bc out 0x25, r14 ; 37 |
a7c: 57 ba out 0x17, r5 ; 23 |
a7e: 88 b3 in r24, 0x18 ; 24 |
a80: 81 7f andi r24, 0xF1 ; 241 |
a82: 88 bb out 0x18, r24 ; 24 |
a84: 0a c0 rjmp .+20 ; 0xa9a <main+0x1b4> |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
a86: 80 91 63 00 lds r24, 0x0063 |
a8a: 88 23 and r24, r24 |
a8c: 11 f0 breq .+4 ; 0xa92 <main+0x1ac> |
a8e: f0 92 88 00 sts 0x0088, r15 |
MotorGestopptTimer = SetDelay(1500); |
a92: 8c ed ldi r24, 0xDC ; 220 |
a94: 95 e0 ldi r25, 0x05 ; 5 |
a96: b8 d3 rcall .+1904 ; 0x1208 <SetDelay> |
a98: 5c 01 movw r10, r24 |
} |
if(MotorGestoppt && !TEST_SCHUB) PWM = 0; |
a9a: 80 91 63 00 lds r24, 0x0063 |
a9e: 88 23 and r24, r24 |
aa0: 21 f0 breq .+8 ; 0xaaa <main+0x1c4> |
aa2: 10 92 79 00 sts 0x0079, r1 |
aa6: 10 92 78 00 sts 0x0078, r1 |
SetPWM(); |
aaa: d9 da rcall .-2638 ; 0x5e <SetPWM> |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
aac: 80 91 62 00 lds r24, 0x0062 |
ab0: 8f 5f subi r24, 0xFF ; 255 |
ab2: 80 93 62 00 sts 0x0062, r24 |
ab6: 81 50 subi r24, 0x01 ; 1 |
ab8: 09 f0 breq .+2 ; 0xabc <main+0x1d6> |
aba: ac cf rjmp .-168 ; 0xa14 <main+0x12e> |
{ |
if(MotorGestoppt) |
abc: 80 91 63 00 lds r24, 0x0063 |
ac0: 88 23 and r24, r24 |
ac2: 41 f0 breq .+16 ; 0xad4 <main+0x1ee> |
{ |
GRN_ON; |
ac4: 80 91 b2 00 lds r24, 0x00B2 |
ac8: 8c 30 cpi r24, 0x0C ; 12 |
aca: 10 f4 brcc .+4 ; 0xad0 <main+0x1ea> |
acc: 97 9a sbi 0x12, 7 ; 18 |
ace: 01 c0 rjmp .+2 ; 0xad2 <main+0x1ec> |
ad0: 97 98 cbi 0x12, 7 ; 18 |
FastADConvert(); |
ad2: 17 d4 rcall .+2094 ; 0x1302 <FastADConvert> |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
} |
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung |
if(CheckDelay(MittelstromTimer)) |
ad4: c6 01 movw r24, r12 |
ad6: a2 d3 rcall .+1860 ; 0x121c <CheckDelay> |
ad8: 88 23 and r24, r24 |
ada: a9 f1 breq .+106 ; 0xb46 <main+0x260> |
{ |
MittelstromTimer = SetDelay(50); // alle 50ms |
adc: 82 e3 ldi r24, 0x32 ; 50 |
ade: 90 e0 ldi r25, 0x00 ; 0 |
ae0: 93 d3 rcall .+1830 ; 0x1208 <SetDelay> |
ae2: 6c 01 movw r12, r24 |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
ae4: 80 91 7d 00 lds r24, 0x007D |
ae8: 48 2f mov r20, r24 |
aea: 50 e0 ldi r21, 0x00 ; 0 |
aec: 20 91 7a 00 lds r18, 0x007A |
af0: 30 91 7b 00 lds r19, 0x007B |
af4: 42 17 cp r20, r18 |
af6: 53 07 cpc r21, r19 |
af8: 10 f4 brcc .+4 ; 0xafe <main+0x218> |
afa: 8f 5f subi r24, 0xFF ; 255 |
afc: 04 c0 rjmp .+8 ; 0xb06 <main+0x220> |
else if(Mittelstrom > Strom) Mittelstrom--; |
afe: 24 17 cp r18, r20 |
b00: 35 07 cpc r19, r21 |
b02: 18 f4 brcc .+6 ; 0xb0a <main+0x224> |
b04: 81 50 subi r24, 0x01 ; 1 |
b06: 80 93 7d 00 sts 0x007D, r24 |
if(Strom > MAX_STROM) MaxPWM -= MaxPWM / 32; |
b0a: 29 3c cpi r18, 0xC9 ; 201 |
b0c: 31 05 cpc r19, r1 |
b0e: 48 f0 brcs .+18 ; 0xb22 <main+0x23c> |
b10: 80 91 64 00 lds r24, 0x0064 |
b14: 98 2f mov r25, r24 |
b16: 92 95 swap r25 |
b18: 96 95 lsr r25 |
b1a: 97 70 andi r25, 0x07 ; 7 |
b1c: 89 1b sub r24, r25 |
b1e: 80 93 64 00 sts 0x0064, r24 |
if((Mittelstrom > LIMIT_STROM))// Strom am Limit? |
b22: 80 91 7d 00 lds r24, 0x007D |
b26: 90 91 64 00 lds r25, 0x0064 |
b2a: 89 37 cpi r24, 0x79 ; 121 |
b2c: 38 f0 brcs .+14 ; 0xb3c <main+0x256> |
{ |
if(MaxPWM) MaxPWM--;// dann die Maximale PWM herunterfahren |
b2e: 99 23 and r25, r25 |
b30: 19 f0 breq .+6 ; 0xb38 <main+0x252> |
b32: 91 50 subi r25, 0x01 ; 1 |
b34: 90 93 64 00 sts 0x0064, r25 |
PORTC |= ROT; |
b38: ab 9a sbi 0x15, 3 ; 21 |
b3a: 05 c0 rjmp .+10 ; 0xb46 <main+0x260> |
} |
else |
{ |
if(MaxPWM < MAX_PWM) MaxPWM++; |
b3c: 9f 3f cpi r25, 0xFF ; 255 |
b3e: 19 f0 breq .+6 ; 0xb46 <main+0x260> |
b40: 9f 5f subi r25, 0xFF ; 255 |
b42: 90 93 64 00 sts 0x0064, r25 |
} |
} |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
b46: ce 01 movw r24, r28 |
b48: 69 d3 rcall .+1746 ; 0x121c <CheckDelay> |
b4a: 88 23 and r24, r24 |
b4c: 91 f0 breq .+36 ; 0xb72 <main+0x28c> |
{ |
DrehzahlMessTimer = SetDelay(10); |
b4e: 8a e0 ldi r24, 0x0A ; 10 |
b50: 90 e0 ldi r25, 0x00 ; 0 |
b52: 5a d3 rcall .+1716 ; 0x1208 <SetDelay> |
b54: ec 01 movw r28, r24 |
SIO_Drehzahl = CntKommutierungen;//(6 * CntKommutierungen) / (POLANZAHL / 2); |
b56: 80 91 89 00 lds r24, 0x0089 |
b5a: 90 91 8a 00 lds r25, 0x008A |
b5e: 90 93 8c 00 sts 0x008C, r25 |
b62: 80 93 8b 00 sts 0x008B, r24 |
CntKommutierungen = 0; |
b66: 10 92 8a 00 sts 0x008A, r1 |
b6a: 10 92 89 00 sts 0x0089, r1 |
// if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
b6e: f0 92 65 00 sts 0x0065, r15 |
} |
} |
} |
#endif |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
b72: 80 91 b3 02 lds r24, 0x02B3 |
b76: 90 91 b4 02 lds r25, 0x02B4 |
b7a: 50 d3 rcall .+1696 ; 0x121c <CheckDelay> |
b7c: 88 23 and r24, r24 |
b7e: 31 f0 breq .+12 ; 0xb8c <main+0x2a6> |
b80: 80 91 8b 00 lds r24, 0x008B |
b84: 90 91 8c 00 lds r25, 0x008C |
b88: 89 2b or r24, r25 |
b8a: 29 f0 breq .+10 ; 0xb96 <main+0x2b0> |
b8c: 80 91 88 00 lds r24, 0x0088 |
b90: 88 23 and r24, r24 |
b92: 09 f4 brne .+2 ; 0xb96 <main+0x2b0> |
b94: 3f cf rjmp .-386 ; 0xa14 <main+0x12e> |
{ |
MotorGestoppt = 1; |
b96: f0 92 63 00 sts 0x0063, r15 |
DISABLE_SENSE_INT; |
b9a: 10 92 b1 00 sts 0x00B1, r1 |
b9e: 43 98 cbi 0x08, 3 ; 8 |
MinUpmPulse = SetDelay(100); |
ba0: 84 e6 ldi r24, 0x64 ; 100 |
ba2: 90 e0 ldi r25, 0x00 ; 0 |
ba4: 31 d3 rcall .+1634 ; 0x1208 <SetDelay> |
ba6: 90 93 b4 02 sts 0x02B4, r25 |
baa: 80 93 b3 02 sts 0x02B3, r24 |
if(MotorAnwerfen) |
bae: 80 91 88 00 lds r24, 0x0088 |
bb2: 88 23 and r24, r24 |
bb4: 09 f4 brne .+2 ; 0xbb8 <main+0x2d2> |
bb6: 2e cf rjmp .-420 ; 0xa14 <main+0x12e> |
{ |
PORTC &= ~ROT; |
bb8: ab 98 cbi 0x15, 3 ; 21 |
Strom_max = 0; |
bba: 10 92 7c 00 sts 0x007C, r1 |
MotorAnwerfen = 0; |
bbe: 10 92 88 00 sts 0x0088, r1 |
if(Anwerfen(10)) |
bc2: 8a e0 ldi r24, 0x0A ; 10 |
bc4: b9 dd rcall .-1166 ; 0x738 <Anwerfen> |
bc6: 88 23 and r24, r24 |
bc8: 09 f4 brne .+2 ; 0xbcc <main+0x2e6> |
bca: 5b c0 rjmp .+182 ; 0xc82 <main+0x39c> |
{ |
GRN_ON; |
bcc: 80 91 b2 00 lds r24, 0x00B2 |
bd0: 8c 30 cpi r24, 0x0C ; 12 |
bd2: 10 f4 brcc .+4 ; 0xbd8 <main+0x2f2> |
bd4: 97 9a sbi 0x12, 7 ; 18 |
bd6: 01 c0 rjmp .+2 ; 0xbda <main+0x2f4> |
bd8: 97 98 cbi 0x12, 7 ; 18 |
MotorGestoppt = 0; |
bda: 10 92 63 00 sts 0x0063, r1 |
Phase--; |
bde: 80 91 af 00 lds r24, 0x00AF |
be2: 81 50 subi r24, 0x01 ; 1 |
be4: 80 93 af 00 sts 0x00AF, r24 |
PWM = 1; |
be8: 70 92 79 00 sts 0x0079, r7 |
bec: 60 92 78 00 sts 0x0078, r6 |
SetPWM(); |
bf0: 36 da rcall .-2964 ; 0x5e <SetPWM> |
SENSE_TOGGLE_INT; |
bf2: 88 b1 in r24, 0x08 ; 8 |
bf4: 8c 7f andi r24, 0xFC ; 252 |
bf6: 88 b9 out 0x08, r24 ; 8 |
ENABLE_SENSE_INT; |
bf8: f0 92 b1 00 sts 0x00B1, r15 |
bfc: 88 b1 in r24, 0x08 ; 8 |
bfe: 8a 60 ori r24, 0x0A ; 10 |
c00: 88 b9 out 0x08, r24 ; 8 |
MinUpmPulse = SetDelay(20); |
c02: 84 e1 ldi r24, 0x14 ; 20 |
c04: 90 e0 ldi r25, 0x00 ; 0 |
c06: 00 d3 rcall .+1536 ; 0x1208 <SetDelay> |
c08: 90 93 b4 02 sts 0x02B4, r25 |
c0c: 80 93 b3 02 sts 0x02B3, r24 |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
c10: 80 91 b3 02 lds r24, 0x02B3 |
c14: 90 91 b4 02 lds r25, 0x02B4 |
c18: 01 d3 rcall .+1538 ; 0x121c <CheckDelay> |
c1a: 88 23 and r24, r24 |
c1c: c9 f3 breq .-14 ; 0xc10 <main+0x32a> |
PWM = 15; |
c1e: 90 92 79 00 sts 0x0079, r9 |
c22: 80 92 78 00 sts 0x0078, r8 |
SetPWM(); |
c26: 1b da rcall .-3018 ; 0x5e <SetPWM> |
MinUpmPulse = SetDelay(300); |
c28: 8c e2 ldi r24, 0x2C ; 44 |
c2a: 91 e0 ldi r25, 0x01 ; 1 |
c2c: ed d2 rcall .+1498 ; 0x1208 <SetDelay> |
c2e: 90 93 b4 02 sts 0x02B4, r25 |
c32: 80 93 b3 02 sts 0x02B3, r24 |
c36: 18 c0 rjmp .+48 ; 0xc68 <main+0x382> |
while(!CheckDelay(MinUpmPulse)) // kurz Durchstarten |
{ |
if(Strom > LIMIT_STROM/2) |
c38: 80 91 7a 00 lds r24, 0x007A |
c3c: 90 91 7b 00 lds r25, 0x007B |
c40: cd 97 sbiw r24, 0x3d ; 61 |
c42: 90 f0 brcs .+36 ; 0xc68 <main+0x382> |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
c44: 82 b3 in r24, 0x12 ; 18 |
c46: 87 7c andi r24, 0xC7 ; 199 |
c48: 82 bb out 0x12, r24 ; 18 |
c4a: 1b bc out 0x2b, r1 ; 43 |
c4c: 1a bc out 0x2a, r1 ; 42 |
c4e: 19 bc out 0x29, r1 ; 41 |
c50: 18 bc out 0x28, r1 ; 40 |
c52: 13 bc out 0x23, r1 ; 35 |
c54: ff bc out 0x2f, r15 ; 47 |
c56: e5 bc out 0x25, r14 ; 37 |
c58: 57 ba out 0x17, r5 ; 23 |
c5a: 88 b3 in r24, 0x18 ; 24 |
c5c: 81 7f andi r24, 0xF1 ; 241 |
c5e: 88 bb out 0x18, r24 ; 24 |
RotBlink(10); |
c60: 8a e0 ldi r24, 0x0A ; 10 |
c62: 0c db rcall .-2536 ; 0x27c <RotBlink> |
MotorAnwerfen = 1; |
c64: f0 92 88 00 sts 0x0088, r15 |
MinUpmPulse = SetDelay(20); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 15; |
SetPWM(); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) // kurz Durchstarten |
c68: 80 91 b3 02 lds r24, 0x02B3 |
c6c: 90 91 b4 02 lds r25, 0x02B4 |
c70: d5 d2 rcall .+1450 ; 0x121c <CheckDelay> |
c72: 88 23 and r24, r24 |
c74: 09 f3 breq .-62 ; 0xc38 <main+0x352> |
RotBlink(10); |
MotorAnwerfen = 1; |
} |
} |
// Drehzahlmessung wieder aufsetzen |
DrehzahlMessTimer = SetDelay(50); |
c76: 82 e3 ldi r24, 0x32 ; 50 |
c78: 90 e0 ldi r25, 0x00 ; 0 |
c7a: c6 d2 rcall .+1420 ; 0x1208 <SetDelay> |
c7c: ec 01 movw r28, r24 |
c7e: 07 e0 ldi r16, 0x07 ; 7 |
c80: c9 ce rjmp .-622 ; 0xa14 <main+0x12e> |
altPhase = 7; |
} |
else if(SollwertErmittlung()) MotorAnwerfen = 1; |
c82: 5e da rcall .-2884 ; 0x140 <SollwertErmittlung> |
c84: 88 23 and r24, r24 |
c86: 09 f4 brne .+2 ; 0xc8a <main+0x3a4> |
c88: c5 ce rjmp .-630 ; 0xa14 <main+0x12e> |
c8a: f0 92 88 00 sts 0x0088, r15 |
c8e: c2 ce rjmp .-636 ; 0xa14 <main+0x12e> |
00000c90 <__vector_13>: |
int Debug_Timer; |
SIGNAL(INT_VEC_TX) |
{ |
c90: 1f 92 push r1 |
c92: 0f 92 push r0 |
c94: 0f b6 in r0, 0x3f ; 63 |
c96: 0f 92 push r0 |
c98: 11 24 eor r1, r1 |
} |
c9a: 0f 90 pop r0 |
c9c: 0f be out 0x3f, r0 ; 63 |
c9e: 0f 90 pop r0 |
ca0: 1f 90 pop r1 |
ca2: 18 95 reti |
00000ca4 <SendUart>: |
void SendUart(void) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!(UCSRA & 0x40)) return; |
ca4: 5e 9b sbis 0x0b, 6 ; 11 |
ca6: 24 c0 rjmp .+72 ; 0xcf0 <SendUart+0x4c> |
if(!UebertragungAbgeschlossen) |
ca8: 80 91 6f 00 lds r24, 0x006F |
cac: 88 23 and r24, r24 |
cae: e1 f4 brne .+56 ; 0xce8 <SendUart+0x44> |
{ |
ptr++; // die [0] wurde schon gesendet |
cb0: 80 91 a0 00 lds r24, 0x00A0 |
cb4: 90 91 a1 00 lds r25, 0x00A1 |
cb8: 01 96 adiw r24, 0x01 ; 1 |
cba: 90 93 a1 00 sts 0x00A1, r25 |
cbe: 80 93 a0 00 sts 0x00A0, r24 |
tmp_tx = SendeBuffer[ptr]; |
cc2: fc 01 movw r30, r24 |
cc4: e8 54 subi r30, 0x48 ; 72 |
cc6: fd 4f sbci r31, 0xFD ; 253 |
cc8: e0 81 ld r30, Z |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
cca: ed 30 cpi r30, 0x0D ; 13 |
ccc: 19 f0 breq .+6 ; 0xcd4 <SendUart+0x30> |
cce: 84 36 cpi r24, 0x64 ; 100 |
cd0: 91 05 cpc r25, r1 |
cd2: 39 f4 brne .+14 ; 0xce2 <SendUart+0x3e> |
{ |
ptr = 0; |
cd4: 10 92 a1 00 sts 0x00A1, r1 |
cd8: 10 92 a0 00 sts 0x00A0, r1 |
UebertragungAbgeschlossen = 1; |
cdc: 81 e0 ldi r24, 0x01 ; 1 |
cde: 80 93 6f 00 sts 0x006F, r24 |
} |
USR |= (1<TXC); |
ce2: 58 9a sbi 0x0b, 0 ; 11 |
UDR = tmp_tx; |
ce4: ec b9 out 0x0c, r30 ; 12 |
ce6: 08 95 ret |
} |
else ptr = 0; |
ce8: 10 92 a1 00 sts 0x00A1, r1 |
cec: 10 92 a0 00 sts 0x00A0, r1 |
cf0: 08 95 ret |
00000cf2 <Decode64>: |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
cf2: 1f 93 push r17 |
cf4: cf 93 push r28 |
cf6: df 93 push r29 |
cf8: ec 01 movw r28, r24 |
cfa: 70 e0 ldi r23, 0x00 ; 0 |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
cfc: a2 2f mov r26, r18 |
cfe: b0 e0 ldi r27, 0x00 ; 0 |
d00: 11 97 sbiw r26, 0x01 ; 1 |
d02: 48 c0 rjmp .+144 ; 0xd94 <Decode64+0xa2> |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
d04: e4 2f mov r30, r20 |
d06: f0 e0 ldi r31, 0x00 ; 0 |
d08: e2 5e subi r30, 0xE2 ; 226 |
d0a: fc 4f sbci r31, 0xFC ; 252 |
d0c: 30 81 ld r19, Z |
b = RxdBuffer[ptrIn++] - '='; |
d0e: 4f 5f subi r20, 0xFF ; 255 |
d10: e4 2f mov r30, r20 |
d12: f0 e0 ldi r31, 0x00 ; 0 |
d14: e2 5e subi r30, 0xE2 ; 226 |
d16: fc 4f sbci r31, 0xFC ; 252 |
d18: 50 81 ld r21, Z |
c = RxdBuffer[ptrIn++] - '='; |
d1a: 4f 5f subi r20, 0xFF ; 255 |
d1c: e4 2f mov r30, r20 |
d1e: f0 e0 ldi r31, 0x00 ; 0 |
d20: e2 5e subi r30, 0xE2 ; 226 |
d22: fc 4f sbci r31, 0xFC ; 252 |
d24: 10 81 ld r17, Z |
d = RxdBuffer[ptrIn++] - '='; |
d26: 4f 5f subi r20, 0xFF ; 255 |
d28: e4 2f mov r30, r20 |
d2a: f0 e0 ldi r31, 0x00 ; 0 |
d2c: e2 5e subi r30, 0xE2 ; 226 |
d2e: fc 4f sbci r31, 0xFC ; 252 |
d30: 20 81 ld r18, Z |
d32: 4f 5f subi r20, 0xFF ; 255 |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
d34: 84 2f mov r24, r20 |
d36: 90 e0 ldi r25, 0x00 ; 0 |
d38: 8a 17 cp r24, r26 |
d3a: 9b 07 cpc r25, r27 |
d3c: 74 f5 brge .+92 ; 0xd9a <Decode64+0xa8> |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
d3e: 5d 53 subi r21, 0x3D ; 61 |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
d40: fe 01 movw r30, r28 |
d42: e7 0f add r30, r23 |
d44: f1 1d adc r31, r1 |
d46: 85 2f mov r24, r21 |
d48: 82 95 swap r24 |
d4a: 8f 70 andi r24, 0x0F ; 15 |
d4c: 3d 53 subi r19, 0x3D ; 61 |
d4e: 33 0f add r19, r19 |
d50: 33 0f add r19, r19 |
d52: 38 2b or r19, r24 |
d54: 30 83 st Z, r19 |
if(len--) ptrOut[ptr++] = y; else break; |
d56: 61 30 cpi r22, 0x01 ; 1 |
d58: 01 f1 breq .+64 ; 0xd9a <Decode64+0xa8> |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d5a: 91 2f mov r25, r17 |
d5c: 9d 53 subi r25, 0x3D ; 61 |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
d5e: 7f 5f subi r23, 0xFF ; 255 |
d60: fe 01 movw r30, r28 |
d62: e7 0f add r30, r23 |
d64: f1 1d adc r31, r1 |
d66: 71 50 subi r23, 0x01 ; 1 |
d68: 52 95 swap r21 |
d6a: 50 7f andi r21, 0xF0 ; 240 |
d6c: 89 2f mov r24, r25 |
d6e: 86 95 lsr r24 |
d70: 86 95 lsr r24 |
d72: 58 2b or r21, r24 |
d74: 50 83 st Z, r21 |
if(len--) ptrOut[ptr++] = z; else break; |
d76: 62 30 cpi r22, 0x02 ; 2 |
d78: 81 f0 breq .+32 ; 0xd9a <Decode64+0xa8> |
d7a: 63 50 subi r22, 0x03 ; 3 |
d7c: 7e 5f subi r23, 0xFE ; 254 |
d7e: fe 01 movw r30, r28 |
d80: e7 0f add r30, r23 |
d82: f1 1d adc r31, r1 |
d84: 92 95 swap r25 |
d86: 99 0f add r25, r25 |
d88: 99 0f add r25, r25 |
d8a: 90 7c andi r25, 0xC0 ; 192 |
d8c: 2d 53 subi r18, 0x3D ; 61 |
d8e: 92 2b or r25, r18 |
d90: 90 83 st Z, r25 |
d92: 7f 5f subi r23, 0xFF ; 255 |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
d94: 66 23 and r22, r22 |
d96: 09 f0 breq .+2 ; 0xd9a <Decode64+0xa8> |
d98: b5 cf rjmp .-150 ; 0xd04 <Decode64+0x12> |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
d9a: df 91 pop r29 |
d9c: cf 91 pop r28 |
d9e: 1f 91 pop r17 |
da0: 08 95 ret |
00000da2 <AddCRC>: |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
da2: dc 01 movw r26, r24 |
da4: 20 e0 ldi r18, 0x00 ; 0 |
da6: 30 e0 ldi r19, 0x00 ; 0 |
da8: 40 e0 ldi r20, 0x00 ; 0 |
daa: 50 e0 ldi r21, 0x00 ; 0 |
dac: 08 c0 rjmp .+16 ; 0xdbe <AddCRC+0x1c> |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
dae: fa 01 movw r30, r20 |
db0: e8 54 subi r30, 0x48 ; 72 |
db2: fd 4f sbci r31, 0xFD ; 253 |
db4: 80 81 ld r24, Z |
db6: 28 0f add r18, r24 |
db8: 31 1d adc r19, r1 |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
dba: 4f 5f subi r20, 0xFF ; 255 |
dbc: 5f 4f sbci r21, 0xFF ; 255 |
dbe: 4a 17 cp r20, r26 |
dc0: 5b 07 cpc r21, r27 |
dc2: a8 f3 brcs .-22 ; 0xdae <AddCRC+0xc> |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
dc4: 3f 70 andi r19, 0x0F ; 15 |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
dc6: c9 01 movw r24, r18 |
dc8: 36 e0 ldi r19, 0x06 ; 6 |
dca: 96 95 lsr r25 |
dcc: 87 95 ror r24 |
dce: 3a 95 dec r19 |
dd0: e1 f7 brne .-8 ; 0xdca <AddCRC+0x28> |
dd2: 83 5c subi r24, 0xC3 ; 195 |
dd4: fd 01 movw r30, r26 |
dd6: e8 54 subi r30, 0x48 ; 72 |
dd8: fd 4f sbci r31, 0xFD ; 253 |
dda: 80 83 st Z, r24 |
ddc: 11 96 adiw r26, 0x01 ; 1 |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
dde: 2f 73 andi r18, 0x3F ; 63 |
de0: 23 5c subi r18, 0xC3 ; 195 |
de2: fd 01 movw r30, r26 |
de4: e8 54 subi r30, 0x48 ; 72 |
de6: fd 4f sbci r31, 0xFD ; 253 |
de8: 20 83 st Z, r18 |
SendeBuffer[i++] = '\r'; |
dea: a7 54 subi r26, 0x47 ; 71 |
dec: bd 4f sbci r27, 0xFD ; 253 |
dee: 8d e0 ldi r24, 0x0D ; 13 |
df0: 8c 93 st X, r24 |
UebertragungAbgeschlossen = 0; |
df2: 10 92 6f 00 sts 0x006F, r1 |
UDR = SendeBuffer[0]; |
df6: 80 91 b8 02 lds r24, 0x02B8 |
dfa: 8c b9 out 0x0c, r24 ; 12 |
} |
dfc: 08 95 ret |
00000dfe <SendOutData>: |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
dfe: cf 93 push r28 |
e00: df 93 push r29 |
e02: ea 01 movw r28, r20 |
e04: b2 2f mov r27, r18 |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
e06: 93 e2 ldi r25, 0x23 ; 35 |
e08: 90 93 b8 02 sts 0x02B8, r25 |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
e0c: 60 93 b9 02 sts 0x02B9, r22 |
SendeBuffer[pt++] = cmd; // Commando |
e10: 80 93 ba 02 sts 0x02BA, r24 |
e14: 63 e0 ldi r22, 0x03 ; 3 |
e16: 70 e0 ldi r23, 0x00 ; 0 |
e18: a0 e0 ldi r26, 0x00 ; 0 |
e1a: 4e c0 rjmp .+156 ; 0xeb8 <SendOutData+0xba> |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
e1c: fe 01 movw r30, r28 |
e1e: ea 0f add r30, r26 |
e20: f1 1d adc r31, r1 |
e22: 90 81 ld r25, Z |
e24: af 5f subi r26, 0xFF ; 255 |
e26: b1 50 subi r27, 0x01 ; 1 |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
e28: 19 f4 brne .+6 ; 0xe30 <SendOutData+0x32> |
e2a: 30 e0 ldi r19, 0x00 ; 0 |
e2c: 40 e0 ldi r20, 0x00 ; 0 |
e2e: 0f c0 rjmp .+30 ; 0xe4e <SendOutData+0x50> |
e30: fe 01 movw r30, r28 |
e32: ea 0f add r30, r26 |
e34: f1 1d adc r31, r1 |
e36: 40 81 ld r20, Z |
e38: af 5f subi r26, 0xFF ; 255 |
e3a: b1 50 subi r27, 0x01 ; 1 |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
e3c: 11 f4 brne .+4 ; 0xe42 <SendOutData+0x44> |
e3e: 30 e0 ldi r19, 0x00 ; 0 |
e40: 06 c0 rjmp .+12 ; 0xe4e <SendOutData+0x50> |
e42: fe 01 movw r30, r28 |
e44: ea 0f add r30, r26 |
e46: f1 1d adc r31, r1 |
e48: 30 81 ld r19, Z |
e4a: af 5f subi r26, 0xFF ; 255 |
e4c: b1 50 subi r27, 0x01 ; 1 |
SendeBuffer[pt++] = '=' + (a >> 2); |
e4e: 89 2f mov r24, r25 |
e50: 86 95 lsr r24 |
e52: 86 95 lsr r24 |
e54: 83 5c subi r24, 0xC3 ; 195 |
e56: fb 01 movw r30, r22 |
e58: e8 54 subi r30, 0x48 ; 72 |
e5a: fd 4f sbci r31, 0xFD ; 253 |
e5c: 80 83 st Z, r24 |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
e5e: 24 2f mov r18, r20 |
e60: 22 95 swap r18 |
e62: 2f 70 andi r18, 0x0F ; 15 |
e64: 89 2f mov r24, r25 |
e66: 90 e0 ldi r25, 0x00 ; 0 |
e68: 83 70 andi r24, 0x03 ; 3 |
e6a: 90 70 andi r25, 0x00 ; 0 |
e6c: 54 e0 ldi r21, 0x04 ; 4 |
e6e: 88 0f add r24, r24 |
e70: 99 1f adc r25, r25 |
e72: 5a 95 dec r21 |
e74: e1 f7 brne .-8 ; 0xe6e <SendOutData+0x70> |
e76: 28 2b or r18, r24 |
e78: 23 5c subi r18, 0xC3 ; 195 |
e7a: fb 01 movw r30, r22 |
e7c: e7 54 subi r30, 0x47 ; 71 |
e7e: fd 4f sbci r31, 0xFD ; 253 |
e80: 20 83 st Z, r18 |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
e82: 84 2f mov r24, r20 |
e84: 90 e0 ldi r25, 0x00 ; 0 |
e86: 8f 70 andi r24, 0x0F ; 15 |
e88: 90 70 andi r25, 0x00 ; 0 |
e8a: 88 0f add r24, r24 |
e8c: 99 1f adc r25, r25 |
e8e: 88 0f add r24, r24 |
e90: 99 1f adc r25, r25 |
e92: 23 2f mov r18, r19 |
e94: 22 95 swap r18 |
e96: 26 95 lsr r18 |
e98: 26 95 lsr r18 |
e9a: 23 70 andi r18, 0x03 ; 3 |
e9c: 28 2b or r18, r24 |
e9e: 23 5c subi r18, 0xC3 ; 195 |
ea0: fb 01 movw r30, r22 |
ea2: e6 54 subi r30, 0x46 ; 70 |
ea4: fd 4f sbci r31, 0xFD ; 253 |
ea6: 20 83 st Z, r18 |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
ea8: 3f 73 andi r19, 0x3F ; 63 |
eaa: 33 5c subi r19, 0xC3 ; 195 |
eac: fb 01 movw r30, r22 |
eae: e5 54 subi r30, 0x45 ; 69 |
eb0: fd 4f sbci r31, 0xFD ; 253 |
eb2: 30 83 st Z, r19 |
eb4: 6c 5f subi r22, 0xFC ; 252 |
eb6: 7f 4f sbci r23, 0xFF ; 255 |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
eb8: bb 23 and r27, r27 |
eba: 09 f0 breq .+2 ; 0xebe <SendOutData+0xc0> |
ebc: af cf rjmp .-162 ; 0xe1c <SendOutData+0x1e> |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
ebe: cb 01 movw r24, r22 |
ec0: 70 df rcall .-288 ; 0xda2 <AddCRC> |
} |
ec2: df 91 pop r29 |
ec4: cf 91 pop r28 |
ec6: 08 95 ret |
00000ec8 <uart_putchar>: |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
ec8: 1f 93 push r17 |
eca: 18 2f mov r17, r24 |
if (c == '\n') |
ecc: 8a 30 cpi r24, 0x0A ; 10 |
ece: 11 f4 brne .+4 ; 0xed4 <uart_putchar+0xc> |
uart_putchar('\r'); |
ed0: 8d e0 ldi r24, 0x0D ; 13 |
ed2: fa df rcall .-12 ; 0xec8 <uart_putchar> |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
ed4: 5d 9b sbis 0x0b, 5 ; 11 |
ed6: fe cf rjmp .-4 ; 0xed4 <uart_putchar+0xc> |
//Ausgabe des Zeichens |
UDR = c; |
ed8: 1c b9 out 0x0c, r17 ; 12 |
return (0); |
} |
eda: 80 e0 ldi r24, 0x00 ; 0 |
edc: 90 e0 ldi r25, 0x00 ; 0 |
ede: 1f 91 pop r17 |
ee0: 08 95 ret |
00000ee2 <__vector_11>: |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
ee2: 1f 92 push r1 |
ee4: 0f 92 push r0 |
ee6: 0f b6 in r0, 0x3f ; 63 |
ee8: 0f 92 push r0 |
eea: 11 24 eor r1, r1 |
eec: 2f 93 push r18 |
eee: 3f 93 push r19 |
ef0: 4f 93 push r20 |
ef2: 5f 93 push r21 |
ef4: 6f 93 push r22 |
ef6: 7f 93 push r23 |
ef8: 8f 93 push r24 |
efa: 9f 93 push r25 |
efc: af 93 push r26 |
efe: bf 93 push r27 |
f00: cf 93 push r28 |
f02: df 93 push r29 |
f04: ef 93 push r30 |
f06: ff 93 push r31 |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
f08: 8c b1 in r24, 0x0c ; 12 |
f0a: 80 93 91 00 sts 0x0091, r24 |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
f0e: 40 91 9b 00 lds r20, 0x009B |
f12: 44 36 cpi r20, 0x64 ; 100 |
f14: 10 f0 brcs .+4 ; 0xf1a <__vector_11+0x38> |
f16: 10 92 9a 00 sts 0x009A, r1 |
if(SioTmp == '\r' && UartState == 2) |
f1a: 50 91 91 00 lds r21, 0x0091 |
f1e: 5d 30 cpi r21, 0x0D ; 13 |
f20: 09 f0 breq .+2 ; 0xf24 <__vector_11+0x42> |
f22: 64 c0 rjmp .+200 ; 0xfec <__vector_11+0x10a> |
f24: 80 91 9a 00 lds r24, 0x009A |
f28: 82 30 cpi r24, 0x02 ; 2 |
f2a: 09 f0 breq .+2 ; 0xf2e <__vector_11+0x4c> |
f2c: 5f c0 rjmp .+190 ; 0xfec <__vector_11+0x10a> |
{ |
UartState = 0; |
f2e: 10 92 9a 00 sts 0x009A, r1 |
crc -= RxdBuffer[buf_ptr-2]; |
f32: a4 2f mov r26, r20 |
f34: b0 e0 ldi r27, 0x00 ; 0 |
f36: fd 01 movw r30, r26 |
f38: e4 5e subi r30, 0xE4 ; 228 |
f3a: fc 4f sbci r31, 0xFC ; 252 |
f3c: 30 81 ld r19, Z |
crc -= RxdBuffer[buf_ptr-1]; |
f3e: ed 01 movw r28, r26 |
f40: c3 5e subi r28, 0xE3 ; 227 |
f42: dc 4f sbci r29, 0xFC ; 252 |
f44: 28 81 ld r18, Y |
crc %= 4096; |
f46: 80 91 9e 00 lds r24, 0x009E |
f4a: 90 91 9f 00 lds r25, 0x009F |
f4e: 83 1b sub r24, r19 |
f50: 91 09 sbc r25, r1 |
f52: 82 1b sub r24, r18 |
f54: 91 09 sbc r25, r1 |
f56: 9f 70 andi r25, 0x0F ; 15 |
f58: 90 93 9f 00 sts 0x009F, r25 |
f5c: 80 93 9e 00 sts 0x009E, r24 |
crc1 = '=' + crc / 64; |
f60: 9c 01 movw r18, r24 |
f62: 66 e0 ldi r22, 0x06 ; 6 |
f64: 36 95 lsr r19 |
f66: 27 95 ror r18 |
f68: 6a 95 dec r22 |
f6a: e1 f7 brne .-8 ; 0xf64 <__vector_11+0x82> |
f6c: 23 5c subi r18, 0xC3 ; 195 |
f6e: 20 93 9d 00 sts 0x009D, r18 |
crc2 = '=' + crc % 64; |
f72: 98 2f mov r25, r24 |
f74: 9f 73 andi r25, 0x3F ; 63 |
f76: 93 5c subi r25, 0xC3 ; 195 |
f78: 90 93 9c 00 sts 0x009C, r25 |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; }; |
f7c: 80 81 ld r24, Z |
f7e: 28 17 cp r18, r24 |
f80: 09 f0 breq .+2 ; 0xf84 <__vector_11+0xa2> |
f82: 80 c0 rjmp .+256 ; 0x1084 <__vector_11+0x1a2> |
f84: 88 81 ld r24, Y |
f86: 98 17 cp r25, r24 |
f88: 09 f0 breq .+2 ; 0xf8c <__vector_11+0xaa> |
f8a: 7c c0 rjmp .+248 ; 0x1084 <__vector_11+0x1a2> |
if(CrcOkay) // Datensatz schon verarbeitet |
{ |
//NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
f8c: 40 93 99 00 sts 0x0099, r20 |
RxdBuffer[buf_ptr] = '\r'; |
f90: a2 5e subi r26, 0xE2 ; 226 |
f92: bc 4f sbci r27, 0xFC ; 252 |
f94: 5c 93 st X, r21 |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
f96: 80 91 20 03 lds r24, 0x0320 |
f9a: 82 35 cpi r24, 0x52 ; 82 |
f9c: 49 f4 brne .+18 ; 0xfb0 <__vector_11+0xce> |
f9e: 2c e0 ldi r18, 0x0C ; 12 |
fa0: 88 e1 ldi r24, 0x18 ; 24 |
fa2: 90 e0 ldi r25, 0x00 ; 0 |
fa4: 0f b6 in r0, 0x3f ; 63 |
fa6: f8 94 cli |
fa8: a8 95 wdr |
faa: 81 bd out 0x21, r24 ; 33 |
fac: 0f be out 0x3f, r0 ; 63 |
fae: 21 bd out 0x21, r18 ; 33 |
uart_putchar(RxdBuffer[2]); |
fb0: 80 91 20 03 lds r24, 0x0320 |
fb4: 89 df rcall .-238 ; 0xec8 <uart_putchar> |
if (RxdBuffer[2] == 't') // Motortest |
fb6: 80 91 20 03 lds r24, 0x0320 |
fba: 84 37 cpi r24, 0x74 ; 116 |
fbc: 09 f0 breq .+2 ; 0xfc0 <__vector_11+0xde> |
fbe: 62 c0 rjmp .+196 ; 0x1084 <__vector_11+0x1a2> |
{ Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
fc0: 20 91 99 00 lds r18, 0x0099 |
fc4: 83 e9 ldi r24, 0x93 ; 147 |
fc6: 90 e0 ldi r25, 0x00 ; 0 |
fc8: 66 e0 ldi r22, 0x06 ; 6 |
fca: 43 e0 ldi r20, 0x03 ; 3 |
fcc: 92 de rcall .-732 ; 0xcf2 <Decode64> |
SIO_Sollwert = MotorTest[MotorAdresse - 1]; |
fce: e0 91 66 00 lds r30, 0x0066 |
fd2: f0 e0 ldi r31, 0x00 ; 0 |
fd4: ee 56 subi r30, 0x6E ; 110 |
fd6: ff 4f sbci r31, 0xFF ; 255 |
fd8: 80 81 ld r24, Z |
fda: 80 93 90 00 sts 0x0090, r24 |
SIO_Timeout = 500; // werte für 500ms gültig |
fde: 84 ef ldi r24, 0xF4 ; 244 |
fe0: 91 e0 ldi r25, 0x01 ; 1 |
fe2: 90 93 83 00 sts 0x0083, r25 |
fe6: 80 93 82 00 sts 0x0082, r24 |
fea: 4c c0 rjmp .+152 ; 0x1084 <__vector_11+0x1a2> |
} |
} |
} |
else |
switch(UartState) |
fec: 80 91 9a 00 lds r24, 0x009A |
ff0: 81 30 cpi r24, 0x01 ; 1 |
ff2: f9 f0 breq .+62 ; 0x1032 <__vector_11+0x150> |
ff4: 81 30 cpi r24, 0x01 ; 1 |
ff6: 20 f0 brcs .+8 ; 0x1000 <__vector_11+0x11e> |
ff8: 82 30 cpi r24, 0x02 ; 2 |
ffa: 09 f0 breq .+2 ; 0xffe <__vector_11+0x11c> |
ffc: 41 c0 rjmp .+130 ; 0x1080 <__vector_11+0x19e> |
ffe: 24 c0 rjmp .+72 ; 0x1048 <__vector_11+0x166> |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
1000: 80 91 91 00 lds r24, 0x0091 |
1004: 83 32 cpi r24, 0x23 ; 35 |
1006: 39 f4 brne .+14 ; 0x1016 <__vector_11+0x134> |
1008: 80 91 92 00 lds r24, 0x0092 |
100c: 88 23 and r24, r24 |
100e: 19 f4 brne .+6 ; 0x1016 <__vector_11+0x134> |
1010: 81 e0 ldi r24, 0x01 ; 1 |
1012: 80 93 9a 00 sts 0x009A, r24 |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
1016: 80 91 91 00 lds r24, 0x0091 |
101a: 80 93 1e 03 sts 0x031E, r24 |
101e: 81 e0 ldi r24, 0x01 ; 1 |
1020: 80 93 9b 00 sts 0x009B, r24 |
crc = SioTmp; |
1024: 80 91 91 00 lds r24, 0x0091 |
1028: 80 93 9e 00 sts 0x009E, r24 |
102c: 10 92 9f 00 sts 0x009F, r1 |
1030: 29 c0 rjmp .+82 ; 0x1084 <__vector_11+0x1a2> |
break; |
case 1: // Adresse auswerten |
UartState++; |
1032: 82 e0 ldi r24, 0x02 ; 2 |
1034: 80 93 9a 00 sts 0x009A, r24 |
RxdBuffer[buf_ptr++] = SioTmp; |
1038: e4 2f mov r30, r20 |
103a: f0 e0 ldi r31, 0x00 ; 0 |
103c: 80 91 91 00 lds r24, 0x0091 |
1040: e2 5e subi r30, 0xE2 ; 226 |
1042: fc 4f sbci r31, 0xFC ; 252 |
1044: 80 83 st Z, r24 |
1046: 09 c0 rjmp .+18 ; 0x105a <__vector_11+0x178> |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
1048: e4 2f mov r30, r20 |
104a: f0 e0 ldi r31, 0x00 ; 0 |
104c: 80 91 91 00 lds r24, 0x0091 |
1050: e2 5e subi r30, 0xE2 ; 226 |
1052: fc 4f sbci r31, 0xFC ; 252 |
1054: 80 83 st Z, r24 |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
1056: 44 36 cpi r20, 0x64 ; 100 |
1058: 20 f4 brcc .+8 ; 0x1062 <__vector_11+0x180> |
105a: 4f 5f subi r20, 0xFF ; 255 |
105c: 40 93 9b 00 sts 0x009B, r20 |
1060: 02 c0 rjmp .+4 ; 0x1066 <__vector_11+0x184> |
else UartState = 0; |
1062: 10 92 9a 00 sts 0x009A, r1 |
crc += SioTmp; |
1066: 20 91 91 00 lds r18, 0x0091 |
106a: 80 91 9e 00 lds r24, 0x009E |
106e: 90 91 9f 00 lds r25, 0x009F |
1072: 82 0f add r24, r18 |
1074: 91 1d adc r25, r1 |
1076: 90 93 9f 00 sts 0x009F, r25 |
107a: 80 93 9e 00 sts 0x009E, r24 |
107e: 02 c0 rjmp .+4 ; 0x1084 <__vector_11+0x1a2> |
break; |
default: |
UartState = 0; |
1080: 10 92 9a 00 sts 0x009A, r1 |
break; |
} |
#endif |
}; |
1084: ff 91 pop r31 |
1086: ef 91 pop r30 |
1088: df 91 pop r29 |
108a: cf 91 pop r28 |
108c: bf 91 pop r27 |
108e: af 91 pop r26 |
1090: 9f 91 pop r25 |
1092: 8f 91 pop r24 |
1094: 7f 91 pop r23 |
1096: 6f 91 pop r22 |
1098: 5f 91 pop r21 |
109a: 4f 91 pop r20 |
109c: 3f 91 pop r19 |
109e: 2f 91 pop r18 |
10a0: 0f 90 pop r0 |
10a2: 0f be out 0x3f, r0 ; 63 |
10a4: 0f 90 pop r0 |
10a6: 1f 90 pop r1 |
10a8: 18 95 reti |
000010aa <WriteProgramData>: |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
} |
10aa: 08 95 ret |
000010ac <DatenUebertragung>: |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen)) // im Singlestep-Betrieb in jedem Schtitt senden |
10ac: 80 91 1c 03 lds r24, 0x031C |
10b0: 90 91 1d 03 lds r25, 0x031D |
10b4: b3 d0 rcall .+358 ; 0x121c <CheckDelay> |
10b6: 88 23 and r24, r24 |
10b8: 91 f0 breq .+36 ; 0x10de <DatenUebertragung+0x32> |
10ba: 80 91 6f 00 lds r24, 0x006F |
10be: 88 23 and r24, r24 |
10c0: 71 f0 breq .+28 ; 0x10de <DatenUebertragung+0x32> |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
10c2: 84 e4 ldi r24, 0x44 ; 68 |
10c4: 60 91 b7 02 lds r22, 0x02B7 |
10c8: 42 e8 ldi r20, 0x82 ; 130 |
10ca: 53 e0 ldi r21, 0x03 ; 3 |
10cc: 22 e1 ldi r18, 0x12 ; 18 |
10ce: 97 de rcall .-722 ; 0xdfe <SendOutData> |
Debug_Timer = SetDelay(50); // Sendeintervall |
10d0: 82 e3 ldi r24, 0x32 ; 50 |
10d2: 90 e0 ldi r25, 0x00 ; 0 |
10d4: 99 d0 rcall .+306 ; 0x1208 <SetDelay> |
10d6: 90 93 1d 03 sts 0x031D, r25 |
10da: 80 93 1c 03 sts 0x031C, r24 |
10de: 08 95 ret |
000010e0 <UART_Init>: |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
10e0: 88 e1 ldi r24, 0x18 ; 24 |
10e2: 8a b9 out 0x0a, r24 ; 10 |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
10e4: 59 9a sbi 0x0b, 1 ; 11 |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); // serieller Empfangsinterrupt |
10e6: 57 9a sbi 0x0a, 7 ; 10 |
// TX-Interrupt Freigabe |
// UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR= (SYSCLK / (BAUD_RATE * 8L) -1 ); |
10e8: 80 e1 ldi r24, 0x10 ; 16 |
10ea: 89 b9 out 0x09, r24 ; 9 |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
10ec: 84 e6 ldi r24, 0x64 ; 100 |
10ee: 97 e0 ldi r25, 0x07 ; 7 |
10f0: 60 e0 ldi r22, 0x00 ; 0 |
10f2: 70 e0 ldi r23, 0x00 ; 0 |
10f4: f7 d3 rcall .+2030 ; 0x18e4 <fdevopen> |
Debug_Timer = SetDelay(200); |
10f6: 88 ec ldi r24, 0xC8 ; 200 |
10f8: 90 e0 ldi r25, 0x00 ; 0 |
10fa: 86 d0 rcall .+268 ; 0x1208 <SetDelay> |
10fc: 90 93 1d 03 sts 0x031D, r25 |
1100: 80 93 1c 03 sts 0x031C, r24 |
// Version beim Start ausgeben (nicht schön, aber geht... ) |
uart_putchar ('\n');uart_putchar ('B');uart_putchar ('L');uart_putchar (':'); |
1104: 8a e0 ldi r24, 0x0A ; 10 |
1106: e0 de rcall .-576 ; 0xec8 <uart_putchar> |
1108: 82 e4 ldi r24, 0x42 ; 66 |
110a: de de rcall .-580 ; 0xec8 <uart_putchar> |
110c: 8c e4 ldi r24, 0x4C ; 76 |
110e: dc de rcall .-584 ; 0xec8 <uart_putchar> |
1110: 8a e3 ldi r24, 0x3A ; 58 |
1112: da de rcall .-588 ; 0xec8 <uart_putchar> |
uart_putchar ('V');uart_putchar (0x30 + VERSION_HAUPTVERSION);uart_putchar ('.');uart_putchar (0x30 + VERSION_NEBENVERSION/10); uart_putchar (0x30 + VERSION_NEBENVERSION%10); |
1114: 86 e5 ldi r24, 0x56 ; 86 |
1116: d8 de rcall .-592 ; 0xec8 <uart_putchar> |
1118: 80 e3 ldi r24, 0x30 ; 48 |
111a: d6 de rcall .-596 ; 0xec8 <uart_putchar> |
111c: 8e e2 ldi r24, 0x2E ; 46 |
111e: d4 de rcall .-600 ; 0xec8 <uart_putchar> |
1120: 84 e3 ldi r24, 0x34 ; 52 |
1122: d2 de rcall .-604 ; 0xec8 <uart_putchar> |
1124: 81 e3 ldi r24, 0x31 ; 49 |
1126: d0 de rcall .-608 ; 0xec8 <uart_putchar> |
uart_putchar ('\n');uart_putchar('H');uart_putchar('W');uart_putchar (':');uart_putchar('1');uart_putchar('.');uart_putchar ((0x30-10) + HwVersion); |
1128: 8a e0 ldi r24, 0x0A ; 10 |
112a: ce de rcall .-612 ; 0xec8 <uart_putchar> |
112c: 88 e4 ldi r24, 0x48 ; 72 |
112e: cc de rcall .-616 ; 0xec8 <uart_putchar> |
1130: 87 e5 ldi r24, 0x57 ; 87 |
1132: ca de rcall .-620 ; 0xec8 <uart_putchar> |
1134: 8a e3 ldi r24, 0x3A ; 58 |
1136: c8 de rcall .-624 ; 0xec8 <uart_putchar> |
1138: 81 e3 ldi r24, 0x31 ; 49 |
113a: c6 de rcall .-628 ; 0xec8 <uart_putchar> |
113c: 8e e2 ldi r24, 0x2E ; 46 |
113e: c4 de rcall .-632 ; 0xec8 <uart_putchar> |
1140: 80 91 b2 00 lds r24, 0x00B2 |
1144: 8a 5d subi r24, 0xDA ; 218 |
1146: c0 de rcall .-640 ; 0xec8 <uart_putchar> |
uart_putchar ('\n');uart_putchar ('A');uart_putchar ('D');uart_putchar ('R'); uart_putchar (':'); uart_putchar (0x30 + MotorAdresse); |
1148: 8a e0 ldi r24, 0x0A ; 10 |
114a: be de rcall .-644 ; 0xec8 <uart_putchar> |
114c: 81 e4 ldi r24, 0x41 ; 65 |
114e: bc de rcall .-648 ; 0xec8 <uart_putchar> |
1150: 84 e4 ldi r24, 0x44 ; 68 |
1152: ba de rcall .-652 ; 0xec8 <uart_putchar> |
1154: 82 e5 ldi r24, 0x52 ; 82 |
1156: b8 de rcall .-656 ; 0xec8 <uart_putchar> |
1158: 8a e3 ldi r24, 0x3A ; 58 |
115a: b6 de rcall .-660 ; 0xec8 <uart_putchar> |
115c: 80 91 66 00 lds r24, 0x0066 |
1160: 80 5d subi r24, 0xD0 ; 208 |
1162: b2 de rcall .-668 ; 0xec8 <uart_putchar> |
} |
1164: 08 95 ret |
00001166 <__vector_9>: |
T0_RISING_EDGE = 7 |
}; |
SIGNAL(SIG_OVERFLOW0) |
{ |
1166: 1f 92 push r1 |
1168: 0f 92 push r0 |
116a: 0f b6 in r0, 0x3f ; 63 |
116c: 0f 92 push r0 |
116e: 11 24 eor r1, r1 |
1170: 8f 93 push r24 |
1172: 9f 93 push r25 |
static unsigned char cnt; |
Timer0Overflow++; |
1174: 80 91 94 03 lds r24, 0x0394 |
1178: 8f 5f subi r24, 0xFF ; 255 |
117a: 80 93 94 03 sts 0x0394, r24 |
if(!cnt--) |
117e: 80 91 a4 00 lds r24, 0x00A4 |
1182: 81 50 subi r24, 0x01 ; 1 |
1184: 80 93 a4 00 sts 0x00A4, r24 |
1188: 8f 5f subi r24, 0xFF ; 255 |
118a: 71 f5 brne .+92 ; 0x11e8 <__vector_9+0x82> |
{ |
cnt = 3; |
118c: 83 e0 ldi r24, 0x03 ; 3 |
118e: 80 93 a4 00 sts 0x00A4, r24 |
CountMilliseconds += 1; |
1192: 80 91 a2 00 lds r24, 0x00A2 |
1196: 90 91 a3 00 lds r25, 0x00A3 |
119a: 01 96 adiw r24, 0x01 ; 1 |
119c: 90 93 a3 00 sts 0x00A3, r25 |
11a0: 80 93 a2 00 sts 0x00A2, r24 |
if(I2C_Timeout) I2C_Timeout--; |
11a4: 80 91 80 00 lds r24, 0x0080 |
11a8: 90 91 81 00 lds r25, 0x0081 |
11ac: 00 97 sbiw r24, 0x00 ; 0 |
11ae: 29 f0 breq .+10 ; 0x11ba <__vector_9+0x54> |
11b0: 01 97 sbiw r24, 0x01 ; 1 |
11b2: 90 93 81 00 sts 0x0081, r25 |
11b6: 80 93 80 00 sts 0x0080, r24 |
if(PPM_Timeout) PPM_Timeout--; else anz_ppm_werte = 0; |
11ba: 80 91 a8 00 lds r24, 0x00A8 |
11be: 88 23 and r24, r24 |
11c0: 31 f0 breq .+12 ; 0x11ce <__vector_9+0x68> |
11c2: 80 91 a8 00 lds r24, 0x00A8 |
11c6: 81 50 subi r24, 0x01 ; 1 |
11c8: 80 93 a8 00 sts 0x00A8, r24 |
11cc: 02 c0 rjmp .+4 ; 0x11d2 <__vector_9+0x6c> |
11ce: 10 92 a9 00 sts 0x00A9, r1 |
if(SIO_Timeout) SIO_Timeout--; |
11d2: 80 91 82 00 lds r24, 0x0082 |
11d6: 90 91 83 00 lds r25, 0x0083 |
11da: 00 97 sbiw r24, 0x00 ; 0 |
11dc: 29 f0 breq .+10 ; 0x11e8 <__vector_9+0x82> |
11de: 01 97 sbiw r24, 0x01 ; 1 |
11e0: 90 93 83 00 sts 0x0083, r25 |
11e4: 80 93 82 00 sts 0x0082, r24 |
} |
} |
11e8: 9f 91 pop r25 |
11ea: 8f 91 pop r24 |
11ec: 0f 90 pop r0 |
11ee: 0f be out 0x3f, r0 ; 63 |
11f0: 0f 90 pop r0 |
11f2: 1f 90 pop r1 |
11f4: 18 95 reti |
000011f6 <Timer0_Init>: |
void Timer0_Init(void) |
{ |
TCCR0 = TIMER_TEILER; |
11f6: 82 e0 ldi r24, 0x02 ; 2 |
11f8: 83 bf out 0x33, r24 ; 51 |
// TCNT0 = -TIMER_RELOAD_VALUE; // reload |
TIM0_START; |
11fa: 89 b7 in r24, 0x39 ; 57 |
11fc: 81 60 ori r24, 0x01 ; 1 |
11fe: 89 bf out 0x39, r24 ; 57 |
TIMER2_INT_ENABLE; |
1200: 89 b7 in r24, 0x39 ; 57 |
1202: 80 64 ori r24, 0x40 ; 64 |
1204: 89 bf out 0x39, r24 ; 57 |
} |
1206: 08 95 ret |
00001208 <SetDelay>: |
unsigned int SetDelay(unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
1208: 20 91 a2 00 lds r18, 0x00A2 |
120c: 30 91 a3 00 lds r19, 0x00A3 |
1210: 21 50 subi r18, 0x01 ; 1 |
1212: 30 40 sbci r19, 0x00 ; 0 |
1214: 28 0f add r18, r24 |
1216: 39 1f adc r19, r25 |
} |
1218: c9 01 movw r24, r18 |
121a: 08 95 ret |
0000121c <CheckDelay>: |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
121c: 20 91 a2 00 lds r18, 0x00A2 |
1220: 30 91 a3 00 lds r19, 0x00A3 |
1224: 82 1b sub r24, r18 |
1226: 93 0b sbc r25, r19 |
1228: 80 70 andi r24, 0x00 ; 0 |
122a: 90 78 andi r25, 0x80 ; 128 |
} |
122c: 89 2f mov r24, r25 |
122e: 08 95 ret |
00001230 <Delay_ms>: |
} |
unsigned int SetDelay(unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
1230: 20 91 a2 00 lds r18, 0x00A2 |
1234: 30 91 a3 00 lds r19, 0x00A3 |
1238: 21 50 subi r18, 0x01 ; 1 |
123a: 30 40 sbci r19, 0x00 ; 0 |
123c: 28 0f add r18, r24 |
123e: 39 1f adc r19, r25 |
} |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
1240: 80 91 a2 00 lds r24, 0x00A2 |
1244: 90 91 a3 00 lds r25, 0x00A3 |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
1248: a9 01 movw r20, r18 |
124a: 48 1b sub r20, r24 |
124c: 59 0b sbc r21, r25 |
124e: ca 01 movw r24, r20 |
1250: 80 70 andi r24, 0x00 ; 0 |
1252: 90 78 andi r25, 0x80 ; 128 |
1254: 99 23 and r25, r25 |
1256: a1 f3 breq .-24 ; 0x1240 <Delay_ms+0x10> |
} |
1258: 08 95 ret |
0000125a <ADC_Init>: |
//############################################################################ |
//Init ADC |
void ADC_Init(void) |
//############################################################################ |
{ |
ADCSRA = 0xA6; // Free Run & 1MHZ |
125a: 86 ea ldi r24, 0xA6 ; 166 |
125c: 86 b9 out 0x06, r24 ; 6 |
ADMUX = 7 | IntRef; // Kanal 7 |
125e: 80 91 8d 00 lds r24, 0x008D |
1262: 87 60 ori r24, 0x07 ; 7 |
1264: 87 b9 out 0x07, r24 ; 7 |
ADCSRA |= 0x40; // Start |
1266: 36 9a sbi 0x06, 6 ; 6 |
} |
1268: 08 95 ret |
0000126a <AdConvert>: |
void AdConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
126a: 27 b1 in r18, 0x07 ; 7 |
ADMUX = 0x06 | IntRef; // Kanal 6 |
126c: 90 91 8d 00 lds r25, 0x008D |
1270: 96 60 ori r25, 0x06 ; 6 |
1272: 97 b9 out 0x07, r25 ; 7 |
SFIOR = 0x00; // Analog Comperator aus |
1274: 10 be out 0x30, r1 ; 48 |
ADCSRA = 0xD3; // Converter ein, single |
1276: 83 ed ldi r24, 0xD3 ; 211 |
1278: 86 b9 out 0x06, r24 ; 6 |
ADCSRA |= 0x10; // Ready löschen |
127a: 34 9a sbi 0x06, 4 ; 6 |
ADMUX = 0x06 | IntRef; // Kanal 6 |
127c: 97 b9 out 0x07, r25 ; 7 |
ADCSRA |= 0x40; // Start |
127e: 36 9a sbi 0x06, 6 ; 6 |
while (((ADCSRA & 0x10) == 0)); |
1280: 34 9b sbis 0x06, 4 ; 6 |
1282: fe cf rjmp .-4 ; 0x1280 <AdConvert+0x16> |
ADMUX = sense; // zurück auf den Sense-Kanal |
1284: 27 b9 out 0x07, r18 ; 7 |
i = ADCW * 4; |
1286: 84 b1 in r24, 0x04 ; 4 |
1288: 95 b1 in r25, 0x05 ; 5 |
// if(i > 300) i = 300; |
Strom = (i + Strom * 7) / 8; |
128a: 20 91 7a 00 lds r18, 0x007A |
128e: 30 91 7b 00 lds r19, 0x007B |
1292: a9 01 movw r20, r18 |
1294: 63 e0 ldi r22, 0x03 ; 3 |
1296: 44 0f add r20, r20 |
1298: 55 1f adc r21, r21 |
129a: 6a 95 dec r22 |
129c: e1 f7 brne .-8 ; 0x1296 <AdConvert+0x2c> |
129e: 42 1b sub r20, r18 |
12a0: 53 0b sbc r21, r19 |
12a2: 88 0f add r24, r24 |
12a4: 99 1f adc r25, r25 |
12a6: 88 0f add r24, r24 |
12a8: 99 1f adc r25, r25 |
12aa: 48 0f add r20, r24 |
12ac: 59 1f adc r21, r25 |
12ae: 83 e0 ldi r24, 0x03 ; 3 |
12b0: 56 95 lsr r21 |
12b2: 47 95 ror r20 |
12b4: 8a 95 dec r24 |
12b6: e1 f7 brne .-8 ; 0x12b0 <AdConvert+0x46> |
12b8: 50 93 7b 00 sts 0x007B, r21 |
12bc: 40 93 7a 00 sts 0x007A, r20 |
if (Strom_max < Strom) Strom_max = Strom; |
12c0: 80 91 7c 00 lds r24, 0x007C |
12c4: 90 e0 ldi r25, 0x00 ; 0 |
12c6: 84 17 cp r24, r20 |
12c8: 95 07 cpc r25, r21 |
12ca: 10 f4 brcc .+4 ; 0x12d0 <AdConvert+0x66> |
12cc: 40 93 7c 00 sts 0x007C, r20 |
ADCSRA = 0x00; |
12d0: 16 b8 out 0x06, r1 ; 6 |
SFIOR = 0x08; // Analog Comperator ein |
12d2: 88 e0 ldi r24, 0x08 ; 8 |
12d4: 80 bf out 0x30, r24 ; 48 |
} |
12d6: 08 95 ret |
000012d8 <MessAD>: |
//Strom Analogwerte lesen |
unsigned int MessAD(unsigned char channel) |
//############################################################################ |
{ |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
12d8: 27 b1 in r18, 0x07 ; 7 |
channel |= IntRef; |
12da: 90 91 8d 00 lds r25, 0x008D |
12de: 98 2b or r25, r24 |
ADMUX = channel; // Kanal 6 |
12e0: 97 b9 out 0x07, r25 ; 7 |
SFIOR = 0x00; // Analog Comperator aus |
12e2: 10 be out 0x30, r1 ; 48 |
ADCSRA = 0xD3; // Converter ein, single |
12e4: 83 ed ldi r24, 0xD3 ; 211 |
12e6: 86 b9 out 0x06, r24 ; 6 |
ADCSRA |= 0x10; // Ready löschen |
12e8: 34 9a sbi 0x06, 4 ; 6 |
ADMUX = channel; // Kanal 6 |
12ea: 97 b9 out 0x07, r25 ; 7 |
ADCSRA |= 0x40; // Start |
12ec: 36 9a sbi 0x06, 6 ; 6 |
while (((ADCSRA & 0x10) == 0)); |
12ee: 34 9b sbis 0x06, 4 ; 6 |
12f0: fe cf rjmp .-4 ; 0x12ee <MessAD+0x16> |
ADMUX = sense; // zurück auf den Sense-Kanal |
12f2: 27 b9 out 0x07, r18 ; 7 |
ADCSRA = 0x00; |
12f4: 16 b8 out 0x06, r1 ; 6 |
SFIOR = 0x08; // Analog Comperator ein |
12f6: 88 e0 ldi r24, 0x08 ; 8 |
12f8: 80 bf out 0x30, r24 ; 48 |
return(ADCW); |
12fa: 24 b1 in r18, 0x04 ; 4 |
12fc: 35 b1 in r19, 0x05 ; 5 |
} |
12fe: c9 01 movw r24, r18 |
1300: 08 95 ret |
00001302 <FastADConvert>: |
//Strom Analogwerte lesen |
void FastADConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
i = MessAD(6) * 4; |
1302: 86 e0 ldi r24, 0x06 ; 6 |
1304: e9 df rcall .-46 ; 0x12d8 <MessAD> |
1306: 9c 01 movw r18, r24 |
1308: 22 0f add r18, r18 |
130a: 33 1f adc r19, r19 |
130c: 22 0f add r18, r18 |
130e: 33 1f adc r19, r19 |
1310: 29 3c cpi r18, 0xC9 ; 201 |
1312: 31 05 cpc r19, r1 |
1314: 10 f0 brcs .+4 ; 0x131a <FastADConvert+0x18> |
1316: 28 ec ldi r18, 0xC8 ; 200 |
1318: 30 e0 ldi r19, 0x00 ; 0 |
// i = ADCW * 4; |
if(i > 200) i = 200; |
Strom = i;//(i + Strom * 1) / 2; |
131a: 30 93 7b 00 sts 0x007B, r19 |
131e: 20 93 7a 00 sts 0x007A, r18 |
if (Strom_max < Strom) Strom_max = Strom; |
1322: 80 91 7c 00 lds r24, 0x007C |
1326: 90 e0 ldi r25, 0x00 ; 0 |
1328: 82 17 cp r24, r18 |
132a: 93 07 cpc r25, r19 |
132c: 10 f4 brcc .+4 ; 0x1332 <FastADConvert+0x30> |
132e: 20 93 7c 00 sts 0x007C, r18 |
ADCSRA = 0x00; |
1332: 16 b8 out 0x06, r1 ; 6 |
SFIOR = 0x08; // Analog Comperator ein |
1334: 88 e0 ldi r24, 0x08 ; 8 |
1336: 80 bf out 0x30, r24 ; 48 |
} |
1338: 08 95 ret |
0000133a <InitPPM>: |
//############################################################################ |
// |
void InitPPM(void) |
//############################################################################ |
{ |
TCCR1B |= (1<<ICES1)|(1<<ICNC1); |
133a: 8e b5 in r24, 0x2e ; 46 |
133c: 80 6c ori r24, 0xC0 ; 192 |
133e: 8e bd out 0x2e, r24 ; 46 |
ICP_POS_FLANKE; |
1340: 8e b5 in r24, 0x2e ; 46 |
1342: 80 64 ori r24, 0x40 ; 64 |
1344: 8e bd out 0x2e, r24 ; 46 |
ICP_INT_ENABLE; |
1346: 89 b7 in r24, 0x39 ; 57 |
1348: 80 62 ori r24, 0x20 ; 32 |
134a: 89 bf out 0x39, r24 ; 57 |
TIMER1_INT_ENABLE; |
134c: 89 b7 in r24, 0x39 ; 57 |
134e: 84 60 ori r24, 0x04 ; 4 |
1350: 89 bf out 0x39, r24 ; 57 |
} |
1352: 08 95 ret |
00001354 <__vector_8>: |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW1) |
//############################################################################ |
{ |
1354: 1f 92 push r1 |
1356: 0f 92 push r0 |
1358: 0f b6 in r0, 0x3f ; 63 |
135a: 0f 92 push r0 |
135c: 11 24 eor r1, r1 |
135e: 8f 93 push r24 |
Timer1Overflow++; |
1360: 80 91 a7 00 lds r24, 0x00A7 |
1364: 8f 5f subi r24, 0xFF ; 255 |
1366: 80 93 a7 00 sts 0x00A7, r24 |
} |
136a: 8f 91 pop r24 |
136c: 0f 90 pop r0 |
136e: 0f be out 0x3f, r0 ; 63 |
1370: 0f 90 pop r0 |
1372: 1f 90 pop r1 |
1374: 18 95 reti |
00001376 <__vector_5>: |
//############################################################################ |
// |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
1376: 1f 92 push r1 |
1378: 0f 92 push r0 |
137a: 0f b6 in r0, 0x3f ; 63 |
137c: 0f 92 push r0 |
137e: 11 24 eor r1, r1 |
1380: 2f 93 push r18 |
1382: 3f 93 push r19 |
1384: 4f 93 push r20 |
1386: 5f 93 push r21 |
1388: 8f 93 push r24 |
138a: 9f 93 push r25 |
static unsigned int tim_alt; |
static unsigned int ppm; |
if(TCCR1B & (1<<ICES1)) // Positive Flanke |
138c: 0e b4 in r0, 0x2e ; 46 |
138e: 06 fe sbrs r0, 6 |
1390: 0f c0 rjmp .+30 ; 0x13b0 <__vector_5+0x3a> |
{ |
Timer1Overflow = 0; |
1392: 10 92 a7 00 sts 0x00A7, r1 |
tim_alt = ICR1; |
1396: 86 b5 in r24, 0x26 ; 38 |
1398: 97 b5 in r25, 0x27 ; 39 |
139a: 90 93 ad 00 sts 0x00AD, r25 |
139e: 80 93 ac 00 sts 0x00AC, r24 |
ICP_NEG_FLANKE; |
13a2: 8e b5 in r24, 0x2e ; 46 |
13a4: 8f 7b andi r24, 0xBF ; 191 |
13a6: 8e bd out 0x2e, r24 ; 46 |
PPM_Timeout = 100; |
13a8: 84 e6 ldi r24, 0x64 ; 100 |
13aa: 80 93 a8 00 sts 0x00A8, r24 |
13ae: 6f c0 rjmp .+222 ; 0x148e <__vector_5+0x118> |
} |
else // Negative Flanke |
{ |
ICP_POS_FLANKE; |
13b0: 8e b5 in r24, 0x2e ; 46 |
13b2: 80 64 ori r24, 0x40 ; 64 |
13b4: 8e bd out 0x2e, r24 ; 46 |
#ifdef _32KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 32; |
#endif |
#ifdef _16KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 32; |
13b6: 26 b5 in r18, 0x26 ; 38 |
13b8: 37 b5 in r19, 0x27 ; 39 |
13ba: 40 91 a7 00 lds r20, 0x00A7 |
13be: 80 91 ac 00 lds r24, 0x00AC |
13c2: 90 91 ad 00 lds r25, 0x00AD |
13c6: 28 1b sub r18, r24 |
13c8: 39 0b sbc r19, r25 |
13ca: 94 2f mov r25, r20 |
13cc: 99 0f add r25, r25 |
13ce: 80 e0 ldi r24, 0x00 ; 0 |
13d0: 28 0f add r18, r24 |
13d2: 39 1f adc r19, r25 |
13d4: 85 e0 ldi r24, 0x05 ; 5 |
13d6: 36 95 lsr r19 |
13d8: 27 95 ror r18 |
13da: 8a 95 dec r24 |
13dc: e1 f7 brne .-8 ; 0x13d6 <__vector_5+0x60> |
13de: 30 93 ab 00 sts 0x00AB, r19 |
13e2: 20 93 aa 00 sts 0x00AA, r18 |
#endif |
if(ppm < 280) ppm = 280; |
13e6: 28 51 subi r18, 0x18 ; 24 |
13e8: 31 40 sbci r19, 0x01 ; 1 |
13ea: 30 f4 brcc .+12 ; 0x13f8 <__vector_5+0x82> |
13ec: 88 e1 ldi r24, 0x18 ; 24 |
13ee: 91 e0 ldi r25, 0x01 ; 1 |
13f0: 90 93 ab 00 sts 0x00AB, r25 |
13f4: 80 93 aa 00 sts 0x00AA, r24 |
ppm -= 280; |
13f8: 40 91 aa 00 lds r20, 0x00AA |
13fc: 50 91 ab 00 lds r21, 0x00AB |
1400: 48 51 subi r20, 0x18 ; 24 |
1402: 51 40 sbci r21, 0x01 ; 1 |
if(PPM_Signal < ppm) PPM_Signal++; |
1404: 80 91 a5 00 lds r24, 0x00A5 |
1408: 90 91 a6 00 lds r25, 0x00A6 |
140c: 84 17 cp r24, r20 |
140e: 95 07 cpc r25, r21 |
1410: 30 f4 brcc .+12 ; 0x141e <__vector_5+0xa8> |
1412: 80 91 a5 00 lds r24, 0x00A5 |
1416: 90 91 a6 00 lds r25, 0x00A6 |
141a: 01 96 adiw r24, 0x01 ; 1 |
141c: 0c c0 rjmp .+24 ; 0x1436 <__vector_5+0xc0> |
else if(PPM_Signal > ppm) PPM_Signal--; |
141e: 80 91 a5 00 lds r24, 0x00A5 |
1422: 90 91 a6 00 lds r25, 0x00A6 |
1426: 48 17 cp r20, r24 |
1428: 59 07 cpc r21, r25 |
142a: 48 f4 brcc .+18 ; 0x143e <__vector_5+0xc8> |
142c: 80 91 a5 00 lds r24, 0x00A5 |
1430: 90 91 a6 00 lds r25, 0x00A6 |
1434: 01 97 sbiw r24, 0x01 ; 1 |
1436: 90 93 a6 00 sts 0x00A6, r25 |
143a: 80 93 a5 00 sts 0x00A5, r24 |
if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern |
143e: 80 91 a5 00 lds r24, 0x00A5 |
1442: 90 91 a6 00 lds r25, 0x00A6 |
1446: 9c 01 movw r18, r24 |
1448: 22 0f add r18, r18 |
144a: 33 1f adc r19, r19 |
144c: 22 0f add r18, r18 |
144e: 33 1f adc r19, r19 |
1450: 22 0f add r18, r18 |
1452: 33 1f adc r19, r19 |
1454: 28 1b sub r18, r24 |
1456: 39 0b sbc r19, r25 |
1458: 24 0f add r18, r20 |
145a: 35 1f adc r19, r21 |
145c: 83 e0 ldi r24, 0x03 ; 3 |
145e: 36 95 lsr r19 |
1460: 27 95 ror r18 |
1462: 8a 95 dec r24 |
1464: e1 f7 brne .-8 ; 0x145e <__vector_5+0xe8> |
1466: 30 93 ab 00 sts 0x00AB, r19 |
146a: 20 93 aa 00 sts 0x00AA, r18 |
PPM_Signal = ppm; |
146e: 30 93 a6 00 sts 0x00A6, r19 |
1472: 20 93 a5 00 sts 0x00A5, r18 |
if(anz_ppm_werte < 255) anz_ppm_werte++; |
1476: 80 91 a9 00 lds r24, 0x00A9 |
147a: 8f 3f cpi r24, 0xFF ; 255 |
147c: 29 f0 breq .+10 ; 0x1488 <__vector_5+0x112> |
147e: 80 91 a9 00 lds r24, 0x00A9 |
1482: 8f 5f subi r24, 0xFF ; 255 |
1484: 80 93 a9 00 sts 0x00A9, r24 |
ZeitZumAdWandeln = 1; |
1488: 81 e0 ldi r24, 0x01 ; 1 |
148a: 80 93 65 00 sts 0x0065, r24 |
} |
} |
148e: 9f 91 pop r25 |
1490: 8f 91 pop r24 |
1492: 5f 91 pop r21 |
1494: 4f 91 pop r20 |
1496: 3f 91 pop r19 |
1498: 2f 91 pop r18 |
149a: 0f 90 pop r0 |
149c: 0f be out 0x3f, r0 ; 63 |
149e: 0f 90 pop r0 |
14a0: 1f 90 pop r1 |
14a2: 18 95 reti |
000014a4 <__vector_1>: |
//############################################################################ |
// |
SIGNAL(SIG_INTERRUPT0) |
//############################################################################ |
{ |
14a4: 1f 92 push r1 |
14a6: 0f 92 push r0 |
14a8: 0f b6 in r0, 0x3f ; 63 |
14aa: 0f 92 push r0 |
14ac: 11 24 eor r1, r1 |
14ae: 8f 93 push r24 |
CLR_INT0_FLAG; // IntFlag Loeschen |
14b0: 8a b7 in r24, 0x3a ; 58 |
14b2: 8f 7b andi r24, 0xBF ; 191 |
14b4: 8a bf out 0x3a, r24 ; 58 |
} |
14b6: 8f 91 pop r24 |
14b8: 0f 90 pop r0 |
14ba: 0f be out 0x3f, r0 ; 63 |
14bc: 0f 90 pop r0 |
14be: 1f 90 pop r1 |
14c0: 18 95 reti |
000014c2 <InitIC2_Slave>: |
//############################################################################ |
//I2C (TWI) Interface Init |
void InitIC2_Slave(uint8_t adr) |
//############################################################################ |
{ |
TWAR = adr + (2*MotorAdresse); // Eigene Adresse setzen |
14c2: 90 91 66 00 lds r25, 0x0066 |
14c6: 99 0f add r25, r25 |
14c8: 98 0f add r25, r24 |
14ca: 92 b9 out 0x02, r25 ; 2 |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
14cc: 85 ec ldi r24, 0xC5 ; 197 |
14ce: 86 bf out 0x36, r24 ; 54 |
} |
14d0: 08 95 ret |
000014d2 <__vector_17>: |
//############################################################################ |
//ISR, die bei einem Ereignis auf dem Bus ausgelöst wird. Im Register TWSR befindet |
//sich dann ein Statuscode, anhand dessen die Situation festgestellt werden kann. |
ISR (TWI_vect) |
//############################################################################ |
{ |
14d2: 1f 92 push r1 |
14d4: 0f 92 push r0 |
14d6: 0f b6 in r0, 0x3f ; 63 |
14d8: 0f 92 push r0 |
14da: 11 24 eor r1, r1 |
14dc: 8f 93 push r24 |
14de: 9f 93 push r25 |
switch (TWSR & 0xF8) |
14e0: 81 b1 in r24, 0x01 ; 1 |
14e2: 90 e0 ldi r25, 0x00 ; 0 |
14e4: 88 7f andi r24, 0xF8 ; 248 |
14e6: 90 70 andi r25, 0x00 ; 0 |
14e8: 80 38 cpi r24, 0x80 ; 128 |
14ea: 91 05 cpc r25, r1 |
14ec: c9 f0 breq .+50 ; 0x1520 <__vector_17+0x4e> |
14ee: 81 38 cpi r24, 0x81 ; 129 |
14f0: 91 05 cpc r25, r1 |
14f2: 34 f4 brge .+12 ; 0x1500 <__vector_17+0x2e> |
14f4: 00 97 sbiw r24, 0x00 ; 0 |
14f6: 91 f1 breq .+100 ; 0x155c <__vector_17+0x8a> |
14f8: 80 36 cpi r24, 0x60 ; 96 |
14fa: 91 05 cpc r25, r1 |
14fc: 91 f5 brne .+100 ; 0x1562 <__vector_17+0x90> |
14fe: 0a c0 rjmp .+20 ; 0x1514 <__vector_17+0x42> |
1500: 88 3b cpi r24, 0xB8 ; 184 |
1502: 91 05 cpc r25, r1 |
1504: b9 f0 breq .+46 ; 0x1534 <__vector_17+0x62> |
1506: 88 3f cpi r24, 0xF8 ; 248 |
1508: 91 05 cpc r25, r1 |
150a: 29 f1 breq .+74 ; 0x1556 <__vector_17+0x84> |
150c: 88 3a cpi r24, 0xA8 ; 168 |
150e: 91 05 cpc r25, r1 |
1510: 41 f5 brne .+80 ; 0x1562 <__vector_17+0x90> |
1512: 10 c0 rjmp .+32 ; 0x1534 <__vector_17+0x62> |
{ |
case SR_SLA_ACK: |
TWCR |= (1<<TWINT); |
1514: 86 b7 in r24, 0x36 ; 54 |
1516: 80 68 ori r24, 0x80 ; 128 |
1518: 86 bf out 0x36, r24 ; 54 |
Byte_Counter=0; |
151a: 10 92 ae 00 sts 0x00AE, r1 |
151e: 23 c0 rjmp .+70 ; 0x1566 <__vector_17+0x94> |
return; |
// Daten Empfangen |
case SR_PREV_ACK: |
I2C_RXBuffer = TWDR; |
1520: 83 b1 in r24, 0x03 ; 3 |
1522: 80 93 95 03 sts 0x0395, r24 |
I2C_Timeout = 500; |
1526: 84 ef ldi r24, 0xF4 ; 244 |
1528: 91 e0 ldi r25, 0x01 ; 1 |
152a: 90 93 81 00 sts 0x0081, r25 |
152e: 80 93 80 00 sts 0x0080, r24 |
1532: 0e c0 rjmp .+28 ; 0x1550 <__vector_17+0x7e> |
} |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_DATA_ACK: |
if (Byte_Counter==0) |
1534: 80 91 ae 00 lds r24, 0x00AE |
1538: 88 23 and r24, r24 |
153a: 39 f4 brne .+14 ; 0x154a <__vector_17+0x78> |
{ |
TWDR = Mittelstrom; |
153c: 80 91 7d 00 lds r24, 0x007D |
1540: 83 b9 out 0x03, r24 ; 3 |
Byte_Counter++; |
1542: 81 e0 ldi r24, 0x01 ; 1 |
1544: 80 93 ae 00 sts 0x00AE, r24 |
1548: 03 c0 rjmp .+6 ; 0x1550 <__vector_17+0x7e> |
} |
else |
{ |
TWDR = MaxPWM; |
154a: 80 91 64 00 lds r24, 0x0064 |
154e: 83 b9 out 0x03, r24 ; 3 |
} |
TWCR |= (1<<TWINT); |
1550: 86 b7 in r24, 0x36 ; 54 |
1552: 80 68 ori r24, 0x80 ; 128 |
1554: 07 c0 rjmp .+14 ; 0x1564 <__vector_17+0x92> |
return; |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_2: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
1556: 86 b7 in r24, 0x36 ; 54 |
1558: 80 69 ori r24, 0x90 ; 144 |
155a: 86 bf out 0x36, r24 ; 54 |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_1: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
155c: 86 b7 in r24, 0x36 ; 54 |
155e: 80 69 ori r24, 0x90 ; 144 |
1560: 86 bf out 0x36, r24 ; 54 |
} |
TWCR =(1<<TWEA) | (1<<TWINT) | (1<<TWEN) | (1<<TWIE); // TWI Reset |
1562: 85 ec ldi r24, 0xC5 ; 197 |
1564: 86 bf out 0x36, r24 ; 54 |
} |
1566: 9f 91 pop r25 |
1568: 8f 91 pop r24 |
156a: 0f 90 pop r0 |
156c: 0f be out 0x3f, r0 ; 63 |
156e: 0f 90 pop r0 |
1570: 1f 90 pop r1 |
1572: 18 95 reti |
00001574 <__vector_4>: |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW2) |
//############################################################################ |
{ |
1574: 1f 92 push r1 |
1576: 0f 92 push r0 |
1578: 0f b6 in r0, 0x3f ; 63 |
157a: 0f 92 push r0 |
157c: 11 24 eor r1, r1 |
} |
157e: 0f 90 pop r0 |
1580: 0f be out 0x3f, r0 ; 63 |
1582: 0f 90 pop r0 |
1584: 1f 90 pop r1 |
1586: 18 95 reti |
00001588 <Manuell>: |
//############################################################################ |
// |
void Manuell(void) |
//############################################################################ |
{ |
switch(Phase) |
1588: 80 91 af 00 lds r24, 0x00AF |
158c: 82 30 cpi r24, 0x02 ; 2 |
158e: 69 f1 breq .+90 ; 0x15ea <Manuell+0x62> |
1590: 83 30 cpi r24, 0x03 ; 3 |
1592: 30 f4 brcc .+12 ; 0x15a0 <Manuell+0x18> |
1594: 88 23 and r24, r24 |
1596: 69 f0 breq .+26 ; 0x15b2 <Manuell+0x2a> |
1598: 81 30 cpi r24, 0x01 ; 1 |
159a: 09 f0 breq .+2 ; 0x159e <Manuell+0x16> |
159c: 63 c0 rjmp .+198 ; 0x1664 <Manuell+0xdc> |
159e: 17 c0 rjmp .+46 ; 0x15ce <Manuell+0x46> |
15a0: 84 30 cpi r24, 0x04 ; 4 |
15a2: 09 f4 brne .+2 ; 0x15a6 <Manuell+0x1e> |
15a4: 3f c0 rjmp .+126 ; 0x1624 <Manuell+0x9c> |
15a6: 84 30 cpi r24, 0x04 ; 4 |
15a8: 68 f1 brcs .+90 ; 0x1604 <Manuell+0x7c> |
15aa: 85 30 cpi r24, 0x05 ; 5 |
15ac: 09 f0 breq .+2 ; 0x15b0 <Manuell+0x28> |
15ae: 5a c0 rjmp .+180 ; 0x1664 <Manuell+0xdc> |
15b0: 4b c0 rjmp .+150 ; 0x1648 <Manuell+0xc0> |
{ |
case 0: |
STEUER_A_H; |
15b2: 81 ea ldi r24, 0xA1 ; 161 |
15b4: 8f bd out 0x2f, r24 ; 47 |
15b6: 81 e6 ldi r24, 0x61 ; 97 |
15b8: 85 bd out 0x25, r24 ; 37 |
15ba: 88 e0 ldi r24, 0x08 ; 8 |
15bc: 87 bb out 0x17, r24 ; 23 |
STEUER_B_L; |
15be: 82 b3 in r24, 0x12 ; 18 |
15c0: 87 7d andi r24, 0xD7 ; 215 |
15c2: 82 bb out 0x12, r24 ; 18 |
15c4: 94 9a sbi 0x12, 4 ; 18 |
SENSE_C; |
15c6: 80 91 8d 00 lds r24, 0x008D |
15ca: 82 60 ori r24, 0x02 ; 2 |
15cc: 38 c0 rjmp .+112 ; 0x163e <Manuell+0xb6> |
SENSE_RISING_INT; |
break; |
case 1: |
STEUER_A_H; |
15ce: 81 ea ldi r24, 0xA1 ; 161 |
15d0: 8f bd out 0x2f, r24 ; 47 |
15d2: 81 e6 ldi r24, 0x61 ; 97 |
15d4: 85 bd out 0x25, r24 ; 37 |
15d6: 88 e0 ldi r24, 0x08 ; 8 |
15d8: 87 bb out 0x17, r24 ; 23 |
STEUER_C_L; |
15da: 82 b3 in r24, 0x12 ; 18 |
15dc: 87 7e andi r24, 0xE7 ; 231 |
15de: 82 bb out 0x12, r24 ; 18 |
15e0: 95 9a sbi 0x12, 5 ; 18 |
SENSE_B; |
15e2: 80 91 8d 00 lds r24, 0x008D |
15e6: 81 60 ori r24, 0x01 ; 1 |
15e8: 1a c0 rjmp .+52 ; 0x161e <Manuell+0x96> |
SENSE_FALLING_INT; |
break; |
case 2: |
STEUER_B_H; |
15ea: 81 ea ldi r24, 0xA1 ; 161 |
15ec: 8f bd out 0x2f, r24 ; 47 |
15ee: 81 e6 ldi r24, 0x61 ; 97 |
15f0: 85 bd out 0x25, r24 ; 37 |
15f2: 84 e0 ldi r24, 0x04 ; 4 |
15f4: 87 bb out 0x17, r24 ; 23 |
STEUER_C_L; |
15f6: 82 b3 in r24, 0x12 ; 18 |
15f8: 87 7e andi r24, 0xE7 ; 231 |
15fa: 82 bb out 0x12, r24 ; 18 |
15fc: 95 9a sbi 0x12, 5 ; 18 |
SENSE_A; |
15fe: 80 91 8d 00 lds r24, 0x008D |
1602: 1d c0 rjmp .+58 ; 0x163e <Manuell+0xb6> |
SENSE_RISING_INT; |
break; |
case 3: |
STEUER_B_H; |
1604: 81 ea ldi r24, 0xA1 ; 161 |
1606: 8f bd out 0x2f, r24 ; 47 |
1608: 81 e6 ldi r24, 0x61 ; 97 |
160a: 85 bd out 0x25, r24 ; 37 |
160c: 84 e0 ldi r24, 0x04 ; 4 |
160e: 87 bb out 0x17, r24 ; 23 |
STEUER_A_L; |
1610: 82 b3 in r24, 0x12 ; 18 |
1612: 8f 7c andi r24, 0xCF ; 207 |
1614: 82 bb out 0x12, r24 ; 18 |
1616: 93 9a sbi 0x12, 3 ; 18 |
SENSE_C; |
1618: 80 91 8d 00 lds r24, 0x008D |
161c: 82 60 ori r24, 0x02 ; 2 |
161e: 87 b9 out 0x07, r24 ; 7 |
SENSE_FALLING_INT; |
1620: 40 98 cbi 0x08, 0 ; 8 |
1622: 08 95 ret |
break; |
case 4: |
STEUER_C_H; |
1624: 81 ea ldi r24, 0xA1 ; 161 |
1626: 8f bd out 0x2f, r24 ; 47 |
1628: 81 e6 ldi r24, 0x61 ; 97 |
162a: 85 bd out 0x25, r24 ; 37 |
162c: 82 e0 ldi r24, 0x02 ; 2 |
162e: 87 bb out 0x17, r24 ; 23 |
STEUER_A_L; |
1630: 82 b3 in r24, 0x12 ; 18 |
1632: 8f 7c andi r24, 0xCF ; 207 |
1634: 82 bb out 0x12, r24 ; 18 |
1636: 93 9a sbi 0x12, 3 ; 18 |
SENSE_B; |
1638: 80 91 8d 00 lds r24, 0x008D |
163c: 81 60 ori r24, 0x01 ; 1 |
163e: 87 b9 out 0x07, r24 ; 7 |
SENSE_RISING_INT; |
1640: 88 b1 in r24, 0x08 ; 8 |
1642: 83 60 ori r24, 0x03 ; 3 |
1644: 88 b9 out 0x08, r24 ; 8 |
1646: 08 95 ret |
break; |
case 5: |
STEUER_C_H; |
1648: 81 ea ldi r24, 0xA1 ; 161 |
164a: 8f bd out 0x2f, r24 ; 47 |
164c: 81 e6 ldi r24, 0x61 ; 97 |
164e: 85 bd out 0x25, r24 ; 37 |
1650: 82 e0 ldi r24, 0x02 ; 2 |
1652: 87 bb out 0x17, r24 ; 23 |
STEUER_B_L; |
1654: 82 b3 in r24, 0x12 ; 18 |
1656: 87 7d andi r24, 0xD7 ; 215 |
1658: 82 bb out 0x12, r24 ; 18 |
165a: 94 9a sbi 0x12, 4 ; 18 |
SENSE_A; |
165c: 80 91 8d 00 lds r24, 0x008D |
1660: 87 b9 out 0x07, r24 ; 7 |
SENSE_FALLING_INT; |
1662: 40 98 cbi 0x08, 0 ; 8 |
1664: 08 95 ret |
00001666 <__vector_16>: |
// + Interruptroutine |
// + Wird durch den Analogkomperator ausgelöst |
// + Dadurch wird das Kommutieren erzeugt |
SIGNAL(SIG_COMPARATOR) |
//############################################################################ |
{ |
1666: 1f 92 push r1 |
1668: 0f 92 push r0 |
166a: 0f b6 in r0, 0x3f ; 63 |
166c: 0f 92 push r0 |
166e: 11 24 eor r1, r1 |
1670: cf 92 push r12 |
1672: df 92 push r13 |
1674: ef 92 push r14 |
1676: ff 92 push r15 |
1678: 0f 93 push r16 |
167a: 1f 93 push r17 |
167c: 2f 93 push r18 |
167e: 3f 93 push r19 |
1680: 4f 93 push r20 |
1682: 5f 93 push r21 |
1684: 6f 93 push r22 |
1686: 7f 93 push r23 |
1688: 8f 93 push r24 |
168a: 9f 93 push r25 |
168c: af 93 push r26 |
168e: bf 93 push r27 |
1690: ef 93 push r30 |
1692: ff 93 push r31 |
} |
break; |
case 4: |
STEUER_C_H; |
1694: 61 ea ldi r22, 0xA1 ; 161 |
1696: f6 2e mov r15, r22 |
1698: 01 e6 ldi r16, 0x61 ; 97 |
169a: 52 e0 ldi r21, 0x02 ; 2 |
169c: c5 2e mov r12, r21 |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_H; |
169e: 44 e0 ldi r20, 0x04 ; 4 |
16a0: d4 2e mov r13, r20 |
break; |
case 5: |
STEUER_B_L; |
if(!sense) |
{ |
STEUER_A_H; |
16a2: 38 e0 ldi r19, 0x08 ; 8 |
16a4: e3 2e mov r14, r19 |
//############################################################################ |
{ |
unsigned char sense = 0; |
do |
{ |
if(SENSE_H) sense = 1; else sense = 0; |
16a6: 88 b1 in r24, 0x08 ; 8 |
16a8: 90 e0 ldi r25, 0x00 ; 0 |
16aa: 25 e0 ldi r18, 0x05 ; 5 |
16ac: 96 95 lsr r25 |
16ae: 87 95 ror r24 |
16b0: 2a 95 dec r18 |
16b2: e1 f7 brne .-8 ; 0x16ac <__vector_16+0x46> |
16b4: 18 2f mov r17, r24 |
16b6: 11 70 andi r17, 0x01 ; 1 |
switch(Phase) |
16b8: 80 91 af 00 lds r24, 0x00AF |
16bc: 82 30 cpi r24, 0x02 ; 2 |
16be: 09 f4 brne .+2 ; 0x16c2 <__vector_16+0x5c> |
16c0: 50 c0 rjmp .+160 ; 0x1762 <__vector_16+0xfc> |
16c2: 83 30 cpi r24, 0x03 ; 3 |
16c4: 30 f4 brcc .+12 ; 0x16d2 <__vector_16+0x6c> |
16c6: 88 23 and r24, r24 |
16c8: 71 f0 breq .+28 ; 0x16e6 <__vector_16+0x80> |
16ca: 81 30 cpi r24, 0x01 ; 1 |
16cc: 09 f0 breq .+2 ; 0x16d0 <__vector_16+0x6a> |
16ce: a5 c0 rjmp .+330 ; 0x181a <__vector_16+0x1b4> |
16d0: 22 c0 rjmp .+68 ; 0x1716 <__vector_16+0xb0> |
16d2: 84 30 cpi r24, 0x04 ; 4 |
16d4: 09 f4 brne .+2 ; 0x16d8 <__vector_16+0x72> |
16d6: 70 c0 rjmp .+224 ; 0x17b8 <__vector_16+0x152> |
16d8: 84 30 cpi r24, 0x04 ; 4 |
16da: 08 f4 brcc .+2 ; 0x16de <__vector_16+0x78> |
16dc: 58 c0 rjmp .+176 ; 0x178e <__vector_16+0x128> |
16de: 85 30 cpi r24, 0x05 ; 5 |
16e0: 09 f0 breq .+2 ; 0x16e4 <__vector_16+0x7e> |
16e2: 9b c0 rjmp .+310 ; 0x181a <__vector_16+0x1b4> |
16e4: 80 c0 rjmp .+256 ; 0x17e6 <__vector_16+0x180> |
{ |
case 0: |
STEUER_A_H; |
16e6: ff bc out 0x2f, r15 ; 47 |
16e8: 05 bd out 0x25, r16 ; 37 |
16ea: e7 ba out 0x17, r14 ; 23 |
if(sense) |
16ec: 11 23 and r17, r17 |
16ee: 71 f0 breq .+28 ; 0x170c <__vector_16+0xa6> |
{ |
STEUER_C_L; |
16f0: 82 b3 in r24, 0x12 ; 18 |
16f2: 87 7e andi r24, 0xE7 ; 231 |
16f4: 82 bb out 0x12, r24 ; 18 |
16f6: 95 9a sbi 0x12, 5 ; 18 |
if(ZeitZumAdWandeln) AdConvert(); |
16f8: 80 91 65 00 lds r24, 0x0065 |
16fc: 81 11 cpse r24, r1 |
16fe: b5 dd rcall .-1174 ; 0x126a <AdConvert> |
SENSE_FALLING_INT; |
1700: 40 98 cbi 0x08, 0 ; 8 |
SENSE_B; |
1702: 80 91 8d 00 lds r24, 0x008D |
1706: 81 60 ori r24, 0x01 ; 1 |
1708: 87 b9 out 0x07, r24 ; 7 |
170a: 18 c0 rjmp .+48 ; 0x173c <__vector_16+0xd6> |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_L; |
170c: 82 b3 in r24, 0x12 ; 18 |
170e: 87 7d andi r24, 0xD7 ; 215 |
1710: 82 bb out 0x12, r24 ; 18 |
1712: 94 9a sbi 0x12, 4 ; 18 |
1714: 82 c0 rjmp .+260 ; 0x181a <__vector_16+0x1b4> |
} |
break; |
case 1: |
STEUER_C_L; |
1716: 82 b3 in r24, 0x12 ; 18 |
1718: 87 7e andi r24, 0xE7 ; 231 |
171a: 82 bb out 0x12, r24 ; 18 |
171c: 95 9a sbi 0x12, 5 ; 18 |
if(!sense) |
171e: 11 23 and r17, r17 |
1720: e1 f4 brne .+56 ; 0x175a <__vector_16+0xf4> |
{ |
STEUER_B_H; |
1722: ff bc out 0x2f, r15 ; 47 |
1724: 05 bd out 0x25, r16 ; 37 |
1726: d7 ba out 0x17, r13 ; 23 |
if(ZeitZumAdWandeln) AdConvert(); |
1728: 80 91 65 00 lds r24, 0x0065 |
172c: 81 11 cpse r24, r1 |
172e: 9d dd rcall .-1222 ; 0x126a <AdConvert> |
SENSE_A; |
1730: 80 91 8d 00 lds r24, 0x008D |
1734: 87 b9 out 0x07, r24 ; 7 |
SENSE_RISING_INT; |
1736: 88 b1 in r24, 0x08 ; 8 |
1738: 83 60 ori r24, 0x03 ; 3 |
173a: 88 b9 out 0x08, r24 ; 8 |
Phase++; |
173c: 80 91 af 00 lds r24, 0x00AF |
1740: 8f 5f subi r24, 0xFF ; 255 |
1742: 80 93 af 00 sts 0x00AF, r24 |
CntKommutierungen++; |
1746: 80 91 89 00 lds r24, 0x0089 |
174a: 90 91 8a 00 lds r25, 0x008A |
174e: 01 96 adiw r24, 0x01 ; 1 |
1750: 90 93 8a 00 sts 0x008A, r25 |
1754: 80 93 89 00 sts 0x0089, r24 |
1758: 60 c0 rjmp .+192 ; 0x181a <__vector_16+0x1b4> |
} |
else |
{ |
STEUER_A_H; |
175a: ff bc out 0x2f, r15 ; 47 |
175c: 05 bd out 0x25, r16 ; 37 |
175e: e7 ba out 0x17, r14 ; 23 |
1760: 5c c0 rjmp .+184 ; 0x181a <__vector_16+0x1b4> |
} |
break; |
case 2: |
STEUER_B_H; |
1762: ff bc out 0x2f, r15 ; 47 |
1764: 05 bd out 0x25, r16 ; 37 |
1766: d7 ba out 0x17, r13 ; 23 |
if(sense) |
1768: 11 23 and r17, r17 |
176a: 61 f0 breq .+24 ; 0x1784 <__vector_16+0x11e> |
{ |
STEUER_A_L; |
176c: 82 b3 in r24, 0x12 ; 18 |
176e: 8f 7c andi r24, 0xCF ; 207 |
1770: 82 bb out 0x12, r24 ; 18 |
1772: 93 9a sbi 0x12, 3 ; 18 |
if(ZeitZumAdWandeln) AdConvert(); |
1774: 80 91 65 00 lds r24, 0x0065 |
1778: 81 11 cpse r24, r1 |
177a: 77 dd rcall .-1298 ; 0x126a <AdConvert> |
SENSE_C; |
177c: 80 91 8d 00 lds r24, 0x008D |
1780: 82 60 ori r24, 0x02 ; 2 |
1782: 29 c0 rjmp .+82 ; 0x17d6 <__vector_16+0x170> |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_L; |
1784: 82 b3 in r24, 0x12 ; 18 |
1786: 87 7e andi r24, 0xE7 ; 231 |
1788: 82 bb out 0x12, r24 ; 18 |
178a: 95 9a sbi 0x12, 5 ; 18 |
178c: 46 c0 rjmp .+140 ; 0x181a <__vector_16+0x1b4> |
} |
break; |
case 3: |
STEUER_A_L; |
178e: 82 b3 in r24, 0x12 ; 18 |
1790: 8f 7c andi r24, 0xCF ; 207 |
1792: 82 bb out 0x12, r24 ; 18 |
1794: 93 9a sbi 0x12, 3 ; 18 |
if(!sense) |
1796: 11 23 and r17, r17 |
1798: 59 f4 brne .+22 ; 0x17b0 <__vector_16+0x14a> |
{ |
STEUER_C_H; |
179a: ff bc out 0x2f, r15 ; 47 |
179c: 05 bd out 0x25, r16 ; 37 |
179e: c7 ba out 0x17, r12 ; 23 |
if(ZeitZumAdWandeln) AdConvert(); |
17a0: 80 91 65 00 lds r24, 0x0065 |
17a4: 81 11 cpse r24, r1 |
17a6: 61 dd rcall .-1342 ; 0x126a <AdConvert> |
SENSE_B; |
17a8: 80 91 8d 00 lds r24, 0x008D |
17ac: 81 60 ori r24, 0x01 ; 1 |
17ae: c2 cf rjmp .-124 ; 0x1734 <__vector_16+0xce> |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_H; |
17b0: ff bc out 0x2f, r15 ; 47 |
17b2: 05 bd out 0x25, r16 ; 37 |
17b4: d7 ba out 0x17, r13 ; 23 |
17b6: 31 c0 rjmp .+98 ; 0x181a <__vector_16+0x1b4> |
} |
break; |
case 4: |
STEUER_C_H; |
17b8: ff bc out 0x2f, r15 ; 47 |
17ba: 05 bd out 0x25, r16 ; 37 |
17bc: c7 ba out 0x17, r12 ; 23 |
if(sense) |
17be: 11 23 and r17, r17 |
17c0: 69 f0 breq .+26 ; 0x17dc <__vector_16+0x176> |
{ |
STEUER_B_L; |
17c2: 82 b3 in r24, 0x12 ; 18 |
17c4: 87 7d andi r24, 0xD7 ; 215 |
17c6: 82 bb out 0x12, r24 ; 18 |
17c8: 94 9a sbi 0x12, 4 ; 18 |
if(ZeitZumAdWandeln) AdConvert(); |
17ca: 80 91 65 00 lds r24, 0x0065 |
17ce: 81 11 cpse r24, r1 |
17d0: 4c dd rcall .-1384 ; 0x126a <AdConvert> |
SENSE_A; |
17d2: 80 91 8d 00 lds r24, 0x008D |
17d6: 87 b9 out 0x07, r24 ; 7 |
SENSE_FALLING_INT; |
17d8: 40 98 cbi 0x08, 0 ; 8 |
17da: b0 cf rjmp .-160 ; 0x173c <__vector_16+0xd6> |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_L; |
17dc: 82 b3 in r24, 0x12 ; 18 |
17de: 8f 7c andi r24, 0xCF ; 207 |
17e0: 82 bb out 0x12, r24 ; 18 |
17e2: 93 9a sbi 0x12, 3 ; 18 |
17e4: 1a c0 rjmp .+52 ; 0x181a <__vector_16+0x1b4> |
} |
break; |
case 5: |
STEUER_B_L; |
17e6: 82 b3 in r24, 0x12 ; 18 |
17e8: 87 7d andi r24, 0xD7 ; 215 |
17ea: 82 bb out 0x12, r24 ; 18 |
17ec: 94 9a sbi 0x12, 4 ; 18 |
if(!sense) |
17ee: 11 23 and r17, r17 |
17f0: 89 f4 brne .+34 ; 0x1814 <__vector_16+0x1ae> |
{ |
STEUER_A_H; |
17f2: ff bc out 0x2f, r15 ; 47 |
17f4: 05 bd out 0x25, r16 ; 37 |
17f6: e7 ba out 0x17, r14 ; 23 |
if(ZeitZumAdWandeln) AdConvert(); |
17f8: 80 91 65 00 lds r24, 0x0065 |
17fc: 81 11 cpse r24, r1 |
17fe: 35 dd rcall .-1430 ; 0x126a <AdConvert> |
SENSE_C; |
1800: 80 91 8d 00 lds r24, 0x008D |
1804: 82 60 ori r24, 0x02 ; 2 |
1806: 87 b9 out 0x07, r24 ; 7 |
SENSE_RISING_INT; |
1808: 88 b1 in r24, 0x08 ; 8 |
180a: 83 60 ori r24, 0x03 ; 3 |
180c: 88 b9 out 0x08, r24 ; 8 |
Phase = 0; |
180e: 10 92 af 00 sts 0x00AF, r1 |
1812: 99 cf rjmp .-206 ; 0x1746 <__vector_16+0xe0> |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_H; |
1814: ff bc out 0x2f, r15 ; 47 |
1816: 05 bd out 0x25, r16 ; 37 |
1818: c7 ba out 0x17, r12 ; 23 |
} |
break; |
} |
} |
while((SENSE_L && sense) || (SENSE_H && !sense)); |
181a: 45 99 sbic 0x08, 5 ; 8 |
181c: 03 c0 rjmp .+6 ; 0x1824 <__vector_16+0x1be> |
181e: 11 23 and r17, r17 |
1820: 09 f0 breq .+2 ; 0x1824 <__vector_16+0x1be> |
1822: 41 cf rjmp .-382 ; 0x16a6 <__vector_16+0x40> |
1824: 45 9b sbis 0x08, 5 ; 8 |
1826: 03 c0 rjmp .+6 ; 0x182e <__vector_16+0x1c8> |
1828: 11 23 and r17, r17 |
182a: 09 f4 brne .+2 ; 0x182e <__vector_16+0x1c8> |
182c: 3c cf rjmp .-392 ; 0x16a6 <__vector_16+0x40> |
ZeitZumAdWandeln = 0; |
182e: 10 92 65 00 sts 0x0065, r1 |
} |
1832: ff 91 pop r31 |
1834: ef 91 pop r30 |
1836: bf 91 pop r27 |
1838: af 91 pop r26 |
183a: 9f 91 pop r25 |
183c: 8f 91 pop r24 |
183e: 7f 91 pop r23 |
1840: 6f 91 pop r22 |
1842: 5f 91 pop r21 |
1844: 4f 91 pop r20 |
1846: 3f 91 pop r19 |
1848: 2f 91 pop r18 |
184a: 1f 91 pop r17 |
184c: 0f 91 pop r16 |
184e: ff 90 pop r15 |
1850: ef 90 pop r14 |
1852: df 90 pop r13 |
1854: cf 90 pop r12 |
1856: 0f 90 pop r0 |
1858: 0f be out 0x3f, r0 ; 63 |
185a: 0f 90 pop r0 |
185c: 1f 90 pop r1 |
185e: 18 95 reti |
00001860 <__udivmodqi4>: |
1860: 99 1b sub r25, r25 |
1862: 79 e0 ldi r23, 0x09 ; 9 |
1864: 04 c0 rjmp .+8 ; 0x186e <__udivmodqi4_ep> |
00001866 <__udivmodqi4_loop>: |
1866: 99 1f adc r25, r25 |
1868: 96 17 cp r25, r22 |
186a: 08 f0 brcs .+2 ; 0x186e <__udivmodqi4_ep> |
186c: 96 1b sub r25, r22 |
0000186e <__udivmodqi4_ep>: |
186e: 88 1f adc r24, r24 |
1870: 7a 95 dec r23 |
1872: c9 f7 brne .-14 ; 0x1866 <__udivmodqi4_loop> |
1874: 80 95 com r24 |
1876: 08 95 ret |
00001878 <__udivmodhi4>: |
1878: aa 1b sub r26, r26 |
187a: bb 1b sub r27, r27 |
187c: 51 e1 ldi r21, 0x11 ; 17 |
187e: 07 c0 rjmp .+14 ; 0x188e <__udivmodhi4_ep> |
00001880 <__udivmodhi4_loop>: |
1880: aa 1f adc r26, r26 |
1882: bb 1f adc r27, r27 |
1884: a6 17 cp r26, r22 |
1886: b7 07 cpc r27, r23 |
1888: 10 f0 brcs .+4 ; 0x188e <__udivmodhi4_ep> |
188a: a6 1b sub r26, r22 |
188c: b7 0b sbc r27, r23 |
0000188e <__udivmodhi4_ep>: |
188e: 88 1f adc r24, r24 |
1890: 99 1f adc r25, r25 |
1892: 5a 95 dec r21 |
1894: a9 f7 brne .-22 ; 0x1880 <__udivmodhi4_loop> |
1896: 80 95 com r24 |
1898: 90 95 com r25 |
189a: bc 01 movw r22, r24 |
189c: cd 01 movw r24, r26 |
189e: 08 95 ret |
000018a0 <__udivmodsi4>: |
18a0: a1 e2 ldi r26, 0x21 ; 33 |
18a2: 1a 2e mov r1, r26 |
18a4: aa 1b sub r26, r26 |
18a6: bb 1b sub r27, r27 |
18a8: fd 01 movw r30, r26 |
18aa: 0d c0 rjmp .+26 ; 0x18c6 <__udivmodsi4_ep> |
000018ac <__udivmodsi4_loop>: |
18ac: aa 1f adc r26, r26 |
18ae: bb 1f adc r27, r27 |
18b0: ee 1f adc r30, r30 |
18b2: ff 1f adc r31, r31 |
18b4: a2 17 cp r26, r18 |
18b6: b3 07 cpc r27, r19 |
18b8: e4 07 cpc r30, r20 |
18ba: f5 07 cpc r31, r21 |
18bc: 20 f0 brcs .+8 ; 0x18c6 <__udivmodsi4_ep> |
18be: a2 1b sub r26, r18 |
18c0: b3 0b sbc r27, r19 |
18c2: e4 0b sbc r30, r20 |
18c4: f5 0b sbc r31, r21 |
000018c6 <__udivmodsi4_ep>: |
18c6: 66 1f adc r22, r22 |
18c8: 77 1f adc r23, r23 |
18ca: 88 1f adc r24, r24 |
18cc: 99 1f adc r25, r25 |
18ce: 1a 94 dec r1 |
18d0: 69 f7 brne .-38 ; 0x18ac <__udivmodsi4_loop> |
18d2: 60 95 com r22 |
18d4: 70 95 com r23 |
18d6: 80 95 com r24 |
18d8: 90 95 com r25 |
18da: 9b 01 movw r18, r22 |
18dc: ac 01 movw r20, r24 |
18de: bd 01 movw r22, r26 |
18e0: cf 01 movw r24, r30 |
18e2: 08 95 ret |
000018e4 <fdevopen>: |
18e4: 0f 93 push r16 |
18e6: 1f 93 push r17 |
18e8: cf 93 push r28 |
18ea: df 93 push r29 |
18ec: 8c 01 movw r16, r24 |
18ee: eb 01 movw r28, r22 |
18f0: 00 97 sbiw r24, 0x00 ; 0 |
18f2: 31 f4 brne .+12 ; 0x1900 <fdevopen+0x1c> |
18f4: 61 15 cp r22, r1 |
18f6: 71 05 cpc r23, r1 |
18f8: 19 f4 brne .+6 ; 0x1900 <fdevopen+0x1c> |
18fa: 20 e0 ldi r18, 0x00 ; 0 |
18fc: 30 e0 ldi r19, 0x00 ; 0 |
18fe: 37 c0 rjmp .+110 ; 0x196e <fdevopen+0x8a> |
1900: 81 e0 ldi r24, 0x01 ; 1 |
1902: 90 e0 ldi r25, 0x00 ; 0 |
1904: 6e e0 ldi r22, 0x0E ; 14 |
1906: 70 e0 ldi r23, 0x00 ; 0 |
1908: 38 d0 rcall .+112 ; 0x197a <calloc> |
190a: fc 01 movw r30, r24 |
190c: 9c 01 movw r18, r24 |
190e: 00 97 sbiw r24, 0x00 ; 0 |
1910: 71 f1 breq .+92 ; 0x196e <fdevopen+0x8a> |
1912: 80 e8 ldi r24, 0x80 ; 128 |
1914: 83 83 std Z+3, r24 ; 0x03 |
1916: 20 97 sbiw r28, 0x00 ; 0 |
1918: 71 f0 breq .+28 ; 0x1936 <fdevopen+0x52> |
191a: d3 87 std Z+11, r29 ; 0x0b |
191c: c2 87 std Z+10, r28 ; 0x0a |
191e: 81 e8 ldi r24, 0x81 ; 129 |
1920: 83 83 std Z+3, r24 ; 0x03 |
1922: 80 91 96 03 lds r24, 0x0396 |
1926: 90 91 97 03 lds r25, 0x0397 |
192a: 89 2b or r24, r25 |
192c: 21 f4 brne .+8 ; 0x1936 <fdevopen+0x52> |
192e: f0 93 97 03 sts 0x0397, r31 |
1932: e0 93 96 03 sts 0x0396, r30 |
1936: 01 15 cp r16, r1 |
1938: 11 05 cpc r17, r1 |
193a: c9 f0 breq .+50 ; 0x196e <fdevopen+0x8a> |
193c: 11 87 std Z+9, r17 ; 0x09 |
193e: 00 87 std Z+8, r16 ; 0x08 |
1940: 83 81 ldd r24, Z+3 ; 0x03 |
1942: 82 60 ori r24, 0x02 ; 2 |
1944: 83 83 std Z+3, r24 ; 0x03 |
1946: 80 91 98 03 lds r24, 0x0398 |
194a: 90 91 99 03 lds r25, 0x0399 |
194e: 89 2b or r24, r25 |
1950: 71 f4 brne .+28 ; 0x196e <fdevopen+0x8a> |
1952: f0 93 99 03 sts 0x0399, r31 |
1956: e0 93 98 03 sts 0x0398, r30 |
195a: 80 91 9a 03 lds r24, 0x039A |
195e: 90 91 9b 03 lds r25, 0x039B |
1962: 89 2b or r24, r25 |
1964: 21 f4 brne .+8 ; 0x196e <fdevopen+0x8a> |
1966: f0 93 9b 03 sts 0x039B, r31 |
196a: e0 93 9a 03 sts 0x039A, r30 |
196e: c9 01 movw r24, r18 |
1970: df 91 pop r29 |
1972: cf 91 pop r28 |
1974: 1f 91 pop r17 |
1976: 0f 91 pop r16 |
1978: 08 95 ret |
0000197a <calloc>: |
197a: 0f 93 push r16 |
197c: 1f 93 push r17 |
197e: cf 93 push r28 |
1980: df 93 push r29 |
1982: 68 9f mul r22, r24 |
1984: 80 01 movw r16, r0 |
1986: 69 9f mul r22, r25 |
1988: 10 0d add r17, r0 |
198a: 78 9f mul r23, r24 |
198c: 10 0d add r17, r0 |
198e: 11 24 eor r1, r1 |
1990: c8 01 movw r24, r16 |
1992: 0d d0 rcall .+26 ; 0x19ae <malloc> |
1994: ec 01 movw r28, r24 |
1996: 00 97 sbiw r24, 0x00 ; 0 |
1998: 21 f0 breq .+8 ; 0x19a2 <calloc+0x28> |
199a: 60 e0 ldi r22, 0x00 ; 0 |
199c: 70 e0 ldi r23, 0x00 ; 0 |
199e: a8 01 movw r20, r16 |
19a0: 0b d1 rcall .+534 ; 0x1bb8 <memset> |
19a2: ce 01 movw r24, r28 |
19a4: df 91 pop r29 |
19a6: cf 91 pop r28 |
19a8: 1f 91 pop r17 |
19aa: 0f 91 pop r16 |
19ac: 08 95 ret |
000019ae <malloc>: |
19ae: cf 93 push r28 |
19b0: df 93 push r29 |
19b2: bc 01 movw r22, r24 |
19b4: 82 30 cpi r24, 0x02 ; 2 |
19b6: 91 05 cpc r25, r1 |
19b8: 10 f4 brcc .+4 ; 0x19be <malloc+0x10> |
19ba: 62 e0 ldi r22, 0x02 ; 2 |
19bc: 70 e0 ldi r23, 0x00 ; 0 |
19be: a0 91 9e 03 lds r26, 0x039E |
19c2: b0 91 9f 03 lds r27, 0x039F |
19c6: ed 01 movw r28, r26 |
19c8: e0 e0 ldi r30, 0x00 ; 0 |
19ca: f0 e0 ldi r31, 0x00 ; 0 |
19cc: 40 e0 ldi r20, 0x00 ; 0 |
19ce: 50 e0 ldi r21, 0x00 ; 0 |
19d0: 21 c0 rjmp .+66 ; 0x1a14 <malloc+0x66> |
19d2: 88 81 ld r24, Y |
19d4: 99 81 ldd r25, Y+1 ; 0x01 |
19d6: 86 17 cp r24, r22 |
19d8: 97 07 cpc r25, r23 |
19da: 69 f4 brne .+26 ; 0x19f6 <malloc+0x48> |
19dc: 8a 81 ldd r24, Y+2 ; 0x02 |
19de: 9b 81 ldd r25, Y+3 ; 0x03 |
19e0: 30 97 sbiw r30, 0x00 ; 0 |
19e2: 19 f0 breq .+6 ; 0x19ea <malloc+0x3c> |
19e4: 93 83 std Z+3, r25 ; 0x03 |
19e6: 82 83 std Z+2, r24 ; 0x02 |
19e8: 04 c0 rjmp .+8 ; 0x19f2 <malloc+0x44> |
19ea: 90 93 9f 03 sts 0x039F, r25 |
19ee: 80 93 9e 03 sts 0x039E, r24 |
19f2: fe 01 movw r30, r28 |
19f4: 34 c0 rjmp .+104 ; 0x1a5e <malloc+0xb0> |
19f6: 68 17 cp r22, r24 |
19f8: 79 07 cpc r23, r25 |
19fa: 38 f4 brcc .+14 ; 0x1a0a <malloc+0x5c> |
19fc: 41 15 cp r20, r1 |
19fe: 51 05 cpc r21, r1 |
1a00: 19 f0 breq .+6 ; 0x1a08 <malloc+0x5a> |
1a02: 84 17 cp r24, r20 |
1a04: 95 07 cpc r25, r21 |
1a06: 08 f4 brcc .+2 ; 0x1a0a <malloc+0x5c> |
1a08: ac 01 movw r20, r24 |
1a0a: fe 01 movw r30, r28 |
1a0c: 8a 81 ldd r24, Y+2 ; 0x02 |
1a0e: 9b 81 ldd r25, Y+3 ; 0x03 |
1a10: 9c 01 movw r18, r24 |
1a12: e9 01 movw r28, r18 |
1a14: 20 97 sbiw r28, 0x00 ; 0 |
1a16: e9 f6 brne .-70 ; 0x19d2 <malloc+0x24> |
1a18: 41 15 cp r20, r1 |
1a1a: 51 05 cpc r21, r1 |
1a1c: a9 f1 breq .+106 ; 0x1a88 <malloc+0xda> |
1a1e: ca 01 movw r24, r20 |
1a20: 86 1b sub r24, r22 |
1a22: 97 0b sbc r25, r23 |
1a24: 04 97 sbiw r24, 0x04 ; 4 |
1a26: 08 f4 brcc .+2 ; 0x1a2a <malloc+0x7c> |
1a28: ba 01 movw r22, r20 |
1a2a: e0 e0 ldi r30, 0x00 ; 0 |
1a2c: f0 e0 ldi r31, 0x00 ; 0 |
1a2e: 2a c0 rjmp .+84 ; 0x1a84 <malloc+0xd6> |
1a30: 8d 91 ld r24, X+ |
1a32: 9c 91 ld r25, X |
1a34: 11 97 sbiw r26, 0x01 ; 1 |
1a36: 84 17 cp r24, r20 |
1a38: 95 07 cpc r25, r21 |
1a3a: f9 f4 brne .+62 ; 0x1a7a <malloc+0xcc> |
1a3c: 64 17 cp r22, r20 |
1a3e: 75 07 cpc r23, r21 |
1a40: 81 f4 brne .+32 ; 0x1a62 <malloc+0xb4> |
1a42: 12 96 adiw r26, 0x02 ; 2 |
1a44: 8d 91 ld r24, X+ |
1a46: 9c 91 ld r25, X |
1a48: 13 97 sbiw r26, 0x03 ; 3 |
1a4a: 30 97 sbiw r30, 0x00 ; 0 |
1a4c: 19 f0 breq .+6 ; 0x1a54 <malloc+0xa6> |
1a4e: 93 83 std Z+3, r25 ; 0x03 |
1a50: 82 83 std Z+2, r24 ; 0x02 |
1a52: 04 c0 rjmp .+8 ; 0x1a5c <malloc+0xae> |
1a54: 90 93 9f 03 sts 0x039F, r25 |
1a58: 80 93 9e 03 sts 0x039E, r24 |
1a5c: fd 01 movw r30, r26 |
1a5e: 32 96 adiw r30, 0x02 ; 2 |
1a60: 4f c0 rjmp .+158 ; 0x1b00 <malloc+0x152> |
1a62: ca 01 movw r24, r20 |
1a64: 86 1b sub r24, r22 |
1a66: 97 0b sbc r25, r23 |
1a68: fd 01 movw r30, r26 |
1a6a: e8 0f add r30, r24 |
1a6c: f9 1f adc r31, r25 |
1a6e: 61 93 st Z+, r22 |
1a70: 71 93 st Z+, r23 |
1a72: 02 97 sbiw r24, 0x02 ; 2 |
1a74: 8d 93 st X+, r24 |
1a76: 9c 93 st X, r25 |
1a78: 43 c0 rjmp .+134 ; 0x1b00 <malloc+0x152> |
1a7a: fd 01 movw r30, r26 |
1a7c: 82 81 ldd r24, Z+2 ; 0x02 |
1a7e: 93 81 ldd r25, Z+3 ; 0x03 |
1a80: 9c 01 movw r18, r24 |
1a82: d9 01 movw r26, r18 |
1a84: 10 97 sbiw r26, 0x00 ; 0 |
1a86: a1 f6 brne .-88 ; 0x1a30 <malloc+0x82> |
1a88: 80 91 9c 03 lds r24, 0x039C |
1a8c: 90 91 9d 03 lds r25, 0x039D |
1a90: 89 2b or r24, r25 |
1a92: 41 f4 brne .+16 ; 0x1aa4 <malloc+0xf6> |
1a94: 80 91 73 00 lds r24, 0x0073 |
1a98: 90 91 74 00 lds r25, 0x0074 |
1a9c: 90 93 9d 03 sts 0x039D, r25 |
1aa0: 80 93 9c 03 sts 0x039C, r24 |
1aa4: 40 91 75 00 lds r20, 0x0075 |
1aa8: 50 91 76 00 lds r21, 0x0076 |
1aac: 41 15 cp r20, r1 |
1aae: 51 05 cpc r21, r1 |
1ab0: 41 f4 brne .+16 ; 0x1ac2 <malloc+0x114> |
1ab2: 4d b7 in r20, 0x3d ; 61 |
1ab4: 5e b7 in r21, 0x3e ; 62 |
1ab6: 80 91 71 00 lds r24, 0x0071 |
1aba: 90 91 72 00 lds r25, 0x0072 |
1abe: 48 1b sub r20, r24 |
1ac0: 59 0b sbc r21, r25 |
1ac2: 20 91 9c 03 lds r18, 0x039C |
1ac6: 30 91 9d 03 lds r19, 0x039D |
1aca: 24 17 cp r18, r20 |
1acc: 35 07 cpc r19, r21 |
1ace: b0 f4 brcc .+44 ; 0x1afc <malloc+0x14e> |
1ad0: ca 01 movw r24, r20 |
1ad2: 82 1b sub r24, r18 |
1ad4: 93 0b sbc r25, r19 |
1ad6: 86 17 cp r24, r22 |
1ad8: 97 07 cpc r25, r23 |
1ada: 80 f0 brcs .+32 ; 0x1afc <malloc+0x14e> |
1adc: ab 01 movw r20, r22 |
1ade: 4e 5f subi r20, 0xFE ; 254 |
1ae0: 5f 4f sbci r21, 0xFF ; 255 |
1ae2: 84 17 cp r24, r20 |
1ae4: 95 07 cpc r25, r21 |
1ae6: 50 f0 brcs .+20 ; 0x1afc <malloc+0x14e> |
1ae8: 42 0f add r20, r18 |
1aea: 53 1f adc r21, r19 |
1aec: 50 93 9d 03 sts 0x039D, r21 |
1af0: 40 93 9c 03 sts 0x039C, r20 |
1af4: f9 01 movw r30, r18 |
1af6: 61 93 st Z+, r22 |
1af8: 71 93 st Z+, r23 |
1afa: 02 c0 rjmp .+4 ; 0x1b00 <malloc+0x152> |
1afc: e0 e0 ldi r30, 0x00 ; 0 |
1afe: f0 e0 ldi r31, 0x00 ; 0 |
1b00: cf 01 movw r24, r30 |
1b02: df 91 pop r29 |
1b04: cf 91 pop r28 |
1b06: 08 95 ret |
00001b08 <free>: |
1b08: cf 93 push r28 |
1b0a: df 93 push r29 |
1b0c: 00 97 sbiw r24, 0x00 ; 0 |
1b0e: 09 f4 brne .+2 ; 0x1b12 <free+0xa> |
1b10: 50 c0 rjmp .+160 ; 0x1bb2 <free+0xaa> |
1b12: ec 01 movw r28, r24 |
1b14: 22 97 sbiw r28, 0x02 ; 2 |
1b16: 1b 82 std Y+3, r1 ; 0x03 |
1b18: 1a 82 std Y+2, r1 ; 0x02 |
1b1a: a0 91 9e 03 lds r26, 0x039E |
1b1e: b0 91 9f 03 lds r27, 0x039F |
1b22: 10 97 sbiw r26, 0x00 ; 0 |
1b24: 09 f1 breq .+66 ; 0x1b68 <free+0x60> |
1b26: 40 e0 ldi r20, 0x00 ; 0 |
1b28: 50 e0 ldi r21, 0x00 ; 0 |
1b2a: ac 17 cp r26, r28 |
1b2c: bd 07 cpc r27, r29 |
1b2e: 08 f1 brcs .+66 ; 0x1b72 <free+0x6a> |
1b30: bb 83 std Y+3, r27 ; 0x03 |
1b32: aa 83 std Y+2, r26 ; 0x02 |
1b34: fe 01 movw r30, r28 |
1b36: 21 91 ld r18, Z+ |
1b38: 31 91 ld r19, Z+ |
1b3a: e2 0f add r30, r18 |
1b3c: f3 1f adc r31, r19 |
1b3e: ae 17 cp r26, r30 |
1b40: bf 07 cpc r27, r31 |
1b42: 79 f4 brne .+30 ; 0x1b62 <free+0x5a> |
1b44: 8d 91 ld r24, X+ |
1b46: 9c 91 ld r25, X |
1b48: 11 97 sbiw r26, 0x01 ; 1 |
1b4a: 28 0f add r18, r24 |
1b4c: 39 1f adc r19, r25 |
1b4e: 2e 5f subi r18, 0xFE ; 254 |
1b50: 3f 4f sbci r19, 0xFF ; 255 |
1b52: 39 83 std Y+1, r19 ; 0x01 |
1b54: 28 83 st Y, r18 |
1b56: 12 96 adiw r26, 0x02 ; 2 |
1b58: 8d 91 ld r24, X+ |
1b5a: 9c 91 ld r25, X |
1b5c: 13 97 sbiw r26, 0x03 ; 3 |
1b5e: 9b 83 std Y+3, r25 ; 0x03 |
1b60: 8a 83 std Y+2, r24 ; 0x02 |
1b62: 41 15 cp r20, r1 |
1b64: 51 05 cpc r21, r1 |
1b66: 71 f4 brne .+28 ; 0x1b84 <free+0x7c> |
1b68: d0 93 9f 03 sts 0x039F, r29 |
1b6c: c0 93 9e 03 sts 0x039E, r28 |
1b70: 20 c0 rjmp .+64 ; 0x1bb2 <free+0xaa> |
1b72: 12 96 adiw r26, 0x02 ; 2 |
1b74: 8d 91 ld r24, X+ |
1b76: 9c 91 ld r25, X |
1b78: 13 97 sbiw r26, 0x03 ; 3 |
1b7a: ad 01 movw r20, r26 |
1b7c: 00 97 sbiw r24, 0x00 ; 0 |
1b7e: 11 f0 breq .+4 ; 0x1b84 <free+0x7c> |
1b80: dc 01 movw r26, r24 |
1b82: d3 cf rjmp .-90 ; 0x1b2a <free+0x22> |
1b84: fa 01 movw r30, r20 |
1b86: d3 83 std Z+3, r29 ; 0x03 |
1b88: c2 83 std Z+2, r28 ; 0x02 |
1b8a: 21 91 ld r18, Z+ |
1b8c: 31 91 ld r19, Z+ |
1b8e: e2 0f add r30, r18 |
1b90: f3 1f adc r31, r19 |
1b92: ce 17 cp r28, r30 |
1b94: df 07 cpc r29, r31 |
1b96: 69 f4 brne .+26 ; 0x1bb2 <free+0xaa> |
1b98: 88 81 ld r24, Y |
1b9a: 99 81 ldd r25, Y+1 ; 0x01 |
1b9c: 28 0f add r18, r24 |
1b9e: 39 1f adc r19, r25 |
1ba0: 2e 5f subi r18, 0xFE ; 254 |
1ba2: 3f 4f sbci r19, 0xFF ; 255 |
1ba4: fa 01 movw r30, r20 |
1ba6: 31 83 std Z+1, r19 ; 0x01 |
1ba8: 20 83 st Z, r18 |
1baa: 8a 81 ldd r24, Y+2 ; 0x02 |
1bac: 9b 81 ldd r25, Y+3 ; 0x03 |
1bae: 93 83 std Z+3, r25 ; 0x03 |
1bb0: 82 83 std Z+2, r24 ; 0x02 |
1bb2: df 91 pop r29 |
1bb4: cf 91 pop r28 |
1bb6: 08 95 ret |
00001bb8 <memset>: |
1bb8: dc 01 movw r26, r24 |
1bba: 01 c0 rjmp .+2 ; 0x1bbe <memset+0x6> |
1bbc: 6d 93 st X+, r22 |
1bbe: 41 50 subi r20, 0x01 ; 1 |
1bc0: 50 40 sbci r21, 0x00 ; 0 |
1bc2: e0 f7 brcc .-8 ; 0x1bbc <memset+0x4> |
1bc4: 08 95 ret |
00001bc6 <_exit>: |
1bc6: f8 94 cli |
00001bc8 <__stop_program>: |
1bc8: ff cf rjmp .-2 ; 0x1bc8 <__stop_program> |
/branches/V0.41-Hexa/BrushLess-Ctrl_V0_41_10A.sym |
---|
0,0 → 1,224 |
00000000 W __heap_end |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 W __vector_default |
00000000 T __vectors |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000026 T __ctors_end |
00000026 T __ctors_start |
00000026 T __dtors_end |
00000026 T __dtors_start |
00000026 W __init |
00000026 T __trampolines_end |
00000026 T __trampolines_start |
00000032 T __do_copy_data |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
00000034 a __CCP__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003e t .do_copy_data_loop |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
00000042 t .do_copy_data_start |
00000048 T __do_clear_bss |
00000050 t .do_clear_bss_loop |
00000052 t .do_clear_bss_start |
0000005c T __bad_interrupt |
0000005c W __vector_10 |
0000005c W __vector_12 |
0000005c W __vector_14 |
0000005c W __vector_15 |
0000005c W __vector_18 |
0000005c W __vector_2 |
0000005c W __vector_3 |
0000005c W __vector_6 |
0000005c W __vector_7 |
0000005e T SetPWM |
000000be T DebugAusgaben |
00000106 T PWM_Init |
00000126 T Wait |
00000134 T Delay |
00000140 T SollwertErmittlung |
0000023a T DelayM |
0000027c T RotBlink |
000002a4 T MotorTon |
0000045f W __stack |
00000738 T Anwerfen |
000008e6 T main |
00000c90 T __vector_13 |
00000ca4 T SendUart |
00000cf2 T Decode64 |
00000da2 T AddCRC |
00000dfe T SendOutData |
00000ec8 T uart_putchar |
00000ee2 T __vector_11 |
000010aa T WriteProgramData |
000010ac T DatenUebertragung |
000010e0 T UART_Init |
00001166 T __vector_9 |
000011f6 T Timer0_Init |
00001208 T SetDelay |
0000121c T CheckDelay |
00001230 T Delay_ms |
0000125a T ADC_Init |
0000126a T AdConvert |
000012d8 T MessAD |
00001302 T FastADConvert |
0000133a T InitPPM |
00001354 T __vector_8 |
00001376 T __vector_5 |
000014a4 T __vector_1 |
000014c2 T InitIC2_Slave |
000014d2 T __vector_17 |
00001574 T __vector_4 |
00001588 T Manuell |
00001666 T __vector_16 |
00001860 T __udivmodqi4 |
00001866 t __udivmodqi4_loop |
0000186e t __udivmodqi4_ep |
00001878 T __udivmodhi4 |
00001880 t __udivmodhi4_loop |
0000188e t __udivmodhi4_ep |
000018a0 T __udivmodsi4 |
000018ac t __udivmodsi4_loop |
000018c6 t __udivmodsi4_ep |
000018e4 T fdevopen |
0000197a T calloc |
000019ae T malloc |
00001b08 T free |
00001bb8 T memset |
00001bc6 T _exit |
00001bc6 W exit |
00001bc8 t __stop_program |
00001bca A __data_load_start |
00001bca T _etext |
00001be2 A __data_load_end |
00800060 D KommutierDelay |
00800060 D __data_start |
00800062 D ZeitFuerBerechnungen |
00800063 D MotorGestoppt |
00800064 D MaxPWM |
00800065 D ZeitZumAdWandeln |
00800066 D MotorAdresse |
00800067 D PPM_Betrieb |
00800068 d C.19.2035 |
0080006f D UebertragungAbgeschlossen |
00800070 D CompFreigabeTimer |
00800071 D __malloc_margin |
00800073 D __malloc_heap_start |
00800075 D __malloc_heap_end |
00800078 B PWM |
00800078 B __bss_start |
00800078 D __data_end |
00800078 D _edata |
0080007a B Strom |
0080007c B Strom_max |
0080007d B Mittelstrom |
0080007e B Drehzahl |
00800080 B I2C_Timeout |
00800082 B SIO_Timeout |
00800084 B SollDrehzahl |
00800086 B IstDrehzahl |
00800088 B MotorAnwerfen |
00800089 B CntKommutierungen |
0080008b B SIO_Drehzahl |
0080008d B IntRef |
0080008e b sollwert.2195 |
00800090 B SIO_Sollwert |
00800091 B SioTmp |
00800092 B NeuerDatensatzEmpfangen |
00800093 B MotorTest |
00800099 B AnzahlEmpfangsBytes |
0080009a b UartState.1915 |
0080009b b buf_ptr.1914 |
0080009c b crc2.1913 |
0080009d b crc1.1912 |
0080009e b crc.1911 |
008000a0 b ptr.1846 |
008000a2 B CountMilliseconds |
008000a4 b cnt.1843 |
008000a5 B PPM_Signal |
008000a7 B Timer1Overflow |
008000a8 B PPM_Timeout |
008000a9 B anz_ppm_werte |
008000aa b ppm.1857 |
008000ac b tim_alt.1856 |
008000ae B Byte_Counter |
008000af B Phase |
008000b0 B ShadowTCCR1A |
008000b1 B CompInterruptFreigabe |
008000b2 B HwVersion |
008000b3 B DrehZahlTabelle |
008002b3 B MinUpmPulse |
008002b5 B RuheStrom |
008002b7 B MeineSlaveAdresse |
008002b8 B SendeBuffer |
0080031c B Debug_Timer |
0080031e B RxdBuffer |
00800382 B DebugOut |
00800394 B Timer0Overflow |
00800395 B I2C_RXBuffer |
00800396 B __iob |
0080039c B __brkval |
0080039e B __flp |
008003a0 B __bss_end |
008003a0 N __heap_start |
008003a0 N _end |
00810000 N __eeprom_end |
/branches/V0.41-Hexa/Hexfiles/MEGA8_BLC_V0_41_10A_ADR_1-4.hex |
---|
0,0 → 1,447 |
:1000000012C02ECA2BC02AC093CA91C927C026C0CD |
:100010007DC983C823C043C721C015C61FC01EC0E9 |
:1000200000CB35CA1BC011241FBECFE5D4E0DEBF14 |
:10003000CDBF10E0A0E6B0E0ECEBFBE102C0059024 |
:100040000D92A837B107D9F713E0A8E7B0E001C0D7 |
:100050001D92A03AB107E1F727D4AFCDD1CF40919F |
:10006000780080916400841710F4AB9A482F209197 |
:100070007A0030917B00293C3105C8F01BBC1ABCCA |
:1000800019BC18BC13BC82B3877C82BBAB9A80912D |
:100090009003909191030196909391038093900324 |
:1000A0002150304030937B0020937A000895842FB4 |
:1000B00090E09BBD8ABD99BD88BD43BD08958091E8 |
:1000C0007A0090917B0090938503809384038091C4 |
:1000D0007D0090E0909387038093860380918B004E |
:1000E00090918C0090938903809388038091A50060 |
:1000F0009091A60090938B0380938A0383B590E040 |
:1001000090938D0380938C0308951BBC1ABC19BC7B |
:1001100018BC13BC91E09FBD81E485BD8EE087BB18 |
:1001200088B3817F88BB9EBD089592B7980F292F11 |
:1001300082B7821B87FDFCCF089500C001972FEF87 |
:100140008F3F9207D9F780E090E00895809180007A |
:1001500090918100892B09F059C080918200909183 |
:100160008300892B99F0909190008FEF989FC001A8 |
:10017000112468EC70E0D0DC70938F0060938E00E7 |
:100180001092670089B78F7D89BF31C08091A90027 |
:10019000853178F181E0809367002091A50030914E |
:1001A000A60041E02D32340730F4293C310540F4FB |
:1001B0002B30310538F410928F0010928E0017C04A |
:1001C00028EC30E08CEF90E0AC01249FC001259F2B |
:1001D000900D349F900D1124885D994064EB70E080 |
:1001E0009BDC6D5F7F4F70938F0060938E00AB98A8 |
:1001F0001AC080918E0090918F00009729F001978E |
:1002000090938F0080938E00AB9A0DC080919503E0 |
:1002100090E090938F0080938E0010926700AB98CF |
:1002200089B78F7D89BF80918E0090918F008F3F1D |
:10023000910539F030F08FEF90E090938F0080932C |
:100240008E0080918E0090E00895CF93DF93EC01B3 |
:1002500017C033D88091B5029091B60288589F4F4D |
:1002600020917A0030917B008217930748F482B383 |
:10027000877C82BB88B3817F88BB81E090E007C028 |
:1002800021978FEFCF3FD80721F780E090E0DF91F3 |
:10029000CF9108951F93182F789408C0AB9A8CE2E1 |
:1002A00091E0A0D7AB988CE291E09CD71150B0F7C9 |
:1002B00088EE93E097D71F910895AF92BF92CF92A7 |
:1002C000DF92EF92FF920F931F93CF93DF93CDB7FF |
:1002D000DEB727970FB6F894DEBF0FBECDBFDE01A5 |
:1002E0001196E8E6F0E087E001900D928150E1F789 |
:1002F000AB9880916600FE01E80FF11D818190E0CE |
:100300002CE231E0AC01429FC001439F900D529F0F |
:10031000900D112467D71092B1004398F8948AE0A9 |
:10032000B1D582B3877C82BB1BBC1ABC19BC18BC7C |
:1003300013BC81E08FBD81E485BD8EE087BB88B3AF |
:10034000817F88BB10927C0082E390E07EDF809109 |
:100350007C0090E09093B6028093B50210927B00EF |
:1003600010927A008CB1803231F038EEA32E33E057 |
:10037000B32E82E306C08FE585D5AA24AA94BA2CB1 |
:1003800088E210927B0010927A0000E010E0C82E04 |
:10039000DD24939A81E090E058DF82B3877C82BBB2 |
:1003A00088B3817F88BBC39A81E090E04EDF82B33F |
:1003B000877C82BB88B3817F88BB76018091B50240 |
:1003C0009091B6028C0D9D1D20917A0030917B009A |
:1003D0008217930738F00F5F1F4F0A151B05C9F6E8 |
:1003E000DD240AC084E34ED582B3877C82BB88B308 |
:1003F000817F88BB24E0D22E80E197E200C0019784 |
:100400005FEF8F3F9507D9F710927B0010927A002B |
:1004100000E010E0949A81E090E017DF82B3877CDF |
:1004200082BB88B3817F88BBC29A81E090E00DDFF8 |
:1004300082B3877C82BB88B3817F88BB8091B50201 |
:100440009091B6028E0D9F1D20917A0030917B0015 |
:100450008217930730F00F5F1F4F0A151B0559F0E5 |
:10046000D9CF85E30FD582B3877C82BB88B3817FE8 |
:1004700088BB95E0D92E10927B0010927A0080E123 |
:1004800097E200C001972FEF8F3F9207D9F700E066 |
:1004900010E0959A81E090E0D8DE82B3877C82BB41 |
:1004A00088B3817F88BBC19A81E090E0CEDE82B3C1 |
:1004B000877C82BB88B3817F88BB8091B502909195 |
:1004C000B6028E0D9F1D20917A0030917B0082171D |
:1004D000930730F00F5F1F4F0A151B0561F0D9CF4E |
:1004E00086E3D0D482B3877C82BB88B3817F88BB0C |
:1004F00086E0D82E02C0DD2019F08D2DCBDEFDCF99 |
:1005000080918D0087B982B3877C82BB88B3817F5D |
:1005100088BB949A959A10927B0010927A0000E022 |
:1005200010E0FF24C39A80E0B4D6C39718F041E0EE |
:10053000F42A02C05EEFF52218BA8CE291E000C006 |
:1005400001972FEF8F3F9207D9F70F5F1F4F0937A2 |
:10055000110541F782B3877C82BB88B3817F88BB5A |
:10056000939A959A00E010E0C29A81E092D6C397E0 |
:1005700018F042E0F42A02C05DEFF52218BA8CE2CE |
:1005800091E000C001972FEF8F3F9207D9F70F5FDF |
:100590001F4F0538110541F782B3877C82BB88B3B2 |
:1005A000817F88BB939A949A00E010E0C19A82E020 |
:1005B00070D6C39718F044E0F42A02C05BEFF5222E |
:1005C00018BA8AE491E000C001972FEF8F3F92079D |
:1005D000D9F70F5F1F4F0F36110541F782B3877CA4 |
:1005E00082BB88B3817F88BB939A00E010E0C29AF7 |
:1005F00080E04FD68138910518F047EFF42202C011 |
:1006000058E0F52A18BA8AE491E000C001972FEF6C |
:100610008F3F9207D9F70F5F1F4F0937110539F741 |
:10062000959A00E010E0C29A82E033D681389105B5 |
:1006300018F04FEDF42202C050E2F52A18BA88E60D |
:1006400091E000C001972FEF8F3F9207D9F70F5F1E |
:100650001F4F0538110539F782B3877C82BB88B3F9 |
:10066000817F88BB82B3877C82BB88B3817F88BB54 |
:10067000949A00E010E0C19A81E00BD68138910590 |
:1006800018F04FEEF42202C050E1F52A18BA88E6BD |
:1006900091E000C001972FEF8F3F9207D9F70F5FCE |
:1006A0001F4F0F36110539F782B3877C82BB88B3A1 |
:1006B000817F88BB789480916600FE01E80FF11D70 |
:1006C000218183E090E0821B91092CE231E0AC01B2 |
:1006D000429FC001439F900D529F900D112482D5DF |
:1006E000F0FC04C081E48CB911E01DC0F1FC04C031 |
:1006F00082E48CB912E017C0F2FC04C083E48CB928 |
:1007000013E011C0F3FC04C081E68CB914E00BC007 |
:10071000F4FC04C082E68CB915E005C0F5FC06C007 |
:1007200083E68CB916E0812FB5DDFDCF80E0B2DD28 |
:100730008EE2A8D327960FB6F894DEBF0FBECDBFCA |
:10074000DF91CF911F910F91FF90EF90DF90CF90AD |
:10075000BF90AF900895AF92BF92CF92DF92EF9289 |
:10076000FF920F931F93CF93DF93182F1092B10036 |
:10077000439885E090E090937900809378006FDC57 |
:10078000E1D68CE291E01AD59093B4028093B30243 |
:1007900008C093D580917A0090917B0089379105AC |
:1007A00090F58091B3029091B40211D5882389F31A |
:1007B000C12FD0E0D0937900C09378004CE2A42EF2 |
:1007C00041E0B42EC12CD12CEE24FF2487010EC0B1 |
:1007D00080916F00882311F440D201C041D484E697 |
:1007E000A4DC0894E11CF11C011D111DEA14FB049A |
:1007F0000C051D0569F763DC60D580917A00909146 |
:100800007B00CD97B0F082B3877C82BB1BBC1ABC47 |
:1008100019BC18BC13BC81E08FBD81E485BD8EE09E |
:1008200087BB88B3817F88BB8AE034DD80E090E0BD |
:1008300030C0C601B5012FE030E040E050E080D983 |
:10084000A21AB30AC40AD50A0894A108B108C108BB |
:10085000D10889E1A816B104C104D104C0F072D650 |
:100860008091AF008F5F8093AF008091AF0066E012 |
:1008700047D99093AF00D6D4D0937900C093780035 |
:10088000EEDB449BA1CF82B3805882BB9DCF81E039 |
:1008900090E0DF91CF911F910F91FF90EF90DF904B |
:1008A000CF90BF90AF900895CF92DF92EF92FF92DA |
:1008B0000F931F93CF93DF9388E084BB85BB8AE3BC |
:1008C00081BB12BA8EE087BB81E388BB88B3806CA2 |
:1008D00088BBB69B06C0B79B02C081E007C082E020 |
:1008E00005C0B79B02C083E001C084E0809366002E |
:1008F0008BE08093B200879B06C08CE08093B200AF |
:1009000080EC80938D008AEB81BBC4D34ED4789465 |
:10091000FCDB80E5B4D5EDD485E690E04FD486E6E7 |
:1009200090E04CD487E690E049D49093B402809351 |
:10093000B3028EEF90E042D47C018DEE93E03ED482 |
:10094000EC018EEE93E03AD403C000DC882339F446 |
:100950008091B3029091B4023AD48823B1F380918C |
:10096000B2008C3010F4979A01C0979810927900D9 |
:100970001092780074DB88E080BF81E087B98AE05C |
:1009800090E01CD49093B4028093B30281E090E095 |
:1009900090938703809386031092A6001092A5007F |
:1009A000D5DB882309F489DC81E388BB00E0CEDB5A |
:1009B00090E090937900809378008091AF00801749 |
:1009C00069F010926300109262008AEF90E0F6D313 |
:1009D0009093B4028093B3020091AF0080917800AD |
:1009E00090917900892BF9F410928800109262009E |
:1009F000C601EDD3882311F11092B100439891E024 |
:100A00009093630082B3877C82BB1BBC1ABC19BC69 |
:100A100018BC13BC9FBD81E485BD8EE087BB88B345 |
:100A2000817F88BB0BC080916300882319F081E02F |
:100A3000809388008CED95E0C1D36C0180916300B8 |
:100A4000882321F0109279001092780008DB8091C1 |
:100A500062008F5F80936200813009F0A8CF80919F |
:100A60006300882341F08091B2008C3010F4979A93 |
:100A700001C0979822D4C701AAD38823A9F182E3A1 |
:100A800090E09CD37C0180917D00482F50E0209124 |
:100A90007A0030917B004217530710F48F5F04C037 |
:100AA0002417350718F4815080937D00293C3105C7 |
:100AB00048F080916400982F929596959770891BC5 |
:100AC0008093640080917D0090916400893738F0B4 |
:100AD000992319F0915090936400AB9A05C09F3F01 |
:100AE00019F09F5F90936400CE0171D3882399F031 |
:100AF0008AE090E063D3EC018091890090918A00B4 |
:100B000090938C0080938B0010928A001092890041 |
:100B100081E0809365008091B3029091B40257D335 |
:100B2000882331F080918B0090918C00892B29F0E3 |
:100B300080918800882309F43ACF11E01093630074 |
:100B40001092B100439884E690E038D39093B402B9 |
:100B50008093B30280918800882309F428CFAB9852 |
:100B600010927C00109288008AE0F5DD882309F459 |
:100B700063C08091B2008C3010F4979A01C09798AE |
:100B8000109263008091AF0081508093AF0081E0AC |
:100B900090E0909379008093780061DA88B18C7F3F |
:100BA00088B981E08093B10088B18A6088B984E116 |
:100BB00090E004D39093B4028093B3028091B30287 |
:100BC0009091B40204D38823C9F38FE090E090930E |
:100BD00079008093780043DA8CE291E0EFD2909331 |
:100BE000B4028093B3021BC080917A0090917B0085 |
:100BF000CD97A8F082B3877C82BB1BBC1ABC19BC02 |
:100C000018BC13BC11E01FBD81E485BD8EE087BB1D |
:100C100088B3817F88BB8AE03DDB10938800809198 |
:100C2000B3029091B402D3D28823F1F282E390E030 |
:100C3000C5D2EC0107E0BBCE89DA882309F4B7CE30 |
:100C400010938800B4CE1F920F920FB60F9211240A |
:100C50000F900FBE0F901F9018955E9B24C080913F |
:100C60006F008823E1F48091A0009091A10001968B |
:100C70009093A1008093A000FC01E854FD4FE08117 |
:100C8000ED3019F08436910539F41092A1001092DC |
:100C9000A00081E080936F00589AECB908951092FB |
:100CA000A1001092A00008951F93CF93DF93EC0151 |
:100CB00070E0A22FB0E0129748C0E42FF0E0E25EAF |
:100CC000FC4F30814F5FE42FF0E0E25EFC4F50813B |
:100CD0004F5FE42FF0E0E25EFC4F10814F5FE42FA6 |
:100CE000F0E0E25EFC4F20814F5F842F90E0A81778 |
:100CF000B90774F15D53FE01E70FF11D852F829551 |
:100D00008F703D53330F330F382B3083613001F137 |
:100D1000912F9D537F5FFE01E70FF11D715052959A |
:100D2000507F892F86958695582B508363506F3F4F |
:100D300079F07E5FFE01E70FF11D9295990F990FF3 |
:100D4000907C2D53922B90837F5F662309F0B5CF63 |
:100D5000DF91CF911F910895DC0140E050E020E049 |
:100D600030E008C0FA01E854FD4F8081280F311DA2 |
:100D70004F5F5F4F4A175B07A9F73F70C90136E025 |
:100D8000969587953A95E1F7835CFD01E854FD4F10 |
:100D9000808311962F73235CFD01E854FD4F20835F |
:100DA000A754BD4F8DE08C9310926F008091B802D4 |
:100DB0008CB908951F93CF93DF93EA01722F93E2CA |
:100DC0009093B8026093B9028093BA02A3E0B0E0B6 |
:100DD00060E04FC0FE01E60FF11D90816F5F715022 |
:100DE00019F410E040E00FC0FE01E60FF11D408154 |
:100DF0006F5F715011F410E006C0FE01E60FF11DA7 |
:100E000010816F5F7150892F86958695835CFD01F7 |
:100E1000E854FD4F808350E09A0184E03695279591 |
:100E20008A95E1F7892F90E083709070F4E0880F45 |
:100E3000991FFA95E1F7282B235CFD01E754FD4F3C |
:100E40002083812F82958695869583704F70507090 |
:100E5000440F551F440F551F842B835CFD01E6543E |
:100E6000FD4F80831F73135CFD01E554FD4F10831C |
:100E70001496772309F0AECFCD016EDFDF91CF91CD |
:100E80001F9108951F93182F8A3011F48DE0FADF17 |
:100E90005D9BFECF1CB980E090E01F9108951F92EA |
:100EA0000F920FB60F9211242F933F934F935F939E |
:100EB0006F937F938F939F93AF93BF93CF93DF9362 |
:100EC000EF93FF938CB18093910040919B00443647 |
:100ED00010F010929A00509191005D3009F064C0BA |
:100EE00080919A00823009F05FC010929A00A42F7E |
:100EF000B0E0FD01E45EFC4F3081ED01C35EDC4FEC |
:100F0000288180919E0090919F00831B9109821BF4 |
:100F100091099F7090939F0080939E009C0196E0A2 |
:100F2000369527959A95E1F7235C20939D00982F9D |
:100F30009F73935C90939C008081281709F07CC07C |
:100F40008881981709F078C040939900A25EBC4F41 |
:100F50005C9380912003823549F488E190E02CE095 |
:100F60000FB6F894A89581BD0FBE21BD80912003D6 |
:100F700089DF80912003843709F05EC020919900B9 |
:100F800043E066E083E990E08FDEE0916600F0E008 |
:100F9000EE56FF4F80818093900084EF91E0909314 |
:100FA00083008093820048C080919A008130D9F0FC |
:100FB000813018F08230F1F521C0809191008332A8 |
:100FC00039F480919200882319F481E080939A008B |
:100FD0008091910080931E0381E080939B0080911B |
:100FE000910090E022C082E080939A00E42FF0E02C |
:100FF00080919100E25EFC4F808309C0E42FF0E015 |
:1010000080919100E25EFC4F8083443620F44F5F74 |
:1010100040939B0002C010929A0020919100809111 |
:101020009E0090919F00820F911D90939F0080934E |
:101030009E0002C010929A00FF91EF91DF91CF9134 |
:10104000BF91AF919F918F917F916F915F914F91E0 |
:101050003F912F910F900FBE0F901F9018950895FC |
:1010600080911C0390911D03B2D0882391F0809150 |
:101070006F00882371F06091B70222E142E853E0EB |
:1010800084E498DE82E390E099D090931D038093EE |
:101090001C03089588E18AB9599A579A80E189B961 |
:1010A00060E070E082E497E0C0D388EC90E086D006 |
:1010B00090931D0380931C038AE0E4DE82E4E2DE69 |
:1010C0008CE4E0DE8AE3DEDE86E5DCDE80E3DADE89 |
:1010D0008EE2D8DE84E3D6DE81E3D4DE8AE0D2DE9F |
:1010E00088E4D0DE87E5CEDE8AE3CCDE81E3CADEAB |
:1010F0008EE2C8DE8091B2008A5DC4DE8AE0C2DE84 |
:1011000081E4C0DE84E4BEDE82E5BCDE8AE3BADED2 |
:1011100080916600805DB6DE08951F920F920FB633 |
:101120000F9211248F939F93809194038F5F8093EC |
:1011300094038091A40081508093A4008F3F71F5A7 |
:1011400083E08093A4008091A2009091A300019677 |
:101150009093A3008093A2008091800090918100E1 |
:10116000009729F0019790938100809380008091EF |
:10117000A800882331F08091A80081508093A800B6 |
:1011800002C01092A9008091820090918300009784 |
:1011900029F0019790938300809382009F918F9113 |
:1011A0000F900FBE0F901F90189582E083BF89B7F4 |
:1011B000816089BF89B7806489BF08952091A200AA |
:1011C0003091A30021503040820F931F0895209149 |
:1011D000A2003091A300821B930B892F992780785E |
:1011E00090E00895AC012091A2003091A30021501D |
:1011F00030408091A2009091A300B901681B790B47 |
:10120000CB01840F951F80709078892F99278823B0 |
:1012100081F3089586EA86B980918D00876087B949 |
:10122000369A089527B190918D00966097B910BEB7 |
:1012300083ED86B9349A97B9369A349BFECF27B995 |
:1012400084B195B120917A0030917B00A90163E0CF |
:10125000440F551F6A95E1F7421B530B880F991FE6 |
:10126000880F991F480F591F83E0569547958A9517 |
:10127000E1F750937B0040937A0080917C0090E0EE |
:101280008417950710F440937C0016B888E080BF5F |
:10129000089527B190918D00982B97B910BE83EDDA |
:1012A00086B9349A97B9369A349BFECF27B916B8C7 |
:1012B00088E080BF84B195B1089586E0EADF9C01A3 |
:1012C000220F331F220F331F293C310510F028EC69 |
:1012D00030E030937B0020937A0080917C0090E096 |
:1012E0008217930710F420937C0016B888E080BF23 |
:1012F00008958EB5806C8EBD8EB580648EBD89B725 |
:10130000806289BF89B7846089BF08951F920F9258 |
:101310000FB60F9211248F938091A7008F5F809357 |
:10132000A7008F910F900FBE0F901F9018951F92DE |
:101330000F920FB60F9211242F933F934F935F9309 |
:101340008F939F930EB406FE0FC01092A70086B530 |
:1013500097B59093AD008093AC008EB58F7B8EBD1A |
:1013600084E68093A80071C08EB580648EBD86B57A |
:1013700097B52091A7004091AC005091AD00841B1F |
:10138000950B30E0322F2227330F820F931F689482 |
:1013900014F8969587951694E1F79093AB00809397 |
:1013A000AA008851914030F488E191E09093AB001D |
:1013B0008093AA004091AA005091AB00485151403F |
:1013C0008091A5009091A6008417950730F4809134 |
:1013D000A5009091A60001960CC08091A500909167 |
:1013E000A6004817590748F48091A5009091A600DF |
:1013F00001979093A6008093A5008091A5009091FD |
:10140000A6009C01220F331F220F331F220F331F10 |
:10141000281B390B240F351F83E0369527958A95B5 |
:10142000E1F73093AB002093AA003093A6002093FD |
:10143000A5008091A9008F3F29F08091A9008F5FBE |
:101440008093A90081E0809365009F918F915F91C7 |
:101450004F913F912F910F900FBE0F901F901895B5 |
:101460001F920F920FB60F9211248F938AB78F7B22 |
:101470008ABF8F910F900FBE0F901F90189590917B |
:101480006600990F980F92B985EC86BF08951F9258 |
:101490000F920FB60F9211248F939F9381B190E01A |
:1014A000887F907080389105C9F08138910534F4B7 |
:1014B000009791F18036910591F50AC0883B91051E |
:1014C000B9F0883F910529F1883A910541F510C09E |
:1014D00086B7806886BF1092AE0023C083B1809328 |
:1014E000950384EF91E090938100809380000EC07B |
:1014F0008091AE00882339F480917D0083B981E02A |
:101500008093AE0003C08091640083B986B7806881 |
:1015100007C086B7806986BF86B7806986BF85ECBD |
:1015200086BF9F918F910F900FBE0F901F901895BF |
:101530001F920F920FB60F9211240F900FBE0F90B3 |
:101540001F9018958091AF00823069F1833030F49C |
:10155000882369F0813009F063C017C0843009F432 |
:101560003FC0843068F1853009F05AC04BC081EA31 |
:101570008FBD81E685BD88E087BB82B3877D82BB56 |
:10158000949A80918D00826038C081EA8FBD81E697 |
:1015900085BD88E087BB82B3877E82BB959A8091A8 |
:1015A0008D0081601AC081EA8FBD81E685BD84E02F |
:1015B00087BB82B3877E82BB959A80918D001DC0C8 |
:1015C00081EA8FBD81E685BD84E087BB82B38F7CD5 |
:1015D00082BB939A80918D00826087B9409808956C |
:1015E00081EA8FBD81E685BD82E087BB82B38F7CB7 |
:1015F00082BB939A80918D00816087B988B18360A6 |
:1016000088B9089581EA8FBD81E685BD82E087BBF8 |
:1016100082B3877D82BB949A80918D0087B9409870 |
:1016200008951F920F920FB60F9211241F932F93BC |
:101630003F934F935F936F937F938F939F93AF935A |
:10164000BF93EF93FF9388B190E0689414F8969558 |
:1016500087951694E1F7182F11708091AF008230B2 |
:1016600009F458C0833030F4882371F0813009F0D8 |
:10167000BEC025C0843009F480C0843008F463C043 |
:10168000853009F0B4C093C081EA8FBD81E685BD85 |
:1016900088E087BB112371F082B3877E82BB959A65 |
:1016A000809165008111BEDD409880918D00816040 |
:1016B00087B91BC082B3877D82BB949A98C082B3DE |
:1016C000877E82BB959A1123F9F481EA8FBD81E66A |
:1016D00085BD84E087BB809165008111A3DD809189 |
:1016E0008D0087B988B1836088B98091AF008F5F22 |
:1016F0008093AF008091890090918A000196909329 |
:101700008A008093890073C081EA8FBD81E685BD20 |
:1017100088E06CC081EA8FBD81E685BD84E087BB2F |
:10172000112361F082B38F7C82BB939A8091650014 |
:10173000811178DD80918D00826031C082B3877E17 |
:1017400082BB959A54C082B38F7C82BB939A11233B |
:1017500071F481EA8FBD81E685BD82E087BB80910F |
:10176000650081115FDD80918D008160BACF81EAD3 |
:101770008FBD81E685BD84E039C081EA8FBD81E6F9 |
:1017800085BD82E087BB112369F082B3877D82BB70 |
:10179000949A80916500811145DD80918D0087B913 |
:1017A0004098A3CF82B38F7C82BB939A20C082B330 |
:1017B000877D82BB949A1123A1F481EA8FBD81E6D3 |
:1017C00085BD88E087BB8091650081112BDD80910C |
:1017D0008D00826087B988B1836088B91092AF00AC |
:1017E00089CF81EA8FBD81E685BD82E087BB4599BF |
:1017F00003C0112309F027CF459B03C0112309F42F |
:1018000022CF10926500FF91EF91BF91AF919F9110 |
:101810008F917F916F915F914F913F912F911F9188 |
:101820000F900FBE0F901F901895EF92FF920F939D |
:101830001F93CF93DF938C017B01892B11F4672BCE |
:10184000C9F16EE070E081E090E03BD0FC010097D0 |
:1018500089F1DC0180E88383E114F10471F0F386FF |
:10186000E28681E883838091960390919703892B88 |
:1018700021F4F0939703E093960301151105E1F02D |
:101880001187008783818260838380919803909180 |
:101890009903892B89F4F0939903E093980380913D |
:1018A0009A0390919B03892B39F4F0939B03E09367 |
:1018B0009A0302C0A0E0B0E0CD01E6E0CDB7DEB70C |
:1018C0006DC10F931F93CF93DF93689F8001699F32 |
:1018D000100D789F100D1124C8010DD0EC01009758 |
:1018E00021F0A80160E070E004D1CE01DF91CF913A |
:1018F0001F910F910895CF93DF93AC01029710F4DD |
:1019000042E050E0A0919E03B0919F03FD01C0E032 |
:10191000D0E020E030E020C08081918184179507DD |
:1019200069F482819381209719F09B838A8304C094 |
:1019300090939F0380939E039F0132C048175907DD |
:1019400038F42115310519F08217930708F49C012A |
:10195000EF010280F381E02D3097F1F6211531057A |
:1019600099F1C901841B950B049708F4A901E0E0E3 |
:10197000F0E028C08D919C91119782179307F9F49C |
:101980004817590781F4ED018A819B81309719F03E |
:101990009383828304C090939F0380939E039D0151 |
:1019A0002E5F3F4F4CC0841B950BFD01E80FF91FC4 |
:1019B0004193519302978D939C939F0140C0FD01E9 |
:1019C000A281B3811097B1F680919C0390919D0301 |
:1019D000892B41F4809173009091740090939D0342 |
:1019E00080939C032091750030917600211531057C |
:1019F00049F48DB7282F30E08091710090917200EA |
:101A0000281B390BA0919C03B0919D032A1B3B0B13 |
:101A10002417350790F0CA0102962817390768F095 |
:101A20009D012E5F3F4FC901840F951F90939D0329 |
:101A300080939C034D935C9302C020E030E0C90189 |
:101A4000DF91CF910895CF93DF93009709F44EC0B3 |
:101A5000EC0122971B821A82A0919E03B0919F03F2 |
:101A6000109711F140E050E001C0DC01AC17BD0758 |
:101A700000F1BB83AA83FE0121913191E20FF31F94 |
:101A8000EA17FB0771F48D919C911197280F391F6C |
:101A90002E5F3F4F39832883FD01828193819B8391 |
:101AA0008A834115510559F4D0939F03C0939E0337 |
:101AB0001DC0FD0182819381AD010097B1F6FA014D |
:101AC000D383C28321913191E20FF31FEC17FD07FD |
:101AD00069F488819981280F391F2E5F3F4FFA01E1 |
:101AE000318320838A819B8193838283DF91CF918D |
:101AF0000895DC0101C06D9341505040E0F7089516 |
:101B0000991B79E004C0991F961708F0961B881F4F |
:101B10007A95C9F780950895AA1BBB1B51E107C0B0 |
:101B2000AA1FBB1FA617B70710F0A61BB70B881F6D |
:101B3000991F5A95A9F780959095BC01CD010895FC |
:101B4000A1E21A2EAA1BBB1BFD010DC0AA1FBB1FC1 |
:101B5000EE1FFF1FA217B307E407F50720F0A21B33 |
:101B6000B30BE40BF50B661F771F881F991F1A94A0 |
:101B700069F760957095809590959B01AC01BD01CA |
:101B8000CF0108952A88398848885F846E847D84CF |
:101B90008C849B84AA84B984C884DF80EE80FD8015 |
:101BA0000C811B81AA81B981CE0FD11D0FB6F8948B |
:0C1BB000DEBF0FBECDBFED010895FFCFDA |
:101BBC000A000101FF010101000000010102020104 |
:081BCC00642000A003000000EA |
:00000001FF |
Property changes: |
Added: svn:mergeinfo |
/branches/V0.41-Hexa/Hexfiles/MEGA8_BLC_V0_41_10A_ADR_5.hex |
---|
0,0 → 1,445 |
:1000000012C01FCA2BC02AC084CA82C927C026C0FA |
:100010006EC974C823C034C721C006C61FC01EC025 |
:10002000F1CA26CA1BC011241FBECFE5D4E0DEBF33 |
:10003000CDBF10E0A0E6B0E0EEE9FBE102C0059024 |
:100040000D92A837B107D9F713E0A8E7B0E001C0D7 |
:100050001D92A03AB107E1F727D4A0CDD1CF4091AE |
:10006000780080916400841710F4AB9A482F209197 |
:100070007A0030917B00293C3105C8F01BBC1ABCCA |
:1000800019BC18BC13BC82B3877C82BBAB9A80912D |
:100090009003909191030196909391038093900324 |
:1000A0002150304030937B0020937A000895842FB4 |
:1000B00090E09BBD8ABD99BD88BD43BD08958091E8 |
:1000C0007A0090917B0090938503809384038091C4 |
:1000D0007D0090E0909387038093860380918B004E |
:1000E00090918C0090938903809388038091A50060 |
:1000F0009091A60090938B0380938A0383B590E040 |
:1001000090938D0380938C0308951BBC1ABC19BC7B |
:1001100018BC13BC91E09FBD81E485BD8EE087BB18 |
:1001200088B3817F88BB9EBD089592B7980F292F11 |
:1001300082B7821B87FDFCCF089500C001972FEF87 |
:100140008F3F9207D9F780E090E00895809180007A |
:1001500090918100892B09F059C080918200909183 |
:100160008300892B99F0909190008FEF989FC001A8 |
:10017000112468EC70E0C1DC70938F0060938E00F6 |
:100180001092670089B78F7D89BF31C08091A90027 |
:10019000853178F181E0809367002091A50030914E |
:1001A000A60041E02D32340730F4293C310540F4FB |
:1001B0002B30310538F410928F0010928E0017C04A |
:1001C00028EC30E08CEF90E0AC01249FC001259F2B |
:1001D000900D349F900D1124885D994064EB70E080 |
:1001E0008CDC6D5F7F4F70938F0060938E00AB98B7 |
:1001F0001AC080918E0090918F00009729F001978E |
:1002000090938F0080938E00AB9A0DC080919503E0 |
:1002100090E090938F0080938E0010926700AB98CF |
:1002200089B78F7D89BF80918E0090918F008F3F1D |
:10023000910539F030F08FEF90E090938F0080932C |
:100240008E0080918E0090E00895CF93DF93EC01B3 |
:1002500017C024D88091B5029091B60288589F4F5C |
:1002600020917A0030917B008217930748F482B383 |
:10027000877C82BB88B3817F88BB81E090E007C028 |
:1002800021978FEFCF3FD80721F780E090E0DF91F3 |
:10029000CF9108951F93182F789408C0AB9A8CE2E1 |
:1002A00091E091D7AB988CE291E08DD71150B0F7E7 |
:1002B00088EE93E088D71F910895AF92BF92CF92B6 |
:1002C000DF92EF92FF920F931F93CF93DF93CDB7FF |
:1002D000DEB727970FB6F894DEBF0FBECDBFDE01A5 |
:1002E0001196E8E6F0E087E001900D928150E1F789 |
:1002F000AB9880916600FE01E80FF11D818190E0CE |
:100300002CE231E0AC01429FC001439F900D529F0F |
:10031000900D112458D71092B1004398F8948AE0B8 |
:10032000A2D582B3877C82BB1BBC1ABC19BC18BC8B |
:1003300013BC81E08FBD81E485BD8EE087BB88B3AF |
:10034000817F88BB10927C0082E390E07EDF809109 |
:100350007C0090E09093B6028093B50210927B00EF |
:1003600010927A008CB1803231F082E338EEA32E05 |
:1003700033E0B32E06C08FE576D588E2AA24AA948E |
:10038000BA2C10927B0010927A0000E010E0C82E88 |
:10039000DD24939A81E090E058DF82B3877C82BBB2 |
:1003A00088B3817F88BBC39A81E090E04EDF82B33F |
:1003B000877C82BB88B3817F88BB76018091B50240 |
:1003C0009091B6028C0D9D1D20917A0030917B009A |
:1003D0008217930738F00F5F1F4F0A151B05C9F6E8 |
:1003E000DD240AC084E33FD582B3877C82BB88B317 |
:1003F000817F88BB24E0D22E80E197E200C0019784 |
:100400005FEF8F3F9507D9F710927B0010927A002B |
:1004100000E010E0949A81E090E017DF82B3877CDF |
:1004200082BB88B3817F88BBC29A81E090E00DDFF8 |
:1004300082B3877C82BB88B3817F88BB8091B50201 |
:100440009091B6028E0D9F1D20917A0030917B0015 |
:100450008217930730F00F5F1F4F0A151B0559F0E5 |
:10046000D9CF85E300D582B3877C82BB88B3817FF7 |
:1004700088BB95E0D92E10927B0010927A0080E123 |
:1004800097E200C001972FEF8F3F9207D9F700E066 |
:1004900010E0959A81E090E0D8DE82B3877C82BB41 |
:1004A00088B3817F88BBC19A81E090E0CEDE82B3C1 |
:1004B000877C82BB88B3817F88BB8091B502909195 |
:1004C000B6028E0D9F1D20917A0030917B0082171D |
:1004D000930730F00F5F1F4F0A151B0561F0D9CF4E |
:1004E00086E3C1D482B3877C82BB88B3817F88BB1B |
:1004F00086E0D82E02C0DD2019F08D2DCBDEFDCF99 |
:1005000080918D0087B982B3877C82BB88B3817F5D |
:1005100088BB949A959A10927B0010927A0000E022 |
:1005200010E0FF24C39A80E0A5D6C39718F041E0FD |
:10053000F42A02C05EEFF52218BA8CE291E000C006 |
:1005400001972FEF8F3F9207D9F70F5F1F4F0937A2 |
:10055000110541F782B3877C82BB88B3817F88BB5A |
:10056000939A959A00E010E0C29A81E083D6C397EF |
:1005700018F042E0F42A02C05DEFF52218BA8CE2CE |
:1005800091E000C001972FEF8F3F9207D9F70F5FDF |
:100590001F4F0538110541F782B3877C82BB88B3B2 |
:1005A000817F88BB939A949A00E010E0C19A82E020 |
:1005B00061D6C39718F044E0F42A02C05BEFF5223D |
:1005C00018BA8AE491E000C001972FEF8F3F92079D |
:1005D000D9F70F5F1F4F0F36110541F782B3877CA4 |
:1005E00082BB88B3817F88BB939A00E010E0C29AF7 |
:1005F00080E040D68138910518F047EFF42202C020 |
:1006000058E0F52A18BA8AE491E000C001972FEF6C |
:100610008F3F9207D9F70F5F1F4F0937110539F741 |
:10062000959A00E010E0C29A82E024D681389105C4 |
:1006300018F04FEDF42202C050E2F52A18BA88E60D |
:1006400091E000C001972FEF8F3F9207D9F70F5F1E |
:100650001F4F0538110539F782B3877C82BB88B3F9 |
:10066000817F88BB82B3877C82BB88B3817F88BB54 |
:10067000949A00E010E0C19A81E0FCD581389105A0 |
:1006800018F04FEEF42202C050E1F52A18BA88E6BD |
:1006900091E000C001972FEF8F3F9207D9F70F5FCE |
:1006A0001F4F0F36110539F782B3877C82BB88B3A1 |
:1006B000817F88BB789480916600FE01E80FF11D70 |
:1006C000218183E090E0821B91092CE231E0AC01B2 |
:1006D000429FC001439F900D529F900D112473D5EE |
:1006E000F0FC04C081E48CB911E01DC0F1FC04C031 |
:1006F00082E48CB912E017C0F2FC04C083E48CB928 |
:1007000013E011C0F3FC04C081E68CB914E00BC007 |
:10071000F4FC04C082E68CB915E005C0F5FC06C007 |
:1007200083E68CB916E0812FB5DDFDCF80E0B2DD28 |
:100730008EE299D327960FB6F894DEBF0FBECDBFD9 |
:10074000DF91CF911F910F91FF90EF90DF90CF90AD |
:10075000BF90AF900895AF92BF92CF92DF92EF9289 |
:10076000FF920F931F93CF93DF93182F1092B10036 |
:10077000439885E090E090937900809378006FDC57 |
:10078000D2D68CE291E00BD59093B4028093B30261 |
:1007900008C084D580917A0090917B0089379105BB |
:1007A00090F58091B3029091B40202D5882389F329 |
:1007B000C12FD0E0D0937900C09378004CE2A42EF2 |
:1007C00041E0B42EC12CD12CEE24FF2487010EC0B1 |
:1007D00080916F00882311F431D201C032D484E6B5 |
:1007E000A4DC0894E11CF11C011D111DEA14FB049A |
:1007F0000C051D0569F763DC51D580917A00909155 |
:100800007B00CD97B0F082B3877C82BB1BBC1ABC47 |
:1008100019BC18BC13BC81E08FBD81E485BD8EE09E |
:1008200087BB88B3817F88BB8AE034DD80E090E0BD |
:1008300030C0C601B5012FE030E040E050E071D992 |
:10084000A21AB30AC40AD50A0894A108B108C108BB |
:10085000D10889E1A816B104C104D104C0F063D65F |
:100860008091AF008F5F8093AF008091AF0066E012 |
:1008700038D99093AF00C7D4D0937900C093780053 |
:10088000EEDB449BA1CF82B3805882BB9DCF81E039 |
:1008900090E0DF91CF911F910F91FF90EF90DF904B |
:1008A000CF90BF90AF900895CF92DF92EF92FF92DA |
:1008B0000F931F93CF93DF9388E084BB85BB8AE3BC |
:1008C00081BB12BA8EE087BB81E388BB85E0809351 |
:1008D00066008AE08093B200879B06C08CE080931C |
:1008E000B20080EC80938D008AEB81BBC4D34ED4E0 |
:1008F00078940BDC80E5B4D5EDD485E690E04FD458 |
:1009000086E690E04CD487E690E049D49093B40218 |
:100910008093B3028EEF90E042D47C018DEE93E0A1 |
:100920003ED4EC018EEE93E03AD403C00FDC882372 |
:1009300039F48091B3029091B4023AD48823B1F390 |
:100940008091B2008C3010F4979A01C09798109261 |
:1009500079001092780083DB88E080BF81E087B95E |
:100960008AE090E01CD49093B4028093B30281E0BB |
:1009700090E090938703809386031092A6001092D4 |
:10098000A500E4DB882309F498DC81E388BB00E060 |
:10099000DDDB90E090937900809378008091AF0048 |
:1009A000801769F010926300109262008AEF90E065 |
:1009B000F6D39093B4028093B3020091AF0080917C |
:1009C000780090917900892BF9F4109288001092A8 |
:1009D0006200C601EDD3882311F11092B100439853 |
:1009E00091E09093630082B3877C82BB1BBC1ABCEE |
:1009F00019BC18BC13BC9FBD81E485BD8EE087BBCC |
:100A000088B3817F88BB0BC080916300882319F075 |
:100A100081E0809388008CED95E0C1D36C018091DA |
:100A20006300882321F0109279001092780017DB80 |
:100A3000809162008F5F80936200813009F0A8CFBF |
:100A400080916300882341F08091B2008C3010F4D3 |
:100A5000979A01C0979822D4C701AAD38823A9F1F5 |
:100A600082E390E09CD37C0180917D00482F50E090 |
:100A700020917A0030917B004217530710F48F5F6A |
:100A800004C02417350718F4815080937D00293C59 |
:100A9000310548F080916400982F92959695977053 |
:100AA000891B8093640080917D0090916400893758 |
:100AB00038F0992319F0915090936400AB9A05C0D7 |
:100AC0009F3F19F09F5F90936400CE0171D38823FC |
:100AD00099F08AE090E063D3EC01809189009091D5 |
:100AE0008A0090938C0080938B0010928A00109261 |
:100AF000890081E0809365008091B3029091B402F7 |
:100B000057D3882331F080918B0090918C00892BF2 |
:100B100029F080918800882309F43ACF11E01093DE |
:100B200063001092B100439884E690E038D390932C |
:100B3000B4028093B30280918800882309F428CFFF |
:100B4000AB9810927C00109288008AE004DE882323 |
:100B500009F463C08091B2008C3010F4979A01C000 |
:100B60009798109263008091AF0081508093AF00FE |
:100B700081E090E0909379008093780070DA88B1FA |
:100B80008C7F88B981E08093B10088B18A6088B990 |
:100B900084E190E004D39093B4028093B3028091F7 |
:100BA000B3029091B40204D38823C9F38FE090E09C |
:100BB000909379008093780052DA8CE291E0EFD242 |
:100BC0009093B4028093B3021BC080917A009091FD |
:100BD0007B00CD97A8F082B3877C82BB1BBC1ABC7C |
:100BE00019BC18BC13BC11E01FBD81E485BD8EE0AB |
:100BF00087BB88B3817F88BB8AE04CDB1093880079 |
:100C00008091B3029091B402D3D28823F1F282E3AF |
:100C100090E0C5D2EC0107E0BBCE98DA882309F456 |
:100C2000B7CE10938800B4CE1F920F920FB60F92DA |
:100C300011240F900FBE0F901F9018955E9B24C03B |
:100C400080916F008823E1F48091A0009091A10031 |
:100C500001969093A1008093A000FC01E854FD4F01 |
:100C6000E081ED3019F08436910539F41092A1003D |
:100C70001092A00081E080936F00589AECB908951B |
:100C80001092A1001092A00008951F93CF93DF93BC |
:100C9000EC0170E0A22FB0E0129748C0E42FF0E022 |
:100CA000E25EFC4F30814F5FE42FF0E0E25EFC4FEC |
:100CB00050814F5FE42FF0E0E25EFC4F10814F5F08 |
:100CC000E42FF0E0E25EFC4F20814F5F842F90E044 |
:100CD000A817B90774F15D53FE01E70FF11D852FC9 |
:100CE00082958F703D53330F330F382B3083613033 |
:100CF00001F1912F9D537F5FFE01E70FF11D7150B0 |
:100D00005295507F892F86958695582B5083635036 |
:100D10006F3F79F07E5FFE01E70FF11D9295990F0D |
:100D2000990F907C2D53922B90837F5F662309F05F |
:100D3000B5CFDF91CF911F910895DC0140E050E0E5 |
:100D400020E030E008C0FA01E854FD4F8081280F10 |
:100D5000311D4F5F5F4F4A175B07A9F73F70C9010D |
:100D600036E0969587953A95E1F7835CFD01E85466 |
:100D7000FD4F808311962F73235CFD01E854FD4FD6 |
:100D80002083A754BD4F8DE08C9310926F0080910B |
:100D9000B8028CB908951F93CF93DF93EA01722FA5 |
:100DA00093E29093B8026093B9028093BA02A3E0F1 |
:100DB000B0E060E04FC0FE01E60FF11D90816F5F73 |
:100DC000715019F410E040E00FC0FE01E60FF11D74 |
:100DD00040816F5F715011F410E006C0FE01E60F14 |
:100DE000F11D10816F5F7150892F86958695835C08 |
:100DF000FD01E854FD4F808350E09A0184E0369570 |
:100E000027958A95E1F7892F90E083709070F4E040 |
:100E1000880F991FFA95E1F7282B235CFD01E75411 |
:100E2000FD4F2083812F82958695869583704F7024 |
:100E30005070440F551F440F551F842B835CFD01D8 |
:100E4000E654FD4F80831F73135CFD01E554FD4F95 |
:100E500010831496772309F0AECFCD016EDFDF91BA |
:100E6000CF911F9108951F93182F8A3011F48DE0B0 |
:100E7000FADF5D9BFECF1CB980E090E01F910895E2 |
:100E80001F920F920FB60F9211242F933F934F93FF |
:100E90005F936F937F938F939F93AF93BF93CF9302 |
:100EA000DF93EF93FF938CB18093910040919B006F |
:100EB000443610F010929A00509191005D3009F084 |
:100EC00064C080919A00823009F05FC010929A004D |
:100ED000A42FB0E0FD01E45EFC4F3081ED01C35E64 |
:100EE000DC4F288180919E0090919F00831B910987 |
:100EF000821B91099F7090939F0080939E009C019C |
:100F000096E0369527959A95E1F7235C20939D000E |
:100F1000982F9F73935C90939C008081281709F011 |
:100F20007CC08881981709F078C040939900A25E30 |
:100F3000BC4F5C9380912003823549F488E190E0B6 |
:100F40002CE00FB6F894A89581BD0FBE21BD80910D |
:100F5000200389DF80912003843709F05EC020914F |
:100F6000990043E066E083E990E08FDEE09166005F |
:100F7000F0E0EE56FF4F80818093900084EF91E087 |
:100F8000909383008093820048C080919A008130C2 |
:100F9000D9F0813018F08230F1F521C080919100B4 |
:100FA000833239F480919200882319F481E0809390 |
:100FB0009A008091910080931E0381E080939B00B2 |
:100FC0008091910090E022C082E080939A00E42F0B |
:100FD000F0E080919100E25EFC4F808309C0E42F35 |
:100FE000F0E080919100E25EFC4F8083443620F473 |
:100FF0004F5F40939B0002C010929A002091910095 |
:1010000080919E0090919F00820F911D90939F0070 |
:1010100080939E0002C010929A00FF91EF91DF91A1 |
:10102000CF91BF91AF919F918F917F916F915F9180 |
:101030004F913F912F910F900FBE0F901F901895D9 |
:10104000089580911C0390911D03B2D0882391F0E4 |
:1010500080916F00882371F06091B70222E142E82D |
:1010600053E084E498DE82E390E099D090931D03EE |
:1010700080931C03089588E18AB9599A579A80E1B0 |
:1010800089B960E070E083E397E0C0D388EC90E03A |
:1010900086D090931D0380931C038AE0E4DE82E4F3 |
:1010A000E2DE8CE4E0DE8AE3DEDE86E5DCDE80E3A1 |
:1010B000DADE8EE2D8DE84E3D6DE81E3D4DE8AE0B7 |
:1010C000D2DE88E4D0DE87E5CEDE8AE3CCDE81E3C3 |
:1010D000CADE8EE2C8DE8091B2008A5DC4DE8AE09C |
:1010E000C2DE81E4C0DE84E4BEDE82E5BCDE8AE3EB |
:1010F000BADE80916600805DB6DE08951F920F9281 |
:101100000FB60F9211248F939F93809194038F5F5A |
:10111000809394038091A40081508093A4008F3F1A |
:1011200071F583E08093A4008091A2009091A300C8 |
:1011300001969093A3008093A200809180009091EB |
:101140008100009729F0019790938100809380009F |
:101150008091A800882331F08091A800815080936D |
:10116000A80002C01092A900809182009091830093 |
:10117000009729F0019790938300809382009F91BC |
:101180008F910F900FBE0F901F90189582E083BF34 |
:1011900089B7816089BF89B7806489BF089520912C |
:1011A000A2003091A30021503040820F931F089578 |
:1011B0002091A2003091A300821B930B892F9927C5 |
:1011C000807890E00895AC012091A2003091A300B6 |
:1011D000215030408091A2009091A300B901681B7A |
:1011E000790BCB01840F951F80709078892F9927F8 |
:1011F000882381F3089586EA86B980918D008760FF |
:1012000087B9369A089527B190918D00966097B965 |
:1012100010BE83ED86B9349A97B9369A349BFECFC7 |
:1012200027B984B195B120917A0030917B00A90152 |
:1012300063E0440F551F6A95E1F7421B530B880F7B |
:10124000991F880F991F480F591F83E0569547959E |
:101250008A95E1F750937B0040937A0080917C005F |
:1012600090E08417950710F440937C0016B888E04E |
:1012700080BF089527B190918D00982B97B910BE2B |
:1012800083ED86B9349A97B9369A349BFECF27B945 |
:1012900016B888E080BF84B195B1089586E0EADF92 |
:1012A0009C01220F331F220F331F293C310510F000 |
:1012B00028EC30E030937B0020937A0080917C0012 |
:1012C00090E08217930710F420937C0016B888E012 |
:1012D00080BF08958EB5806C8EBD8EB580648EBD46 |
:1012E00089B7806289BF89B7846089BF08951F92DA |
:1012F0000F920FB60F9211248F938091A7008F5FEA |
:101300008093A7008F910F900FBE0F901F9018959C |
:101310001F920F920FB60F9211242F933F934F936A |
:101320005F938F939F930EB406FE0FC01092A70099 |
:1013300086B597B59093AD008093AC008EB58F7B4A |
:101340008EBD84E68093A80071C08EB580648EBD8A |
:1013500086B597B52091A7004091AC005091AD00A3 |
:10136000841B950B30E0322F2227330F820F931FFF |
:10137000689414F8969587951694E1F79093AB00CE |
:101380008093AA008851914030F488E191E09093D5 |
:10139000AB008093AA004091AA005091AB00485145 |
:1013A00051408091A5009091A6008417950730F4D4 |
:1013B0008091A5009091A60001960CC08091A50097 |
:1013C0009091A6004817590748F48091A500909184 |
:1013D000A60001979093A6008093A5008091A50098 |
:1013E0009091A6009C01220F331F220F331F220F62 |
:1013F000331F281B390B240F351F83E036952795A3 |
:101400008A95E1F73093AB002093AA003093A600B1 |
:101410002093A5008091A9008F3F29F08091A90019 |
:101420008F5F8093A90081E0809365009F918F91E9 |
:101430005F914F913F912F910F900FBE0F901F9092 |
:1014400018951F920F920FB60F9211248F938AB79F |
:101450008F7B8ABF8F910F900FBE0F901F901895B2 |
:1014600090916600990F980F92B985EC86BF089508 |
:101470001F920F920FB60F9211248F939F9381B1F9 |
:1014800090E0887F907080389105C9F0813891058F |
:1014900034F4009791F18036910591F50AC0883BAC |
:1014A0009105B9F0883F910529F1883A910541F5F8 |
:1014B00010C086B7806886BF1092AE0023C083B18B |
:1014C0008093950384EF91E0909381008093800056 |
:1014D0000EC08091AE00882339F480917D0083B9DD |
:1014E00081E08093AE0003C08091640083B986B729 |
:1014F000806807C086B7806986BF86B7806986BF67 |
:1015000085EC86BF9F918F910F900FBE0F901F901B |
:1015100018951F920F920FB60F9211240F900FBEC5 |
:101520000F901F9018958091AF00823069F1833041 |
:1015300030F4882369F0813009F063C017C084302B |
:1015400009F43FC0843068F1853009F05AC04BC0BF |
:1015500081EA8FBD81E685BD88E087BB82B3877D48 |
:1015600082BB949A80918D00826038C081EA8FBDE1 |
:1015700081E685BD88E087BB82B3877E82BB959A72 |
:1015800080918D0081601AC081EA8FBD81E685BDA2 |
:1015900084E087BB82B3877E82BB959A80918D0061 |
:1015A0001DC081EA8FBD81E685BD84E087BB82B323 |
:1015B0008F7C82BB939A80918D00826087B940981E |
:1015C000089581EA8FBD81E685BD82E087BB82B345 |
:1015D0008F7C82BB939A80918D00816087B988B19E |
:1015E000836088B9089581EA8FBD81E685BD82E078 |
:1015F00087BB82B3877D82BB949A80918D0087B927 |
:10160000409808951F920F920FB60F9211241F93C6 |
:101610002F933F934F935F936F937F938F939F93FA |
:10162000AF93BF93EF93FF9388B190E0689414F861 |
:10163000969587951694E1F7182F11708091AF0059 |
:10164000823009F458C0833030F4882371F081303F |
:1016500009F0BEC025C0843009F480C0843008F48D |
:1016600063C0853009F0B4C093C081EA8FBD81E6C4 |
:1016700085BD88E087BB112371F082B3877E82BB72 |
:10168000959A809165008111BEDD409880918D0012 |
:10169000816087B91BC082B3877D82BB949A98C052 |
:1016A00082B3877E82BB959A1123F9F481EA8FBDBC |
:1016B00081E685BD84E087BB809165008111A3DD53 |
:1016C00080918D0087B988B1836088B98091AF001F |
:1016D0008F5F8093AF008091890090918A0001967E |
:1016E00090938A008093890073C081EA8FBD81E660 |
:1016F00085BD88E06CC081EA8FBD81E685BD84E050 |
:1017000087BB112361F082B38F7C82BB939A809157 |
:101710006500811178DD80918D00826031C082B3D7 |
:10172000877E82BB959A54C082B38F7C82BB939A8A |
:10173000112371F481EA8FBD81E685BD82E087BB0C |
:101740008091650081115FDD80918D008160BACF4D |
:1017500081EA8FBD81E685BD84E039C081EA8FBD15 |
:1017600081E685BD82E087BB112369F082B3877D66 |
:1017700082BB949A80916500811145DD80918D0036 |
:1017800087B94098A3CF82B38F7C82BB939A20C045 |
:1017900082B3877D82BB949A1123A1F481EA8FBD25 |
:1017A00081E685BD88E087BB8091650081112BDDD6 |
:1017B00080918D00826087B988B1836088B910926A |
:1017C000AF0089CF81EA8FBD81E685BD82E087BB0E |
:1017D000459903C0112309F027CF459B03C011236E |
:1017E00009F422CF10926500FF91EF91BF91AF9164 |
:1017F0009F918F917F916F915F914F913F912F9129 |
:101800001F910F900FBE0F901F901895EF92FF92AF |
:101810000F931F93CF93DF938C017B01892B11F4DE |
:10182000672BC9F16EE070E081E090E03BD0FC01F5 |
:10183000009789F1DC0180E88383E114F10471F001 |
:10184000F386E28681E883838091960390919703E3 |
:10185000892B21F4F0939703E0939603011511056A |
:10186000E1F01187008783818260838380919803F0 |
:1018700090919903892B89F4F0939903E09398034D |
:1018800080919A0390919B03892B39F4F0939B03E9 |
:10189000E0939A0302C0A0E0B0E0CD01E6E0CDB74E |
:1018A000DEB76DC10F931F93CF93DF93689F8001C5 |
:1018B000699F100D789F100D1124C8010DD0EC0107 |
:1018C000009721F0A80160E070E004D1CE01DF9123 |
:1018D000CF911F910F910895CF93DF93AC010297A1 |
:1018E00010F442E050E0A0919E03B0919F03FD01EF |
:1018F000C0E0D0E020E030E020C0808191818417FA |
:10190000950769F482819381209719F09B838A83DC |
:1019100004C090939F0380939E039F0132C0481799 |
:10192000590738F42115310519F08217930708F487 |
:101930009C01EF010280F381E02D3097F1F6211533 |
:10194000310599F1C901841B950B049708F4A9018D |
:10195000E0E0F0E028C08D919C91119782179307E9 |
:10196000F9F44817590781F4ED018A819B8130977A |
:1019700019F09383828304C090939F0380939E0306 |
:101980009D012E5F3F4F4CC0841B950BFD01E80F5E |
:10199000F91F4193519302978D939C939F0140C0EF |
:1019A000FD01A281B3811097B1F680919C039091C3 |
:1019B0009D03892B41F48091730090917400909362 |
:1019C0009D0380939C032091750030917600211532 |
:1019D000310549F48DB7282F30E080917100909146 |
:1019E0007200281B390BA0919C03B0919D032A1B08 |
:1019F0003B0B2417350790F0CA01029628173907C8 |
:101A000068F09D012E5F3F4FC901840F951F909391 |
:101A10009D0380939C034D935C9302C020E030E0D3 |
:101A2000C901DF91CF910895CF93DF93009709F417 |
:101A30004EC0EC0122971B821A82A0919E03B091A6 |
:101A40009F03109711F140E050E001C0DC01AC179A |
:101A5000BD0700F1BB83AA83FE0121913191E20F02 |
:101A6000F31FEA17FB0771F48D919C911197280FD2 |
:101A7000391F2E5F3F4F39832883FD018281938177 |
:101A80009B838A834115510559F4D0939F03C093DA |
:101A90009E031DC0FD0182819381AD010097B1F6C7 |
:101AA000FA01D383C28321913191E20FF31FEC1726 |
:101AB000FD0769F488819981280F391F2E5F3F4FF8 |
:101AC000FA01318320838A819B8193838283DF9112 |
:101AD000CF910895DC0101C06D9341505040E0F773 |
:101AE0000895991B79E004C0991F961708F0961B7A |
:101AF000881F7A95C9F780950895AA1BBB1B51E1F1 |
:101B000007C0AA1FBB1FA617B70710F0A61BB70B6D |
:101B1000881F991F5A95A9F780959095BC01CD0112 |
:101B20000895A1E21A2EAA1BBB1BFD010DC0AA1F1E |
:101B3000BB1FEE1FFF1FA217B307E407F50720F036 |
:101B4000A21BB30BE40BF50B661F771F881F991FB1 |
:101B50001A9469F760957095809590959B01AC01FA |
:101B6000BD01CF0108952A88398848885F846E8432 |
:101B70007D848C849B84AA84B984C884DF80EE80B1 |
:101B8000FD800C811B81AA81B981CE0FD11D0FB6BA |
:0E1B9000F894DEBF0FBECDBFED010895FFCF6C |
:101B9E000A000101FF010101000000010102020122 |
:081BAE00642000A00300000008 |
:00000001FF |
Property changes: |
Added: svn:mergeinfo |
/branches/V0.41-Hexa/Hexfiles/MEGA8_BLC_V0_41_10A_ADR_6.hex |
---|
0,0 → 1,445 |
:1000000012C01FCA2BC02AC084CA82C927C026C0FA |
:100010006EC974C823C034C721C006C61FC01EC025 |
:10002000F1CA26CA1BC011241FBECFE5D4E0DEBF33 |
:10003000CDBF10E0A0E6B0E0EEE9FBE102C0059024 |
:100040000D92A837B107D9F713E0A8E7B0E001C0D7 |
:100050001D92A03AB107E1F727D4A0CDD1CF4091AE |
:10006000780080916400841710F4AB9A482F209197 |
:100070007A0030917B00293C3105C8F01BBC1ABCCA |
:1000800019BC18BC13BC82B3877C82BBAB9A80912D |
:100090009003909191030196909391038093900324 |
:1000A0002150304030937B0020937A000895842FB4 |
:1000B00090E09BBD8ABD99BD88BD43BD08958091E8 |
:1000C0007A0090917B0090938503809384038091C4 |
:1000D0007D0090E0909387038093860380918B004E |
:1000E00090918C0090938903809388038091A50060 |
:1000F0009091A60090938B0380938A0383B590E040 |
:1001000090938D0380938C0308951BBC1ABC19BC7B |
:1001100018BC13BC91E09FBD81E485BD8EE087BB18 |
:1001200088B3817F88BB9EBD089592B7980F292F11 |
:1001300082B7821B87FDFCCF089500C001972FEF87 |
:100140008F3F9207D9F780E090E00895809180007A |
:1001500090918100892B09F059C080918200909183 |
:100160008300892B99F0909190008FEF989FC001A8 |
:10017000112468EC70E0C1DC70938F0060938E00F6 |
:100180001092670089B78F7D89BF31C08091A90027 |
:10019000853178F181E0809367002091A50030914E |
:1001A000A60041E02D32340730F4293C310540F4FB |
:1001B0002B30310538F410928F0010928E0017C04A |
:1001C00028EC30E08CEF90E0AC01249FC001259F2B |
:1001D000900D349F900D1124885D994064EB70E080 |
:1001E0008CDC6D5F7F4F70938F0060938E00AB98B7 |
:1001F0001AC080918E0090918F00009729F001978E |
:1002000090938F0080938E00AB9A0DC080919503E0 |
:1002100090E090938F0080938E0010926700AB98CF |
:1002200089B78F7D89BF80918E0090918F008F3F1D |
:10023000910539F030F08FEF90E090938F0080932C |
:100240008E0080918E0090E00895CF93DF93EC01B3 |
:1002500017C024D88091B5029091B60288589F4F5C |
:1002600020917A0030917B008217930748F482B383 |
:10027000877C82BB88B3817F88BB81E090E007C028 |
:1002800021978FEFCF3FD80721F780E090E0DF91F3 |
:10029000CF9108951F93182F789408C0AB9A8CE2E1 |
:1002A00091E091D7AB988CE291E08DD71150B0F7E7 |
:1002B00088EE93E088D71F910895AF92BF92CF92B6 |
:1002C000DF92EF92FF920F931F93CF93DF93CDB7FF |
:1002D000DEB727970FB6F894DEBF0FBECDBFDE01A5 |
:1002E0001196E8E6F0E087E001900D928150E1F789 |
:1002F000AB9880916600FE01E80FF11D818190E0CE |
:100300002CE231E0AC01429FC001439F900D529F0F |
:10031000900D112458D71092B1004398F8948AE0B8 |
:10032000A2D582B3877C82BB1BBC1ABC19BC18BC8B |
:1003300013BC81E08FBD81E485BD8EE087BB88B3AF |
:10034000817F88BB10927C0082E390E07EDF809109 |
:100350007C0090E09093B6028093B50210927B00EF |
:1003600010927A008CB1803231F082E338EEA32E05 |
:1003700033E0B32E06C08FE576D588E2AA24AA948E |
:10038000BA2C10927B0010927A0000E010E0C82E88 |
:10039000DD24939A81E090E058DF82B3877C82BBB2 |
:1003A00088B3817F88BBC39A81E090E04EDF82B33F |
:1003B000877C82BB88B3817F88BB76018091B50240 |
:1003C0009091B6028C0D9D1D20917A0030917B009A |
:1003D0008217930738F00F5F1F4F0A151B05C9F6E8 |
:1003E000DD240AC084E33FD582B3877C82BB88B317 |
:1003F000817F88BB24E0D22E80E197E200C0019784 |
:100400005FEF8F3F9507D9F710927B0010927A002B |
:1004100000E010E0949A81E090E017DF82B3877CDF |
:1004200082BB88B3817F88BBC29A81E090E00DDFF8 |
:1004300082B3877C82BB88B3817F88BB8091B50201 |
:100440009091B6028E0D9F1D20917A0030917B0015 |
:100450008217930730F00F5F1F4F0A151B0559F0E5 |
:10046000D9CF85E300D582B3877C82BB88B3817FF7 |
:1004700088BB95E0D92E10927B0010927A0080E123 |
:1004800097E200C001972FEF8F3F9207D9F700E066 |
:1004900010E0959A81E090E0D8DE82B3877C82BB41 |
:1004A00088B3817F88BBC19A81E090E0CEDE82B3C1 |
:1004B000877C82BB88B3817F88BB8091B502909195 |
:1004C000B6028E0D9F1D20917A0030917B0082171D |
:1004D000930730F00F5F1F4F0A151B0561F0D9CF4E |
:1004E00086E3C1D482B3877C82BB88B3817F88BB1B |
:1004F00086E0D82E02C0DD2019F08D2DCBDEFDCF99 |
:1005000080918D0087B982B3877C82BB88B3817F5D |
:1005100088BB949A959A10927B0010927A0000E022 |
:1005200010E0FF24C39A80E0A5D6C39718F041E0FD |
:10053000F42A02C05EEFF52218BA8CE291E000C006 |
:1005400001972FEF8F3F9207D9F70F5F1F4F0937A2 |
:10055000110541F782B3877C82BB88B3817F88BB5A |
:10056000939A959A00E010E0C29A81E083D6C397EF |
:1005700018F042E0F42A02C05DEFF52218BA8CE2CE |
:1005800091E000C001972FEF8F3F9207D9F70F5FDF |
:100590001F4F0538110541F782B3877C82BB88B3B2 |
:1005A000817F88BB939A949A00E010E0C19A82E020 |
:1005B00061D6C39718F044E0F42A02C05BEFF5223D |
:1005C00018BA8AE491E000C001972FEF8F3F92079D |
:1005D000D9F70F5F1F4F0F36110541F782B3877CA4 |
:1005E00082BB88B3817F88BB939A00E010E0C29AF7 |
:1005F00080E040D68138910518F047EFF42202C020 |
:1006000058E0F52A18BA8AE491E000C001972FEF6C |
:100610008F3F9207D9F70F5F1F4F0937110539F741 |
:10062000959A00E010E0C29A82E024D681389105C4 |
:1006300018F04FEDF42202C050E2F52A18BA88E60D |
:1006400091E000C001972FEF8F3F9207D9F70F5F1E |
:100650001F4F0538110539F782B3877C82BB88B3F9 |
:10066000817F88BB82B3877C82BB88B3817F88BB54 |
:10067000949A00E010E0C19A81E0FCD581389105A0 |
:1006800018F04FEEF42202C050E1F52A18BA88E6BD |
:1006900091E000C001972FEF8F3F9207D9F70F5FCE |
:1006A0001F4F0F36110539F782B3877C82BB88B3A1 |
:1006B000817F88BB789480916600FE01E80FF11D70 |
:1006C000218183E090E0821B91092CE231E0AC01B2 |
:1006D000429FC001439F900D529F900D112473D5EE |
:1006E000F0FC04C081E48CB911E01DC0F1FC04C031 |
:1006F00082E48CB912E017C0F2FC04C083E48CB928 |
:1007000013E011C0F3FC04C081E68CB914E00BC007 |
:10071000F4FC04C082E68CB915E005C0F5FC06C007 |
:1007200083E68CB916E0812FB5DDFDCF80E0B2DD28 |
:100730008EE299D327960FB6F894DEBF0FBECDBFD9 |
:10074000DF91CF911F910F91FF90EF90DF90CF90AD |
:10075000BF90AF900895AF92BF92CF92DF92EF9289 |
:10076000FF920F931F93CF93DF93182F1092B10036 |
:10077000439885E090E090937900809378006FDC57 |
:10078000D2D68CE291E00BD59093B4028093B30261 |
:1007900008C084D580917A0090917B0089379105BB |
:1007A00090F58091B3029091B40202D5882389F329 |
:1007B000C12FD0E0D0937900C09378004CE2A42EF2 |
:1007C00041E0B42EC12CD12CEE24FF2487010EC0B1 |
:1007D00080916F00882311F431D201C032D484E6B5 |
:1007E000A4DC0894E11CF11C011D111DEA14FB049A |
:1007F0000C051D0569F763DC51D580917A00909155 |
:100800007B00CD97B0F082B3877C82BB1BBC1ABC47 |
:1008100019BC18BC13BC81E08FBD81E485BD8EE09E |
:1008200087BB88B3817F88BB8AE034DD80E090E0BD |
:1008300030C0C601B5012FE030E040E050E071D992 |
:10084000A21AB30AC40AD50A0894A108B108C108BB |
:10085000D10889E1A816B104C104D104C0F063D65F |
:100860008091AF008F5F8093AF008091AF0066E012 |
:1008700038D99093AF00C7D4D0937900C093780053 |
:10088000EEDB449BA1CF82B3805882BB9DCF81E039 |
:1008900090E0DF91CF911F910F91FF90EF90DF904B |
:1008A000CF90BF90AF900895CF92DF92EF92FF92DA |
:1008B0000F931F93CF93DF9388E084BB85BB8AE3BC |
:1008C00081BB12BA8EE087BB81E388BB86E0809350 |
:1008D00066008AE08093B200879B06C08CE080931C |
:1008E000B20080EC80938D008AEB81BBC4D34ED4E0 |
:1008F00078940BDC80E5B4D5EDD485E690E04FD458 |
:1009000086E690E04CD487E690E049D49093B40218 |
:100910008093B3028EEF90E042D47C018DEE93E0A1 |
:100920003ED4EC018EEE93E03AD403C00FDC882372 |
:1009300039F48091B3029091B4023AD48823B1F390 |
:100940008091B2008C3010F4979A01C09798109261 |
:1009500079001092780083DB88E080BF81E087B95E |
:100960008AE090E01CD49093B4028093B30281E0BB |
:1009700090E090938703809386031092A6001092D4 |
:10098000A500E4DB882309F498DC81E388BB00E060 |
:10099000DDDB90E090937900809378008091AF0048 |
:1009A000801769F010926300109262008AEF90E065 |
:1009B000F6D39093B4028093B3020091AF0080917C |
:1009C000780090917900892BF9F4109288001092A8 |
:1009D0006200C601EDD3882311F11092B100439853 |
:1009E00091E09093630082B3877C82BB1BBC1ABCEE |
:1009F00019BC18BC13BC9FBD81E485BD8EE087BBCC |
:100A000088B3817F88BB0BC080916300882319F075 |
:100A100081E0809388008CED95E0C1D36C018091DA |
:100A20006300882321F0109279001092780017DB80 |
:100A3000809162008F5F80936200813009F0A8CFBF |
:100A400080916300882341F08091B2008C3010F4D3 |
:100A5000979A01C0979822D4C701AAD38823A9F1F5 |
:100A600082E390E09CD37C0180917D00482F50E090 |
:100A700020917A0030917B004217530710F48F5F6A |
:100A800004C02417350718F4815080937D00293C59 |
:100A9000310548F080916400982F92959695977053 |
:100AA000891B8093640080917D0090916400893758 |
:100AB00038F0992319F0915090936400AB9A05C0D7 |
:100AC0009F3F19F09F5F90936400CE0171D38823FC |
:100AD00099F08AE090E063D3EC01809189009091D5 |
:100AE0008A0090938C0080938B0010928A00109261 |
:100AF000890081E0809365008091B3029091B402F7 |
:100B000057D3882331F080918B0090918C00892BF2 |
:100B100029F080918800882309F43ACF11E01093DE |
:100B200063001092B100439884E690E038D390932C |
:100B3000B4028093B30280918800882309F428CFFF |
:100B4000AB9810927C00109288008AE004DE882323 |
:100B500009F463C08091B2008C3010F4979A01C000 |
:100B60009798109263008091AF0081508093AF00FE |
:100B700081E090E0909379008093780070DA88B1FA |
:100B80008C7F88B981E08093B10088B18A6088B990 |
:100B900084E190E004D39093B4028093B3028091F7 |
:100BA000B3029091B40204D38823C9F38FE090E09C |
:100BB000909379008093780052DA8CE291E0EFD242 |
:100BC0009093B4028093B3021BC080917A009091FD |
:100BD0007B00CD97A8F082B3877C82BB1BBC1ABC7C |
:100BE00019BC18BC13BC11E01FBD81E485BD8EE0AB |
:100BF00087BB88B3817F88BB8AE04CDB1093880079 |
:100C00008091B3029091B402D3D28823F1F282E3AF |
:100C100090E0C5D2EC0107E0BBCE98DA882309F456 |
:100C2000B7CE10938800B4CE1F920F920FB60F92DA |
:100C300011240F900FBE0F901F9018955E9B24C03B |
:100C400080916F008823E1F48091A0009091A10031 |
:100C500001969093A1008093A000FC01E854FD4F01 |
:100C6000E081ED3019F08436910539F41092A1003D |
:100C70001092A00081E080936F00589AECB908951B |
:100C80001092A1001092A00008951F93CF93DF93BC |
:100C9000EC0170E0A22FB0E0129748C0E42FF0E022 |
:100CA000E25EFC4F30814F5FE42FF0E0E25EFC4FEC |
:100CB00050814F5FE42FF0E0E25EFC4F10814F5F08 |
:100CC000E42FF0E0E25EFC4F20814F5F842F90E044 |
:100CD000A817B90774F15D53FE01E70FF11D852FC9 |
:100CE00082958F703D53330F330F382B3083613033 |
:100CF00001F1912F9D537F5FFE01E70FF11D7150B0 |
:100D00005295507F892F86958695582B5083635036 |
:100D10006F3F79F07E5FFE01E70FF11D9295990F0D |
:100D2000990F907C2D53922B90837F5F662309F05F |
:100D3000B5CFDF91CF911F910895DC0140E050E0E5 |
:100D400020E030E008C0FA01E854FD4F8081280F10 |
:100D5000311D4F5F5F4F4A175B07A9F73F70C9010D |
:100D600036E0969587953A95E1F7835CFD01E85466 |
:100D7000FD4F808311962F73235CFD01E854FD4FD6 |
:100D80002083A754BD4F8DE08C9310926F0080910B |
:100D9000B8028CB908951F93CF93DF93EA01722FA5 |
:100DA00093E29093B8026093B9028093BA02A3E0F1 |
:100DB000B0E060E04FC0FE01E60FF11D90816F5F73 |
:100DC000715019F410E040E00FC0FE01E60FF11D74 |
:100DD00040816F5F715011F410E006C0FE01E60F14 |
:100DE000F11D10816F5F7150892F86958695835C08 |
:100DF000FD01E854FD4F808350E09A0184E0369570 |
:100E000027958A95E1F7892F90E083709070F4E040 |
:100E1000880F991FFA95E1F7282B235CFD01E75411 |
:100E2000FD4F2083812F82958695869583704F7024 |
:100E30005070440F551F440F551F842B835CFD01D8 |
:100E4000E654FD4F80831F73135CFD01E554FD4F95 |
:100E500010831496772309F0AECFCD016EDFDF91BA |
:100E6000CF911F9108951F93182F8A3011F48DE0B0 |
:100E7000FADF5D9BFECF1CB980E090E01F910895E2 |
:100E80001F920F920FB60F9211242F933F934F93FF |
:100E90005F936F937F938F939F93AF93BF93CF9302 |
:100EA000DF93EF93FF938CB18093910040919B006F |
:100EB000443610F010929A00509191005D3009F084 |
:100EC00064C080919A00823009F05FC010929A004D |
:100ED000A42FB0E0FD01E45EFC4F3081ED01C35E64 |
:100EE000DC4F288180919E0090919F00831B910987 |
:100EF000821B91099F7090939F0080939E009C019C |
:100F000096E0369527959A95E1F7235C20939D000E |
:100F1000982F9F73935C90939C008081281709F011 |
:100F20007CC08881981709F078C040939900A25E30 |
:100F3000BC4F5C9380912003823549F488E190E0B6 |
:100F40002CE00FB6F894A89581BD0FBE21BD80910D |
:100F5000200389DF80912003843709F05EC020914F |
:100F6000990043E066E083E990E08FDEE09166005F |
:100F7000F0E0EE56FF4F80818093900084EF91E087 |
:100F8000909383008093820048C080919A008130C2 |
:100F9000D9F0813018F08230F1F521C080919100B4 |
:100FA000833239F480919200882319F481E0809390 |
:100FB0009A008091910080931E0381E080939B00B2 |
:100FC0008091910090E022C082E080939A00E42F0B |
:100FD000F0E080919100E25EFC4F808309C0E42F35 |
:100FE000F0E080919100E25EFC4F8083443620F473 |
:100FF0004F5F40939B0002C010929A002091910095 |
:1010000080919E0090919F00820F911D90939F0070 |
:1010100080939E0002C010929A00FF91EF91DF91A1 |
:10102000CF91BF91AF919F918F917F916F915F9180 |
:101030004F913F912F910F900FBE0F901F901895D9 |
:10104000089580911C0390911D03B2D0882391F0E4 |
:1010500080916F00882371F06091B70222E142E82D |
:1010600053E084E498DE82E390E099D090931D03EE |
:1010700080931C03089588E18AB9599A579A80E1B0 |
:1010800089B960E070E083E397E0C0D388EC90E03A |
:1010900086D090931D0380931C038AE0E4DE82E4F3 |
:1010A000E2DE8CE4E0DE8AE3DEDE86E5DCDE80E3A1 |
:1010B000DADE8EE2D8DE84E3D6DE81E3D4DE8AE0B7 |
:1010C000D2DE88E4D0DE87E5CEDE8AE3CCDE81E3C3 |
:1010D000CADE8EE2C8DE8091B2008A5DC4DE8AE09C |
:1010E000C2DE81E4C0DE84E4BEDE82E5BCDE8AE3EB |
:1010F000BADE80916600805DB6DE08951F920F9281 |
:101100000FB60F9211248F939F93809194038F5F5A |
:10111000809394038091A40081508093A4008F3F1A |
:1011200071F583E08093A4008091A2009091A300C8 |
:1011300001969093A3008093A200809180009091EB |
:101140008100009729F0019790938100809380009F |
:101150008091A800882331F08091A800815080936D |
:10116000A80002C01092A900809182009091830093 |
:10117000009729F0019790938300809382009F91BC |
:101180008F910F900FBE0F901F90189582E083BF34 |
:1011900089B7816089BF89B7806489BF089520912C |
:1011A000A2003091A30021503040820F931F089578 |
:1011B0002091A2003091A300821B930B892F9927C5 |
:1011C000807890E00895AC012091A2003091A300B6 |
:1011D000215030408091A2009091A300B901681B7A |
:1011E000790BCB01840F951F80709078892F9927F8 |
:1011F000882381F3089586EA86B980918D008760FF |
:1012000087B9369A089527B190918D00966097B965 |
:1012100010BE83ED86B9349A97B9369A349BFECFC7 |
:1012200027B984B195B120917A0030917B00A90152 |
:1012300063E0440F551F6A95E1F7421B530B880F7B |
:10124000991F880F991F480F591F83E0569547959E |
:101250008A95E1F750937B0040937A0080917C005F |
:1012600090E08417950710F440937C0016B888E04E |
:1012700080BF089527B190918D00982B97B910BE2B |
:1012800083ED86B9349A97B9369A349BFECF27B945 |
:1012900016B888E080BF84B195B1089586E0EADF92 |
:1012A0009C01220F331F220F331F293C310510F000 |
:1012B00028EC30E030937B0020937A0080917C0012 |
:1012C00090E08217930710F420937C0016B888E012 |
:1012D00080BF08958EB5806C8EBD8EB580648EBD46 |
:1012E00089B7806289BF89B7846089BF08951F92DA |
:1012F0000F920FB60F9211248F938091A7008F5FEA |
:101300008093A7008F910F900FBE0F901F9018959C |
:101310001F920F920FB60F9211242F933F934F936A |
:101320005F938F939F930EB406FE0FC01092A70099 |
:1013300086B597B59093AD008093AC008EB58F7B4A |
:101340008EBD84E68093A80071C08EB580648EBD8A |
:1013500086B597B52091A7004091AC005091AD00A3 |
:10136000841B950B30E0322F2227330F820F931FFF |
:10137000689414F8969587951694E1F79093AB00CE |
:101380008093AA008851914030F488E191E09093D5 |
:10139000AB008093AA004091AA005091AB00485145 |
:1013A00051408091A5009091A6008417950730F4D4 |
:1013B0008091A5009091A60001960CC08091A50097 |
:1013C0009091A6004817590748F48091A500909184 |
:1013D000A60001979093A6008093A5008091A50098 |
:1013E0009091A6009C01220F331F220F331F220F62 |
:1013F000331F281B390B240F351F83E036952795A3 |
:101400008A95E1F73093AB002093AA003093A600B1 |
:101410002093A5008091A9008F3F29F08091A90019 |
:101420008F5F8093A90081E0809365009F918F91E9 |
:101430005F914F913F912F910F900FBE0F901F9092 |
:1014400018951F920F920FB60F9211248F938AB79F |
:101450008F7B8ABF8F910F900FBE0F901F901895B2 |
:1014600090916600990F980F92B985EC86BF089508 |
:101470001F920F920FB60F9211248F939F9381B1F9 |
:1014800090E0887F907080389105C9F0813891058F |
:1014900034F4009791F18036910591F50AC0883BAC |
:1014A0009105B9F0883F910529F1883A910541F5F8 |
:1014B00010C086B7806886BF1092AE0023C083B18B |
:1014C0008093950384EF91E0909381008093800056 |
:1014D0000EC08091AE00882339F480917D0083B9DD |
:1014E00081E08093AE0003C08091640083B986B729 |
:1014F000806807C086B7806986BF86B7806986BF67 |
:1015000085EC86BF9F918F910F900FBE0F901F901B |
:1015100018951F920F920FB60F9211240F900FBEC5 |
:101520000F901F9018958091AF00823069F1833041 |
:1015300030F4882369F0813009F063C017C084302B |
:1015400009F43FC0843068F1853009F05AC04BC0BF |
:1015500081EA8FBD81E685BD88E087BB82B3877D48 |
:1015600082BB949A80918D00826038C081EA8FBDE1 |
:1015700081E685BD88E087BB82B3877E82BB959A72 |
:1015800080918D0081601AC081EA8FBD81E685BDA2 |
:1015900084E087BB82B3877E82BB959A80918D0061 |
:1015A0001DC081EA8FBD81E685BD84E087BB82B323 |
:1015B0008F7C82BB939A80918D00826087B940981E |
:1015C000089581EA8FBD81E685BD82E087BB82B345 |
:1015D0008F7C82BB939A80918D00816087B988B19E |
:1015E000836088B9089581EA8FBD81E685BD82E078 |
:1015F00087BB82B3877D82BB949A80918D0087B927 |
:10160000409808951F920F920FB60F9211241F93C6 |
:101610002F933F934F935F936F937F938F939F93FA |
:10162000AF93BF93EF93FF9388B190E0689414F861 |
:10163000969587951694E1F7182F11708091AF0059 |
:10164000823009F458C0833030F4882371F081303F |
:1016500009F0BEC025C0843009F480C0843008F48D |
:1016600063C0853009F0B4C093C081EA8FBD81E6C4 |
:1016700085BD88E087BB112371F082B3877E82BB72 |
:10168000959A809165008111BEDD409880918D0012 |
:10169000816087B91BC082B3877D82BB949A98C052 |
:1016A00082B3877E82BB959A1123F9F481EA8FBDBC |
:1016B00081E685BD84E087BB809165008111A3DD53 |
:1016C00080918D0087B988B1836088B98091AF001F |
:1016D0008F5F8093AF008091890090918A0001967E |
:1016E00090938A008093890073C081EA8FBD81E660 |
:1016F00085BD88E06CC081EA8FBD81E685BD84E050 |
:1017000087BB112361F082B38F7C82BB939A809157 |
:101710006500811178DD80918D00826031C082B3D7 |
:10172000877E82BB959A54C082B38F7C82BB939A8A |
:10173000112371F481EA8FBD81E685BD82E087BB0C |
:101740008091650081115FDD80918D008160BACF4D |
:1017500081EA8FBD81E685BD84E039C081EA8FBD15 |
:1017600081E685BD82E087BB112369F082B3877D66 |
:1017700082BB949A80916500811145DD80918D0036 |
:1017800087B94098A3CF82B38F7C82BB939A20C045 |
:1017900082B3877D82BB949A1123A1F481EA8FBD25 |
:1017A00081E685BD88E087BB8091650081112BDDD6 |
:1017B00080918D00826087B988B1836088B910926A |
:1017C000AF0089CF81EA8FBD81E685BD82E087BB0E |
:1017D000459903C0112309F027CF459B03C011236E |
:1017E00009F422CF10926500FF91EF91BF91AF9164 |
:1017F0009F918F917F916F915F914F913F912F9129 |
:101800001F910F900FBE0F901F901895EF92FF92AF |
:101810000F931F93CF93DF938C017B01892B11F4DE |
:10182000672BC9F16EE070E081E090E03BD0FC01F5 |
:10183000009789F1DC0180E88383E114F10471F001 |
:10184000F386E28681E883838091960390919703E3 |
:10185000892B21F4F0939703E0939603011511056A |
:10186000E1F01187008783818260838380919803F0 |
:1018700090919903892B89F4F0939903E09398034D |
:1018800080919A0390919B03892B39F4F0939B03E9 |
:10189000E0939A0302C0A0E0B0E0CD01E6E0CDB74E |
:1018A000DEB76DC10F931F93CF93DF93689F8001C5 |
:1018B000699F100D789F100D1124C8010DD0EC0107 |
:1018C000009721F0A80160E070E004D1CE01DF9123 |
:1018D000CF911F910F910895CF93DF93AC010297A1 |
:1018E00010F442E050E0A0919E03B0919F03FD01EF |
:1018F000C0E0D0E020E030E020C0808191818417FA |
:10190000950769F482819381209719F09B838A83DC |
:1019100004C090939F0380939E039F0132C0481799 |
:10192000590738F42115310519F08217930708F487 |
:101930009C01EF010280F381E02D3097F1F6211533 |
:10194000310599F1C901841B950B049708F4A9018D |
:10195000E0E0F0E028C08D919C91119782179307E9 |
:10196000F9F44817590781F4ED018A819B8130977A |
:1019700019F09383828304C090939F0380939E0306 |
:101980009D012E5F3F4F4CC0841B950BFD01E80F5E |
:10199000F91F4193519302978D939C939F0140C0EF |
:1019A000FD01A281B3811097B1F680919C039091C3 |
:1019B0009D03892B41F48091730090917400909362 |
:1019C0009D0380939C032091750030917600211532 |
:1019D000310549F48DB7282F30E080917100909146 |
:1019E0007200281B390BA0919C03B0919D032A1B08 |
:1019F0003B0B2417350790F0CA01029628173907C8 |
:101A000068F09D012E5F3F4FC901840F951F909391 |
:101A10009D0380939C034D935C9302C020E030E0D3 |
:101A2000C901DF91CF910895CF93DF93009709F417 |
:101A30004EC0EC0122971B821A82A0919E03B091A6 |
:101A40009F03109711F140E050E001C0DC01AC179A |
:101A5000BD0700F1BB83AA83FE0121913191E20F02 |
:101A6000F31FEA17FB0771F48D919C911197280FD2 |
:101A7000391F2E5F3F4F39832883FD018281938177 |
:101A80009B838A834115510559F4D0939F03C093DA |
:101A90009E031DC0FD0182819381AD010097B1F6C7 |
:101AA000FA01D383C28321913191E20FF31FEC1726 |
:101AB000FD0769F488819981280F391F2E5F3F4FF8 |
:101AC000FA01318320838A819B8193838283DF9112 |
:101AD000CF910895DC0101C06D9341505040E0F773 |
:101AE0000895991B79E004C0991F961708F0961B7A |
:101AF000881F7A95C9F780950895AA1BBB1B51E1F1 |
:101B000007C0AA1FBB1FA617B70710F0A61BB70B6D |
:101B1000881F991F5A95A9F780959095BC01CD0112 |
:101B20000895A1E21A2EAA1BBB1BFD010DC0AA1F1E |
:101B3000BB1FEE1FFF1FA217B307E407F50720F036 |
:101B4000A21BB30BE40BF50B661F771F881F991FB1 |
:101B50001A9469F760957095809590959B01AC01FA |
:101B6000BD01CF0108952A88398848885F846E8432 |
:101B70007D848C849B84AA84B984C884DF80EE80B1 |
:101B8000FD800C811B81AA81B981CE0FD11D0FB6BA |
:0E1B9000F894DEBF0FBECDBFED010895FFCF6C |
:101B9E000A000101FF010101000000010102020122 |
:081BAE00642000A00300000008 |
:00000001FF |
Property changes: |
Added: svn:mergeinfo |
/branches/V0.41-Hexa/PPM_Decode.c |
---|
0,0 → 1,76 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned int PPM_Signal = 0; |
volatile unsigned char Timer1Overflow = 0; |
volatile unsigned char PPM_Timeout = 0, anz_ppm_werte = 0; // Ungültig, wenn Null |
//############################################################################ |
// |
void InitPPM(void) |
//############################################################################ |
{ |
TCCR1B |= (1<<ICES1)|(1<<ICNC1); |
ICP_POS_FLANKE; |
ICP_INT_ENABLE; |
TIMER1_INT_ENABLE; |
} |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW1) |
//############################################################################ |
{ |
Timer1Overflow++; |
} |
//############################################################################ |
// |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int tim_alt; |
static unsigned int ppm; |
if(TCCR1B & (1<<ICES1)) // Positive Flanke |
{ |
Timer1Overflow = 0; |
tim_alt = ICR1; |
ICP_NEG_FLANKE; |
PPM_Timeout = 100; |
} |
else // Negative Flanke |
{ |
ICP_POS_FLANKE; |
#ifdef _32KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 32; |
#endif |
#ifdef _16KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 32; |
#endif |
if(ppm < 280) ppm = 280; |
ppm -= 280; |
if(PPM_Signal < ppm) PPM_Signal++; |
else if(PPM_Signal > ppm) PPM_Signal--; |
if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern |
PPM_Signal = ppm; |
if(anz_ppm_werte < 255) anz_ppm_werte++; |
ZeitZumAdWandeln = 1; |
} |
} |
//############################################################################ |
// |
SIGNAL(SIG_INTERRUPT0) |
//############################################################################ |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
} |
/branches/V0.41-Hexa/PPM_Decode.h |
---|
0,0 → 1,27 |
/*############################################################################ |
############################################################################*/ |
extern volatile unsigned int PPM_Signal; |
extern volatile unsigned char PPM_Timeout, anz_ppm_werte; |
void InitPPM(void); |
#define INT0_ENABLE GIMSK |= 0x40 |
#define INT0_DISABLE GIMSK &= ~0x40 |
#define TIM0_START TIMSK |= 0x01 |
#define TIM0_STOPP TIMSK &= ~0x01 |
#define ICP_INT_ENABLE TIMSK |= 0x20 |
#define ICP_INT_DISABLE TIMSK &= ~0x20 |
#define TIMER1_INT_ENABLE TIMSK |= 0x04 |
#define TIMER1_INT_DISABLE TIMSK &= ~0x04 |
#define TIMER2_INT_ENABLE TIMSK |= 0x40 |
#define TIMER2_INT_DISABLE TIMSK &= ~0x40 |
#define INT0_POS_FLANKE MCUCR |= 0x01 |
#define INT0_ANY_FLANKE MCUCR |= 0x01 |
#define INT0_NEG_FLANKE MCUCR &= ~0x01 |
#define CLR_INT0_FLAG GIFR &= ~0x40 |
#define INIT_INT0_FLANKE MCUCR &= ~0x03; MCUCR |= 0x02; |
#define TIMER0_PRESCALER TCCR0 |
#define ICP_POS_FLANKE TCCR1B |= (1<<ICES1) |
#define ICP_NEG_FLANKE TCCR1B &= ~(1<<ICES1) |
/branches/V0.41-Hexa/PPM_Decode.lst |
---|
0,0 → 1,275 |
1 .file "PPM_Decode.c" |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __CCP__ = 0x34 |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
15 .Ltext0: |
16 .global InitPPM |
18 InitPPM: |
19 .LFB3: |
20 .LM1: |
21 /* prologue: function */ |
22 /* frame size = 0 */ |
23 .LM2: |
24 0000 8EB5 in r24,78-32 |
25 0002 806C ori r24,lo8(-64) |
26 0004 8EBD out 78-32,r24 |
27 .LM3: |
28 0006 8EB5 in r24,78-32 |
29 0008 8064 ori r24,lo8(64) |
30 000a 8EBD out 78-32,r24 |
31 .LM4: |
32 000c 89B7 in r24,89-32 |
33 000e 8062 ori r24,lo8(32) |
34 0010 89BF out 89-32,r24 |
35 .LM5: |
36 0012 89B7 in r24,89-32 |
37 0014 8460 ori r24,lo8(4) |
38 0016 89BF out 89-32,r24 |
39 /* epilogue start */ |
40 .LM6: |
41 0018 0895 ret |
42 .LFE3: |
44 .global __vector_8 |
46 __vector_8: |
47 .LFB4: |
48 .LM7: |
49 001a 1F92 push __zero_reg__ |
50 001c 0F92 push r0 |
51 001e 0FB6 in r0,__SREG__ |
52 0020 0F92 push r0 |
53 0022 1124 clr __zero_reg__ |
54 0024 8F93 push r24 |
55 /* prologue: Signal */ |
56 /* frame size = 0 */ |
57 .LM8: |
58 0026 8091 0000 lds r24,Timer1Overflow |
59 002a 8F5F subi r24,lo8(-(1)) |
60 002c 8093 0000 sts Timer1Overflow,r24 |
61 /* epilogue start */ |
62 .LM9: |
63 0030 8F91 pop r24 |
64 0032 0F90 pop r0 |
65 0034 0FBE out __SREG__,r0 |
66 0036 0F90 pop r0 |
67 0038 1F90 pop __zero_reg__ |
68 003a 1895 reti |
69 .LFE4: |
71 .global __vector_5 |
73 __vector_5: |
74 .LFB5: |
75 .LM10: |
76 003c 1F92 push __zero_reg__ |
77 003e 0F92 push r0 |
78 0040 0FB6 in r0,__SREG__ |
79 0042 0F92 push r0 |
80 0044 1124 clr __zero_reg__ |
81 0046 2F93 push r18 |
82 0048 3F93 push r19 |
83 004a 4F93 push r20 |
84 004c 5F93 push r21 |
85 004e 8F93 push r24 |
86 0050 9F93 push r25 |
87 /* prologue: Signal */ |
88 /* frame size = 0 */ |
89 .LM11: |
90 0052 0EB4 in __tmp_reg__,78-32 |
91 0054 06FE sbrs __tmp_reg__,6 |
92 0056 00C0 rjmp .L6 |
93 .LM12: |
94 0058 1092 0000 sts Timer1Overflow,__zero_reg__ |
95 .LM13: |
96 005c 86B5 in r24,70-32 |
97 005e 97B5 in r25,(70)+1-32 |
98 0060 9093 0000 sts (tim_alt.1856)+1,r25 |
99 0064 8093 0000 sts tim_alt.1856,r24 |
100 .LM14: |
101 0068 8EB5 in r24,78-32 |
102 006a 8F7B andi r24,lo8(-65) |
103 006c 8EBD out 78-32,r24 |
104 .LM15: |
105 006e 84E6 ldi r24,lo8(100) |
106 0070 8093 0000 sts PPM_Timeout,r24 |
107 0074 00C0 rjmp .L12 |
108 .L6: |
109 .LM16: |
110 0076 8EB5 in r24,78-32 |
111 0078 8064 ori r24,lo8(64) |
112 007a 8EBD out 78-32,r24 |
113 .LM17: |
114 007c 26B5 in r18,70-32 |
115 007e 37B5 in r19,(70)+1-32 |
116 0080 4091 0000 lds r20,Timer1Overflow |
117 0084 8091 0000 lds r24,tim_alt.1856 |
118 0088 9091 0000 lds r25,(tim_alt.1856)+1 |
119 008c 281B sub r18,r24 |
120 008e 390B sbc r19,r25 |
121 0090 942F mov r25,r20 |
122 0092 990F lsl r25 |
123 0094 80E0 ldi r24,lo8(0) |
124 0096 280F add r18,r24 |
125 0098 391F adc r19,r25 |
126 009a 85E0 ldi r24,5 |
127 009c 3695 1: lsr r19 |
128 009e 2795 ror r18 |
129 00a0 8A95 dec r24 |
130 00a2 01F4 brne 1b |
131 00a4 3093 0000 sts (ppm.1857)+1,r19 |
132 00a8 2093 0000 sts ppm.1857,r18 |
133 .LM18: |
134 00ac 2851 subi r18,lo8(280) |
135 00ae 3140 sbci r19,hi8(280) |
136 00b0 00F4 brsh .L8 |
137 00b2 88E1 ldi r24,lo8(280) |
138 00b4 91E0 ldi r25,hi8(280) |
139 00b6 9093 0000 sts (ppm.1857)+1,r25 |
140 00ba 8093 0000 sts ppm.1857,r24 |
141 .L8: |
142 .LM19: |
143 00be 4091 0000 lds r20,ppm.1857 |
144 00c2 5091 0000 lds r21,(ppm.1857)+1 |
145 00c6 4851 subi r20,lo8(-(-280)) |
146 00c8 5140 sbci r21,hi8(-(-280)) |
147 .LM20: |
148 00ca 8091 0000 lds r24,PPM_Signal |
149 00ce 9091 0000 lds r25,(PPM_Signal)+1 |
150 00d2 8417 cp r24,r20 |
151 00d4 9507 cpc r25,r21 |
152 00d6 00F4 brsh .L9 |
153 00d8 8091 0000 lds r24,PPM_Signal |
154 00dc 9091 0000 lds r25,(PPM_Signal)+1 |
155 00e0 0196 adiw r24,1 |
156 00e2 00C0 rjmp .L13 |
157 .L9: |
158 .LM21: |
159 00e4 8091 0000 lds r24,PPM_Signal |
160 00e8 9091 0000 lds r25,(PPM_Signal)+1 |
161 00ec 4817 cp r20,r24 |
162 00ee 5907 cpc r21,r25 |
163 00f0 00F4 brsh .L10 |
164 00f2 8091 0000 lds r24,PPM_Signal |
165 00f6 9091 0000 lds r25,(PPM_Signal)+1 |
166 00fa 0197 sbiw r24,1 |
167 .L13: |
168 00fc 9093 0000 sts (PPM_Signal)+1,r25 |
169 0100 8093 0000 sts PPM_Signal,r24 |
170 .L10: |
171 .LM22: |
172 0104 8091 0000 lds r24,PPM_Signal |
173 0108 9091 0000 lds r25,(PPM_Signal)+1 |
174 010c 9C01 movw r18,r24 |
175 010e 220F lsl r18 |
176 0110 331F rol r19 |
177 0112 220F lsl r18 |
178 0114 331F rol r19 |
179 0116 220F lsl r18 |
180 0118 331F rol r19 |
181 011a 281B sub r18,r24 |
182 011c 390B sbc r19,r25 |
183 011e 240F add r18,r20 |
184 0120 351F adc r19,r21 |
185 0122 83E0 ldi r24,3 |
186 0124 3695 1: lsr r19 |
187 0126 2795 ror r18 |
188 0128 8A95 dec r24 |
189 012a 01F4 brne 1b |
190 012c 3093 0000 sts (ppm.1857)+1,r19 |
191 0130 2093 0000 sts ppm.1857,r18 |
192 .LM23: |
193 0134 3093 0000 sts (PPM_Signal)+1,r19 |
194 0138 2093 0000 sts PPM_Signal,r18 |
195 .LM24: |
196 013c 8091 0000 lds r24,anz_ppm_werte |
197 0140 8F3F cpi r24,lo8(-1) |
198 0142 01F0 breq .L11 |
199 0144 8091 0000 lds r24,anz_ppm_werte |
200 0148 8F5F subi r24,lo8(-(1)) |
201 014a 8093 0000 sts anz_ppm_werte,r24 |
202 .L11: |
203 .LM25: |
204 014e 81E0 ldi r24,lo8(1) |
205 0150 8093 0000 sts ZeitZumAdWandeln,r24 |
206 .L12: |
207 /* epilogue start */ |
208 .LM26: |
209 0154 9F91 pop r25 |
210 0156 8F91 pop r24 |
211 0158 5F91 pop r21 |
212 015a 4F91 pop r20 |
213 015c 3F91 pop r19 |
214 015e 2F91 pop r18 |
215 0160 0F90 pop r0 |
216 0162 0FBE out __SREG__,r0 |
217 0164 0F90 pop r0 |
218 0166 1F90 pop __zero_reg__ |
219 0168 1895 reti |
220 .LFE5: |
222 .global __vector_1 |
224 __vector_1: |
225 .LFB6: |
226 .LM27: |
227 016a 1F92 push __zero_reg__ |
228 016c 0F92 push r0 |
229 016e 0FB6 in r0,__SREG__ |
230 0170 0F92 push r0 |
231 0172 1124 clr __zero_reg__ |
232 0174 8F93 push r24 |
233 /* prologue: Signal */ |
234 /* frame size = 0 */ |
235 .LM28: |
236 0176 8AB7 in r24,90-32 |
237 0178 8F7B andi r24,lo8(-65) |
238 017a 8ABF out 90-32,r24 |
239 /* epilogue start */ |
240 .LM29: |
241 017c 8F91 pop r24 |
242 017e 0F90 pop r0 |
243 0180 0FBE out __SREG__,r0 |
244 0182 0F90 pop r0 |
245 0184 1F90 pop __zero_reg__ |
246 0186 1895 reti |
247 .LFE6: |
249 .global PPM_Signal |
250 .global PPM_Signal |
251 .section .bss |
254 PPM_Signal: |
255 0000 0000 .skip 2,0 |
256 .global Timer1Overflow |
257 .global Timer1Overflow |
260 Timer1Overflow: |
261 0002 00 .skip 1,0 |
262 .global PPM_Timeout |
263 .global PPM_Timeout |
266 PPM_Timeout: |
267 0003 00 .skip 1,0 |
268 .global anz_ppm_werte |
269 .global anz_ppm_werte |
272 anz_ppm_werte: |
273 0004 00 .skip 1,0 |
274 .lcomm ppm.1857,2 |
275 .lcomm tim_alt.1856,2 |
324 .Letext0: |
DEFINED SYMBOLS |
*ABS*:00000000 PPM_Decode.c |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:2 *ABS*:0000003f __SREG__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:3 *ABS*:0000003e __SP_H__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:4 *ABS*:0000003d __SP_L__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:5 *ABS*:00000034 __CCP__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:18 .text:00000000 InitPPM |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:46 .text:0000001a __vector_8 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:260 .bss:00000002 Timer1Overflow |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:73 .text:0000003c __vector_5 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:274 .bss:00000007 tim_alt.1856 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:266 .bss:00000003 PPM_Timeout |
.bss:00000005 ppm.1857 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:254 .bss:00000000 PPM_Signal |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:272 .bss:00000004 anz_ppm_werte |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmt1bah.s:224 .text:0000016a __vector_1 |
UNDEFINED SYMBOLS |
ZeitZumAdWandeln |
__do_clear_bss |
/branches/V0.41-Hexa/analog.c |
---|
0,0 → 1,77 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
//############################################################################ |
//Init ADC |
void ADC_Init(void) |
//############################################################################ |
{ |
ADCSRA = 0xA6; // Free Run & 1MHZ |
ADMUX = 7 | IntRef; // Kanal 7 |
ADCSRA |= 0x40; // Start |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void AdConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = 0x06 | IntRef; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = 0x06 | IntRef; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
i = ADCW * 4; |
// if(i > 300) i = 300; |
Strom = (i + Strom * 7) / 8; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
//############################################################################ |
//Strom Analogwerte lesen |
unsigned int MessAD(unsigned char channel) |
//############################################################################ |
{ |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
channel |= IntRef; |
ADMUX = channel; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = channel; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
return(ADCW); |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void FastADConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
i = MessAD(6) * 4; |
// i = ADCW * 4; |
if(i > 200) i = 200; |
Strom = i;//(i + Strom * 1) / 2; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
/branches/V0.41-Hexa/analog.h |
---|
0,0 → 1,6 |
extern void ADC_Init(void); |
extern void GetAnalogWerte(void); |
extern void AdConvert(void); |
extern void FastADConvert(void); |
/branches/V0.41-Hexa/analog.lst |
---|
0,0 → 1,209 |
1 .file "analog.c" |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __CCP__ = 0x34 |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
15 .Ltext0: |
16 .global ADC_Init |
18 ADC_Init: |
19 .LFB3: |
20 .LM1: |
21 /* prologue: function */ |
22 /* frame size = 0 */ |
23 .LM2: |
24 0000 86EA ldi r24,lo8(-90) |
25 0002 86B9 out 38-32,r24 |
26 .LM3: |
27 0004 8091 0000 lds r24,IntRef |
28 0008 8760 ori r24,lo8(7) |
29 000a 87B9 out 39-32,r24 |
30 .LM4: |
31 000c 369A sbi 38-32,6 |
32 /* epilogue start */ |
33 .LM5: |
34 000e 0895 ret |
35 .LFE3: |
37 .global AdConvert |
39 AdConvert: |
40 .LFB4: |
41 .LM6: |
42 /* prologue: function */ |
43 /* frame size = 0 */ |
44 .LM7: |
45 0010 27B1 in r18,39-32 |
46 .LVL0: |
47 .LM8: |
48 0012 9091 0000 lds r25,IntRef |
49 0016 9660 ori r25,lo8(6) |
50 0018 97B9 out 39-32,r25 |
51 .LM9: |
52 001a 10BE out 80-32,__zero_reg__ |
53 .LM10: |
54 001c 83ED ldi r24,lo8(-45) |
55 001e 86B9 out 38-32,r24 |
56 .LM11: |
57 0020 349A sbi 38-32,4 |
58 .LM12: |
59 0022 97B9 out 39-32,r25 |
60 .LM13: |
61 0024 369A sbi 38-32,6 |
62 .L4: |
63 .LM14: |
64 0026 349B sbis 38-32,4 |
65 0028 00C0 rjmp .L4 |
66 .LM15: |
67 002a 27B9 out 39-32,r18 |
68 .LM16: |
69 002c 84B1 in r24,36-32 |
70 002e 95B1 in r25,(36)+1-32 |
71 .LM17: |
72 0030 2091 0000 lds r18,Strom |
73 0034 3091 0000 lds r19,(Strom)+1 |
74 .LVL1: |
75 0038 A901 movw r20,r18 |
76 .LVL2: |
77 003a 63E0 ldi r22,3 |
78 003c 440F 1: lsl r20 |
79 003e 551F rol r21 |
80 0040 6A95 dec r22 |
81 0042 01F4 brne 1b |
82 0044 421B sub r20,r18 |
83 0046 530B sbc r21,r19 |
84 0048 880F lsl r24 |
85 004a 991F rol r25 |
86 004c 880F lsl r24 |
87 004e 991F rol r25 |
88 0050 480F add r20,r24 |
89 0052 591F adc r21,r25 |
90 0054 83E0 ldi r24,3 |
91 0056 5695 1: lsr r21 |
92 0058 4795 ror r20 |
93 005a 8A95 dec r24 |
94 005c 01F4 brne 1b |
95 005e 5093 0000 sts (Strom)+1,r21 |
96 0062 4093 0000 sts Strom,r20 |
97 .LM18: |
98 0066 8091 0000 lds r24,Strom_max |
99 006a 90E0 ldi r25,lo8(0) |
100 006c 8417 cp r24,r20 |
101 006e 9507 cpc r25,r21 |
102 0070 00F4 brsh .L5 |
103 0072 4093 0000 sts Strom_max,r20 |
104 .L5: |
105 .LM19: |
106 0076 16B8 out 38-32,__zero_reg__ |
107 .LM20: |
108 0078 88E0 ldi r24,lo8(8) |
109 007a 80BF out 80-32,r24 |
110 /* epilogue start */ |
111 .LM21: |
112 007c 0895 ret |
113 .LFE4: |
115 .global MessAD |
117 MessAD: |
118 .LFB5: |
119 .LM22: |
120 .LVL3: |
121 /* prologue: function */ |
122 /* frame size = 0 */ |
123 .LM23: |
124 007e 27B1 in r18,39-32 |
125 .LVL4: |
126 .LM24: |
127 0080 9091 0000 lds r25,IntRef |
128 .LVL5: |
129 0084 982B or r25,r24 |
130 .LM25: |
131 0086 97B9 out 39-32,r25 |
132 .LM26: |
133 0088 10BE out 80-32,__zero_reg__ |
134 .LM27: |
135 008a 83ED ldi r24,lo8(-45) |
136 008c 86B9 out 38-32,r24 |
137 .LM28: |
138 008e 349A sbi 38-32,4 |
139 .LM29: |
140 0090 97B9 out 39-32,r25 |
141 .LM30: |
142 0092 369A sbi 38-32,6 |
143 .L9: |
144 .LM31: |
145 0094 349B sbis 38-32,4 |
146 0096 00C0 rjmp .L9 |
147 .LM32: |
148 0098 27B9 out 39-32,r18 |
149 .LM33: |
150 009a 16B8 out 38-32,__zero_reg__ |
151 .LM34: |
152 009c 88E0 ldi r24,lo8(8) |
153 009e 80BF out 80-32,r24 |
154 .LM35: |
155 00a0 24B1 in r18,36-32 |
156 00a2 35B1 in r19,(36)+1-32 |
157 .LVL6: |
158 .LM36: |
159 00a4 C901 movw r24,r18 |
160 /* epilogue start */ |
161 00a6 0895 ret |
162 .LFE5: |
164 .global FastADConvert |
166 FastADConvert: |
167 .LFB6: |
168 .LM37: |
169 /* prologue: function */ |
170 /* frame size = 0 */ |
171 .LM38: |
172 00a8 86E0 ldi r24,lo8(6) |
173 00aa 00D0 rcall MessAD |
174 00ac 9C01 movw r18,r24 |
175 .LVL7: |
176 00ae 220F lsl r18 |
177 00b0 331F rol r19 |
178 00b2 220F lsl r18 |
179 00b4 331F rol r19 |
180 00b6 293C cpi r18,201 |
181 00b8 3105 cpc r19,__zero_reg__ |
182 00ba 00F0 brlo .L13 |
183 00bc 28EC ldi r18,lo8(200) |
184 00be 30E0 ldi r19,hi8(200) |
185 .L13: |
186 .LM39: |
187 00c0 3093 0000 sts (Strom)+1,r19 |
188 00c4 2093 0000 sts Strom,r18 |
189 .LM40: |
190 00c8 8091 0000 lds r24,Strom_max |
191 00cc 90E0 ldi r25,lo8(0) |
192 00ce 8217 cp r24,r18 |
193 00d0 9307 cpc r25,r19 |
194 00d2 00F4 brsh .L14 |
195 00d4 2093 0000 sts Strom_max,r18 |
196 .L14: |
197 .LM41: |
198 00d8 16B8 out 38-32,__zero_reg__ |
199 .LM42: |
200 00da 88E0 ldi r24,lo8(8) |
201 00dc 80BF out 80-32,r24 |
202 /* epilogue start */ |
203 .LM43: |
204 00de 0895 ret |
205 .LFE6: |
255 .Letext0: |
DEFINED SYMBOLS |
*ABS*:00000000 analog.c |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:2 *ABS*:0000003f __SREG__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:3 *ABS*:0000003e __SP_H__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:4 *ABS*:0000003d __SP_L__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:5 *ABS*:00000034 __CCP__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:18 .text:00000000 ADC_Init |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:39 .text:00000010 AdConvert |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:117 .text:0000007e MessAD |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccJVp2L8.s:166 .text:000000a8 FastADConvert |
UNDEFINED SYMBOLS |
IntRef |
Strom |
Strom_max |
/branches/V0.41-Hexa/avr.mak |
---|
0,0 → 1,129 |
# TASKING EDE (Windows based integrated Embedded Development Environment) |
# |
# This makefile has been generated by TASKING EDE |
# |
# Toolchain: TASKING C for C166/ST10 v6.0 r4 |
# |
BINDIR = c:\c166\bin |
INCDIR = c:\c166\include |
LIBDIR = c:\c166\lib |
M166INC = c:\c166\include |
export M166INC |
CC166BIN = c:\c166\bin |
export CC166BIN |
PROJ = avr |
PROJDIR = c:\winavr\projects\flug\bl_mc_0_14 |
PRODDIR = c:\c166 |
OUTDIR = |
OPT_CC = -Ic:\c166\include -xmifp -Ms -FFSC -Ot -OB -OE -zautobitastruct-4 -zautobita-0 -zswitch_tabmem_default -s -wstrict -g -zvolatile_union -A1 -O1 |
OPT_MPP = DEF(_CPU,167) DEF(_EXT,1) DEF(__XPEN,0) DEF(__WRCFG,0) DEF(__CLKEN,0) DEF(__BYTDIS,0) DEF(__ROMEN,0) DEF(__RDYEN0,0) DEF(__SGTDIS,0) DEF(__STKSZ,0) DEF(__MCTC,1) DEF(__RWDC0,0) DEF(__MTTC0,0) DEF(__ALECTL0,0) DEF(__BUSACT0,1) DEF(__RDYEN0,0) DEF(__CSREN0,0) DEF(__CSWEN0,0) DEF(__BUSACT1,0) DEF(__BUSACT2,0) DEF(__BUSACT3,0) DEF(__BUSACT4,0) DEF(EVA,1) DEF(EX_AB,0) DEF(FLOAT,1) DEF(BIT_INIT,0) DEF(MODEL,SMALL) DEF(_USRSTACK,0) DEF(_SINGLE_FP,0) WA(1) |
OPT_AS = PL(60) PW(132) TA(8) WA(1) CHECKCPU16 CHECKBUS18 EX NOM166 SN(reg167.def) |
OPT_LC = _avr.ilo -cf -Ms -xmifp |
OPT_XVW = --single_instance -tcfg sim167.cfg -i -a 100 -b 200 -c 32 -s 26 |
all : "$(PROJ).abs" |
"uart.src" : "uart.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"uart.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "uart.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"uart.obj" : "uart.src" |
"c:\c166\bin\a166.exe" "uart.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"analog.src" : "analog.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"analog.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "analog.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"analog.obj" : "analog.src" |
"c:\c166\bin\a166.exe" "analog.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"interrupt4.src" : "interrupt4.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"interrupt4.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "interrupt4.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"interrupt4.obj" : "interrupt4.src" |
"c:\c166\bin\a166.exe" "interrupt4.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"main.src" : "main.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"main.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "main.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"main.obj" : "main.src" |
"c:\c166\bin\a166.exe" "main.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"ppm_decode.src" : "ppm_decode.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"ppm_decode.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "ppm_decode.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"ppm_decode.obj" : "ppm_decode.src" |
"c:\c166\bin\a166.exe" "ppm_decode.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"printf_p.src" : "printf_p.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"printf_p.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "printf_p.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"printf_p.obj" : "printf_p.src" |
"c:\c166\bin\a166.exe" "printf_p.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"timer0.src" : "timer0.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"timer0.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "timer0.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"timer0.obj" : "timer0.src" |
"c:\c166\bin\a166.exe" "timer0.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"twislave.src" : "twislave.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"twislave.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "twislave.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"twislave.obj" : "twislave.src" |
"c:\c166\bin\a166.exe" "twislave.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"$(PROJ).out" : "uart.obj" "analog.obj" "interrupt4.obj" "main.obj" "ppm_decode.obj" |
"$(PROJ).out" : "printf_p.obj" "timer0.obj" "twislave.obj" "_avr.ilo" |
"c:\c166\bin\cc166.exe" -o $@ -f <<EOF |
${separate "\n" $(match .obj $!) $(match .lno $!) $(match .lib $!) $(OPT_LC)} |
EOF |
"$(PROJ).abs" : "$(PROJ).out" |
"c:\c166\bin\ieee166.exe" $! $@ |
# Copyright (c) 2001 Altium, Ltd. |
# Serial: 979910-094 |
# EDE Version: 2.7 r5 |
/branches/V0.41-Hexa/avr.opm |
---|
0,0 → 1,4 |
-G "C:\WinAVR\Projects\Flug\BL_MC_0_14\" |
-err "avr.err" |
-r |
-f "avr.mak" |
/branches/V0.41-Hexa/avr_ctrl.psp |
---|
0,0 → 1,16 |
;Codewright Project Space File (do not remove or modify this line) |
[State] |
StateWindowFrame=10,18,939,1018,0x43097fca |
ProjSpaceFlags=0x00000000, 1 |
ProjViewSetShow=Abb |
[Project] |
ConfigSetUserWorkspace='' |
ConfigSetUserWorkspaceParser='' |
ConfigSetUserWorkspaceTimeStamp=0 |
ConfigSetUserWorkspaceAutoSync=0 |
[Project.".\avr.pjt"] |
[Project."..\Flight-Ctrl_V0_05\AVR.pjt"] |
/branches/V0.41-Hexa/edit/edit/edit.vcproj |
---|
0,0 → 1,180 |
<?xml version="1.0" encoding="gb2312"?> |
<VisualStudioProject |
ProjectType="Visual C++" |
Version="9.00" |
Name="edit" |
ProjectGUID="{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}" |
RootNamespace="edit" |
TargetFrameworkVersion="196613" |
> |
<Platforms> |
<Platform |
Name="Win32" |
/> |
</Platforms> |
<ToolFiles> |
</ToolFiles> |
<Configurations> |
<Configuration |
Name="Debug|Win32" |
OutputDirectory="$(SolutionDir)$(ConfigurationName)" |
IntermediateDirectory="$(ConfigurationName)" |
ConfigurationType="1" |
CharacterSet="2" |
> |
<Tool |
Name="VCPreBuildEventTool" |
/> |
<Tool |
Name="VCCustomBuildTool" |
/> |
<Tool |
Name="VCXMLDataGeneratorTool" |
/> |
<Tool |
Name="VCWebServiceProxyGeneratorTool" |
/> |
<Tool |
Name="VCMIDLTool" |
/> |
<Tool |
Name="VCCLCompilerTool" |
Optimization="0" |
MinimalRebuild="true" |
BasicRuntimeChecks="3" |
RuntimeLibrary="3" |
WarningLevel="3" |
DebugInformationFormat="4" |
/> |
<Tool |
Name="VCManagedResourceCompilerTool" |
/> |
<Tool |
Name="VCResourceCompilerTool" |
/> |
<Tool |
Name="VCPreLinkEventTool" |
/> |
<Tool |
Name="VCLinkerTool" |
GenerateDebugInformation="true" |
TargetMachine="1" |
/> |
<Tool |
Name="VCALinkTool" |
/> |
<Tool |
Name="VCManifestTool" |
/> |
<Tool |
Name="VCXDCMakeTool" |
/> |
<Tool |
Name="VCBscMakeTool" |
/> |
<Tool |
Name="VCFxCopTool" |
/> |
<Tool |
Name="VCAppVerifierTool" |
/> |
<Tool |
Name="VCPostBuildEventTool" |
/> |
</Configuration> |
<Configuration |
Name="Release|Win32" |
OutputDirectory="$(SolutionDir)$(ConfigurationName)" |
IntermediateDirectory="$(ConfigurationName)" |
ConfigurationType="1" |
CharacterSet="2" |
WholeProgramOptimization="1" |
> |
<Tool |
Name="VCPreBuildEventTool" |
/> |
<Tool |
Name="VCCustomBuildTool" |
/> |
<Tool |
Name="VCXMLDataGeneratorTool" |
/> |
<Tool |
Name="VCWebServiceProxyGeneratorTool" |
/> |
<Tool |
Name="VCMIDLTool" |
/> |
<Tool |
Name="VCCLCompilerTool" |
Optimization="2" |
EnableIntrinsicFunctions="true" |
RuntimeLibrary="2" |
EnableFunctionLevelLinking="true" |
WarningLevel="3" |
DebugInformationFormat="3" |
/> |
<Tool |
Name="VCManagedResourceCompilerTool" |
/> |
<Tool |
Name="VCResourceCompilerTool" |
/> |
<Tool |
Name="VCPreLinkEventTool" |
/> |
<Tool |
Name="VCLinkerTool" |
GenerateDebugInformation="true" |
OptimizeReferences="2" |
EnableCOMDATFolding="2" |
TargetMachine="1" |
/> |
<Tool |
Name="VCALinkTool" |
/> |
<Tool |
Name="VCManifestTool" |
/> |
<Tool |
Name="VCXDCMakeTool" |
/> |
<Tool |
Name="VCBscMakeTool" |
/> |
<Tool |
Name="VCFxCopTool" |
/> |
<Tool |
Name="VCAppVerifierTool" |
/> |
<Tool |
Name="VCPostBuildEventTool" |
/> |
</Configuration> |
</Configurations> |
<References> |
</References> |
<Files> |
<Filter |
Name="Ô´Îļþ" |
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" |
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" |
> |
</Filter> |
<Filter |
Name="Í·Îļþ" |
Filter="h;hpp;hxx;hm;inl;inc;xsd" |
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" |
> |
</Filter> |
<Filter |
Name="×ÊÔ´Îļþ" |
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" |
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" |
> |
</Filter> |
</Files> |
<Globals> |
</Globals> |
</VisualStudioProject> |
/branches/V0.41-Hexa/edit/edit.sln |
---|
0,0 → 1,20 |
|
Microsoft Visual Studio Solution File, Format Version 10.00 |
# Visual Studio 2008 |
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "edit", "edit\edit.vcproj", "{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}" |
EndProject |
Global |
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
Debug|Win32 = Debug|Win32 |
Release|Win32 = Release|Win32 |
EndGlobalSection |
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}.Debug|Win32.ActiveCfg = Debug|Win32 |
{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}.Debug|Win32.Build.0 = Debug|Win32 |
{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}.Release|Win32.ActiveCfg = Release|Win32 |
{FC7A23A7-7DA9-47A5-8DC3-F474203FAEF9}.Release|Win32.Build.0 = Release|Win32 |
EndGlobalSection |
GlobalSection(SolutionProperties) = preSolution |
HideSolutionNode = FALSE |
EndGlobalSection |
EndGlobal |
/branches/V0.41-Hexa/main.c |
---|
0,0 → 1,772 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + Nur für den privaten Gebrauch |
// + Copyright (c) 12.2007 Holger Buss |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, our webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int PWM = 0; |
unsigned int Strom = 0,RuheStrom; //ca. in 0,1A |
unsigned char Strom_max = 0; |
unsigned char Mittelstrom = 0; |
unsigned int Drehzahl = 0; // in 100UPM 60 = 6000 |
unsigned int KommutierDelay = 10; |
unsigned int I2C_Timeout = 0; |
unsigned int SIO_Timeout = 0; |
unsigned int SollDrehzahl = 0; |
unsigned int IstDrehzahl = 0; |
unsigned int DrehZahlTabelle[256];//vorberechnete Werte zur Drehzahlerfassung |
unsigned char ZeitFuerBerechnungen = 1; |
unsigned char MotorAnwerfen = 0; |
unsigned char MotorGestoppt = 1; |
unsigned char MaxPWM = MAX_PWM; |
unsigned int CntKommutierungen = 0; |
unsigned int SIO_Drehzahl = 0; |
unsigned char ZeitZumAdWandeln = 1; |
unsigned char MotorAdresse = 1; |
unsigned char PPM_Betrieb = 1; |
unsigned char HwVersion; |
unsigned char IntRef = 0; |
unsigned int MinUpmPulse; |
//############################################################################ |
// |
void SetPWM(void) |
//############################################################################ |
{ |
unsigned char tmp_pwm; |
tmp_pwm = PWM; |
if(tmp_pwm > MaxPWM) // Strombegrenzung |
{ |
tmp_pwm = MaxPWM; |
PORTC |= ROT; |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
PORTD &= ~0x38; |
PORTC |= ROT; |
DebugOut.Analog[6]++; |
Strom--; |
} |
else |
{ |
#ifdef _32KHZ |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
#ifdef _16KHZ |
//OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
} |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
DebugOut.Analog[4] = OCR2; |
// DebugOut.Analog[5] = PWM; |
} |
//############################################################################ |
// |
void PWM_Init(void) |
//############################################################################ |
{ |
PWM_OFF; |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
/* TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
*/ |
} |
//############################################################################ |
// |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
while((TCNT0 - dauer) & 0x80); |
} |
void RotBlink(unsigned char anz) |
{ |
sei(); // Interrupts ein |
while(anz--) |
{ |
PORTC |= ROT; |
Delay_ms(300); |
PORTC &= ~ROT; |
Delay_ms(300); |
} |
Delay_ms(1000); |
} |
//############################################################################ |
// |
char Anwerfen(unsigned char pwm) |
//############################################################################ |
{ |
unsigned long timer = 300,i; |
DISABLE_SENSE_INT; |
PWM = 5; |
SetPWM(); |
Manuell(); |
// Delay_ms(200); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) |
{ |
FastADConvert(); |
if(Strom > 120) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
} |
PWM = pwm; |
while(1) |
{ |
for(i=0;i<timer; i++) |
{ |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
Wait(100); // warten |
} |
DebugAusgaben(); |
FastADConvert(); |
if(Strom > 60) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
timer-= timer/15+1; |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return(1); } |
Manuell(); |
Phase++; |
Phase %= 6; |
AdConvert(); |
PWM = pwm; |
SetPWM(); |
if(SENSE) |
{ |
PORTD ^= GRUEN; |
} |
} |
} |
/* |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
*/ |
#define TEST_STROMGRENZE 120 |
unsigned char DelayM(unsigned int timer) |
{ |
while(timer--) |
{ |
FastADConvert(); |
if(Strom > (TEST_STROMGRENZE + RuheStrom)) |
{ |
FETS_OFF; |
return(1); |
} |
} |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
{ |
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
asm volatile(""); |
} |
return(0); |
} |
/* |
void ShowSense(void) |
{ |
if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
*/ |
#define HIGH_A_EIN PORTB |= 0x08 |
#define HIGH_B_EIN PORTB |= 0x04 |
#define HIGH_C_EIN PORTB |= 0x02 |
#define LOW_A_EIN PORTD |= 0x08 |
#define LOW_B_EIN PORTD |= 0x10 |
#define LOW_C_EIN PORTD |= 0x20 |
void MotorTon(void) |
//############################################################################ |
{ |
unsigned char ADR_TAB[7] = {0,0,0,1,1,2,2}; |
unsigned int timer = 300,i; |
unsigned int t = 0; |
unsigned char anz = 0,MosfetOkay = 0, grenze = 50; |
PORTC &= ~ROT; |
Delay_ms(300 * ADR_TAB[MotorAdresse]); |
DISABLE_SENSE_INT; |
cli();//Globale Interrupts Ausschalten |
uart_putchar('\n'); |
STEUER_OFF; |
Strom_max = 0; |
DelayM(50); |
RuheStrom = Strom_max; |
// uart_putchar(RuheStrom + 'A'); |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Strom = 0; |
/* |
LOW_B_EIN; |
HIGH_A_EIN; |
if(DelayM(3)) |
{ |
anz = 1; |
uart_putchar('1'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_A_EIN; |
HIGH_B_EIN; |
if(DelayM(3)) |
{ |
anz = 2; |
uart_putchar('2'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_B_EIN; // Low C ein |
HIGH_C_EIN; // High B ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('3'); |
} |
FETS_OFF; |
Delay(1000); |
LOW_A_EIN; // Low A ein; und A gegen C |
HIGH_C_EIN; // High C ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('7'); |
} |
FETS_OFF; |
DelayM(10000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
*/ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ LOW-Mosfets auf Schalten und Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_A_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_A_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;} |
Delay(5); |
} |
Delay(10000); |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_B_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_B_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); FETS_OFF;break;} |
Delay(5); |
} |
Strom = 0; |
Delay(10000); |
for(i=0;i<t;i++) |
{ |
LOW_C_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_C_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); FETS_OFF; break;} |
Delay(5); |
} |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_A; |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
LOW_C_EIN; // Low C ein |
Strom = 0; |
#define TONDAUER 40000 |
#define SOUND_E 1 // 1 |
#define SOUND1_A 300 |
#define SOUND2_A 330 |
#define SOUND3_A 360 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_A_EIN; // Test A |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
FETS_OFF; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Low-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// SENSE_B; |
LOW_A_EIN; // Low A ein |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(0) > 128) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
//++++++++++++++++++++++++++++++++++++ |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(2) > 128) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(1) > 128) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
sei();//Globale Interrupts Einschalten |
// Delay_ms(250 * MotorAdresse); |
/* |
LOW_A_EIN; // Low B ein |
#define SOUND8_A 650 |
for(i=0; i<(TONDAUER / SOUND8_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
PORTB = 0; |
Delay(SOUND8_A); |
} |
*/ |
Delay_ms(300 * (3-ADR_TAB[MotorAdresse])); |
if(!(MosfetOkay & 0x01)) { anz = 1; UDR='A'; } else |
if(!(MosfetOkay & 0x02)) { anz = 2; UDR='B'; } else |
if(!(MosfetOkay & 0x04)) { anz = 3; UDR='C'; } else |
if(!(MosfetOkay & 0x08)) { anz = 4; UDR='a'; } else |
if(!(MosfetOkay & 0x10)) { anz = 5; UDR='b'; } else |
if(!(MosfetOkay & 0x20)) { anz = 6; UDR='c'; } |
// if(anz) Delay_ms(1000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
RotBlink(anz); |
uart_putchar('.'); |
} |
//############################################################################ |
// |
unsigned char SollwertErmittlung(void) |
//############################################################################ |
{ |
static unsigned int sollwert = 0; |
unsigned int ppm; |
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
PPM_Betrieb = 0; |
ICP_INT_DISABLE; |
PORTC &= ~ROT; |
} |
else |
if(anz_ppm_werte > 20) // es gibt gültige PPM-Daten |
{ |
PPM_Betrieb = 1; |
ppm = PPM_Signal; |
if(ppm > 300) ppm = 0; // ungültiges Signal |
if(ppm > 200) ppm = 200; |
if(ppm <= MIN_PPM) sollwert = 0; |
else |
{ |
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM); |
} |
PORTC &= ~ROT; |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
PORTC |= ROT; |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
PPM_Betrieb = 0; |
PORTC &= ~ROT; |
ICP_INT_DISABLE; |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
return(sollwert); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
char altPhase = 0; |
int test = 0; |
unsigned int Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
DDRC = 0x08; |
PORTC = 0x08; |
DDRD = 0x3A; |
PORTD = 0x00; |
DDRB = 0x0E; |
PORTB = 0x31; |
#if (MOTORADRESSE == 0) |
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl |
for(test=0;test<500;test++); |
if(PINB & ADR1) |
{ |
if (PINB & ADR2) MotorAdresse = 1; |
else MotorAdresse = 2; |
} |
else |
{ |
if (PINB & ADR2) MotorAdresse = 3; |
else MotorAdresse = 4; |
} |
HwVersion = 11; |
#else |
MotorAdresse = MOTORADRESSE; |
HwVersion = 10; |
#endif |
if(PIND & 0x80) {HwVersion = 12; IntRef = 0xc0;} |
DDRD = 0xBA; |
UART_Init(); |
Timer0_Init(); |
sei();//Globale Interrupts Einschalten |
// Am Blinken erkennt man die richtige Motoradresse |
/* |
for(test=0;test<5;test++) |
{ |
if(test == MotorAdresse) PORTD |= GRUEN; |
Delay_ms(150); |
PORTD &= ~GRUEN; |
Delay_ms(250); |
} |
Delay_ms(500); |
*/ |
// UART_Init(); // war doppelt |
PWM_Init(); |
InitIC2_Slave(0x50); |
InitPPM(); |
Blink = SetDelay(101); |
Blink2 = SetDelay(102); |
MinUpmPulse = SetDelay(103); |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)) |
{ |
if(SollwertErmittlung()) break; |
} |
GRN_ON; |
PWM = 0; |
SetPWM(); |
SFIOR = 0x08; // Analog Comperator ein |
ADMUX = 1; |
MinUpmPulse = SetDelay(10); |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
if(!SollwertErmittlung()) MotorTon(); |
//MotorTon(); |
PORTB = 0x31; // Pullups wieder einschalten |
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung |
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder |
while (1) |
{ |
//ShowSense(); |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt |
{ |
MotorGestoppt = 0; |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
MinUpmPulse = SetDelay(250); // Timeout, falls ein Motor stehen bleibt |
altPhase = Phase; |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!PWM) // Sollwert == 0 |
{ |
MotorAnwerfen = 0; // kein Startversuch |
ZeitFuerBerechnungen = 0; |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(MotorGestopptTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
STEUER_OFF; |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
MotorGestopptTimer = SetDelay(1500); |
} |
if(MotorGestoppt && !TEST_SCHUB) PWM = 0; |
SetPWM(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
{ |
if(MotorGestoppt) |
{ |
GRN_ON; |
FastADConvert(); |
} |
if(SIO_DEBUG) |
{ |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
} |
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung |
if(CheckDelay(MittelstromTimer)) |
{ |
MittelstromTimer = SetDelay(50); // alle 50ms |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
else if(Mittelstrom > Strom) Mittelstrom--; |
if(Strom > MAX_STROM) MaxPWM -= MaxPWM / 32; |
if((Mittelstrom > LIMIT_STROM))// Strom am Limit? |
{ |
if(MaxPWM) MaxPWM--;// dann die Maximale PWM herunterfahren |
PORTC |= ROT; |
} |
else |
{ |
if(MaxPWM < MAX_PWM) MaxPWM++; |
} |
} |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
{ |
DrehzahlMessTimer = SetDelay(10); |
SIO_Drehzahl = CntKommutierungen;//(6 * CntKommutierungen) / (POLANZAHL / 2); |
CntKommutierungen = 0; |
// if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
} |
#if TEST_SCHUB == 1 |
{ |
if(CheckDelay(TestschubTimer)) |
{ |
TestschubTimer = SetDelay(1500); |
switch(test) |
{ |
case 0: PWM = 50; test++; break; |
case 1: PWM = 130; test++; break; |
case 2: PWM = 60; test++; break; |
case 3: PWM = 140; test++; break; |
case 4: PWM = 150; test = 0; break; |
default: test = 0; |
} |
} |
} |
#endif |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
{ |
MotorGestoppt = 1; |
DISABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
if(MotorAnwerfen) |
{ |
PORTC &= ~ROT; |
Strom_max = 0; |
MotorAnwerfen = 0; |
if(Anwerfen(10)) |
{ |
GRN_ON; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(20); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 15; |
SetPWM(); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) // kurz Durchstarten |
{ |
if(Strom > LIMIT_STROM/2) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
MotorAnwerfen = 1; |
} |
} |
// Drehzahlmessung wieder aufsetzen |
DrehzahlMessTimer = SetDelay(50); |
altPhase = 7; |
} |
else if(SollwertErmittlung()) MotorAnwerfen = 1; |
} |
} |
} // ZeitFuerBerechnungen |
} // while(1) - Hauptschleife |
} |
/branches/V0.41-Hexa/main.elf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/V0.41-Hexa/main.h |
---|
0,0 → 1,143 |
#ifndef _MAIN_H |
#define _MAIN_H |
//#define MOTORADRESSE 0 // Adresse (1-4) 0 = Motoradresse über Lötjumper auf BL-Ctrl V1.1 |
#define MANUELL_PWM 0 // zur manuellen Vorgabe der PWM Werte: 0-255 |
#define TEST_MANUELL 0 // zum Testen der Hardware ohne Kommutierungsdetektion Werte: 0-255 (PWM) |
#define TEST_SCHUB 0 // Erzeugt ein Schubmuster Werte: 0 = normal 1 = Test |
#define POLANZAHL 12 // Anzahl der Pole (Magnete) Wird nur zur Drehzahlausgabe über Debug gebraucht |
#define MAX_PWM 255 |
#define MIN_PWM 3 |
#define MIN_PPM 10 // ab hier (PPM-Signal) schaltet der Regler erst ein |
#define FILTER_PPM 7 // wie stark soll das PPM-Signal gefiltert werden (Werte: 0-30)? |
#define SIO_DEBUG 0 // Testwertausgaben auf der seriellen Schnittstelle |
#define X3D_SIO 0 // serielles Protokoll des X3D (38400Bd) Achtung: dann muss SIO_DEBUG = 0 sein |
#define _16KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define _32KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define FDD6637_IRLR7843 1 // bessere MosFet bestückt? bewirkt höhere Stromgrenzen |
#ifdef _16KHZ |
#if FDD_IRLR == 1 // bessere Fets = mehr Strom zulassen |
#define MAX_STROM 200 // ab ca. 20A PWM ausschalten |
#define LIMIT_STROM 120 // ab ca. 12A PWM begrenzen |
#else |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 65 // ab ca. 6,5A PWM begrenzen |
#endif |
#endif |
#ifdef _32KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 50 // ab ca. 5,0A PWM begrenzen |
#endif |
#define SYSCLK 8000000L //Quarz Frequenz in Hz |
#define GRN_ON {if(HwVersion < 12) PORTD |= GRUEN; else PORTD &= ~GRUEN;} |
#define GRN_OFF {if(HwVersion > 11) PORTD |= GRUEN; else PORTD &= ~GRUEN;} |
//Robbe Roxxy 2824-34 mit Todd 10x4,5 bei 16kHz |
//PWM Strom Schub |
//10 0,18A 21g |
//20 0,30A 38g |
//30 0,40A 49g |
//40 0,54A 60g |
//50 0,70A 83g |
//60 0,95A 102g |
//70 1,25A 128g |
//80 1,50A 151g |
//90 1,83A 175g |
//100 2,25A 206g |
//110 2,66A 228g |
//120 3,10A 257g |
//130 3,55A 278g |
//140 4,00A 305g |
//150 4,50A 330g |
//160 5,30A 355g |
//170 5,85A 387g |
//180 6,40A 400g |
//190 7,10A 425g |
//200 7,60A 460g |
//0,5A 63g 14% |
//1,0A 110g 24% |
//1,5A 170g 32% |
//2,0A 195g 37% |
//2,5A 230g 41% |
//3,0A 260g 46% |
//3,5A 290g 50% |
//4,0A 310g 53% |
//4,5A 340g 58% |
//5,0A 360g 63% |
//5,5A 380g 67% |
//6,0A 400g 68% |
//6,5A 420g 70% |
//7,0A 450g 75% |
//7,5A 460g 78% |
//8,0A 475g 82% |
//9,0A 550g 86% |
//11 A 600g 100% |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "twislave.h" |
#include "old_macros.h" |
#include "analog.h" |
#include "uart.h" |
#include "timer0.h" |
#include "BLMC.h" |
#include "PPM_Decode.h" |
extern unsigned int I2C_Timeout; |
extern unsigned int SIO_Timeout; |
extern unsigned int PWM; |
extern unsigned int Strom; //ca. in 0,1A |
extern unsigned char Strom_max; |
extern unsigned char Mittelstrom; |
extern unsigned int CntKommutierungen; |
extern unsigned char MotorAnwerfen; |
extern unsigned char MotorGestoppt; |
extern unsigned char ZeitZumAdWandeln; |
extern unsigned char MaxPWM; |
extern unsigned char MotorAdresse; |
extern unsigned char PPM_Betrieb; |
extern unsigned char HwVersion; |
extern unsigned char IntRef; |
extern unsigned int MessAD(unsigned char channel); |
#define ROT 0x08 |
#define GRUEN 0x80 |
#define ADR1 0x40 // für Motoradresswahl |
#define ADR2 0x80 // |
#if defined(__AVR_ATmega8__) |
# define OC1 PB1 |
# define DDROC DDRB |
# define OCR OCR1A |
# define PWM10 WGM10 |
# define PWM11 WGM11 |
#endif |
#endif //_MAIN_H |
/branches/V0.41-Hexa/main.lss |
---|
0,0 → 1,4534 |
main.elf: file format elf32-avr |
Sections: |
Idx Name Size VMA LMA File off Algn |
0 .text 00001bec 00000000 00000000 00000094 2**0 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
1 .data 00000024 00800060 00001bec 00001c80 2**0 |
CONTENTS, ALLOC, LOAD, DATA |
2 .bss 00000156 00800084 00800084 00001ca4 2**0 |
ALLOC |
3 .noinit 00000000 008001da 008001da 00001ca4 2**0 |
CONTENTS |
4 .eeprom 00000000 00810000 00810000 00001ca4 2**0 |
CONTENTS |
5 .stab 0000036c 00000000 00000000 00001ca4 2**2 |
CONTENTS, READONLY, DEBUGGING |
6 .stabstr 00000084 00000000 00000000 00002010 2**0 |
CONTENTS, READONLY, DEBUGGING |
7 .debug_aranges 000000b4 00000000 00000000 00002094 2**0 |
CONTENTS, READONLY, DEBUGGING |
8 .debug_pubnames 000006f5 00000000 00000000 00002148 2**0 |
CONTENTS, READONLY, DEBUGGING |
9 .debug_info 00001a41 00000000 00000000 0000283d 2**0 |
CONTENTS, READONLY, DEBUGGING |
10 .debug_abbrev 00000774 00000000 00000000 0000427e 2**0 |
CONTENTS, READONLY, DEBUGGING |
11 .debug_line 0000169d 00000000 00000000 000049f2 2**0 |
CONTENTS, READONLY, DEBUGGING |
12 .debug_str 00000874 00000000 00000000 0000608f 2**0 |
CONTENTS, READONLY, DEBUGGING |
Disassembly of section .text: |
00000000 <__vectors>: |
0: 0c 94 85 00 jmp 0x10a <__init> |
4: 0c 94 7e 0b jmp 0x16fc <__vector_1> |
8: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
10: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
14: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
18: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
1c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
20: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
24: 0c 94 67 09 jmp 0x12ce <__vector_9> |
28: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
2c: 0c 94 96 0b jmp 0x172c <__vector_11> |
30: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
34: 0c 94 18 02 jmp 0x430 <__vector_13> |
38: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
3c: 0c 94 e3 01 jmp 0x3c6 <__vector_15> |
40: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
44: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
48: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
4c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
50: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
00000054 <__ctors_end>: |
54: 20 2d mov r18, r0 |
56: 2d 20 and r2, r13 |
58: 52 65 ori r21, 0x52 ; 82 |
5a: 6d 6f ori r22, 0xFD ; 253 |
5c: 74 65 ori r23, 0x54 ; 84 |
5e: 20 20 and r2, r0 |
60: 2d 2d mov r18, r13 |
62: 20 20 and r2, r0 |
64: 20 20 and r2, r0 |
66: 20 20 and r2, r0 |
... |
00000069 <__c.1>: |
69: 20 2d 2d 20 44 69 73 70 6c 61 79 20 2d 2d 20 20 -- Display -- |
79: 20 20 20 20 00 . |
0000007e <__c.2>: |
7e: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |
8e: 20 20 20 20 00 . |
00000093 <__c.3>: |
93: 20 20 77 77 77 2e 4d 69 63 72 6f 53 50 53 2e 63 www.MicroSPS.c |
a3: 6f 6d 20 20 00 om . |
000000a8 <__c.2>: |
a8: 25 73 00 %s. |
000000ab <__c.3>: |
ab: 25 73 00 %s. |
000000ae <__c.4>: |
ae: 25 73 00 %s. |
000000b1 <__c.5>: |
b1: 25 73 00 %s. |
000000b4 <__c.3>: |
b4: 56 65 72 62 69 6e 64 65 6e 20 6d 69 74 00 Verbinden mit. |
000000c2 <__c.4>: |
c2: 4d 69 63 72 6f 53 50 53 3a 25 32 69 20 00 MicroSPS:%2i . |
000000d0 <__c.5>: |
d0: 4d 61 78 20 41 64 72 65 73 73 65 00 Max Adresse. |
000000dc <__c.6>: |
dc: 25 32 69 20 00 %2i . |
000000e1 <__c.7>: |
e1: 43 68 65 63 6b 73 75 6d 00 Checksum. |
000000ea <__c.8>: |
ea: 45 72 72 6f 72 73 3a 25 35 69 20 00 Errors:%5i . |
000000f6 <__c.9>: |
f6: 44 69 73 70 6c 61 79 00 Display. |
000000fe <__c.10>: |
fe: 5a 65 69 6c 65 6e 3a 25 31 69 20 00 Zeilen:%1i . |
0000010a <__init>: |
10a: 11 24 eor r1, r1 |
10c: 1f be out 0x3f, r1 ; 63 |
10e: cf e5 ldi r28, 0x5F ; 95 |
110: d8 e0 ldi r29, 0x08 ; 8 |
112: de bf out 0x3e, r29 ; 62 |
114: cd bf out 0x3d, r28 ; 61 |
00000116 <__do_copy_data>: |
116: 10 e0 ldi r17, 0x00 ; 0 |
118: a0 e6 ldi r26, 0x60 ; 96 |
11a: b0 e0 ldi r27, 0x00 ; 0 |
11c: ec ee ldi r30, 0xEC ; 236 |
11e: fb e1 ldi r31, 0x1B ; 27 |
120: 02 c0 rjmp .+4 ; 0x126 <.do_copy_data_start> |
00000122 <.do_copy_data_loop>: |
122: 05 90 lpm r0, Z+ |
124: 0d 92 st X+, r0 |
00000126 <.do_copy_data_start>: |
126: a4 38 cpi r26, 0x84 ; 132 |
128: b1 07 cpc r27, r17 |
12a: d9 f7 brne .-10 ; 0x122 <.do_copy_data_loop> |
0000012c <__do_clear_bss>: |
12c: 11 e0 ldi r17, 0x01 ; 1 |
12e: a4 e8 ldi r26, 0x84 ; 132 |
130: b0 e0 ldi r27, 0x00 ; 0 |
132: 01 c0 rjmp .+2 ; 0x136 <.do_clear_bss_start> |
00000134 <.do_clear_bss_loop>: |
134: 1d 92 st X+, r1 |
00000136 <.do_clear_bss_start>: |
136: aa 3d cpi r26, 0xDA ; 218 |
138: b1 07 cpc r27, r17 |
13a: e1 f7 brne .-8 ; 0x134 <.do_clear_bss_loop> |
13c: 0c 94 e5 00 jmp 0x1ca <main> |
00000140 <__bad_interrupt>: |
140: 0c 94 00 00 jmp 0x0 <__vectors> |
00000144 <Sekundentakt_Init>: |
unsigned int IntervallDebug = 250, IntervallDisplay = 120; |
void Sekundentakt_Init(void) |
{ |
_SekTimer = SetDelay(1000); |
144: 88 ee ldi r24, 0xE8 ; 232 |
146: 93 e0 ldi r25, 0x03 ; 3 |
148: 0e 94 a8 09 call 0x1350 <SetDelay> |
14c: 90 93 91 00 sts 0x0091, r25 |
150: 80 93 90 00 sts 0x0090, r24 |
154: 08 95 ret |
00000156 <Sekundentakt>: |
} |
void Sekundentakt(void) |
{ |
if(CheckDelay(_SekTimer)) |
156: 80 91 90 00 lds r24, 0x0090 |
15a: 90 91 91 00 lds r25, 0x0091 |
15e: 0e 94 b1 09 call 0x1362 <CheckDelay> |
162: 88 23 and r24, r24 |
164: 31 f1 breq .+76 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
GetKeyboard(); |
166: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
_SekTimer += 1000; |
16a: 80 91 90 00 lds r24, 0x0090 |
16e: 90 91 91 00 lds r25, 0x0091 |
172: 88 51 subi r24, 0x18 ; 24 |
174: 9c 4f sbci r25, 0xFC ; 252 |
176: 90 93 91 00 sts 0x0091, r25 |
17a: 80 93 90 00 sts 0x0090, r24 |
if(!CntDatensaetzeProSekunde) UebertragungUnterbrochen = 1; else UebertragungUnterbrochen = 0; |
17e: 80 91 66 00 lds r24, 0x0066 |
182: 88 23 and r24, r24 |
184: 21 f4 brne .+8 ; 0x18e <Sekundentakt+0x38> |
186: 81 e0 ldi r24, 0x01 ; 1 |
188: 80 93 84 00 sts 0x0084, r24 |
18c: 02 c0 rjmp .+4 ; 0x192 <Sekundentakt+0x3c> |
18e: 10 92 84 00 sts 0x0084, r1 |
CntDatensaetzeProSekunde = 0; |
192: 10 92 66 00 sts 0x0066, r1 |
if(++Sekunde == 60) |
196: 80 91 8d 00 lds r24, 0x008D |
19a: 8f 5f subi r24, 0xFF ; 255 |
19c: 80 93 8d 00 sts 0x008D, r24 |
1a0: 8c 33 cpi r24, 0x3C ; 60 |
1a2: 39 f4 brne .+14 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
Sekunde = 0; |
1a4: 10 92 8d 00 sts 0x008D, r1 |
Minute++; |
1a8: 80 91 8c 00 lds r24, 0x008C |
1ac: 8f 5f subi r24, 0xFF ; 255 |
1ae: 80 93 8c 00 sts 0x008C, r24 |
1b2: 08 95 ret |
000001b4 <Init>: |
} |
} |
} |
void Init(void) |
{ |
VersionInfo.Hauptversion = 0; |
1b4: 10 92 c9 00 sts 0x00C9, r1 |
VersionInfo.Nebenversion = 99; |
1b8: 83 e6 ldi r24, 0x63 ; 99 |
1ba: 80 93 ca 00 sts 0x00CA, r24 |
VersionInfo.PCKompatibel = 1; |
1be: 81 e0 ldi r24, 0x01 ; 1 |
1c0: 80 93 cb 00 sts 0x00CB, r24 |
VersionInfo.Commercial = 0x00; |
1c4: 10 92 cc 00 sts 0x00CC, r1 |
1c8: 08 95 ret |
000001ca <main>: |
} |
#define MENU 0 |
#define REMOTE 1 |
//############################################################################ |
//Hauptprogramm |
void main (void) |
//############################################################################ |
{ |
1ca: ca e5 ldi r28, 0x5A ; 90 |
1cc: d8 e0 ldi r29, 0x08 ; 8 |
1ce: de bf out 0x3e, r29 ; 62 |
1d0: cd bf out 0x3d, r28 ; 61 |
char z,txt[]= {"Moin"},key,key_old = 255; |
1d2: de 01 movw r26, r28 |
1d4: 11 96 adiw r26, 0x01 ; 1 |
1d6: e7 e6 ldi r30, 0x67 ; 103 |
1d8: f0 e0 ldi r31, 0x00 ; 0 |
1da: 85 e0 ldi r24, 0x05 ; 5 |
1dc: 01 90 ld r0, Z+ |
1de: 0d 92 st X+, r0 |
1e0: 81 50 subi r24, 0x01 ; 1 |
1e2: e1 f7 brne .-8 ; 0x1dc <main+0x12> |
int test = 0; |
unsigned int DelayTast; |
unsigned int DelayDaten,DelayDisplay; |
unsigned char mode = REMOTE; |
1e4: 91 e0 ldi r25, 0x01 ; 1 |
1e6: b9 2e mov r11, r25 |
unsigned char neueDatenuebertragung = 1; |
UART_Init(); |
1e8: 0e 94 cc 04 call 0x998 <UART_Init> |
LCD_Init(); |
1ec: 0e 94 1f 06 call 0xc3e <LCD_Init> |
UART_Init(); |
1f0: 0e 94 cc 04 call 0x998 <UART_Init> |
Timer1_Init(); |
1f4: 0e 94 9e 09 call 0x133c <Timer1_Init> |
Keyboard_Init(); |
1f8: 0e 94 c9 09 call 0x1392 <Keyboard_Init> |
Sekundentakt_Init(); |
1fc: 0e 94 a2 00 call 0x144 <Sekundentakt_Init> |
InitIR(); |
200: 0e 94 67 0b call 0x16ce <InitIR> |
ADC_Init(); |
204: 0e 94 42 0c call 0x1884 <ADC_Init> |
Init(); |
208: 0e 94 da 00 call 0x1b4 <Init> |
sei ();//Globale Interrupts Einschalten |
20c: 78 94 sei |
DDRB = 0xff; |
20e: 8f ef ldi r24, 0xFF ; 255 |
210: 87 bb out 0x17, r24 ; 23 |
PORTB = 0x00; |
212: 18 ba out 0x18, r1 ; 24 |
LCD_Clear; |
214: 81 e0 ldi r24, 0x01 ; 1 |
216: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
21a: 0e 94 c9 05 call 0xb92 <_long_delay> |
/* while(1) |
*/ |
DelayTast = SetDelay(80); |
21e: 80 e5 ldi r24, 0x50 ; 80 |
220: 90 e0 ldi r25, 0x00 ; 0 |
222: 0e 94 a8 09 call 0x1350 <SetDelay> |
226: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
228: 88 ec ldi r24, 0xC8 ; 200 |
22a: 90 e0 ldi r25, 0x00 ; 0 |
22c: 0e 94 a8 09 call 0x1350 <SetDelay> |
230: 8c 01 movw r16, r24 |
DelayDisplay = SetDelay(300); |
232: 8c e2 ldi r24, 0x2C ; 44 |
234: 91 e0 ldi r25, 0x01 ; 1 |
236: 0e 94 a8 09 call 0x1350 <SetDelay> |
23a: 6c 01 movw r12, r24 |
ClearIntervalle(); |
23c: 0e 94 2e 05 call 0xa5c <ClearIntervalle> |
while (1) |
{ |
if(mode == MENU) |
240: bb 20 and r11, r11 |
242: 11 f5 brne .+68 ; 0x288 <main+0xbe> |
{ |
Delay_ms(10); |
244: 8a e0 ldi r24, 0x0A ; 10 |
246: 90 e0 ldi r25, 0x00 ; 0 |
248: 0e 94 bc 09 call 0x1378 <Delay_ms> |
key = GetKeyboard(); |
24c: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
Menu(key); |
250: 99 27 eor r25, r25 |
252: 0e 94 64 0a call 0x14c8 <Menu> |
if(_TASTE5) |
256: cb 9b sbis 0x19, 3 ; 25 |
258: f5 cf rjmp .-22 ; 0x244 <main+0x7a> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
25a: 8a e0 ldi r24, 0x0A ; 10 |
25c: 90 e0 ldi r25, 0x00 ; 0 |
25e: 0e 94 bc 09 call 0x1378 <Delay_ms> |
262: cb 99 sbic 0x19, 3 ; 25 |
264: fa cf rjmp .-12 ; 0x25a <main+0x90> |
mode = REMOTE; |
266: 81 e0 ldi r24, 0x01 ; 1 |
268: b8 2e mov r11, r24 |
DelayTast = SetDelay(100); |
26a: 84 e6 ldi r24, 0x64 ; 100 |
26c: 90 e0 ldi r25, 0x00 ; 0 |
26e: 0e 94 a8 09 call 0x1350 <SetDelay> |
272: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
274: 88 ec ldi r24, 0xC8 ; 200 |
276: 90 e0 ldi r25, 0x00 ; 0 |
278: 0e 94 a8 09 call 0x1350 <SetDelay> |
27c: 8c 01 movw r16, r24 |
LCD_Clear; |
27e: 8b 2d mov r24, r11 |
280: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
284: 0e 94 c9 05 call 0xb92 <_long_delay> |
} |
} |
else |
if(mode == REMOTE) |
288: 81 e0 ldi r24, 0x01 ; 1 |
28a: b8 16 cp r11, r24 |
28c: c9 f6 brne .-78 ; 0x240 <main+0x76> |
{ |
BearbeiteRxDaten(); |
28e: 0e 94 fe 03 call 0x7fc <BearbeiteRxDaten> |
if(CheckDelay(DelayDaten)) |
292: c8 01 movw r24, r16 |
294: 0e 94 b1 09 call 0x1362 <CheckDelay> |
298: 88 23 and r24, r24 |
29a: c9 f3 breq .-14 ; 0x28e <main+0xc4> |
{ |
Sekundentakt(); |
29c: 0e 94 ab 00 call 0x156 <Sekundentakt> |
DelayDaten = SetDelay(10); |
2a0: 8a e0 ldi r24, 0x0A ; 10 |
2a2: 90 e0 ldi r25, 0x00 ; 0 |
2a4: 0e 94 a8 09 call 0x1350 <SetDelay> |
2a8: 8c 01 movw r16, r24 |
if(CheckDelay(DelayDisplay)) |
2aa: c6 01 movw r24, r12 |
2ac: 0e 94 b1 09 call 0x1362 <CheckDelay> |
2b0: 88 23 and r24, r24 |
2b2: 39 f0 breq .+14 ; 0x2c2 <main+0xf8> |
{ |
DelayDisplay = SetDelay(300); |
2b4: 8c e2 ldi r24, 0x2C ; 44 |
2b6: 91 e0 ldi r25, 0x01 ; 1 |
2b8: 0e 94 a8 09 call 0x1350 <SetDelay> |
2bc: 6c 01 movw r12, r24 |
PollDisplay = 1; |
2be: b0 92 ed 00 sts 0x00ED, r11 |
} |
key = GetKeyboard2(); |
2c2: 0e 94 57 0a call 0x14ae <GetKeyboard2> |
DatenUebertragung(key); |
2c6: 99 27 eor r25, r25 |
2c8: 0e 94 51 05 call 0xaa2 <DatenUebertragung> |
if(UebertragungUnterbrochen) |
2cc: 80 91 84 00 lds r24, 0x0084 |
2d0: 88 23 and r24, r24 |
2d2: 81 f1 breq .+96 ; 0x334 <main+0x16a> |
{ |
//01234567890123456789 |
LCD_printfxy(0,0," -- Remote -- "); |
2d4: 60 e0 ldi r22, 0x00 ; 0 |
2d6: 86 2f mov r24, r22 |
2d8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2dc: 84 e5 ldi r24, 0x54 ; 84 |
2de: 90 e0 ldi r25, 0x00 ; 0 |
2e0: 9f 93 push r25 |
2e2: 8f 93 push r24 |
2e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1," -- Display -- "); |
2e8: 61 e0 ldi r22, 0x01 ; 1 |
2ea: 80 e0 ldi r24, 0x00 ; 0 |
2ec: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2f0: 0f 90 pop r0 |
2f2: 0f 90 pop r0 |
2f4: 89 e6 ldi r24, 0x69 ; 105 |
2f6: 90 e0 ldi r25, 0x00 ; 0 |
2f8: 9f 93 push r25 |
2fa: 8f 93 push r24 |
2fc: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,2," "); |
300: 62 e0 ldi r22, 0x02 ; 2 |
302: 80 e0 ldi r24, 0x00 ; 0 |
304: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
308: 0f 90 pop r0 |
30a: 0f 90 pop r0 |
30c: 8e e7 ldi r24, 0x7E ; 126 |
30e: 90 e0 ldi r25, 0x00 ; 0 |
310: 9f 93 push r25 |
312: 8f 93 push r24 |
314: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,3," www.MicroSPS.com "); |
318: 63 e0 ldi r22, 0x03 ; 3 |
31a: 80 e0 ldi r24, 0x00 ; 0 |
31c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
320: 0f 90 pop r0 |
322: 0f 90 pop r0 |
324: 83 e9 ldi r24, 0x93 ; 147 |
326: 90 e0 ldi r25, 0x00 ; 0 |
328: 9f 93 push r25 |
32a: 8f 93 push r24 |
32c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
330: 0f 90 pop r0 |
332: 0f 90 pop r0 |
} |
if(CheckDelay(DelayTast)) |
334: c7 01 movw r24, r14 |
336: 0e 94 b1 09 call 0x1362 <CheckDelay> |
33a: 88 23 and r24, r24 |
33c: 09 f4 brne .+2 ; 0x340 <main+0x176> |
33e: a7 cf rjmp .-178 ; 0x28e <main+0xc4> |
{ |
DelayTast = SetDelay(100); |
340: 84 e6 ldi r24, 0x64 ; 100 |
342: 90 e0 ldi r25, 0x00 ; 0 |
344: 0e 94 a8 09 call 0x1350 <SetDelay> |
348: 7c 01 movw r14, r24 |
if(_TASTE5) |
34a: cb 9b sbis 0x19, 3 ; 25 |
34c: 0c c0 rjmp .+24 ; 0x366 <main+0x19c> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
34e: 8a e0 ldi r24, 0x0A ; 10 |
350: 90 e0 ldi r25, 0x00 ; 0 |
352: 0e 94 bc 09 call 0x1378 <Delay_ms> |
356: cb 99 sbic 0x19, 3 ; 25 |
358: fa cf rjmp .-12 ; 0x34e <main+0x184> |
mode = MENU; |
35a: bb 24 eor r11, r11 |
LCD_Clear; |
35c: 81 e0 ldi r24, 0x01 ; 1 |
35e: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
362: 0e 94 c9 05 call 0xb92 <_long_delay> |
366: 80 91 be 00 lds r24, 0x00BE |
} |
// if(key & 0x10) DebugIn.Digital[0] |= 0x01; else DebugIn.Digital[0] &= ~0x01; |
if(PIND & 0x08) DebugIn.Digital[0] |= 0x02; else DebugIn.Digital[0] &= ~0x02; |
36a: 83 9b sbis 0x10, 3 ; 16 |
36c: 02 c0 rjmp .+4 ; 0x372 <main+0x1a8> |
36e: 82 60 ori r24, 0x02 ; 2 |
370: 01 c0 rjmp .+2 ; 0x374 <main+0x1aa> |
372: 8d 7f andi r24, 0xFD ; 253 |
374: 80 93 be 00 sts 0x00BE, r24 |
378: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x10) DebugIn.Digital[0] |= 0x04; else DebugIn.Digital[0] &= ~0x04; |
37c: 84 9b sbis 0x10, 4 ; 16 |
37e: 02 c0 rjmp .+4 ; 0x384 <main+0x1ba> |
380: 84 60 ori r24, 0x04 ; 4 |
382: 01 c0 rjmp .+2 ; 0x386 <main+0x1bc> |
384: 8b 7f andi r24, 0xFB ; 251 |
386: 80 93 be 00 sts 0x00BE, r24 |
38a: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x20) DebugIn.Digital[0] |= 0x08; else DebugIn.Digital[0] &= ~0x08; |
38e: 85 9b sbis 0x10, 5 ; 16 |
390: 02 c0 rjmp .+4 ; 0x396 <main+0x1cc> |
392: 88 60 ori r24, 0x08 ; 8 |
394: 01 c0 rjmp .+2 ; 0x398 <main+0x1ce> |
396: 87 7f andi r24, 0xF7 ; 247 |
398: 80 93 be 00 sts 0x00BE, r24 |
39c: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x40) DebugIn.Digital[0] |= 0x10; else DebugIn.Digital[0] &= ~0x10; |
3a0: 86 9b sbis 0x10, 6 ; 16 |
3a2: 02 c0 rjmp .+4 ; 0x3a8 <main+0x1de> |
3a4: 80 61 ori r24, 0x10 ; 16 |
3a6: 01 c0 rjmp .+2 ; 0x3aa <main+0x1e0> |
3a8: 8f 7e andi r24, 0xEF ; 239 |
3aa: 80 93 be 00 sts 0x00BE, r24 |
3ae: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x80) DebugIn.Digital[0] |= 0x20; else DebugIn.Digital[0] &= ~0x20; |
3b2: 87 9b sbis 0x10, 7 ; 16 |
3b4: 02 c0 rjmp .+4 ; 0x3ba <main+0x1f0> |
3b6: 80 62 ori r24, 0x20 ; 32 |
3b8: 01 c0 rjmp .+2 ; 0x3bc <main+0x1f2> |
3ba: 8f 7d andi r24, 0xDF ; 223 |
3bc: 80 93 be 00 sts 0x00BE, r24 |
GetAnalogWerte(); |
3c0: 0e 94 4e 0c call 0x189c <GetAnalogWerte> |
3c4: 3d cf rjmp .-390 ; 0x240 <main+0x76> |
000003c6 <__vector_15>: |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
3c6: 1f 92 push r1 |
3c8: 0f 92 push r0 |
3ca: 0f b6 in r0, 0x3f ; 63 |
3cc: 0f 92 push r0 |
3ce: 11 24 eor r1, r1 |
3d0: 8f 93 push r24 |
3d2: 9f 93 push r25 |
3d4: ef 93 push r30 |
3d6: ff 93 push r31 |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
3d8: 80 91 6e 00 lds r24, 0x006E |
3dc: 88 23 and r24, r24 |
3de: d9 f4 brne .+54 ; 0x416 <__vector_15+0x50> |
{ |
ptr++; // die [0] wurde schon gesendet |
3e0: 80 91 9d 00 lds r24, 0x009D |
3e4: 90 91 9e 00 lds r25, 0x009E |
3e8: 01 96 adiw r24, 0x01 ; 1 |
3ea: 90 93 9e 00 sts 0x009E, r25 |
3ee: 80 93 9d 00 sts 0x009D, r24 |
tmp_tx = SendeBuffer[ptr]; |
3f2: fc 01 movw r30, r24 |
3f4: e2 51 subi r30, 0x12 ; 18 |
3f6: ff 4f sbci r31, 0xFF ; 255 |
3f8: e0 81 ld r30, Z |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
3fa: ed 30 cpi r30, 0x0D ; 13 |
3fc: 19 f0 breq .+6 ; 0x404 <__vector_15+0x3e> |
3fe: 84 36 cpi r24, 0x64 ; 100 |
400: 91 05 cpc r25, r1 |
402: 39 f4 brne .+14 ; 0x412 <__vector_15+0x4c> |
{ |
ptr = 0; |
404: 10 92 9e 00 sts 0x009E, r1 |
408: 10 92 9d 00 sts 0x009D, r1 |
UebertragungAbgeschlossen = 1; |
40c: 81 e0 ldi r24, 0x01 ; 1 |
40e: 80 93 6e 00 sts 0x006E, r24 |
} |
UDR = tmp_tx; |
412: ec b9 out 0x0c, r30 ; 12 |
414: 04 c0 rjmp .+8 ; 0x41e <__vector_15+0x58> |
} |
else ptr = 0; |
416: 10 92 9e 00 sts 0x009E, r1 |
41a: 10 92 9d 00 sts 0x009D, r1 |
41e: ff 91 pop r31 |
420: ef 91 pop r30 |
422: 9f 91 pop r25 |
424: 8f 91 pop r24 |
426: 0f 90 pop r0 |
428: 0f be out 0x3f, r0 ; 63 |
42a: 0f 90 pop r0 |
42c: 1f 90 pop r1 |
42e: 18 95 reti |
00000430 <__vector_13>: |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
430: 1f 92 push r1 |
432: 0f 92 push r0 |
434: 0f b6 in r0, 0x3f ; 63 |
436: 0f 92 push r0 |
438: 11 24 eor r1, r1 |
43a: 2f 93 push r18 |
43c: 3f 93 push r19 |
43e: 4f 93 push r20 |
440: 5f 93 push r21 |
442: 8f 93 push r24 |
444: 9f 93 push r25 |
446: af 93 push r26 |
448: bf 93 push r27 |
44a: ef 93 push r30 |
44c: ff 93 push r31 |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
44e: 20 e0 ldi r18, 0x00 ; 0 |
SioTmp = UDR; |
450: 8c b1 in r24, 0x0c ; 12 |
452: 80 93 9c 00 sts 0x009C, r24 |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
456: 50 91 a3 00 lds r21, 0x00A3 |
45a: 54 36 cpi r21, 0x64 ; 100 |
45c: 10 f0 brcs .+4 ; 0x462 <__vector_13+0x32> |
45e: 20 93 a4 00 sts 0x00A4, r18 |
if(SioTmp == '\r' && UartState == 2) |
462: 80 91 9c 00 lds r24, 0x009C |
466: 8d 30 cpi r24, 0x0D ; 13 |
468: 09 f0 breq .+2 ; 0x46c <__vector_13+0x3c> |
46a: 5b c0 rjmp .+182 ; 0x522 <__vector_13+0xf2> |
46c: 80 91 a4 00 lds r24, 0x00A4 |
470: 82 30 cpi r24, 0x02 ; 2 |
472: 09 f0 breq .+2 ; 0x476 <__vector_13+0x46> |
474: 56 c0 rjmp .+172 ; 0x522 <__vector_13+0xf2> |
{ |
UartState = 0; |
476: 20 93 a4 00 sts 0x00A4, r18 |
crc -= RxdBuffer[buf_ptr-2]; |
47a: 85 2f mov r24, r21 |
47c: 99 27 eor r25, r25 |
47e: 8e 5a subi r24, 0xAE ; 174 |
480: 9e 4f sbci r25, 0xFE ; 254 |
482: fc 01 movw r30, r24 |
484: 32 97 sbiw r30, 0x02 ; 2 |
486: 40 81 ld r20, Z |
488: 20 91 9f 00 lds r18, 0x009F |
48c: 30 91 a0 00 lds r19, 0x00A0 |
490: 24 1b sub r18, r20 |
492: 31 09 sbc r19, r1 |
crc -= RxdBuffer[buf_ptr-1]; |
494: dc 01 movw r26, r24 |
496: 11 97 sbiw r26, 0x01 ; 1 |
498: 8c 91 ld r24, X |
49a: 28 1b sub r18, r24 |
49c: 31 09 sbc r19, r1 |
crc %= 4096; |
49e: c9 01 movw r24, r18 |
4a0: 9f 70 andi r25, 0x0F ; 15 |
4a2: 90 93 a0 00 sts 0x00A0, r25 |
4a6: 80 93 9f 00 sts 0x009F, r24 |
crc1 = '=' + crc / 64; |
4aa: 46 e0 ldi r20, 0x06 ; 6 |
4ac: 96 95 lsr r25 |
4ae: 87 95 ror r24 |
4b0: 4a 95 dec r20 |
4b2: e1 f7 brne .-8 ; 0x4ac <__vector_13+0x7c> |
4b4: 98 2f mov r25, r24 |
4b6: 93 5c subi r25, 0xC3 ; 195 |
4b8: 90 93 a1 00 sts 0x00A1, r25 |
crc2 = '=' + crc % 64; |
4bc: 2f 73 andi r18, 0x3F ; 63 |
4be: 30 70 andi r19, 0x00 ; 0 |
4c0: 23 5c subi r18, 0xC3 ; 195 |
4c2: 20 93 a2 00 sts 0x00A2, r18 |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
4c6: 80 81 ld r24, Z |
4c8: 98 17 cp r25, r24 |
4ca: 29 f4 brne .+10 ; 0x4d6 <__vector_13+0xa6> |
4cc: 8c 91 ld r24, X |
4ce: 28 17 cp r18, r24 |
4d0: 11 f4 brne .+4 ; 0x4d6 <__vector_13+0xa6> |
4d2: 21 e0 ldi r18, 0x01 ; 1 |
4d4: 0a c0 rjmp .+20 ; 0x4ea <__vector_13+0xba> |
4d6: 20 e0 ldi r18, 0x00 ; 0 |
4d8: 80 91 99 00 lds r24, 0x0099 |
4dc: 90 91 9a 00 lds r25, 0x009A |
4e0: 01 96 adiw r24, 0x01 ; 1 |
4e2: 90 93 9a 00 sts 0x009A, r25 |
4e6: 80 93 99 00 sts 0x0099, r24 |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
4ea: 80 91 9b 00 lds r24, 0x009B |
4ee: 88 23 and r24, r24 |
4f0: 09 f0 breq .+2 ; 0x4f4 <__vector_13+0xc4> |
4f2: 66 c0 rjmp .+204 ; 0x5c0 <__vector_13+0x190> |
4f4: 22 23 and r18, r18 |
4f6: 09 f4 brne .+2 ; 0x4fa <__vector_13+0xca> |
4f8: 63 c0 rjmp .+198 ; 0x5c0 <__vector_13+0x190> |
{ |
CntDatensaetzeProSekunde++; |
4fa: 80 91 66 00 lds r24, 0x0066 |
4fe: 8f 5f subi r24, 0xFF ; 255 |
500: 80 93 66 00 sts 0x0066, r24 |
PC_DebugTimeout = 10; |
504: 8a e0 ldi r24, 0x0A ; 10 |
506: 80 93 97 00 sts 0x0097, r24 |
NeuerDatensatzEmpfangen = 1; |
50a: 81 e0 ldi r24, 0x01 ; 1 |
50c: 80 93 9b 00 sts 0x009B, r24 |
AnzahlEmpfangsBytes = buf_ptr; |
510: 50 93 98 00 sts 0x0098, r21 |
RxdBuffer[buf_ptr] = '\r'; |
514: e5 2f mov r30, r21 |
516: ff 27 eor r31, r31 |
518: ee 5a subi r30, 0xAE ; 174 |
51a: fe 4f sbci r31, 0xFE ; 254 |
51c: 8d e0 ldi r24, 0x0D ; 13 |
51e: 80 83 st Z, r24 |
520: 4f c0 rjmp .+158 ; 0x5c0 <__vector_13+0x190> |
// if((RxdBuffer[1] == 's') && (RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
522: 20 91 a4 00 lds r18, 0x00A4 |
526: 82 2f mov r24, r18 |
528: 99 27 eor r25, r25 |
52a: 81 30 cpi r24, 0x01 ; 1 |
52c: 91 05 cpc r25, r1 |
52e: f9 f0 breq .+62 ; 0x56e <__vector_13+0x13e> |
530: 82 30 cpi r24, 0x02 ; 2 |
532: 91 05 cpc r25, r1 |
534: 1c f4 brge .+6 ; 0x53c <__vector_13+0x10c> |
536: 89 2b or r24, r25 |
538: 21 f0 breq .+8 ; 0x542 <__vector_13+0x112> |
53a: 40 c0 rjmp .+128 ; 0x5bc <__vector_13+0x18c> |
53c: 02 97 sbiw r24, 0x02 ; 2 |
53e: 11 f1 breq .+68 ; 0x584 <__vector_13+0x154> |
540: 3d c0 rjmp .+122 ; 0x5bc <__vector_13+0x18c> |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
542: 80 91 9c 00 lds r24, 0x009C |
546: 83 32 cpi r24, 0x23 ; 35 |
548: 39 f4 brne .+14 ; 0x558 <__vector_13+0x128> |
54a: 80 91 9b 00 lds r24, 0x009B |
54e: 88 23 and r24, r24 |
550: 19 f4 brne .+6 ; 0x558 <__vector_13+0x128> |
552: 81 e0 ldi r24, 0x01 ; 1 |
554: 80 93 a4 00 sts 0x00A4, r24 |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
558: 80 91 9c 00 lds r24, 0x009C |
55c: 80 93 52 01 sts 0x0152, r24 |
560: 81 e0 ldi r24, 0x01 ; 1 |
562: 80 93 a3 00 sts 0x00A3, r24 |
crc = SioTmp; |
566: 80 91 9c 00 lds r24, 0x009C |
56a: 99 27 eor r25, r25 |
56c: 22 c0 rjmp .+68 ; 0x5b2 <__vector_13+0x182> |
break; |
case 1: // Adresse auswerten |
UartState++; |
56e: 2f 5f subi r18, 0xFF ; 255 |
570: 20 93 a4 00 sts 0x00A4, r18 |
RxdBuffer[buf_ptr++] = SioTmp; |
574: e5 2f mov r30, r21 |
576: ff 27 eor r31, r31 |
578: ee 5a subi r30, 0xAE ; 174 |
57a: fe 4f sbci r31, 0xFE ; 254 |
57c: 80 91 9c 00 lds r24, 0x009C |
580: 80 83 st Z, r24 |
582: 09 c0 rjmp .+18 ; 0x596 <__vector_13+0x166> |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
584: e5 2f mov r30, r21 |
586: ff 27 eor r31, r31 |
588: ee 5a subi r30, 0xAE ; 174 |
58a: fe 4f sbci r31, 0xFE ; 254 |
58c: 80 91 9c 00 lds r24, 0x009C |
590: 80 83 st Z, r24 |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
592: 54 36 cpi r21, 0x64 ; 100 |
594: 20 f4 brcc .+8 ; 0x59e <__vector_13+0x16e> |
596: 5f 5f subi r21, 0xFF ; 255 |
598: 50 93 a3 00 sts 0x00A3, r21 |
59c: 02 c0 rjmp .+4 ; 0x5a2 <__vector_13+0x172> |
else UartState = 0; |
59e: 10 92 a4 00 sts 0x00A4, r1 |
crc += SioTmp; |
5a2: 20 91 9c 00 lds r18, 0x009C |
5a6: 80 91 9f 00 lds r24, 0x009F |
5aa: 90 91 a0 00 lds r25, 0x00A0 |
5ae: 82 0f add r24, r18 |
5b0: 91 1d adc r25, r1 |
5b2: 90 93 a0 00 sts 0x00A0, r25 |
5b6: 80 93 9f 00 sts 0x009F, r24 |
break; |
5ba: 02 c0 rjmp .+4 ; 0x5c0 <__vector_13+0x190> |
default: |
UartState = 0; |
5bc: 10 92 a4 00 sts 0x00A4, r1 |
5c0: ff 91 pop r31 |
5c2: ef 91 pop r30 |
5c4: bf 91 pop r27 |
5c6: af 91 pop r26 |
5c8: 9f 91 pop r25 |
5ca: 8f 91 pop r24 |
5cc: 5f 91 pop r21 |
5ce: 4f 91 pop r20 |
5d0: 3f 91 pop r19 |
5d2: 2f 91 pop r18 |
5d4: 0f 90 pop r0 |
5d6: 0f be out 0x3f, r0 ; 63 |
5d8: 0f 90 pop r0 |
5da: 1f 90 pop r1 |
5dc: 18 95 reti |
000005de <AddCRC>: |
break; |
} |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
5de: ac 01 movw r20, r24 |
unsigned int tmpCRC = 0,i; |
5e0: a0 e0 ldi r26, 0x00 ; 0 |
5e2: b0 e0 ldi r27, 0x00 ; 0 |
for(i = 0; i < wieviele;i++) |
5e4: 9d 01 movw r18, r26 |
5e6: a8 17 cp r26, r24 |
5e8: b9 07 cpc r27, r25 |
5ea: 48 f4 brcc .+18 ; 0x5fe <AddCRC+0x20> |
5ec: ee ee ldi r30, 0xEE ; 238 |
5ee: f0 e0 ldi r31, 0x00 ; 0 |
{ |
tmpCRC += SendeBuffer[i]; |
5f0: 81 91 ld r24, Z+ |
5f2: 28 0f add r18, r24 |
5f4: 31 1d adc r19, r1 |
5f6: 11 96 adiw r26, 0x01 ; 1 |
5f8: a4 17 cp r26, r20 |
5fa: b5 07 cpc r27, r21 |
5fc: c8 f3 brcs .-14 ; 0x5f0 <AddCRC+0x12> |
} |
tmpCRC %= 4096; |
5fe: 3f 70 andi r19, 0x0F ; 15 |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
600: fd 01 movw r30, r26 |
602: e2 51 subi r30, 0x12 ; 18 |
604: ff 4f sbci r31, 0xFF ; 255 |
606: c9 01 movw r24, r18 |
608: 56 e0 ldi r21, 0x06 ; 6 |
60a: 96 95 lsr r25 |
60c: 87 95 ror r24 |
60e: 5a 95 dec r21 |
610: e1 f7 brne .-8 ; 0x60a <AddCRC+0x2c> |
612: 83 5c subi r24, 0xC3 ; 195 |
614: 80 83 st Z, r24 |
616: 11 96 adiw r26, 0x01 ; 1 |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
618: fd 01 movw r30, r26 |
61a: e2 51 subi r30, 0x12 ; 18 |
61c: ff 4f sbci r31, 0xFF ; 255 |
61e: 2f 73 andi r18, 0x3F ; 63 |
620: 30 70 andi r19, 0x00 ; 0 |
622: 82 2f mov r24, r18 |
624: 83 5c subi r24, 0xC3 ; 195 |
626: 80 83 st Z, r24 |
SendeBuffer[i++] = '\r'; |
628: a1 51 subi r26, 0x11 ; 17 |
62a: bf 4f sbci r27, 0xFF ; 255 |
62c: 8d e0 ldi r24, 0x0D ; 13 |
62e: 8c 93 st X, r24 |
UebertragungAbgeschlossen = 0; |
630: 10 92 6e 00 sts 0x006E, r1 |
UDR = SendeBuffer[0]; |
634: 80 91 ee 00 lds r24, 0x00EE |
638: 8c b9 out 0x0c, r24 ; 12 |
63a: 08 95 ret |
0000063c <SendOutData>: |
// PrintSendeBuffer(); |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
63c: 1f 93 push r17 |
63e: cf 93 push r28 |
640: df 93 push r29 |
642: 38 2f mov r19, r24 |
644: 96 2f mov r25, r22 |
646: ea 01 movw r28, r20 |
648: 72 2f mov r23, r18 |
unsigned int pt = 0,i; |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
64a: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
//while(!UebertragungAbgeschlossen); |
SendeBuffer[pt++] = '#'; // Startzeichen |
64c: 83 e2 ldi r24, 0x23 ; 35 |
64e: 80 93 ee 00 sts 0x00EE, r24 |
SendeBuffer[pt++] = modul+'a'; // Adresse (a=0; b=1,...) |
652: 9f 59 subi r25, 0x9F ; 159 |
654: 90 93 ef 00 sts 0x00EF, r25 |
SendeBuffer[pt++] = cmd; // Commando |
658: 30 93 f0 00 sts 0x00F0, r19 |
65c: a3 e0 ldi r26, 0x03 ; 3 |
65e: b0 e0 ldi r27, 0x00 ; 0 |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
660: 77 23 and r23, r23 |
662: 09 f4 brne .+2 ; 0x666 <SendOutData+0x2a> |
664: 58 c0 rjmp .+176 ; 0x716 <SendOutData+0xda> |
666: 77 23 and r23, r23 |
668: 11 f4 brne .+4 ; 0x66e <SendOutData+0x32> |
66a: 97 2f mov r25, r23 |
66c: 07 c0 rjmp .+14 ; 0x67c <SendOutData+0x40> |
66e: fe 01 movw r30, r28 |
670: e1 0f add r30, r17 |
672: f1 1d adc r31, r1 |
674: 1f 5f subi r17, 0xFF ; 255 |
676: 90 81 ld r25, Z |
678: 71 50 subi r23, 0x01 ; 1 |
67a: 11 f4 brne .+4 ; 0x680 <SendOutData+0x44> |
67c: 47 2f mov r20, r23 |
67e: 0e c0 rjmp .+28 ; 0x69c <SendOutData+0x60> |
680: fe 01 movw r30, r28 |
682: e1 0f add r30, r17 |
684: f1 1d adc r31, r1 |
686: 1f 5f subi r17, 0xFF ; 255 |
688: 40 81 ld r20, Z |
68a: 71 50 subi r23, 0x01 ; 1 |
68c: 39 f0 breq .+14 ; 0x69c <SendOutData+0x60> |
68e: fe 01 movw r30, r28 |
690: e1 0f add r30, r17 |
692: f1 1d adc r31, r1 |
694: 1f 5f subi r17, 0xFF ; 255 |
696: 60 81 ld r22, Z |
698: 71 50 subi r23, 0x01 ; 1 |
69a: 01 c0 rjmp .+2 ; 0x69e <SendOutData+0x62> |
69c: 67 2f mov r22, r23 |
69e: fd 01 movw r30, r26 |
6a0: e2 51 subi r30, 0x12 ; 18 |
6a2: ff 4f sbci r31, 0xFF ; 255 |
6a4: 89 2f mov r24, r25 |
6a6: 86 95 lsr r24 |
6a8: 86 95 lsr r24 |
6aa: 83 5c subi r24, 0xC3 ; 195 |
6ac: 80 83 st Z, r24 |
6ae: 11 96 adiw r26, 0x01 ; 1 |
6b0: fd 01 movw r30, r26 |
6b2: e2 51 subi r30, 0x12 ; 18 |
6b4: ff 4f sbci r31, 0xFF ; 255 |
6b6: 89 2f mov r24, r25 |
6b8: 99 27 eor r25, r25 |
6ba: 83 70 andi r24, 0x03 ; 3 |
6bc: 90 70 andi r25, 0x00 ; 0 |
6be: 24 e0 ldi r18, 0x04 ; 4 |
6c0: 88 0f add r24, r24 |
6c2: 99 1f adc r25, r25 |
6c4: 2a 95 dec r18 |
6c6: e1 f7 brne .-8 ; 0x6c0 <SendOutData+0x84> |
6c8: 55 27 eor r21, r21 |
6ca: 9a 01 movw r18, r20 |
6cc: 94 e0 ldi r25, 0x04 ; 4 |
6ce: 36 95 lsr r19 |
6d0: 27 95 ror r18 |
6d2: 9a 95 dec r25 |
6d4: e1 f7 brne .-8 ; 0x6ce <SendOutData+0x92> |
6d6: 82 2b or r24, r18 |
6d8: 83 5c subi r24, 0xC3 ; 195 |
6da: 80 83 st Z, r24 |
6dc: 11 96 adiw r26, 0x01 ; 1 |
6de: fd 01 movw r30, r26 |
6e0: e2 51 subi r30, 0x12 ; 18 |
6e2: ff 4f sbci r31, 0xFF ; 255 |
6e4: 4f 70 andi r20, 0x0F ; 15 |
6e6: 50 70 andi r21, 0x00 ; 0 |
6e8: 44 0f add r20, r20 |
6ea: 55 1f adc r21, r21 |
6ec: 44 0f add r20, r20 |
6ee: 55 1f adc r21, r21 |
6f0: 86 2f mov r24, r22 |
6f2: 99 27 eor r25, r25 |
6f4: 26 e0 ldi r18, 0x06 ; 6 |
6f6: 96 95 lsr r25 |
6f8: 87 95 ror r24 |
6fa: 2a 95 dec r18 |
6fc: e1 f7 brne .-8 ; 0x6f6 <SendOutData+0xba> |
6fe: 84 2b or r24, r20 |
700: 83 5c subi r24, 0xC3 ; 195 |
702: 80 83 st Z, r24 |
704: 11 96 adiw r26, 0x01 ; 1 |
706: fd 01 movw r30, r26 |
708: e2 51 subi r30, 0x12 ; 18 |
70a: ff 4f sbci r31, 0xFF ; 255 |
70c: 6f 73 andi r22, 0x3F ; 63 |
70e: 63 5c subi r22, 0xC3 ; 195 |
710: 60 83 st Z, r22 |
712: 11 96 adiw r26, 0x01 ; 1 |
714: a5 cf rjmp .-182 ; 0x660 <SendOutData+0x24> |
} |
AddCRC(pt); |
716: cd 01 movw r24, r26 |
718: 0e 94 ef 02 call 0x5de <AddCRC> |
71c: df 91 pop r29 |
71e: cf 91 pop r28 |
720: 1f 91 pop r17 |
722: 08 95 ret |
00000724 <Decode64>: |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
724: 1f 93 push r17 |
726: cf 93 push r28 |
728: df 93 push r29 |
72a: ec 01 movw r28, r24 |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
72c: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
72e: 66 23 and r22, r22 |
730: 09 f4 brne .+2 ; 0x734 <Decode64+0x10> |
732: 60 c0 rjmp .+192 ; 0x7f4 <Decode64+0xd0> |
734: a2 2f mov r26, r18 |
736: bb 27 eor r27, r27 |
738: 12 97 sbiw r26, 0x02 ; 2 |
73a: e4 2f mov r30, r20 |
73c: ff 27 eor r31, r31 |
73e: ee 5a subi r30, 0xAE ; 174 |
740: fe 4f sbci r31, 0xFE ; 254 |
742: 30 81 ld r19, Z |
744: 3d 53 subi r19, 0x3D ; 61 |
746: 4f 5f subi r20, 0xFF ; 255 |
748: e4 2f mov r30, r20 |
74a: ff 27 eor r31, r31 |
74c: ee 5a subi r30, 0xAE ; 174 |
74e: fe 4f sbci r31, 0xFE ; 254 |
750: 50 81 ld r21, Z |
752: 5d 53 subi r21, 0x3D ; 61 |
754: 4f 5f subi r20, 0xFF ; 255 |
756: e4 2f mov r30, r20 |
758: ff 27 eor r31, r31 |
75a: ee 5a subi r30, 0xAE ; 174 |
75c: fe 4f sbci r31, 0xFE ; 254 |
75e: 70 81 ld r23, Z |
760: 7d 53 subi r23, 0x3D ; 61 |
762: 4f 5f subi r20, 0xFF ; 255 |
764: e4 2f mov r30, r20 |
766: ff 27 eor r31, r31 |
768: ee 5a subi r30, 0xAE ; 174 |
76a: fe 4f sbci r31, 0xFE ; 254 |
76c: e0 81 ld r30, Z |
76e: ed 53 subi r30, 0x3D ; 61 |
770: 4f 5f subi r20, 0xFF ; 255 |
772: 84 2f mov r24, r20 |
774: 99 27 eor r25, r25 |
776: a8 17 cp r26, r24 |
778: b9 07 cpc r27, r25 |
77a: e4 f1 brlt .+120 ; 0x7f4 <Decode64+0xd0> |
77c: 83 2f mov r24, r19 |
77e: 99 27 eor r25, r25 |
780: 88 0f add r24, r24 |
782: 99 1f adc r25, r25 |
784: 88 0f add r24, r24 |
786: 99 1f adc r25, r25 |
788: 35 2f mov r19, r21 |
78a: 32 95 swap r19 |
78c: 3f 70 andi r19, 0x0F ; 15 |
78e: 38 2b or r19, r24 |
790: 85 2f mov r24, r21 |
792: 99 27 eor r25, r25 |
794: 8f 70 andi r24, 0x0F ; 15 |
796: 90 70 andi r25, 0x00 ; 0 |
798: f4 e0 ldi r31, 0x04 ; 4 |
79a: 88 0f add r24, r24 |
79c: 99 1f adc r25, r25 |
79e: fa 95 dec r31 |
7a0: e1 f7 brne .-8 ; 0x79a <Decode64+0x76> |
7a2: 57 2f mov r21, r23 |
7a4: 56 95 lsr r21 |
7a6: 56 95 lsr r21 |
7a8: 58 2b or r21, r24 |
7aa: 87 2f mov r24, r23 |
7ac: 99 27 eor r25, r25 |
7ae: 83 70 andi r24, 0x03 ; 3 |
7b0: 90 70 andi r25, 0x00 ; 0 |
7b2: 76 e0 ldi r23, 0x06 ; 6 |
7b4: 88 0f add r24, r24 |
7b6: 99 1f adc r25, r25 |
7b8: 7a 95 dec r23 |
7ba: e1 f7 brne .-8 ; 0x7b4 <Decode64+0x90> |
7bc: 8e 2b or r24, r30 |
7be: 61 50 subi r22, 0x01 ; 1 |
7c0: 6f 3f cpi r22, 0xFF ; 255 |
7c2: c1 f0 breq .+48 ; 0x7f4 <Decode64+0xd0> |
7c4: fe 01 movw r30, r28 |
7c6: e1 0f add r30, r17 |
7c8: f1 1d adc r31, r1 |
7ca: 30 83 st Z, r19 |
7cc: 1f 5f subi r17, 0xFF ; 255 |
7ce: 61 50 subi r22, 0x01 ; 1 |
7d0: 6f 3f cpi r22, 0xFF ; 255 |
7d2: 81 f0 breq .+32 ; 0x7f4 <Decode64+0xd0> |
7d4: fe 01 movw r30, r28 |
7d6: e1 0f add r30, r17 |
7d8: f1 1d adc r31, r1 |
7da: 50 83 st Z, r21 |
7dc: 1f 5f subi r17, 0xFF ; 255 |
7de: 61 50 subi r22, 0x01 ; 1 |
7e0: 6f 3f cpi r22, 0xFF ; 255 |
7e2: 41 f0 breq .+16 ; 0x7f4 <Decode64+0xd0> |
7e4: fe 01 movw r30, r28 |
7e6: e1 0f add r30, r17 |
7e8: f1 1d adc r31, r1 |
7ea: 80 83 st Z, r24 |
7ec: 1f 5f subi r17, 0xFF ; 255 |
7ee: 66 23 and r22, r22 |
7f0: 09 f0 breq .+2 ; 0x7f4 <Decode64+0xd0> |
7f2: a3 cf rjmp .-186 ; 0x73a <Decode64+0x16> |
7f4: df 91 pop r29 |
7f6: cf 91 pop r28 |
7f8: 1f 91 pop r17 |
7fa: 08 95 ret |
000007fc <BearbeiteRxDaten>: |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
7fc: cf 93 push r28 |
7fe: df 93 push r29 |
800: cd b7 in r28, 0x3d ; 61 |
802: de b7 in r29, 0x3e ; 62 |
804: ad 97 sbiw r28, 0x2d ; 45 |
806: 0f b6 in r0, 0x3f ; 63 |
808: f8 94 cli |
80a: de bf out 0x3e, r29 ; 62 |
80c: 0f be out 0x3f, r0 ; 63 |
80e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr1[1]; |
unsigned int tmp_int_arr2[2]; |
unsigned int tmp_int_arr20[21]; |
unsigned char tmp_char_arr3[3]; |
// unsigned int tmp_int_arr4[4]; |
if(!NeuerDatensatzEmpfangen) return; |
810: 80 91 9b 00 lds r24, 0x009B |
814: 88 23 and r24, r24 |
816: 09 f4 brne .+2 ; 0x81a <BearbeiteRxDaten+0x1e> |
818: a7 c0 rjmp .+334 ; 0x968 <__stack+0x109> |
NeuerDatensatzEmpfangen = 0; |
81a: 10 92 9b 00 sts 0x009B, r1 |
if(ErwarteAntwort == RxdBuffer[2]) AntwortEingetroffen = 1; |
81e: 90 91 6d 00 lds r25, 0x006D |
822: 80 91 54 01 lds r24, 0x0154 |
826: 98 17 cp r25, r24 |
828: 19 f4 brne .+6 ; 0x830 <BearbeiteRxDaten+0x34> |
82a: 81 e0 ldi r24, 0x01 ; 1 |
82c: 80 93 92 00 sts 0x0092, r24 |
switch(RxdBuffer[2]) |
830: 80 91 54 01 lds r24, 0x0154 |
834: 99 27 eor r25, r25 |
836: 82 33 cpi r24, 0x32 ; 50 |
838: 91 05 cpc r25, r1 |
83a: 09 f4 brne .+2 ; 0x83e <BearbeiteRxDaten+0x42> |
83c: 46 c0 rjmp .+140 ; 0x8ca <__stack+0x6b> |
83e: 83 33 cpi r24, 0x33 ; 51 |
840: 91 05 cpc r25, r1 |
842: 34 f4 brge .+12 ; 0x850 <BearbeiteRxDaten+0x54> |
844: 80 33 cpi r24, 0x30 ; 48 |
846: 91 05 cpc r25, r1 |
848: 99 f0 breq .+38 ; 0x870 <__stack+0x11> |
84a: c1 97 sbiw r24, 0x31 ; 49 |
84c: 49 f1 breq .+82 ; 0x8a0 <__stack+0x41> |
84e: 8c c0 rjmp .+280 ; 0x968 <__stack+0x109> |
850: 84 34 cpi r24, 0x44 ; 68 |
852: 91 05 cpc r25, r1 |
854: 09 f4 brne .+2 ; 0x858 <BearbeiteRxDaten+0x5c> |
856: 6b c0 rjmp .+214 ; 0x92e <__stack+0xcf> |
858: 85 34 cpi r24, 0x45 ; 69 |
85a: 91 05 cpc r25, r1 |
85c: 24 f4 brge .+8 ; 0x866 <__stack+0x7> |
85e: c3 97 sbiw r24, 0x33 ; 51 |
860: 09 f4 brne .+2 ; 0x864 <__stack+0x5> |
862: 48 c0 rjmp .+144 ; 0x8f4 <__stack+0x95> |
864: 81 c0 rjmp .+258 ; 0x968 <__stack+0x109> |
866: 8b 34 cpi r24, 0x4B ; 75 |
868: 91 05 cpc r25, r1 |
86a: 09 f4 brne .+2 ; 0x86e <__stack+0xf> |
86c: 6c c0 rjmp .+216 ; 0x946 <__stack+0xe7> |
86e: 7c c0 rjmp .+248 ; 0x968 <__stack+0x109> |
{ |
case '0':// LCD-Zeile0 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
870: 20 91 98 00 lds r18, 0x0098 |
874: 43 e0 ldi r20, 0x03 ; 3 |
876: 6a e2 ldi r22, 0x2A ; 42 |
878: ce 01 movw r24, r28 |
87a: 01 96 adiw r24, 0x01 ; 1 |
87c: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
880: 1a a6 std Y+42, r1 ; 0x2a |
882: 19 a6 std Y+41, r1 ; 0x29 |
DisplayBusy = 1; |
884: 81 e0 ldi r24, 0x01 ; 1 |
886: 80 93 93 00 sts 0x0093, r24 |
LCD_printfxy(0,0,"%s",tmp_int_arr20); |
88a: 60 e0 ldi r22, 0x00 ; 0 |
88c: 86 2f mov r24, r22 |
88e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
892: ce 01 movw r24, r28 |
894: 01 96 adiw r24, 0x01 ; 1 |
896: 9f 93 push r25 |
898: 8f 93 push r24 |
89a: 88 ea ldi r24, 0xA8 ; 168 |
89c: 90 e0 ldi r25, 0x00 ; 0 |
89e: 3e c0 rjmp .+124 ; 0x91c <__stack+0xbd> |
break; |
case '1':// LCD-Zeile1 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8a0: 20 91 98 00 lds r18, 0x0098 |
8a4: 43 e0 ldi r20, 0x03 ; 3 |
8a6: 6a e2 ldi r22, 0x2A ; 42 |
8a8: ce 01 movw r24, r28 |
8aa: 01 96 adiw r24, 0x01 ; 1 |
8ac: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8b0: 1a a6 std Y+42, r1 ; 0x2a |
8b2: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,1,"%s",tmp_int_arr20); |
8b4: 61 e0 ldi r22, 0x01 ; 1 |
8b6: 80 e0 ldi r24, 0x00 ; 0 |
8b8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8bc: ce 01 movw r24, r28 |
8be: 01 96 adiw r24, 0x01 ; 1 |
8c0: 9f 93 push r25 |
8c2: 8f 93 push r24 |
8c4: 8b ea ldi r24, 0xAB ; 171 |
8c6: 90 e0 ldi r25, 0x00 ; 0 |
8c8: 29 c0 rjmp .+82 ; 0x91c <__stack+0xbd> |
break; |
case '2':// LCD-Zeile2 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8ca: 20 91 98 00 lds r18, 0x0098 |
8ce: 43 e0 ldi r20, 0x03 ; 3 |
8d0: 6a e2 ldi r22, 0x2A ; 42 |
8d2: ce 01 movw r24, r28 |
8d4: 01 96 adiw r24, 0x01 ; 1 |
8d6: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8da: 1a a6 std Y+42, r1 ; 0x2a |
8dc: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,2,"%s",tmp_int_arr20); |
8de: 62 e0 ldi r22, 0x02 ; 2 |
8e0: 80 e0 ldi r24, 0x00 ; 0 |
8e2: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8e6: ce 01 movw r24, r28 |
8e8: 01 96 adiw r24, 0x01 ; 1 |
8ea: 9f 93 push r25 |
8ec: 8f 93 push r24 |
8ee: 8e ea ldi r24, 0xAE ; 174 |
8f0: 90 e0 ldi r25, 0x00 ; 0 |
8f2: 14 c0 rjmp .+40 ; 0x91c <__stack+0xbd> |
break; |
case '3':// LCD-Zeile3 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8f4: 20 91 98 00 lds r18, 0x0098 |
8f8: 43 e0 ldi r20, 0x03 ; 3 |
8fa: 6a e2 ldi r22, 0x2A ; 42 |
8fc: ce 01 movw r24, r28 |
8fe: 01 96 adiw r24, 0x01 ; 1 |
900: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
904: 1a a6 std Y+42, r1 ; 0x2a |
906: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,3,"%s",tmp_int_arr20); |
908: 63 e0 ldi r22, 0x03 ; 3 |
90a: 80 e0 ldi r24, 0x00 ; 0 |
90c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
910: ce 01 movw r24, r28 |
912: 01 96 adiw r24, 0x01 ; 1 |
914: 9f 93 push r25 |
916: 8f 93 push r24 |
918: 81 eb ldi r24, 0xB1 ; 177 |
91a: 90 e0 ldi r25, 0x00 ; 0 |
91c: 9f 93 push r25 |
91e: 8f 93 push r24 |
920: 0e 94 e3 06 call 0xdc6 <_printf_P> |
break; |
924: 0f 90 pop r0 |
926: 0f 90 pop r0 |
928: 0f 90 pop r0 |
92a: 0f 90 pop r0 |
92c: 1d c0 rjmp .+58 ; 0x968 <__stack+0x109> |
case 'D': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugOut,sizeof(DebugOut),3,AnzahlEmpfangsBytes); |
92e: 20 91 98 00 lds r18, 0x0098 |
932: 43 e0 ldi r20, 0x03 ; 3 |
934: 6a e1 ldi r22, 0x1A ; 26 |
936: 83 ed ldi r24, 0xD3 ; 211 |
938: 90 e0 ldi r25, 0x00 ; 0 |
93a: 0e 94 92 03 call 0x724 <Decode64> |
PORTB = DebugOut.Digital[1]; |
93e: 80 91 d4 00 lds r24, 0x00D4 |
942: 88 bb out 0x18, r24 ; 24 |
break; |
944: 11 c0 rjmp .+34 ; 0x968 <__stack+0x109> |
case 'K': // Debug Eingangsdaten |
Decode64(tmp_char_arr3,sizeof(tmp_char_arr3),3,AnzahlEmpfangsBytes); |
946: 20 91 98 00 lds r18, 0x0098 |
94a: 43 e0 ldi r20, 0x03 ; 3 |
94c: 64 2f mov r22, r20 |
94e: ce 01 movw r24, r28 |
950: 8b 96 adiw r24, 0x2b ; 43 |
952: 0e 94 92 03 call 0x724 <Decode64> |
TX_DigTransferKanalL = tmp_char_arr3[0]; |
956: 8b a5 ldd r24, Y+43 ; 0x2b |
958: 80 93 96 00 sts 0x0096, r24 |
TX_DigTransferKanalH = tmp_char_arr3[1]; |
95c: 8c a5 ldd r24, Y+44 ; 0x2c |
95e: 80 93 95 00 sts 0x0095, r24 |
TX_DigTransferKanalDaten = tmp_char_arr3[2]; |
962: 8d a5 ldd r24, Y+45 ; 0x2d |
964: 80 93 94 00 sts 0x0094, r24 |
968: ad 96 adiw r28, 0x2d ; 45 |
96a: 0f b6 in r0, 0x3f ; 63 |
96c: f8 94 cli |
96e: de bf out 0x3e, r29 ; 62 |
970: 0f be out 0x3f, r0 ; 63 |
972: cd bf out 0x3d, r28 ; 61 |
974: df 91 pop r29 |
976: cf 91 pop r28 |
978: 08 95 ret |
0000097a <uart_putchar>: |
//if(RxdBuffer[1] == 'b') LCD_printfxy(0,0,"b:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
//if(RxdBuffer[1] == 'c') LCD_printfxy(0,1,"c:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
break; |
/* |
unsigned char Digital[13]; // 0 = Taster, Hauptkarte |
// 1 + 2 = Debugkanäle |
// 3 = Digin, Hauptkarte |
// 4 = Relais, Hauptkarte |
// 5 + 6 = Extern IO1 (12Bit ein 4 Bit aus) |
// 7 + 8 = Extern IO2 (12Bit ein 4 Bit aus) |
// 9 + 10 = Extern IO3 (12Bit ein 4 Bit aus) |
// 11 + 12= Extern IO4 (12Bit ein 4 Bit aus) |
*/ |
/* case 'd': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
} |
break; |
case 'g': // "Get"-Anforderung für Debug-Daten // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'u': // Uhr stellen |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
ZEITWERT = tmp_int_arr2[0]; |
SEK = tmp_int_arr2[1]; |
make_time_variables(ZEITWERT); |
RTC_SetTime(STD, MIN, SEK); |
RTC_SetWDay(TAG); |
break; |
case 'i': // Intervalle für die Datenübertragung |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
Debug_Timer_Intervall = tmp_int_arr2[0]; |
Debug_Display_Intervall = tmp_int_arr2[1]; |
SendeDummyDaten = 1; |
break; |
case 's': // single Step 1 = Stop 2 = noch einen Zyklus 3 = noch 2 Zyklen |
Decode64((unsigned char *) &tmp_int_arr1[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
SingleStep = tmp_int_arr1[0]; |
break; |
*/ |
} |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
97a: cf 93 push r28 |
97c: c8 2f mov r28, r24 |
if (c == '\n') |
97e: 8a 30 cpi r24, 0x0A ; 10 |
980: 19 f4 brne .+6 ; 0x988 <uart_putchar+0xe> |
uart_putchar('\r'); |
982: 8d e0 ldi r24, 0x0D ; 13 |
984: 0e 94 bd 04 call 0x97a <uart_putchar> |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
988: 5d 9b sbis 0x0b, 5 ; 11 |
98a: fe cf rjmp .-4 ; 0x988 <uart_putchar+0xe> |
//Ausgabe des Zeichens |
UDR = c; |
98c: cc b9 out 0x0c, r28 ; 12 |
return (0); |
} |
98e: 80 e0 ldi r24, 0x00 ; 0 |
990: 90 e0 ldi r25, 0x00 ; 0 |
992: cf 91 pop r28 |
994: 08 95 ret |
00000996 <WriteProgramData>: |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
996: 08 95 ret |
00000998 <UART_Init>: |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
998: 88 e1 ldi r24, 0x18 ; 24 |
99a: 8a b9 out 0x0a, r24 ; 10 |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
99c: 59 9a sbi 0x0b, 1 ; 11 |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
99e: 57 9a sbi 0x0a, 7 ; 10 |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
9a0: 56 9a sbi 0x0a, 6 ; 10 |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
9a2: 81 e2 ldi r24, 0x21 ; 33 |
9a4: 89 b9 out 0x09, r24 ; 9 |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
9a6: 60 e0 ldi r22, 0x00 ; 0 |
9a8: 70 e0 ldi r23, 0x00 ; 0 |
9aa: 8d eb ldi r24, 0xBD ; 189 |
9ac: 94 e0 ldi r25, 0x04 ; 4 |
9ae: 0e 94 71 0c call 0x18e2 <fdevopen> |
9b2: 08 95 ret |
000009b4 <SendeRemoteTasten>: |
//sbi(PORTD,4); |
} |
/* |
struct str_DebugIn |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
unsigned int Analog[4]; |
}; |
*/ |
void SendeRemoteTasten(unsigned char keys) |
{ |
9b4: 98 2f mov r25, r24 |
while(!UebertragungAbgeschlossen); // evtl warten |
9b6: 80 91 6e 00 lds r24, 0x006E |
9ba: 88 23 and r24, r24 |
9bc: e1 f3 breq .-8 ; 0x9b6 <SendeRemoteTasten+0x2> |
DebugIn.RemoteTasten = keys; |
9be: 90 93 c0 00 sts 0x00C0, r25 |
DebugIn.Analog[0] = AnalogWerte[0]; |
9c2: 80 91 ca 01 lds r24, 0x01CA |
9c6: 90 91 cb 01 lds r25, 0x01CB |
9ca: 90 93 c2 00 sts 0x00C2, r25 |
9ce: 80 93 c1 00 sts 0x00C1, r24 |
DebugIn.Analog[1] = AnalogWerte[1]; |
9d2: 80 91 cc 01 lds r24, 0x01CC |
9d6: 90 91 cd 01 lds r25, 0x01CD |
9da: 90 93 c4 00 sts 0x00C4, r25 |
9de: 80 93 c3 00 sts 0x00C3, r24 |
DebugIn.Analog[2] = AnalogWerte[2]; |
9e2: 80 91 ce 01 lds r24, 0x01CE |
9e6: 90 91 cf 01 lds r25, 0x01CF |
9ea: 90 93 c6 00 sts 0x00C6, r25 |
9ee: 80 93 c5 00 sts 0x00C5, r24 |
DebugIn.Analog[3] = IR_Code; |
9f2: 80 91 c7 01 lds r24, 0x01C7 |
9f6: 90 91 c8 01 lds r25, 0x01C8 |
9fa: 90 93 c8 00 sts 0x00C8, r25 |
9fe: 80 93 c7 00 sts 0x00C7, r24 |
SendOutData('d',SlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
a02: 2b e0 ldi r18, 0x0B ; 11 |
a04: 4e eb ldi r20, 0xBE ; 190 |
a06: 50 e0 ldi r21, 0x00 ; 0 |
a08: 60 91 64 00 lds r22, 0x0064 |
a0c: 84 e6 ldi r24, 0x64 ; 100 |
a0e: 0e 94 1e 03 call 0x63c <SendOutData> |
a12: 08 95 ret |
00000a14 <SendIntervalle>: |
} |
void SendIntervalle(unsigned int debug, unsigned int disp) |
{ |
a14: cf 93 push r28 |
a16: df 93 push r29 |
a18: cd b7 in r28, 0x3d ; 61 |
a1a: de b7 in r29, 0x3e ; 62 |
a1c: 24 97 sbiw r28, 0x04 ; 4 |
a1e: 0f b6 in r0, 0x3f ; 63 |
a20: f8 94 cli |
a22: de bf out 0x3e, r29 ; 62 |
a24: 0f be out 0x3f, r0 ; 63 |
a26: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = debug; |
a28: 9a 83 std Y+2, r25 ; 0x02 |
a2a: 89 83 std Y+1, r24 ; 0x01 |
tmp_int_arr2[1] = disp; |
a2c: 7c 83 std Y+4, r23 ; 0x04 |
a2e: 6b 83 std Y+3, r22 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a30: 80 91 6e 00 lds r24, 0x006E |
a34: 88 23 and r24, r24 |
a36: e1 f3 breq .-8 ; 0xa30 <SendIntervalle+0x1c> |
SendOutData('i',SlaveAdresse,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); |
a38: 24 e0 ldi r18, 0x04 ; 4 |
a3a: ae 01 movw r20, r28 |
a3c: 4f 5f subi r20, 0xFF ; 255 |
a3e: 5f 4f sbci r21, 0xFF ; 255 |
a40: 60 91 64 00 lds r22, 0x0064 |
a44: 89 e6 ldi r24, 0x69 ; 105 |
a46: 0e 94 1e 03 call 0x63c <SendOutData> |
a4a: 24 96 adiw r28, 0x04 ; 4 |
a4c: 0f b6 in r0, 0x3f ; 63 |
a4e: f8 94 cli |
a50: de bf out 0x3e, r29 ; 62 |
a52: 0f be out 0x3f, r0 ; 63 |
a54: cd bf out 0x3d, r28 ; 61 |
a56: df 91 pop r29 |
a58: cf 91 pop r28 |
a5a: 08 95 ret |
00000a5c <ClearIntervalle>: |
} |
void ClearIntervalle(void) |
{ |
a5c: cf 93 push r28 |
a5e: df 93 push r29 |
a60: cd b7 in r28, 0x3d ; 61 |
a62: de b7 in r29, 0x3e ; 62 |
a64: 24 97 sbiw r28, 0x04 ; 4 |
a66: 0f b6 in r0, 0x3f ; 63 |
a68: f8 94 cli |
a6a: de bf out 0x3e, r29 ; 62 |
a6c: 0f be out 0x3f, r0 ; 63 |
a6e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = 0; |
a70: 1a 82 std Y+2, r1 ; 0x02 |
a72: 19 82 std Y+1, r1 ; 0x01 |
tmp_int_arr2[1] = 0; |
a74: 1c 82 std Y+4, r1 ; 0x04 |
a76: 1b 82 std Y+3, r1 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a78: 80 91 6e 00 lds r24, 0x006E |
a7c: 88 23 and r24, r24 |
a7e: e1 f3 breq .-8 ; 0xa78 <ClearIntervalle+0x1c> |
SendOutData('i',0,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); // 0= an alle |
a80: 24 e0 ldi r18, 0x04 ; 4 |
a82: ae 01 movw r20, r28 |
a84: 4f 5f subi r20, 0xFF ; 255 |
a86: 5f 4f sbci r21, 0xFF ; 255 |
a88: 60 e0 ldi r22, 0x00 ; 0 |
a8a: 89 e6 ldi r24, 0x69 ; 105 |
a8c: 0e 94 1e 03 call 0x63c <SendOutData> |
a90: 24 96 adiw r28, 0x04 ; 4 |
a92: 0f b6 in r0, 0x3f ; 63 |
a94: f8 94 cli |
a96: de bf out 0x3e, r29 ; 62 |
a98: 0f be out 0x3f, r0 ; 63 |
a9a: cd bf out 0x3d, r28 ; 61 |
a9c: df 91 pop r29 |
a9e: cf 91 pop r28 |
aa0: 08 95 ret |
00000aa2 <DatenUebertragung>: |
} |
void DatenUebertragung(unsigned char key) |
{ |
aa2: cf 93 push r28 |
aa4: df 93 push r29 |
aa6: cd b7 in r28, 0x3d ; 61 |
aa8: de b7 in r29, 0x3e ; 62 |
aaa: 25 97 sbiw r28, 0x05 ; 5 |
aac: 0f b6 in r0, 0x3f ; 63 |
aae: f8 94 cli |
ab0: de bf out 0x3e, r29 ; 62 |
ab2: 0f be out 0x3f, r0 ; 63 |
ab4: cd bf out 0x3d, r28 ; 61 |
ab6: 98 2f mov r25, r24 |
static unsigned char state = 1; |
unsigned char temp_1[1]; |
unsigned char temp_2[2]; |
unsigned char temp_3[3]; |
unsigned int tmp_int_arr2[2]; |
while(!UebertragungAbgeschlossen); // evtl warten |
ab8: 80 91 6e 00 lds r24, 0x006E |
abc: 88 23 and r24, r24 |
abe: e1 f3 breq .-8 ; 0xab8 <DatenUebertragung+0x16> |
static unsigned char KanalSlave = 1; |
if(PollDisplay) |
ac0: 80 91 ed 00 lds r24, 0x00ED |
ac4: 88 23 and r24, r24 |
ac6: e1 f0 breq .+56 ; 0xb00 <DatenUebertragung+0x5e> |
{ |
temp_2[0] = key; |
ac8: 9c 83 std Y+4, r25 ; 0x04 |
temp_2[1] = 6; |
aca: 86 e0 ldi r24, 0x06 ; 6 |
acc: 8d 83 std Y+5, r24 ; 0x05 |
if(DisplayZeilen == 4) temp_2[1] = 4 + 9; // anzahl Zeilen --> + 8 bedeutet: ersten Pollingzyklus freilassen |
ace: 80 91 65 00 lds r24, 0x0065 |
ad2: 84 30 cpi r24, 0x04 ; 4 |
ad4: 11 f4 brne .+4 ; 0xada <DatenUebertragung+0x38> |
ad6: 8d e0 ldi r24, 0x0D ; 13 |
ad8: 01 c0 rjmp .+2 ; 0xadc <DatenUebertragung+0x3a> |
else temp_2[1] = 2 + 9; |
ada: 8b e0 ldi r24, 0x0B ; 11 |
adc: 8d 83 std Y+5, r24 ; 0x05 |
SendOutData('h',SlaveAdresse,(unsigned char *) &temp_2,sizeof(temp_2)); |
ade: 22 e0 ldi r18, 0x02 ; 2 |
ae0: ae 01 movw r20, r28 |
ae2: 4c 5f subi r20, 0xFC ; 252 |
ae4: 5f 4f sbci r21, 0xFF ; 255 |
ae6: 60 91 64 00 lds r22, 0x0064 |
aea: 88 e6 ldi r24, 0x68 ; 104 |
aec: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = '0'; |
af0: 80 e3 ldi r24, 0x30 ; 48 |
af2: 80 93 6d 00 sts 0x006D, r24 |
DisplayBusy = 90; |
af6: 8a e5 ldi r24, 0x5A ; 90 |
af8: 80 93 93 00 sts 0x0093, r24 |
PollDisplay = 0; |
afc: 10 92 ed 00 sts 0x00ED, r1 |
} |
if(!DisplayBusy) |
b00: 60 91 93 00 lds r22, 0x0093 |
b04: 66 23 and r22, r22 |
b06: e1 f5 brne .+120 ; 0xb80 <DatenUebertragung+0xde> |
switch(state) |
b08: 80 91 6f 00 lds r24, 0x006F |
b0c: 99 27 eor r25, r25 |
b0e: 81 30 cpi r24, 0x01 ; 1 |
b10: 91 05 cpc r25, r1 |
b12: 19 f0 breq .+6 ; 0xb1a <DatenUebertragung+0x78> |
b14: 02 97 sbiw r24, 0x02 ; 2 |
b16: e9 f0 breq .+58 ; 0xb52 <DatenUebertragung+0xb0> |
b18: 30 c0 rjmp .+96 ; 0xb7a <DatenUebertragung+0xd8> |
{ |
case 1:// Display |
SendOutData('k',KanalSlave,(unsigned char *) &temp_3,sizeof(temp_3)); |
b1a: 23 e0 ldi r18, 0x03 ; 3 |
b1c: ae 01 movw r20, r28 |
b1e: 4f 5f subi r20, 0xFF ; 255 |
b20: 5f 4f sbci r21, 0xFF ; 255 |
b22: 60 91 70 00 lds r22, 0x0070 |
b26: 8b e6 ldi r24, 0x6B ; 107 |
b28: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = 'K'; |
b2c: 8b e4 ldi r24, 0x4B ; 75 |
b2e: 80 93 6d 00 sts 0x006D, r24 |
if(++KanalSlave > AnzahlTeilnehmer) KanalSlave = 1; |
b32: 80 91 70 00 lds r24, 0x0070 |
b36: 8f 5f subi r24, 0xFF ; 255 |
b38: 80 93 70 00 sts 0x0070, r24 |
b3c: 90 91 6c 00 lds r25, 0x006C |
b40: 98 17 cp r25, r24 |
b42: 18 f4 brcc .+6 ; 0xb4a <DatenUebertragung+0xa8> |
b44: 81 e0 ldi r24, 0x01 ; 1 |
b46: 80 93 70 00 sts 0x0070, r24 |
state++; |
b4a: 80 91 6f 00 lds r24, 0x006F |
b4e: 8f 5f subi r24, 0xFF ; 255 |
b50: 15 c0 rjmp .+42 ; 0xb7c <DatenUebertragung+0xda> |
break; |
case 2: |
temp_3[0] = TX_DigTransferKanalL; |
b52: 80 91 96 00 lds r24, 0x0096 |
b56: 89 83 std Y+1, r24 ; 0x01 |
temp_3[1] = TX_DigTransferKanalH; |
b58: 80 91 95 00 lds r24, 0x0095 |
b5c: 8a 83 std Y+2, r24 ; 0x02 |
temp_3[2] = TX_DigTransferKanalDaten; |
b5e: 80 91 94 00 lds r24, 0x0094 |
b62: 8b 83 std Y+3, r24 ; 0x03 |
SendOutData('l',0,(unsigned char *) &temp_3,sizeof(temp_3)); |
b64: 23 e0 ldi r18, 0x03 ; 3 |
b66: ae 01 movw r20, r28 |
b68: 4f 5f subi r20, 0xFF ; 255 |
b6a: 5f 4f sbci r21, 0xFF ; 255 |
b6c: 8c e6 ldi r24, 0x6C ; 108 |
b6e: 0e 94 1e 03 call 0x63c <SendOutData> |
AntwortEingetroffen = 1; // erwarte keine Antwort |
b72: 81 e0 ldi r24, 0x01 ; 1 |
b74: 80 93 92 00 sts 0x0092, r24 |
b78: 01 c0 rjmp .+2 ; 0xb7c <DatenUebertragung+0xda> |
state = 1; |
break; |
default: state = 1; |
b7a: 81 e0 ldi r24, 0x01 ; 1 |
b7c: 80 93 6f 00 sts 0x006F, r24 |
b80: 25 96 adiw r28, 0x05 ; 5 |
b82: 0f b6 in r0, 0x3f ; 63 |
b84: f8 94 cli |
b86: de bf out 0x3e, r29 ; 62 |
b88: 0f be out 0x3f, r0 ; 63 |
b8a: cd bf out 0x3d, r28 ; 61 |
b8c: df 91 pop r29 |
b8e: cf 91 pop r28 |
b90: 08 95 ret |
00000b92 <_long_delay>: |
#include "main.h" |
void _long_delay(void) |
{ |
long t = 5000; |
b92: 88 e8 ldi r24, 0x88 ; 136 |
b94: 93 e1 ldi r25, 0x13 ; 19 |
b96: a0 e0 ldi r26, 0x00 ; 0 |
b98: b0 e0 ldi r27, 0x00 ; 0 |
while (t--); |
b9a: 03 97 sbiw r24, 0x03 ; 3 |
b9c: a1 09 sbc r26, r1 |
b9e: b1 09 sbc r27, r1 |
ba0: 8f 3f cpi r24, 0xFF ; 255 |
ba2: 2f ef ldi r18, 0xFF ; 255 |
ba4: 92 07 cpc r25, r18 |
ba6: 2f ef ldi r18, 0xFF ; 255 |
ba8: a2 07 cpc r26, r18 |
baa: 2f ef ldi r18, 0xFF ; 255 |
bac: b2 07 cpc r27, r18 |
bae: a9 f7 brne .-22 ; 0xb9a <_long_delay+0x8> |
bb0: 08 95 ret |
00000bb2 <_short_delay>: |
} |
void _short_delay(void) |
{ |
int t = 500; |
bb2: 84 ef ldi r24, 0xF4 ; 244 |
bb4: 91 e0 ldi r25, 0x01 ; 1 |
while (t--); |
bb6: 03 97 sbiw r24, 0x03 ; 3 |
bb8: 2f ef ldi r18, 0xFF ; 255 |
bba: 8f 3f cpi r24, 0xFF ; 255 |
bbc: 92 07 cpc r25, r18 |
bbe: d9 f7 brne .-10 ; 0xbb6 <_short_delay+0x4> |
bc0: 08 95 ret |
00000bc2 <_lcd_write_command>: |
} |
void _lcd_write_command(unsigned char data) |
{ |
bc2: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bc4: 80 7f andi r24, 0xF0 ; 240 |
bc6: 98 2f mov r25, r24 |
bc8: 94 60 ori r25, 0x04 ; 4 |
bca: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bcc: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bce: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bd0: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bd2: 82 2f mov r24, r18 |
bd4: 99 27 eor r25, r25 |
bd6: 34 e0 ldi r19, 0x04 ; 4 |
bd8: 88 0f add r24, r24 |
bda: 99 1f adc r25, r25 |
bdc: 3a 95 dec r19 |
bde: e1 f7 brne .-8 ; 0xbd8 <_lcd_write_command+0x16> |
be0: 84 60 ori r24, 0x04 ; 4 |
be2: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
be4: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4); |
be6: 22 95 swap r18 |
be8: 20 7f andi r18, 0xF0 ; 240 |
bea: 25 bb out 0x15, r18 ; 21 |
bec: 08 95 ret |
00000bee <_lcd_write_4bit>: |
} |
void _lcd_write_4bit(unsigned char data) |
{ |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bee: 28 2f mov r18, r24 |
bf0: 33 27 eor r19, r19 |
bf2: 44 e0 ldi r20, 0x04 ; 4 |
bf4: 22 0f add r18, r18 |
bf6: 33 1f adc r19, r19 |
bf8: 4a 95 dec r20 |
bfa: e1 f7 brne .-8 ; 0xbf4 <_lcd_write_4bit+0x6> |
bfc: 92 2f mov r25, r18 |
bfe: 94 60 ori r25, 0x04 ; 4 |
c00: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
c02: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4); |
c04: 82 95 swap r24 |
c06: 80 7f andi r24, 0xF0 ; 240 |
c08: 85 bb out 0x15, r24 ; 21 |
c0a: 08 95 ret |
00000c0c <lcd_write_byte>: |
} |
void lcd_write_byte(unsigned char data) |
{ |
c0c: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN | DISPLAY_RS; |
c0e: 80 7f andi r24, 0xF0 ; 240 |
c10: 98 2f mov r25, r24 |
c12: 95 60 ori r25, 0x05 ; 5 |
c14: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_RS; |
c16: 81 60 ori r24, 0x01 ; 1 |
c18: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN | DISPLAY_RS; |
c1a: 82 2f mov r24, r18 |
c1c: 99 27 eor r25, r25 |
c1e: 54 e0 ldi r21, 0x04 ; 4 |
c20: 88 0f add r24, r24 |
c22: 99 1f adc r25, r25 |
c24: 5a 95 dec r21 |
c26: e1 f7 brne .-8 ; 0xc20 <lcd_write_byte+0x14> |
c28: 28 2f mov r18, r24 |
c2a: 25 60 ori r18, 0x05 ; 5 |
c2c: 25 bb out 0x15, r18 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_RS; |
c2e: 81 60 ori r24, 0x01 ; 1 |
c30: 85 bb out 0x15, r24 ; 21 |
c32: 08 95 ret |
00000c34 <my_pput>: |
} |
int my_pput(int zeichen) |
{ |
lcd_write_byte((char) zeichen); |
c34: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
c38: 81 e0 ldi r24, 0x01 ; 1 |
c3a: 90 e0 ldi r25, 0x00 ; 0 |
c3c: 08 95 ret |
00000c3e <LCD_Init>: |
// initialize the LCD controller |
void LCD_Init(void) |
{ |
LCD_PORT_DDR = 0xff;//0xf0 | DISPLAY_RS | DISPLAY_EN; |
c3e: 8f ef ldi r24, 0xFF ; 255 |
c40: 84 bb out 0x14, r24 ; 20 |
_long_delay(); |
c42: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c46: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c4a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c4e: 83 e0 ldi r24, 0x03 ; 3 |
c50: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c54: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c58: 83 e0 ldi r24, 0x03 ; 3 |
c5a: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c5e: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c62: 83 e0 ldi r24, 0x03 ; 3 |
c64: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c68: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x02); // jetzt 4 Bit |
c6c: 82 e0 ldi r24, 0x02 ; 2 |
c6e: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c72: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x28); // 4 Bit Zweizeilig |
c76: 88 e2 ldi r24, 0x28 ; 40 |
c78: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c7c: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08); // Display aus |
c80: 88 e0 ldi r24, 0x08 ; 8 |
c82: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c86: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x01); // Clear |
c8a: 81 e0 ldi r24, 0x01 ; 1 |
c8c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c90: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x06); //Entry mode |
c94: 86 e0 ldi r24, 0x06 ; 6 |
c96: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c9a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08 + 4); // Display an |
c9e: 8c e0 ldi r24, 0x0C ; 12 |
ca0: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
ca4: 0e 94 c9 05 call 0xb92 <_long_delay> |
ca8: 08 95 ret |
00000caa <LCD_Gotoxy>: |
} |
void LCD_Gotoxy(unsigned char x , unsigned char y) |
{ |
caa: 1f 93 push r17 |
cac: cf 93 push r28 |
cae: c8 2f mov r28, r24 |
cb0: 16 2f mov r17, r22 |
_short_delay(); |
cb2: 0e 94 d9 05 call 0xbb2 <_short_delay> |
switch(y) |
cb6: 81 2f mov r24, r17 |
cb8: 99 27 eor r25, r25 |
cba: 81 30 cpi r24, 0x01 ; 1 |
cbc: 91 05 cpc r25, r1 |
cbe: 79 f0 breq .+30 ; 0xcde <LCD_Gotoxy+0x34> |
cc0: 82 30 cpi r24, 0x02 ; 2 |
cc2: 91 05 cpc r25, r1 |
cc4: 1c f4 brge .+6 ; 0xccc <LCD_Gotoxy+0x22> |
cc6: 89 2b or r24, r25 |
cc8: 39 f0 breq .+14 ; 0xcd8 <LCD_Gotoxy+0x2e> |
cca: 13 c0 rjmp .+38 ; 0xcf2 <LCD_Gotoxy+0x48> |
ccc: 82 30 cpi r24, 0x02 ; 2 |
cce: 91 05 cpc r25, r1 |
cd0: 49 f0 breq .+18 ; 0xce4 <LCD_Gotoxy+0x3a> |
cd2: 03 97 sbiw r24, 0x03 ; 3 |
cd4: 51 f0 breq .+20 ; 0xcea <LCD_Gotoxy+0x40> |
cd6: 0d c0 rjmp .+26 ; 0xcf2 <LCD_Gotoxy+0x48> |
{ case 0 : _lcd_write_command(x + 0x80); break; |
cd8: 8c 2f mov r24, r28 |
cda: 80 58 subi r24, 0x80 ; 128 |
cdc: 08 c0 rjmp .+16 ; 0xcee <LCD_Gotoxy+0x44> |
case 1 : _lcd_write_command(x + 0xC0); break; |
cde: 8c 2f mov r24, r28 |
ce0: 80 54 subi r24, 0x40 ; 64 |
ce2: 05 c0 rjmp .+10 ; 0xcee <LCD_Gotoxy+0x44> |
case 2 : _lcd_write_command(x + (0x80 + 20)); break; |
ce4: 8c 2f mov r24, r28 |
ce6: 8c 56 subi r24, 0x6C ; 108 |
ce8: 02 c0 rjmp .+4 ; 0xcee <LCD_Gotoxy+0x44> |
case 3 : _lcd_write_command(x + (0xC0 + 20)); break; |
cea: 8c 2f mov r24, r28 |
cec: 8c 52 subi r24, 0x2C ; 44 |
cee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
cf2: cf 91 pop r28 |
cf4: 1f 91 pop r17 |
cf6: 08 95 ret |
00000cf8 <LCD_Write>: |
} |
} |
void LCD_Write(unsigned char *this_text) |
{ |
cf8: 1f 93 push r17 |
cfa: cf 93 push r28 |
cfc: df 93 push r29 |
cfe: ec 01 movw r28, r24 |
unsigned char i = 0; |
d00: 10 e0 ldi r17, 0x00 ; 0 |
while(this_text[i] != 0) |
{ |
lcd_write_byte(this_text[i++]); |
_long_delay(); |
d02: 88 81 ld r24, Y |
d04: 88 23 and r24, r24 |
d06: 79 f0 breq .+30 ; 0xd26 <LCD_Write+0x2e> |
d08: fe 01 movw r30, r28 |
d0a: e1 0f add r30, r17 |
d0c: f1 1d adc r31, r1 |
d0e: 1f 5f subi r17, 0xFF ; 255 |
d10: 80 81 ld r24, Z |
d12: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
d16: 0e 94 c9 05 call 0xb92 <_long_delay> |
d1a: fe 01 movw r30, r28 |
d1c: e1 0f add r30, r17 |
d1e: f1 1d adc r31, r1 |
d20: 80 81 ld r24, Z |
d22: 88 23 and r24, r24 |
d24: 89 f7 brne .-30 ; 0xd08 <LCD_Write+0x10> |
d26: df 91 pop r29 |
d28: cf 91 pop r28 |
d2a: 1f 91 pop r17 |
d2c: 08 95 ret |
00000d2e <LCD_Putchar>: |
} |
} |
char LCD_Putchar(char zeichen) |
{ |
d2e: 1f 93 push r17 |
d30: 18 2f mov r17, r24 |
_short_delay(); |
d32: 0e 94 d9 05 call 0xbb2 <_short_delay> |
lcd_write_byte((char) zeichen); |
d36: 81 2f mov r24, r17 |
d38: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
d3c: 81 e0 ldi r24, 0x01 ; 1 |
d3e: 90 e0 ldi r25, 0x00 ; 0 |
d40: 1f 91 pop r17 |
d42: 08 95 ret |
00000d44 <PRINT>: |
#include "old_macros.h" |
//#define LIGHTPRINTF |
void PRINT(const char * ptr, unsigned int len) { |
d44: 0f 93 push r16 |
d46: 1f 93 push r17 |
d48: cf 93 push r28 |
d4a: df 93 push r29 |
d4c: 8c 01 movw r16, r24 |
d4e: eb 01 movw r28, r22 |
for(;len;len--) |
d50: 67 2b or r22, r23 |
d52: 39 f0 breq .+14 ; 0xd62 <PRINT+0x1e> |
LCD_Putchar(*ptr++); |
d54: f8 01 movw r30, r16 |
d56: 81 91 ld r24, Z+ |
d58: 8f 01 movw r16, r30 |
d5a: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d5e: 21 97 sbiw r28, 0x01 ; 1 |
d60: c9 f7 brne .-14 ; 0xd54 <PRINT+0x10> |
d62: df 91 pop r29 |
d64: cf 91 pop r28 |
d66: 1f 91 pop r17 |
d68: 0f 91 pop r16 |
d6a: 08 95 ret |
00000d6c <PRINTP>: |
} |
void PRINTP(const char * ptr, unsigned int len) { |
d6c: 0f 93 push r16 |
d6e: 1f 93 push r17 |
d70: cf 93 push r28 |
d72: df 93 push r29 |
d74: 8c 01 movw r16, r24 |
d76: eb 01 movw r28, r22 |
for(;len;len--) |
d78: 67 2b or r22, r23 |
d7a: 41 f0 breq .+16 ; 0xd8c <PRINTP+0x20> |
// LCD_Putchar(PRG_RDB(ptr++)); |
LCD_Putchar(pgm_read_byte(ptr++)); |
d7c: f8 01 movw r30, r16 |
d7e: 0f 5f subi r16, 0xFF ; 255 |
d80: 1f 4f sbci r17, 0xFF ; 255 |
d82: 84 91 lpm r24, Z |
d84: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d88: 21 97 sbiw r28, 0x01 ; 1 |
d8a: c1 f7 brne .-16 ; 0xd7c <PRINTP+0x10> |
d8c: df 91 pop r29 |
d8e: cf 91 pop r28 |
d90: 1f 91 pop r17 |
d92: 0f 91 pop r16 |
d94: 08 95 ret |
00000d96 <PAD_SP>: |
} |
void PAD_SP(signed char howmany) { |
d96: cf 93 push r28 |
d98: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
d9a: 18 16 cp r1, r24 |
d9c: 34 f4 brge .+12 ; 0xdaa <PAD_SP+0x14> |
LCD_Putchar(' '); |
d9e: 80 e2 ldi r24, 0x20 ; 32 |
da0: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
da4: c1 50 subi r28, 0x01 ; 1 |
da6: 1c 16 cp r1, r28 |
da8: d4 f3 brlt .-12 ; 0xd9e <PAD_SP+0x8> |
daa: cf 91 pop r28 |
dac: 08 95 ret |
00000dae <PAD_0>: |
} |
void PAD_0(signed char howmany) { |
dae: cf 93 push r28 |
db0: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
db2: 18 16 cp r1, r24 |
db4: 34 f4 brge .+12 ; 0xdc2 <PAD_0+0x14> |
LCD_Putchar('0'); |
db6: 80 e3 ldi r24, 0x30 ; 48 |
db8: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
dbc: c1 50 subi r28, 0x01 ; 1 |
dbe: 1c 16 cp r1, r28 |
dc0: d4 f3 brlt .-12 ; 0xdb6 <PAD_0+0x8> |
dc2: cf 91 pop r28 |
dc4: 08 95 ret |
00000dc6 <_printf_P>: |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
dc6: 2f 92 push r2 |
dc8: 3f 92 push r3 |
dca: 4f 92 push r4 |
dcc: 5f 92 push r5 |
dce: 6f 92 push r6 |
dd0: 7f 92 push r7 |
dd2: 8f 92 push r8 |
dd4: 9f 92 push r9 |
dd6: af 92 push r10 |
dd8: bf 92 push r11 |
dda: cf 92 push r12 |
ddc: df 92 push r13 |
dde: ef 92 push r14 |
de0: ff 92 push r15 |
de2: 0f 93 push r16 |
de4: 1f 93 push r17 |
de6: cf 93 push r28 |
de8: df 93 push r29 |
dea: cd b7 in r28, 0x3d ; 61 |
dec: de b7 in r29, 0x3e ; 62 |
dee: e0 97 sbiw r28, 0x30 ; 48 |
df0: 0f b6 in r0, 0x3f ; 63 |
df2: f8 94 cli |
df4: de bf out 0x3e, r29 ; 62 |
df6: 0f be out 0x3f, r0 ; 63 |
df8: cd bf out 0x3d, r28 ; 61 |
dfa: a5 e4 ldi r26, 0x45 ; 69 |
dfc: 6a 2e mov r6, r26 |
dfe: 71 2c mov r7, r1 |
e00: 6c 0e add r6, r28 |
e02: 7d 1e adc r7, r29 |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
e04: 1c a6 std Y+44, r1 ; 0x2c |
e06: 1d a6 std Y+45, r1 ; 0x2d |
e08: 1e a6 std Y+46, r1 ; 0x2e |
e0a: 1f a6 std Y+47, r1 ; 0x2f |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
va_start(ap, fmt0); |
fmt = fmt0; |
e0c: d3 01 movw r26, r6 |
e0e: ad 90 ld r10, X+ |
e10: bd 90 ld r11, X+ |
e12: 3d 01 movw r6, r26 |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
e14: c5 01 movw r24, r10 |
e16: 05 c0 rjmp .+10 ; 0xe22 <_printf_P+0x5c> |
e18: 05 32 cpi r16, 0x25 ; 37 |
e1a: 39 f0 breq .+14 ; 0xe2a <_printf_P+0x64> |
e1c: 08 94 sec |
e1e: a1 1c adc r10, r1 |
e20: b1 1c adc r11, r1 |
e22: f5 01 movw r30, r10 |
e24: 04 91 lpm r16, Z |
e26: 00 23 and r16, r16 |
e28: b9 f7 brne .-18 ; 0xe18 <_printf_P+0x52> |
/* void */; |
if ((n = fmt - fmark) != 0) { |
e2a: b5 01 movw r22, r10 |
e2c: 68 1b sub r22, r24 |
e2e: 79 0b sbc r23, r25 |
e30: 11 f0 breq .+4 ; 0xe36 <_printf_P+0x70> |
PRINTP(fmark, n); |
e32: 0e 94 b6 06 call 0xd6c <PRINTP> |
} |
if (ch == '\0') |
e36: 00 23 and r16, r16 |
e38: 09 f4 brne .+2 ; 0xe3c <_printf_P+0x76> |
e3a: 30 c2 rjmp .+1120 ; 0x129c <_printf_P+0x4d6> |
goto done; |
fmt++; /* skip over '%' */ |
e3c: 08 94 sec |
e3e: a1 1c adc r10, r1 |
e40: b1 1c adc r11, r1 |
flags = 0; |
e42: 55 24 eor r5, r5 |
dprec = 0; |
e44: 58 aa std Y+48, r5 ; 0x30 |
width = 0; |
e46: 25 2c mov r2, r5 |
prec = -1; |
e48: 1f ef ldi r17, 0xFF ; 255 |
sign = '\0'; |
e4a: 59 a6 std Y+41, r5 ; 0x29 |
rflag: ch = PRG_RDB(fmt++); |
e4c: f5 01 movw r30, r10 |
e4e: 08 94 sec |
e50: a1 1c adc r10, r1 |
e52: b1 1c adc r11, r1 |
e54: 04 91 lpm r16, Z |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
e56: 05 37 cpi r16, 0x75 ; 117 |
e58: 21 f0 breq .+8 ; 0xe62 <_printf_P+0x9c> |
e5a: 80 2f mov r24, r16 |
e5c: 80 62 ori r24, 0x20 ; 32 |
e5e: 88 37 cpi r24, 0x78 ; 120 |
e60: f1 f4 brne .+60 ; 0xe9e <_printf_P+0xd8> |
#endif |
if (flags&LONGINT) { |
e62: 50 fe sbrs r5, 0 |
e64: 0e c0 rjmp .+28 ; 0xe82 <_printf_P+0xbc> |
_ulong=va_arg(ap, unsigned long); |
e66: f3 01 movw r30, r6 |
e68: 24 e0 ldi r18, 0x04 ; 4 |
e6a: 30 e0 ldi r19, 0x00 ; 0 |
e6c: 62 0e add r6, r18 |
e6e: 73 1e adc r7, r19 |
e70: 80 81 ld r24, Z |
e72: 91 81 ldd r25, Z+1 ; 0x01 |
e74: a2 81 ldd r26, Z+2 ; 0x02 |
e76: b3 81 ldd r27, Z+3 ; 0x03 |
e78: 8c a7 std Y+44, r24 ; 0x2c |
e7a: 9d a7 std Y+45, r25 ; 0x2d |
e7c: ae a7 std Y+46, r26 ; 0x2e |
e7e: bf a7 std Y+47, r27 ; 0x2f |
e80: 0e c0 rjmp .+28 ; 0xe9e <_printf_P+0xd8> |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
e82: f3 01 movw r30, r6 |
e84: a2 e0 ldi r26, 0x02 ; 2 |
e86: b0 e0 ldi r27, 0x00 ; 0 |
e88: 6a 0e add r6, r26 |
e8a: 7b 1e adc r7, r27 |
e8c: 80 81 ld r24, Z |
e8e: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
e90: 9c 01 movw r18, r24 |
e92: 44 27 eor r20, r20 |
e94: 55 27 eor r21, r21 |
e96: 2c a7 std Y+44, r18 ; 0x2c |
e98: 3d a7 std Y+45, r19 ; 0x2d |
e9a: 4e a7 std Y+46, r20 ; 0x2e |
e9c: 5f a7 std Y+47, r21 ; 0x2f |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
e9e: 00 32 cpi r16, 0x20 ; 32 |
ea0: 21 f4 brne .+8 ; 0xeaa <_printf_P+0xe4> |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
ea2: 89 a5 ldd r24, Y+41 ; 0x29 |
ea4: 88 23 and r24, r24 |
ea6: 91 f6 brne .-92 ; 0xe4c <_printf_P+0x86> |
ea8: 1b c0 rjmp .+54 ; 0xee0 <_printf_P+0x11a> |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
eaa: 03 32 cpi r16, 0x23 ; 35 |
eac: 11 f4 brne .+4 ; 0xeb2 <_printf_P+0xec> |
flags |= ALT; |
eae: 38 e0 ldi r19, 0x08 ; 8 |
eb0: 81 c0 rjmp .+258 ; 0xfb4 <_printf_P+0x1ee> |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
eb2: 0a 32 cpi r16, 0x2A ; 42 |
eb4: 11 f0 breq .+4 ; 0xeba <_printf_P+0xf4> |
eb6: 0d 32 cpi r16, 0x2D ; 45 |
eb8: 89 f4 brne .+34 ; 0xedc <_printf_P+0x116> |
if (ch=='*') { |
eba: 0a 32 cpi r16, 0x2A ; 42 |
ebc: 51 f4 brne .+20 ; 0xed2 <_printf_P+0x10c> |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
ebe: f3 01 movw r30, r6 |
ec0: 42 e0 ldi r20, 0x02 ; 2 |
ec2: 50 e0 ldi r21, 0x00 ; 0 |
ec4: 64 0e add r6, r20 |
ec6: 75 1e adc r7, r21 |
ec8: 20 80 ld r2, Z |
eca: 22 20 and r2, r2 |
ecc: 0c f0 brlt .+2 ; 0xed0 <_printf_P+0x10a> |
ece: be cf rjmp .-132 ; 0xe4c <_printf_P+0x86> |
goto rflag; |
width = -width; |
ed0: 21 94 neg r2 |
} |
flags |= LADJUST; |
ed2: 50 e1 ldi r21, 0x10 ; 16 |
ed4: 55 2a or r5, r21 |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
ed6: 8f ed ldi r24, 0xDF ; 223 |
ed8: 58 22 and r5, r24 |
goto rflag; |
eda: b8 cf rjmp .-144 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='+') { |
edc: 0b 32 cpi r16, 0x2B ; 43 |
ede: 11 f4 brne .+4 ; 0xee4 <_printf_P+0x11e> |
sign = '+'; |
ee0: 09 a7 std Y+41, r16 ; 0x29 |
goto rflag; |
ee2: b4 cf rjmp .-152 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='.') { |
ee4: 0e 32 cpi r16, 0x2E ; 46 |
ee6: c1 f5 brne .+112 ; 0xf58 <_printf_P+0x192> |
if ((ch = PRG_RDB(fmt++)) == '*') { |
ee8: f5 01 movw r30, r10 |
eea: 08 94 sec |
eec: a1 1c adc r10, r1 |
eee: b1 1c adc r11, r1 |
ef0: 04 91 lpm r16, Z |
ef2: 0a 32 cpi r16, 0x2A ; 42 |
ef4: 79 f4 brne .+30 ; 0xf14 <_printf_P+0x14e> |
n = va_arg(ap, int); |
ef6: f3 01 movw r30, r6 |
ef8: a2 e0 ldi r26, 0x02 ; 2 |
efa: b0 e0 ldi r27, 0x00 ; 0 |
efc: 6a 0e add r6, r26 |
efe: 7b 1e adc r7, r27 |
f00: 60 81 ld r22, Z |
f02: 71 81 ldd r23, Z+1 ; 0x01 |
prec = n < 0 ? -1 : n; |
f04: bf ef ldi r27, 0xFF ; 255 |
f06: 6f 3f cpi r22, 0xFF ; 255 |
f08: 7b 07 cpc r23, r27 |
f0a: 14 f4 brge .+4 ; 0xf10 <_printf_P+0x14a> |
f0c: 6f ef ldi r22, 0xFF ; 255 |
f0e: 7f ef ldi r23, 0xFF ; 255 |
f10: 16 2f mov r17, r22 |
goto rflag; |
f12: 9c cf rjmp .-200 ; 0xe4c <_printf_P+0x86> |
} |
n = 0; |
f14: 60 e0 ldi r22, 0x00 ; 0 |
f16: 70 e0 ldi r23, 0x00 ; 0 |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
f18: 80 2f mov r24, r16 |
f1a: 80 53 subi r24, 0x30 ; 48 |
f1c: 8a 30 cpi r24, 0x0A ; 10 |
f1e: a0 f4 brcc .+40 ; 0xf48 <_printf_P+0x182> |
f20: cb 01 movw r24, r22 |
f22: f3 e0 ldi r31, 0x03 ; 3 |
f24: 88 0f add r24, r24 |
f26: 99 1f adc r25, r25 |
f28: fa 95 dec r31 |
f2a: e1 f7 brne .-8 ; 0xf24 <_printf_P+0x15e> |
f2c: 86 0f add r24, r22 |
f2e: 97 1f adc r25, r23 |
f30: 68 0f add r22, r24 |
f32: 79 1f adc r23, r25 |
f34: 60 0f add r22, r16 |
f36: 71 1d adc r23, r1 |
f38: 60 53 subi r22, 0x30 ; 48 |
f3a: 70 40 sbci r23, 0x00 ; 0 |
f3c: f5 01 movw r30, r10 |
f3e: 08 94 sec |
f40: a1 1c adc r10, r1 |
f42: b1 1c adc r11, r1 |
f44: 04 91 lpm r16, Z |
f46: e8 cf rjmp .-48 ; 0xf18 <_printf_P+0x152> |
} |
prec = n < 0 ? -1 : n; |
f48: ef ef ldi r30, 0xFF ; 255 |
f4a: 6f 3f cpi r22, 0xFF ; 255 |
f4c: 7e 07 cpc r23, r30 |
f4e: 14 f4 brge .+4 ; 0xf54 <_printf_P+0x18e> |
f50: 6f ef ldi r22, 0xFF ; 255 |
f52: 7f ef ldi r23, 0xFF ; 255 |
f54: 16 2f mov r17, r22 |
goto reswitch; |
f56: 7f cf rjmp .-258 ; 0xe56 <_printf_P+0x90> |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
f58: 00 33 cpi r16, 0x30 ; 48 |
f5a: 29 f4 brne .+10 ; 0xf66 <_printf_P+0x1a0> |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
f5c: 54 fc sbrc r5, 4 |
f5e: 76 cf rjmp .-276 ; 0xe4c <_printf_P+0x86> |
flags |= ZEROPAD; /* '-' disables '0' */ |
f60: f0 e2 ldi r31, 0x20 ; 32 |
f62: 5f 2a or r5, r31 |
goto rflag; |
f64: 73 cf rjmp .-282 ; 0xe4c <_printf_P+0x86> |
} else if (ch>='1' && ch<='9') { |
f66: 80 2f mov r24, r16 |
f68: 81 53 subi r24, 0x31 ; 49 |
f6a: 89 30 cpi r24, 0x09 ; 9 |
f6c: d8 f4 brcc .+54 ; 0xfa4 <_printf_P+0x1de> |
n = 0; |
f6e: 60 e0 ldi r22, 0x00 ; 0 |
f70: 70 e0 ldi r23, 0x00 ; 0 |
do { |
n = 10 * n + to_digit(ch); |
f72: cb 01 movw r24, r22 |
f74: e3 e0 ldi r30, 0x03 ; 3 |
f76: 88 0f add r24, r24 |
f78: 99 1f adc r25, r25 |
f7a: ea 95 dec r30 |
f7c: e1 f7 brne .-8 ; 0xf76 <_printf_P+0x1b0> |
f7e: 86 0f add r24, r22 |
f80: 97 1f adc r25, r23 |
f82: 68 0f add r22, r24 |
f84: 79 1f adc r23, r25 |
f86: 60 0f add r22, r16 |
f88: 71 1d adc r23, r1 |
f8a: 60 53 subi r22, 0x30 ; 48 |
f8c: 70 40 sbci r23, 0x00 ; 0 |
ch = PRG_RDB(fmt++); |
f8e: f5 01 movw r30, r10 |
f90: 08 94 sec |
f92: a1 1c adc r10, r1 |
f94: b1 1c adc r11, r1 |
f96: 04 91 lpm r16, Z |
} while (is_digit(ch)); |
f98: 80 2f mov r24, r16 |
f9a: 80 53 subi r24, 0x30 ; 48 |
f9c: 8a 30 cpi r24, 0x0A ; 10 |
f9e: 48 f3 brcs .-46 ; 0xf72 <_printf_P+0x1ac> |
width = n; |
fa0: 26 2e mov r2, r22 |
goto reswitch; |
fa2: 59 cf rjmp .-334 ; 0xe56 <_printf_P+0x90> |
} else if (ch=='h') { |
fa4: 08 36 cpi r16, 0x68 ; 104 |
fa6: 19 f4 brne .+6 ; 0xfae <_printf_P+0x1e8> |
flags |= SHORTINT; |
fa8: 24 e0 ldi r18, 0x04 ; 4 |
faa: 52 2a or r5, r18 |
goto rflag; |
fac: 4f cf rjmp .-354 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='l') { |
fae: 0c 36 cpi r16, 0x6C ; 108 |
fb0: 19 f4 brne .+6 ; 0xfb8 <_printf_P+0x1f2> |
flags |= LONGINT; |
fb2: 31 e0 ldi r19, 0x01 ; 1 |
fb4: 53 2a or r5, r19 |
goto rflag; |
fb6: 4a cf rjmp .-364 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='c') { |
fb8: 03 36 cpi r16, 0x63 ; 99 |
fba: 61 f4 brne .+24 ; 0xfd4 <_printf_P+0x20e> |
*(cp = buf) = va_arg(ap, int); |
fbc: 4e 01 movw r8, r28 |
fbe: 08 94 sec |
fc0: 81 1c adc r8, r1 |
fc2: 91 1c adc r9, r1 |
fc4: f3 01 movw r30, r6 |
fc6: 42 e0 ldi r20, 0x02 ; 2 |
fc8: 50 e0 ldi r21, 0x00 ; 0 |
fca: 64 0e add r6, r20 |
fcc: 75 1e adc r7, r21 |
fce: 80 81 ld r24, Z |
fd0: 89 83 std Y+1, r24 ; 0x01 |
fd2: 1b c1 rjmp .+566 ; 0x120a <_printf_P+0x444> |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
fd4: 04 34 cpi r16, 0x44 ; 68 |
fd6: 21 f0 breq .+8 ; 0xfe0 <_printf_P+0x21a> |
fd8: 04 36 cpi r16, 0x64 ; 100 |
fda: 11 f0 breq .+4 ; 0xfe0 <_printf_P+0x21a> |
fdc: 09 36 cpi r16, 0x69 ; 105 |
fde: b1 f5 brne .+108 ; 0x104c <_printf_P+0x286> |
if(ch=='D') |
fe0: 04 34 cpi r16, 0x44 ; 68 |
fe2: 11 f4 brne .+4 ; 0xfe8 <_printf_P+0x222> |
flags |= LONGINT; |
fe4: 51 e0 ldi r21, 0x01 ; 1 |
fe6: 55 2a or r5, r21 |
if (flags&LONGINT) { |
fe8: 50 fe sbrs r5, 0 |
fea: 0a c0 rjmp .+20 ; 0x1000 <_printf_P+0x23a> |
_ulong=va_arg(ap, long); |
fec: f3 01 movw r30, r6 |
fee: 84 e0 ldi r24, 0x04 ; 4 |
ff0: 90 e0 ldi r25, 0x00 ; 0 |
ff2: 68 0e add r6, r24 |
ff4: 79 1e adc r7, r25 |
ff6: 20 81 ld r18, Z |
ff8: 31 81 ldd r19, Z+1 ; 0x01 |
ffa: 42 81 ldd r20, Z+2 ; 0x02 |
ffc: 53 81 ldd r21, Z+3 ; 0x03 |
ffe: 0c c0 rjmp .+24 ; 0x1018 <_printf_P+0x252> |
} else { |
register int _d; |
_d=va_arg(ap, int); |
1000: f3 01 movw r30, r6 |
1002: 42 e0 ldi r20, 0x02 ; 2 |
1004: 50 e0 ldi r21, 0x00 ; 0 |
1006: 64 0e add r6, r20 |
1008: 75 1e adc r7, r21 |
100a: 80 81 ld r24, Z |
100c: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
100e: 9c 01 movw r18, r24 |
1010: 44 27 eor r20, r20 |
1012: 37 fd sbrc r19, 7 |
1014: 40 95 com r20 |
1016: 54 2f mov r21, r20 |
1018: 2c a7 std Y+44, r18 ; 0x2c |
101a: 3d a7 std Y+45, r19 ; 0x2d |
101c: 4e a7 std Y+46, r20 ; 0x2e |
101e: 5f a7 std Y+47, r21 ; 0x2f |
} |
if ((long)_ulong < 0) { |
1020: 8c a5 ldd r24, Y+44 ; 0x2c |
1022: 9d a5 ldd r25, Y+45 ; 0x2d |
1024: ae a5 ldd r26, Y+46 ; 0x2e |
1026: bf a5 ldd r27, Y+47 ; 0x2f |
1028: b7 ff sbrs r27, 7 |
102a: 0d c0 rjmp .+26 ; 0x1046 <_printf_P+0x280> |
_ulong = -_ulong; |
102c: b0 95 com r27 |
102e: a0 95 com r26 |
1030: 90 95 com r25 |
1032: 81 95 neg r24 |
1034: 9f 4f sbci r25, 0xFF ; 255 |
1036: af 4f sbci r26, 0xFF ; 255 |
1038: bf 4f sbci r27, 0xFF ; 255 |
103a: 8c a7 std Y+44, r24 ; 0x2c |
103c: 9d a7 std Y+45, r25 ; 0x2d |
103e: ae a7 std Y+46, r26 ; 0x2e |
1040: bf a7 std Y+47, r27 ; 0x2f |
sign = '-'; |
1042: 8d e2 ldi r24, 0x2D ; 45 |
1044: 89 a7 std Y+41, r24 ; 0x29 |
} |
base = DEC; |
1046: 7a e0 ldi r23, 0x0A ; 10 |
1048: 47 2e mov r4, r23 |
goto number; |
104a: 7b c0 rjmp .+246 ; 0x1142 <_printf_P+0x37c> |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
104c: 0f 34 cpi r16, 0x4F ; 79 |
104e: 11 f0 breq .+4 ; 0x1054 <_printf_P+0x28e> |
1050: 0f 36 cpi r16, 0x6F ; 111 |
1052: 39 f4 brne .+14 ; 0x1062 <_printf_P+0x29c> |
if (ch=='O') |
1054: 0f 34 cpi r16, 0x4F ; 79 |
1056: 11 f4 brne .+4 ; 0x105c <_printf_P+0x296> |
flags |= LONGINT; |
1058: 91 e0 ldi r25, 0x01 ; 1 |
105a: 59 2a or r5, r25 |
base = OCT; |
105c: 68 e0 ldi r22, 0x08 ; 8 |
105e: 46 2e mov r4, r22 |
goto nosign; |
1060: 6f c0 rjmp .+222 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='p') { |
1062: 00 37 cpi r16, 0x70 ; 112 |
1064: a1 f4 brne .+40 ; 0x108e <_printf_P+0x2c8> |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
1066: f3 01 movw r30, r6 |
1068: a2 e0 ldi r26, 0x02 ; 2 |
106a: b0 e0 ldi r27, 0x00 ; 0 |
106c: 6a 0e add r6, r26 |
106e: 7b 1e adc r7, r27 |
1070: 80 81 ld r24, Z |
1072: 91 81 ldd r25, Z+1 ; 0x01 |
1074: 9c 01 movw r18, r24 |
1076: 44 27 eor r20, r20 |
1078: 55 27 eor r21, r21 |
107a: 2c a7 std Y+44, r18 ; 0x2c |
107c: 3d a7 std Y+45, r19 ; 0x2d |
107e: 4e a7 std Y+46, r20 ; 0x2e |
1080: 5f a7 std Y+47, r21 ; 0x2f |
base = HEX; |
1082: 50 e1 ldi r21, 0x10 ; 16 |
1084: 45 2e mov r4, r21 |
flags |= HEXPREFIX; |
1086: 30 e4 ldi r19, 0x40 ; 64 |
1088: 53 2a or r5, r19 |
ch = 'x'; |
108a: 08 e7 ldi r16, 0x78 ; 120 |
goto nosign; |
108c: 59 c0 rjmp .+178 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='s') { // print a string from RAM |
108e: 03 37 cpi r16, 0x73 ; 115 |
1090: c1 f5 brne .+112 ; 0x1102 <_printf_P+0x33c> |
if ((cp = va_arg(ap, char *)) == NULL) { |
1092: f3 01 movw r30, r6 |
1094: 42 e0 ldi r20, 0x02 ; 2 |
1096: 50 e0 ldi r21, 0x00 ; 0 |
1098: 64 0e add r6, r20 |
109a: 75 1e adc r7, r21 |
109c: 80 80 ld r8, Z |
109e: 91 80 ldd r9, Z+1 ; 0x01 |
10a0: 81 14 cp r8, r1 |
10a2: 91 04 cpc r9, r1 |
10a4: 89 f4 brne .+34 ; 0x10c8 <_printf_P+0x302> |
cp=buf; |
10a6: 4e 01 movw r8, r28 |
10a8: 08 94 sec |
10aa: 81 1c adc r8, r1 |
10ac: 91 1c adc r9, r1 |
cp[0] = '('; |
10ae: 88 e2 ldi r24, 0x28 ; 40 |
10b0: 89 83 std Y+1, r24 ; 0x01 |
cp[1] = 'n'; |
10b2: 8e e6 ldi r24, 0x6E ; 110 |
10b4: f4 01 movw r30, r8 |
10b6: 81 83 std Z+1, r24 ; 0x01 |
cp[2] = 'u'; |
10b8: 85 e7 ldi r24, 0x75 ; 117 |
10ba: 8b 83 std Y+3, r24 ; 0x03 |
cp[4] = cp[3] = 'l'; |
10bc: 8c e6 ldi r24, 0x6C ; 108 |
10be: 8c 83 std Y+4, r24 ; 0x04 |
10c0: 8d 83 std Y+5, r24 ; 0x05 |
cp[5] = ')'; |
10c2: 89 e2 ldi r24, 0x29 ; 41 |
10c4: 8e 83 std Y+6, r24 ; 0x06 |
cp[6] = '\0'; |
10c6: 1f 82 std Y+7, r1 ; 0x07 |
} |
if (prec >= 0) { |
10c8: 17 fd sbrc r17, 7 |
10ca: 13 c0 rjmp .+38 ; 0x10f2 <_printf_P+0x32c> |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
10cc: 81 2f mov r24, r17 |
10ce: 99 27 eor r25, r25 |
10d0: 87 fd sbrc r24, 7 |
10d2: 90 95 com r25 |
10d4: ac 01 movw r20, r24 |
10d6: 60 e0 ldi r22, 0x00 ; 0 |
10d8: 70 e0 ldi r23, 0x00 ; 0 |
10da: c4 01 movw r24, r8 |
10dc: 0e 94 64 0c call 0x18c8 <memchr> |
if (p != NULL) { |
10e0: 00 97 sbiw r24, 0x00 ; 0 |
10e2: 29 f0 breq .+10 ; 0x10ee <_printf_P+0x328> |
size = p - cp; |
10e4: d8 2e mov r13, r24 |
10e6: d8 18 sub r13, r8 |
if (size > prec) |
10e8: 1d 15 cp r17, r13 |
10ea: 0c f0 brlt .+2 ; 0x10ee <_printf_P+0x328> |
10ec: 90 c0 rjmp .+288 ; 0x120e <_printf_P+0x448> |
size = prec; |
} else |
size = prec; |
10ee: d1 2e mov r13, r17 |
10f0: 8e c0 rjmp .+284 ; 0x120e <_printf_P+0x448> |
} else |
size = strlen(cp); |
10f2: f4 01 movw r30, r8 |
10f4: 01 90 ld r0, Z+ |
10f6: 00 20 and r0, r0 |
10f8: e9 f7 brne .-6 ; 0x10f4 <_printf_P+0x32e> |
10fa: 31 97 sbiw r30, 0x01 ; 1 |
10fc: de 2e mov r13, r30 |
10fe: d8 18 sub r13, r8 |
1100: 86 c0 rjmp .+268 ; 0x120e <_printf_P+0x448> |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
1102: 05 35 cpi r16, 0x55 ; 85 |
1104: 11 f0 breq .+4 ; 0x110a <_printf_P+0x344> |
1106: 05 37 cpi r16, 0x75 ; 117 |
1108: 39 f4 brne .+14 ; 0x1118 <_printf_P+0x352> |
if (ch=='U') |
110a: 05 35 cpi r16, 0x55 ; 85 |
110c: 11 f4 brne .+4 ; 0x1112 <_printf_P+0x34c> |
flags |= LONGINT; |
110e: f1 e0 ldi r31, 0x01 ; 1 |
1110: 5f 2a or r5, r31 |
base = DEC; |
1112: 4a e0 ldi r20, 0x0A ; 10 |
1114: 44 2e mov r4, r20 |
goto nosign; |
1116: 14 c0 rjmp .+40 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='X'||ch=='x') { |
1118: 08 35 cpi r16, 0x58 ; 88 |
111a: 19 f0 breq .+6 ; 0x1122 <_printf_P+0x35c> |
111c: 08 37 cpi r16, 0x78 ; 120 |
111e: 09 f0 breq .+2 ; 0x1122 <_printf_P+0x35c> |
1120: 6c c0 rjmp .+216 ; 0x11fa <_printf_P+0x434> |
base = HEX; |
1122: 30 e1 ldi r19, 0x10 ; 16 |
1124: 43 2e mov r4, r19 |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
1126: 53 fe sbrs r5, 3 |
1128: 0b c0 rjmp .+22 ; 0x1140 <_printf_P+0x37a> |
112a: 2c a5 ldd r18, Y+44 ; 0x2c |
112c: 3d a5 ldd r19, Y+45 ; 0x2d |
112e: 4e a5 ldd r20, Y+46 ; 0x2e |
1130: 5f a5 ldd r21, Y+47 ; 0x2f |
1132: 21 15 cp r18, r1 |
1134: 31 05 cpc r19, r1 |
1136: 41 05 cpc r20, r1 |
1138: 51 05 cpc r21, r1 |
113a: 11 f0 breq .+4 ; 0x1140 <_printf_P+0x37a> |
flags |= HEXPREFIX; |
113c: 30 e4 ldi r19, 0x40 ; 64 |
113e: 53 2a or r5, r19 |
/* unsigned conversions */ |
nosign: sign = '\0'; |
1140: 19 a6 std Y+41, r1 ; 0x29 |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
1142: 18 ab std Y+48, r17 ; 0x30 |
1144: 17 fd sbrc r17, 7 |
1146: 02 c0 rjmp .+4 ; 0x114c <_printf_P+0x386> |
flags &= ~ZEROPAD; |
1148: 4f ed ldi r20, 0xDF ; 223 |
114a: 54 22 and r5, r20 |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
114c: 29 e2 ldi r18, 0x29 ; 41 |
114e: 82 2e mov r8, r18 |
1150: 91 2c mov r9, r1 |
1152: 8c 0e add r8, r28 |
1154: 9d 1e adc r9, r29 |
if (_ulong != 0 || prec != 0) { |
1156: 8c a5 ldd r24, Y+44 ; 0x2c |
1158: 9d a5 ldd r25, Y+45 ; 0x2d |
115a: ae a5 ldd r26, Y+46 ; 0x2e |
115c: bf a5 ldd r27, Y+47 ; 0x2f |
115e: 00 97 sbiw r24, 0x00 ; 0 |
1160: a1 05 cpc r26, r1 |
1162: b1 05 cpc r27, r1 |
1164: 21 f4 brne .+8 ; 0x116e <_printf_P+0x3a8> |
1166: 98 a9 ldd r25, Y+48 ; 0x30 |
1168: 99 23 and r25, r25 |
116a: 09 f4 brne .+2 ; 0x116e <_printf_P+0x3a8> |
116c: 3f c0 rjmp .+126 ; 0x11ec <_printf_P+0x426> |
116e: c4 2c mov r12, r4 |
1170: dd 24 eor r13, r13 |
1172: ee 24 eor r14, r14 |
1174: ff 24 eor r15, r15 |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
1176: 33 24 eor r3, r3 |
1178: 2c a5 ldd r18, Y+44 ; 0x2c |
117a: 3d a5 ldd r19, Y+45 ; 0x2d |
117c: 4e a5 ldd r20, Y+46 ; 0x2e |
117e: 5f a5 ldd r21, Y+47 ; 0x2f |
1180: 2c 15 cp r18, r12 |
1182: 3d 05 cpc r19, r13 |
1184: 4e 05 cpc r20, r14 |
1186: 5f 05 cpc r21, r15 |
1188: 10 f0 brcs .+4 ; 0x118e <_printf_P+0x3c8> |
118a: 91 e0 ldi r25, 0x01 ; 1 |
118c: 39 2e mov r3, r25 |
_d = _ulong % base; |
118e: 6c a5 ldd r22, Y+44 ; 0x2c |
1190: 7d a5 ldd r23, Y+45 ; 0x2d |
1192: 8e a5 ldd r24, Y+46 ; 0x2e |
1194: 9f a5 ldd r25, Y+47 ; 0x2f |
1196: a7 01 movw r20, r14 |
1198: 96 01 movw r18, r12 |
119a: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
119e: dc 01 movw r26, r24 |
11a0: cb 01 movw r24, r22 |
11a2: 18 2f mov r17, r24 |
if (_d<10) { |
11a4: 8a 30 cpi r24, 0x0A ; 10 |
11a6: 10 f4 brcc .+4 ; 0x11ac <_printf_P+0x3e6> |
_d+='0'; |
11a8: 10 5d subi r17, 0xD0 ; 208 |
11aa: 04 c0 rjmp .+8 ; 0x11b4 <_printf_P+0x3ee> |
} else { |
_d+='a'-10; |
11ac: 19 5a subi r17, 0xA9 ; 169 |
if (ch=='X') _d&=~0x20; |
11ae: 08 35 cpi r16, 0x58 ; 88 |
11b0: 09 f4 brne .+2 ; 0x11b4 <_printf_P+0x3ee> |
11b2: 1f 7d andi r17, 0xDF ; 223 |
} |
*--cp=_d; |
11b4: d4 01 movw r26, r8 |
11b6: 1e 93 st -X, r17 |
11b8: 4d 01 movw r8, r26 |
_ulong /= base; |
11ba: 6c a5 ldd r22, Y+44 ; 0x2c |
11bc: 7d a5 ldd r23, Y+45 ; 0x2d |
11be: 8e a5 ldd r24, Y+46 ; 0x2e |
11c0: 9f a5 ldd r25, Y+47 ; 0x2f |
11c2: a7 01 movw r20, r14 |
11c4: 96 01 movw r18, r12 |
11c6: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
11ca: 2c a7 std Y+44, r18 ; 0x2c |
11cc: 3d a7 std Y+45, r19 ; 0x2d |
11ce: 4e a7 std Y+46, r20 ; 0x2e |
11d0: 5f a7 std Y+47, r21 ; 0x2f |
} while (notlastdigit); |
11d2: 33 20 and r3, r3 |
11d4: 81 f6 brne .-96 ; 0x1176 <_printf_P+0x3b0> |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
11d6: b8 e0 ldi r27, 0x08 ; 8 |
11d8: 4b 16 cp r4, r27 |
11da: 41 f4 brne .+16 ; 0x11ec <_printf_P+0x426> |
11dc: 53 fe sbrs r5, 3 |
11de: 06 c0 rjmp .+12 ; 0x11ec <_printf_P+0x426> |
11e0: 10 33 cpi r17, 0x30 ; 48 |
11e2: 21 f0 breq .+8 ; 0x11ec <_printf_P+0x426> |
*--cp = '0'; |
11e4: 80 e3 ldi r24, 0x30 ; 48 |
11e6: f4 01 movw r30, r8 |
11e8: 82 93 st -Z, r24 |
11ea: 4f 01 movw r8, r30 |
#endif |
} |
size = buf + BUF - cp; |
11ec: ce 01 movw r24, r28 |
11ee: 01 96 adiw r24, 0x01 ; 1 |
11f0: d8 2e mov r13, r24 |
11f2: d8 18 sub r13, r8 |
11f4: f8 e2 ldi r31, 0x28 ; 40 |
11f6: df 0e add r13, r31 |
11f8: 0b c0 rjmp .+22 ; 0x1210 <_printf_P+0x44a> |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
11fa: 00 23 and r16, r16 |
11fc: 09 f4 brne .+2 ; 0x1200 <_printf_P+0x43a> |
11fe: 4e c0 rjmp .+156 ; 0x129c <_printf_P+0x4d6> |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
1200: 4e 01 movw r8, r28 |
1202: 08 94 sec |
1204: 81 1c adc r8, r1 |
1206: 91 1c adc r9, r1 |
*cp = ch; |
1208: 09 83 std Y+1, r16 ; 0x01 |
size = 1; |
120a: 81 e0 ldi r24, 0x01 ; 1 |
120c: d8 2e mov r13, r24 |
sign = '\0'; |
120e: 19 a6 std Y+41, r1 ; 0x29 |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
1210: 1d 2d mov r17, r13 |
dpad = dprec - size; |
1212: c8 a8 ldd r12, Y+48 ; 0x30 |
1214: cd 18 sub r12, r13 |
if (dpad < 0) |
1216: c7 fc sbrc r12, 7 |
dpad = 0; |
1218: cc 24 eor r12, r12 |
if (sign) |
121a: 89 a5 ldd r24, Y+41 ; 0x29 |
121c: 88 23 and r24, r24 |
121e: 11 f0 breq .+4 ; 0x1224 <_printf_P+0x45e> |
fieldsz++; |
1220: 1f 5f subi r17, 0xFF ; 255 |
1222: 02 c0 rjmp .+4 ; 0x1228 <_printf_P+0x462> |
else if (flags & HEXPREFIX) |
1224: 56 fc sbrc r5, 6 |
fieldsz += 2; |
1226: 1e 5f subi r17, 0xFE ; 254 |
fieldsz += dpad; |
1228: 1c 0d add r17, r12 |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
122a: e5 2c mov r14, r5 |
122c: ff 24 eor r15, r15 |
122e: c7 01 movw r24, r14 |
1230: 80 73 andi r24, 0x30 ; 48 |
1232: 90 70 andi r25, 0x00 ; 0 |
1234: 89 2b or r24, r25 |
1236: 21 f4 brne .+8 ; 0x1240 <_printf_P+0x47a> |
PAD_SP(width - fieldsz); |
1238: 82 2d mov r24, r2 |
123a: 81 1b sub r24, r17 |
123c: 0e 94 cb 06 call 0xd96 <PAD_SP> |
/* prefix */ |
if (sign) { |
1240: 89 a5 ldd r24, Y+41 ; 0x29 |
1242: 88 23 and r24, r24 |
1244: 29 f0 breq .+10 ; 0x1250 <_printf_P+0x48a> |
PRINT(&sign, 1); |
1246: 61 e0 ldi r22, 0x01 ; 1 |
1248: 70 e0 ldi r23, 0x00 ; 0 |
124a: ce 01 movw r24, r28 |
124c: 89 96 adiw r24, 0x29 ; 41 |
124e: 09 c0 rjmp .+18 ; 0x1262 <_printf_P+0x49c> |
} else if (flags & HEXPREFIX) { |
1250: e6 fe sbrs r14, 6 |
1252: 09 c0 rjmp .+18 ; 0x1266 <_printf_P+0x4a0> |
ox[0] = '0'; |
1254: 80 e3 ldi r24, 0x30 ; 48 |
1256: 8a a7 std Y+42, r24 ; 0x2a |
ox[1] = ch; |
1258: 0b a7 std Y+43, r16 ; 0x2b |
PRINT(ox, 2); |
125a: 62 e0 ldi r22, 0x02 ; 2 |
125c: 70 e0 ldi r23, 0x00 ; 0 |
125e: ce 01 movw r24, r28 |
1260: 8a 96 adiw r24, 0x2a ; 42 |
1262: 0e 94 a2 06 call 0xd44 <PRINT> |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
1266: c7 01 movw r24, r14 |
1268: 80 73 andi r24, 0x30 ; 48 |
126a: 90 70 andi r25, 0x00 ; 0 |
126c: 80 97 sbiw r24, 0x20 ; 32 |
126e: 21 f4 brne .+8 ; 0x1278 <_printf_P+0x4b2> |
PAD_0(width - fieldsz); |
1270: 82 2d mov r24, r2 |
1272: 81 1b sub r24, r17 |
1274: 0e 94 d7 06 call 0xdae <PAD_0> |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
1278: 8c 2d mov r24, r12 |
127a: 0e 94 d7 06 call 0xdae <PAD_0> |
/* the string or number proper */ |
PRINT(cp, size); |
127e: 8d 2d mov r24, r13 |
1280: 99 27 eor r25, r25 |
1282: 87 fd sbrc r24, 7 |
1284: 90 95 com r25 |
1286: bc 01 movw r22, r24 |
1288: c4 01 movw r24, r8 |
128a: 0e 94 a2 06 call 0xd44 <PRINT> |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
128e: e4 fe sbrs r14, 4 |
1290: c1 cd rjmp .-1150 ; 0xe14 <_printf_P+0x4e> |
PAD_SP(width - fieldsz); |
1292: 82 2d mov r24, r2 |
1294: 81 1b sub r24, r17 |
1296: 0e 94 cb 06 call 0xd96 <PAD_SP> |
129a: bc cd rjmp .-1160 ; 0xe14 <_printf_P+0x4e> |
129c: e0 96 adiw r28, 0x30 ; 48 |
129e: 0f b6 in r0, 0x3f ; 63 |
12a0: f8 94 cli |
12a2: de bf out 0x3e, r29 ; 62 |
12a4: 0f be out 0x3f, r0 ; 63 |
12a6: cd bf out 0x3d, r28 ; 61 |
12a8: df 91 pop r29 |
12aa: cf 91 pop r28 |
12ac: 1f 91 pop r17 |
12ae: 0f 91 pop r16 |
12b0: ff 90 pop r15 |
12b2: ef 90 pop r14 |
12b4: df 90 pop r13 |
12b6: cf 90 pop r12 |
12b8: bf 90 pop r11 |
12ba: af 90 pop r10 |
12bc: 9f 90 pop r9 |
12be: 8f 90 pop r8 |
12c0: 7f 90 pop r7 |
12c2: 6f 90 pop r6 |
12c4: 5f 90 pop r5 |
12c6: 4f 90 pop r4 |
12c8: 3f 90 pop r3 |
12ca: 2f 90 pop r2 |
12cc: 08 95 ret |
000012ce <__vector_9>: |
}; |
SIGNAL (SIG_OVERFLOW1) |
{ |
12ce: 1f 92 push r1 |
12d0: 0f 92 push r0 |
12d2: 0f b6 in r0, 0x3f ; 63 |
12d4: 0f 92 push r0 |
12d6: 11 24 eor r1, r1 |
12d8: 8f 93 push r24 |
12da: 9f 93 push r25 |
static unsigned char cnt_10ms = 0; |
TCNT1 -= TIMER_RELOAD_VALUE; |
12dc: 8c b5 in r24, 0x2c ; 44 |
12de: 9d b5 in r25, 0x2d ; 45 |
12e0: 8a 5f subi r24, 0xFA ; 250 |
12e2: 90 40 sbci r25, 0x00 ; 0 |
12e4: 9d bd out 0x2d, r25 ; 45 |
12e6: 8c bd out 0x2c, r24 ; 44 |
CountMilliseconds++; |
12e8: 80 91 a5 00 lds r24, 0x00A5 |
12ec: 90 91 a6 00 lds r25, 0x00A6 |
12f0: 01 96 adiw r24, 0x01 ; 1 |
12f2: 90 93 a6 00 sts 0x00A6, r25 |
12f6: 80 93 a5 00 sts 0x00A5, r24 |
if(DisplayBusy) DisplayBusy--; |
12fa: 80 91 93 00 lds r24, 0x0093 |
12fe: 88 23 and r24, r24 |
1300: 29 f0 breq .+10 ; 0x130c <__vector_9+0x3e> |
1302: 80 91 93 00 lds r24, 0x0093 |
1306: 81 50 subi r24, 0x01 ; 1 |
1308: 80 93 93 00 sts 0x0093, r24 |
if(LoescheIrCodeTimer) |
130c: 80 91 7c 00 lds r24, 0x007C |
1310: 90 91 7d 00 lds r25, 0x007D |
1314: 00 97 sbiw r24, 0x00 ; 0 |
1316: 59 f0 breq .+22 ; 0x132e <__vector_9+0x60> |
{ |
if(--LoescheIrCodeTimer == 0) IR_Code = 0; |
1318: 01 97 sbiw r24, 0x01 ; 1 |
131a: 90 93 7d 00 sts 0x007D, r25 |
131e: 80 93 7c 00 sts 0x007C, r24 |
1322: 00 97 sbiw r24, 0x00 ; 0 |
1324: 21 f4 brne .+8 ; 0x132e <__vector_9+0x60> |
1326: 90 93 c8 01 sts 0x01C8, r25 |
132a: 80 93 c7 01 sts 0x01C7, r24 |
132e: 9f 91 pop r25 |
1330: 8f 91 pop r24 |
1332: 0f 90 pop r0 |
1334: 0f be out 0x3f, r0 ; 63 |
1336: 0f 90 pop r0 |
1338: 1f 90 pop r1 |
133a: 18 95 reti |
0000133c <Timer1_Init>: |
} |
} |
void Timer1_Init(void) |
{ |
TCCR1B = TIMER_TEILER; |
133c: 83 e0 ldi r24, 0x03 ; 3 |
133e: 8e bd out 0x2e, r24 ; 46 |
TCNT1 = -TIMER_RELOAD_VALUE; // reload |
1340: 86 e0 ldi r24, 0x06 ; 6 |
1342: 9f ef ldi r25, 0xFF ; 255 |
1344: 9d bd out 0x2d, r25 ; 45 |
1346: 8c bd out 0x2c, r24 ; 44 |
//OCR1 = 0x00; |
// Timer(s)/Counter(s) Interrupt(s) initialization |
#if defined (__AVR_ATmega32__) |
TIMSK |= 0x04; |
1348: 89 b7 in r24, 0x39 ; 57 |
134a: 84 60 ori r24, 0x04 ; 4 |
134c: 89 bf out 0x39, r24 ; 57 |
134e: 08 95 ret |
00001350 <SetDelay>: |
#endif |
#if defined (__AVR_ATmega644__) |
TIMSK1 |= _BV(TOIE1); |
#endif |
} |
unsigned int SetDelay (unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
1350: 20 91 a5 00 lds r18, 0x00A5 |
1354: 30 91 a6 00 lds r19, 0x00A6 |
1358: 28 0f add r18, r24 |
135a: 39 1f adc r19, r25 |
} |
135c: c9 01 movw r24, r18 |
135e: 01 97 sbiw r24, 0x01 ; 1 |
1360: 08 95 ret |
00001362 <CheckDelay>: |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
1362: 20 91 a5 00 lds r18, 0x00A5 |
1366: 30 91 a6 00 lds r19, 0x00A6 |
136a: 82 1b sub r24, r18 |
136c: 93 0b sbc r25, r19 |
136e: 89 2f mov r24, r25 |
1370: 99 27 eor r25, r25 |
1372: 80 78 andi r24, 0x80 ; 128 |
} |
1374: 99 27 eor r25, r25 |
1376: 08 95 ret |
00001378 <Delay_ms>: |
void Delay_ms(unsigned int w) |
{ |
1378: cf 93 push r28 |
137a: df 93 push r29 |
unsigned int akt; |
akt = SetDelay(w); |
137c: 0e 94 a8 09 call 0x1350 <SetDelay> |
1380: ec 01 movw r28, r24 |
while (!CheckDelay(akt)); |
1382: ce 01 movw r24, r28 |
1384: 0e 94 b1 09 call 0x1362 <CheckDelay> |
1388: 88 23 and r24, r24 |
138a: d9 f3 breq .-10 ; 0x1382 <Delay_ms+0xa> |
138c: df 91 pop r29 |
138e: cf 91 pop r28 |
1390: 08 95 ret |
00001392 <Keyboard_Init>: |
unsigned int KeyTimer = 0; |
void Keyboard_Init(void) |
{ |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1392: 82 e3 ldi r24, 0x32 ; 50 |
1394: 90 e0 ldi r25, 0x00 ; 0 |
1396: 0e 94 a8 09 call 0x1350 <SetDelay> |
139a: 90 93 a9 00 sts 0x00A9, r25 |
139e: 80 93 a8 00 sts 0x00A8, r24 |
13a2: 08 95 ret |
000013a4 <GetKeyboard>: |
} |
unsigned char GetKeyboard(void) |
{ |
13a4: cf 93 push r28 |
static char taste1 = 0, taste2 = 0,taste3 = 0,taste4 = 0,taste5 = 0; |
unsigned char ret = 0; |
13a6: c0 e0 ldi r28, 0x00 ; 0 |
if(CheckDelay(KeyTimer)) |
13a8: 80 91 a8 00 lds r24, 0x00A8 |
13ac: 90 91 a9 00 lds r25, 0x00A9 |
13b0: 0e 94 b1 09 call 0x1362 <CheckDelay> |
13b4: 88 23 and r24, r24 |
13b6: 09 f4 brne .+2 ; 0x13ba <GetKeyboard+0x16> |
13b8: 76 c0 rjmp .+236 ; 0x14a6 <GetKeyboard+0x102> |
{ |
if(_TASTE1) { if(taste1++ == 0 || taste1 == CNT_TASTE) ret |= KEY1; if(taste1 == CNT_TASTE) taste1 = CNT_TASTE-CNT_TASTE/3;} else taste1 = 0; |
13ba: cf 9b sbis 0x19, 7 ; 25 |
13bc: 12 c0 rjmp .+36 ; 0x13e2 <GetKeyboard+0x3e> |
13be: 80 91 aa 00 lds r24, 0x00AA |
13c2: 8f 5f subi r24, 0xFF ; 255 |
13c4: 80 93 aa 00 sts 0x00AA, r24 |
13c8: 81 30 cpi r24, 0x01 ; 1 |
13ca: 11 f0 breq .+4 ; 0x13d0 <GetKeyboard+0x2c> |
13cc: 8a 30 cpi r24, 0x0A ; 10 |
13ce: 09 f4 brne .+2 ; 0x13d2 <GetKeyboard+0x2e> |
13d0: c1 e0 ldi r28, 0x01 ; 1 |
13d2: 80 91 aa 00 lds r24, 0x00AA |
13d6: 8a 30 cpi r24, 0x0A ; 10 |
13d8: 31 f4 brne .+12 ; 0x13e6 <GetKeyboard+0x42> |
13da: 87 e0 ldi r24, 0x07 ; 7 |
13dc: 80 93 aa 00 sts 0x00AA, r24 |
13e0: 02 c0 rjmp .+4 ; 0x13e6 <GetKeyboard+0x42> |
13e2: c0 93 aa 00 sts 0x00AA, r28 |
if(_TASTE2) { if(taste2++ == 0 || taste2 == CNT_TASTE) ret |= KEY2; if(taste2 == CNT_TASTE) taste2 = CNT_TASTE-CNT_TASTE/3;} else taste2 = 0; |
13e6: ce 9b sbis 0x19, 6 ; 25 |
13e8: 12 c0 rjmp .+36 ; 0x140e <GetKeyboard+0x6a> |
13ea: 80 91 ab 00 lds r24, 0x00AB |
13ee: 8f 5f subi r24, 0xFF ; 255 |
13f0: 80 93 ab 00 sts 0x00AB, r24 |
13f4: 81 30 cpi r24, 0x01 ; 1 |
13f6: 11 f0 breq .+4 ; 0x13fc <GetKeyboard+0x58> |
13f8: 8a 30 cpi r24, 0x0A ; 10 |
13fa: 09 f4 brne .+2 ; 0x13fe <GetKeyboard+0x5a> |
13fc: c2 60 ori r28, 0x02 ; 2 |
13fe: 80 91 ab 00 lds r24, 0x00AB |
1402: 8a 30 cpi r24, 0x0A ; 10 |
1404: 31 f4 brne .+12 ; 0x1412 <GetKeyboard+0x6e> |
1406: 87 e0 ldi r24, 0x07 ; 7 |
1408: 80 93 ab 00 sts 0x00AB, r24 |
140c: 02 c0 rjmp .+4 ; 0x1412 <GetKeyboard+0x6e> |
140e: 10 92 ab 00 sts 0x00AB, r1 |
if(_TASTE3) { if(taste3++ == 0 || taste3 == CNT_TASTE) ret |= KEY3; if(taste3 == CNT_TASTE) taste3 = CNT_TASTE-CNT_TASTE/3;} else taste3 = 0; |
1412: cd 9b sbis 0x19, 5 ; 25 |
1414: 12 c0 rjmp .+36 ; 0x143a <GetKeyboard+0x96> |
1416: 80 91 ac 00 lds r24, 0x00AC |
141a: 8f 5f subi r24, 0xFF ; 255 |
141c: 80 93 ac 00 sts 0x00AC, r24 |
1420: 81 30 cpi r24, 0x01 ; 1 |
1422: 11 f0 breq .+4 ; 0x1428 <GetKeyboard+0x84> |
1424: 8a 30 cpi r24, 0x0A ; 10 |
1426: 09 f4 brne .+2 ; 0x142a <GetKeyboard+0x86> |
1428: c4 60 ori r28, 0x04 ; 4 |
142a: 80 91 ac 00 lds r24, 0x00AC |
142e: 8a 30 cpi r24, 0x0A ; 10 |
1430: 31 f4 brne .+12 ; 0x143e <GetKeyboard+0x9a> |
1432: 87 e0 ldi r24, 0x07 ; 7 |
1434: 80 93 ac 00 sts 0x00AC, r24 |
1438: 02 c0 rjmp .+4 ; 0x143e <GetKeyboard+0x9a> |
143a: 10 92 ac 00 sts 0x00AC, r1 |
if(_TASTE4) { if(taste4++ == 0 || taste4 == CNT_TASTE) ret |= KEY4; if(taste4 == CNT_TASTE) taste4 = CNT_TASTE-CNT_TASTE/3;} else taste4 = 0; |
143e: cc 9b sbis 0x19, 4 ; 25 |
1440: 12 c0 rjmp .+36 ; 0x1466 <GetKeyboard+0xc2> |
1442: 80 91 ad 00 lds r24, 0x00AD |
1446: 8f 5f subi r24, 0xFF ; 255 |
1448: 80 93 ad 00 sts 0x00AD, r24 |
144c: 81 30 cpi r24, 0x01 ; 1 |
144e: 11 f0 breq .+4 ; 0x1454 <GetKeyboard+0xb0> |
1450: 8a 30 cpi r24, 0x0A ; 10 |
1452: 09 f4 brne .+2 ; 0x1456 <GetKeyboard+0xb2> |
1454: c8 60 ori r28, 0x08 ; 8 |
1456: 80 91 ad 00 lds r24, 0x00AD |
145a: 8a 30 cpi r24, 0x0A ; 10 |
145c: 31 f4 brne .+12 ; 0x146a <GetKeyboard+0xc6> |
145e: 87 e0 ldi r24, 0x07 ; 7 |
1460: 80 93 ad 00 sts 0x00AD, r24 |
1464: 02 c0 rjmp .+4 ; 0x146a <GetKeyboard+0xc6> |
1466: 10 92 ad 00 sts 0x00AD, r1 |
if(_TASTE5) { if(taste5++ == 0 || taste5 == CNT_TASTE) ret |= KEY5; if(taste5 == CNT_TASTE) taste5 = CNT_TASTE-CNT_TASTE/3;} else taste5 = 0; |
146a: cb 9b sbis 0x19, 3 ; 25 |
146c: 12 c0 rjmp .+36 ; 0x1492 <GetKeyboard+0xee> |
146e: 80 91 ae 00 lds r24, 0x00AE |
1472: 8f 5f subi r24, 0xFF ; 255 |
1474: 80 93 ae 00 sts 0x00AE, r24 |
1478: 81 30 cpi r24, 0x01 ; 1 |
147a: 11 f0 breq .+4 ; 0x1480 <GetKeyboard+0xdc> |
147c: 8a 30 cpi r24, 0x0A ; 10 |
147e: 09 f4 brne .+2 ; 0x1482 <GetKeyboard+0xde> |
1480: c0 61 ori r28, 0x10 ; 16 |
1482: 80 91 ae 00 lds r24, 0x00AE |
1486: 8a 30 cpi r24, 0x0A ; 10 |
1488: 31 f4 brne .+12 ; 0x1496 <GetKeyboard+0xf2> |
148a: 87 e0 ldi r24, 0x07 ; 7 |
148c: 80 93 ae 00 sts 0x00AE, r24 |
1490: 02 c0 rjmp .+4 ; 0x1496 <GetKeyboard+0xf2> |
1492: 10 92 ae 00 sts 0x00AE, r1 |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1496: 82 e3 ldi r24, 0x32 ; 50 |
1498: 90 e0 ldi r25, 0x00 ; 0 |
149a: 0e 94 a8 09 call 0x1350 <SetDelay> |
149e: 90 93 a9 00 sts 0x00A9, r25 |
14a2: 80 93 a8 00 sts 0x00A8, r24 |
} |
return(ret); |
} |
14a6: 8c 2f mov r24, r28 |
14a8: 99 27 eor r25, r25 |
14aa: cf 91 pop r28 |
14ac: 08 95 ret |
000014ae <GetKeyboard2>: |
unsigned char GetKeyboard2(void) |
{ |
unsigned char ret = 0; |
14ae: 80 e0 ldi r24, 0x00 ; 0 |
if(_TASTE1) ret |= KEY1; |
14b0: cf 99 sbic 0x19, 7 ; 25 |
14b2: 81 e0 ldi r24, 0x01 ; 1 |
if(_TASTE2) ret |= KEY2; |
14b4: ce 99 sbic 0x19, 6 ; 25 |
14b6: 82 60 ori r24, 0x02 ; 2 |
if(_TASTE3) ret |= KEY3; |
14b8: cd 99 sbic 0x19, 5 ; 25 |
14ba: 84 60 ori r24, 0x04 ; 4 |
if(_TASTE4) ret |= KEY4; |
14bc: cc 99 sbic 0x19, 4 ; 25 |
14be: 88 60 ori r24, 0x08 ; 8 |
if(_TASTE5) ret |= KEY5; |
14c0: cb 99 sbic 0x19, 3 ; 25 |
14c2: 80 61 ori r24, 0x10 ; 16 |
return(ret); |
} |
14c4: 99 27 eor r25, r25 |
14c6: 08 95 ret |
000014c8 <Menu>: |
unsigned char KanalVon[MAX_KANAL]; |
unsigned char KanalAn[MAX_KANAL]; |
void Menu(unsigned char key) |
{ |
14c8: 0f 93 push r16 |
14ca: 1f 93 push r17 |
14cc: cf 93 push r28 |
14ce: df 93 push r29 |
static unsigned int arr = 0; |
static unsigned char MaxMenue = 2,MenuePunkt=0; |
unsigned char kanal = 0; |
if(key & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LCD_Clear; } |
14d0: c8 2f mov r28, r24 |
14d2: dd 27 eor r29, r29 |
14d4: c0 ff sbrs r28, 0 |
14d6: 0f c0 rjmp .+30 ; 0x14f6 <Menu+0x2e> |
14d8: 80 91 b3 00 lds r24, 0x00B3 |
14dc: 88 23 and r24, r24 |
14de: 11 f0 breq .+4 ; 0x14e4 <Menu+0x1c> |
14e0: 81 50 subi r24, 0x01 ; 1 |
14e2: 02 c0 rjmp .+4 ; 0x14e8 <Menu+0x20> |
14e4: 80 91 7b 00 lds r24, 0x007B |
14e8: 80 93 b3 00 sts 0x00B3, r24 |
14ec: 81 e0 ldi r24, 0x01 ; 1 |
14ee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
14f2: 0e 94 c9 05 call 0xb92 <_long_delay> |
if(key & KEY2) { MenuePunkt++; LCD_Clear; } |
14f6: 8e 01 movw r16, r28 |
14f8: 02 70 andi r16, 0x02 ; 2 |
14fa: 10 70 andi r17, 0x00 ; 0 |
14fc: c1 ff sbrs r28, 1 |
14fe: 0a c0 rjmp .+20 ; 0x1514 <Menu+0x4c> |
1500: 80 91 b3 00 lds r24, 0x00B3 |
1504: 8f 5f subi r24, 0xFF ; 255 |
1506: 80 93 b3 00 sts 0x00B3, r24 |
150a: 81 e0 ldi r24, 0x01 ; 1 |
150c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
1510: 0e 94 c9 05 call 0xb92 <_long_delay> |
if((key & KEY1) && (key & KEY2)) MenuePunkt = 0; |
1514: c0 ff sbrs r28, 0 |
1516: 04 c0 rjmp .+8 ; 0x1520 <Menu+0x58> |
1518: 01 2b or r16, r17 |
151a: 11 f0 breq .+4 ; 0x1520 <Menu+0x58> |
151c: 10 92 b3 00 sts 0x00B3, r1 |
// LCD_printfxy(13,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
1520: 20 91 b3 00 lds r18, 0x00B3 |
1524: 82 2f mov r24, r18 |
1526: 99 27 eor r25, r25 |
1528: 81 30 cpi r24, 0x01 ; 1 |
152a: 91 05 cpc r25, r1 |
152c: 09 f4 brne .+2 ; 0x1530 <Menu+0x68> |
152e: 41 c0 rjmp .+130 ; 0x15b2 <Menu+0xea> |
1530: 82 30 cpi r24, 0x02 ; 2 |
1532: 91 05 cpc r25, r1 |
1534: 1c f4 brge .+6 ; 0x153c <Menu+0x74> |
1536: 89 2b or r24, r25 |
1538: 49 f0 breq .+18 ; 0x154c <Menu+0x84> |
153a: bf c0 rjmp .+382 ; 0x16ba <Menu+0x1f2> |
153c: 82 30 cpi r24, 0x02 ; 2 |
153e: 91 05 cpc r25, r1 |
1540: 09 f4 brne .+2 ; 0x1544 <Menu+0x7c> |
1542: 6a c0 rjmp .+212 ; 0x1618 <Menu+0x150> |
1544: 03 97 sbiw r24, 0x03 ; 3 |
1546: 09 f4 brne .+2 ; 0x154a <Menu+0x82> |
1548: 8e c0 rjmp .+284 ; 0x1666 <Menu+0x19e> |
154a: b7 c0 rjmp .+366 ; 0x16ba <Menu+0x1f2> |
{ |
case 0: |
LCD_printfxy(0,0,"Verbinden mit"); |
154c: 60 e0 ldi r22, 0x00 ; 0 |
154e: 86 2f mov r24, r22 |
1550: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1554: 84 eb ldi r24, 0xB4 ; 180 |
1556: 90 e0 ldi r25, 0x00 ; 0 |
1558: 9f 93 push r25 |
155a: 8f 93 push r24 |
155c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"MicroSPS:%2i ",SlaveAdresse); |
1560: 61 e0 ldi r22, 0x01 ; 1 |
1562: 80 e0 ldi r24, 0x00 ; 0 |
1564: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1568: 0f 90 pop r0 |
156a: 0f 90 pop r0 |
156c: 80 91 64 00 lds r24, 0x0064 |
1570: 99 27 eor r25, r25 |
1572: 9f 93 push r25 |
1574: 8f 93 push r24 |
1576: 82 ec ldi r24, 0xC2 ; 194 |
1578: 90 e0 ldi r25, 0x00 ; 0 |
157a: 9f 93 push r25 |
157c: 8f 93 push r24 |
157e: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && SlaveAdresse > 1) SlaveAdresse--; |
1582: 0f 90 pop r0 |
1584: 0f 90 pop r0 |
1586: 0f 90 pop r0 |
1588: 0f 90 pop r0 |
158a: c2 ff sbrs r28, 2 |
158c: 07 c0 rjmp .+14 ; 0x159c <Menu+0xd4> |
158e: 80 91 64 00 lds r24, 0x0064 |
1592: 82 30 cpi r24, 0x02 ; 2 |
1594: 18 f0 brcs .+6 ; 0x159c <Menu+0xd4> |
1596: 81 50 subi r24, 0x01 ; 1 |
1598: 80 93 64 00 sts 0x0064, r24 |
if(key & KEY4 && SlaveAdresse < 26) SlaveAdresse++; |
159c: c3 ff sbrs r28, 3 |
159e: 92 c0 rjmp .+292 ; 0x16c4 <Menu+0x1fc> |
15a0: 80 91 64 00 lds r24, 0x0064 |
15a4: 8a 31 cpi r24, 0x1A ; 26 |
15a6: 08 f0 brcs .+2 ; 0x15aa <Menu+0xe2> |
15a8: 8d c0 rjmp .+282 ; 0x16c4 <Menu+0x1fc> |
15aa: 8f 5f subi r24, 0xFF ; 255 |
15ac: 80 93 64 00 sts 0x0064, r24 |
break; |
15b0: 89 c0 rjmp .+274 ; 0x16c4 <Menu+0x1fc> |
case 1: |
LCD_printfxy(0,0,"Max Adresse"); |
15b2: 60 e0 ldi r22, 0x00 ; 0 |
15b4: 86 2f mov r24, r22 |
15b6: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ba: 80 ed ldi r24, 0xD0 ; 208 |
15bc: 90 e0 ldi r25, 0x00 ; 0 |
15be: 9f 93 push r25 |
15c0: 8f 93 push r24 |
15c2: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"%2i ",AnzahlTeilnehmer); |
15c6: 61 e0 ldi r22, 0x01 ; 1 |
15c8: 80 e0 ldi r24, 0x00 ; 0 |
15ca: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ce: 0f 90 pop r0 |
15d0: 0f 90 pop r0 |
15d2: 80 91 6c 00 lds r24, 0x006C |
15d6: 99 27 eor r25, r25 |
15d8: 9f 93 push r25 |
15da: 8f 93 push r24 |
15dc: 8c ed ldi r24, 0xDC ; 220 |
15de: 90 e0 ldi r25, 0x00 ; 0 |
15e0: 9f 93 push r25 |
15e2: 8f 93 push r24 |
15e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && AnzahlTeilnehmer > 1) AnzahlTeilnehmer--; |
15e8: 0f 90 pop r0 |
15ea: 0f 90 pop r0 |
15ec: 0f 90 pop r0 |
15ee: 0f 90 pop r0 |
15f0: c2 ff sbrs r28, 2 |
15f2: 07 c0 rjmp .+14 ; 0x1602 <Menu+0x13a> |
15f4: 80 91 6c 00 lds r24, 0x006C |
15f8: 82 30 cpi r24, 0x02 ; 2 |
15fa: 18 f0 brcs .+6 ; 0x1602 <Menu+0x13a> |
15fc: 81 50 subi r24, 0x01 ; 1 |
15fe: 80 93 6c 00 sts 0x006C, r24 |
if(key & KEY4 && AnzahlTeilnehmer < 26) AnzahlTeilnehmer++; |
1602: c3 ff sbrs r28, 3 |
1604: 5f c0 rjmp .+190 ; 0x16c4 <Menu+0x1fc> |
1606: 80 91 6c 00 lds r24, 0x006C |
160a: 8a 31 cpi r24, 0x1A ; 26 |
160c: 08 f0 brcs .+2 ; 0x1610 <Menu+0x148> |
160e: 5a c0 rjmp .+180 ; 0x16c4 <Menu+0x1fc> |
1610: 8f 5f subi r24, 0xFF ; 255 |
1612: 80 93 6c 00 sts 0x006C, r24 |
break; |
1616: 56 c0 rjmp .+172 ; 0x16c4 <Menu+0x1fc> |
case 2: |
LCD_printfxy(0,0,"Checksum"); |
1618: 60 e0 ldi r22, 0x00 ; 0 |
161a: 86 2f mov r24, r22 |
161c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1620: 81 ee ldi r24, 0xE1 ; 225 |
1622: 90 e0 ldi r25, 0x00 ; 0 |
1624: 9f 93 push r25 |
1626: 8f 93 push r24 |
1628: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Errors:%5i ",CntCrcError); |
162c: 61 e0 ldi r22, 0x01 ; 1 |
162e: 80 e0 ldi r24, 0x00 ; 0 |
1630: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1634: 0f 90 pop r0 |
1636: 0f 90 pop r0 |
1638: 80 91 99 00 lds r24, 0x0099 |
163c: 90 91 9a 00 lds r25, 0x009A |
1640: 9f 93 push r25 |
1642: 8f 93 push r24 |
1644: 8a ee ldi r24, 0xEA ; 234 |
1646: 90 e0 ldi r25, 0x00 ; 0 |
1648: 9f 93 push r25 |
164a: 8f 93 push r24 |
164c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) CntCrcError = 0; |
1650: 0f 90 pop r0 |
1652: 0f 90 pop r0 |
1654: 0f 90 pop r0 |
1656: 0f 90 pop r0 |
1658: c2 ff sbrs r28, 2 |
165a: 34 c0 rjmp .+104 ; 0x16c4 <Menu+0x1fc> |
165c: 10 92 9a 00 sts 0x009A, r1 |
1660: 10 92 99 00 sts 0x0099, r1 |
break; |
1664: 2f c0 rjmp .+94 ; 0x16c4 <Menu+0x1fc> |
case 3: |
LCD_printfxy(0,0,"Display"); |
1666: 60 e0 ldi r22, 0x00 ; 0 |
1668: 86 2f mov r24, r22 |
166a: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
166e: 86 ef ldi r24, 0xF6 ; 246 |
1670: 90 e0 ldi r25, 0x00 ; 0 |
1672: 9f 93 push r25 |
1674: 8f 93 push r24 |
1676: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Zeilen:%1i ",DisplayZeilen); |
167a: 61 e0 ldi r22, 0x01 ; 1 |
167c: 80 e0 ldi r24, 0x00 ; 0 |
167e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1682: 0f 90 pop r0 |
1684: 0f 90 pop r0 |
1686: 80 91 65 00 lds r24, 0x0065 |
168a: 99 27 eor r25, r25 |
168c: 9f 93 push r25 |
168e: 8f 93 push r24 |
1690: 8e ef ldi r24, 0xFE ; 254 |
1692: 90 e0 ldi r25, 0x00 ; 0 |
1694: 9f 93 push r25 |
1696: 8f 93 push r24 |
1698: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) DisplayZeilen = 4; |
169c: 0f 90 pop r0 |
169e: 0f 90 pop r0 |
16a0: 0f 90 pop r0 |
16a2: 0f 90 pop r0 |
16a4: c2 ff sbrs r28, 2 |
16a6: 03 c0 rjmp .+6 ; 0x16ae <Menu+0x1e6> |
16a8: 84 e0 ldi r24, 0x04 ; 4 |
16aa: 80 93 65 00 sts 0x0065, r24 |
if(key & KEY4) DisplayZeilen = 2; |
16ae: c3 ff sbrs r28, 3 |
16b0: 09 c0 rjmp .+18 ; 0x16c4 <Menu+0x1fc> |
16b2: 82 e0 ldi r24, 0x02 ; 2 |
16b4: 80 93 65 00 sts 0x0065, r24 |
break; |
16b8: 05 c0 rjmp .+10 ; 0x16c4 <Menu+0x1fc> |
/* case 1: |
case 2: |
case 3: |
case 4: |
kanal = MenuePunkt - 1; |
LCD_printfxy(0,0,"Datenkanal:%2i",kanal); |
LCD_printfxy(0,1,"Von:%2i an %2i ",KanalVon[kanal],KanalAn[kanal]); |
if(key & KEY3) KanalVon[kanal]++; |
if(key & KEY4) KanalAn[kanal]++; |
KanalVon[kanal] % MAX_KANAL; |
KanalAn[kanal] % MAX_KANAL; |
break; |
*/ |
/* |
case 1: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Display:%3ims ",IntervallDisplay); |
if(key & KEY3 && IntervallDisplay > 25) IntervallDisplay -= 5; |
if(key & KEY4 && IntervallDisplay < 990) IntervallDisplay += 5; |
break; |
case 2: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Debug:%3ims ",IntervallDebug); |
if(key & KEY3 && IntervallDebug > 25) IntervallDebug -= 5; |
if(key & KEY4 && IntervallDebug < 990) IntervallDebug += 5; |
break; |
case 1: |
LCD_printfxy(0,0,"Time"); |
LCD_printfxy(0,1,"%3i:%02i",Minute,Sekunde); |
if(key & KEY3) if(Minute) Minute--; |
if(key & KEY4) Minute++; |
if(key & KEY5) Sekunde = 0; |
break; |
case 2: |
LCD_printfxy(0,0,"Testvariable"); |
LCD_printfxy(0,1,"TestInt:%5i",TestInt); |
if(key & KEY3) TestInt--; |
if(key & KEY4) TestInt++; |
break; |
case 3: |
LCD_printfxy(0,0,"Testarray"); |
LCD_printfxy(0,1,"Array[%i]=%3i",arr,Array[arr]); |
if(key & KEY5) if(++arr == ARRAYGROESSE) arr = 0; |
if(key & KEY3) Array[arr]--; |
if(key & KEY4) Array[arr]++; |
break; |
case 4: |
LCD_printfxy(0,0,"Infrarot RC5:"); |
LCD_printfxy(0,1,"Adr:%2i Cmd:%3i",(IR_Code >> 8), IR_Code & 0xff); |
break; |
*/ |
default: MaxMenue = MenuePunkt - 1; |
16ba: 21 50 subi r18, 0x01 ; 1 |
16bc: 20 93 7b 00 sts 0x007B, r18 |
MenuePunkt = 0; |
16c0: 10 92 b3 00 sts 0x00B3, r1 |
16c4: df 91 pop r29 |
16c6: cf 91 pop r28 |
16c8: 1f 91 pop r17 |
16ca: 0f 91 pop r16 |
16cc: 08 95 ret |
000016ce <InitIR>: |
// Init IR |
// ************************************************************************ |
void InitIR(void) |
{ |
INT0_ENABLE; // ext. Int0 enable |
16ce: 8b b7 in r24, 0x3b ; 59 |
16d0: 80 64 ori r24, 0x40 ; 64 |
16d2: 8b bf out 0x3b, r24 ; 59 |
CLR_INT0_FLAG; // war |= 0x40 |
16d4: 8a b7 in r24, 0x3a ; 58 |
16d6: 8f 7b andi r24, 0xBF ; 191 |
16d8: 8a bf out 0x3a, r24 ; 58 |
INIT_INT0_FLANKE; |
16da: 85 b7 in r24, 0x35 ; 53 |
16dc: 8c 7f andi r24, 0xFC ; 252 |
16de: 85 bf out 0x35, r24 ; 53 |
16e0: 85 b7 in r24, 0x35 ; 53 |
16e2: 82 60 ori r24, 0x02 ; 2 |
16e4: 85 bf out 0x35, r24 ; 53 |
TIMER0_PRESCALER = 0x04; // Timer0: Clk div 256 |
16e6: 84 e0 ldi r24, 0x04 ; 4 |
16e8: 83 bf out 0x33, r24 ; 51 |
Decodierung_Lauft = 0; |
16ea: 10 92 c9 01 sts 0x01C9, r1 |
New_IR_Code = 0; |
16ee: 10 92 c6 01 sts 0x01C6, r1 |
IR_Code = 0; |
16f2: 10 92 c8 01 sts 0x01C8, r1 |
16f6: 10 92 c7 01 sts 0x01C7, r1 |
16fa: 08 95 ret |
000016fc <__vector_1>: |
} |
// ************************************************************************** |
// * aufgerufen durch: externer Interrupt |
// ************************************************************************** |
// * Die Funktion wird durch einen externen Interrupt aufgerufen. |
// * Sie dient nur zum Starten der Abtastsequenz und zum Triggern auf die |
// * Signalflanken in der Mitte der Daten. |
// ************************************************************************** |
SIGNAL (SIG_INTERRUPT0) |
{ |
16fc: 1f 92 push r1 |
16fe: 0f 92 push r0 |
1700: 0f b6 in r0, 0x3f ; 63 |
1702: 0f 92 push r0 |
1704: 11 24 eor r1, r1 |
1706: 8f 93 push r24 |
// Zeitbasis fuer Timer einstellen |
// Entspricht 1,5 mal einer Bitlaenge |
// PORTB++; |
TCNT0 = -41; |
1708: 87 ed ldi r24, 0xD7 ; 215 |
170a: 82 bf out 0x32, r24 ; 50 |
TIM0_START; // Timer 0 starten, |
170c: 89 b7 in r24, 0x39 ; 57 |
170e: 81 60 ori r24, 0x01 ; 1 |
1710: 89 bf out 0x39, r24 ; 57 |
if(Decodierung_Lauft) INT0_DISABLE; // die erneute Int.-Auslsung soll |
1712: 80 91 c9 01 lds r24, 0x01C9 |
1716: 88 23 and r24, r24 |
1718: 19 f0 breq .+6 ; 0x1720 <__vector_1+0x24> |
171a: 8b b7 in r24, 0x3b ; 59 |
171c: 8f 7b andi r24, 0xBF ; 191 |
171e: 8b bf out 0x3b, r24 ; 59 |
1720: 8f 91 pop r24 |
1722: 0f 90 pop r0 |
1724: 0f be out 0x3f, r0 ; 63 |
1726: 0f 90 pop r0 |
1728: 1f 90 pop r1 |
172a: 18 95 reti |
0000172c <__vector_11>: |
// nur die Timer-Routine erlauben |
} |
// ************************************************************************** |
// * aufgerufen durch: Timerueberlauf Timer 0 |
// ************************************************************************** |
// * Die Funktion wird durch einen Timer0-Interrupt aufgerufen. |
// * Der Timer wird vom ext. Int0 gestartet. |
// * Das Infrarotsignal wird hier abgetastet und die Wertigkeiten der |
// * Bits entsprechend aufaddiert. Das empfangende Zeichen wird in der |
// * globalen Variablen IR_Code gespeichert. Nach Empfang wird das Bit |
// * Neues_Zeichen gesetzt. |
// ************************************************************************** |
SIGNAL (SIG_OVERFLOW0) |
{ |
172c: 1f 92 push r1 |
172e: 0f 92 push r0 |
1730: 0f b6 in r0, 0x3f ; 63 |
1732: 0f 92 push r0 |
1734: 11 24 eor r1, r1 |
1736: 2f 93 push r18 |
1738: 3f 93 push r19 |
173a: 4f 93 push r20 |
173c: 8f 93 push r24 |
173e: 9f 93 push r25 |
static unsigned int Shift,IR_Code_tmp; |
static unsigned char IR_Zaehler=0,IRSperrCounter=0; |
// Reinitialize Timer's 0 value |
TCNT1 = -41; |
1740: 87 ed ldi r24, 0xD7 ; 215 |
1742: 9f ef ldi r25, 0xFF ; 255 |
1744: 9d bd out 0x2d, r25 ; 45 |
1746: 8c bd out 0x2c, r24 ; 44 |
if (IRSperrCounter) |
1748: 80 91 b9 00 lds r24, 0x00B9 |
174c: 88 23 and r24, r24 |
174e: 69 f0 breq .+26 ; 0x176a <__vector_11+0x3e> |
{ IRSperrCounter--; |
1750: 81 50 subi r24, 0x01 ; 1 |
1752: 80 93 b9 00 sts 0x00B9, r24 |
if (!IRSperrCounter) |
1756: 88 23 and r24, r24 |
1758: 09 f0 breq .+2 ; 0x175c <__vector_11+0x30> |
175a: 8a c0 rjmp .+276 ; 0x1870 <__vector_11+0x144> |
{ |
TIM0_STOPP; // Timer0 sperre wird durch ExtInt0 gestartet |
175c: 89 b7 in r24, 0x39 ; 57 |
175e: 8e 7f andi r24, 0xFE ; 254 |
1760: 89 bf out 0x39, r24 ; 57 |
CLR_INT0_FLAG; // IntFlag Loeschen |
1762: 8a b7 in r24, 0x3a ; 58 |
1764: 8f 7b andi r24, 0xBF ; 191 |
1766: 8a bf out 0x3a, r24 ; 58 |
1768: 80 c0 rjmp .+256 ; 0x186a <__vector_11+0x13e> |
INT0_ENABLE; // externen Interrupt wieder freigenben |
} |
} |
else |
{ |
if(IR_Zaehler > 1) |
176a: 40 91 b8 00 lds r20, 0x00B8 |
176e: 42 30 cpi r20, 0x02 ; 2 |
1770: 88 f0 brcs .+34 ; 0x1794 <__vector_11+0x68> |
{ |
Decodierung_Lauft = 1; |
1772: 81 e0 ldi r24, 0x01 ; 1 |
1774: 80 93 c9 01 sts 0x01C9, r24 |
{ |
CLR_INT0_FLAG; // Interrupt Flag loeschen |
1778: 8a b7 in r24, 0x3a ; 58 |
177a: 8f 7b andi r24, 0xBF ; 191 |
177c: 8a bf out 0x3a, r24 ; 58 |
if(IR_PP) INT0_NEG_FLANKE; // naechste fallende Flanke soll Int0 ausloesen |
177e: 82 9b sbis 0x10, 2 ; 16 |
1780: 03 c0 rjmp .+6 ; 0x1788 <__vector_11+0x5c> |
1782: 85 b7 in r24, 0x35 ; 53 |
1784: 8e 7f andi r24, 0xFE ; 254 |
1786: 02 c0 rjmp .+4 ; 0x178c <__vector_11+0x60> |
else INT0_POS_FLANKE; // naechste steigende Flanke soll Int0 ausloesen |
1788: 85 b7 in r24, 0x35 ; 53 |
178a: 81 60 ori r24, 0x01 ; 1 |
178c: 85 bf out 0x35, r24 ; 53 |
INT0_ENABLE; // externen Int frei |
178e: 8b b7 in r24, 0x3b ; 59 |
1790: 80 64 ori r24, 0x40 ; 64 |
1792: 8b bf out 0x3b, r24 ; 59 |
} |
} |
if(!IR_Zaehler) // es beginnt eine neue Abtastung |
1794: 44 23 and r20, r20 |
1796: 59 f4 brne .+22 ; 0x17ae <__vector_11+0x82> |
{ // es handelt sich um das 1. Sync-Bit |
IR_Code_tmp=0; // Merker löschen |
1798: 10 92 b7 00 sts 0x00B7, r1 |
179c: 10 92 b6 00 sts 0x00B6, r1 |
Shift=0x8000; //;8192; // Maske auf MSB |
17a0: 80 e0 ldi r24, 0x00 ; 0 |
17a2: 90 e8 ldi r25, 0x80 ; 128 |
17a4: 90 93 b5 00 sts 0x00B5, r25 |
17a8: 80 93 b4 00 sts 0x00B4, r24 |
17ac: 14 c0 rjmp .+40 ; 0x17d6 <__vector_11+0xaa> |
} |
else |
if(IR_PP==1) // das empfangende Bit ist logisch High |
17ae: 82 9b sbis 0x10, 2 ; 16 |
17b0: 10 c0 rjmp .+32 ; 0x17d2 <__vector_11+0xa6> |
{ if(IR_Zaehler>2) // (IR_Zaehler ist gleich 1 beim 2. Sync-Bit) |
17b2: 43 30 cpi r20, 0x03 ; 3 |
17b4: 70 f0 brcs .+28 ; 0x17d2 <__vector_11+0xa6> |
{ // 2 --> Toggle-Bit (wird übersprungen) |
IR_Code_tmp |= Shift; // entsprechendse Bit setzen |
17b6: 80 91 b6 00 lds r24, 0x00B6 |
17ba: 90 91 b7 00 lds r25, 0x00B7 |
17be: 20 91 b4 00 lds r18, 0x00B4 |
17c2: 30 91 b5 00 lds r19, 0x00B5 |
17c6: 82 2b or r24, r18 |
17c8: 93 2b or r25, r19 |
17ca: 90 93 b7 00 sts 0x00B7, r25 |
17ce: 80 93 b6 00 sts 0x00B6, r24 |
} |
} |
if ((IR_Zaehler < 2) && !(IR_PP==1)) // startbits überprüfen |
17d2: 42 30 cpi r20, 0x02 ; 2 |
17d4: 20 f4 brcc .+8 ; 0x17de <__vector_11+0xb2> |
17d6: 82 99 sbic 0x10, 2 ; 16 |
17d8: 02 c0 rjmp .+4 ; 0x17de <__vector_11+0xb2> |
{ |
IR_Zaehler = 0; |
17da: 10 92 b8 00 sts 0x00B8, r1 |
} |
Shift >>=1; // Shiftregister um 1 nach rechts schieben |
17de: 80 91 b4 00 lds r24, 0x00B4 |
17e2: 90 91 b5 00 lds r25, 0x00B5 |
17e6: 96 95 lsr r25 |
17e8: 87 95 ror r24 |
17ea: 90 93 b5 00 sts 0x00B5, r25 |
17ee: 80 93 b4 00 sts 0x00B4, r24 |
// (für das nächste empf. Bit |
if (Shift == 128) Shift = 32; // Adresse ins HighByte, Kommando ins LowByte |
17f2: 80 38 cpi r24, 0x80 ; 128 |
17f4: 91 05 cpc r25, r1 |
17f6: 31 f4 brne .+12 ; 0x1804 <__vector_11+0xd8> |
17f8: 80 e2 ldi r24, 0x20 ; 32 |
17fa: 90 e0 ldi r25, 0x00 ; 0 |
17fc: 90 93 b5 00 sts 0x00B5, r25 |
1800: 80 93 b4 00 sts 0x00B4, r24 |
if(IR_Zaehler++==15) // Das IR-Wort wurde vollstaendig abgetastet |
1804: 80 91 b8 00 lds r24, 0x00B8 |
1808: 8f 5f subi r24, 0xFF ; 255 |
180a: 80 93 b8 00 sts 0x00B8, r24 |
180e: 80 31 cpi r24, 0x10 ; 16 |
1810: 79 f5 brne .+94 ; 0x1870 <__vector_11+0x144> |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
1812: 8a b7 in r24, 0x3a ; 58 |
1814: 8f 7b andi r24, 0xBF ; 191 |
1816: 8a bf out 0x3a, r24 ; 58 |
INT0_NEG_FLANKE; // fallende Flanke |
1818: 85 b7 in r24, 0x35 ; 53 |
181a: 8e 7f andi r24, 0xFE ; 254 |
181c: 85 bf out 0x35, r24 ; 53 |
IR_Zaehler = 0; |
181e: 10 92 b8 00 sts 0x00B8, r1 |
Decodierung_Lauft=0; |
1822: 10 92 c9 01 sts 0x01C9, r1 |
/* if ((HIGH(IR_Code_tmp)==ALLOWED1)|| (HIGH(IR_Code_tmp)==ALLOWED2)|| |
(HIGH(IR_Code_tmp)==ALLOWED3)||(HIGH(IR_Code_tmp)==ALLOWED4)|| |
(HIGH(IR_Code_tmp)==ALLOWED5) ) |
if ((HIGH(IR_Code_tmp)< 10))*/ |
if ((HIGH(IR_Code_tmp)< 10 ) && (LOW(IR_Code_tmp)!=0x3F) ) |
1826: 80 91 b7 00 lds r24, 0x00B7 |
182a: 8a 30 cpi r24, 0x0A ; 10 |
182c: d8 f4 brcc .+54 ; 0x1864 <__vector_11+0x138> |
182e: 80 91 b6 00 lds r24, 0x00B6 |
1832: 8f 33 cpi r24, 0x3F ; 63 |
1834: b9 f0 breq .+46 ; 0x1864 <__vector_11+0x138> |
{ // nur erlaubt Adressen werden akzepetiert |
IR_Code=IR_Code_tmp; // IR-Wort in die globale Variable schreiben |
1836: 80 91 b6 00 lds r24, 0x00B6 |
183a: 90 91 b7 00 lds r25, 0x00B7 |
183e: 90 93 c8 01 sts 0x01C8, r25 |
1842: 80 93 c7 01 sts 0x01C7, r24 |
New_IR_Code = 1; // Es ist ein neues Zeichen eingetragen worden |
1846: 81 e0 ldi r24, 0x01 ; 1 |
1848: 80 93 c6 01 sts 0x01C6, r24 |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
184c: 84 e0 ldi r24, 0x04 ; 4 |
184e: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
1852: 8b b7 in r24, 0x3b ; 59 |
1854: 80 64 ori r24, 0x40 ; 64 |
1856: 8b bf out 0x3b, r24 ; 59 |
LoescheIrCodeTimer = 250; |
1858: 8a ef ldi r24, 0xFA ; 250 |
185a: 90 e0 ldi r25, 0x00 ; 0 |
185c: 90 93 7d 00 sts 0x007D, r25 |
1860: 80 93 7c 00 sts 0x007C, r24 |
} |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
1864: 84 e0 ldi r24, 0x04 ; 4 |
1866: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
186a: 8b b7 in r24, 0x3b ; 59 |
186c: 80 64 ori r24, 0x40 ; 64 |
186e: 8b bf out 0x3b, r24 ; 59 |
1870: 9f 91 pop r25 |
1872: 8f 91 pop r24 |
1874: 4f 91 pop r20 |
1876: 3f 91 pop r19 |
1878: 2f 91 pop r18 |
187a: 0f 90 pop r0 |
187c: 0f be out 0x3f, r0 ; 63 |
187e: 0f 90 pop r0 |
1880: 1f 90 pop r1 |
1882: 18 95 reti |
00001884 <ADC_Init>: |
// --------------------------------------------------------------------------------------- |
void ADC_Init(void) |
{ |
ADMUX = 0; |
1884: 17 b8 out 0x07, r1 ; 7 |
ADCSRA = 0x86; |
1886: 86 e8 ldi r24, 0x86 ; 134 |
1888: 86 b9 out 0x06, r24 ; 6 |
188a: 08 95 ret |
0000188c <ReadADC>: |
} |
// --------------------------------------------------------------------------------------- |
unsigned int ReadADC(unsigned char adc_input) |
{ |
ADMUX = adc_input; |
188c: 87 b9 out 0x07, r24 ; 7 |
ADCSRA |= 0x40; |
188e: 36 9a sbi 0x06, 6 ; 6 |
//Delay_ms(10); |
while ((ADCSRA & 0x10) == 0); |
1890: 34 9b sbis 0x06, 4 ; 6 |
1892: fe cf rjmp .-4 ; 0x1890 <ReadADC+0x4> |
ADCSRA |= 0x10; |
1894: 34 9a sbi 0x06, 4 ; 6 |
return ADCW; // read ad and calc. temp. |
1896: 84 b1 in r24, 0x04 ; 4 |
1898: 95 b1 in r25, 0x05 ; 5 |
189a: 08 95 ret |
0000189c <GetAnalogWerte>: |
} |
void GetAnalogWerte(void) |
{ |
AnalogWerte[0] = ReadADC(0); |
189c: 80 e0 ldi r24, 0x00 ; 0 |
189e: 0e 94 46 0c call 0x188c <ReadADC> |
18a2: 90 93 cb 01 sts 0x01CB, r25 |
18a6: 80 93 ca 01 sts 0x01CA, r24 |
AnalogWerte[1] = ReadADC(1); |
18aa: 81 e0 ldi r24, 0x01 ; 1 |
18ac: 0e 94 46 0c call 0x188c <ReadADC> |
18b0: 90 93 cd 01 sts 0x01CD, r25 |
18b4: 80 93 cc 01 sts 0x01CC, r24 |
AnalogWerte[2] = ReadADC(2); |
18b8: 82 e0 ldi r24, 0x02 ; 2 |
18ba: 0e 94 46 0c call 0x188c <ReadADC> |
18be: 90 93 cf 01 sts 0x01CF, r25 |
18c2: 80 93 ce 01 sts 0x01CE, r24 |
18c6: 08 95 ret |
000018c8 <memchr>: |
18c8: fc 01 movw r30, r24 |
18ca: 41 50 subi r20, 0x01 ; 1 |
18cc: 50 40 sbci r21, 0x00 ; 0 |
18ce: 30 f0 brcs .+12 ; 0x18dc <memchr+0x14> |
18d0: 01 90 ld r0, Z+ |
18d2: 06 16 cp r0, r22 |
18d4: d1 f7 brne .-12 ; 0x18ca <memchr+0x2> |
18d6: 31 97 sbiw r30, 0x01 ; 1 |
18d8: cf 01 movw r24, r30 |
18da: 08 95 ret |
18dc: 88 27 eor r24, r24 |
18de: 99 27 eor r25, r25 |
18e0: 08 95 ret |
000018e2 <fdevopen>: |
18e2: 0f 93 push r16 |
18e4: 1f 93 push r17 |
18e6: cf 93 push r28 |
18e8: df 93 push r29 |
18ea: 8c 01 movw r16, r24 |
18ec: eb 01 movw r28, r22 |
18ee: 00 97 sbiw r24, 0x00 ; 0 |
18f0: 11 f4 brne .+4 ; 0x18f6 <fdevopen+0x14> |
18f2: 67 2b or r22, r23 |
18f4: c1 f1 breq .+112 ; 0x1966 <fdevopen+0x84> |
18f6: 6e e0 ldi r22, 0x0E ; 14 |
18f8: 70 e0 ldi r23, 0x00 ; 0 |
18fa: 81 e0 ldi r24, 0x01 ; 1 |
18fc: 90 e0 ldi r25, 0x00 ; 0 |
18fe: 0e 94 b8 0c call 0x1970 <calloc> |
1902: fc 01 movw r30, r24 |
1904: 89 2b or r24, r25 |
1906: 71 f1 breq .+92 ; 0x1964 <fdevopen+0x82> |
1908: 80 e8 ldi r24, 0x80 ; 128 |
190a: 83 83 std Z+3, r24 ; 0x03 |
190c: 20 97 sbiw r28, 0x00 ; 0 |
190e: 71 f0 breq .+28 ; 0x192c <fdevopen+0x4a> |
1910: d3 87 std Z+11, r29 ; 0x0b |
1912: c2 87 std Z+10, r28 ; 0x0a |
1914: 81 e8 ldi r24, 0x81 ; 129 |
1916: 83 83 std Z+3, r24 ; 0x03 |
1918: 80 91 d0 01 lds r24, 0x01D0 |
191c: 90 91 d1 01 lds r25, 0x01D1 |
1920: 89 2b or r24, r25 |
1922: 21 f4 brne .+8 ; 0x192c <fdevopen+0x4a> |
1924: f0 93 d1 01 sts 0x01D1, r31 |
1928: e0 93 d0 01 sts 0x01D0, r30 |
192c: 01 15 cp r16, r1 |
192e: 11 05 cpc r17, r1 |
1930: c9 f0 breq .+50 ; 0x1964 <fdevopen+0x82> |
1932: 11 87 std Z+9, r17 ; 0x09 |
1934: 00 87 std Z+8, r16 ; 0x08 |
1936: 83 81 ldd r24, Z+3 ; 0x03 |
1938: 82 60 ori r24, 0x02 ; 2 |
193a: 83 83 std Z+3, r24 ; 0x03 |
193c: 80 91 d2 01 lds r24, 0x01D2 |
1940: 90 91 d3 01 lds r25, 0x01D3 |
1944: 89 2b or r24, r25 |
1946: 71 f4 brne .+28 ; 0x1964 <fdevopen+0x82> |
1948: f0 93 d3 01 sts 0x01D3, r31 |
194c: e0 93 d2 01 sts 0x01D2, r30 |
1950: 80 91 d4 01 lds r24, 0x01D4 |
1954: 90 91 d5 01 lds r25, 0x01D5 |
1958: 89 2b or r24, r25 |
195a: 21 f4 brne .+8 ; 0x1964 <fdevopen+0x82> |
195c: f0 93 d5 01 sts 0x01D5, r31 |
1960: e0 93 d4 01 sts 0x01D4, r30 |
1964: cf 01 movw r24, r30 |
1966: df 91 pop r29 |
1968: cf 91 pop r28 |
196a: 1f 91 pop r17 |
196c: 0f 91 pop r16 |
196e: 08 95 ret |
00001970 <calloc>: |
1970: 0f 93 push r16 |
1972: 1f 93 push r17 |
1974: cf 93 push r28 |
1976: df 93 push r29 |
1978: 86 9f mul r24, r22 |
197a: 80 01 movw r16, r0 |
197c: 87 9f mul r24, r23 |
197e: 10 0d add r17, r0 |
1980: 96 9f mul r25, r22 |
1982: 10 0d add r17, r0 |
1984: 11 24 eor r1, r1 |
1986: c8 01 movw r24, r16 |
1988: 0e 94 d4 0c call 0x19a8 <malloc> |
198c: ec 01 movw r28, r24 |
198e: 00 97 sbiw r24, 0x00 ; 0 |
1990: 29 f0 breq .+10 ; 0x199c <calloc+0x2c> |
1992: a8 01 movw r20, r16 |
1994: 60 e0 ldi r22, 0x00 ; 0 |
1996: 70 e0 ldi r23, 0x00 ; 0 |
1998: 0e 94 ca 0d call 0x1b94 <memset> |
199c: ce 01 movw r24, r28 |
199e: df 91 pop r29 |
19a0: cf 91 pop r28 |
19a2: 1f 91 pop r17 |
19a4: 0f 91 pop r16 |
19a6: 08 95 ret |
000019a8 <malloc>: |
19a8: cf 93 push r28 |
19aa: df 93 push r29 |
19ac: ac 01 movw r20, r24 |
19ae: 02 97 sbiw r24, 0x02 ; 2 |
19b0: 10 f4 brcc .+4 ; 0x19b6 <malloc+0xe> |
19b2: 42 e0 ldi r20, 0x02 ; 2 |
19b4: 50 e0 ldi r21, 0x00 ; 0 |
19b6: 20 e0 ldi r18, 0x00 ; 0 |
19b8: 30 e0 ldi r19, 0x00 ; 0 |
19ba: a0 91 d8 01 lds r26, 0x01D8 |
19be: b0 91 d9 01 lds r27, 0x01D9 |
19c2: bd 01 movw r22, r26 |
19c4: f9 01 movw r30, r18 |
19c6: 10 97 sbiw r26, 0x00 ; 0 |
19c8: 09 f4 brne .+2 ; 0x19cc <malloc+0x24> |
19ca: 4c c0 rjmp .+152 ; 0x1a64 <malloc+0xbc> |
19cc: 8d 91 ld r24, X+ |
19ce: 9c 91 ld r25, X |
19d0: 11 97 sbiw r26, 0x01 ; 1 |
19d2: 84 17 cp r24, r20 |
19d4: 95 07 cpc r25, r21 |
19d6: 31 f1 breq .+76 ; 0x1a24 <malloc+0x7c> |
19d8: 48 17 cp r20, r24 |
19da: 59 07 cpc r21, r25 |
19dc: 38 f4 brcc .+14 ; 0x19ec <malloc+0x44> |
19de: 21 15 cp r18, r1 |
19e0: 31 05 cpc r19, r1 |
19e2: 19 f0 breq .+6 ; 0x19ea <malloc+0x42> |
19e4: 82 17 cp r24, r18 |
19e6: 93 07 cpc r25, r19 |
19e8: 08 f4 brcc .+2 ; 0x19ec <malloc+0x44> |
19ea: 9c 01 movw r18, r24 |
19ec: fd 01 movw r30, r26 |
19ee: a2 81 ldd r26, Z+2 ; 0x02 |
19f0: b3 81 ldd r27, Z+3 ; 0x03 |
19f2: 10 97 sbiw r26, 0x00 ; 0 |
19f4: 59 f7 brne .-42 ; 0x19cc <malloc+0x24> |
19f6: 21 15 cp r18, r1 |
19f8: 31 05 cpc r19, r1 |
19fa: a1 f1 breq .+104 ; 0x1a64 <malloc+0xbc> |
19fc: c9 01 movw r24, r18 |
19fe: 84 1b sub r24, r20 |
1a00: 95 0b sbc r25, r21 |
1a02: 04 97 sbiw r24, 0x04 ; 4 |
1a04: 08 f4 brcc .+2 ; 0x1a08 <malloc+0x60> |
1a06: a9 01 movw r20, r18 |
1a08: db 01 movw r26, r22 |
1a0a: e0 e0 ldi r30, 0x00 ; 0 |
1a0c: f0 e0 ldi r31, 0x00 ; 0 |
1a0e: 10 97 sbiw r26, 0x00 ; 0 |
1a10: 49 f1 breq .+82 ; 0x1a64 <malloc+0xbc> |
1a12: 8d 91 ld r24, X+ |
1a14: 9c 91 ld r25, X |
1a16: 11 97 sbiw r26, 0x01 ; 1 |
1a18: 82 17 cp r24, r18 |
1a1a: 93 07 cpc r25, r19 |
1a1c: f9 f4 brne .+62 ; 0x1a5c <malloc+0xb4> |
1a1e: 42 17 cp r20, r18 |
1a20: 53 07 cpc r21, r19 |
1a22: 79 f4 brne .+30 ; 0x1a42 <malloc+0x9a> |
1a24: ed 01 movw r28, r26 |
1a26: 8a 81 ldd r24, Y+2 ; 0x02 |
1a28: 9b 81 ldd r25, Y+3 ; 0x03 |
1a2a: 30 97 sbiw r30, 0x00 ; 0 |
1a2c: 19 f0 breq .+6 ; 0x1a34 <malloc+0x8c> |
1a2e: 93 83 std Z+3, r25 ; 0x03 |
1a30: 82 83 std Z+2, r24 ; 0x02 |
1a32: 04 c0 rjmp .+8 ; 0x1a3c <malloc+0x94> |
1a34: 90 93 d9 01 sts 0x01D9, r25 |
1a38: 80 93 d8 01 sts 0x01D8, r24 |
1a3c: cd 01 movw r24, r26 |
1a3e: 02 96 adiw r24, 0x02 ; 2 |
1a40: 4a c0 rjmp .+148 ; 0x1ad6 <malloc+0x12e> |
1a42: 24 1b sub r18, r20 |
1a44: 35 0b sbc r19, r21 |
1a46: fd 01 movw r30, r26 |
1a48: e2 0f add r30, r18 |
1a4a: f3 1f adc r31, r19 |
1a4c: 41 93 st Z+, r20 |
1a4e: 51 93 st Z+, r21 |
1a50: 22 50 subi r18, 0x02 ; 2 |
1a52: 30 40 sbci r19, 0x00 ; 0 |
1a54: 2d 93 st X+, r18 |
1a56: 3c 93 st X, r19 |
1a58: cf 01 movw r24, r30 |
1a5a: 3d c0 rjmp .+122 ; 0x1ad6 <malloc+0x12e> |
1a5c: fd 01 movw r30, r26 |
1a5e: a2 81 ldd r26, Z+2 ; 0x02 |
1a60: b3 81 ldd r27, Z+3 ; 0x03 |
1a62: d5 cf rjmp .-86 ; 0x1a0e <malloc+0x66> |
1a64: 80 91 d6 01 lds r24, 0x01D6 |
1a68: 90 91 d7 01 lds r25, 0x01D7 |
1a6c: 89 2b or r24, r25 |
1a6e: 41 f4 brne .+16 ; 0x1a80 <malloc+0xd8> |
1a70: 80 91 80 00 lds r24, 0x0080 |
1a74: 90 91 81 00 lds r25, 0x0081 |
1a78: 90 93 d7 01 sts 0x01D7, r25 |
1a7c: 80 93 d6 01 sts 0x01D6, r24 |
1a80: e0 91 7e 00 lds r30, 0x007E |
1a84: f0 91 7f 00 lds r31, 0x007F |
1a88: 30 97 sbiw r30, 0x00 ; 0 |
1a8a: 41 f4 brne .+16 ; 0x1a9c <malloc+0xf4> |
1a8c: ed b7 in r30, 0x3d ; 61 |
1a8e: fe b7 in r31, 0x3e ; 62 |
1a90: 80 91 82 00 lds r24, 0x0082 |
1a94: 90 91 83 00 lds r25, 0x0083 |
1a98: e8 1b sub r30, r24 |
1a9a: f9 0b sbc r31, r25 |
1a9c: a0 91 d6 01 lds r26, 0x01D6 |
1aa0: b0 91 d7 01 lds r27, 0x01D7 |
1aa4: 9f 01 movw r18, r30 |
1aa6: 2a 1b sub r18, r26 |
1aa8: 3b 0b sbc r19, r27 |
1aaa: 24 17 cp r18, r20 |
1aac: 35 07 cpc r19, r21 |
1aae: 88 f0 brcs .+34 ; 0x1ad2 <malloc+0x12a> |
1ab0: ca 01 movw r24, r20 |
1ab2: 02 96 adiw r24, 0x02 ; 2 |
1ab4: 28 17 cp r18, r24 |
1ab6: 39 07 cpc r19, r25 |
1ab8: 60 f0 brcs .+24 ; 0x1ad2 <malloc+0x12a> |
1aba: cd 01 movw r24, r26 |
1abc: 84 0f add r24, r20 |
1abe: 95 1f adc r25, r21 |
1ac0: 02 96 adiw r24, 0x02 ; 2 |
1ac2: 90 93 d7 01 sts 0x01D7, r25 |
1ac6: 80 93 d6 01 sts 0x01D6, r24 |
1aca: 4d 93 st X+, r20 |
1acc: 5d 93 st X+, r21 |
1ace: cd 01 movw r24, r26 |
1ad0: 02 c0 rjmp .+4 ; 0x1ad6 <malloc+0x12e> |
1ad2: 80 e0 ldi r24, 0x00 ; 0 |
1ad4: 90 e0 ldi r25, 0x00 ; 0 |
1ad6: df 91 pop r29 |
1ad8: cf 91 pop r28 |
1ada: 08 95 ret |
00001adc <free>: |
1adc: cf 93 push r28 |
1ade: df 93 push r29 |
1ae0: 00 97 sbiw r24, 0x00 ; 0 |
1ae2: 09 f4 brne .+2 ; 0x1ae6 <free+0xa> |
1ae4: 54 c0 rjmp .+168 ; 0x1b8e <free+0xb2> |
1ae6: dc 01 movw r26, r24 |
1ae8: 12 97 sbiw r26, 0x02 ; 2 |
1aea: ed 01 movw r28, r26 |
1aec: 1b 82 std Y+3, r1 ; 0x03 |
1aee: 1a 82 std Y+2, r1 ; 0x02 |
1af0: 80 91 d8 01 lds r24, 0x01D8 |
1af4: 90 91 d9 01 lds r25, 0x01D9 |
1af8: 00 97 sbiw r24, 0x00 ; 0 |
1afa: 21 f1 breq .+72 ; 0x1b44 <free+0x68> |
1afc: fc 01 movw r30, r24 |
1afe: 40 e0 ldi r20, 0x00 ; 0 |
1b00: 50 e0 ldi r21, 0x00 ; 0 |
1b02: ea 17 cp r30, r26 |
1b04: fb 07 cpc r31, r27 |
1b06: 18 f1 brcs .+70 ; 0x1b4e <free+0x72> |
1b08: ed 01 movw r28, r26 |
1b0a: fb 83 std Y+3, r31 ; 0x03 |
1b0c: ea 83 std Y+2, r30 ; 0x02 |
1b0e: 2d 91 ld r18, X+ |
1b10: 3c 91 ld r19, X |
1b12: 11 97 sbiw r26, 0x01 ; 1 |
1b14: c2 0f add r28, r18 |
1b16: d3 1f adc r29, r19 |
1b18: ce 01 movw r24, r28 |
1b1a: 02 96 adiw r24, 0x02 ; 2 |
1b1c: 8e 17 cp r24, r30 |
1b1e: 9f 07 cpc r25, r31 |
1b20: 71 f4 brne .+28 ; 0x1b3e <free+0x62> |
1b22: 8a 81 ldd r24, Y+2 ; 0x02 |
1b24: 9b 81 ldd r25, Y+3 ; 0x03 |
1b26: 28 0f add r18, r24 |
1b28: 39 1f adc r19, r25 |
1b2a: 2e 5f subi r18, 0xFE ; 254 |
1b2c: 3f 4f sbci r19, 0xFF ; 255 |
1b2e: 11 96 adiw r26, 0x01 ; 1 |
1b30: 3c 93 st X, r19 |
1b32: 2e 93 st -X, r18 |
1b34: 82 81 ldd r24, Z+2 ; 0x02 |
1b36: 93 81 ldd r25, Z+3 ; 0x03 |
1b38: fd 01 movw r30, r26 |
1b3a: 93 83 std Z+3, r25 ; 0x03 |
1b3c: 82 83 std Z+2, r24 ; 0x02 |
1b3e: 41 15 cp r20, r1 |
1b40: 51 05 cpc r21, r1 |
1b42: 59 f4 brne .+22 ; 0x1b5a <free+0x7e> |
1b44: b0 93 d9 01 sts 0x01D9, r27 |
1b48: a0 93 d8 01 sts 0x01D8, r26 |
1b4c: 20 c0 rjmp .+64 ; 0x1b8e <free+0xb2> |
1b4e: af 01 movw r20, r30 |
1b50: 02 80 ldd r0, Z+2 ; 0x02 |
1b52: f3 81 ldd r31, Z+3 ; 0x03 |
1b54: e0 2d mov r30, r0 |
1b56: 30 97 sbiw r30, 0x00 ; 0 |
1b58: a1 f6 brne .-88 ; 0x1b02 <free+0x26> |
1b5a: ea 01 movw r28, r20 |
1b5c: bb 83 std Y+3, r27 ; 0x03 |
1b5e: aa 83 std Y+2, r26 ; 0x02 |
1b60: ca 01 movw r24, r20 |
1b62: 02 96 adiw r24, 0x02 ; 2 |
1b64: 28 81 ld r18, Y |
1b66: 39 81 ldd r19, Y+1 ; 0x01 |
1b68: 82 0f add r24, r18 |
1b6a: 93 1f adc r25, r19 |
1b6c: 8a 17 cp r24, r26 |
1b6e: 9b 07 cpc r25, r27 |
1b70: 71 f4 brne .+28 ; 0x1b8e <free+0xb2> |
1b72: 8d 91 ld r24, X+ |
1b74: 9c 91 ld r25, X |
1b76: 11 97 sbiw r26, 0x01 ; 1 |
1b78: 28 0f add r18, r24 |
1b7a: 39 1f adc r19, r25 |
1b7c: 2e 5f subi r18, 0xFE ; 254 |
1b7e: 3f 4f sbci r19, 0xFF ; 255 |
1b80: 39 83 std Y+1, r19 ; 0x01 |
1b82: 28 83 st Y, r18 |
1b84: fd 01 movw r30, r26 |
1b86: 82 81 ldd r24, Z+2 ; 0x02 |
1b88: 93 81 ldd r25, Z+3 ; 0x03 |
1b8a: 9b 83 std Y+3, r25 ; 0x03 |
1b8c: 8a 83 std Y+2, r24 ; 0x02 |
1b8e: df 91 pop r29 |
1b90: cf 91 pop r28 |
1b92: 08 95 ret |
00001b94 <memset>: |
1b94: dc 01 movw r26, r24 |
1b96: 40 ff sbrs r20, 0 |
1b98: 03 c0 rjmp .+6 ; 0x1ba0 <memset+0xc> |
1b9a: 01 c0 rjmp .+2 ; 0x1b9e <memset+0xa> |
1b9c: 6d 93 st X+, r22 |
1b9e: 6d 93 st X+, r22 |
1ba0: 42 50 subi r20, 0x02 ; 2 |
1ba2: 50 40 sbci r21, 0x00 ; 0 |
1ba4: d8 f7 brcc .-10 ; 0x1b9c <memset+0x8> |
1ba6: 08 95 ret |
00001ba8 <__udivmodsi4>: |
1ba8: a1 e2 ldi r26, 0x21 ; 33 |
1baa: 1a 2e mov r1, r26 |
1bac: aa 1b sub r26, r26 |
1bae: bb 1b sub r27, r27 |
1bb0: fd 01 movw r30, r26 |
1bb2: 0d c0 rjmp .+26 ; 0x1bce <__udivmodsi4_ep> |
00001bb4 <__udivmodsi4_loop>: |
1bb4: aa 1f adc r26, r26 |
1bb6: bb 1f adc r27, r27 |
1bb8: ee 1f adc r30, r30 |
1bba: ff 1f adc r31, r31 |
1bbc: a2 17 cp r26, r18 |
1bbe: b3 07 cpc r27, r19 |
1bc0: e4 07 cpc r30, r20 |
1bc2: f5 07 cpc r31, r21 |
1bc4: 20 f0 brcs .+8 ; 0x1bce <__udivmodsi4_ep> |
1bc6: a2 1b sub r26, r18 |
1bc8: b3 0b sbc r27, r19 |
1bca: e4 0b sbc r30, r20 |
1bcc: f5 0b sbc r31, r21 |
00001bce <__udivmodsi4_ep>: |
1bce: 66 1f adc r22, r22 |
1bd0: 77 1f adc r23, r23 |
1bd2: 88 1f adc r24, r24 |
1bd4: 99 1f adc r25, r25 |
1bd6: 1a 94 dec r1 |
1bd8: 69 f7 brne .-38 ; 0x1bb4 <__udivmodsi4_loop> |
1bda: 60 95 com r22 |
1bdc: 70 95 com r23 |
1bde: 80 95 com r24 |
1be0: 90 95 com r25 |
1be2: 9b 01 movw r18, r22 |
1be4: ac 01 movw r20, r24 |
1be6: bd 01 movw r22, r26 |
1be8: cf 01 movw r24, r30 |
1bea: 08 95 ret |
/branches/V0.41-Hexa/main.lst |
---|
0,0 → 1,2273 |
1 .file "main.c" |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __CCP__ = 0x34 |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
15 .Ltext0: |
16 .global SetPWM |
18 SetPWM: |
19 .LFB3: |
20 .LM1: |
21 /* prologue: function */ |
22 /* frame size = 0 */ |
23 .LM2: |
24 0000 4091 0000 lds r20,PWM |
25 .LVL0: |
26 .LM3: |
27 0004 8091 0000 lds r24,MaxPWM |
28 .LVL1: |
29 0008 8417 cp r24,r20 |
30 000a 00F4 brsh .L2 |
31 .LM4: |
32 000c AB9A sbi 53-32,3 |
33 000e 482F mov r20,r24 |
34 .L2: |
35 .LM5: |
36 0010 2091 0000 lds r18,Strom |
37 0014 3091 0000 lds r19,(Strom)+1 |
38 0018 293C cpi r18,201 |
39 001a 3105 cpc r19,__zero_reg__ |
40 001c 00F0 brlo .L3 |
41 .LM6: |
42 001e 1BBC out (74)+1-32,__zero_reg__ |
43 0020 1ABC out 74-32,__zero_reg__ |
44 0022 19BC out (72)+1-32,__zero_reg__ |
45 0024 18BC out 72-32,__zero_reg__ |
46 0026 13BC out 67-32,__zero_reg__ |
47 .LM7: |
48 0028 82B3 in r24,50-32 |
49 .LVL2: |
50 002a 877C andi r24,lo8(-57) |
51 002c 82BB out 50-32,r24 |
52 .LM8: |
53 002e AB9A sbi 53-32,3 |
54 .LM9: |
55 0030 8091 0000 lds r24,DebugOut+14 |
56 0034 9091 0000 lds r25,(DebugOut+14)+1 |
57 0038 0196 adiw r24,1 |
58 003a 9093 0000 sts (DebugOut+14)+1,r25 |
59 003e 8093 0000 sts DebugOut+14,r24 |
60 .LM10: |
61 0042 2150 subi r18,lo8(-(-1)) |
62 0044 3040 sbci r19,hi8(-(-1)) |
63 0046 3093 0000 sts (Strom)+1,r19 |
64 004a 2093 0000 sts Strom,r18 |
65 004e 0895 ret |
66 .LVL3: |
67 .L3: |
68 .LM11: |
69 0050 842F mov r24,r20 |
70 .LVL4: |
71 0052 90E0 ldi r25,lo8(0) |
72 0054 9BBD out (74)+1-32,r25 |
73 0056 8ABD out 74-32,r24 |
74 0058 99BD out (72)+1-32,r25 |
75 005a 88BD out 72-32,r24 |
76 005c 43BD out 67-32,r20 |
77 005e 0895 ret |
78 .LFE3: |
80 .global DebugAusgaben |
82 DebugAusgaben: |
83 .LFB4: |
84 .LM12: |
85 /* prologue: function */ |
86 /* frame size = 0 */ |
87 .LM13: |
88 0060 E0E0 ldi r30,lo8(DebugOut+2) |
89 0062 F0E0 ldi r31,hi8(DebugOut+2) |
90 0064 8091 0000 lds r24,Strom |
91 0068 9091 0000 lds r25,(Strom)+1 |
92 006c 9093 0000 sts (DebugOut+2)+1,r25 |
93 0070 8093 0000 sts DebugOut+2,r24 |
94 .LM14: |
95 0074 8091 0000 lds r24,Mittelstrom |
96 0078 8093 0000 sts DebugOut+4,r24 |
97 007c 1382 std Z+3,__zero_reg__ |
98 .LM15: |
99 007e 8091 0000 lds r24,SIO_Drehzahl |
100 0082 9091 0000 lds r25,(SIO_Drehzahl)+1 |
101 0086 9093 0000 sts (DebugOut+6)+1,r25 |
102 008a 8093 0000 sts DebugOut+6,r24 |
103 .LM16: |
104 008e 8091 0000 lds r24,PPM_Signal |
105 0092 9091 0000 lds r25,(PPM_Signal)+1 |
106 0096 9093 0000 sts (DebugOut+8)+1,r25 |
107 009a 8093 0000 sts DebugOut+8,r24 |
108 .LM17: |
109 009e 83B5 in r24,67-32 |
110 00a0 8093 0000 sts DebugOut+10,r24 |
111 00a4 1186 std Z+9,__zero_reg__ |
112 /* epilogue start */ |
113 .LM18: |
114 00a6 0895 ret |
115 .LFE4: |
117 .global PWM_Init |
119 PWM_Init: |
120 .LFB5: |
121 .LM19: |
122 /* prologue: function */ |
123 /* frame size = 0 */ |
124 .LM20: |
125 00a8 1BBC out (74)+1-32,__zero_reg__ |
126 00aa 1ABC out 74-32,__zero_reg__ |
127 00ac 19BC out (72)+1-32,__zero_reg__ |
128 00ae 18BC out 72-32,__zero_reg__ |
129 00b0 13BC out 67-32,__zero_reg__ |
130 00b2 91E0 ldi r25,lo8(1) |
131 00b4 9FBD out 79-32,r25 |
132 00b6 81E4 ldi r24,lo8(65) |
133 00b8 85BD out 69-32,r24 |
134 00ba 8EE0 ldi r24,lo8(14) |
135 00bc 87BB out 55-32,r24 |
136 00be 88B3 in r24,56-32 |
137 00c0 817F andi r24,lo8(-15) |
138 00c2 88BB out 56-32,r24 |
139 .LM21: |
140 00c4 9EBD out 78-32,r25 |
141 /* epilogue start */ |
142 .LM22: |
143 00c6 0895 ret |
144 .LFE5: |
146 .global Wait |
148 Wait: |
149 .LFB6: |
150 .LM23: |
151 .LVL5: |
152 /* prologue: function */ |
153 /* frame size = 0 */ |
154 .LM24: |
155 00c8 92B7 in r25,82-32 |
156 00ca 980F add r25,r24 |
157 .L11: |
158 .LM25: |
159 00cc 82B7 in r24,82-32 |
160 .LVL6: |
161 00ce 891B sub r24,r25 |
162 .LVL7: |
163 00d0 87FD sbrc r24,7 |
164 00d2 00C0 rjmp .L11 |
165 /* epilogue start */ |
166 .LM26: |
167 00d4 0895 ret |
168 .LFE6: |
170 .global Delay |
172 Delay: |
173 .LFB10: |
174 .LM27: |
175 .LVL8: |
176 /* prologue: function */ |
177 /* frame size = 0 */ |
178 00d6 00C0 rjmp .L15 |
179 .L16: |
180 .LM28: |
181 00d8 0197 sbiw r24,1 |
182 .LVL9: |
183 .L15: |
184 .LM29: |
185 00da 0097 sbiw r24,0 |
186 00dc 01F4 brne .L16 |
187 .LM30: |
188 00de 80E0 ldi r24,lo8(0) |
189 .LVL10: |
190 /* epilogue start */ |
191 00e0 0895 ret |
192 .LFE10: |
194 .global SollwertErmittlung |
196 SollwertErmittlung: |
197 .LFB12: |
198 .LM31: |
199 /* prologue: function */ |
200 /* frame size = 0 */ |
201 .LM32: |
202 00e2 8091 0000 lds r24,I2C_Timeout |
203 00e6 9091 0000 lds r25,(I2C_Timeout)+1 |
204 00ea 892B or r24,r25 |
205 00ec 01F0 breq .+2 |
206 00ee 00C0 rjmp .L19 |
207 .LM33: |
208 00f0 8091 0000 lds r24,SIO_Timeout |
209 00f4 9091 0000 lds r25,(SIO_Timeout)+1 |
210 00f8 892B or r24,r25 |
211 00fa 01F0 breq .L20 |
212 .LM34: |
213 00fc 9091 0000 lds r25,SIO_Sollwert |
214 0100 8FEF ldi r24,lo8(-1) |
215 0102 989F mul r25,r24 |
216 0104 C001 movw r24,r0 |
217 0106 1124 clr r1 |
218 0108 68EC ldi r22,lo8(200) |
219 010a 70E0 ldi r23,hi8(200) |
220 010c 00D0 rcall __udivmodhi4 |
221 010e 7093 0000 sts (sollwert.2195)+1,r23 |
222 0112 6093 0000 sts sollwert.2195,r22 |
223 .LM35: |
224 0116 1092 0000 sts PPM_Betrieb,__zero_reg__ |
225 .LM36: |
226 011a 89B7 in r24,89-32 |
227 011c 8F7D andi r24,lo8(-33) |
228 011e 89BF out 89-32,r24 |
229 0120 00C0 rjmp .L26 |
230 .L20: |
231 .LM37: |
232 0122 8091 0000 lds r24,anz_ppm_werte |
233 0126 8531 cpi r24,lo8(21) |
234 0128 00F0 brlo .L22 |
235 .LM38: |
236 012a 81E0 ldi r24,lo8(1) |
237 012c 8093 0000 sts PPM_Betrieb,r24 |
238 .LM39: |
239 0130 2091 0000 lds r18,PPM_Signal |
240 0134 3091 0000 lds r19,(PPM_Signal)+1 |
241 .LVL11: |
242 .LM40: |
243 0138 41E0 ldi r20,hi8(301) |
244 013a 2D32 cpi r18,lo8(301) |
245 013c 3407 cpc r19,r20 |
246 013e 00F4 brsh .L23 |
247 .LM41: |
248 0140 293C cpi r18,201 |
249 0142 3105 cpc r19,__zero_reg__ |
250 0144 00F4 brsh .L24 |
251 .LM42: |
252 0146 2B30 cpi r18,11 |
253 0148 3105 cpc r19,__zero_reg__ |
254 014a 00F4 brsh .L25 |
255 .L23: |
256 014c 1092 0000 sts (sollwert.2195)+1,__zero_reg__ |
257 0150 1092 0000 sts sollwert.2195,__zero_reg__ |
258 0154 00C0 rjmp .L26 |
259 .L24: |
260 0156 28EC ldi r18,lo8(200) |
261 0158 30E0 ldi r19,hi8(200) |
262 .L25: |
263 .LM43: |
264 015a 8CEF ldi r24,lo8(252) |
265 015c 90E0 ldi r25,hi8(252) |
266 015e AC01 movw r20,r24 |
267 0160 249F mul r18,r20 |
268 0162 C001 movw r24,r0 |
269 0164 259F mul r18,r21 |
270 0166 900D add r25,r0 |
271 0168 349F mul r19,r20 |
272 016a 900D add r25,r0 |
273 016c 1124 clr r1 |
274 016e 885D subi r24,lo8(-(-2520)) |
275 0170 9940 sbci r25,hi8(-(-2520)) |
276 0172 64EB ldi r22,lo8(180) |
277 0174 70E0 ldi r23,hi8(180) |
278 0176 00D0 rcall __udivmodhi4 |
279 0178 6D5F subi r22,lo8(-(3)) |
280 017a 7F4F sbci r23,hi8(-(3)) |
281 017c 7093 0000 sts (sollwert.2195)+1,r23 |
282 0180 6093 0000 sts sollwert.2195,r22 |
283 .L26: |
284 .LM44: |
285 0184 AB98 cbi 53-32,3 |
286 0186 00C0 rjmp .L21 |
287 .LVL12: |
288 .L22: |
289 .LM45: |
290 0188 8091 0000 lds r24,sollwert.2195 |
291 018c 9091 0000 lds r25,(sollwert.2195)+1 |
292 0190 0097 sbiw r24,0 |
293 0192 01F0 breq .L27 |
294 0194 0197 sbiw r24,1 |
295 0196 9093 0000 sts (sollwert.2195)+1,r25 |
296 019a 8093 0000 sts sollwert.2195,r24 |
297 .L27: |
298 .LM46: |
299 019e AB9A sbi 53-32,3 |
300 01a0 00C0 rjmp .L21 |
301 .L19: |
302 .LM47: |
303 01a2 8091 0000 lds r24,I2C_RXBuffer |
304 01a6 8093 0000 sts sollwert.2195,r24 |
305 01aa 1092 0000 sts sollwert.2195+1,__zero_reg__ |
306 .LM48: |
307 01ae 1092 0000 sts PPM_Betrieb,__zero_reg__ |
308 .LM49: |
309 01b2 AB98 cbi 53-32,3 |
310 .LM50: |
311 01b4 89B7 in r24,89-32 |
312 01b6 8F7D andi r24,lo8(-33) |
313 01b8 89BF out 89-32,r24 |
314 .LVL13: |
315 .L21: |
316 .LM51: |
317 01ba 8091 0000 lds r24,sollwert.2195 |
318 01be 9091 0000 lds r25,(sollwert.2195)+1 |
319 01c2 8F3F cpi r24,255 |
320 01c4 9105 cpc r25,__zero_reg__ |
321 01c6 01F0 breq .L28 |
322 01c8 00F0 brlo .L28 |
323 01ca 8FEF ldi r24,lo8(255) |
324 01cc 90E0 ldi r25,hi8(255) |
325 01ce 9093 0000 sts (sollwert.2195)+1,r25 |
326 01d2 8093 0000 sts sollwert.2195,r24 |
327 .L28: |
328 .LM52: |
329 01d6 8091 0000 lds r24,sollwert.2195 |
330 /* epilogue start */ |
331 01da 0895 ret |
332 .LFE12: |
334 .global DelayM |
336 DelayM: |
337 .LFB9: |
338 .LM53: |
339 .LVL14: |
340 01dc CF93 push r28 |
341 01de DF93 push r29 |
342 /* prologue: function */ |
343 /* frame size = 0 */ |
344 01e0 EC01 movw r28,r24 |
345 01e2 00C0 rjmp .L31 |
346 .LVL15: |
347 .L33: |
348 .LM54: |
349 01e4 00D0 rcall FastADConvert |
350 01e6 2197 sbiw r28,1 |
351 .LM55: |
352 01e8 8091 0000 lds r24,RuheStrom |
353 01ec 9091 0000 lds r25,(RuheStrom)+1 |
354 01f0 8858 subi r24,lo8(-(120)) |
355 01f2 9F4F sbci r25,hi8(-(120)) |
356 01f4 2091 0000 lds r18,Strom |
357 01f8 3091 0000 lds r19,(Strom)+1 |
358 01fc 8217 cp r24,r18 |
359 01fe 9307 cpc r25,r19 |
360 0200 00F4 brsh .L31 |
361 .LM56: |
362 0202 82B3 in r24,50-32 |
363 0204 877C andi r24,lo8(-57) |
364 0206 82BB out 50-32,r24 |
365 0208 88B3 in r24,56-32 |
366 020a 817F andi r24,lo8(-15) |
367 020c 88BB out 56-32,r24 |
368 020e 81E0 ldi r24,lo8(1) |
369 0210 00C0 rjmp .L32 |
370 .LVL16: |
371 .L31: |
372 .LM57: |
373 0212 2097 sbiw r28,0 |
374 0214 01F4 brne .L33 |
375 0216 80E0 ldi r24,lo8(0) |
376 .L32: |
377 /* epilogue start */ |
378 .LM58: |
379 0218 DF91 pop r29 |
380 021a CF91 pop r28 |
381 .LVL17: |
382 021c 0895 ret |
383 .LFE9: |
385 .global RotBlink |
387 RotBlink: |
388 .LFB7: |
389 .LM59: |
390 .LVL18: |
391 021e 1F93 push r17 |
392 /* prologue: function */ |
393 /* frame size = 0 */ |
394 0220 182F mov r17,r24 |
395 .LM60: |
396 /* #APP */ |
397 ; 149 "main.c" 1 |
398 0222 7894 sei |
399 ; 0 "" 2 |
400 /* #NOAPP */ |
401 0224 00C0 rjmp .L37 |
402 .LVL19: |
403 .L38: |
404 .LM61: |
405 0226 AB9A sbi 53-32,3 |
406 .LM62: |
407 0228 8CE2 ldi r24,lo8(300) |
408 022a 91E0 ldi r25,hi8(300) |
409 022c 00D0 rcall Delay_ms |
410 .LM63: |
411 022e AB98 cbi 53-32,3 |
412 .LM64: |
413 0230 8CE2 ldi r24,lo8(300) |
414 0232 91E0 ldi r25,hi8(300) |
415 0234 00D0 rcall Delay_ms |
416 0236 1150 subi r17,lo8(-(-1)) |
417 .LVL20: |
418 .L37: |
419 .LM65: |
420 0238 1123 tst r17 |
421 023a 01F4 brne .L38 |
422 .LM66: |
423 023c 88EE ldi r24,lo8(1000) |
424 023e 93E0 ldi r25,hi8(1000) |
425 0240 00D0 rcall Delay_ms |
426 /* epilogue start */ |
427 .LM67: |
428 0242 1F91 pop r17 |
429 .LVL21: |
430 0244 0895 ret |
431 .LFE7: |
433 .global MotorTon |
435 MotorTon: |
436 .LFB11: |
437 .LM68: |
438 0246 AF92 push r10 |
439 0248 BF92 push r11 |
440 024a DF92 push r13 |
441 024c EF92 push r14 |
442 024e FF92 push r15 |
443 0250 0F93 push r16 |
444 0252 1F93 push r17 |
445 0254 DF93 push r29 |
446 0256 CF93 push r28 |
447 0258 CDB7 in r28,__SP_L__ |
448 025a DEB7 in r29,__SP_H__ |
449 025c 2797 sbiw r28,7 |
450 025e 0FB6 in __tmp_reg__,__SREG__ |
451 0260 F894 cli |
452 0262 DEBF out __SP_H__,r29 |
453 0264 0FBE out __SREG__,__tmp_reg__ |
454 0266 CDBF out __SP_L__,r28 |
455 /* prologue: function */ |
456 /* frame size = 7 */ |
457 .LM69: |
458 0268 DE01 movw r26,r28 |
459 026a 1196 adiw r26,1 |
460 026c E0E0 ldi r30,lo8(C.19.2035) |
461 026e F0E0 ldi r31,hi8(C.19.2035) |
462 0270 87E0 ldi r24,lo8(7) |
463 .L41: |
464 0272 0190 ld r0,Z+ |
465 0274 0D92 st X+,r0 |
466 0276 8150 subi r24,lo8(-(-1)) |
467 0278 01F4 brne .L41 |
468 .LM70: |
469 027a AB98 cbi 53-32,3 |
470 .LM71: |
471 027c 8091 0000 lds r24,MotorAdresse |
472 0280 FE01 movw r30,r28 |
473 0282 E80F add r30,r24 |
474 0284 F11D adc r31,__zero_reg__ |
475 0286 8181 ldd r24,Z+1 |
476 0288 90E0 ldi r25,lo8(0) |
477 028a 2CE2 ldi r18,lo8(300) |
478 028c 31E0 ldi r19,hi8(300) |
479 028e AC01 movw r20,r24 |
480 0290 429F mul r20,r18 |
481 0292 C001 movw r24,r0 |
482 0294 439F mul r20,r19 |
483 0296 900D add r25,r0 |
484 0298 529F mul r21,r18 |
485 029a 900D add r25,r0 |
486 029c 1124 clr r1 |
487 029e 00D0 rcall Delay_ms |
488 .LM72: |
489 02a0 1092 0000 sts CompInterruptFreigabe,__zero_reg__ |
490 02a4 4398 cbi 40-32,3 |
491 .LM73: |
492 /* #APP */ |
493 ; 277 "main.c" 1 |
494 02a6 F894 cli |
495 ; 0 "" 2 |
496 .LM74: |
497 /* #NOAPP */ |
498 02a8 8AE0 ldi r24,lo8(10) |
499 02aa 00D0 rcall uart_putchar |
500 .LM75: |
501 02ac 82B3 in r24,50-32 |
502 02ae 877C andi r24,lo8(-57) |
503 02b0 82BB out 50-32,r24 |
504 02b2 1BBC out (74)+1-32,__zero_reg__ |
505 02b4 1ABC out 74-32,__zero_reg__ |
506 02b6 19BC out (72)+1-32,__zero_reg__ |
507 02b8 18BC out 72-32,__zero_reg__ |
508 02ba 13BC out 67-32,__zero_reg__ |
509 02bc 81E0 ldi r24,lo8(1) |
510 02be 8FBD out 79-32,r24 |
511 02c0 81E4 ldi r24,lo8(65) |
512 02c2 85BD out 69-32,r24 |
513 02c4 8EE0 ldi r24,lo8(14) |
514 02c6 87BB out 55-32,r24 |
515 02c8 88B3 in r24,56-32 |
516 02ca 817F andi r24,lo8(-15) |
517 02cc 88BB out 56-32,r24 |
518 .LM76: |
519 02ce 1092 0000 sts Strom_max,__zero_reg__ |
520 .LM77: |
521 02d2 82E3 ldi r24,lo8(50) |
522 02d4 90E0 ldi r25,hi8(50) |
523 02d6 00D0 rcall DelayM |
524 .LM78: |
525 02d8 8091 0000 lds r24,Strom_max |
526 02dc 8093 0000 sts RuheStrom,r24 |
527 02e0 1092 0000 sts RuheStrom+1,__zero_reg__ |
528 .LM79: |
529 02e4 1092 0000 sts (Strom)+1,__zero_reg__ |
530 02e8 1092 0000 sts Strom,__zero_reg__ |
531 .LM80: |
532 02ec 8CB1 in r24,44-32 |
533 02ee 8032 cpi r24,lo8(32) |
534 02f0 01F0 breq .L42 |
535 02f2 38EE ldi r19,lo8(1000) |
536 02f4 E32E mov r14,r19 |
537 02f6 33E0 ldi r19,hi8(1000) |
538 02f8 F32E mov r15,r19 |
539 .LVL22: |
540 02fa 82E3 ldi r24,lo8(50) |
541 .LVL23: |
542 02fc 00C0 rjmp .L43 |
543 .LVL24: |
544 .L42: |
545 02fe 8FE5 ldi r24,lo8(95) |
546 0300 00D0 rcall uart_putchar |
547 0302 EE24 clr r14 |
548 0304 EA94 dec r14 |
549 0306 FE2C mov r15,r14 |
550 .LVL25: |
551 0308 88E2 ldi r24,lo8(40) |
552 .LVL26: |
553 .L43: |
554 .LM81: |
555 030a 1092 0000 sts (Strom)+1,__zero_reg__ |
556 030e 1092 0000 sts Strom,__zero_reg__ |
557 0312 00E0 ldi r16,lo8(0) |
558 0314 10E0 ldi r17,hi8(0) |
559 .LVL27: |
560 .LM82: |
561 0316 A82E mov r10,r24 |
562 0318 BB24 clr r11 |
563 .L45: |
564 .LM83: |
565 031a 939A sbi 50-32,3 |
566 .LM84: |
567 031c 81E0 ldi r24,lo8(1) |
568 031e 90E0 ldi r25,hi8(1) |
569 .LVL28: |
570 0320 00D0 rcall DelayM |
571 .LM85: |
572 0322 82B3 in r24,50-32 |
573 0324 877C andi r24,lo8(-57) |
574 0326 82BB out 50-32,r24 |
575 0328 88B3 in r24,56-32 |
576 032a 817F andi r24,lo8(-15) |
577 032c 88BB out 56-32,r24 |
578 .LBB46: |
579 .LBB47: |
580 .LM86: |
581 .LBE47: |
582 .LBE46: |
583 .LM87: |
584 032e C39A sbi 56-32,3 |
585 .LM88: |
586 0330 81E0 ldi r24,lo8(1) |
587 0332 90E0 ldi r25,hi8(1) |
588 0334 00D0 rcall DelayM |
589 .LM89: |
590 0336 82B3 in r24,50-32 |
591 0338 877C andi r24,lo8(-57) |
592 033a 82BB out 50-32,r24 |
593 033c 88B3 in r24,56-32 |
594 033e 817F andi r24,lo8(-15) |
595 0340 88BB out 56-32,r24 |
596 .LM90: |
597 0342 8091 0000 lds r24,RuheStrom |
598 0346 9091 0000 lds r25,(RuheStrom)+1 |
599 034a 8A0D add r24,r10 |
600 034c 9B1D adc r25,r11 |
601 034e 2091 0000 lds r18,Strom |
602 0352 3091 0000 lds r19,(Strom)+1 |
603 0356 8217 cp r24,r18 |
604 0358 9307 cpc r25,r19 |
605 035a 00F0 brlo .L44 |
606 .LBB48: |
607 .LBB49: |
608 .LM91: |
609 .LBE49: |
610 .LBE48: |
611 .LM92: |
612 035c 0F5F subi r16,lo8(-(1)) |
613 035e 1F4F sbci r17,hi8(-(1)) |
614 0360 0E15 cp r16,r14 |
615 0362 1F05 cpc r17,r15 |
616 0364 00F0 brlo .L45 |
617 0366 DD24 clr r13 |
618 .LVL29: |
619 0368 00C0 rjmp .L46 |
620 .LVL30: |
621 .L44: |
622 .LM93: |
623 036a 84E3 ldi r24,lo8(52) |
624 036c 00D0 rcall uart_putchar |
625 036e 82B3 in r24,50-32 |
626 0370 877C andi r24,lo8(-57) |
627 0372 82BB out 50-32,r24 |
628 0374 88B3 in r24,56-32 |
629 0376 817F andi r24,lo8(-15) |
630 0378 88BB out 56-32,r24 |
631 037a 24E0 ldi r18,lo8(4) |
632 037c D22E mov r13,r18 |
633 .LVL31: |
634 .L46: |
635 037e 80E1 ldi r24,lo8(10000) |
636 0380 97E2 ldi r25,hi8(10000) |
637 .LVL32: |
638 0382 00C0 rjmp .L47 |
639 .L48: |
640 .LBB50: |
641 .LBB51: |
642 .LM94: |
643 .L47: |
644 .LM95: |
645 0384 0197 sbiw r24,1 |
646 0386 5FEF ldi r21,hi8(-1) |
647 0388 8F3F cpi r24,lo8(-1) |
648 038a 9507 cpc r25,r21 |
649 038c 01F4 brne .L48 |
650 .LBE51: |
651 .LBE50: |
652 .LM96: |
653 038e 1092 0000 sts (Strom)+1,__zero_reg__ |
654 0392 1092 0000 sts Strom,__zero_reg__ |
655 0396 00E0 ldi r16,lo8(0) |
656 0398 10E0 ldi r17,hi8(0) |
657 .LVL33: |
658 .L50: |
659 .LM97: |
660 039a 949A sbi 50-32,4 |
661 .LM98: |
662 039c 81E0 ldi r24,lo8(1) |
663 039e 90E0 ldi r25,hi8(1) |
664 .LVL34: |
665 03a0 00D0 rcall DelayM |
666 .LM99: |
667 03a2 82B3 in r24,50-32 |
668 03a4 877C andi r24,lo8(-57) |
669 03a6 82BB out 50-32,r24 |
670 03a8 88B3 in r24,56-32 |
671 03aa 817F andi r24,lo8(-15) |
672 03ac 88BB out 56-32,r24 |
673 .LBB52: |
674 .LBB53: |
675 .LM100: |
676 .LBE53: |
677 .LBE52: |
678 .LM101: |
679 03ae C29A sbi 56-32,2 |
680 .LM102: |
681 03b0 81E0 ldi r24,lo8(1) |
682 03b2 90E0 ldi r25,hi8(1) |
683 03b4 00D0 rcall DelayM |
684 .LM103: |
685 03b6 82B3 in r24,50-32 |
686 03b8 877C andi r24,lo8(-57) |
687 03ba 82BB out 50-32,r24 |
688 03bc 88B3 in r24,56-32 |
689 03be 817F andi r24,lo8(-15) |
690 03c0 88BB out 56-32,r24 |
691 .LM104: |
692 03c2 8091 0000 lds r24,RuheStrom |
693 03c6 9091 0000 lds r25,(RuheStrom)+1 |
694 03ca 8A0D add r24,r10 |
695 03cc 9B1D adc r25,r11 |
696 03ce 2091 0000 lds r18,Strom |
697 03d2 3091 0000 lds r19,(Strom)+1 |
698 03d6 8217 cp r24,r18 |
699 03d8 9307 cpc r25,r19 |
700 03da 00F0 brlo .L49 |
701 .LBB54: |
702 .LBB55: |
703 .LM105: |
704 .LBE55: |
705 .LBE54: |
706 .LM106: |
707 03dc 0F5F subi r16,lo8(-(1)) |
708 03de 1F4F sbci r17,hi8(-(1)) |
709 03e0 0E15 cp r16,r14 |
710 03e2 1F05 cpc r17,r15 |
711 03e4 00F0 brlo .L50 |
712 03e6 00C0 rjmp .L51 |
713 .L49: |
714 .LM107: |
715 03e8 85E3 ldi r24,lo8(53) |
716 03ea 00D0 rcall uart_putchar |
717 03ec 82B3 in r24,50-32 |
718 03ee 877C andi r24,lo8(-57) |
719 03f0 82BB out 50-32,r24 |
720 03f2 88B3 in r24,56-32 |
721 03f4 817F andi r24,lo8(-15) |
722 03f6 88BB out 56-32,r24 |
723 03f8 95E0 ldi r25,lo8(5) |
724 03fa D92E mov r13,r25 |
725 .L51: |
726 .LM108: |
727 03fc 1092 0000 sts (Strom)+1,__zero_reg__ |
728 0400 1092 0000 sts Strom,__zero_reg__ |
729 0404 80E1 ldi r24,lo8(10000) |
730 0406 97E2 ldi r25,hi8(10000) |
731 .LVL35: |
732 0408 00C0 rjmp .L52 |
733 .L53: |
734 .LBB56: |
735 .LBB57: |
736 .LM109: |
737 .L52: |
738 .LM110: |
739 040a 0197 sbiw r24,1 |
740 040c 2FEF ldi r18,hi8(-1) |
741 040e 8F3F cpi r24,lo8(-1) |
742 0410 9207 cpc r25,r18 |
743 0412 01F4 brne .L53 |
744 0414 00E0 ldi r16,lo8(0) |
745 0416 10E0 ldi r17,hi8(0) |
746 .LVL36: |
747 .L55: |
748 .LBE57: |
749 .LBE56: |
750 .LM111: |
751 0418 959A sbi 50-32,5 |
752 .LM112: |
753 041a 81E0 ldi r24,lo8(1) |
754 041c 90E0 ldi r25,hi8(1) |
755 .LVL37: |
756 041e 00D0 rcall DelayM |
757 .LM113: |
758 0420 82B3 in r24,50-32 |
759 0422 877C andi r24,lo8(-57) |
760 0424 82BB out 50-32,r24 |
761 0426 88B3 in r24,56-32 |
762 0428 817F andi r24,lo8(-15) |
763 042a 88BB out 56-32,r24 |
764 .LBB58: |
765 .LBB59: |
766 .LM114: |
767 .LBE59: |
768 .LBE58: |
769 .LM115: |
770 042c C19A sbi 56-32,1 |
771 .LM116: |
772 042e 81E0 ldi r24,lo8(1) |
773 0430 90E0 ldi r25,hi8(1) |
774 0432 00D0 rcall DelayM |
775 .LM117: |
776 0434 82B3 in r24,50-32 |
777 0436 877C andi r24,lo8(-57) |
778 0438 82BB out 50-32,r24 |
779 043a 88B3 in r24,56-32 |
780 043c 817F andi r24,lo8(-15) |
781 043e 88BB out 56-32,r24 |
782 .LM118: |
783 0440 8091 0000 lds r24,RuheStrom |
784 0444 9091 0000 lds r25,(RuheStrom)+1 |
785 0448 8A0D add r24,r10 |
786 044a 9B1D adc r25,r11 |
787 044c 2091 0000 lds r18,Strom |
788 0450 3091 0000 lds r19,(Strom)+1 |
789 0454 8217 cp r24,r18 |
790 0456 9307 cpc r25,r19 |
791 0458 00F0 brlo .L54 |
792 .LBB60: |
793 .LBB61: |
794 .LM119: |
795 .LBE61: |
796 .LBE60: |
797 .LM120: |
798 045a 0F5F subi r16,lo8(-(1)) |
799 045c 1F4F sbci r17,hi8(-(1)) |
800 045e 0E15 cp r16,r14 |
801 0460 1F05 cpc r17,r15 |
802 0462 00F0 brlo .L55 |
803 0464 00C0 rjmp .L110 |
804 .L54: |
805 .LM121: |
806 0466 86E3 ldi r24,lo8(54) |
807 0468 00D0 rcall uart_putchar |
808 046a 82B3 in r24,50-32 |
809 046c 877C andi r24,lo8(-57) |
810 046e 82BB out 50-32,r24 |
811 0470 88B3 in r24,56-32 |
812 0472 817F andi r24,lo8(-15) |
813 0474 88BB out 56-32,r24 |
814 0476 86E0 ldi r24,lo8(6) |
815 0478 D82E mov r13,r24 |
816 047a 00C0 rjmp .L108 |
817 .L110: |
818 .LM122: |
819 047c DD20 tst r13 |
820 047e 01F0 breq .L58 |
821 .L108: |
822 0480 8D2D mov r24,r13 |
823 0482 00D0 rcall RotBlink |
824 0484 00C0 rjmp .L108 |
825 .L58: |
826 .LM123: |
827 0486 8091 0000 lds r24,IntRef |
828 048a 87B9 out 39-32,r24 |
829 .LM124: |
830 048c 82B3 in r24,50-32 |
831 048e 877C andi r24,lo8(-57) |
832 0490 82BB out 50-32,r24 |
833 0492 88B3 in r24,56-32 |
834 0494 817F andi r24,lo8(-15) |
835 0496 88BB out 56-32,r24 |
836 .LM125: |
837 0498 949A sbi 50-32,4 |
838 .LM126: |
839 049a 959A sbi 50-32,5 |
840 .LM127: |
841 049c 1092 0000 sts (Strom)+1,__zero_reg__ |
842 04a0 1092 0000 sts Strom,__zero_reg__ |
843 04a4 00E0 ldi r16,lo8(0) |
844 04a6 10E0 ldi r17,hi8(0) |
845 .LVL38: |
846 04a8 FF24 clr r15 |
847 .LVL39: |
848 .L63: |
849 .LM128: |
850 04aa C39A sbi 56-32,3 |
851 .LBB62: |
852 .LBB63: |
853 .LM129: |
854 .LBE63: |
855 .LBE62: |
856 .LM130: |
857 04ac 80E0 ldi r24,lo8(0) |
858 .LVL40: |
859 04ae 00D0 rcall MessAD |
860 04b0 C397 sbiw r24,51 |
861 04b2 00F0 brlo .L59 |
862 04b4 41E0 ldi r20,lo8(1) |
863 04b6 F42A or r15,r20 |
864 04b8 00C0 rjmp .L60 |
865 .L59: |
866 04ba 5EEF ldi r21,lo8(-2) |
867 04bc F522 and r15,r21 |
868 .L60: |
869 .LM131: |
870 04be 18BA out 56-32,__zero_reg__ |
871 04c0 8CE2 ldi r24,lo8(300) |
872 04c2 91E0 ldi r25,hi8(300) |
873 .LVL41: |
874 04c4 00C0 rjmp .L61 |
875 .L62: |
876 .LBB64: |
877 .LBB65: |
878 .LM132: |
879 .L61: |
880 .LM133: |
881 04c6 0197 sbiw r24,1 |
882 04c8 2FEF ldi r18,hi8(-1) |
883 04ca 8F3F cpi r24,lo8(-1) |
884 04cc 9207 cpc r25,r18 |
885 04ce 01F4 brne .L62 |
886 .LBE65: |
887 .LBE64: |
888 .LM134: |
889 04d0 0F5F subi r16,lo8(-(1)) |
890 04d2 1F4F sbci r17,hi8(-(1)) |
891 04d4 0937 cpi r16,121 |
892 04d6 1105 cpc r17,__zero_reg__ |
893 04d8 01F4 brne .L63 |
894 .LM135: |
895 04da 82B3 in r24,50-32 |
896 .LVL42: |
897 04dc 877C andi r24,lo8(-57) |
898 04de 82BB out 50-32,r24 |
899 04e0 88B3 in r24,56-32 |
900 04e2 817F andi r24,lo8(-15) |
901 04e4 88BB out 56-32,r24 |
902 .LM136: |
903 04e6 939A sbi 50-32,3 |
904 .LM137: |
905 04e8 959A sbi 50-32,5 |
906 04ea 00E0 ldi r16,lo8(0) |
907 04ec 10E0 ldi r17,hi8(0) |
908 .LVL43: |
909 .L68: |
910 .LM138: |
911 04ee C29A sbi 56-32,2 |
912 .LBB66: |
913 .LBB67: |
914 .LM139: |
915 .LBE67: |
916 .LBE66: |
917 .LM140: |
918 04f0 81E0 ldi r24,lo8(1) |
919 .LVL44: |
920 04f2 00D0 rcall MessAD |
921 04f4 C397 sbiw r24,51 |
922 04f6 00F0 brlo .L64 |
923 04f8 42E0 ldi r20,lo8(2) |
924 04fa F42A or r15,r20 |
925 04fc 00C0 rjmp .L65 |
926 .L64: |
927 04fe 5DEF ldi r21,lo8(-3) |
928 0500 F522 and r15,r21 |
929 .L65: |
930 .LM141: |
931 0502 18BA out 56-32,__zero_reg__ |
932 0504 8CE2 ldi r24,lo8(300) |
933 0506 91E0 ldi r25,hi8(300) |
934 .LVL45: |
935 0508 00C0 rjmp .L66 |
936 .L67: |
937 .LBB68: |
938 .LBB69: |
939 .LM142: |
940 .L66: |
941 .LM143: |
942 050a 0197 sbiw r24,1 |
943 050c 2FEF ldi r18,hi8(-1) |
944 050e 8F3F cpi r24,lo8(-1) |
945 0510 9207 cpc r25,r18 |
946 0512 01F4 brne .L67 |
947 .LBE69: |
948 .LBE68: |
949 .LM144: |
950 0514 0F5F subi r16,lo8(-(1)) |
951 0516 1F4F sbci r17,hi8(-(1)) |
952 0518 0538 cpi r16,133 |
953 051a 1105 cpc r17,__zero_reg__ |
954 051c 01F4 brne .L68 |
955 .LM145: |
956 051e 82B3 in r24,50-32 |
957 .LVL46: |
958 0520 877C andi r24,lo8(-57) |
959 0522 82BB out 50-32,r24 |
960 0524 88B3 in r24,56-32 |
961 0526 817F andi r24,lo8(-15) |
962 0528 88BB out 56-32,r24 |
963 .LM146: |
964 052a 939A sbi 50-32,3 |
965 .LM147: |
966 052c 949A sbi 50-32,4 |
967 052e 00E0 ldi r16,lo8(0) |
968 0530 10E0 ldi r17,hi8(0) |
969 .LVL47: |
970 .L73: |
971 .LM148: |
972 0532 C19A sbi 56-32,1 |
973 .LBB70: |
974 .LBB71: |
975 .LM149: |
976 .LBE71: |
977 .LBE70: |
978 .LM150: |
979 0534 82E0 ldi r24,lo8(2) |
980 .LVL48: |
981 0536 00D0 rcall MessAD |
982 0538 C397 sbiw r24,51 |
983 053a 00F0 brlo .L69 |
984 053c 44E0 ldi r20,lo8(4) |
985 053e F42A or r15,r20 |
986 0540 00C0 rjmp .L70 |
987 .L69: |
988 0542 5BEF ldi r21,lo8(-5) |
989 0544 F522 and r15,r21 |
990 .L70: |
991 .LM151: |
992 0546 18BA out 56-32,__zero_reg__ |
993 0548 8AE4 ldi r24,lo8(330) |
994 054a 91E0 ldi r25,hi8(330) |
995 .LVL49: |
996 054c 00C0 rjmp .L71 |
997 .L72: |
998 .LBB72: |
999 .LBB73: |
1000 .LM152: |
1001 .L71: |
1002 .LM153: |
1003 054e 0197 sbiw r24,1 |
1004 0550 2FEF ldi r18,hi8(-1) |
1005 0552 8F3F cpi r24,lo8(-1) |
1006 0554 9207 cpc r25,r18 |
1007 0556 01F4 brne .L72 |
1008 .LBE73: |
1009 .LBE72: |
1010 .LM154: |
1011 0558 0F5F subi r16,lo8(-(1)) |
1012 055a 1F4F sbci r17,hi8(-(1)) |
1013 055c 0F36 cpi r16,111 |
1014 055e 1105 cpc r17,__zero_reg__ |
1015 0560 01F4 brne .L73 |
1016 .LM155: |
1017 0562 82B3 in r24,50-32 |
1018 .LVL50: |
1019 0564 877C andi r24,lo8(-57) |
1020 0566 82BB out 50-32,r24 |
1021 0568 88B3 in r24,56-32 |
1022 056a 817F andi r24,lo8(-15) |
1023 056c 88BB out 56-32,r24 |
1024 .LM156: |
1025 056e 939A sbi 50-32,3 |
1026 0570 00E0 ldi r16,lo8(0) |
1027 0572 10E0 ldi r17,hi8(0) |
1028 .LVL51: |
1029 .L78: |
1030 .LM157: |
1031 0574 C29A sbi 56-32,2 |
1032 .LBB74: |
1033 .LBB75: |
1034 .LM158: |
1035 .LBE75: |
1036 .LBE74: |
1037 .LM159: |
1038 0576 80E0 ldi r24,lo8(0) |
1039 .LVL52: |
1040 0578 00D0 rcall MessAD |
1041 057a 8138 cpi r24,129 |
1042 057c 9105 cpc r25,__zero_reg__ |
1043 057e 00F0 brlo .L74 |
1044 0580 47EF ldi r20,lo8(-9) |
1045 0582 F422 and r15,r20 |
1046 0584 00C0 rjmp .L75 |
1047 .L74: |
1048 0586 58E0 ldi r21,lo8(8) |
1049 0588 F52A or r15,r21 |
1050 .L75: |
1051 .LM160: |
1052 058a 18BA out 56-32,__zero_reg__ |
1053 058c 8AE4 ldi r24,lo8(330) |
1054 058e 91E0 ldi r25,hi8(330) |
1055 .LVL53: |
1056 0590 00C0 rjmp .L76 |
1057 .L77: |
1058 .LBB76: |
1059 .LBB77: |
1060 .LM161: |
1061 .L76: |
1062 .LM162: |
1063 0592 0197 sbiw r24,1 |
1064 0594 2FEF ldi r18,hi8(-1) |
1065 0596 8F3F cpi r24,lo8(-1) |
1066 0598 9207 cpc r25,r18 |
1067 059a 01F4 brne .L77 |
1068 .LBE77: |
1069 .LBE76: |
1070 .LM163: |
1071 059c 0F5F subi r16,lo8(-(1)) |
1072 059e 1F4F sbci r17,hi8(-(1)) |
1073 05a0 0937 cpi r16,121 |
1074 05a2 1105 cpc r17,__zero_reg__ |
1075 05a4 01F4 brne .L78 |
1076 .LM164: |
1077 05a6 959A sbi 50-32,5 |
1078 05a8 00E0 ldi r16,lo8(0) |
1079 05aa 10E0 ldi r17,hi8(0) |
1080 .LVL54: |
1081 .L83: |
1082 .LM165: |
1083 05ac C29A sbi 56-32,2 |
1084 .LBB78: |
1085 .LBB79: |
1086 .LM166: |
1087 .LBE79: |
1088 .LBE78: |
1089 .LM167: |
1090 05ae 82E0 ldi r24,lo8(2) |
1091 .LVL55: |
1092 05b0 00D0 rcall MessAD |
1093 05b2 8138 cpi r24,129 |
1094 05b4 9105 cpc r25,__zero_reg__ |
1095 05b6 00F0 brlo .L79 |
1096 05b8 4FED ldi r20,lo8(-33) |
1097 05ba F422 and r15,r20 |
1098 05bc 00C0 rjmp .L80 |
1099 .L79: |
1100 05be 50E2 ldi r21,lo8(32) |
1101 05c0 F52A or r15,r21 |
1102 .L80: |
1103 .LM168: |
1104 05c2 18BA out 56-32,__zero_reg__ |
1105 05c4 88E6 ldi r24,lo8(360) |
1106 05c6 91E0 ldi r25,hi8(360) |
1107 .LVL56: |
1108 05c8 00C0 rjmp .L81 |
1109 .L82: |
1110 .LBB80: |
1111 .LBB81: |
1112 .LM169: |
1113 .L81: |
1114 .LM170: |
1115 05ca 0197 sbiw r24,1 |
1116 05cc 2FEF ldi r18,hi8(-1) |
1117 05ce 8F3F cpi r24,lo8(-1) |
1118 05d0 9207 cpc r25,r18 |
1119 05d2 01F4 brne .L82 |
1120 .LBE81: |
1121 .LBE80: |
1122 .LM171: |
1123 05d4 0F5F subi r16,lo8(-(1)) |
1124 05d6 1F4F sbci r17,hi8(-(1)) |
1125 05d8 0538 cpi r16,133 |
1126 05da 1105 cpc r17,__zero_reg__ |
1127 05dc 01F4 brne .L83 |
1128 .LM172: |
1129 05de 82B3 in r24,50-32 |
1130 .LVL57: |
1131 05e0 877C andi r24,lo8(-57) |
1132 05e2 82BB out 50-32,r24 |
1133 05e4 88B3 in r24,56-32 |
1134 05e6 817F andi r24,lo8(-15) |
1135 05e8 88BB out 56-32,r24 |
1136 .LM173: |
1137 05ea 82B3 in r24,50-32 |
1138 05ec 877C andi r24,lo8(-57) |
1139 05ee 82BB out 50-32,r24 |
1140 05f0 88B3 in r24,56-32 |
1141 05f2 817F andi r24,lo8(-15) |
1142 05f4 88BB out 56-32,r24 |
1143 .LM174: |
1144 05f6 949A sbi 50-32,4 |
1145 05f8 00E0 ldi r16,lo8(0) |
1146 05fa 10E0 ldi r17,hi8(0) |
1147 .LVL58: |
1148 .L88: |
1149 .LM175: |
1150 05fc C19A sbi 56-32,1 |
1151 .LBB82: |
1152 .LBB83: |
1153 .LM176: |
1154 .LBE83: |
1155 .LBE82: |
1156 .LM177: |
1157 05fe 81E0 ldi r24,lo8(1) |
1158 .LVL59: |
1159 0600 00D0 rcall MessAD |
1160 0602 8138 cpi r24,129 |
1161 0604 9105 cpc r25,__zero_reg__ |
1162 0606 00F0 brlo .L84 |
1163 0608 4FEE ldi r20,lo8(-17) |
1164 060a F422 and r15,r20 |
1165 060c 00C0 rjmp .L85 |
1166 .L84: |
1167 060e 50E1 ldi r21,lo8(16) |
1168 0610 F52A or r15,r21 |
1169 .L85: |
1170 .LM178: |
1171 0612 18BA out 56-32,__zero_reg__ |
1172 0614 88E6 ldi r24,lo8(360) |
1173 0616 91E0 ldi r25,hi8(360) |
1174 .LVL60: |
1175 0618 00C0 rjmp .L86 |
1176 .L87: |
1177 .LBB84: |
1178 .LBB85: |
1179 .LM179: |
1180 .L86: |
1181 .LM180: |
1182 061a 0197 sbiw r24,1 |
1183 061c 2FEF ldi r18,hi8(-1) |
1184 061e 8F3F cpi r24,lo8(-1) |
1185 0620 9207 cpc r25,r18 |
1186 0622 01F4 brne .L87 |
1187 .LBE85: |
1188 .LBE84: |
1189 .LM181: |
1190 0624 0F5F subi r16,lo8(-(1)) |
1191 0626 1F4F sbci r17,hi8(-(1)) |
1192 0628 0F36 cpi r16,111 |
1193 062a 1105 cpc r17,__zero_reg__ |
1194 062c 01F4 brne .L88 |
1195 .LM182: |
1196 062e 82B3 in r24,50-32 |
1197 .LVL61: |
1198 0630 877C andi r24,lo8(-57) |
1199 0632 82BB out 50-32,r24 |
1200 0634 88B3 in r24,56-32 |
1201 0636 817F andi r24,lo8(-15) |
1202 0638 88BB out 56-32,r24 |
1203 .LM183: |
1204 /* #APP */ |
1205 ; 468 "main.c" 1 |
1206 063a 7894 sei |
1207 ; 0 "" 2 |
1208 .LM184: |
1209 /* #NOAPP */ |
1210 063c 8091 0000 lds r24,MotorAdresse |
1211 0640 FE01 movw r30,r28 |
1212 0642 E80F add r30,r24 |
1213 0644 F11D adc r31,__zero_reg__ |
1214 0646 2181 ldd r18,Z+1 |
1215 0648 83E0 ldi r24,lo8(3) |
1216 064a 90E0 ldi r25,hi8(3) |
1217 064c 821B sub r24,r18 |
1218 064e 9109 sbc r25,__zero_reg__ |
1219 0650 2CE2 ldi r18,lo8(300) |
1220 0652 31E0 ldi r19,hi8(300) |
1221 0654 AC01 movw r20,r24 |
1222 0656 429F mul r20,r18 |
1223 0658 C001 movw r24,r0 |
1224 065a 439F mul r20,r19 |
1225 065c 900D add r25,r0 |
1226 065e 529F mul r21,r18 |
1227 0660 900D add r25,r0 |
1228 0662 1124 clr r1 |
1229 0664 00D0 rcall Delay_ms |
1230 .LM185: |
1231 0666 F0FC sbrc r15,0 |
1232 0668 00C0 rjmp .L89 |
1233 .LVL62: |
1234 066a 81E4 ldi r24,lo8(65) |
1235 066c 8CB9 out 44-32,r24 |
1236 066e 11E0 ldi r17,lo8(1) |
1237 .LVL63: |
1238 0670 00C0 rjmp .L109 |
1239 .LVL64: |
1240 .L89: |
1241 .LM186: |
1242 0672 F1FC sbrc r15,1 |
1243 0674 00C0 rjmp .L91 |
1244 0676 82E4 ldi r24,lo8(66) |
1245 0678 8CB9 out 44-32,r24 |
1246 067a 12E0 ldi r17,lo8(2) |
1247 .LVL65: |
1248 067c 00C0 rjmp .L109 |
1249 .LVL66: |
1250 .L91: |
1251 .LM187: |
1252 067e F2FC sbrc r15,2 |
1253 0680 00C0 rjmp .L92 |
1254 0682 83E4 ldi r24,lo8(67) |
1255 0684 8CB9 out 44-32,r24 |
1256 0686 13E0 ldi r17,lo8(3) |
1257 .LVL67: |
1258 0688 00C0 rjmp .L109 |
1259 .LVL68: |
1260 .L92: |
1261 .LM188: |
1262 068a F3FC sbrc r15,3 |
1263 068c 00C0 rjmp .L93 |
1264 068e 81E6 ldi r24,lo8(97) |
1265 0690 8CB9 out 44-32,r24 |
1266 0692 14E0 ldi r17,lo8(4) |
1267 .LVL69: |
1268 0694 00C0 rjmp .L109 |
1269 .LVL70: |
1270 .L93: |
1271 .LM189: |
1272 0696 F4FC sbrc r15,4 |
1273 0698 00C0 rjmp .L94 |
1274 069a 82E6 ldi r24,lo8(98) |
1275 069c 8CB9 out 44-32,r24 |
1276 069e 15E0 ldi r17,lo8(5) |
1277 .LVL71: |
1278 06a0 00C0 rjmp .L109 |
1279 .LVL72: |
1280 .L94: |
1281 .LM190: |
1282 06a2 F5FC sbrc r15,5 |
1283 06a4 00C0 rjmp .L95 |
1284 06a6 83E6 ldi r24,lo8(99) |
1285 06a8 8CB9 out 44-32,r24 |
1286 06aa 16E0 ldi r17,lo8(6) |
1287 .LVL73: |
1288 .L109: |
1289 .LM191: |
1290 06ac 812F mov r24,r17 |
1291 06ae 00D0 rcall RotBlink |
1292 06b0 00C0 rjmp .L109 |
1293 .LVL74: |
1294 .L95: |
1295 .LM192: |
1296 06b2 80E0 ldi r24,lo8(0) |
1297 06b4 00D0 rcall RotBlink |
1298 .LM193: |
1299 06b6 8EE2 ldi r24,lo8(46) |
1300 06b8 00D0 rcall uart_putchar |
1301 /* epilogue start */ |
1302 .LM194: |
1303 06ba 2796 adiw r28,7 |
1304 06bc 0FB6 in __tmp_reg__,__SREG__ |
1305 06be F894 cli |
1306 06c0 DEBF out __SP_H__,r29 |
1307 06c2 0FBE out __SREG__,__tmp_reg__ |
1308 06c4 CDBF out __SP_L__,r28 |
1309 06c6 CF91 pop r28 |
1310 06c8 DF91 pop r29 |
1311 06ca 1F91 pop r17 |
1312 06cc 0F91 pop r16 |
1313 .LVL75: |
1314 06ce FF90 pop r15 |
1315 06d0 EF90 pop r14 |
1316 .LVL76: |
1317 06d2 DF90 pop r13 |
1318 .LVL77: |
1319 06d4 BF90 pop r11 |
1320 06d6 AF90 pop r10 |
1321 06d8 0895 ret |
1322 .LFE11: |
1324 .global Anwerfen |
1326 Anwerfen: |
1327 .LFB8: |
1328 .LM195: |
1329 .LVL78: |
1330 06da 6F92 push r6 |
1331 06dc 7F92 push r7 |
1332 06de 9F92 push r9 |
1333 06e0 AF92 push r10 |
1334 06e2 BF92 push r11 |
1335 06e4 CF92 push r12 |
1336 06e6 DF92 push r13 |
1337 06e8 EF92 push r14 |
1338 06ea FF92 push r15 |
1339 06ec 0F93 push r16 |
1340 06ee 1F93 push r17 |
1341 06f0 CF93 push r28 |
1342 06f2 DF93 push r29 |
1343 /* prologue: function */ |
1344 /* frame size = 0 */ |
1345 06f4 982E mov r9,r24 |
1346 .LM196: |
1347 06f6 1092 0000 sts CompInterruptFreigabe,__zero_reg__ |
1348 06fa 4398 cbi 40-32,3 |
1349 .LM197: |
1350 06fc 85E0 ldi r24,lo8(5) |
1351 06fe 90E0 ldi r25,hi8(5) |
1352 .LVL79: |
1353 0700 9093 0000 sts (PWM)+1,r25 |
1354 0704 8093 0000 sts PWM,r24 |
1355 .LM198: |
1356 0708 00D0 rcall SetPWM |
1357 .LM199: |
1358 070a 00D0 rcall Manuell |
1359 .LM200: |
1360 070c 8CE2 ldi r24,lo8(300) |
1361 070e 91E0 ldi r25,hi8(300) |
1362 0710 00D0 rcall SetDelay |
1363 0712 9093 0000 sts (MinUpmPulse)+1,r25 |
1364 0716 8093 0000 sts MinUpmPulse,r24 |
1365 071a 00C0 rjmp .L112 |
1366 .L114: |
1367 .LM201: |
1368 071c 00D0 rcall FastADConvert |
1369 .LM202: |
1370 071e 8091 0000 lds r24,Strom |
1371 0722 9091 0000 lds r25,(Strom)+1 |
1372 0726 8937 cpi r24,121 |
1373 0728 9105 cpc r25,__zero_reg__ |
1374 072a 00F0 brlo .+2 |
1375 072c 00C0 rjmp .L129 |
1376 .L112: |
1377 .LM203: |
1378 072e 8091 0000 lds r24,MinUpmPulse |
1379 0732 9091 0000 lds r25,(MinUpmPulse)+1 |
1380 0736 00D0 rcall CheckDelay |
1381 0738 8823 tst r24 |
1382 073a 01F0 breq .L114 |
1383 .LM204: |
1384 073c 9092 0000 sts PWM,r9 |
1385 0740 1092 0000 sts PWM+1,__zero_reg__ |
1386 0744 5CE2 ldi r21,lo8(300) |
1387 0746 A52E mov r10,r21 |
1388 0748 51E0 ldi r21,hi8(300) |
1389 074a B52E mov r11,r21 |
1390 074c C12C mov r12,__zero_reg__ |
1391 074e D12C mov r13,__zero_reg__ |
1392 .LVL80: |
1393 .LBB86: |
1394 .LBB87: |
1395 .LM205: |
1396 0750 C0E0 ldi r28,lo8(DebugOut+4) |
1397 0752 D0E0 ldi r29,hi8(DebugOut+4) |
1398 .LM206: |
1399 0754 46E0 ldi r20,lo8(6) |
1400 0756 642E mov r6,r20 |
1401 0758 712C mov r7,__zero_reg__ |
1402 075a 6C0E add r6,r28 |
1403 075c 7D1E adc r7,r29 |
1404 .LVL81: |
1405 .L128: |
1406 .LBE87: |
1407 .LBE86: |
1408 .LM207: |
1409 075e EE24 clr r14 |
1410 0760 FF24 clr r15 |
1411 0762 8701 movw r16,r14 |
1412 .LVL82: |
1413 .L118: |
1414 .LM208: |
1415 0764 8091 0000 lds r24,UebertragungAbgeschlossen |
1416 0768 8823 tst r24 |
1417 076a 01F4 brne .L115 |
1418 076c 00D0 rcall SendUart |
1419 .LVL83: |
1420 076e 00C0 rjmp .L116 |
1421 .LVL84: |
1422 .L115: |
1423 .LM209: |
1424 0770 00D0 rcall DatenUebertragung |
1425 .LVL85: |
1426 .L116: |
1427 .LBB89: |
1428 .LBB90: |
1429 .LM210: |
1430 0772 82B7 in r24,82-32 |
1431 0774 8C59 subi r24,lo8(-(100)) |
1432 .LM211: |
1433 0776 982F mov r25,r24 |
1434 .LVL86: |
1435 .L117: |
1436 0778 82B7 in r24,82-32 |
1437 077a 891B sub r24,r25 |
1438 077c 87FD sbrc r24,7 |
1439 077e 00C0 rjmp .L117 |
1440 .LBE90: |
1441 .LBE89: |
1442 .LM212: |
1443 0780 0894 sec |
1444 0782 E11C adc r14,__zero_reg__ |
1445 0784 F11C adc r15,__zero_reg__ |
1446 0786 011D adc r16,__zero_reg__ |
1447 0788 111D adc r17,__zero_reg__ |
1448 078a EA14 cp r14,r10 |
1449 078c FB04 cpc r15,r11 |
1450 078e 0C05 cpc r16,r12 |
1451 0790 1D05 cpc r17,r13 |
1452 0792 00F0 brlo .L118 |
1453 .LBB91: |
1454 .LBB88: |
1455 .LM213: |
1456 0794 8091 0000 lds r24,Strom |
1457 0798 9091 0000 lds r25,(Strom)+1 |
1458 079c 9093 0000 sts (DebugOut+2)+1,r25 |
1459 07a0 8093 0000 sts DebugOut+2,r24 |
1460 .LM214: |
1461 07a4 8091 0000 lds r24,Mittelstrom |
1462 07a8 8093 0000 sts DebugOut+4,r24 |
1463 07ac 1982 std Y+1,__zero_reg__ |
1464 .LM215: |
1465 07ae 8091 0000 lds r24,SIO_Drehzahl |
1466 07b2 9091 0000 lds r25,(SIO_Drehzahl)+1 |
1467 07b6 9093 0000 sts (DebugOut+6)+1,r25 |
1468 07ba 8093 0000 sts DebugOut+6,r24 |
1469 .LM216: |
1470 07be 8091 0000 lds r24,PPM_Signal |
1471 07c2 9091 0000 lds r25,(PPM_Signal)+1 |
1472 07c6 9093 0000 sts (DebugOut+8)+1,r25 |
1473 07ca 8093 0000 sts DebugOut+8,r24 |
1474 .LM217: |
1475 07ce 83B5 in r24,67-32 |
1476 07d0 8093 0000 sts DebugOut+10,r24 |
1477 07d4 F301 movw r30,r6 |
1478 07d6 1182 std Z+1,__zero_reg__ |
1479 .LBE88: |
1480 .LBE91: |
1481 .LM218: |
1482 07d8 00D0 rcall FastADConvert |
1483 .LVL87: |
1484 .LM219: |
1485 07da 8091 0000 lds r24,Strom |
1486 07de 9091 0000 lds r25,(Strom)+1 |
1487 07e2 CD97 sbiw r24,61 |
1488 07e4 00F0 brlo .L119 |
1489 .L129: |
1490 .LM220: |
1491 07e6 82B3 in r24,50-32 |
1492 07e8 877C andi r24,lo8(-57) |
1493 07ea 82BB out 50-32,r24 |
1494 07ec 1BBC out (74)+1-32,__zero_reg__ |
1495 07ee 1ABC out 74-32,__zero_reg__ |
1496 07f0 19BC out (72)+1-32,__zero_reg__ |
1497 07f2 18BC out 72-32,__zero_reg__ |
1498 07f4 13BC out 67-32,__zero_reg__ |
1499 07f6 81E0 ldi r24,lo8(1) |
1500 07f8 8FBD out 79-32,r24 |
1501 07fa 81E4 ldi r24,lo8(65) |
1502 07fc 85BD out 69-32,r24 |
1503 07fe 8EE0 ldi r24,lo8(14) |
1504 0800 87BB out 55-32,r24 |
1505 0802 88B3 in r24,56-32 |
1506 0804 817F andi r24,lo8(-15) |
1507 0806 88BB out 56-32,r24 |
1508 .LM221: |
1509 0808 8AE0 ldi r24,lo8(10) |
1510 080a 00D0 rcall RotBlink |
1511 080c 80E0 ldi r24,lo8(0) |
1512 080e 00C0 rjmp .L113 |
1513 .L119: |
1514 .LM222: |
1515 0810 C601 movw r24,r12 |
1516 0812 B501 movw r22,r10 |
1517 0814 2FE0 ldi r18,lo8(15) |
1518 0816 30E0 ldi r19,hi8(15) |
1519 0818 40E0 ldi r20,hlo8(15) |
1520 081a 50E0 ldi r21,hhi8(15) |
1521 081c 00D0 rcall __udivmodsi4 |
1522 081e 2095 com r18 |
1523 0820 3095 com r19 |
1524 0822 4095 com r20 |
1525 0824 5095 com r21 |
1526 0826 A20E add r10,r18 |
1527 0828 B31E adc r11,r19 |
1528 082a C41E adc r12,r20 |
1529 082c D51E adc r13,r21 |
1530 .LM223: |
1531 082e F9E1 ldi r31,lo8(25) |
1532 0830 AF16 cp r10,r31 |
1533 0832 B104 cpc r11,__zero_reg__ |
1534 0834 C104 cpc r12,__zero_reg__ |
1535 0836 D104 cpc r13,__zero_reg__ |
1536 0838 00F0 brlo .L120 |
1537 .LM224: |
1538 083a 00D0 rcall Manuell |
1539 .LM225: |
1540 083c 8091 0000 lds r24,Phase |
1541 0840 8F5F subi r24,lo8(-(1)) |
1542 0842 8093 0000 sts Phase,r24 |
1543 .LM226: |
1544 0846 8091 0000 lds r24,Phase |
1545 084a 66E0 ldi r22,lo8(6) |
1546 084c 00D0 rcall __udivmodqi4 |
1547 084e 9093 0000 sts Phase,r25 |
1548 .LM227: |
1549 0852 00D0 rcall AdConvert |
1550 .LM228: |
1551 0854 9092 0000 sts PWM,r9 |
1552 0858 1092 0000 sts PWM+1,__zero_reg__ |
1553 .LM229: |
1554 085c 00D0 rcall SetPWM |
1555 .LM230: |
1556 085e 449B sbis 40-32,4 |
1557 0860 00C0 rjmp .L128 |
1558 .LM231: |
1559 0862 82B3 in r24,50-32 |
1560 0864 8058 subi r24,lo8(-(-128)) |
1561 0866 82BB out 50-32,r24 |
1562 0868 00C0 rjmp .L128 |
1563 .L120: |
1564 086a 81E0 ldi r24,lo8(1) |
1565 .L113: |
1566 /* epilogue start */ |
1567 .LM232: |
1568 086c DF91 pop r29 |
1569 086e CF91 pop r28 |
1570 0870 1F91 pop r17 |
1571 0872 0F91 pop r16 |
1572 0874 FF90 pop r15 |
1573 0876 EF90 pop r14 |
1574 .LVL88: |
1575 0878 DF90 pop r13 |
1576 087a CF90 pop r12 |
1577 087c BF90 pop r11 |
1578 087e AF90 pop r10 |
1579 .LVL89: |
1580 0880 9F90 pop r9 |
1581 .LVL90: |
1582 0882 7F90 pop r7 |
1583 0884 6F90 pop r6 |
1584 0886 0895 ret |
1585 .LFE8: |
1587 .global main |
1589 main: |
1590 .LFB13: |
1591 .LM233: |
1592 0888 5F92 push r5 |
1593 088a 6F92 push r6 |
1594 088c 7F92 push r7 |
1595 088e 8F92 push r8 |
1596 0890 9F92 push r9 |
1597 0892 AF92 push r10 |
1598 0894 BF92 push r11 |
1599 0896 CF92 push r12 |
1600 0898 DF92 push r13 |
1601 089a EF92 push r14 |
1602 089c FF92 push r15 |
1603 089e 0F93 push r16 |
1604 08a0 1F93 push r17 |
1605 08a2 CF93 push r28 |
1606 08a4 DF93 push r29 |
1607 /* prologue: function */ |
1608 /* frame size = 0 */ |
1609 .LM234: |
1610 08a6 88E0 ldi r24,lo8(8) |
1611 08a8 84BB out 52-32,r24 |
1612 .LM235: |
1613 08aa 85BB out 53-32,r24 |
1614 .LM236: |
1615 08ac 8AE3 ldi r24,lo8(58) |
1616 08ae 81BB out 49-32,r24 |
1617 .LM237: |
1618 08b0 12BA out 50-32,__zero_reg__ |
1619 .LM238: |
1620 08b2 8EE0 ldi r24,lo8(14) |
1621 08b4 87BB out 55-32,r24 |
1622 .LM239: |
1623 08b6 81E3 ldi r24,lo8(49) |
1624 08b8 88BB out 56-32,r24 |
1625 .LM240: |
1626 08ba 88B3 in r24,56-32 |
1627 08bc 806C ori r24,lo8(-64) |
1628 08be 88BB out 56-32,r24 |
1629 .LM241: |
1630 08c0 B69B sbis 54-32,6 |
1631 08c2 00C0 rjmp .L131 |
1632 .LM242: |
1633 08c4 B79B sbis 54-32,7 |
1634 08c6 00C0 rjmp .L132 |
1635 08c8 81E0 ldi r24,lo8(1) |
1636 08ca 00C0 rjmp .L172 |
1637 .L132: |
1638 .LM243: |
1639 08cc 82E0 ldi r24,lo8(2) |
1640 08ce 00C0 rjmp .L172 |
1641 .L131: |
1642 .LM244: |
1643 08d0 B79B sbis 54-32,7 |
1644 08d2 00C0 rjmp .L134 |
1645 08d4 83E0 ldi r24,lo8(3) |
1646 08d6 00C0 rjmp .L172 |
1647 .L134: |
1648 .LM245: |
1649 08d8 84E0 ldi r24,lo8(4) |
1650 .L172: |
1651 08da 8093 0000 sts MotorAdresse,r24 |
1652 .LM246: |
1653 08de 8BE0 ldi r24,lo8(11) |
1654 08e0 8093 0000 sts HwVersion,r24 |
1655 .LM247: |
1656 08e4 879B sbis 48-32,7 |
1657 08e6 00C0 rjmp .L135 |
1658 08e8 8CE0 ldi r24,lo8(12) |
1659 08ea 8093 0000 sts HwVersion,r24 |
1660 08ee 80EC ldi r24,lo8(-64) |
1661 08f0 8093 0000 sts IntRef,r24 |
1662 .L135: |
1663 .LM248: |
1664 08f4 8AEB ldi r24,lo8(-70) |
1665 08f6 81BB out 49-32,r24 |
1666 .LM249: |
1667 08f8 00D0 rcall UART_Init |
1668 .LM250: |
1669 08fa 00D0 rcall Timer0_Init |
1670 .LM251: |
1671 /* #APP */ |
1672 ; 583 "main.c" 1 |
1673 08fc 7894 sei |
1674 ; 0 "" 2 |
1675 .LM252: |
1676 /* #NOAPP */ |
1677 08fe 00D0 rcall PWM_Init |
1678 .LM253: |
1679 0900 80E5 ldi r24,lo8(80) |
1680 0902 00D0 rcall InitIC2_Slave |
1681 .LM254: |
1682 0904 00D0 rcall InitPPM |
1683 .LM255: |
1684 0906 85E6 ldi r24,lo8(101) |
1685 0908 90E0 ldi r25,hi8(101) |
1686 090a 00D0 rcall SetDelay |
1687 .LM256: |
1688 090c 86E6 ldi r24,lo8(102) |
1689 090e 90E0 ldi r25,hi8(102) |
1690 0910 00D0 rcall SetDelay |
1691 .LM257: |
1692 0912 87E6 ldi r24,lo8(103) |
1693 0914 90E0 ldi r25,hi8(103) |
1694 0916 00D0 rcall SetDelay |
1695 0918 9093 0000 sts (MinUpmPulse)+1,r25 |
1696 091c 8093 0000 sts MinUpmPulse,r24 |
1697 .LM258: |
1698 0920 8EEF ldi r24,lo8(254) |
1699 0922 90E0 ldi r25,hi8(254) |
1700 0924 00D0 rcall SetDelay |
1701 0926 6C01 movw r12,r24 |
1702 .LVL91: |
1703 .LM259: |
1704 0928 8DEE ldi r24,lo8(1005) |
1705 092a 93E0 ldi r25,hi8(1005) |
1706 092c 00D0 rcall SetDelay |
1707 092e EC01 movw r28,r24 |
1708 .LVL92: |
1709 .LM260: |
1710 0930 8EEE ldi r24,lo8(1006) |
1711 0932 93E0 ldi r25,hi8(1006) |
1712 0934 00D0 rcall SetDelay |
1713 0936 00C0 rjmp .L136 |
1714 .L138: |
1715 .LM261: |
1716 0938 00D0 rcall SollwertErmittlung |
1717 093a 8823 tst r24 |
1718 093c 01F4 brne .L137 |
1719 .L136: |
1720 .LM262: |
1721 093e 8091 0000 lds r24,MinUpmPulse |
1722 0942 9091 0000 lds r25,(MinUpmPulse)+1 |
1723 0946 00D0 rcall CheckDelay |
1724 0948 8823 tst r24 |
1725 094a 01F0 breq .L138 |
1726 .L137: |
1727 .LM263: |
1728 094c 8091 0000 lds r24,HwVersion |
1729 0950 8C30 cpi r24,lo8(12) |
1730 0952 00F4 brsh .L139 |
1731 0954 979A sbi 50-32,7 |
1732 0956 00C0 rjmp .L140 |
1733 .L139: |
1734 0958 9798 cbi 50-32,7 |
1735 .L140: |
1736 .LM264: |
1737 095a 1092 0000 sts (PWM)+1,__zero_reg__ |
1738 095e 1092 0000 sts PWM,__zero_reg__ |
1739 .LM265: |
1740 0962 00D0 rcall SetPWM |
1741 .LM266: |
1742 0964 88E0 ldi r24,lo8(8) |
1743 0966 80BF out 80-32,r24 |
1744 .LM267: |
1745 0968 81E0 ldi r24,lo8(1) |
1746 096a 87B9 out 39-32,r24 |
1747 .LM268: |
1748 096c 8AE0 ldi r24,lo8(10) |
1749 096e 90E0 ldi r25,hi8(10) |
1750 0970 00D0 rcall SetDelay |
1751 0972 9093 0000 sts (MinUpmPulse)+1,r25 |
1752 0976 8093 0000 sts MinUpmPulse,r24 |
1753 .LM269: |
1754 097a 81E0 ldi r24,lo8(1) |
1755 097c 90E0 ldi r25,hi8(1) |
1756 097e 9093 0000 sts (DebugOut+4)+1,r25 |
1757 0982 8093 0000 sts DebugOut+4,r24 |
1758 .LM270: |
1759 0986 1092 0000 sts (PPM_Signal)+1,__zero_reg__ |
1760 098a 1092 0000 sts PPM_Signal,__zero_reg__ |
1761 .LM271: |
1762 098e 00D0 rcall SollwertErmittlung |
1763 0990 8823 tst r24 |
1764 0992 01F4 brne .L141 |
1765 0994 00D0 rcall MotorTon |
1766 .L141: |
1767 .LM272: |
1768 0996 81E3 ldi r24,lo8(49) |
1769 0998 88BB out 56-32,r24 |
1770 099a 10E0 ldi r17,lo8(0) |
1771 .LVL93: |
1772 .LM273: |
1773 099c FF24 clr r15 |
1774 099e F394 inc r15 |
1775 .LM274: |
1776 09a0 F1E4 ldi r31,lo8(65) |
1777 09a2 EF2E mov r14,r31 |
1778 09a4 EEE0 ldi r30,lo8(14) |
1779 09a6 5E2E mov r5,r30 |
1780 .LM275: |
1781 09a8 71E0 ldi r23,lo8(1) |
1782 09aa 672E mov r6,r23 |
1783 09ac 712C mov r7,__zero_reg__ |
1784 .LM276: |
1785 09ae 6FE0 ldi r22,lo8(15) |
1786 09b0 862E mov r8,r22 |
1787 09b2 912C mov r9,__zero_reg__ |
1788 09b4 00C0 rjmp .L142 |
1789 .LVL94: |
1790 .L148: |
1791 .LM277: |
1792 09b6 102F mov r17,r16 |
1793 .LVL95: |
1794 .L142: |
1795 .LM278: |
1796 09b8 00D0 rcall SollwertErmittlung |
1797 09ba 8093 0000 sts PWM,r24 |
1798 09be 1092 0000 sts PWM+1,__zero_reg__ |
1799 .LM279: |
1800 09c2 0091 0000 lds r16,Phase |
1801 .LVL96: |
1802 09c6 0117 cp r16,r17 |
1803 09c8 01F0 breq .L143 |
1804 .LVL97: |
1805 .LM280: |
1806 09ca 1092 0000 sts MotorGestoppt,__zero_reg__ |
1807 .LM281: |
1808 09ce 1092 0000 sts ZeitFuerBerechnungen,__zero_reg__ |
1809 .LM282: |
1810 09d2 8AEF ldi r24,lo8(250) |
1811 09d4 90E0 ldi r25,hi8(250) |
1812 09d6 00D0 rcall SetDelay |
1813 09d8 9093 0000 sts (MinUpmPulse)+1,r25 |
1814 09dc 8093 0000 sts MinUpmPulse,r24 |
1815 .LM283: |
1816 09e0 0091 0000 lds r16,Phase |
1817 .LVL98: |
1818 .L143: |
1819 .LM284: |
1820 09e4 8091 0000 lds r24,PWM |
1821 09e8 9091 0000 lds r25,(PWM)+1 |
1822 09ec 892B or r24,r25 |
1823 09ee 01F4 brne .L144 |
1824 .LM285: |
1825 09f0 1092 0000 sts MotorAnwerfen,__zero_reg__ |
1826 .LM286: |
1827 09f4 1092 0000 sts ZeitFuerBerechnungen,__zero_reg__ |
1828 .LM287: |
1829 09f8 C501 movw r24,r10 |
1830 09fa 00D0 rcall CheckDelay |
1831 09fc 8823 tst r24 |
1832 09fe 01F0 breq .L145 |
1833 .LM288: |
1834 0a00 1092 0000 sts CompInterruptFreigabe,__zero_reg__ |
1835 0a04 4398 cbi 40-32,3 |
1836 .LM289: |
1837 0a06 F092 0000 sts MotorGestoppt,r15 |
1838 .LM290: |
1839 0a0a 82B3 in r24,50-32 |
1840 0a0c 877C andi r24,lo8(-57) |
1841 0a0e 82BB out 50-32,r24 |
1842 0a10 1BBC out (74)+1-32,__zero_reg__ |
1843 0a12 1ABC out 74-32,__zero_reg__ |
1844 0a14 19BC out (72)+1-32,__zero_reg__ |
1845 0a16 18BC out 72-32,__zero_reg__ |
1846 0a18 13BC out 67-32,__zero_reg__ |
1847 0a1a FFBC out 79-32,r15 |
1848 0a1c E5BC out 69-32,r14 |
1849 0a1e 57BA out 55-32,r5 |
1850 0a20 88B3 in r24,56-32 |
1851 0a22 817F andi r24,lo8(-15) |
1852 0a24 88BB out 56-32,r24 |
1853 0a26 00C0 rjmp .L145 |
1854 .L144: |
1855 .LM291: |
1856 0a28 8091 0000 lds r24,MotorGestoppt |
1857 0a2c 8823 tst r24 |
1858 0a2e 01F0 breq .L146 |
1859 0a30 F092 0000 sts MotorAnwerfen,r15 |
1860 .L146: |
1861 .LM292: |
1862 0a34 8CED ldi r24,lo8(1500) |
1863 0a36 95E0 ldi r25,hi8(1500) |
1864 0a38 00D0 rcall SetDelay |
1865 0a3a 5C01 movw r10,r24 |
1866 .L145: |
1867 .LM293: |
1868 0a3c 8091 0000 lds r24,MotorGestoppt |
1869 0a40 8823 tst r24 |
1870 0a42 01F0 breq .L147 |
1871 0a44 1092 0000 sts (PWM)+1,__zero_reg__ |
1872 0a48 1092 0000 sts PWM,__zero_reg__ |
1873 .L147: |
1874 .LM294: |
1875 0a4c 00D0 rcall SetPWM |
1876 .LM295: |
1877 0a4e 8091 0000 lds r24,ZeitFuerBerechnungen |
1878 0a52 8F5F subi r24,lo8(-(1)) |
1879 0a54 8093 0000 sts ZeitFuerBerechnungen,r24 |
1880 0a58 8150 subi r24,lo8(-(-1)) |
1881 0a5a 01F0 breq .+2 |
1882 0a5c 00C0 rjmp .L148 |
1883 .LM296: |
1884 0a5e 8091 0000 lds r24,MotorGestoppt |
1885 0a62 8823 tst r24 |
1886 0a64 01F0 breq .L149 |
1887 .LM297: |
1888 0a66 8091 0000 lds r24,HwVersion |
1889 0a6a 8C30 cpi r24,lo8(12) |
1890 0a6c 00F4 brsh .L150 |
1891 0a6e 979A sbi 50-32,7 |
1892 0a70 00C0 rjmp .L151 |
1893 .L150: |
1894 0a72 9798 cbi 50-32,7 |
1895 .L151: |
1896 .LM298: |
1897 0a74 00D0 rcall FastADConvert |
1898 .L149: |
1899 .LM299: |
1900 0a76 C601 movw r24,r12 |
1901 0a78 00D0 rcall CheckDelay |
1902 0a7a 8823 tst r24 |
1903 0a7c 01F0 breq .L152 |
1904 .LM300: |
1905 0a7e 82E3 ldi r24,lo8(50) |
1906 0a80 90E0 ldi r25,hi8(50) |
1907 0a82 00D0 rcall SetDelay |
1908 0a84 6C01 movw r12,r24 |
1909 .LM301: |
1910 0a86 8091 0000 lds r24,Mittelstrom |
1911 0a8a 482F mov r20,r24 |
1912 0a8c 50E0 ldi r21,lo8(0) |
1913 0a8e 2091 0000 lds r18,Strom |
1914 0a92 3091 0000 lds r19,(Strom)+1 |
1915 0a96 4217 cp r20,r18 |
1916 0a98 5307 cpc r21,r19 |
1917 0a9a 00F4 brsh .L153 |
1918 0a9c 8F5F subi r24,lo8(-(1)) |
1919 0a9e 00C0 rjmp .L173 |
1920 .L153: |
1921 .LM302: |
1922 0aa0 2417 cp r18,r20 |
1923 0aa2 3507 cpc r19,r21 |
1924 0aa4 00F4 brsh .L154 |
1925 0aa6 8150 subi r24,lo8(-(-1)) |
1926 .L173: |
1927 0aa8 8093 0000 sts Mittelstrom,r24 |
1928 .L154: |
1929 .LM303: |
1930 0aac 293C cpi r18,201 |
1931 0aae 3105 cpc r19,__zero_reg__ |
1932 0ab0 00F0 brlo .L155 |
1933 0ab2 8091 0000 lds r24,MaxPWM |
1934 0ab6 982F mov r25,r24 |
1935 0ab8 9295 swap r25 |
1936 0aba 9695 lsr r25 |
1937 0abc 9770 andi r25,lo8(7) |
1938 0abe 891B sub r24,r25 |
1939 0ac0 8093 0000 sts MaxPWM,r24 |
1940 .L155: |
1941 .LM304: |
1942 0ac4 8091 0000 lds r24,Mittelstrom |
1943 0ac8 9091 0000 lds r25,MaxPWM |
1944 0acc 8937 cpi r24,lo8(121) |
1945 0ace 00F0 brlo .L156 |
1946 .LM305: |
1947 0ad0 9923 tst r25 |
1948 0ad2 01F0 breq .L157 |
1949 0ad4 9150 subi r25,lo8(-(-1)) |
1950 0ad6 9093 0000 sts MaxPWM,r25 |
1951 .L157: |
1952 .LM306: |
1953 0ada AB9A sbi 53-32,3 |
1954 0adc 00C0 rjmp .L152 |
1955 .L156: |
1956 .LM307: |
1957 0ade 9F3F cpi r25,lo8(-1) |
1958 0ae0 01F0 breq .L152 |
1959 0ae2 9F5F subi r25,lo8(-(1)) |
1960 0ae4 9093 0000 sts MaxPWM,r25 |
1961 .L152: |
1962 .LM308: |
1963 0ae8 CE01 movw r24,r28 |
1964 0aea 00D0 rcall CheckDelay |
1965 0aec 8823 tst r24 |
1966 0aee 01F0 breq .L158 |
1967 .LM309: |
1968 0af0 8AE0 ldi r24,lo8(10) |
1969 0af2 90E0 ldi r25,hi8(10) |
1970 0af4 00D0 rcall SetDelay |
1971 0af6 EC01 movw r28,r24 |
1972 .LM310: |
1973 0af8 8091 0000 lds r24,CntKommutierungen |
1974 0afc 9091 0000 lds r25,(CntKommutierungen)+1 |
1975 0b00 9093 0000 sts (SIO_Drehzahl)+1,r25 |
1976 0b04 8093 0000 sts SIO_Drehzahl,r24 |
1977 .LM311: |
1978 0b08 1092 0000 sts (CntKommutierungen)+1,__zero_reg__ |
1979 0b0c 1092 0000 sts CntKommutierungen,__zero_reg__ |
1980 .LM312: |
1981 0b10 F092 0000 sts ZeitZumAdWandeln,r15 |
1982 .L158: |
1983 .LM313: |
1984 0b14 8091 0000 lds r24,MinUpmPulse |
1985 0b18 9091 0000 lds r25,(MinUpmPulse)+1 |
1986 0b1c 00D0 rcall CheckDelay |
1987 0b1e 8823 tst r24 |
1988 0b20 01F0 breq .L159 |
1989 0b22 8091 0000 lds r24,SIO_Drehzahl |
1990 0b26 9091 0000 lds r25,(SIO_Drehzahl)+1 |
1991 0b2a 892B or r24,r25 |
1992 0b2c 01F0 breq .L160 |
1993 .L159: |
1994 0b2e 8091 0000 lds r24,MotorAnwerfen |
1995 0b32 8823 tst r24 |
1996 0b34 01F4 brne .+2 |
1997 0b36 00C0 rjmp .L148 |
1998 .L160: |
1999 .LM314: |
2000 0b38 F092 0000 sts MotorGestoppt,r15 |
2001 .LM315: |
2002 0b3c 1092 0000 sts CompInterruptFreigabe,__zero_reg__ |
2003 0b40 4398 cbi 40-32,3 |
2004 .LM316: |
2005 0b42 84E6 ldi r24,lo8(100) |
2006 0b44 90E0 ldi r25,hi8(100) |
2007 0b46 00D0 rcall SetDelay |
2008 0b48 9093 0000 sts (MinUpmPulse)+1,r25 |
2009 0b4c 8093 0000 sts MinUpmPulse,r24 |
2010 .LM317: |
2011 0b50 8091 0000 lds r24,MotorAnwerfen |
2012 0b54 8823 tst r24 |
2013 0b56 01F4 brne .+2 |
2014 0b58 00C0 rjmp .L148 |
2015 .LM318: |
2016 0b5a AB98 cbi 53-32,3 |
2017 .LM319: |
2018 0b5c 1092 0000 sts Strom_max,__zero_reg__ |
2019 .LM320: |
2020 0b60 1092 0000 sts MotorAnwerfen,__zero_reg__ |
2021 .LM321: |
2022 0b64 8AE0 ldi r24,lo8(10) |
2023 0b66 00D0 rcall Anwerfen |
2024 0b68 8823 tst r24 |
2025 0b6a 01F4 brne .+2 |
2026 0b6c 00C0 rjmp .L161 |
2027 .LM322: |
2028 0b6e 8091 0000 lds r24,HwVersion |
2029 0b72 8C30 cpi r24,lo8(12) |
2030 0b74 00F4 brsh .L162 |
2031 0b76 979A sbi 50-32,7 |
2032 0b78 00C0 rjmp .L163 |
2033 .L162: |
2034 0b7a 9798 cbi 50-32,7 |
2035 .L163: |
2036 .LM323: |
2037 0b7c 1092 0000 sts MotorGestoppt,__zero_reg__ |
2038 .LM324: |
2039 0b80 8091 0000 lds r24,Phase |
2040 0b84 8150 subi r24,lo8(-(-1)) |
2041 0b86 8093 0000 sts Phase,r24 |
2042 .LM325: |
2043 0b8a 7092 0000 sts (PWM)+1,r7 |
2044 0b8e 6092 0000 sts PWM,r6 |
2045 .LM326: |
2046 0b92 00D0 rcall SetPWM |
2047 .LM327: |
2048 0b94 88B1 in r24,40-32 |
2049 0b96 8C7F andi r24,lo8(-4) |
2050 0b98 88B9 out 40-32,r24 |
2051 .LM328: |
2052 0b9a F092 0000 sts CompInterruptFreigabe,r15 |
2053 0b9e 88B1 in r24,40-32 |
2054 0ba0 8A60 ori r24,lo8(10) |
2055 0ba2 88B9 out 40-32,r24 |
2056 .LM329: |
2057 0ba4 84E1 ldi r24,lo8(20) |
2058 0ba6 90E0 ldi r25,hi8(20) |
2059 0ba8 00D0 rcall SetDelay |
2060 0baa 9093 0000 sts (MinUpmPulse)+1,r25 |
2061 0bae 8093 0000 sts MinUpmPulse,r24 |
2062 .L164: |
2063 .LM330: |
2064 0bb2 8091 0000 lds r24,MinUpmPulse |
2065 0bb6 9091 0000 lds r25,(MinUpmPulse)+1 |
2066 0bba 00D0 rcall CheckDelay |
2067 0bbc 8823 tst r24 |
2068 0bbe 01F0 breq .L164 |
2069 .LM331: |
2070 0bc0 9092 0000 sts (PWM)+1,r9 |
2071 0bc4 8092 0000 sts PWM,r8 |
2072 .LM332: |
2073 0bc8 00D0 rcall SetPWM |
2074 .LM333: |
2075 0bca 8CE2 ldi r24,lo8(300) |
2076 0bcc 91E0 ldi r25,hi8(300) |
2077 0bce 00D0 rcall SetDelay |
2078 0bd0 9093 0000 sts (MinUpmPulse)+1,r25 |
2079 0bd4 8093 0000 sts MinUpmPulse,r24 |
2080 0bd8 00C0 rjmp .L171 |
2081 .L166: |
2082 .LM334: |
2083 0bda 8091 0000 lds r24,Strom |
2084 0bde 9091 0000 lds r25,(Strom)+1 |
2085 0be2 CD97 sbiw r24,61 |
2086 0be4 00F0 brlo .L171 |
2087 .LM335: |
2088 0be6 82B3 in r24,50-32 |
2089 0be8 877C andi r24,lo8(-57) |
2090 0bea 82BB out 50-32,r24 |
2091 0bec 1BBC out (74)+1-32,__zero_reg__ |
2092 0bee 1ABC out 74-32,__zero_reg__ |
2093 0bf0 19BC out (72)+1-32,__zero_reg__ |
2094 0bf2 18BC out 72-32,__zero_reg__ |
2095 0bf4 13BC out 67-32,__zero_reg__ |
2096 0bf6 FFBC out 79-32,r15 |
2097 0bf8 E5BC out 69-32,r14 |
2098 0bfa 57BA out 55-32,r5 |
2099 0bfc 88B3 in r24,56-32 |
2100 0bfe 817F andi r24,lo8(-15) |
2101 0c00 88BB out 56-32,r24 |
2102 .LM336: |
2103 0c02 8AE0 ldi r24,lo8(10) |
2104 0c04 00D0 rcall RotBlink |
2105 .LM337: |
2106 0c06 F092 0000 sts MotorAnwerfen,r15 |
2107 .L171: |
2108 .LM338: |
2109 0c0a 8091 0000 lds r24,MinUpmPulse |
2110 0c0e 9091 0000 lds r25,(MinUpmPulse)+1 |
2111 0c12 00D0 rcall CheckDelay |
2112 0c14 8823 tst r24 |
2113 0c16 01F0 breq .L166 |
2114 .LM339: |
2115 0c18 82E3 ldi r24,lo8(50) |
2116 0c1a 90E0 ldi r25,hi8(50) |
2117 0c1c 00D0 rcall SetDelay |
2118 0c1e EC01 movw r28,r24 |
2119 0c20 07E0 ldi r16,lo8(7) |
2120 0c22 00C0 rjmp .L148 |
2121 .LVL99: |
2122 .L161: |
2123 .LM340: |
2124 0c24 00D0 rcall SollwertErmittlung |
2125 0c26 8823 tst r24 |
2126 0c28 01F4 brne .+2 |
2127 0c2a 00C0 rjmp .L148 |
2128 0c2c F092 0000 sts MotorAnwerfen,r15 |
2129 0c30 00C0 rjmp .L148 |
2130 .LFE13: |
2132 .global PWM |
2133 .global PWM |
2134 .section .bss |
2137 PWM: |
2138 0000 0000 .skip 2,0 |
2139 .global Strom |
2140 .global Strom |
2143 Strom: |
2144 0002 0000 .skip 2,0 |
2145 .global Strom_max |
2146 .global Strom_max |
2149 Strom_max: |
2150 0004 00 .skip 1,0 |
2151 .global Mittelstrom |
2152 .global Mittelstrom |
2155 Mittelstrom: |
2156 0005 00 .skip 1,0 |
2157 .global Drehzahl |
2158 .global Drehzahl |
2161 Drehzahl: |
2162 0006 0000 .skip 2,0 |
2163 .global KommutierDelay |
2164 .data |
2167 KommutierDelay: |
2168 0000 0A00 .word 10 |
2169 .global I2C_Timeout |
2170 .global I2C_Timeout |
2171 .section .bss |
2174 I2C_Timeout: |
2175 0008 0000 .skip 2,0 |
2176 .global SIO_Timeout |
2177 .global SIO_Timeout |
2180 SIO_Timeout: |
2181 000a 0000 .skip 2,0 |
2182 .global SollDrehzahl |
2183 .global SollDrehzahl |
2186 SollDrehzahl: |
2187 000c 0000 .skip 2,0 |
2188 .global IstDrehzahl |
2189 .global IstDrehzahl |
2192 IstDrehzahl: |
2193 000e 0000 .skip 2,0 |
2194 .global ZeitFuerBerechnungen |
2195 .data |
2198 ZeitFuerBerechnungen: |
2199 0002 01 .byte 1 |
2200 .global MotorAnwerfen |
2201 .global MotorAnwerfen |
2202 .section .bss |
2205 MotorAnwerfen: |
2206 0010 00 .skip 1,0 |
2207 .global MotorGestoppt |
2208 .data |
2211 MotorGestoppt: |
2212 0003 01 .byte 1 |
2213 .global MaxPWM |
2216 MaxPWM: |
2217 0004 FF .byte -1 |
2218 .global CntKommutierungen |
2219 .global CntKommutierungen |
2220 .section .bss |
2223 CntKommutierungen: |
2224 0011 0000 .skip 2,0 |
2225 .global SIO_Drehzahl |
2226 .global SIO_Drehzahl |
2229 SIO_Drehzahl: |
2230 0013 0000 .skip 2,0 |
2231 .global ZeitZumAdWandeln |
2232 .data |
2235 ZeitZumAdWandeln: |
2236 0005 01 .byte 1 |
2237 .global MotorAdresse |
2240 MotorAdresse: |
2241 0006 01 .byte 1 |
2242 .global PPM_Betrieb |
2245 PPM_Betrieb: |
2246 0007 01 .byte 1 |
2247 .global IntRef |
2248 .global IntRef |
2249 .section .bss |
2252 IntRef: |
2253 0015 00 .skip 1,0 |
2254 .lcomm sollwert.2195,2 |
2255 .data |
2258 C.19.2035: |
2259 0008 00 .byte 0 |
2260 0009 00 .byte 0 |
2261 000a 00 .byte 0 |
2262 000b 01 .byte 1 |
2263 000c 01 .byte 1 |
2264 000d 02 .byte 2 |
2265 000e 02 .byte 2 |
2266 .comm HwVersion,1,1 |
2267 .comm RuheStrom,2,1 |
2268 .comm DrehZahlTabelle,512,1 |
2269 .comm MinUpmPulse,2,1 |
2374 .Letext0: |
DEFINED SYMBOLS |
*ABS*:00000000 main.c |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2 *ABS*:0000003f __SREG__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:3 *ABS*:0000003e __SP_H__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:4 *ABS*:0000003d __SP_L__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:5 *ABS*:00000034 __CCP__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:18 .text:00000000 SetPWM |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2137 .bss:00000000 PWM |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2216 .data:00000004 MaxPWM |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2143 .bss:00000002 Strom |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:82 .text:00000060 DebugAusgaben |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2155 .bss:00000005 Mittelstrom |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2229 .bss:00000013 SIO_Drehzahl |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:119 .text:000000a8 PWM_Init |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:148 .text:000000c8 Wait |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:172 .text:000000d6 Delay |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:196 .text:000000e2 SollwertErmittlung |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2174 .bss:00000008 I2C_Timeout |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2180 .bss:0000000a SIO_Timeout |
.bss:00000016 sollwert.2195 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2245 .data:00000007 PPM_Betrieb |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:336 .text:000001dc DelayM |
*COM*:00000002 RuheStrom |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:387 .text:0000021e RotBlink |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:435 .text:00000246 MotorTon |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2258 .data:00000008 C.19.2035 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2240 .data:00000006 MotorAdresse |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2149 .bss:00000004 Strom_max |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2252 .bss:00000015 IntRef |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:1326 .text:000006da Anwerfen |
*COM*:00000002 MinUpmPulse |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:1589 .text:00000888 main |
*COM*:00000001 HwVersion |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2211 .data:00000003 MotorGestoppt |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2198 .data:00000002 ZeitFuerBerechnungen |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2205 .bss:00000010 MotorAnwerfen |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2223 .bss:00000011 CntKommutierungen |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2235 .data:00000005 ZeitZumAdWandeln |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2161 .bss:00000006 Drehzahl |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2167 .data:00000000 KommutierDelay |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2186 .bss:0000000c SollDrehzahl |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccInFYjF.s:2192 .bss:0000000e IstDrehzahl |
*COM*:00000200 DrehZahlTabelle |
UNDEFINED SYMBOLS |
DebugOut |
PPM_Signal |
SIO_Sollwert |
__udivmodhi4 |
anz_ppm_werte |
I2C_RXBuffer |
FastADConvert |
Delay_ms |
CompInterruptFreigabe |
uart_putchar |
MessAD |
Manuell |
SetDelay |
CheckDelay |
UebertragungAbgeschlossen |
SendUart |
DatenUebertragung |
__udivmodsi4 |
Phase |
__udivmodqi4 |
AdConvert |
UART_Init |
Timer0_Init |
InitIC2_Slave |
InitPPM |
__do_copy_data |
__do_clear_bss |
/branches/V0.41-Hexa/main.map |
---|
0,0 → 1,764 |
Archive member included because of file (symbol) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o (__udivmodsi4) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
main.o (__do_copy_data) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
main.o (__do_clear_bss) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o (memchr) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o (fdevopen) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (__iob) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (calloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (malloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (memset) |
Allocating common symbols |
Common symbol size file |
SendeBuffer 0x64 uart.o |
Debug_Timer 0x2 main.o |
Debug_Display_Timer |
0x2 main.o |
__brkval 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
DebugIn 0xb main.o |
VersionInfo 0xa main.o |
New_IR_Code 0x1 ir.o |
RxdBuffer 0x64 uart.o |
AnalogWerte 0x6 analog.o |
IR_Code 0x2 ir.o |
KanalVon 0x8 menu.o |
Decodierung_Lauft 0x1 ir.o |
DebugOut 0x1a main.o |
KanalAn 0x8 menu.o |
__flp 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
PollDisplay 0x1 main.o |
__iob 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
Memory Configuration |
Name Origin Length Attributes |
text 0x00000000 0x00020000 xr |
data 0x00800060 0x0000ffa0 rw !x |
eeprom 0x00810000 0x00010000 rw !x |
*default* 0x00000000 0xffffffff |
Linker script and memory map |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
LOAD main.o |
LOAD uart.o |
LOAD lcd.o |
LOAD printf_P.o |
LOAD timer0.o |
LOAD keyboard.o |
LOAD menu.o |
LOAD ir.o |
LOAD analog.o |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libm.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
.hash |
*(.hash) |
.dynsym |
*(.dynsym) |
.dynstr |
*(.dynstr) |
.gnu.version |
*(.gnu.version) |
.gnu.version_d |
*(.gnu.version_d) |
.gnu.version_r |
*(.gnu.version_r) |
.rel.init |
*(.rel.init) |
.rela.init |
*(.rela.init) |
.rel.text |
*(.rel.text) |
*(.rel.text.*) |
*(.rel.gnu.linkonce.t*) |
.rela.text |
*(.rela.text) |
*(.rela.text.*) |
*(.rela.gnu.linkonce.t*) |
.rel.fini |
*(.rel.fini) |
.rela.fini |
*(.rela.fini) |
.rel.rodata |
*(.rel.rodata) |
*(.rel.rodata.*) |
*(.rel.gnu.linkonce.r*) |
.rela.rodata |
*(.rela.rodata) |
*(.rela.rodata.*) |
*(.rela.gnu.linkonce.r*) |
.rel.data |
*(.rel.data) |
*(.rel.data.*) |
*(.rel.gnu.linkonce.d*) |
.rela.data |
*(.rela.data) |
*(.rela.data.*) |
*(.rela.gnu.linkonce.d*) |
.rel.ctors |
*(.rel.ctors) |
.rela.ctors |
*(.rela.ctors) |
.rel.dtors |
*(.rel.dtors) |
.rela.dtors |
*(.rela.dtors) |
.rel.got |
*(.rel.got) |
.rela.got |
*(.rela.got) |
.rel.bss |
*(.rel.bss) |
.rela.bss |
*(.rela.bss) |
.rel.plt |
*(.rel.plt) |
.rela.plt |
*(.rela.plt) |
.text 0x00000000 0x1c18 |
*(.vectors) |
.vectors 0x00000000 0x54 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000000 __vectors |
0x00000000 __vector_default |
0x00000054 __ctors_start = . |
*(.ctors) |
0x00000054 __ctors_end = . |
0x00000054 __dtors_start = . |
*(.dtors) |
0x00000054 __dtors_end = . |
*(.progmem.gcc*) |
*(.progmem*) |
.progmem.data 0x00000054 0x54 main.o |
.progmem.data 0x000000a8 0xc uart.o |
.progmem.data 0x000000b4 0x56 menu.o |
0x0000010a . = ALIGN (0x2) |
*(.init0) |
*(.init1) |
*(.init2) |
.init2 0x0000010a 0xc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.init3) |
*(.init4) |
.init4 0x00000116 0x16 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
0x00000116 __do_copy_data |
.init4 0x0000012c 0x10 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
0x0000012c __do_clear_bss |
*(.init5) |
*(.init6) |
*(.init7) |
*(.init8) |
*(.init9) |
.init9 0x0000013c 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.text) |
.text 0x00000140 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000140 __vector_12 |
0x00000140 __bad_interrupt |
0x00000140 __vector_6 |
0x00000140 __vector_3 |
0x00000140 __vector_17 |
0x00000140 __vector_19 |
0x00000140 __vector_7 |
0x00000140 __vector_5 |
0x00000140 __vector_4 |
0x00000140 __vector_2 |
0x00000140 __vector_8 |
0x00000140 __vector_14 |
0x00000140 __vector_10 |
0x00000140 __vector_16 |
0x00000140 __vector_18 |
0x00000140 __vector_20 |
.text 0x00000144 0x282 main.o |
0x000001b4 Init |
0x00000156 Sekundentakt |
0x000001ca main |
0x00000144 Sekundentakt_Init |
.text 0x000003c6 0x7e6 uart.o |
0x000009f8 WriteProgramData |
0x00000a16 SendeRemoteTasten |
0x000009fa UART_Init |
0x00000430 __vector_13 |
0x0000080a BearbeiteRxDaten |
0x00000abe ClearIntervalle |
0x00000a76 SendIntervalle |
0x000005de AddCRC |
0x00000b04 DatenUebertragung |
0x00000732 Decode64 |
0x000003c6 __vector_15 |
0x0000064a SendOutData |
0x000009dc uart_putchar |
.text 0x00000bac 0x1b2 lcd.o |
0x00000cc4 LCD_Gotoxy |
0x00000c4e my_pput |
0x00000c08 _lcd_write_4bit |
0x00000bcc _short_delay |
0x00000c26 lcd_write_byte |
0x00000bdc _lcd_write_command |
0x00000c58 LCD_Init |
0x00000d48 LCD_Putchar |
0x00000d12 LCD_Write |
0x00000bac _long_delay |
.text 0x00000d5e 0x58a printf_P.o |
0x00000de0 _printf_P |
0x00000dc8 PAD_0 |
0x00000d86 PRINTP |
0x00000d5e PRINT |
0x00000db0 PAD_SP |
.text 0x000012e8 0xd6 timer0.o |
0x0000137c SetDelay |
0x0000138e CheckDelay |
0x000013a4 Delay_ms |
0x000012e8 __vector_9 |
0x00001368 Timer1_Init |
.text 0x000013be 0x136 keyboard.o |
0x000014da GetKeyboard2 |
0x000013be Keyboard_Init |
0x000013d0 GetKeyboard |
.text 0x000014f4 0x206 menu.o |
0x000014f4 Menu |
.text 0x000016fa 0x1b6 ir.o |
0x00001728 __vector_1 |
0x00001758 __vector_11 |
0x000016fa InitIR |
.text 0x000018b0 0x44 analog.o |
0x000018c8 GetAnalogWerte |
0x000018b8 ReadADC |
0x000018b0 ADC_Init |
.text 0x000018f4 0x1a C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
0x000018f4 memchr |
.text 0x0000190e 0x8e C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
0x0000190e fdevopen |
.text 0x0000199c 0x38 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
0x0000199c calloc |
.text 0x000019d4 0x1ec C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x000019d4 malloc |
0x00001b08 free |
.text 0x00001bc0 0x14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
0x00001bc0 memset |
0x00001bd4 . = ALIGN (0x2) |
*(.text.*) |
.text.libgcc 0x00001bd4 0x44 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
0x00001bd4 __udivmodsi4 |
0x00001c18 . = ALIGN (0x2) |
*(.fini9) |
*(.fini8) |
*(.fini7) |
*(.fini6) |
*(.fini5) |
*(.fini4) |
*(.fini3) |
*(.fini2) |
*(.fini1) |
*(.fini0) |
0x00001c18 _etext = . |
.data 0x00800060 0x24 load address 0x00001c18 |
0x00800060 PROVIDE (__data_start, .) |
*(.data) |
.data 0x00800060 0xc main.o |
0x00800065 DisplayZeilen |
0x00800064 SlaveAdresse |
0x00800066 CntDatensaetzeProSekunde |
0x00800062 IntervallDebug |
0x00800060 IntervallDisplay |
.data 0x0080006c 0x5 uart.o |
0x0080006e UebertragungAbgeschlossen |
0x0080006c AnzahlTeilnehmer |
0x0080006d ErwarteAntwort |
.data 0x00800071 0xb menu.o |
0x00800071 Array |
.data 0x0080007c 0x2 ir.o |
0x0080007c LoescheIrCodeTimer |
.data 0x0080007e 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x00800080 __malloc_heap_start |
0x0080007e __malloc_heap_end |
0x00800082 __malloc_margin |
*(.gnu.linkonce.d*) |
0x00800084 . = ALIGN (0x2) |
0x00800084 _edata = . |
0x00800084 PROVIDE (__data_end, .) |
.bss 0x00800084 0x157 |
0x00800084 PROVIDE (__bss_start, .) |
*(.bss) |
.bss 0x00800084 0xe main.o |
0x00800087 DebugGetAnforderung |
0x00800088 Debug_Display_Intervall |
0x00800086 GetVersionAnforderung |
0x0080008d Sekunde |
0x00800085 SendeDummyDaten |
0x0080008e _TastTimer |
0x0080008c Minute |
0x0080008a Debug_Timer_Intervall |
0x00800084 UebertragungUnterbrochen |
0x00800090 _SekTimer |
.bss 0x00800092 0x14 uart.o |
0x0080009d SioTmp |
0x00800098 PC_DebugTimeout |
0x0080009c NeuerDatensatzEmpfangen |
0x0080009a CntCrcError |
0x00800097 TX_DigTransferKanalL |
0x00800094 DisplayBusy |
0x00800092 WaitTXD |
0x00800099 AnzahlEmpfangsBytes |
0x00800095 TX_DigTransferKanalDaten |
0x00800093 AntwortEingetroffen |
0x00800096 TX_DigTransferKanalH |
.bss 0x008000a6 0x3 timer0.o |
0x008000a6 CountMilliseconds |
.bss 0x008000a9 0x7 keyboard.o |
0x008000a9 KeyTimer |
.bss 0x008000b0 0x5 menu.o |
0x008000b0 TestInt |
.bss 0x008000b5 0x6 ir.o |
*(COMMON) |
COMMON 0x008000bb 0x34 main.o |
0x008000bb Debug_Timer |
0x008000bd Debug_Display_Timer |
0x008000bf DebugIn |
0x008000ca VersionInfo |
0x008000d4 DebugOut |
0x008000ee PollDisplay |
COMMON 0x008000ef 0xc8 uart.o |
0x008000ef SendeBuffer |
0x00800153 RxdBuffer |
COMMON 0x008001b7 0x10 menu.o |
0x008001b7 KanalVon |
0x008001bf KanalAn |
COMMON 0x008001c7 0x4 ir.o |
0x008001c7 New_IR_Code |
0x008001c8 IR_Code |
0x008001ca Decodierung_Lauft |
COMMON 0x008001cb 0x6 analog.o |
0x008001cb AnalogWerte |
COMMON 0x008001d1 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
0x008001d1 __iob |
COMMON 0x008001d7 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x008001d7 __brkval |
0x008001d9 __flp |
0x008001db PROVIDE (__bss_end, .) |
0x00001c18 __data_load_start = LOADADDR (.data) |
0x00001c3c __data_load_end = (__data_load_start + SIZEOF (.data)) |
.noinit 0x008001db 0x0 |
0x008001db PROVIDE (__noinit_start, .) |
*(.noinit*) |
0x008001db PROVIDE (__noinit_end, .) |
0x008001db _end = . |
0x008001db PROVIDE (__heap_start, .) |
.eeprom 0x00810000 0x0 |
*(.eeprom*) |
0x00810000 __eeprom_end = . |
.stab 0x00000000 0x36c |
*(.stab) |
.stab 0x00000000 0x36c C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stabstr 0x00000000 0x84 |
*(.stabstr) |
.stabstr 0x00000000 0x84 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stab.excl |
*(.stab.excl) |
.stab.exclstr |
*(.stab.exclstr) |
.stab.index |
*(.stab.index) |
.stab.indexstr |
*(.stab.indexstr) |
.comment |
*(.comment) |
.debug |
*(.debug) |
.line |
*(.line) |
.debug_srcinfo |
*(.debug_srcinfo) |
.debug_sfnames |
*(.debug_sfnames) |
.debug_aranges 0x00000000 0xb4 |
*(.debug_aranges) |
.debug_aranges |
0x00000000 0x14 main.o |
.debug_aranges |
0x00000014 0x14 uart.o |
.debug_aranges |
0x00000028 0x14 lcd.o |
.debug_aranges |
0x0000003c 0x14 printf_P.o |
.debug_aranges |
0x00000050 0x14 timer0.o |
.debug_aranges |
0x00000064 0x14 keyboard.o |
.debug_aranges |
0x00000078 0x14 menu.o |
.debug_aranges |
0x0000008c 0x14 ir.o |
.debug_aranges |
0x000000a0 0x14 analog.o |
.debug_pubnames |
0x00000000 0x701 |
*(.debug_pubnames) |
.debug_pubnames |
0x00000000 0x1e1 main.o |
.debug_pubnames |
0x000001e1 0x240 uart.o |
.debug_pubnames |
0x00000421 0xb7 lcd.o |
.debug_pubnames |
0x000004d8 0x4a printf_P.o |
.debug_pubnames |
0x00000522 0x70 timer0.o |
.debug_pubnames |
0x00000592 0x52 keyboard.o |
.debug_pubnames |
0x000005e4 0x4a menu.o |
.debug_pubnames |
0x0000062e 0x85 ir.o |
.debug_pubnames |
0x000006b3 0x4e analog.o |
.debug_info 0x00000000 0x1a6c |
*(.debug_info) |
.debug_info 0x00000000 0x469 main.o |
.debug_info 0x00000469 0x7ba uart.o |
.debug_info 0x00000c23 0x260 lcd.o |
.debug_info 0x00000e83 0x45d printf_P.o |
.debug_info 0x000012e0 0x1d7 timer0.o |
.debug_info 0x000014b7 0x177 keyboard.o |
.debug_info 0x0000162e 0x1a7 menu.o |
.debug_info 0x000017d5 0x171 ir.o |
.debug_info 0x00001946 0x126 analog.o |
*(.gnu.linkonce.wi.*) |
.debug_abbrev 0x00000000 0x774 |
*(.debug_abbrev) |
.debug_abbrev 0x00000000 0x10c main.o |
.debug_abbrev 0x0000010c 0x178 uart.o |
.debug_abbrev 0x00000284 0xbc lcd.o |
.debug_abbrev 0x00000340 0x132 printf_P.o |
.debug_abbrev 0x00000472 0xc5 timer0.o |
.debug_abbrev 0x00000537 0x87 keyboard.o |
.debug_abbrev 0x000005be 0xb6 menu.o |
.debug_abbrev 0x00000674 0x76 ir.o |
.debug_abbrev 0x000006ea 0x8a analog.o |
.debug_line 0x00000000 0x16a3 |
*(.debug_line) |
.debug_line 0x00000000 0x2aa main.o |
.debug_line 0x000002aa 0x4c4 uart.o |
.debug_line 0x0000076e 0x279 lcd.o |
.debug_line 0x000009e7 0x4e2 printf_P.o |
.debug_line 0x00000ec9 0x180 timer0.o |
.debug_line 0x00001049 0x170 keyboard.o |
.debug_line 0x000011b9 0x19a menu.o |
.debug_line 0x00001353 0x212 ir.o |
.debug_line 0x00001565 0x13e analog.o |
.debug_frame |
*(.debug_frame) |
.debug_str 0x00000000 0x889 |
*(.debug_str) |
.debug_str 0x00000000 0x2e2 main.o |
0x371 (size before relaxing) |
.debug_str 0x000002e2 0x26b uart.o |
0x423 (size before relaxing) |
.debug_str 0x0000054d 0x9a lcd.o |
0x17b (size before relaxing) |
.debug_str 0x000005e7 0xf9 printf_P.o |
0x1bd (size before relaxing) |
.debug_str 0x000006e0 0x6b timer0.o |
0x168 (size before relaxing) |
.debug_str 0x0000074b 0x5e keyboard.o |
0x13f (size before relaxing) |
.debug_str 0x000007a9 0x40 menu.o |
0x15e (size before relaxing) |
.debug_str 0x000007e9 0x6d ir.o |
0x169 (size before relaxing) |
.debug_str 0x00000856 0x33 analog.o |
0x120 (size before relaxing) |
.debug_loc |
*(.debug_loc) |
.debug_macinfo |
*(.debug_macinfo) |
OUTPUT(main.elf elf32-avr) |
Cross Reference Table |
Symbol File |
ADC_Init analog.o |
main.o |
AddCRC uart.o |
AnalogWerte analog.o |
uart.o |
AntwortEingetroffen uart.o |
AnzahlEmpfangsBytes uart.o |
AnzahlTeilnehmer uart.o |
menu.o |
Array menu.o |
BearbeiteRxDaten uart.o |
main.o |
CheckDelay timer0.o |
keyboard.o |
main.o |
ClearIntervalle uart.o |
main.o |
CntCrcError uart.o |
menu.o |
CntDatensaetzeProSekunde main.o |
uart.o |
CountMilliseconds timer0.o |
DatenUebertragung uart.o |
main.o |
DebugGetAnforderung main.o |
DebugIn uart.o |
main.o |
DebugOut uart.o |
main.o |
Debug_Display_Intervall main.o |
Debug_Display_Timer main.o |
Debug_Timer main.o |
Debug_Timer_Intervall main.o |
Decode64 uart.o |
Decodierung_Lauft ir.o |
Delay_ms timer0.o |
main.o |
DisplayBusy uart.o |
timer0.o |
DisplayZeilen main.o |
menu.o |
uart.o |
ErwarteAntwort uart.o |
GetAnalogWerte analog.o |
main.o |
GetKeyboard keyboard.o |
main.o |
GetKeyboard2 keyboard.o |
main.o |
GetVersionAnforderung main.o |
IR_Code ir.o |
timer0.o |
uart.o |
Init main.o |
InitIR ir.o |
main.o |
IntervallDebug main.o |
IntervallDisplay main.o |
KanalAn menu.o |
KanalVon menu.o |
KeyTimer keyboard.o |
Keyboard_Init keyboard.o |
main.o |
LCD_Gotoxy lcd.o |
menu.o |
uart.o |
main.o |
LCD_Init lcd.o |
main.o |
LCD_Putchar lcd.o |
printf_P.o |
LCD_Write lcd.o |
LoescheIrCodeTimer ir.o |
timer0.o |
Menu menu.o |
main.o |
Minute main.o |
NeuerDatensatzEmpfangen uart.o |
New_IR_Code ir.o |
PAD_0 printf_P.o |
PAD_SP printf_P.o |
PC_DebugTimeout uart.o |
PRINT printf_P.o |
PRINTP printf_P.o |
PollDisplay uart.o |
main.o |
ReadADC analog.o |
RxdBuffer uart.o |
Sekunde main.o |
Sekundentakt main.o |
Sekundentakt_Init main.o |
SendIntervalle uart.o |
SendOutData uart.o |
SendeBuffer uart.o |
SendeDummyDaten main.o |
SendeRemoteTasten uart.o |
SetDelay timer0.o |
keyboard.o |
main.o |
SioTmp uart.o |
SlaveAdresse main.o |
menu.o |
uart.o |
TX_DigTransferKanalDaten uart.o |
TX_DigTransferKanalH uart.o |
TX_DigTransferKanalL uart.o |
TestInt menu.o |
Timer1_Init timer0.o |
main.o |
UART_Init uart.o |
main.o |
UebertragungAbgeschlossen uart.o |
UebertragungUnterbrochen main.o |
VersionInfo main.o |
WaitTXD uart.o |
timer0.o |
WriteProgramData uart.o |
_SekTimer main.o |
_TastTimer main.o |
__bad_interrupt C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__brkval C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__bss_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__bss_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__data_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_load_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__do_clear_bss C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__do_copy_data C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__flp C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__init C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__iob C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
__malloc_heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_margin C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__stack C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
main.o |
__udivmodsi4 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o |
__vector_1 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_10 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_11 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_12 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_13 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_15 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_16 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_17 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_18 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_19 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_20 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_3 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_5 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_7 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_8 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_9 timer0.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_default C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vectors C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
_lcd_write_4bit lcd.o |
_lcd_write_command lcd.o |
menu.o |
main.o |
_long_delay lcd.o |
menu.o |
main.o |
_printf_P printf_P.o |
menu.o |
uart.o |
main.o |
_short_delay lcd.o |
calloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
fdevopen C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o |
free C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
lcd_write_byte lcd.o |
main main.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
malloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
memchr C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o |
memset C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
my_pput lcd.o |
uart_putchar uart.o |
/branches/V0.41-Hexa/main.sym |
---|
0,0 → 1,253 |
00000000 W __heap_end |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 W __vector_default |
00000000 T __vectors |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
00000054 t __c.0 |
00000054 T __ctors_end |
00000054 T __ctors_start |
00000054 T __dtors_end |
00000054 T __dtors_start |
00000069 t __c.1 |
0000007e t __c.2 |
00000093 t __c.3 |
000000a8 t __c.2 |
000000ab t __c.3 |
000000ae t __c.4 |
000000b1 t __c.5 |
000000b4 t __c.3 |
000000c2 t __c.4 |
000000d0 t __c.5 |
000000dc t __c.6 |
000000e1 t __c.7 |
000000ea t __c.8 |
000000f6 t __c.9 |
000000fe t __c.10 |
0000010a W __init |
00000116 T __do_copy_data |
00000122 t .do_copy_data_loop |
00000126 t .do_copy_data_start |
0000012c T __do_clear_bss |
00000134 t .do_clear_bss_loop |
00000136 t .do_clear_bss_start |
00000140 T __bad_interrupt |
00000140 W __vector_10 |
00000140 W __vector_12 |
00000140 W __vector_14 |
00000140 W __vector_16 |
00000140 W __vector_17 |
00000140 W __vector_18 |
00000140 W __vector_19 |
00000140 W __vector_2 |
00000140 W __vector_20 |
00000140 W __vector_3 |
00000140 W __vector_4 |
00000140 W __vector_5 |
00000140 W __vector_6 |
00000140 W __vector_7 |
00000140 W __vector_8 |
00000144 T Sekundentakt_Init |
00000156 T Sekundentakt |
000001b4 T Init |
000001ca T main |
000003c6 T __vector_15 |
00000430 T __vector_13 |
000005de T AddCRC |
0000063c T SendOutData |
00000724 T Decode64 |
000007fc T BearbeiteRxDaten |
0000085f W __stack |
0000097a T uart_putchar |
00000996 T WriteProgramData |
00000998 T UART_Init |
000009b4 T SendeRemoteTasten |
00000a14 T SendIntervalle |
00000a5c T ClearIntervalle |
00000aa2 T DatenUebertragung |
00000b92 T _long_delay |
00000bb2 T _short_delay |
00000bc2 T _lcd_write_command |
00000bee T _lcd_write_4bit |
00000c0c T lcd_write_byte |
00000c34 T my_pput |
00000c3e T LCD_Init |
00000caa T LCD_Gotoxy |
00000cf8 T LCD_Write |
00000d2e T LCD_Putchar |
00000d44 T PRINT |
00000d6c T PRINTP |
00000d96 T PAD_SP |
00000dae T PAD_0 |
00000dc6 T _printf_P |
000012ce T __vector_9 |
0000133c T Timer1_Init |
00001350 T SetDelay |
00001362 T CheckDelay |
00001378 T Delay_ms |
00001392 T Keyboard_Init |
000013a4 T GetKeyboard |
000014ae T GetKeyboard2 |
000014c8 T Menu |
000016ce T InitIR |
000016fc T __vector_1 |
0000172c T __vector_11 |
00001884 T ADC_Init |
0000188c T ReadADC |
0000189c T GetAnalogWerte |
000018c8 T memchr |
000018e2 T fdevopen |
00001970 T calloc |
000019a8 T malloc |
00001adc T free |
00001b94 T memset |
00001ba8 T __udivmodsi4 |
00001bb4 t __udivmodsi4_loop |
00001bce t __udivmodsi4_ep |
00001bec A __data_load_start |
00001bec T _etext |
00001c10 A __data_load_end |
00800060 D __data_start |
00800060 D IntervallDisplay |
00800062 D IntervallDebug |
00800064 D SlaveAdresse |
00800065 D DisplayZeilen |
00800066 D CntDatensaetzeProSekunde |
0080006c D AnzahlTeilnehmer |
0080006d D ErwarteAntwort |
0080006e D UebertragungAbgeschlossen |
0080006f d state.0 |
00800070 d KanalSlave.1 |
00800071 D Array |
0080007b d MaxMenue.1 |
0080007c D LoescheIrCodeTimer |
0080007e D __malloc_heap_end |
00800080 D __malloc_heap_start |
00800082 D __malloc_margin |
00800084 B __bss_start |
00800084 D __data_end |
00800084 D _edata |
00800084 B UebertragungUnterbrochen |
00800085 B SendeDummyDaten |
00800086 B GetVersionAnforderung |
00800087 B DebugGetAnforderung |
00800088 B Debug_Display_Intervall |
0080008a B Debug_Timer_Intervall |
0080008c B Minute |
0080008d B Sekunde |
0080008e B _TastTimer |
00800090 B _SekTimer |
00800092 B AntwortEingetroffen |
00800093 B DisplayBusy |
00800094 B TX_DigTransferKanalDaten |
00800095 B TX_DigTransferKanalH |
00800096 B TX_DigTransferKanalL |
00800097 B PC_DebugTimeout |
00800098 B AnzahlEmpfangsBytes |
00800099 B CntCrcError |
0080009b B NeuerDatensatzEmpfangen |
0080009c B SioTmp |
0080009d b ptr.11 |
0080009f b crc.6 |
008000a1 b crc1.7 |
008000a2 b crc2.8 |
008000a3 b buf_ptr.9 |
008000a4 b UartState.10 |
008000a5 B CountMilliseconds |
008000a7 b cnt_10ms.0 |
008000a8 B KeyTimer |
008000aa b taste1.0 |
008000ab b taste2.1 |
008000ac b taste3.2 |
008000ad b taste4.3 |
008000ae b taste5.4 |
008000af B TestInt |
008000b1 b arr.0 |
008000b3 b MenuePunkt.2 |
008000b4 b Shift.0 |
008000b6 b IR_Code_tmp.1 |
008000b8 b IR_Zaehler.2 |
008000b9 b IRSperrCounter.3 |
008000ba B Debug_Timer |
008000bc B Debug_Display_Timer |
008000be B DebugIn |
008000c9 B VersionInfo |
008000d3 B DebugOut |
008000ed B PollDisplay |
008000ee B SendeBuffer |
00800152 B RxdBuffer |
008001b6 B KanalVon |
008001be B KanalAn |
008001c6 B New_IR_Code |
008001c7 B IR_Code |
008001c9 B Decodierung_Lauft |
008001ca B AnalogWerte |
008001d0 B __iob |
008001d6 B __brkval |
008001d8 B __flp |
008001da B __bss_end |
008001da ? __heap_start |
008001da ? _end |
00810000 ? __eeprom_end |
/branches/V0.41-Hexa/makefile |
---|
0,0 → 1,402 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega8 |
#------------------------------------------------------------------- |
# ACHTUNG: Immer "Make Clean" machen, wenn hier etwas geändert wird! |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 41 |
MotorAdresse = 0 |
FDD_IRLR = 1 |
#------------------------------------------------------------------- |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
ifeq ($(MotorAdresse), 0) |
ifeq ($(FDD_IRLR), 1) |
TARGET = BrushLess-Ctrl_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_10A |
else |
TARGET = BrushLess-Ctrl_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_6A |
endif |
else |
ifeq ($(FDD_IRLR), 1) |
TARGET = BrushLess-Ctrl_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_10A_ADR_$(MotorAdresse)_for_BL-Ctrl_V1_0 |
else |
TARGET = BrushLess-Ctrl_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_6A_ADR_$(MotorAdresse)_for_BL-Ctrl_V1_0 |
endif |
endif |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c timer0.c analog.c PPM_Decode.c twislave.c BLMC.c |
#printf_P.c |
########################################################################################################## |
# If there is more than one source file, append them above, or modify and |
# uncomment the following: |
#SRC += foo.c bar.c |
# You can also wrap lines by appending a backslash to the end of the line: |
#SRC += baz.c \ |
#xyzzy.c |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -g -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DMOTORADRESSE=$(MotorAdresse) -DFDD_IRLR=$(FDD_IRLR) |
ifeq ($(AVR_CTRL_PLATINE), 1) |
CFLAGS += -DAVR_CTRL_PLATINE=$(AVR_CTRL_PLATINE) |
endif |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
#AVRDUDE_FLAGS += -V -E noreset |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
# $(REMOVE) $(TARGET).eep |
# $(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/V0.41-Hexa/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/branches/V0.41-Hexa/timer0.c |
---|
0,0 → 1,59 |
/***************************************************************************** |
*****************************************************************************/ |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile unsigned char Timer0Overflow; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL(SIG_OVERFLOW0) |
{ |
static unsigned char cnt; |
Timer0Overflow++; |
if(!cnt--) |
{ |
cnt = 3; |
CountMilliseconds += 1; |
if(I2C_Timeout) I2C_Timeout--; |
if(PPM_Timeout) PPM_Timeout--; else anz_ppm_werte = 0; |
if(SIO_Timeout) SIO_Timeout--; |
} |
} |
void Timer0_Init(void) |
{ |
TCCR0 = TIMER_TEILER; |
// TCNT0 = -TIMER_RELOAD_VALUE; // reload |
TIM0_START; |
TIMER2_INT_ENABLE; |
} |
unsigned int SetDelay(unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
} |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
} |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
/branches/V0.41-Hexa/timer0.h |
---|
0,0 → 1,15 |
#if defined (__AVR_ATmega8__) |
#define TIMER_TEILER CK8 |
//#define TIMER_RELOAD_VALUE 125 |
#endif |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char Timer0Overflow; |
void Timer1_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
/branches/V0.41-Hexa/timer0.lst |
---|
0,0 → 1,212 |
1 .file "timer0.c" |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __CCP__ = 0x34 |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
15 .Ltext0: |
16 .global __vector_9 |
18 __vector_9: |
19 .LFB3: |
20 .LM1: |
21 0000 1F92 push __zero_reg__ |
22 0002 0F92 push r0 |
23 0004 0FB6 in r0,__SREG__ |
24 0006 0F92 push r0 |
25 0008 1124 clr __zero_reg__ |
26 000a 8F93 push r24 |
27 000c 9F93 push r25 |
28 /* prologue: Signal */ |
29 /* frame size = 0 */ |
30 .LM2: |
31 000e 8091 0000 lds r24,Timer0Overflow |
32 0012 8F5F subi r24,lo8(-(1)) |
33 0014 8093 0000 sts Timer0Overflow,r24 |
34 .LM3: |
35 0018 8091 0000 lds r24,cnt.1843 |
36 001c 8150 subi r24,lo8(-(-1)) |
37 001e 8093 0000 sts cnt.1843,r24 |
38 0022 8F5F subi r24,lo8(-(1)) |
39 0024 01F4 brne .L6 |
40 .LM4: |
41 0026 83E0 ldi r24,lo8(3) |
42 0028 8093 0000 sts cnt.1843,r24 |
43 .LM5: |
44 002c 8091 0000 lds r24,CountMilliseconds |
45 0030 9091 0000 lds r25,(CountMilliseconds)+1 |
46 0034 0196 adiw r24,1 |
47 0036 9093 0000 sts (CountMilliseconds)+1,r25 |
48 003a 8093 0000 sts CountMilliseconds,r24 |
49 .LM6: |
50 003e 8091 0000 lds r24,I2C_Timeout |
51 0042 9091 0000 lds r25,(I2C_Timeout)+1 |
52 0046 0097 sbiw r24,0 |
53 0048 01F0 breq .L3 |
54 004a 0197 sbiw r24,1 |
55 004c 9093 0000 sts (I2C_Timeout)+1,r25 |
56 0050 8093 0000 sts I2C_Timeout,r24 |
57 .L3: |
58 .LM7: |
59 0054 8091 0000 lds r24,PPM_Timeout |
60 0058 8823 tst r24 |
61 005a 01F0 breq .L4 |
62 005c 8091 0000 lds r24,PPM_Timeout |
63 0060 8150 subi r24,lo8(-(-1)) |
64 0062 8093 0000 sts PPM_Timeout,r24 |
65 0066 00C0 rjmp .L5 |
66 .L4: |
67 0068 1092 0000 sts anz_ppm_werte,__zero_reg__ |
68 .L5: |
69 .LM8: |
70 006c 8091 0000 lds r24,SIO_Timeout |
71 0070 9091 0000 lds r25,(SIO_Timeout)+1 |
72 0074 0097 sbiw r24,0 |
73 0076 01F0 breq .L6 |
74 0078 0197 sbiw r24,1 |
75 007a 9093 0000 sts (SIO_Timeout)+1,r25 |
76 007e 8093 0000 sts SIO_Timeout,r24 |
77 .L6: |
78 /* epilogue start */ |
79 .LM9: |
80 0082 9F91 pop r25 |
81 0084 8F91 pop r24 |
82 0086 0F90 pop r0 |
83 0088 0FBE out __SREG__,r0 |
84 008a 0F90 pop r0 |
85 008c 1F90 pop __zero_reg__ |
86 008e 1895 reti |
87 .LFE3: |
89 .global Timer0_Init |
91 Timer0_Init: |
92 .LFB4: |
93 .LM10: |
94 /* prologue: function */ |
95 /* frame size = 0 */ |
96 .LM11: |
97 0090 82E0 ldi r24,lo8(2) |
98 0092 83BF out 83-32,r24 |
99 .LM12: |
100 0094 89B7 in r24,89-32 |
101 0096 8160 ori r24,lo8(1) |
102 0098 89BF out 89-32,r24 |
103 .LM13: |
104 009a 89B7 in r24,89-32 |
105 009c 8064 ori r24,lo8(64) |
106 009e 89BF out 89-32,r24 |
107 /* epilogue start */ |
108 .LM14: |
109 00a0 0895 ret |
110 .LFE4: |
112 .global SetDelay |
114 SetDelay: |
115 .LFB5: |
116 .LM15: |
117 .LVL0: |
118 /* prologue: function */ |
119 /* frame size = 0 */ |
120 .LM16: |
121 00a2 2091 0000 lds r18,CountMilliseconds |
122 00a6 3091 0000 lds r19,(CountMilliseconds)+1 |
123 00aa 2150 subi r18,lo8(-(-1)) |
124 00ac 3040 sbci r19,hi8(-(-1)) |
125 00ae 280F add r18,r24 |
126 00b0 391F adc r19,r25 |
127 .LM17: |
128 00b2 C901 movw r24,r18 |
129 .LVL1: |
130 /* epilogue start */ |
131 00b4 0895 ret |
132 .LFE5: |
134 .global CheckDelay |
136 CheckDelay: |
137 .LFB6: |
138 .LM18: |
139 .LVL2: |
140 /* prologue: function */ |
141 /* frame size = 0 */ |
142 .LM19: |
143 00b6 2091 0000 lds r18,CountMilliseconds |
144 00ba 3091 0000 lds r19,(CountMilliseconds)+1 |
145 00be 821B sub r24,r18 |
146 00c0 930B sbc r25,r19 |
147 .LVL3: |
148 00c2 8070 andi r24,lo8(-32768) |
149 00c4 9078 andi r25,hi8(-32768) |
150 .LM20: |
151 00c6 892F mov r24,r25 |
152 /* epilogue start */ |
153 00c8 0895 ret |
154 .LFE6: |
156 .global Delay_ms |
158 Delay_ms: |
159 .LFB7: |
160 .LM21: |
161 .LVL4: |
162 /* prologue: function */ |
163 /* frame size = 0 */ |
164 .LBB6: |
165 .LBB7: |
166 .LM22: |
167 00ca 2091 0000 lds r18,CountMilliseconds |
168 00ce 3091 0000 lds r19,(CountMilliseconds)+1 |
169 .LVL5: |
170 00d2 2150 subi r18,lo8(-(-1)) |
171 00d4 3040 sbci r19,hi8(-(-1)) |
172 00d6 280F add r18,r24 |
173 00d8 391F adc r19,r25 |
174 .L14: |
175 .LBE7: |
176 .LBE6: |
177 .LBB8: |
178 .LBB9: |
179 .LM23: |
180 00da 8091 0000 lds r24,CountMilliseconds |
181 00de 9091 0000 lds r25,(CountMilliseconds)+1 |
182 .LVL6: |
183 .LBE9: |
184 .LBE8: |
185 .LM24: |
186 00e2 A901 movw r20,r18 |
187 00e4 481B sub r20,r24 |
188 00e6 590B sbc r21,r25 |
189 00e8 CA01 movw r24,r20 |
190 00ea 8070 andi r24,lo8(-32768) |
191 00ec 9078 andi r25,hi8(-32768) |
192 00ee 9923 tst r25 |
193 00f0 01F0 breq .L14 |
194 /* epilogue start */ |
195 .LM25: |
196 00f2 0895 ret |
197 .LFE7: |
199 .global CountMilliseconds |
200 .global CountMilliseconds |
201 .section .bss |
204 CountMilliseconds: |
205 0000 0000 .skip 2,0 |
206 .lcomm cnt.1843,1 |
207 .comm Timer0Overflow,1,1 |
264 .Letext0: |
DEFINED SYMBOLS |
*ABS*:00000000 timer0.c |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:2 *ABS*:0000003f __SREG__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:3 *ABS*:0000003e __SP_H__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:4 *ABS*:0000003d __SP_L__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:5 *ABS*:00000034 __CCP__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:18 .text:00000000 __vector_9 |
*COM*:00000001 Timer0Overflow |
.bss:00000002 cnt.1843 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:204 .bss:00000000 CountMilliseconds |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:91 .text:00000090 Timer0_Init |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:114 .text:000000a2 SetDelay |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:136 .text:000000b6 CheckDelay |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccL2tNpQ.s:158 .text:000000ca Delay_ms |
UNDEFINED SYMBOLS |
I2C_Timeout |
PPM_Timeout |
anz_ppm_werte |
SIO_Timeout |
__do_clear_bss |
/branches/V0.41-Hexa/twislave.c |
---|
0,0 → 1,75 |
/*############################################################################ |
Slaveadr = 0x52 = Vorne, 0x54 = Hinten, 0x56 = Rechts, 0x58 = Links |
############################################################################*/ |
#include <avr/io.h> |
#include <util/twi.h> |
#include "main.h" |
unsigned char I2C_RXBuffer; |
unsigned char Byte_Counter=0; |
//############################################################################ |
//I2C (TWI) Interface Init |
void InitIC2_Slave(uint8_t adr) |
//############################################################################ |
{ |
TWAR = adr + (2*MotorAdresse); // Eigene Adresse setzen |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
//############################################################################ |
//ISR, die bei einem Ereignis auf dem Bus ausgelöst wird. Im Register TWSR befindet |
//sich dann ein Statuscode, anhand dessen die Situation festgestellt werden kann. |
ISR (TWI_vect) |
//############################################################################ |
{ |
switch (TWSR & 0xF8) |
{ |
case SR_SLA_ACK: |
TWCR |= (1<<TWINT); |
Byte_Counter=0; |
return; |
// Daten Empfangen |
case SR_PREV_ACK: |
I2C_RXBuffer = TWDR; |
I2C_Timeout = 500; |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_SLA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_DATA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_2: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_1: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
} |
TWCR =(1<<TWEA) | (1<<TWINT) | (1<<TWEN) | (1<<TWIE); // TWI Reset |
} |
/branches/V0.41-Hexa/twislave.h |
---|
0,0 → 1,32 |
#ifndef _TWI_SLAVE_H_ |
#define _TWI_SLAVE_H_ |
extern unsigned char I2C_RXBuffer; |
extern unsigned char Byte_Counter; |
extern void InitIC2_Slave (uint8_t adr); |
#define TWI_BUS_ERR_1 0x00 |
#define TWI_BUS_ERR_2 0xF8 |
// Status Slave RX Mode |
#define SR_SLA_ACK 0x60 |
#define SR_LOST_ACK 0x68 |
#define SR_GEN_CALL_ACK 0x70 |
#define GEN_LOST_ACK 0x78 |
#define SR_PREV_ACK 0x80 |
#define SR_PREV_NACK 0x88 |
#define GEN_PREV_ACK 0x90 |
#define GEN_PREV_NACK 0x98 |
#define STOP_CONDITION 0xA0 |
#define REPEATED_START 0xA0 |
// Status Slave TX mode |
#define SW_SLA_ACK 0xA8 |
#define SW_LOST_ACK 0xB0 |
#define SW_DATA_ACK 0xB8 |
#define SW_DATA_NACK 0xC0 |
#define SW_LAST_ACK 0xC8 |
#endif |
/branches/V0.41-Hexa/twislave.lst |
---|
0,0 → 1,160 |
1 .file "twislave.c" |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __CCP__ = 0x34 |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
15 .Ltext0: |
16 .global InitIC2_Slave |
18 InitIC2_Slave: |
19 .LFB3: |
20 .LM1: |
21 .LVL0: |
22 /* prologue: function */ |
23 /* frame size = 0 */ |
24 .LM2: |
25 0000 9091 0000 lds r25,MotorAdresse |
26 0004 990F lsl r25 |
27 0006 980F add r25,r24 |
28 0008 92B9 out 34-32,r25 |
29 .LM3: |
30 000a 85EC ldi r24,lo8(-59) |
31 .LVL1: |
32 000c 86BF out 86-32,r24 |
33 /* epilogue start */ |
34 .LM4: |
35 000e 0895 ret |
36 .LFE3: |
38 .global __vector_17 |
40 __vector_17: |
41 .LFB4: |
42 .LM5: |
43 0010 1F92 push __zero_reg__ |
44 0012 0F92 push r0 |
45 0014 0FB6 in r0,__SREG__ |
46 0016 0F92 push r0 |
47 0018 1124 clr __zero_reg__ |
48 001a 8F93 push r24 |
49 001c 9F93 push r25 |
50 /* prologue: Signal */ |
51 /* frame size = 0 */ |
52 .LM6: |
53 001e 81B1 in r24,33-32 |
54 0020 90E0 ldi r25,lo8(0) |
55 0022 887F andi r24,lo8(248) |
56 0024 9070 andi r25,hi8(248) |
57 0026 8038 cpi r24,128 |
58 0028 9105 cpc r25,__zero_reg__ |
59 002a 01F0 breq .L7 |
60 002c 8138 cpi r24,129 |
61 002e 9105 cpc r25,__zero_reg__ |
62 0030 04F4 brge .L11 |
63 0032 0097 sbiw r24,0 |
64 0034 01F0 breq .L5 |
65 0036 8036 cpi r24,96 |
66 0038 9105 cpc r25,__zero_reg__ |
67 003a 01F4 brne .L4 |
68 003c 00C0 rjmp .L21 |
69 .L11: |
70 003e 883B cpi r24,184 |
71 0040 9105 cpc r25,__zero_reg__ |
72 0042 01F0 breq .L9 |
73 0044 883F cpi r24,248 |
74 0046 9105 cpc r25,__zero_reg__ |
75 0048 01F0 breq .L10 |
76 004a 883A cpi r24,168 |
77 004c 9105 cpc r25,__zero_reg__ |
78 004e 01F4 brne .L4 |
79 0050 00C0 rjmp .L9 |
80 .L21: |
81 .LM7: |
82 0052 86B7 in r24,86-32 |
83 0054 8068 ori r24,lo8(-128) |
84 0056 86BF out 86-32,r24 |
85 .LM8: |
86 0058 1092 0000 sts Byte_Counter,__zero_reg__ |
87 005c 00C0 rjmp .L17 |
88 .L7: |
89 .LM9: |
90 005e 83B1 in r24,35-32 |
91 0060 8093 0000 sts I2C_RXBuffer,r24 |
92 .LM10: |
93 0064 84EF ldi r24,lo8(500) |
94 0066 91E0 ldi r25,hi8(500) |
95 0068 9093 0000 sts (I2C_Timeout)+1,r25 |
96 006c 8093 0000 sts I2C_Timeout,r24 |
97 0070 00C0 rjmp .L16 |
98 .L9: |
99 .LM11: |
100 0072 8091 0000 lds r24,Byte_Counter |
101 0076 8823 tst r24 |
102 0078 01F4 brne .L15 |
103 .LM12: |
104 007a 8091 0000 lds r24,Mittelstrom |
105 007e 83B9 out 35-32,r24 |
106 .LM13: |
107 0080 81E0 ldi r24,lo8(1) |
108 0082 8093 0000 sts Byte_Counter,r24 |
109 0086 00C0 rjmp .L16 |
110 .L15: |
111 .LM14: |
112 0088 8091 0000 lds r24,MaxPWM |
113 008c 83B9 out 35-32,r24 |
114 .L16: |
115 .LM15: |
116 008e 86B7 in r24,86-32 |
117 0090 8068 ori r24,lo8(-128) |
118 0092 00C0 rjmp .L18 |
119 .L10: |
120 .LM16: |
121 0094 86B7 in r24,86-32 |
122 0096 8069 ori r24,lo8(-112) |
123 0098 86BF out 86-32,r24 |
124 .L5: |
125 .LM17: |
126 009a 86B7 in r24,86-32 |
127 009c 8069 ori r24,lo8(-112) |
128 009e 86BF out 86-32,r24 |
129 .L4: |
130 .LM18: |
131 00a0 85EC ldi r24,lo8(-59) |
132 .L18: |
133 00a2 86BF out 86-32,r24 |
134 .L17: |
135 /* epilogue start */ |
136 .LM19: |
137 00a4 9F91 pop r25 |
138 00a6 8F91 pop r24 |
139 00a8 0F90 pop r0 |
140 00aa 0FBE out __SREG__,r0 |
141 00ac 0F90 pop r0 |
142 00ae 1F90 pop __zero_reg__ |
143 00b0 1895 reti |
144 .LFE4: |
146 .global Byte_Counter |
147 .global Byte_Counter |
148 .section .bss |
151 Byte_Counter: |
152 0000 00 .skip 1,0 |
153 .comm I2C_RXBuffer,1,1 |
186 .Letext0: |
DEFINED SYMBOLS |
*ABS*:00000000 twislave.c |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:2 *ABS*:0000003f __SREG__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:3 *ABS*:0000003e __SP_H__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:4 *ABS*:0000003d __SP_L__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:5 *ABS*:00000034 __CCP__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:18 .text:00000000 InitIC2_Slave |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:40 .text:00000010 __vector_17 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyl1o1s.s:151 .bss:00000000 Byte_Counter |
*COM*:00000001 I2C_RXBuffer |
UNDEFINED SYMBOLS |
MotorAdresse |
I2C_Timeout |
Mittelstrom |
MaxPWM |
__do_clear_bss |
/branches/V0.41-Hexa/uart.c |
---|
0,0 → 1,278 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + (c) 01.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + Keine Garantie auf Fehlerfreiheit |
// + Kommerzielle Nutzung nur mit meiner Zustimmung |
// + Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
// + www.mikrocontroller.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
#define MAX_SENDE_BUFF 100 |
#define MAX_EMPFANGS_BUFF 100 |
unsigned volatile char SIO_Sollwert = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned char MeineSlaveAdresse; |
unsigned char MotorTest[6] = {0,0,0,0,0,0}; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
struct str_DebugOut DebugOut; |
int Debug_Timer; |
SIGNAL(INT_VEC_TX) |
{ |
} |
void SendUart(void) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!(UCSRA & 0x40)) return; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
USR |= (1<TXC); |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
#if X3D_SIO == 1 |
static unsigned char serPacketCounter = 100; |
SioTmp = UDR; |
if(SioTmp == 0xF5) // Startzeichen |
{ |
serPacketCounter = 0; |
} |
else |
{ |
if(++serPacketCounter == MotorAdresse) // (1-6) |
{ |
SIO_Sollwert = SioTmp; |
SIO_Timeout = 200; // werte für 200ms gültig |
} |
else |
{ |
if(serPacketCounter > 100) serPacketCounter = 100; |
} |
} |
#else |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; }; |
if(CrcOkay) // Datensatz schon verarbeitet |
{ |
//NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
uart_putchar(RxdBuffer[2]); |
if (RxdBuffer[2] == 't') // Motortest |
{ Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
SIO_Sollwert = MotorTest[MotorAdresse - 1]; |
SIO_Timeout = 500; // werte für 500ms gültig |
} |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
#endif |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); // serieller Empfangsinterrupt |
// TX-Interrupt Freigabe |
// UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR= (SYSCLK / (BAUD_RATE * 8L) -1 ); |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
Debug_Timer = SetDelay(200); |
// Version beim Start ausgeben (nicht schön, aber geht... ) |
uart_putchar ('\n');uart_putchar ('B');uart_putchar ('L');uart_putchar (':'); |
uart_putchar ('V');uart_putchar (0x30 + VERSION_HAUPTVERSION);uart_putchar ('.');uart_putchar (0x30 + VERSION_NEBENVERSION/10); uart_putchar (0x30 + VERSION_NEBENVERSION%10); |
uart_putchar ('\n');uart_putchar('H');uart_putchar('W');uart_putchar (':');uart_putchar('1');uart_putchar('.');uart_putchar ((0x30-10) + HwVersion); |
uart_putchar ('\n');uart_putchar ('A');uart_putchar ('D');uart_putchar ('R'); uart_putchar (':'); uart_putchar (0x30 + MotorAdresse); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen)) // im Singlestep-Betrieb in jedem Schtitt senden |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
Debug_Timer = SetDelay(50); // Sendeintervall |
} |
} |
/branches/V0.41-Hexa/uart.h |
---|
0,0 → 1,79 |
#ifndef _UART_H |
#define _UART_H |
extern unsigned volatile char SIO_Sollwert; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned char MeineSlaveAdresse; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void SendUart(void); |
extern void DatenUebertragung(void); |
struct str_DebugOut |
{ |
unsigned char Digital[2]; |
unsigned int Analog[8]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
//Die Baud_Rate der Seriellen Schnittstelle |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
#if X3D_SIO == 1 |
#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#else |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
#endif |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega8__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/branches/V0.41-Hexa/uart.lst |
---|
0,0 → 1,902 |
1 .file "uart.c" |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __CCP__ = 0x34 |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
15 .Ltext0: |
16 .global __vector_13 |
18 __vector_13: |
19 .LFB3: |
20 .LM1: |
21 0000 1F92 push __zero_reg__ |
22 0002 0F92 push r0 |
23 0004 0FB6 in r0,__SREG__ |
24 0006 0F92 push r0 |
25 0008 1124 clr __zero_reg__ |
26 /* prologue: Signal */ |
27 /* frame size = 0 */ |
28 /* epilogue start */ |
29 .LM2: |
30 000a 0F90 pop r0 |
31 000c 0FBE out __SREG__,r0 |
32 000e 0F90 pop r0 |
33 0010 1F90 pop __zero_reg__ |
34 0012 1895 reti |
35 .LFE3: |
37 .global SendUart |
39 SendUart: |
40 .LFB4: |
41 .LM3: |
42 /* prologue: function */ |
43 /* frame size = 0 */ |
44 .LM4: |
45 0014 5E9B sbis 43-32,6 |
46 0016 00C0 rjmp .L8 |
47 .LM5: |
48 0018 8091 0000 lds r24,UebertragungAbgeschlossen |
49 001c 8823 tst r24 |
50 001e 01F4 brne .L5 |
51 .LM6: |
52 0020 8091 0000 lds r24,ptr.1846 |
53 0024 9091 0000 lds r25,(ptr.1846)+1 |
54 0028 0196 adiw r24,1 |
55 002a 9093 0000 sts (ptr.1846)+1,r25 |
56 002e 8093 0000 sts ptr.1846,r24 |
57 .LM7: |
58 0032 FC01 movw r30,r24 |
59 0034 E050 subi r30,lo8(-(SendeBuffer)) |
60 0036 F040 sbci r31,hi8(-(SendeBuffer)) |
61 0038 E081 ld r30,Z |
62 .LVL0: |
63 .LM8: |
64 003a ED30 cpi r30,lo8(13) |
65 003c 01F0 breq .L6 |
66 003e 8436 cpi r24,100 |
67 0040 9105 cpc r25,__zero_reg__ |
68 0042 01F4 brne .L7 |
69 .L6: |
70 .LM9: |
71 0044 1092 0000 sts (ptr.1846)+1,__zero_reg__ |
72 0048 1092 0000 sts ptr.1846,__zero_reg__ |
73 .LM10: |
74 004c 81E0 ldi r24,lo8(1) |
75 004e 8093 0000 sts UebertragungAbgeschlossen,r24 |
76 .L7: |
77 .LM11: |
78 0052 589A sbi 43-32,0 |
79 .LM12: |
80 0054 ECB9 out 44-32,r30 |
81 0056 0895 ret |
82 .LVL1: |
83 .L5: |
84 .LM13: |
85 0058 1092 0000 sts (ptr.1846)+1,__zero_reg__ |
86 005c 1092 0000 sts ptr.1846,__zero_reg__ |
87 .L8: |
88 0060 0895 ret |
89 .LFE4: |
91 .global Decode64 |
93 Decode64: |
94 .LFB5: |
95 .LM14: |
96 .LVL2: |
97 0062 1F93 push r17 |
98 0064 CF93 push r28 |
99 0066 DF93 push r29 |
100 /* prologue: function */ |
101 /* frame size = 0 */ |
102 0068 EC01 movw r28,r24 |
103 .LM15: |
104 006a 70E0 ldi r23,lo8(0) |
105 .LVL3: |
106 .LM16: |
107 006c A22F mov r26,r18 |
108 006e B0E0 ldi r27,lo8(0) |
109 0070 1197 sbiw r26,1 |
110 0072 00C0 rjmp .L10 |
111 .LVL4: |
112 .L12: |
113 .LM17: |
114 0074 E42F mov r30,r20 |
115 0076 F0E0 ldi r31,lo8(0) |
116 0078 E050 subi r30,lo8(-(RxdBuffer)) |
117 007a F040 sbci r31,hi8(-(RxdBuffer)) |
118 007c 3081 ld r19,Z |
119 .LM18: |
120 007e 4F5F subi r20,lo8(-(1)) |
121 0080 E42F mov r30,r20 |
122 0082 F0E0 ldi r31,lo8(0) |
123 0084 E050 subi r30,lo8(-(RxdBuffer)) |
124 0086 F040 sbci r31,hi8(-(RxdBuffer)) |
125 0088 5081 ld r21,Z |
126 .LVL5: |
127 .LM19: |
128 008a 4F5F subi r20,lo8(-(1)) |
129 008c E42F mov r30,r20 |
130 008e F0E0 ldi r31,lo8(0) |
131 0090 E050 subi r30,lo8(-(RxdBuffer)) |
132 0092 F040 sbci r31,hi8(-(RxdBuffer)) |
133 0094 1081 ld r17,Z |
134 .LM20: |
135 0096 4F5F subi r20,lo8(-(1)) |
136 0098 E42F mov r30,r20 |
137 009a F0E0 ldi r31,lo8(0) |
138 009c E050 subi r30,lo8(-(RxdBuffer)) |
139 009e F040 sbci r31,hi8(-(RxdBuffer)) |
140 00a0 2081 ld r18,Z |
141 .LVL6: |
142 00a2 4F5F subi r20,lo8(-(1)) |
143 .LM21: |
144 00a4 842F mov r24,r20 |
145 00a6 90E0 ldi r25,lo8(0) |
146 .LVL7: |
147 00a8 8A17 cp r24,r26 |
148 00aa 9B07 cpc r25,r27 |
149 00ac 04F4 brge .L13 |
150 .LVL8: |
151 .LM22: |
152 00ae 5D53 subi r21,lo8(-(-61)) |
153 .LVL9: |
154 .LM23: |
155 00b0 FE01 movw r30,r28 |
156 00b2 E70F add r30,r23 |
157 00b4 F11D adc r31,__zero_reg__ |
158 00b6 852F mov r24,r21 |
159 .LVL10: |
160 00b8 8295 swap r24 |
161 00ba 8F70 andi r24,lo8(15) |
162 00bc 3D53 subi r19,lo8(-(-61)) |
163 00be 330F lsl r19 |
164 00c0 330F lsl r19 |
165 00c2 382B or r19,r24 |
166 00c4 3083 st Z,r19 |
167 .LM24: |
168 00c6 6130 cpi r22,lo8(1) |
169 00c8 01F0 breq .L13 |
170 .LM25: |
171 00ca 912F mov r25,r17 |
172 .LVL11: |
173 00cc 9D53 subi r25,lo8(-(-61)) |
174 .LM26: |
175 00ce 7F5F subi r23,lo8(-(1)) |
176 00d0 FE01 movw r30,r28 |
177 00d2 E70F add r30,r23 |
178 00d4 F11D adc r31,__zero_reg__ |
179 00d6 7150 subi r23,lo8(-(-1)) |
180 00d8 5295 swap r21 |
181 00da 507F andi r21,lo8(-16) |
182 00dc 892F mov r24,r25 |
183 00de 8695 lsr r24 |
184 00e0 8695 lsr r24 |
185 00e2 582B or r21,r24 |
186 00e4 5083 st Z,r21 |
187 .LM27: |
188 00e6 6230 cpi r22,lo8(2) |
189 00e8 01F0 breq .L13 |
190 00ea 6350 subi r22,lo8(-(-3)) |
191 .LVL12: |
192 00ec 7E5F subi r23,lo8(-(2)) |
193 00ee FE01 movw r30,r28 |
194 00f0 E70F add r30,r23 |
195 00f2 F11D adc r31,__zero_reg__ |
196 00f4 9295 swap r25 |
197 00f6 990F lsl r25 |
198 00f8 990F lsl r25 |
199 00fa 907C andi r25,lo8(-64) |
200 00fc 2D53 subi r18,lo8(-(-61)) |
201 00fe 922B or r25,r18 |
202 0100 9083 st Z,r25 |
203 0102 7F5F subi r23,lo8(-(1)) |
204 .LVL13: |
205 .L10: |
206 .LM28: |
207 0104 6623 tst r22 |
208 0106 01F0 breq .+2 |
209 0108 00C0 rjmp .L12 |
210 .LVL14: |
211 .L13: |
212 /* epilogue start */ |
213 .LM29: |
214 010a DF91 pop r29 |
215 010c CF91 pop r28 |
216 .LVL15: |
217 010e 1F91 pop r17 |
218 0110 0895 ret |
219 .LFE5: |
221 .global AddCRC |
223 AddCRC: |
224 .LFB7: |
225 .LM30: |
226 .LVL16: |
227 /* prologue: function */ |
228 /* frame size = 0 */ |
229 0112 DC01 movw r26,r24 |
230 .LM31: |
231 0114 20E0 ldi r18,lo8(0) |
232 0116 30E0 ldi r19,hi8(0) |
233 .LVL17: |
234 0118 40E0 ldi r20,lo8(0) |
235 011a 50E0 ldi r21,hi8(0) |
236 .LVL18: |
237 011c 00C0 rjmp .L15 |
238 .LVL19: |
239 .L16: |
240 .LM32: |
241 011e FA01 movw r30,r20 |
242 0120 E050 subi r30,lo8(-(SendeBuffer)) |
243 0122 F040 sbci r31,hi8(-(SendeBuffer)) |
244 0124 8081 ld r24,Z |
245 0126 280F add r18,r24 |
246 0128 311D adc r19,__zero_reg__ |
247 .LM33: |
248 012a 4F5F subi r20,lo8(-(1)) |
249 012c 5F4F sbci r21,hi8(-(1)) |
250 .LVL20: |
251 .L15: |
252 012e 4A17 cp r20,r26 |
253 0130 5B07 cpc r21,r27 |
254 0132 00F0 brlo .L16 |
255 .LM34: |
256 0134 3F70 andi r19,hi8(4095) |
257 .LVL21: |
258 .LM35: |
259 0136 C901 movw r24,r18 |
260 0138 36E0 ldi r19,6 |
261 013a 9695 1: lsr r25 |
262 013c 8795 ror r24 |
263 013e 3A95 dec r19 |
264 0140 01F4 brne 1b |
265 0142 835C subi r24,lo8(-(61)) |
266 0144 FD01 movw r30,r26 |
267 0146 E050 subi r30,lo8(-(SendeBuffer)) |
268 0148 F040 sbci r31,hi8(-(SendeBuffer)) |
269 014a 8083 st Z,r24 |
270 014c 1196 adiw r26,1 |
271 .LVL22: |
272 .LM36: |
273 014e 2F73 andi r18,lo8(63) |
274 .LVL23: |
275 0150 235C subi r18,lo8(-(61)) |
276 0152 FD01 movw r30,r26 |
277 0154 E050 subi r30,lo8(-(SendeBuffer)) |
278 0156 F040 sbci r31,hi8(-(SendeBuffer)) |
279 0158 2083 st Z,r18 |
280 .LM37: |
281 015a A050 subi r26,lo8(-(SendeBuffer+1)) |
282 015c B040 sbci r27,hi8(-(SendeBuffer+1)) |
283 015e 8DE0 ldi r24,lo8(13) |
284 0160 8C93 st X,r24 |
285 .LM38: |
286 0162 1092 0000 sts UebertragungAbgeschlossen,__zero_reg__ |
287 .LM39: |
288 0166 8091 0000 lds r24,SendeBuffer |
289 016a 8CB9 out 44-32,r24 |
290 /* epilogue start */ |
291 .LM40: |
292 016c 0895 ret |
293 .LFE7: |
295 .global SendOutData |
297 SendOutData: |
298 .LFB8: |
299 .LM41: |
300 .LVL24: |
301 016e CF93 push r28 |
302 0170 DF93 push r29 |
303 /* prologue: function */ |
304 /* frame size = 0 */ |
305 0172 EA01 movw r28,r20 |
306 0174 B22F mov r27,r18 |
307 .LM42: |
308 0176 93E2 ldi r25,lo8(35) |
309 0178 9093 0000 sts SendeBuffer,r25 |
310 .LM43: |
311 017c 6093 0000 sts SendeBuffer+1,r22 |
312 .LM44: |
313 0180 8093 0000 sts SendeBuffer+2,r24 |
314 0184 63E0 ldi r22,lo8(3) |
315 0186 70E0 ldi r23,hi8(3) |
316 .LVL25: |
317 0188 A0E0 ldi r26,lo8(0) |
318 .LVL26: |
319 018a 00C0 rjmp .L19 |
320 .LVL27: |
321 .L23: |
322 .LM45: |
323 018c FE01 movw r30,r28 |
324 018e EA0F add r30,r26 |
325 0190 F11D adc r31,__zero_reg__ |
326 0192 9081 ld r25,Z |
327 .LVL28: |
328 0194 AF5F subi r26,lo8(-(1)) |
329 0196 B150 subi r27,lo8(-(-1)) |
330 .LM46: |
331 0198 01F4 brne .L20 |
332 019a 30E0 ldi r19,lo8(0) |
333 019c 40E0 ldi r20,lo8(0) |
334 .LVL29: |
335 019e 00C0 rjmp .L21 |
336 .LVL30: |
337 .L20: |
338 01a0 FE01 movw r30,r28 |
339 01a2 EA0F add r30,r26 |
340 01a4 F11D adc r31,__zero_reg__ |
341 01a6 4081 ld r20,Z |
342 .LVL31: |
343 01a8 AF5F subi r26,lo8(-(1)) |
344 01aa B150 subi r27,lo8(-(-1)) |
345 .LM47: |
346 01ac 01F4 brne .L22 |
347 01ae 30E0 ldi r19,lo8(0) |
348 01b0 00C0 rjmp .L21 |
349 .L22: |
350 01b2 FE01 movw r30,r28 |
351 01b4 EA0F add r30,r26 |
352 01b6 F11D adc r31,__zero_reg__ |
353 01b8 3081 ld r19,Z |
354 01ba AF5F subi r26,lo8(-(1)) |
355 01bc B150 subi r27,lo8(-(-1)) |
356 .L21: |
357 .LM48: |
358 01be 892F mov r24,r25 |
359 .LVL32: |
360 01c0 8695 lsr r24 |
361 01c2 8695 lsr r24 |
362 01c4 835C subi r24,lo8(-(61)) |
363 01c6 FB01 movw r30,r22 |
364 01c8 E050 subi r30,lo8(-(SendeBuffer)) |
365 01ca F040 sbci r31,hi8(-(SendeBuffer)) |
366 01cc 8083 st Z,r24 |
367 .LM49: |
368 01ce 242F mov r18,r20 |
369 01d0 2295 swap r18 |
370 01d2 2F70 andi r18,lo8(15) |
371 01d4 892F mov r24,r25 |
372 01d6 90E0 ldi r25,lo8(0) |
373 .LVL33: |
374 01d8 8370 andi r24,lo8(3) |
375 01da 9070 andi r25,hi8(3) |
376 .LVL34: |
377 01dc 54E0 ldi r21,4 |
378 01de 880F 1: lsl r24 |
379 01e0 991F rol r25 |
380 01e2 5A95 dec r21 |
381 01e4 01F4 brne 1b |
382 .LVL35: |
383 01e6 282B or r18,r24 |
384 01e8 235C subi r18,lo8(-(61)) |
385 01ea FB01 movw r30,r22 |
386 01ec E050 subi r30,lo8(-(SendeBuffer+1)) |
387 01ee F040 sbci r31,hi8(-(SendeBuffer+1)) |
388 01f0 2083 st Z,r18 |
389 .LM50: |
390 01f2 842F mov r24,r20 |
391 .LVL36: |
392 01f4 90E0 ldi r25,lo8(0) |
393 .LVL37: |
394 01f6 8F70 andi r24,lo8(15) |
395 01f8 9070 andi r25,hi8(15) |
396 .LVL38: |
397 01fa 880F lsl r24 |
398 01fc 991F rol r25 |
399 01fe 880F lsl r24 |
400 0200 991F rol r25 |
401 .LVL39: |
402 0202 232F mov r18,r19 |
403 0204 2295 swap r18 |
404 0206 2695 lsr r18 |
405 0208 2695 lsr r18 |
406 020a 2370 andi r18,lo8(3) |
407 020c 282B or r18,r24 |
408 020e 235C subi r18,lo8(-(61)) |
409 0210 FB01 movw r30,r22 |
410 0212 E050 subi r30,lo8(-(SendeBuffer+2)) |
411 0214 F040 sbci r31,hi8(-(SendeBuffer+2)) |
412 0216 2083 st Z,r18 |
413 .LM51: |
414 0218 3F73 andi r19,lo8(63) |
415 021a 335C subi r19,lo8(-(61)) |
416 021c FB01 movw r30,r22 |
417 021e E050 subi r30,lo8(-(SendeBuffer+3)) |
418 0220 F040 sbci r31,hi8(-(SendeBuffer+3)) |
419 0222 3083 st Z,r19 |
420 0224 6C5F subi r22,lo8(-(4)) |
421 0226 7F4F sbci r23,hi8(-(4)) |
422 .LVL40: |
423 .L19: |
424 .LM52: |
425 0228 BB23 tst r27 |
426 022a 01F0 breq .+2 |
427 022c 00C0 rjmp .L23 |
428 .LM53: |
429 022e CB01 movw r24,r22 |
430 .LVL41: |
431 0230 00D0 rcall AddCRC |
432 .LVL42: |
433 /* epilogue start */ |
434 .LM54: |
435 0232 DF91 pop r29 |
436 0234 CF91 pop r28 |
437 .LVL43: |
438 0236 0895 ret |
439 .LFE8: |
441 .global uart_putchar |
443 uart_putchar: |
444 .LFB9: |
445 .LM55: |
446 .LVL44: |
447 0238 1F93 push r17 |
448 /* prologue: function */ |
449 /* frame size = 0 */ |
450 023a 182F mov r17,r24 |
451 .LM56: |
452 023c 8A30 cpi r24,lo8(10) |
453 023e 01F4 brne .L28 |
454 .LM57: |
455 0240 8DE0 ldi r24,lo8(13) |
456 .LVL45: |
457 0242 00D0 rcall uart_putchar |
458 .LVL46: |
459 .L28: |
460 .LM58: |
461 0244 5D9B sbis 43-32,5 |
462 0246 00C0 rjmp .L28 |
463 .LM59: |
464 0248 1CB9 out 44-32,r17 |
465 .LM60: |
466 024a 80E0 ldi r24,lo8(0) |
467 024c 90E0 ldi r25,hi8(0) |
468 /* epilogue start */ |
469 024e 1F91 pop r17 |
470 .LVL47: |
471 0250 0895 ret |
472 .LFE9: |
474 .global __vector_11 |
476 __vector_11: |
477 .LFB6: |
478 .LM61: |
479 0252 1F92 push __zero_reg__ |
480 0254 0F92 push r0 |
481 0256 0FB6 in r0,__SREG__ |
482 0258 0F92 push r0 |
483 025a 1124 clr __zero_reg__ |
484 025c 2F93 push r18 |
485 025e 3F93 push r19 |
486 0260 4F93 push r20 |
487 0262 5F93 push r21 |
488 0264 6F93 push r22 |
489 0266 7F93 push r23 |
490 0268 8F93 push r24 |
491 026a 9F93 push r25 |
492 026c AF93 push r26 |
493 026e BF93 push r27 |
494 0270 CF93 push r28 |
495 0272 DF93 push r29 |
496 0274 EF93 push r30 |
497 0276 FF93 push r31 |
498 /* prologue: Signal */ |
499 /* frame size = 0 */ |
500 .LM62: |
501 0278 8CB1 in r24,44-32 |
502 027a 8093 0000 sts SioTmp,r24 |
503 .LM63: |
504 027e 4091 0000 lds r20,buf_ptr.1914 |
505 0282 4436 cpi r20,lo8(100) |
506 0284 00F0 brlo .L31 |
507 0286 1092 0000 sts UartState.1915,__zero_reg__ |
508 .L31: |
509 .LM64: |
510 028a 5091 0000 lds r21,SioTmp |
511 028e 5D30 cpi r21,lo8(13) |
512 0290 01F0 breq .+2 |
513 0292 00C0 rjmp .L32 |
514 0294 8091 0000 lds r24,UartState.1915 |
515 0298 8230 cpi r24,lo8(2) |
516 029a 01F0 breq .+2 |
517 029c 00C0 rjmp .L32 |
518 .LM65: |
519 029e 1092 0000 sts UartState.1915,__zero_reg__ |
520 .LM66: |
521 02a2 A42F mov r26,r20 |
522 02a4 B0E0 ldi r27,lo8(0) |
523 02a6 FD01 movw r30,r26 |
524 02a8 E050 subi r30,lo8(-(RxdBuffer-2)) |
525 02aa F040 sbci r31,hi8(-(RxdBuffer-2)) |
526 02ac 3081 ld r19,Z |
527 .LM67: |
528 02ae ED01 movw r28,r26 |
529 02b0 C050 subi r28,lo8(-(RxdBuffer-1)) |
530 02b2 D040 sbci r29,hi8(-(RxdBuffer-1)) |
531 02b4 2881 ld r18,Y |
532 .LM68: |
533 02b6 8091 0000 lds r24,crc.1911 |
534 02ba 9091 0000 lds r25,(crc.1911)+1 |
535 02be 831B sub r24,r19 |
536 02c0 9109 sbc r25,__zero_reg__ |
537 02c2 821B sub r24,r18 |
538 02c4 9109 sbc r25,__zero_reg__ |
539 02c6 9F70 andi r25,hi8(4095) |
540 02c8 9093 0000 sts (crc.1911)+1,r25 |
541 02cc 8093 0000 sts crc.1911,r24 |
542 .LM69: |
543 02d0 9C01 movw r18,r24 |
544 02d2 66E0 ldi r22,6 |
545 02d4 3695 1: lsr r19 |
546 02d6 2795 ror r18 |
547 02d8 6A95 dec r22 |
548 02da 01F4 brne 1b |
549 02dc 235C subi r18,lo8(-(61)) |
550 02de 2093 0000 sts crc1.1912,r18 |
551 .LM70: |
552 02e2 982F mov r25,r24 |
553 02e4 9F73 andi r25,lo8(63) |
554 02e6 935C subi r25,lo8(-(61)) |
555 02e8 9093 0000 sts crc2.1913,r25 |
556 .LM71: |
557 02ec 8081 ld r24,Z |
558 02ee 2817 cp r18,r24 |
559 02f0 01F0 breq .+2 |
560 02f2 00C0 rjmp .L42 |
561 02f4 8881 ld r24,Y |
562 02f6 9817 cp r25,r24 |
563 02f8 01F0 breq .+2 |
564 02fa 00C0 rjmp .L42 |
565 .LM72: |
566 02fc 4093 0000 sts AnzahlEmpfangsBytes,r20 |
567 .LM73: |
568 0300 A050 subi r26,lo8(-(RxdBuffer)) |
569 0302 B040 sbci r27,hi8(-(RxdBuffer)) |
570 0304 5C93 st X,r21 |
571 .LM74: |
572 0306 8091 0000 lds r24,RxdBuffer+2 |
573 030a 8235 cpi r24,lo8(82) |
574 030c 01F4 brne .L34 |
575 030e 2CE0 ldi r18,lo8(12) |
576 0310 88E1 ldi r24,lo8(24) |
577 0312 90E0 ldi r25,hi8(24) |
578 /* #APP */ |
579 ; 133 "uart.c" 1 |
580 0314 0FB6 in __tmp_reg__,__SREG__ |
581 0316 F894 cli |
582 0318 A895 wdr |
583 031a 81BD out 33,r24 |
584 031c 0FBE out __SREG__,__tmp_reg__ |
585 031e 21BD out 33,r18 |
586 ; 0 "" 2 |
587 /* #NOAPP */ |
588 .L34: |
589 .LM75: |
590 0320 8091 0000 lds r24,RxdBuffer+2 |
591 0324 00D0 rcall uart_putchar |
592 .LM76: |
593 0326 8091 0000 lds r24,RxdBuffer+2 |
594 032a 8437 cpi r24,lo8(116) |
595 032c 01F0 breq .+2 |
596 032e 00C0 rjmp .L42 |
597 .LM77: |
598 0330 2091 0000 lds r18,AnzahlEmpfangsBytes |
599 0334 80E0 ldi r24,lo8(MotorTest) |
600 0336 90E0 ldi r25,hi8(MotorTest) |
601 0338 66E0 ldi r22,lo8(6) |
602 033a 43E0 ldi r20,lo8(3) |
603 033c 00D0 rcall Decode64 |
604 .LM78: |
605 033e E091 0000 lds r30,MotorAdresse |
606 0342 F0E0 ldi r31,lo8(0) |
607 0344 E050 subi r30,lo8(-(MotorTest-1)) |
608 0346 F040 sbci r31,hi8(-(MotorTest-1)) |
609 0348 8081 ld r24,Z |
610 034a 8093 0000 sts SIO_Sollwert,r24 |
611 .LM79: |
612 034e 84EF ldi r24,lo8(500) |
613 0350 91E0 ldi r25,hi8(500) |
614 0352 9093 0000 sts (SIO_Timeout)+1,r25 |
615 0356 8093 0000 sts SIO_Timeout,r24 |
616 035a 00C0 rjmp .L42 |
617 .L32: |
618 .LM80: |
619 035c 8091 0000 lds r24,UartState.1915 |
620 0360 8130 cpi r24,lo8(1) |
621 0362 01F0 breq .L37 |
622 0364 8130 cpi r24,lo8(1) |
623 0366 00F0 brlo .L36 |
624 0368 8230 cpi r24,lo8(2) |
625 036a 01F0 breq .+2 |
626 036c 00C0 rjmp .L43 |
627 036e 00C0 rjmp .L45 |
628 .L36: |
629 .LM81: |
630 0370 8091 0000 lds r24,SioTmp |
631 0374 8332 cpi r24,lo8(35) |
632 0376 01F4 brne .L39 |
633 0378 8091 0000 lds r24,NeuerDatensatzEmpfangen |
634 037c 8823 tst r24 |
635 037e 01F4 brne .L39 |
636 0380 81E0 ldi r24,lo8(1) |
637 0382 8093 0000 sts UartState.1915,r24 |
638 .L39: |
639 .LM82: |
640 0386 8091 0000 lds r24,SioTmp |
641 038a 8093 0000 sts RxdBuffer,r24 |
642 038e 81E0 ldi r24,lo8(1) |
643 0390 8093 0000 sts buf_ptr.1914,r24 |
644 .LM83: |
645 0394 8091 0000 lds r24,SioTmp |
646 0398 8093 0000 sts crc.1911,r24 |
647 039c 1092 0000 sts crc.1911+1,__zero_reg__ |
648 03a0 00C0 rjmp .L42 |
649 .L37: |
650 .LM84: |
651 03a2 82E0 ldi r24,lo8(2) |
652 03a4 8093 0000 sts UartState.1915,r24 |
653 .LM85: |
654 03a8 E42F mov r30,r20 |
655 03aa F0E0 ldi r31,lo8(0) |
656 03ac 8091 0000 lds r24,SioTmp |
657 03b0 E050 subi r30,lo8(-(RxdBuffer)) |
658 03b2 F040 sbci r31,hi8(-(RxdBuffer)) |
659 03b4 8083 st Z,r24 |
660 03b6 00C0 rjmp .L44 |
661 .L45: |
662 .LM86: |
663 03b8 E42F mov r30,r20 |
664 03ba F0E0 ldi r31,lo8(0) |
665 03bc 8091 0000 lds r24,SioTmp |
666 03c0 E050 subi r30,lo8(-(RxdBuffer)) |
667 03c2 F040 sbci r31,hi8(-(RxdBuffer)) |
668 03c4 8083 st Z,r24 |
669 .LM87: |
670 03c6 4436 cpi r20,lo8(100) |
671 03c8 00F4 brsh .L40 |
672 .L44: |
673 03ca 4F5F subi r20,lo8(-(1)) |
674 03cc 4093 0000 sts buf_ptr.1914,r20 |
675 03d0 00C0 rjmp .L41 |
676 .L40: |
677 .LM88: |
678 03d2 1092 0000 sts UartState.1915,__zero_reg__ |
679 .L41: |
680 .LM89: |
681 03d6 2091 0000 lds r18,SioTmp |
682 03da 8091 0000 lds r24,crc.1911 |
683 03de 9091 0000 lds r25,(crc.1911)+1 |
684 03e2 820F add r24,r18 |
685 03e4 911D adc r25,__zero_reg__ |
686 03e6 9093 0000 sts (crc.1911)+1,r25 |
687 03ea 8093 0000 sts crc.1911,r24 |
688 03ee 00C0 rjmp .L42 |
689 .L43: |
690 .LM90: |
691 03f0 1092 0000 sts UartState.1915,__zero_reg__ |
692 .L42: |
693 /* epilogue start */ |
694 .LM91: |
695 03f4 FF91 pop r31 |
696 03f6 EF91 pop r30 |
697 03f8 DF91 pop r29 |
698 03fa CF91 pop r28 |
699 03fc BF91 pop r27 |
700 03fe AF91 pop r26 |
701 0400 9F91 pop r25 |
702 0402 8F91 pop r24 |
703 0404 7F91 pop r23 |
704 0406 6F91 pop r22 |
705 0408 5F91 pop r21 |
706 040a 4F91 pop r20 |
707 040c 3F91 pop r19 |
708 040e 2F91 pop r18 |
709 0410 0F90 pop r0 |
710 0412 0FBE out __SREG__,r0 |
711 0414 0F90 pop r0 |
712 0416 1F90 pop __zero_reg__ |
713 0418 1895 reti |
714 .LFE6: |
716 .global WriteProgramData |
718 WriteProgramData: |
719 .LFB10: |
720 .LM92: |
721 .LVL48: |
722 /* prologue: function */ |
723 /* frame size = 0 */ |
724 /* epilogue start */ |
725 .LM93: |
726 041a 0895 ret |
727 .LFE10: |
729 .global DatenUebertragung |
731 DatenUebertragung: |
732 .LFB12: |
733 .LM94: |
734 /* prologue: function */ |
735 /* frame size = 0 */ |
736 .LM95: |
737 041c 8091 0000 lds r24,Debug_Timer |
738 0420 9091 0000 lds r25,(Debug_Timer)+1 |
739 0424 00D0 rcall CheckDelay |
740 0426 8823 tst r24 |
741 0428 01F0 breq .L50 |
742 042a 8091 0000 lds r24,UebertragungAbgeschlossen |
743 042e 8823 tst r24 |
744 0430 01F0 breq .L50 |
745 .LM96: |
746 0432 84E4 ldi r24,lo8(68) |
747 0434 6091 0000 lds r22,MeineSlaveAdresse |
748 0438 40E0 ldi r20,lo8(DebugOut) |
749 043a 50E0 ldi r21,hi8(DebugOut) |
750 043c 22E1 ldi r18,lo8(18) |
751 043e 00D0 rcall SendOutData |
752 .LM97: |
753 0440 82E3 ldi r24,lo8(50) |
754 0442 90E0 ldi r25,hi8(50) |
755 0444 00D0 rcall SetDelay |
756 0446 9093 0000 sts (Debug_Timer)+1,r25 |
757 044a 8093 0000 sts Debug_Timer,r24 |
758 .L50: |
759 044e 0895 ret |
760 .LFE12: |
762 .global UART_Init |
764 UART_Init: |
765 .LFB11: |
766 .LM98: |
767 /* prologue: function */ |
768 /* frame size = 0 */ |
769 .LM99: |
770 0450 88E1 ldi r24,lo8(24) |
771 0452 8AB9 out 42-32,r24 |
772 .LM100: |
773 0454 599A sbi 43-32,1 |
774 .LM101: |
775 0456 579A sbi 42-32,7 |
776 .LM102: |
777 0458 80E1 ldi r24,lo8(16) |
778 045a 89B9 out 41-32,r24 |
779 .LM103: |
780 045c 80E0 ldi r24,lo8(gs(uart_putchar)) |
781 045e 90E0 ldi r25,hi8(gs(uart_putchar)) |
782 0460 60E0 ldi r22,lo8(0) |
783 0462 70E0 ldi r23,hi8(0) |
784 0464 00D0 rcall fdevopen |
785 .LM104: |
786 0466 88EC ldi r24,lo8(200) |
787 0468 90E0 ldi r25,hi8(200) |
788 046a 00D0 rcall SetDelay |
789 046c 9093 0000 sts (Debug_Timer)+1,r25 |
790 0470 8093 0000 sts Debug_Timer,r24 |
791 .LM105: |
792 0474 8AE0 ldi r24,lo8(10) |
793 0476 00D0 rcall uart_putchar |
794 0478 82E4 ldi r24,lo8(66) |
795 047a 00D0 rcall uart_putchar |
796 047c 8CE4 ldi r24,lo8(76) |
797 047e 00D0 rcall uart_putchar |
798 0480 8AE3 ldi r24,lo8(58) |
799 0482 00D0 rcall uart_putchar |
800 .LM106: |
801 0484 86E5 ldi r24,lo8(86) |
802 0486 00D0 rcall uart_putchar |
803 0488 80E3 ldi r24,lo8(48) |
804 048a 00D0 rcall uart_putchar |
805 048c 8EE2 ldi r24,lo8(46) |
806 048e 00D0 rcall uart_putchar |
807 0490 84E3 ldi r24,lo8(52) |
808 0492 00D0 rcall uart_putchar |
809 0494 81E3 ldi r24,lo8(49) |
810 0496 00D0 rcall uart_putchar |
811 .LM107: |
812 0498 8AE0 ldi r24,lo8(10) |
813 049a 00D0 rcall uart_putchar |
814 049c 88E4 ldi r24,lo8(72) |
815 049e 00D0 rcall uart_putchar |
816 04a0 87E5 ldi r24,lo8(87) |
817 04a2 00D0 rcall uart_putchar |
818 04a4 8AE3 ldi r24,lo8(58) |
819 04a6 00D0 rcall uart_putchar |
820 04a8 81E3 ldi r24,lo8(49) |
821 04aa 00D0 rcall uart_putchar |
822 04ac 8EE2 ldi r24,lo8(46) |
823 04ae 00D0 rcall uart_putchar |
824 04b0 8091 0000 lds r24,HwVersion |
825 04b4 8A5D subi r24,lo8(-(38)) |
826 04b6 00D0 rcall uart_putchar |
827 .LM108: |
828 04b8 8AE0 ldi r24,lo8(10) |
829 04ba 00D0 rcall uart_putchar |
830 04bc 81E4 ldi r24,lo8(65) |
831 04be 00D0 rcall uart_putchar |
832 04c0 84E4 ldi r24,lo8(68) |
833 04c2 00D0 rcall uart_putchar |
834 04c4 82E5 ldi r24,lo8(82) |
835 04c6 00D0 rcall uart_putchar |
836 04c8 8AE3 ldi r24,lo8(58) |
837 04ca 00D0 rcall uart_putchar |
838 04cc 8091 0000 lds r24,MotorAdresse |
839 04d0 805D subi r24,lo8(-(48)) |
840 04d2 00D0 rcall uart_putchar |
841 /* epilogue start */ |
842 .LM109: |
843 04d4 0895 ret |
844 .LFE11: |
846 .global SIO_Sollwert |
847 .global SIO_Sollwert |
848 .section .bss |
851 SIO_Sollwert: |
852 0000 00 .skip 1,0 |
853 .global SioTmp |
854 .global SioTmp |
857 SioTmp: |
858 0001 00 .skip 1,0 |
859 .global NeuerDatensatzEmpfangen |
860 .global NeuerDatensatzEmpfangen |
863 NeuerDatensatzEmpfangen: |
864 0002 00 .skip 1,0 |
865 .global UebertragungAbgeschlossen |
866 .data |
869 UebertragungAbgeschlossen: |
870 0000 01 .byte 1 |
871 .global MotorTest |
872 .global MotorTest |
873 .section .bss |
876 MotorTest: |
877 0003 0000 0000 .skip 6,0 |
877 0000 |
878 .global AnzahlEmpfangsBytes |
879 .global AnzahlEmpfangsBytes |
882 AnzahlEmpfangsBytes: |
883 0009 00 .skip 1,0 |
884 .lcomm UartState.1915,1 |
885 .lcomm buf_ptr.1914,1 |
886 .lcomm crc2.1913,1 |
887 .lcomm crc1.1912,1 |
888 .lcomm crc.1911,2 |
889 .lcomm ptr.1846,2 |
890 .comm MeineSlaveAdresse,1,1 |
891 .comm Debug_Timer,2,1 |
892 .comm DebugOut,18,1 |
893 .comm SendeBuffer,100,1 |
894 .comm RxdBuffer,100,1 |
991 .Letext0: |
DEFINED SYMBOLS |
*ABS*:00000000 uart.c |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:2 *ABS*:0000003f __SREG__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:3 *ABS*:0000003e __SP_H__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:4 *ABS*:0000003d __SP_L__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:5 *ABS*:00000034 __CCP__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:6 *ABS*:00000000 __tmp_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:7 *ABS*:00000001 __zero_reg__ |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:18 .text:00000000 __vector_13 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:39 .text:00000014 SendUart |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:869 .data:00000000 UebertragungAbgeschlossen |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:888 .bss:00000010 ptr.1846 |
*COM*:00000064 SendeBuffer |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:93 .text:00000062 Decode64 |
*COM*:00000064 RxdBuffer |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:223 .text:00000112 AddCRC |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:297 .text:0000016e SendOutData |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:443 .text:00000238 uart_putchar |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:476 .text:00000252 __vector_11 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:857 .bss:00000001 SioTmp |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:884 .bss:0000000b buf_ptr.1914 |
.bss:0000000a UartState.1915 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:887 .bss:0000000e crc.1911 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:886 .bss:0000000d crc1.1912 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:885 .bss:0000000c crc2.1913 |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:882 .bss:00000009 AnzahlEmpfangsBytes |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:876 .bss:00000003 MotorTest |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:851 .bss:00000000 SIO_Sollwert |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:863 .bss:00000002 NeuerDatensatzEmpfangen |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:718 .text:0000041a WriteProgramData |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:731 .text:0000041c DatenUebertragung |
*COM*:00000002 Debug_Timer |
*COM*:00000001 MeineSlaveAdresse |
*COM*:00000012 DebugOut |
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccND1o1s.s:764 .text:00000450 UART_Init |
UNDEFINED SYMBOLS |
MotorAdresse |
SIO_Timeout |
CheckDelay |
SetDelay |
fdevopen |
HwVersion |
__do_copy_data |
__do_clear_bss |
/branches/V0.42_addr9-12_fix_ligi/BLMC.c |
---|
0,0 → 1,235 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + Nur für den privaten Gebrauch |
// + Copyright (c) 12.2007 Holger Buss |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile unsigned char Phase = 0,ShadowTCCR1A = 0; |
volatile unsigned char CompFreigabeTimer = 100; |
volatile unsigned char CompInterruptFreigabe = 0; |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW2) |
//############################################################################ |
{ |
} |
//############################################################################ |
// + Interruptroutine |
// + Wird durch den Analogkomperator ausgelöst |
// + Dadurch wird das Kommutieren erzeugt |
SIGNAL(SIG_COMPARATOR) |
//############################################################################ |
{ |
unsigned char sense = 0; |
do |
{ |
if(SENSE_H) sense = 1; else sense = 0; |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
if(sense) |
{ |
STEUER_C_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_FALLING_INT; |
SENSE_B; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_L; |
} |
break; |
case 1: |
STEUER_C_L; |
if(!sense) |
{ |
STEUER_B_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_H; |
} |
break; |
case 2: |
STEUER_B_H; |
if(sense) |
{ |
STEUER_A_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_L; |
} |
break; |
case 3: |
STEUER_A_L; |
if(!sense) |
{ |
STEUER_C_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_B; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_H; |
} |
break; |
case 4: |
STEUER_C_H; |
if(sense) |
{ |
STEUER_B_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_L; |
} |
break; |
case 5: |
STEUER_B_L; |
if(!sense) |
{ |
STEUER_A_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_RISING_INT; |
Phase = 0; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_H; |
} |
break; |
} |
} |
while((SENSE_L && sense) || (SENSE_H && !sense)); |
ZeitZumAdWandeln = 0; |
} |
//############################################################################ |
// |
void Manuell(void) |
//############################################################################ |
{ |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
STEUER_B_L; |
SENSE_C; |
SENSE_RISING_INT; |
break; |
case 1: |
STEUER_A_H; |
STEUER_C_L; |
SENSE_B; |
SENSE_FALLING_INT; |
break; |
case 2: |
STEUER_B_H; |
STEUER_C_L; |
SENSE_A; |
SENSE_RISING_INT; |
break; |
case 3: |
STEUER_B_H; |
STEUER_A_L; |
SENSE_C; |
SENSE_FALLING_INT; |
break; |
case 4: |
STEUER_C_H; |
STEUER_A_L; |
SENSE_B; |
SENSE_RISING_INT; |
break; |
case 5: |
STEUER_C_H; |
STEUER_B_L; |
SENSE_A; |
SENSE_FALLING_INT; |
break; |
} |
} |
/branches/V0.42_addr9-12_fix_ligi/BLMC.h |
---|
0,0 → 1,97 |
/*############################################################################ |
############################################################################*/ |
#ifndef BLMC_H_ |
#define BLMC_H_ |
extern volatile unsigned char Phase; |
extern volatile unsigned char ShadowTCCR1A; |
extern volatile unsigned char CompInterruptFreigabe; |
void Blc(void); |
void Manuell(void); |
// anselm |
/* |
#define COM1A ((0 << COM1A0) | (1 << COM1A1)) // COM1A-> OC1A non inverting mode |
#define COM1B ((0 << COM1B0) | (1 << COM1B1)) // COM1B-> OC1B non inverting mode |
#define COM2 ((0 << COM20) | (1 << COM21)) // COM2-> OC2 non inverting mode |
#ifdef _32KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> fast PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (1 << WGM21) | (1 << CS20)) // WGM20:21-> fast PWM, no prescale |
#endif |
#ifdef _16KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> phase corr, PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (0 << WGM21) | (1 << CS20)) // WGM20:21-> phase corr. PWM, no prescale |
#endif |
#define PWM_C_ON {TCCR1A = COM1A | WGM1 | COM1B; TCCR2 = WGMCS2; |
DDRB = 0x02;} // Steuer_C+ output |
#define PWM_B_ON {TCCR1A = COM1B | WGM1 | COM1A; TCCR2 = WGMCS2; \ |
DDRB = 0x04;} // Steuer_B+ output |
#define PWM_A_ON {TCCR1A = WGM1; TCCR2 = COM2 | WGMCS2; \ |
DDRB = 0x08;} // Steuer_A+ output |
#define PWM_OFF {TCCR1A = WGM1; \ |
TCCR2 = WGMCS2; \ |
PORTB &= ~0x0E; DDRB = 0x0E;} // OC1x & OC2 disconnected, Steuer_X+ output low |
// anselm |
*/ |
#ifdef _32KHZ |
#define PWM_C_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xAD; TCCR2 = 0x69;DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x0D; TCCR2 = 0x49;PORTC &= ~0x0E;} |
#endif |
#ifdef _16KHZ |
// #define PWM_C_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0A;} |
// #define PWM_B_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0C;} |
// #define PWM_A_ON {TCCR1A = 0xA2; TCCR2 = 0x61; DDRB = 0x08;} |
// #define PWM_C_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0A;} else { TCCR1A = 0x81; DDRB = 0x0E;}} |
// #define PWM_B_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0C;} else { TCCR1A = 0x21; DDRB = 0x0E;}} |
// #define PWM_A_ON {TCCR2 = 0x61; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x08;} else { TCCR1A = 0x01; DDRB = 0x0E;}} |
#define PWM_C_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x02;} |
#define PWM_B_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x04;} |
#define PWM_A_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x08;} |
// #define PWM_C_ON {TCCR1A = 0x82; TCCR2 = 0x41; PORTB &= ~0x04; DDRB = 0x0E;} |
// #define PWM_B_ON {TCCR1A = 0x22; TCCR2 = 0x41; PORTB &= ~0x02; DDRB = 0x0E;} |
// #define PWM_A_ON {TCCR1A = 0x02; TCCR2 = 0x61; PORTB &= ~0x06; DDRB = 0x0E;} |
#define PWM_OFF {OCR1A = 0; OCR1B = 0; OCR2 = 0; TCCR1A = 0x01; TCCR2 = 0x41; DDRB = 0x0E; PORTB &= ~0x0E;} |
#endif |
#define STEUER_A_H {PWM_A_ON} |
#define STEUER_B_H {PWM_B_ON} |
#define STEUER_C_H {PWM_C_ON} |
#define STEUER_A_L {PORTD &= ~0x30; PORTD |= 0x08;} |
#define STEUER_B_L {PORTD &= ~0x28; PORTD |= 0x10;} |
#define STEUER_C_L {PORTD &= ~0x18; PORTD |= 0x20;} |
#define STEUER_OFF {PORTD &= ~0x38; PWM_OFF; } |
#define FETS_OFF {PORTD &= ~0x38; PORTB &= ~0x0E; } |
#define SENSE_A ADMUX = 0 | IntRef; |
#define SENSE_B ADMUX = 1 | IntRef; |
#define SENSE_C ADMUX = 2 | IntRef; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
#define ENABLE_SENSE_INT {CompInterruptFreigabe = 1;ACSR |= 0x0A; } |
#define DISABLE_SENSE_INT {CompInterruptFreigabe = 0; ACSR &= ~0x08; } |
#define SENSE_FALLING_INT ACSR &= ~0x01 |
#define SENSE_RISING_INT ACSR |= 0x03 |
#define SENSE_TOGGLE_INT ACSR &= ~0x03 |
#endif //BLMC_H_ |
/branches/V0.42_addr9-12_fix_ligi/BL_Ctrl.pnproj |
---|
0,0 → 1,0 |
<Project name="avr_ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="analog.h"></File><File path="analog.c"></File><File path="PPM_Decode.c"></File><File path="PPM_Decode.h"></File><File path="twislave.c"></File><File path="twislave.h"></File><File path="BLMC.c"></File><File path="BLMC.h"></File></Project> |
/branches/V0.42_addr9-12_fix_ligi/BL_Ctrl.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="avr_ctrl" x="true"></e></ViewState></pd> |
/branches/V0.42_addr9-12_fix_ligi/PPM_Decode.c |
---|
0,0 → 1,76 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned int PPM_Signal = 0; |
volatile unsigned char Timer1Overflow = 0; |
volatile unsigned char PPM_Timeout = 0, anz_ppm_werte = 0; // Ungültig, wenn Null |
//############################################################################ |
// |
void InitPPM(void) |
//############################################################################ |
{ |
TCCR1B |= (1<<ICES1)|(1<<ICNC1); |
ICP_POS_FLANKE; |
ICP_INT_ENABLE; |
TIMER1_INT_ENABLE; |
} |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW1) |
//############################################################################ |
{ |
Timer1Overflow++; |
} |
//############################################################################ |
// |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int tim_alt; |
static unsigned int ppm; |
if(TCCR1B & (1<<ICES1)) // Positive Flanke |
{ |
Timer1Overflow = 0; |
tim_alt = ICR1; |
ICP_NEG_FLANKE; |
PPM_Timeout = 100; |
} |
else // Negative Flanke |
{ |
ICP_POS_FLANKE; |
#ifdef _32KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 32; |
#endif |
#ifdef _16KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 32; |
#endif |
if(ppm < 280) ppm = 280; |
ppm -= 280; |
if(PPM_Signal < ppm) PPM_Signal++; |
else if(PPM_Signal > ppm) PPM_Signal--; |
if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern |
PPM_Signal = ppm; |
if(anz_ppm_werte < 255) anz_ppm_werte++; |
ZeitZumAdWandeln = 1; |
} |
} |
//############################################################################ |
// |
SIGNAL(SIG_INTERRUPT0) |
//############################################################################ |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
} |
/branches/V0.42_addr9-12_fix_ligi/PPM_Decode.h |
---|
0,0 → 1,27 |
/*############################################################################ |
############################################################################*/ |
extern volatile unsigned int PPM_Signal; |
extern volatile unsigned char PPM_Timeout, anz_ppm_werte; |
void InitPPM(void); |
#define INT0_ENABLE GIMSK |= 0x40 |
#define INT0_DISABLE GIMSK &= ~0x40 |
#define TIM0_START TIMSK |= 0x01 |
#define TIM0_STOPP TIMSK &= ~0x01 |
#define ICP_INT_ENABLE TIMSK |= 0x20 |
#define ICP_INT_DISABLE TIMSK &= ~0x20 |
#define TIMER1_INT_ENABLE TIMSK |= 0x04 |
#define TIMER1_INT_DISABLE TIMSK &= ~0x04 |
#define TIMER2_INT_ENABLE TIMSK |= 0x40 |
#define TIMER2_INT_DISABLE TIMSK &= ~0x40 |
#define INT0_POS_FLANKE MCUCR |= 0x01 |
#define INT0_ANY_FLANKE MCUCR |= 0x01 |
#define INT0_NEG_FLANKE MCUCR &= ~0x01 |
#define CLR_INT0_FLAG GIFR &= ~0x40 |
#define INIT_INT0_FLANKE MCUCR &= ~0x03; MCUCR |= 0x02; |
#define TIMER0_PRESCALER TCCR0 |
#define ICP_POS_FLANKE TCCR1B |= (1<<ICES1) |
#define ICP_NEG_FLANKE TCCR1B &= ~(1<<ICES1) |
/branches/V0.42_addr9-12_fix_ligi/analog.c |
---|
0,0 → 1,77 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
//############################################################################ |
//Init ADC |
void ADC_Init(void) |
//############################################################################ |
{ |
ADCSRA = 0xA6; // Free Run & 1MHZ |
ADMUX = 7 | IntRef; // Kanal 7 |
ADCSRA |= 0x40; // Start |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void AdConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = 0x06 | IntRef; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = 0x06 | IntRef; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
i = ADCW * 4; |
// if(i > 300) i = 300; |
Strom = (i + Strom * 7) / 8; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
//############################################################################ |
//Strom Analogwerte lesen |
unsigned int MessAD(unsigned char channel) |
//############################################################################ |
{ |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
channel |= IntRef; |
ADMUX = channel; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = channel; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
return(ADCW); |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void FastADConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
i = MessAD(6) * 4; |
// i = ADCW * 4; |
if(i > 200) i = 200; |
Strom = i;//(i + Strom * 1) / 2; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
/branches/V0.42_addr9-12_fix_ligi/analog.h |
---|
0,0 → 1,6 |
extern void ADC_Init(void); |
extern void GetAnalogWerte(void); |
extern void AdConvert(void); |
extern void FastADConvert(void); |
/branches/V0.42_addr9-12_fix_ligi/avr.mak |
---|
0,0 → 1,129 |
# TASKING EDE (Windows based integrated Embedded Development Environment) |
# |
# This makefile has been generated by TASKING EDE |
# |
# Toolchain: TASKING C for C166/ST10 v6.0 r4 |
# |
BINDIR = c:\c166\bin |
INCDIR = c:\c166\include |
LIBDIR = c:\c166\lib |
M166INC = c:\c166\include |
export M166INC |
CC166BIN = c:\c166\bin |
export CC166BIN |
PROJ = avr |
PROJDIR = c:\winavr\projects\flug\bl_mc_0_14 |
PRODDIR = c:\c166 |
OUTDIR = |
OPT_CC = -Ic:\c166\include -xmifp -Ms -FFSC -Ot -OB -OE -zautobitastruct-4 -zautobita-0 -zswitch_tabmem_default -s -wstrict -g -zvolatile_union -A1 -O1 |
OPT_MPP = DEF(_CPU,167) DEF(_EXT,1) DEF(__XPEN,0) DEF(__WRCFG,0) DEF(__CLKEN,0) DEF(__BYTDIS,0) DEF(__ROMEN,0) DEF(__RDYEN0,0) DEF(__SGTDIS,0) DEF(__STKSZ,0) DEF(__MCTC,1) DEF(__RWDC0,0) DEF(__MTTC0,0) DEF(__ALECTL0,0) DEF(__BUSACT0,1) DEF(__RDYEN0,0) DEF(__CSREN0,0) DEF(__CSWEN0,0) DEF(__BUSACT1,0) DEF(__BUSACT2,0) DEF(__BUSACT3,0) DEF(__BUSACT4,0) DEF(EVA,1) DEF(EX_AB,0) DEF(FLOAT,1) DEF(BIT_INIT,0) DEF(MODEL,SMALL) DEF(_USRSTACK,0) DEF(_SINGLE_FP,0) WA(1) |
OPT_AS = PL(60) PW(132) TA(8) WA(1) CHECKCPU16 CHECKBUS18 EX NOM166 SN(reg167.def) |
OPT_LC = _avr.ilo -cf -Ms -xmifp |
OPT_XVW = --single_instance -tcfg sim167.cfg -i -a 100 -b 200 -c 32 -s 26 |
all : "$(PROJ).abs" |
"uart.src" : "uart.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"uart.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "uart.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"uart.obj" : "uart.src" |
"c:\c166\bin\a166.exe" "uart.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"analog.src" : "analog.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"analog.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "analog.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"analog.obj" : "analog.src" |
"c:\c166\bin\a166.exe" "analog.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"interrupt4.src" : "interrupt4.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"interrupt4.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "interrupt4.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"interrupt4.obj" : "interrupt4.src" |
"c:\c166\bin\a166.exe" "interrupt4.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"main.src" : "main.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"main.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "main.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"main.obj" : "main.src" |
"c:\c166\bin\a166.exe" "main.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"ppm_decode.src" : "ppm_decode.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"ppm_decode.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "ppm_decode.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"ppm_decode.obj" : "ppm_decode.src" |
"c:\c166\bin\a166.exe" "ppm_decode.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"printf_p.src" : "printf_p.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"printf_p.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "printf_p.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"printf_p.obj" : "printf_p.src" |
"c:\c166\bin\a166.exe" "printf_p.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"timer0.src" : "timer0.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"timer0.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "timer0.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"timer0.obj" : "timer0.src" |
"c:\c166\bin\a166.exe" "timer0.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"twislave.src" : "twislave.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"twislave.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "twislave.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"twislave.obj" : "twislave.src" |
"c:\c166\bin\a166.exe" "twislave.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"$(PROJ).out" : "uart.obj" "analog.obj" "interrupt4.obj" "main.obj" "ppm_decode.obj" |
"$(PROJ).out" : "printf_p.obj" "timer0.obj" "twislave.obj" "_avr.ilo" |
"c:\c166\bin\cc166.exe" -o $@ -f <<EOF |
${separate "\n" $(match .obj $!) $(match .lno $!) $(match .lib $!) $(OPT_LC)} |
EOF |
"$(PROJ).abs" : "$(PROJ).out" |
"c:\c166\bin\ieee166.exe" $! $@ |
# Copyright (c) 2001 Altium, Ltd. |
# Serial: 979910-094 |
# EDE Version: 2.7 r5 |
/branches/V0.42_addr9-12_fix_ligi/avr.opm |
---|
0,0 → 1,4 |
-G "C:\WinAVR\Projects\Flug\BL_MC_0_14\" |
-err "avr.err" |
-r |
-f "avr.mak" |
/branches/V0.42_addr9-12_fix_ligi/avr_ctrl.psp |
---|
0,0 → 1,16 |
;Codewright Project Space File (do not remove or modify this line) |
[State] |
StateWindowFrame=10,18,939,1018,0x43097fca |
ProjSpaceFlags=0x00000000, 1 |
ProjViewSetShow=Abb |
[Project] |
ConfigSetUserWorkspace='' |
ConfigSetUserWorkspaceParser='' |
ConfigSetUserWorkspaceTimeStamp=0 |
ConfigSetUserWorkspaceAutoSync=0 |
[Project.".\avr.pjt"] |
[Project."..\Flight-Ctrl_V0_05\AVR.pjt"] |
/branches/V0.42_addr9-12_fix_ligi/main.c |
---|
0,0 → 1,774 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + Nur für den privaten Gebrauch |
// + Copyright (c) 12.2007 Holger Buss |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, our webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int PWM = 0; |
unsigned int Strom = 0,RuheStrom; //ca. in 0,1A |
unsigned char Strom_max = 0; |
unsigned char Mittelstrom = 0; |
unsigned int Drehzahl = 0; // in 100UPM 60 = 6000 |
unsigned int KommutierDelay = 10; |
unsigned int I2C_Timeout = 0; |
unsigned int SIO_Timeout = 0; |
unsigned int SollDrehzahl = 0; |
unsigned int IstDrehzahl = 0; |
unsigned int DrehZahlTabelle[256];//vorberechnete Werte zur Drehzahlerfassung |
unsigned char ZeitFuerBerechnungen = 1; |
unsigned char MotorAnwerfen = 0; |
unsigned char MotorGestoppt = 1; |
unsigned char MaxPWM = MAX_PWM; |
unsigned int CntKommutierungen = 0; |
unsigned int SIO_Drehzahl = 0; |
unsigned char ZeitZumAdWandeln = 1; |
unsigned char MotorAdresse = 1; |
unsigned char PPM_Betrieb = 1; |
unsigned char HwVersion; |
unsigned char IntRef = 0; |
unsigned int MinUpmPulse; |
//############################################################################ |
// |
void SetPWM(void) |
//############################################################################ |
{ |
unsigned char tmp_pwm; |
tmp_pwm = PWM; |
if(tmp_pwm > MaxPWM) // Strombegrenzung |
{ |
tmp_pwm = MaxPWM; |
PORTC |= ROT; |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
PORTD &= ~0x38; |
PORTC |= ROT; |
DebugOut.Analog[6]++; |
Strom--; |
} |
else |
{ |
#ifdef _32KHZ |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
#ifdef _16KHZ |
//OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
} |
//GRN_ON; |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
DebugOut.Analog[4] = OCR2; |
// DebugOut.Analog[5] = PWM; |
} |
//############################################################################ |
// |
void PWM_Init(void) |
//############################################################################ |
{ |
PWM_OFF; |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
/* TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
*/ |
} |
//############################################################################ |
// |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
while((TCNT0 - dauer) & 0x80); |
} |
void RotBlink(unsigned char anz) |
{ |
sei(); // Interrupts ein |
while(anz--) |
{ |
PORTC |= ROT; |
Delay_ms(300); |
PORTC &= ~ROT; |
Delay_ms(300); |
} |
Delay_ms(1000); |
} |
//############################################################################ |
// |
char Anwerfen(unsigned char pwm) |
//############################################################################ |
{ |
unsigned long timer = 300,i; |
DISABLE_SENSE_INT; |
PWM = 5; |
SetPWM(); |
Manuell(); |
// Delay_ms(200); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) |
{ |
FastADConvert(); |
if(Strom > 120) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
} |
PWM = pwm; |
while(1) |
{ |
for(i=0;i<timer; i++) |
{ |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
Wait(100); // warten |
} |
DebugAusgaben(); |
FastADConvert(); |
if(Strom > 60) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
timer-= timer/15+1; |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return(1); } |
Manuell(); |
Phase++; |
Phase %= 6; |
AdConvert(); |
PWM = pwm; |
SetPWM(); |
if(SENSE) |
{ |
PORTD ^= GRUEN; |
} |
} |
} |
/* |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
*/ |
#define TEST_STROMGRENZE 120 |
unsigned char DelayM(unsigned int timer) |
{ |
while(timer--) |
{ |
FastADConvert(); |
if(Strom > (TEST_STROMGRENZE + RuheStrom)) |
{ |
FETS_OFF; |
return(1); |
} |
} |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
{ |
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
return(0); |
} |
/* |
void ShowSense(void) |
{ |
if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
*/ |
#define HIGH_A_EIN PORTB |= 0x08 |
#define HIGH_B_EIN PORTB |= 0x04 |
#define HIGH_C_EIN PORTB |= 0x02 |
#define LOW_A_EIN PORTD |= 0x08 |
#define LOW_B_EIN PORTD |= 0x10 |
#define LOW_C_EIN PORTD |= 0x20 |
void MotorTon(void) |
//############################################################################ |
{ |
unsigned char ADR_TAB[13] = {0,0,2,1,3,4,5,6,7,8,9,10,11}; |
unsigned int timer = 300,i; |
unsigned int t = 0; |
unsigned char anz = 0,MosfetOkay = 0, grenze = 50; |
PORTC &= ~ROT; |
Delay_ms(300 * ADR_TAB[MotorAdresse]); |
DISABLE_SENSE_INT; |
cli();//Globale Interrupts Ausschalten |
uart_putchar('\n'); |
STEUER_OFF; |
Strom_max = 0; |
DelayM(50); |
RuheStrom = Strom_max; |
// uart_putchar(RuheStrom + 'A'); |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Strom = 0; |
/* |
LOW_B_EIN; |
HIGH_A_EIN; |
if(DelayM(3)) |
{ |
anz = 1; |
uart_putchar('1'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_A_EIN; |
HIGH_B_EIN; |
if(DelayM(3)) |
{ |
anz = 2; |
uart_putchar('2'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_B_EIN; // Low C ein |
HIGH_C_EIN; // High B ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('3'); |
} |
FETS_OFF; |
Delay(1000); |
LOW_A_EIN; // Low A ein; und A gegen C |
HIGH_C_EIN; // High C ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('7'); |
} |
FETS_OFF; |
DelayM(10000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
*/ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ LOW-Mosfets auf Schalten und Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_A_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_A_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;} |
Delay(5); |
} |
Delay(10000); |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_B_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_B_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); FETS_OFF;break;} |
Delay(5); |
} |
Strom = 0; |
Delay(10000); |
for(i=0;i<t;i++) |
{ |
LOW_C_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_C_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); FETS_OFF; break;} |
Delay(5); |
} |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_A; |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
LOW_C_EIN; // Low C ein |
Strom = 0; |
#define TONDAUER 40000 |
#define SOUND_E 1 // 1 |
#define SOUND1_A 300 |
#define SOUND2_A 330 |
#define SOUND3_A 360 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_A_EIN; // Test A |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
FETS_OFF; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Low-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// SENSE_B; |
LOW_A_EIN; // Low A ein |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(0) > 128) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
//++++++++++++++++++++++++++++++++++++ |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(2) > 128) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(1) > 128) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
sei();//Globale Interrupts Einschalten |
// Delay_ms(250 * MotorAdresse); |
/* |
LOW_A_EIN; // Low B ein |
#define SOUND8_A 650 |
for(i=0; i<(TONDAUER / SOUND8_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
PORTB = 0; |
Delay(SOUND8_A); |
} |
*/ |
Delay_ms(300 * (4-ADR_TAB[MotorAdresse])); |
if(!(MosfetOkay & 0x01)) { anz = 1; UDR='A'; } else |
if(!(MosfetOkay & 0x02)) { anz = 2; UDR='B'; } else |
if(!(MosfetOkay & 0x04)) { anz = 3; UDR='C'; } else |
if(!(MosfetOkay & 0x08)) { anz = 4; UDR='a'; } else |
if(!(MosfetOkay & 0x10)) { anz = 5; UDR='b'; } else |
if(!(MosfetOkay & 0x20)) { anz = 6; UDR='c'; } |
// if(anz) Delay_ms(1000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
RotBlink(anz); |
uart_putchar('.'); |
} |
//############################################################################ |
// |
unsigned char SollwertErmittlung(void) |
//############################################################################ |
{ |
static unsigned int sollwert = 0; |
unsigned int ppm; |
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
PPM_Betrieb = 0; |
ICP_INT_DISABLE; |
PORTC &= ~ROT; |
} |
else |
if(anz_ppm_werte > 20) // es gibt gültige PPM-Daten |
{ |
PPM_Betrieb = 1; |
ppm = PPM_Signal; |
if(ppm > 300) ppm = 0; // ungültiges Signal |
if(ppm > 200) ppm = 200; |
if(ppm <= MIN_PPM) sollwert = 0; |
else |
{ |
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM); |
} |
PORTC &= ~ROT; |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
PORTC |= ROT; |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
PPM_Betrieb = 0; |
PORTC &= ~ROT; |
ICP_INT_DISABLE; |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
return(sollwert); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
char altPhase = 0; |
int test = 0; |
unsigned int Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
DDRC = 0x08; |
PORTC = 0x08; |
DDRD = 0x3A; |
PORTD = 0x00; |
DDRB = 0x0E; |
PORTB = 0x31; |
#define ADRESSOFFSET 0 |
#if (MOTORADRESSE == 0) |
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl |
for(test=0;test<500;test++); |
if(PINB & ADR1) |
{ |
if (PINB & ADR2) MotorAdresse = 1 + ADRESSOFFSET; |
else MotorAdresse = 2 + ADRESSOFFSET; |
} |
else |
{ |
if (PINB & ADR2) MotorAdresse = 3 + ADRESSOFFSET; |
else MotorAdresse = 4 + ADRESSOFFSET; |
} |
HwVersion = 11; |
#else |
MotorAdresse = MOTORADRESSE; |
HwVersion = 10; |
#endif |
if(PIND & 0x80) {HwVersion = 12; IntRef = 0xc0;} |
DDRD = 0xBA; |
UART_Init(); |
Timer0_Init(); |
sei();//Globale Interrupts Einschalten |
// Am Blinken erkennt man die richtige Motoradresse |
/* |
for(test=0;test<5;test++) |
{ |
if(test == MotorAdresse) PORTD |= GRUEN; |
Delay_ms(150); |
PORTD &= ~GRUEN; |
Delay_ms(250); |
} |
Delay_ms(500); |
*/ |
// UART_Init(); // war doppelt |
PWM_Init(); |
InitIC2_Slave(0x50); |
InitPPM(); |
Blink = SetDelay(101); |
Blink2 = SetDelay(102); |
MinUpmPulse = SetDelay(103); |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)) |
{ |
if(SollwertErmittlung()) break; |
} |
GRN_ON; |
PWM = 0; |
SetPWM(); |
SFIOR = 0x08; // Analog Comperator ein |
ADMUX = 1; |
MinUpmPulse = SetDelay(10); |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
if(!SollwertErmittlung()) MotorTon(); |
//MotorTon(); |
PORTB = 0x31; // Pullups wieder einschalten |
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung |
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder |
while (1) |
{ |
//ShowSense(); |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt |
{ |
MotorGestoppt = 0; |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
MinUpmPulse = SetDelay(250); // Timeout, falls ein Motor stehen bleibt |
altPhase = Phase; |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!PWM) // Sollwert == 0 |
{ |
MotorAnwerfen = 0; // kein Startversuch |
ZeitFuerBerechnungen = 0; |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(MotorGestopptTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
STEUER_OFF; |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
MotorGestopptTimer = SetDelay(1500); |
} |
if(MotorGestoppt && !TEST_SCHUB) PWM = 0; |
SetPWM(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
{ |
if(MotorGestoppt) |
{ |
// GRN_ON; |
FastADConvert(); |
} |
if(SIO_DEBUG) |
{ |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
} |
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung |
if(CheckDelay(MittelstromTimer)) |
{ |
MittelstromTimer = SetDelay(50); // alle 50ms |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
else if(Mittelstrom > Strom) Mittelstrom--; |
if(Strom > MAX_STROM) MaxPWM -= MaxPWM / 32; |
if((Mittelstrom > LIMIT_STROM))// Strom am Limit? |
{ |
if(MaxPWM) MaxPWM--;// dann die Maximale PWM herunterfahren |
PORTC |= ROT; |
} |
else |
{ |
if(MaxPWM < MAX_PWM) MaxPWM++; |
} |
} |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
{ |
DrehzahlMessTimer = SetDelay(10); |
SIO_Drehzahl = CntKommutierungen;//(6 * CntKommutierungen) / (POLANZAHL / 2); |
CntKommutierungen = 0; |
// if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
} |
#if TEST_SCHUB == 1 |
{ |
if(CheckDelay(TestschubTimer)) |
{ |
TestschubTimer = SetDelay(1500); |
switch(test) |
{ |
case 0: PWM = 50; test++; break; |
case 1: PWM = 130; test++; break; |
case 2: PWM = 60; test++; break; |
case 3: PWM = 140; test++; break; |
case 4: PWM = 150; test = 0; break; |
default: test = 0; |
} |
} |
} |
#endif |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
{ |
MotorGestoppt = 1; |
DISABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
if(MotorAnwerfen) |
{ |
PORTC &= ~ROT; |
Strom_max = 0; |
MotorAnwerfen = 0; |
if(Anwerfen(10)) |
{ |
// GRN_ON; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(20); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 15; |
SetPWM(); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) // kurz Durchstarten |
{ |
if(Strom > LIMIT_STROM/2) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
MotorAnwerfen = 1; |
} |
} |
// Drehzahlmessung wieder aufsetzen |
DrehzahlMessTimer = SetDelay(50); |
altPhase = 7; |
} |
else if(SollwertErmittlung()) MotorAnwerfen = 1; |
} |
} |
} // ZeitFuerBerechnungen |
} // while(1) - Hauptschleife |
} |
/branches/V0.42_addr9-12_fix_ligi/main.elf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/V0.42_addr9-12_fix_ligi/main.h |
---|
0,0 → 1,142 |
#ifndef _MAIN_H |
#define _MAIN_H |
//#define MOTORADRESSE 0 // Adresse (1-4) 0 = Motoradresse über Lötjumper auf BL-Ctrl V1.1 |
#define MANUELL_PWM 0 // zur manuellen Vorgabe der PWM Werte: 0-255 |
#define TEST_MANUELL 0 // zum Testen der Hardware ohne Kommutierungsdetektion Werte: 0-255 (PWM) |
#define TEST_SCHUB 0 // Erzeugt ein Schubmuster Werte: 0 = normal 1 = Test |
#define POLANZAHL 12 // Anzahl der Pole (Magnete) Wird nur zur Drehzahlausgabe über Debug gebraucht |
#define MAX_PWM 255 |
#define MIN_PWM 3 |
#define MIN_PPM 10 // ab hier (PPM-Signal) schaltet der Regler erst ein |
#define FILTER_PPM 7 // wie stark soll das PPM-Signal gefiltert werden (Werte: 0-30)? |
#define SIO_DEBUG 0 // Testwertausgaben auf der seriellen Schnittstelle |
#define X3D_SIO 0 // serielles Protokoll des X3D (38400Bd) Achtung: dann muss SIO_DEBUG = 0 sein |
#define _16KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define _32KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define FDD6637_IRLR7843 1 // bessere MosFet bestückt? bewirkt höhere Stromgrenzen |
#ifdef _16KHZ |
#if FDD_IRLR == 1 // bessere Fets = mehr Strom zulassen |
#define MAX_STROM 200 // ab ca. 20A PWM ausschalten |
#define LIMIT_STROM 120 // ab ca. 12A PWM begrenzen |
#else |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 65 // ab ca. 6,5A PWM begrenzen |
#endif |
#endif |
#ifdef _32KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 50 // ab ca. 5,0A PWM begrenzen |
#endif |
#define SYSCLK 8000000L //Quarz Frequenz in Hz |
#define GRN_ON {if(HwVersion < 12) PORTD |= GRUEN; else PORTD &= ~GRUEN;} |
#define GRN_OFF {if(HwVersion > 11) PORTD |= GRUEN; else PORTD &= ~GRUEN;} |
//Robbe Roxxy 2824-34 mit Todd 10x4,5 bei 16kHz |
//PWM Strom Schub |
//10 0,18A 21g |
//20 0,30A 38g |
//30 0,40A 49g |
//40 0,54A 60g |
//50 0,70A 83g |
//60 0,95A 102g |
//70 1,25A 128g |
//80 1,50A 151g |
//90 1,83A 175g |
//100 2,25A 206g |
//110 2,66A 228g |
//120 3,10A 257g |
//130 3,55A 278g |
//140 4,00A 305g |
//150 4,50A 330g |
//160 5,30A 355g |
//170 5,85A 387g |
//180 6,40A 400g |
//190 7,10A 425g |
//200 7,60A 460g |
//0,5A 63g 14% |
//1,0A 110g 24% |
//1,5A 170g 32% |
//2,0A 195g 37% |
//2,5A 230g 41% |
//3,0A 260g 46% |
//3,5A 290g 50% |
//4,0A 310g 53% |
//4,5A 340g 58% |
//5,0A 360g 63% |
//5,5A 380g 67% |
//6,0A 400g 68% |
//6,5A 420g 70% |
//7,0A 450g 75% |
//7,5A 460g 78% |
//8,0A 475g 82% |
//9,0A 550g 86% |
//11 A 600g 100% |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "twislave.h" |
#include "old_macros.h" |
#include "analog.h" |
#include "uart.h" |
#include "timer0.h" |
#include "BLMC.h" |
#include "PPM_Decode.h" |
extern unsigned int I2C_Timeout; |
extern unsigned int SIO_Timeout; |
extern unsigned int PWM; |
extern unsigned int Strom; //ca. in 0,1A |
extern unsigned char Strom_max; |
extern unsigned char Mittelstrom; |
extern unsigned int CntKommutierungen; |
extern unsigned char MotorAnwerfen; |
extern unsigned char MotorGestoppt; |
extern unsigned char ZeitZumAdWandeln; |
extern unsigned char MaxPWM; |
extern unsigned char MotorAdresse; |
extern unsigned char PPM_Betrieb; |
extern unsigned char HwVersion; |
extern unsigned char IntRef; |
#define ROT 0x08 |
#define GRUEN 0x80 |
#define ADR1 0x40 // für Motoradresswahl |
#define ADR2 0x80 // |
#if defined(__AVR_ATmega8__) |
# define OC1 PB1 |
# define DDROC DDRB |
# define OCR OCR1A |
# define PWM10 WGM10 |
# define PWM11 WGM11 |
#endif |
#endif //_MAIN_H |
/branches/V0.42_addr9-12_fix_ligi/main.lss |
---|
0,0 → 1,4534 |
main.elf: file format elf32-avr |
Sections: |
Idx Name Size VMA LMA File off Algn |
0 .text 00001bec 00000000 00000000 00000094 2**0 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
1 .data 00000024 00800060 00001bec 00001c80 2**0 |
CONTENTS, ALLOC, LOAD, DATA |
2 .bss 00000156 00800084 00800084 00001ca4 2**0 |
ALLOC |
3 .noinit 00000000 008001da 008001da 00001ca4 2**0 |
CONTENTS |
4 .eeprom 00000000 00810000 00810000 00001ca4 2**0 |
CONTENTS |
5 .stab 0000036c 00000000 00000000 00001ca4 2**2 |
CONTENTS, READONLY, DEBUGGING |
6 .stabstr 00000084 00000000 00000000 00002010 2**0 |
CONTENTS, READONLY, DEBUGGING |
7 .debug_aranges 000000b4 00000000 00000000 00002094 2**0 |
CONTENTS, READONLY, DEBUGGING |
8 .debug_pubnames 000006f5 00000000 00000000 00002148 2**0 |
CONTENTS, READONLY, DEBUGGING |
9 .debug_info 00001a41 00000000 00000000 0000283d 2**0 |
CONTENTS, READONLY, DEBUGGING |
10 .debug_abbrev 00000774 00000000 00000000 0000427e 2**0 |
CONTENTS, READONLY, DEBUGGING |
11 .debug_line 0000169d 00000000 00000000 000049f2 2**0 |
CONTENTS, READONLY, DEBUGGING |
12 .debug_str 00000874 00000000 00000000 0000608f 2**0 |
CONTENTS, READONLY, DEBUGGING |
Disassembly of section .text: |
00000000 <__vectors>: |
0: 0c 94 85 00 jmp 0x10a <__init> |
4: 0c 94 7e 0b jmp 0x16fc <__vector_1> |
8: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
10: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
14: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
18: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
1c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
20: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
24: 0c 94 67 09 jmp 0x12ce <__vector_9> |
28: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
2c: 0c 94 96 0b jmp 0x172c <__vector_11> |
30: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
34: 0c 94 18 02 jmp 0x430 <__vector_13> |
38: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
3c: 0c 94 e3 01 jmp 0x3c6 <__vector_15> |
40: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
44: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
48: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
4c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
50: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
00000054 <__ctors_end>: |
54: 20 2d mov r18, r0 |
56: 2d 20 and r2, r13 |
58: 52 65 ori r21, 0x52 ; 82 |
5a: 6d 6f ori r22, 0xFD ; 253 |
5c: 74 65 ori r23, 0x54 ; 84 |
5e: 20 20 and r2, r0 |
60: 2d 2d mov r18, r13 |
62: 20 20 and r2, r0 |
64: 20 20 and r2, r0 |
66: 20 20 and r2, r0 |
... |
00000069 <__c.1>: |
69: 20 2d 2d 20 44 69 73 70 6c 61 79 20 2d 2d 20 20 -- Display -- |
79: 20 20 20 20 00 . |
0000007e <__c.2>: |
7e: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |
8e: 20 20 20 20 00 . |
00000093 <__c.3>: |
93: 20 20 77 77 77 2e 4d 69 63 72 6f 53 50 53 2e 63 www.MicroSPS.c |
a3: 6f 6d 20 20 00 om . |
000000a8 <__c.2>: |
a8: 25 73 00 %s. |
000000ab <__c.3>: |
ab: 25 73 00 %s. |
000000ae <__c.4>: |
ae: 25 73 00 %s. |
000000b1 <__c.5>: |
b1: 25 73 00 %s. |
000000b4 <__c.3>: |
b4: 56 65 72 62 69 6e 64 65 6e 20 6d 69 74 00 Verbinden mit. |
000000c2 <__c.4>: |
c2: 4d 69 63 72 6f 53 50 53 3a 25 32 69 20 00 MicroSPS:%2i . |
000000d0 <__c.5>: |
d0: 4d 61 78 20 41 64 72 65 73 73 65 00 Max Adresse. |
000000dc <__c.6>: |
dc: 25 32 69 20 00 %2i . |
000000e1 <__c.7>: |
e1: 43 68 65 63 6b 73 75 6d 00 Checksum. |
000000ea <__c.8>: |
ea: 45 72 72 6f 72 73 3a 25 35 69 20 00 Errors:%5i . |
000000f6 <__c.9>: |
f6: 44 69 73 70 6c 61 79 00 Display. |
000000fe <__c.10>: |
fe: 5a 65 69 6c 65 6e 3a 25 31 69 20 00 Zeilen:%1i . |
0000010a <__init>: |
10a: 11 24 eor r1, r1 |
10c: 1f be out 0x3f, r1 ; 63 |
10e: cf e5 ldi r28, 0x5F ; 95 |
110: d8 e0 ldi r29, 0x08 ; 8 |
112: de bf out 0x3e, r29 ; 62 |
114: cd bf out 0x3d, r28 ; 61 |
00000116 <__do_copy_data>: |
116: 10 e0 ldi r17, 0x00 ; 0 |
118: a0 e6 ldi r26, 0x60 ; 96 |
11a: b0 e0 ldi r27, 0x00 ; 0 |
11c: ec ee ldi r30, 0xEC ; 236 |
11e: fb e1 ldi r31, 0x1B ; 27 |
120: 02 c0 rjmp .+4 ; 0x126 <.do_copy_data_start> |
00000122 <.do_copy_data_loop>: |
122: 05 90 lpm r0, Z+ |
124: 0d 92 st X+, r0 |
00000126 <.do_copy_data_start>: |
126: a4 38 cpi r26, 0x84 ; 132 |
128: b1 07 cpc r27, r17 |
12a: d9 f7 brne .-10 ; 0x122 <.do_copy_data_loop> |
0000012c <__do_clear_bss>: |
12c: 11 e0 ldi r17, 0x01 ; 1 |
12e: a4 e8 ldi r26, 0x84 ; 132 |
130: b0 e0 ldi r27, 0x00 ; 0 |
132: 01 c0 rjmp .+2 ; 0x136 <.do_clear_bss_start> |
00000134 <.do_clear_bss_loop>: |
134: 1d 92 st X+, r1 |
00000136 <.do_clear_bss_start>: |
136: aa 3d cpi r26, 0xDA ; 218 |
138: b1 07 cpc r27, r17 |
13a: e1 f7 brne .-8 ; 0x134 <.do_clear_bss_loop> |
13c: 0c 94 e5 00 jmp 0x1ca <main> |
00000140 <__bad_interrupt>: |
140: 0c 94 00 00 jmp 0x0 <__vectors> |
00000144 <Sekundentakt_Init>: |
unsigned int IntervallDebug = 250, IntervallDisplay = 120; |
void Sekundentakt_Init(void) |
{ |
_SekTimer = SetDelay(1000); |
144: 88 ee ldi r24, 0xE8 ; 232 |
146: 93 e0 ldi r25, 0x03 ; 3 |
148: 0e 94 a8 09 call 0x1350 <SetDelay> |
14c: 90 93 91 00 sts 0x0091, r25 |
150: 80 93 90 00 sts 0x0090, r24 |
154: 08 95 ret |
00000156 <Sekundentakt>: |
} |
void Sekundentakt(void) |
{ |
if(CheckDelay(_SekTimer)) |
156: 80 91 90 00 lds r24, 0x0090 |
15a: 90 91 91 00 lds r25, 0x0091 |
15e: 0e 94 b1 09 call 0x1362 <CheckDelay> |
162: 88 23 and r24, r24 |
164: 31 f1 breq .+76 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
GetKeyboard(); |
166: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
_SekTimer += 1000; |
16a: 80 91 90 00 lds r24, 0x0090 |
16e: 90 91 91 00 lds r25, 0x0091 |
172: 88 51 subi r24, 0x18 ; 24 |
174: 9c 4f sbci r25, 0xFC ; 252 |
176: 90 93 91 00 sts 0x0091, r25 |
17a: 80 93 90 00 sts 0x0090, r24 |
if(!CntDatensaetzeProSekunde) UebertragungUnterbrochen = 1; else UebertragungUnterbrochen = 0; |
17e: 80 91 66 00 lds r24, 0x0066 |
182: 88 23 and r24, r24 |
184: 21 f4 brne .+8 ; 0x18e <Sekundentakt+0x38> |
186: 81 e0 ldi r24, 0x01 ; 1 |
188: 80 93 84 00 sts 0x0084, r24 |
18c: 02 c0 rjmp .+4 ; 0x192 <Sekundentakt+0x3c> |
18e: 10 92 84 00 sts 0x0084, r1 |
CntDatensaetzeProSekunde = 0; |
192: 10 92 66 00 sts 0x0066, r1 |
if(++Sekunde == 60) |
196: 80 91 8d 00 lds r24, 0x008D |
19a: 8f 5f subi r24, 0xFF ; 255 |
19c: 80 93 8d 00 sts 0x008D, r24 |
1a0: 8c 33 cpi r24, 0x3C ; 60 |
1a2: 39 f4 brne .+14 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
Sekunde = 0; |
1a4: 10 92 8d 00 sts 0x008D, r1 |
Minute++; |
1a8: 80 91 8c 00 lds r24, 0x008C |
1ac: 8f 5f subi r24, 0xFF ; 255 |
1ae: 80 93 8c 00 sts 0x008C, r24 |
1b2: 08 95 ret |
000001b4 <Init>: |
} |
} |
} |
void Init(void) |
{ |
VersionInfo.Hauptversion = 0; |
1b4: 10 92 c9 00 sts 0x00C9, r1 |
VersionInfo.Nebenversion = 99; |
1b8: 83 e6 ldi r24, 0x63 ; 99 |
1ba: 80 93 ca 00 sts 0x00CA, r24 |
VersionInfo.PCKompatibel = 1; |
1be: 81 e0 ldi r24, 0x01 ; 1 |
1c0: 80 93 cb 00 sts 0x00CB, r24 |
VersionInfo.Commercial = 0x00; |
1c4: 10 92 cc 00 sts 0x00CC, r1 |
1c8: 08 95 ret |
000001ca <main>: |
} |
#define MENU 0 |
#define REMOTE 1 |
//############################################################################ |
//Hauptprogramm |
void main (void) |
//############################################################################ |
{ |
1ca: ca e5 ldi r28, 0x5A ; 90 |
1cc: d8 e0 ldi r29, 0x08 ; 8 |
1ce: de bf out 0x3e, r29 ; 62 |
1d0: cd bf out 0x3d, r28 ; 61 |
char z,txt[]= {"Moin"},key,key_old = 255; |
1d2: de 01 movw r26, r28 |
1d4: 11 96 adiw r26, 0x01 ; 1 |
1d6: e7 e6 ldi r30, 0x67 ; 103 |
1d8: f0 e0 ldi r31, 0x00 ; 0 |
1da: 85 e0 ldi r24, 0x05 ; 5 |
1dc: 01 90 ld r0, Z+ |
1de: 0d 92 st X+, r0 |
1e0: 81 50 subi r24, 0x01 ; 1 |
1e2: e1 f7 brne .-8 ; 0x1dc <main+0x12> |
int test = 0; |
unsigned int DelayTast; |
unsigned int DelayDaten,DelayDisplay; |
unsigned char mode = REMOTE; |
1e4: 91 e0 ldi r25, 0x01 ; 1 |
1e6: b9 2e mov r11, r25 |
unsigned char neueDatenuebertragung = 1; |
UART_Init(); |
1e8: 0e 94 cc 04 call 0x998 <UART_Init> |
LCD_Init(); |
1ec: 0e 94 1f 06 call 0xc3e <LCD_Init> |
UART_Init(); |
1f0: 0e 94 cc 04 call 0x998 <UART_Init> |
Timer1_Init(); |
1f4: 0e 94 9e 09 call 0x133c <Timer1_Init> |
Keyboard_Init(); |
1f8: 0e 94 c9 09 call 0x1392 <Keyboard_Init> |
Sekundentakt_Init(); |
1fc: 0e 94 a2 00 call 0x144 <Sekundentakt_Init> |
InitIR(); |
200: 0e 94 67 0b call 0x16ce <InitIR> |
ADC_Init(); |
204: 0e 94 42 0c call 0x1884 <ADC_Init> |
Init(); |
208: 0e 94 da 00 call 0x1b4 <Init> |
sei ();//Globale Interrupts Einschalten |
20c: 78 94 sei |
DDRB = 0xff; |
20e: 8f ef ldi r24, 0xFF ; 255 |
210: 87 bb out 0x17, r24 ; 23 |
PORTB = 0x00; |
212: 18 ba out 0x18, r1 ; 24 |
LCD_Clear; |
214: 81 e0 ldi r24, 0x01 ; 1 |
216: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
21a: 0e 94 c9 05 call 0xb92 <_long_delay> |
/* while(1) |
*/ |
DelayTast = SetDelay(80); |
21e: 80 e5 ldi r24, 0x50 ; 80 |
220: 90 e0 ldi r25, 0x00 ; 0 |
222: 0e 94 a8 09 call 0x1350 <SetDelay> |
226: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
228: 88 ec ldi r24, 0xC8 ; 200 |
22a: 90 e0 ldi r25, 0x00 ; 0 |
22c: 0e 94 a8 09 call 0x1350 <SetDelay> |
230: 8c 01 movw r16, r24 |
DelayDisplay = SetDelay(300); |
232: 8c e2 ldi r24, 0x2C ; 44 |
234: 91 e0 ldi r25, 0x01 ; 1 |
236: 0e 94 a8 09 call 0x1350 <SetDelay> |
23a: 6c 01 movw r12, r24 |
ClearIntervalle(); |
23c: 0e 94 2e 05 call 0xa5c <ClearIntervalle> |
while (1) |
{ |
if(mode == MENU) |
240: bb 20 and r11, r11 |
242: 11 f5 brne .+68 ; 0x288 <main+0xbe> |
{ |
Delay_ms(10); |
244: 8a e0 ldi r24, 0x0A ; 10 |
246: 90 e0 ldi r25, 0x00 ; 0 |
248: 0e 94 bc 09 call 0x1378 <Delay_ms> |
key = GetKeyboard(); |
24c: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
Menu(key); |
250: 99 27 eor r25, r25 |
252: 0e 94 64 0a call 0x14c8 <Menu> |
if(_TASTE5) |
256: cb 9b sbis 0x19, 3 ; 25 |
258: f5 cf rjmp .-22 ; 0x244 <main+0x7a> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
25a: 8a e0 ldi r24, 0x0A ; 10 |
25c: 90 e0 ldi r25, 0x00 ; 0 |
25e: 0e 94 bc 09 call 0x1378 <Delay_ms> |
262: cb 99 sbic 0x19, 3 ; 25 |
264: fa cf rjmp .-12 ; 0x25a <main+0x90> |
mode = REMOTE; |
266: 81 e0 ldi r24, 0x01 ; 1 |
268: b8 2e mov r11, r24 |
DelayTast = SetDelay(100); |
26a: 84 e6 ldi r24, 0x64 ; 100 |
26c: 90 e0 ldi r25, 0x00 ; 0 |
26e: 0e 94 a8 09 call 0x1350 <SetDelay> |
272: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
274: 88 ec ldi r24, 0xC8 ; 200 |
276: 90 e0 ldi r25, 0x00 ; 0 |
278: 0e 94 a8 09 call 0x1350 <SetDelay> |
27c: 8c 01 movw r16, r24 |
LCD_Clear; |
27e: 8b 2d mov r24, r11 |
280: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
284: 0e 94 c9 05 call 0xb92 <_long_delay> |
} |
} |
else |
if(mode == REMOTE) |
288: 81 e0 ldi r24, 0x01 ; 1 |
28a: b8 16 cp r11, r24 |
28c: c9 f6 brne .-78 ; 0x240 <main+0x76> |
{ |
BearbeiteRxDaten(); |
28e: 0e 94 fe 03 call 0x7fc <BearbeiteRxDaten> |
if(CheckDelay(DelayDaten)) |
292: c8 01 movw r24, r16 |
294: 0e 94 b1 09 call 0x1362 <CheckDelay> |
298: 88 23 and r24, r24 |
29a: c9 f3 breq .-14 ; 0x28e <main+0xc4> |
{ |
Sekundentakt(); |
29c: 0e 94 ab 00 call 0x156 <Sekundentakt> |
DelayDaten = SetDelay(10); |
2a0: 8a e0 ldi r24, 0x0A ; 10 |
2a2: 90 e0 ldi r25, 0x00 ; 0 |
2a4: 0e 94 a8 09 call 0x1350 <SetDelay> |
2a8: 8c 01 movw r16, r24 |
if(CheckDelay(DelayDisplay)) |
2aa: c6 01 movw r24, r12 |
2ac: 0e 94 b1 09 call 0x1362 <CheckDelay> |
2b0: 88 23 and r24, r24 |
2b2: 39 f0 breq .+14 ; 0x2c2 <main+0xf8> |
{ |
DelayDisplay = SetDelay(300); |
2b4: 8c e2 ldi r24, 0x2C ; 44 |
2b6: 91 e0 ldi r25, 0x01 ; 1 |
2b8: 0e 94 a8 09 call 0x1350 <SetDelay> |
2bc: 6c 01 movw r12, r24 |
PollDisplay = 1; |
2be: b0 92 ed 00 sts 0x00ED, r11 |
} |
key = GetKeyboard2(); |
2c2: 0e 94 57 0a call 0x14ae <GetKeyboard2> |
DatenUebertragung(key); |
2c6: 99 27 eor r25, r25 |
2c8: 0e 94 51 05 call 0xaa2 <DatenUebertragung> |
if(UebertragungUnterbrochen) |
2cc: 80 91 84 00 lds r24, 0x0084 |
2d0: 88 23 and r24, r24 |
2d2: 81 f1 breq .+96 ; 0x334 <main+0x16a> |
{ |
//01234567890123456789 |
LCD_printfxy(0,0," -- Remote -- "); |
2d4: 60 e0 ldi r22, 0x00 ; 0 |
2d6: 86 2f mov r24, r22 |
2d8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2dc: 84 e5 ldi r24, 0x54 ; 84 |
2de: 90 e0 ldi r25, 0x00 ; 0 |
2e0: 9f 93 push r25 |
2e2: 8f 93 push r24 |
2e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1," -- Display -- "); |
2e8: 61 e0 ldi r22, 0x01 ; 1 |
2ea: 80 e0 ldi r24, 0x00 ; 0 |
2ec: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2f0: 0f 90 pop r0 |
2f2: 0f 90 pop r0 |
2f4: 89 e6 ldi r24, 0x69 ; 105 |
2f6: 90 e0 ldi r25, 0x00 ; 0 |
2f8: 9f 93 push r25 |
2fa: 8f 93 push r24 |
2fc: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,2," "); |
300: 62 e0 ldi r22, 0x02 ; 2 |
302: 80 e0 ldi r24, 0x00 ; 0 |
304: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
308: 0f 90 pop r0 |
30a: 0f 90 pop r0 |
30c: 8e e7 ldi r24, 0x7E ; 126 |
30e: 90 e0 ldi r25, 0x00 ; 0 |
310: 9f 93 push r25 |
312: 8f 93 push r24 |
314: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,3," www.MicroSPS.com "); |
318: 63 e0 ldi r22, 0x03 ; 3 |
31a: 80 e0 ldi r24, 0x00 ; 0 |
31c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
320: 0f 90 pop r0 |
322: 0f 90 pop r0 |
324: 83 e9 ldi r24, 0x93 ; 147 |
326: 90 e0 ldi r25, 0x00 ; 0 |
328: 9f 93 push r25 |
32a: 8f 93 push r24 |
32c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
330: 0f 90 pop r0 |
332: 0f 90 pop r0 |
} |
if(CheckDelay(DelayTast)) |
334: c7 01 movw r24, r14 |
336: 0e 94 b1 09 call 0x1362 <CheckDelay> |
33a: 88 23 and r24, r24 |
33c: 09 f4 brne .+2 ; 0x340 <main+0x176> |
33e: a7 cf rjmp .-178 ; 0x28e <main+0xc4> |
{ |
DelayTast = SetDelay(100); |
340: 84 e6 ldi r24, 0x64 ; 100 |
342: 90 e0 ldi r25, 0x00 ; 0 |
344: 0e 94 a8 09 call 0x1350 <SetDelay> |
348: 7c 01 movw r14, r24 |
if(_TASTE5) |
34a: cb 9b sbis 0x19, 3 ; 25 |
34c: 0c c0 rjmp .+24 ; 0x366 <main+0x19c> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
34e: 8a e0 ldi r24, 0x0A ; 10 |
350: 90 e0 ldi r25, 0x00 ; 0 |
352: 0e 94 bc 09 call 0x1378 <Delay_ms> |
356: cb 99 sbic 0x19, 3 ; 25 |
358: fa cf rjmp .-12 ; 0x34e <main+0x184> |
mode = MENU; |
35a: bb 24 eor r11, r11 |
LCD_Clear; |
35c: 81 e0 ldi r24, 0x01 ; 1 |
35e: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
362: 0e 94 c9 05 call 0xb92 <_long_delay> |
366: 80 91 be 00 lds r24, 0x00BE |
} |
// if(key & 0x10) DebugIn.Digital[0] |= 0x01; else DebugIn.Digital[0] &= ~0x01; |
if(PIND & 0x08) DebugIn.Digital[0] |= 0x02; else DebugIn.Digital[0] &= ~0x02; |
36a: 83 9b sbis 0x10, 3 ; 16 |
36c: 02 c0 rjmp .+4 ; 0x372 <main+0x1a8> |
36e: 82 60 ori r24, 0x02 ; 2 |
370: 01 c0 rjmp .+2 ; 0x374 <main+0x1aa> |
372: 8d 7f andi r24, 0xFD ; 253 |
374: 80 93 be 00 sts 0x00BE, r24 |
378: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x10) DebugIn.Digital[0] |= 0x04; else DebugIn.Digital[0] &= ~0x04; |
37c: 84 9b sbis 0x10, 4 ; 16 |
37e: 02 c0 rjmp .+4 ; 0x384 <main+0x1ba> |
380: 84 60 ori r24, 0x04 ; 4 |
382: 01 c0 rjmp .+2 ; 0x386 <main+0x1bc> |
384: 8b 7f andi r24, 0xFB ; 251 |
386: 80 93 be 00 sts 0x00BE, r24 |
38a: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x20) DebugIn.Digital[0] |= 0x08; else DebugIn.Digital[0] &= ~0x08; |
38e: 85 9b sbis 0x10, 5 ; 16 |
390: 02 c0 rjmp .+4 ; 0x396 <main+0x1cc> |
392: 88 60 ori r24, 0x08 ; 8 |
394: 01 c0 rjmp .+2 ; 0x398 <main+0x1ce> |
396: 87 7f andi r24, 0xF7 ; 247 |
398: 80 93 be 00 sts 0x00BE, r24 |
39c: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x40) DebugIn.Digital[0] |= 0x10; else DebugIn.Digital[0] &= ~0x10; |
3a0: 86 9b sbis 0x10, 6 ; 16 |
3a2: 02 c0 rjmp .+4 ; 0x3a8 <main+0x1de> |
3a4: 80 61 ori r24, 0x10 ; 16 |
3a6: 01 c0 rjmp .+2 ; 0x3aa <main+0x1e0> |
3a8: 8f 7e andi r24, 0xEF ; 239 |
3aa: 80 93 be 00 sts 0x00BE, r24 |
3ae: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x80) DebugIn.Digital[0] |= 0x20; else DebugIn.Digital[0] &= ~0x20; |
3b2: 87 9b sbis 0x10, 7 ; 16 |
3b4: 02 c0 rjmp .+4 ; 0x3ba <main+0x1f0> |
3b6: 80 62 ori r24, 0x20 ; 32 |
3b8: 01 c0 rjmp .+2 ; 0x3bc <main+0x1f2> |
3ba: 8f 7d andi r24, 0xDF ; 223 |
3bc: 80 93 be 00 sts 0x00BE, r24 |
GetAnalogWerte(); |
3c0: 0e 94 4e 0c call 0x189c <GetAnalogWerte> |
3c4: 3d cf rjmp .-390 ; 0x240 <main+0x76> |
000003c6 <__vector_15>: |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
3c6: 1f 92 push r1 |
3c8: 0f 92 push r0 |
3ca: 0f b6 in r0, 0x3f ; 63 |
3cc: 0f 92 push r0 |
3ce: 11 24 eor r1, r1 |
3d0: 8f 93 push r24 |
3d2: 9f 93 push r25 |
3d4: ef 93 push r30 |
3d6: ff 93 push r31 |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
3d8: 80 91 6e 00 lds r24, 0x006E |
3dc: 88 23 and r24, r24 |
3de: d9 f4 brne .+54 ; 0x416 <__vector_15+0x50> |
{ |
ptr++; // die [0] wurde schon gesendet |
3e0: 80 91 9d 00 lds r24, 0x009D |
3e4: 90 91 9e 00 lds r25, 0x009E |
3e8: 01 96 adiw r24, 0x01 ; 1 |
3ea: 90 93 9e 00 sts 0x009E, r25 |
3ee: 80 93 9d 00 sts 0x009D, r24 |
tmp_tx = SendeBuffer[ptr]; |
3f2: fc 01 movw r30, r24 |
3f4: e2 51 subi r30, 0x12 ; 18 |
3f6: ff 4f sbci r31, 0xFF ; 255 |
3f8: e0 81 ld r30, Z |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
3fa: ed 30 cpi r30, 0x0D ; 13 |
3fc: 19 f0 breq .+6 ; 0x404 <__vector_15+0x3e> |
3fe: 84 36 cpi r24, 0x64 ; 100 |
400: 91 05 cpc r25, r1 |
402: 39 f4 brne .+14 ; 0x412 <__vector_15+0x4c> |
{ |
ptr = 0; |
404: 10 92 9e 00 sts 0x009E, r1 |
408: 10 92 9d 00 sts 0x009D, r1 |
UebertragungAbgeschlossen = 1; |
40c: 81 e0 ldi r24, 0x01 ; 1 |
40e: 80 93 6e 00 sts 0x006E, r24 |
} |
UDR = tmp_tx; |
412: ec b9 out 0x0c, r30 ; 12 |
414: 04 c0 rjmp .+8 ; 0x41e <__vector_15+0x58> |
} |
else ptr = 0; |
416: 10 92 9e 00 sts 0x009E, r1 |
41a: 10 92 9d 00 sts 0x009D, r1 |
41e: ff 91 pop r31 |
420: ef 91 pop r30 |
422: 9f 91 pop r25 |
424: 8f 91 pop r24 |
426: 0f 90 pop r0 |
428: 0f be out 0x3f, r0 ; 63 |
42a: 0f 90 pop r0 |
42c: 1f 90 pop r1 |
42e: 18 95 reti |
00000430 <__vector_13>: |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
430: 1f 92 push r1 |
432: 0f 92 push r0 |
434: 0f b6 in r0, 0x3f ; 63 |
436: 0f 92 push r0 |
438: 11 24 eor r1, r1 |
43a: 2f 93 push r18 |
43c: 3f 93 push r19 |
43e: 4f 93 push r20 |
440: 5f 93 push r21 |
442: 8f 93 push r24 |
444: 9f 93 push r25 |
446: af 93 push r26 |
448: bf 93 push r27 |
44a: ef 93 push r30 |
44c: ff 93 push r31 |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
44e: 20 e0 ldi r18, 0x00 ; 0 |
SioTmp = UDR; |
450: 8c b1 in r24, 0x0c ; 12 |
452: 80 93 9c 00 sts 0x009C, r24 |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
456: 50 91 a3 00 lds r21, 0x00A3 |
45a: 54 36 cpi r21, 0x64 ; 100 |
45c: 10 f0 brcs .+4 ; 0x462 <__vector_13+0x32> |
45e: 20 93 a4 00 sts 0x00A4, r18 |
if(SioTmp == '\r' && UartState == 2) |
462: 80 91 9c 00 lds r24, 0x009C |
466: 8d 30 cpi r24, 0x0D ; 13 |
468: 09 f0 breq .+2 ; 0x46c <__vector_13+0x3c> |
46a: 5b c0 rjmp .+182 ; 0x522 <__vector_13+0xf2> |
46c: 80 91 a4 00 lds r24, 0x00A4 |
470: 82 30 cpi r24, 0x02 ; 2 |
472: 09 f0 breq .+2 ; 0x476 <__vector_13+0x46> |
474: 56 c0 rjmp .+172 ; 0x522 <__vector_13+0xf2> |
{ |
UartState = 0; |
476: 20 93 a4 00 sts 0x00A4, r18 |
crc -= RxdBuffer[buf_ptr-2]; |
47a: 85 2f mov r24, r21 |
47c: 99 27 eor r25, r25 |
47e: 8e 5a subi r24, 0xAE ; 174 |
480: 9e 4f sbci r25, 0xFE ; 254 |
482: fc 01 movw r30, r24 |
484: 32 97 sbiw r30, 0x02 ; 2 |
486: 40 81 ld r20, Z |
488: 20 91 9f 00 lds r18, 0x009F |
48c: 30 91 a0 00 lds r19, 0x00A0 |
490: 24 1b sub r18, r20 |
492: 31 09 sbc r19, r1 |
crc -= RxdBuffer[buf_ptr-1]; |
494: dc 01 movw r26, r24 |
496: 11 97 sbiw r26, 0x01 ; 1 |
498: 8c 91 ld r24, X |
49a: 28 1b sub r18, r24 |
49c: 31 09 sbc r19, r1 |
crc %= 4096; |
49e: c9 01 movw r24, r18 |
4a0: 9f 70 andi r25, 0x0F ; 15 |
4a2: 90 93 a0 00 sts 0x00A0, r25 |
4a6: 80 93 9f 00 sts 0x009F, r24 |
crc1 = '=' + crc / 64; |
4aa: 46 e0 ldi r20, 0x06 ; 6 |
4ac: 96 95 lsr r25 |
4ae: 87 95 ror r24 |
4b0: 4a 95 dec r20 |
4b2: e1 f7 brne .-8 ; 0x4ac <__vector_13+0x7c> |
4b4: 98 2f mov r25, r24 |
4b6: 93 5c subi r25, 0xC3 ; 195 |
4b8: 90 93 a1 00 sts 0x00A1, r25 |
crc2 = '=' + crc % 64; |
4bc: 2f 73 andi r18, 0x3F ; 63 |
4be: 30 70 andi r19, 0x00 ; 0 |
4c0: 23 5c subi r18, 0xC3 ; 195 |
4c2: 20 93 a2 00 sts 0x00A2, r18 |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
4c6: 80 81 ld r24, Z |
4c8: 98 17 cp r25, r24 |
4ca: 29 f4 brne .+10 ; 0x4d6 <__vector_13+0xa6> |
4cc: 8c 91 ld r24, X |
4ce: 28 17 cp r18, r24 |
4d0: 11 f4 brne .+4 ; 0x4d6 <__vector_13+0xa6> |
4d2: 21 e0 ldi r18, 0x01 ; 1 |
4d4: 0a c0 rjmp .+20 ; 0x4ea <__vector_13+0xba> |
4d6: 20 e0 ldi r18, 0x00 ; 0 |
4d8: 80 91 99 00 lds r24, 0x0099 |
4dc: 90 91 9a 00 lds r25, 0x009A |
4e0: 01 96 adiw r24, 0x01 ; 1 |
4e2: 90 93 9a 00 sts 0x009A, r25 |
4e6: 80 93 99 00 sts 0x0099, r24 |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
4ea: 80 91 9b 00 lds r24, 0x009B |
4ee: 88 23 and r24, r24 |
4f0: 09 f0 breq .+2 ; 0x4f4 <__vector_13+0xc4> |
4f2: 66 c0 rjmp .+204 ; 0x5c0 <__vector_13+0x190> |
4f4: 22 23 and r18, r18 |
4f6: 09 f4 brne .+2 ; 0x4fa <__vector_13+0xca> |
4f8: 63 c0 rjmp .+198 ; 0x5c0 <__vector_13+0x190> |
{ |
CntDatensaetzeProSekunde++; |
4fa: 80 91 66 00 lds r24, 0x0066 |
4fe: 8f 5f subi r24, 0xFF ; 255 |
500: 80 93 66 00 sts 0x0066, r24 |
PC_DebugTimeout = 10; |
504: 8a e0 ldi r24, 0x0A ; 10 |
506: 80 93 97 00 sts 0x0097, r24 |
NeuerDatensatzEmpfangen = 1; |
50a: 81 e0 ldi r24, 0x01 ; 1 |
50c: 80 93 9b 00 sts 0x009B, r24 |
AnzahlEmpfangsBytes = buf_ptr; |
510: 50 93 98 00 sts 0x0098, r21 |
RxdBuffer[buf_ptr] = '\r'; |
514: e5 2f mov r30, r21 |
516: ff 27 eor r31, r31 |
518: ee 5a subi r30, 0xAE ; 174 |
51a: fe 4f sbci r31, 0xFE ; 254 |
51c: 8d e0 ldi r24, 0x0D ; 13 |
51e: 80 83 st Z, r24 |
520: 4f c0 rjmp .+158 ; 0x5c0 <__vector_13+0x190> |
// if((RxdBuffer[1] == 's') && (RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
522: 20 91 a4 00 lds r18, 0x00A4 |
526: 82 2f mov r24, r18 |
528: 99 27 eor r25, r25 |
52a: 81 30 cpi r24, 0x01 ; 1 |
52c: 91 05 cpc r25, r1 |
52e: f9 f0 breq .+62 ; 0x56e <__vector_13+0x13e> |
530: 82 30 cpi r24, 0x02 ; 2 |
532: 91 05 cpc r25, r1 |
534: 1c f4 brge .+6 ; 0x53c <__vector_13+0x10c> |
536: 89 2b or r24, r25 |
538: 21 f0 breq .+8 ; 0x542 <__vector_13+0x112> |
53a: 40 c0 rjmp .+128 ; 0x5bc <__vector_13+0x18c> |
53c: 02 97 sbiw r24, 0x02 ; 2 |
53e: 11 f1 breq .+68 ; 0x584 <__vector_13+0x154> |
540: 3d c0 rjmp .+122 ; 0x5bc <__vector_13+0x18c> |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
542: 80 91 9c 00 lds r24, 0x009C |
546: 83 32 cpi r24, 0x23 ; 35 |
548: 39 f4 brne .+14 ; 0x558 <__vector_13+0x128> |
54a: 80 91 9b 00 lds r24, 0x009B |
54e: 88 23 and r24, r24 |
550: 19 f4 brne .+6 ; 0x558 <__vector_13+0x128> |
552: 81 e0 ldi r24, 0x01 ; 1 |
554: 80 93 a4 00 sts 0x00A4, r24 |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
558: 80 91 9c 00 lds r24, 0x009C |
55c: 80 93 52 01 sts 0x0152, r24 |
560: 81 e0 ldi r24, 0x01 ; 1 |
562: 80 93 a3 00 sts 0x00A3, r24 |
crc = SioTmp; |
566: 80 91 9c 00 lds r24, 0x009C |
56a: 99 27 eor r25, r25 |
56c: 22 c0 rjmp .+68 ; 0x5b2 <__vector_13+0x182> |
break; |
case 1: // Adresse auswerten |
UartState++; |
56e: 2f 5f subi r18, 0xFF ; 255 |
570: 20 93 a4 00 sts 0x00A4, r18 |
RxdBuffer[buf_ptr++] = SioTmp; |
574: e5 2f mov r30, r21 |
576: ff 27 eor r31, r31 |
578: ee 5a subi r30, 0xAE ; 174 |
57a: fe 4f sbci r31, 0xFE ; 254 |
57c: 80 91 9c 00 lds r24, 0x009C |
580: 80 83 st Z, r24 |
582: 09 c0 rjmp .+18 ; 0x596 <__vector_13+0x166> |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
584: e5 2f mov r30, r21 |
586: ff 27 eor r31, r31 |
588: ee 5a subi r30, 0xAE ; 174 |
58a: fe 4f sbci r31, 0xFE ; 254 |
58c: 80 91 9c 00 lds r24, 0x009C |
590: 80 83 st Z, r24 |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
592: 54 36 cpi r21, 0x64 ; 100 |
594: 20 f4 brcc .+8 ; 0x59e <__vector_13+0x16e> |
596: 5f 5f subi r21, 0xFF ; 255 |
598: 50 93 a3 00 sts 0x00A3, r21 |
59c: 02 c0 rjmp .+4 ; 0x5a2 <__vector_13+0x172> |
else UartState = 0; |
59e: 10 92 a4 00 sts 0x00A4, r1 |
crc += SioTmp; |
5a2: 20 91 9c 00 lds r18, 0x009C |
5a6: 80 91 9f 00 lds r24, 0x009F |
5aa: 90 91 a0 00 lds r25, 0x00A0 |
5ae: 82 0f add r24, r18 |
5b0: 91 1d adc r25, r1 |
5b2: 90 93 a0 00 sts 0x00A0, r25 |
5b6: 80 93 9f 00 sts 0x009F, r24 |
break; |
5ba: 02 c0 rjmp .+4 ; 0x5c0 <__vector_13+0x190> |
default: |
UartState = 0; |
5bc: 10 92 a4 00 sts 0x00A4, r1 |
5c0: ff 91 pop r31 |
5c2: ef 91 pop r30 |
5c4: bf 91 pop r27 |
5c6: af 91 pop r26 |
5c8: 9f 91 pop r25 |
5ca: 8f 91 pop r24 |
5cc: 5f 91 pop r21 |
5ce: 4f 91 pop r20 |
5d0: 3f 91 pop r19 |
5d2: 2f 91 pop r18 |
5d4: 0f 90 pop r0 |
5d6: 0f be out 0x3f, r0 ; 63 |
5d8: 0f 90 pop r0 |
5da: 1f 90 pop r1 |
5dc: 18 95 reti |
000005de <AddCRC>: |
break; |
} |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
5de: ac 01 movw r20, r24 |
unsigned int tmpCRC = 0,i; |
5e0: a0 e0 ldi r26, 0x00 ; 0 |
5e2: b0 e0 ldi r27, 0x00 ; 0 |
for(i = 0; i < wieviele;i++) |
5e4: 9d 01 movw r18, r26 |
5e6: a8 17 cp r26, r24 |
5e8: b9 07 cpc r27, r25 |
5ea: 48 f4 brcc .+18 ; 0x5fe <AddCRC+0x20> |
5ec: ee ee ldi r30, 0xEE ; 238 |
5ee: f0 e0 ldi r31, 0x00 ; 0 |
{ |
tmpCRC += SendeBuffer[i]; |
5f0: 81 91 ld r24, Z+ |
5f2: 28 0f add r18, r24 |
5f4: 31 1d adc r19, r1 |
5f6: 11 96 adiw r26, 0x01 ; 1 |
5f8: a4 17 cp r26, r20 |
5fa: b5 07 cpc r27, r21 |
5fc: c8 f3 brcs .-14 ; 0x5f0 <AddCRC+0x12> |
} |
tmpCRC %= 4096; |
5fe: 3f 70 andi r19, 0x0F ; 15 |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
600: fd 01 movw r30, r26 |
602: e2 51 subi r30, 0x12 ; 18 |
604: ff 4f sbci r31, 0xFF ; 255 |
606: c9 01 movw r24, r18 |
608: 56 e0 ldi r21, 0x06 ; 6 |
60a: 96 95 lsr r25 |
60c: 87 95 ror r24 |
60e: 5a 95 dec r21 |
610: e1 f7 brne .-8 ; 0x60a <AddCRC+0x2c> |
612: 83 5c subi r24, 0xC3 ; 195 |
614: 80 83 st Z, r24 |
616: 11 96 adiw r26, 0x01 ; 1 |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
618: fd 01 movw r30, r26 |
61a: e2 51 subi r30, 0x12 ; 18 |
61c: ff 4f sbci r31, 0xFF ; 255 |
61e: 2f 73 andi r18, 0x3F ; 63 |
620: 30 70 andi r19, 0x00 ; 0 |
622: 82 2f mov r24, r18 |
624: 83 5c subi r24, 0xC3 ; 195 |
626: 80 83 st Z, r24 |
SendeBuffer[i++] = '\r'; |
628: a1 51 subi r26, 0x11 ; 17 |
62a: bf 4f sbci r27, 0xFF ; 255 |
62c: 8d e0 ldi r24, 0x0D ; 13 |
62e: 8c 93 st X, r24 |
UebertragungAbgeschlossen = 0; |
630: 10 92 6e 00 sts 0x006E, r1 |
UDR = SendeBuffer[0]; |
634: 80 91 ee 00 lds r24, 0x00EE |
638: 8c b9 out 0x0c, r24 ; 12 |
63a: 08 95 ret |
0000063c <SendOutData>: |
// PrintSendeBuffer(); |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
63c: 1f 93 push r17 |
63e: cf 93 push r28 |
640: df 93 push r29 |
642: 38 2f mov r19, r24 |
644: 96 2f mov r25, r22 |
646: ea 01 movw r28, r20 |
648: 72 2f mov r23, r18 |
unsigned int pt = 0,i; |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
64a: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
//while(!UebertragungAbgeschlossen); |
SendeBuffer[pt++] = '#'; // Startzeichen |
64c: 83 e2 ldi r24, 0x23 ; 35 |
64e: 80 93 ee 00 sts 0x00EE, r24 |
SendeBuffer[pt++] = modul+'a'; // Adresse (a=0; b=1,...) |
652: 9f 59 subi r25, 0x9F ; 159 |
654: 90 93 ef 00 sts 0x00EF, r25 |
SendeBuffer[pt++] = cmd; // Commando |
658: 30 93 f0 00 sts 0x00F0, r19 |
65c: a3 e0 ldi r26, 0x03 ; 3 |
65e: b0 e0 ldi r27, 0x00 ; 0 |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
660: 77 23 and r23, r23 |
662: 09 f4 brne .+2 ; 0x666 <SendOutData+0x2a> |
664: 58 c0 rjmp .+176 ; 0x716 <SendOutData+0xda> |
666: 77 23 and r23, r23 |
668: 11 f4 brne .+4 ; 0x66e <SendOutData+0x32> |
66a: 97 2f mov r25, r23 |
66c: 07 c0 rjmp .+14 ; 0x67c <SendOutData+0x40> |
66e: fe 01 movw r30, r28 |
670: e1 0f add r30, r17 |
672: f1 1d adc r31, r1 |
674: 1f 5f subi r17, 0xFF ; 255 |
676: 90 81 ld r25, Z |
678: 71 50 subi r23, 0x01 ; 1 |
67a: 11 f4 brne .+4 ; 0x680 <SendOutData+0x44> |
67c: 47 2f mov r20, r23 |
67e: 0e c0 rjmp .+28 ; 0x69c <SendOutData+0x60> |
680: fe 01 movw r30, r28 |
682: e1 0f add r30, r17 |
684: f1 1d adc r31, r1 |
686: 1f 5f subi r17, 0xFF ; 255 |
688: 40 81 ld r20, Z |
68a: 71 50 subi r23, 0x01 ; 1 |
68c: 39 f0 breq .+14 ; 0x69c <SendOutData+0x60> |
68e: fe 01 movw r30, r28 |
690: e1 0f add r30, r17 |
692: f1 1d adc r31, r1 |
694: 1f 5f subi r17, 0xFF ; 255 |
696: 60 81 ld r22, Z |
698: 71 50 subi r23, 0x01 ; 1 |
69a: 01 c0 rjmp .+2 ; 0x69e <SendOutData+0x62> |
69c: 67 2f mov r22, r23 |
69e: fd 01 movw r30, r26 |
6a0: e2 51 subi r30, 0x12 ; 18 |
6a2: ff 4f sbci r31, 0xFF ; 255 |
6a4: 89 2f mov r24, r25 |
6a6: 86 95 lsr r24 |
6a8: 86 95 lsr r24 |
6aa: 83 5c subi r24, 0xC3 ; 195 |
6ac: 80 83 st Z, r24 |
6ae: 11 96 adiw r26, 0x01 ; 1 |
6b0: fd 01 movw r30, r26 |
6b2: e2 51 subi r30, 0x12 ; 18 |
6b4: ff 4f sbci r31, 0xFF ; 255 |
6b6: 89 2f mov r24, r25 |
6b8: 99 27 eor r25, r25 |
6ba: 83 70 andi r24, 0x03 ; 3 |
6bc: 90 70 andi r25, 0x00 ; 0 |
6be: 24 e0 ldi r18, 0x04 ; 4 |
6c0: 88 0f add r24, r24 |
6c2: 99 1f adc r25, r25 |
6c4: 2a 95 dec r18 |
6c6: e1 f7 brne .-8 ; 0x6c0 <SendOutData+0x84> |
6c8: 55 27 eor r21, r21 |
6ca: 9a 01 movw r18, r20 |
6cc: 94 e0 ldi r25, 0x04 ; 4 |
6ce: 36 95 lsr r19 |
6d0: 27 95 ror r18 |
6d2: 9a 95 dec r25 |
6d4: e1 f7 brne .-8 ; 0x6ce <SendOutData+0x92> |
6d6: 82 2b or r24, r18 |
6d8: 83 5c subi r24, 0xC3 ; 195 |
6da: 80 83 st Z, r24 |
6dc: 11 96 adiw r26, 0x01 ; 1 |
6de: fd 01 movw r30, r26 |
6e0: e2 51 subi r30, 0x12 ; 18 |
6e2: ff 4f sbci r31, 0xFF ; 255 |
6e4: 4f 70 andi r20, 0x0F ; 15 |
6e6: 50 70 andi r21, 0x00 ; 0 |
6e8: 44 0f add r20, r20 |
6ea: 55 1f adc r21, r21 |
6ec: 44 0f add r20, r20 |
6ee: 55 1f adc r21, r21 |
6f0: 86 2f mov r24, r22 |
6f2: 99 27 eor r25, r25 |
6f4: 26 e0 ldi r18, 0x06 ; 6 |
6f6: 96 95 lsr r25 |
6f8: 87 95 ror r24 |
6fa: 2a 95 dec r18 |
6fc: e1 f7 brne .-8 ; 0x6f6 <SendOutData+0xba> |
6fe: 84 2b or r24, r20 |
700: 83 5c subi r24, 0xC3 ; 195 |
702: 80 83 st Z, r24 |
704: 11 96 adiw r26, 0x01 ; 1 |
706: fd 01 movw r30, r26 |
708: e2 51 subi r30, 0x12 ; 18 |
70a: ff 4f sbci r31, 0xFF ; 255 |
70c: 6f 73 andi r22, 0x3F ; 63 |
70e: 63 5c subi r22, 0xC3 ; 195 |
710: 60 83 st Z, r22 |
712: 11 96 adiw r26, 0x01 ; 1 |
714: a5 cf rjmp .-182 ; 0x660 <SendOutData+0x24> |
} |
AddCRC(pt); |
716: cd 01 movw r24, r26 |
718: 0e 94 ef 02 call 0x5de <AddCRC> |
71c: df 91 pop r29 |
71e: cf 91 pop r28 |
720: 1f 91 pop r17 |
722: 08 95 ret |
00000724 <Decode64>: |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
724: 1f 93 push r17 |
726: cf 93 push r28 |
728: df 93 push r29 |
72a: ec 01 movw r28, r24 |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
72c: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
72e: 66 23 and r22, r22 |
730: 09 f4 brne .+2 ; 0x734 <Decode64+0x10> |
732: 60 c0 rjmp .+192 ; 0x7f4 <Decode64+0xd0> |
734: a2 2f mov r26, r18 |
736: bb 27 eor r27, r27 |
738: 12 97 sbiw r26, 0x02 ; 2 |
73a: e4 2f mov r30, r20 |
73c: ff 27 eor r31, r31 |
73e: ee 5a subi r30, 0xAE ; 174 |
740: fe 4f sbci r31, 0xFE ; 254 |
742: 30 81 ld r19, Z |
744: 3d 53 subi r19, 0x3D ; 61 |
746: 4f 5f subi r20, 0xFF ; 255 |
748: e4 2f mov r30, r20 |
74a: ff 27 eor r31, r31 |
74c: ee 5a subi r30, 0xAE ; 174 |
74e: fe 4f sbci r31, 0xFE ; 254 |
750: 50 81 ld r21, Z |
752: 5d 53 subi r21, 0x3D ; 61 |
754: 4f 5f subi r20, 0xFF ; 255 |
756: e4 2f mov r30, r20 |
758: ff 27 eor r31, r31 |
75a: ee 5a subi r30, 0xAE ; 174 |
75c: fe 4f sbci r31, 0xFE ; 254 |
75e: 70 81 ld r23, Z |
760: 7d 53 subi r23, 0x3D ; 61 |
762: 4f 5f subi r20, 0xFF ; 255 |
764: e4 2f mov r30, r20 |
766: ff 27 eor r31, r31 |
768: ee 5a subi r30, 0xAE ; 174 |
76a: fe 4f sbci r31, 0xFE ; 254 |
76c: e0 81 ld r30, Z |
76e: ed 53 subi r30, 0x3D ; 61 |
770: 4f 5f subi r20, 0xFF ; 255 |
772: 84 2f mov r24, r20 |
774: 99 27 eor r25, r25 |
776: a8 17 cp r26, r24 |
778: b9 07 cpc r27, r25 |
77a: e4 f1 brlt .+120 ; 0x7f4 <Decode64+0xd0> |
77c: 83 2f mov r24, r19 |
77e: 99 27 eor r25, r25 |
780: 88 0f add r24, r24 |
782: 99 1f adc r25, r25 |
784: 88 0f add r24, r24 |
786: 99 1f adc r25, r25 |
788: 35 2f mov r19, r21 |
78a: 32 95 swap r19 |
78c: 3f 70 andi r19, 0x0F ; 15 |
78e: 38 2b or r19, r24 |
790: 85 2f mov r24, r21 |
792: 99 27 eor r25, r25 |
794: 8f 70 andi r24, 0x0F ; 15 |
796: 90 70 andi r25, 0x00 ; 0 |
798: f4 e0 ldi r31, 0x04 ; 4 |
79a: 88 0f add r24, r24 |
79c: 99 1f adc r25, r25 |
79e: fa 95 dec r31 |
7a0: e1 f7 brne .-8 ; 0x79a <Decode64+0x76> |
7a2: 57 2f mov r21, r23 |
7a4: 56 95 lsr r21 |
7a6: 56 95 lsr r21 |
7a8: 58 2b or r21, r24 |
7aa: 87 2f mov r24, r23 |
7ac: 99 27 eor r25, r25 |
7ae: 83 70 andi r24, 0x03 ; 3 |
7b0: 90 70 andi r25, 0x00 ; 0 |
7b2: 76 e0 ldi r23, 0x06 ; 6 |
7b4: 88 0f add r24, r24 |
7b6: 99 1f adc r25, r25 |
7b8: 7a 95 dec r23 |
7ba: e1 f7 brne .-8 ; 0x7b4 <Decode64+0x90> |
7bc: 8e 2b or r24, r30 |
7be: 61 50 subi r22, 0x01 ; 1 |
7c0: 6f 3f cpi r22, 0xFF ; 255 |
7c2: c1 f0 breq .+48 ; 0x7f4 <Decode64+0xd0> |
7c4: fe 01 movw r30, r28 |
7c6: e1 0f add r30, r17 |
7c8: f1 1d adc r31, r1 |
7ca: 30 83 st Z, r19 |
7cc: 1f 5f subi r17, 0xFF ; 255 |
7ce: 61 50 subi r22, 0x01 ; 1 |
7d0: 6f 3f cpi r22, 0xFF ; 255 |
7d2: 81 f0 breq .+32 ; 0x7f4 <Decode64+0xd0> |
7d4: fe 01 movw r30, r28 |
7d6: e1 0f add r30, r17 |
7d8: f1 1d adc r31, r1 |
7da: 50 83 st Z, r21 |
7dc: 1f 5f subi r17, 0xFF ; 255 |
7de: 61 50 subi r22, 0x01 ; 1 |
7e0: 6f 3f cpi r22, 0xFF ; 255 |
7e2: 41 f0 breq .+16 ; 0x7f4 <Decode64+0xd0> |
7e4: fe 01 movw r30, r28 |
7e6: e1 0f add r30, r17 |
7e8: f1 1d adc r31, r1 |
7ea: 80 83 st Z, r24 |
7ec: 1f 5f subi r17, 0xFF ; 255 |
7ee: 66 23 and r22, r22 |
7f0: 09 f0 breq .+2 ; 0x7f4 <Decode64+0xd0> |
7f2: a3 cf rjmp .-186 ; 0x73a <Decode64+0x16> |
7f4: df 91 pop r29 |
7f6: cf 91 pop r28 |
7f8: 1f 91 pop r17 |
7fa: 08 95 ret |
000007fc <BearbeiteRxDaten>: |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
7fc: cf 93 push r28 |
7fe: df 93 push r29 |
800: cd b7 in r28, 0x3d ; 61 |
802: de b7 in r29, 0x3e ; 62 |
804: ad 97 sbiw r28, 0x2d ; 45 |
806: 0f b6 in r0, 0x3f ; 63 |
808: f8 94 cli |
80a: de bf out 0x3e, r29 ; 62 |
80c: 0f be out 0x3f, r0 ; 63 |
80e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr1[1]; |
unsigned int tmp_int_arr2[2]; |
unsigned int tmp_int_arr20[21]; |
unsigned char tmp_char_arr3[3]; |
// unsigned int tmp_int_arr4[4]; |
if(!NeuerDatensatzEmpfangen) return; |
810: 80 91 9b 00 lds r24, 0x009B |
814: 88 23 and r24, r24 |
816: 09 f4 brne .+2 ; 0x81a <BearbeiteRxDaten+0x1e> |
818: a7 c0 rjmp .+334 ; 0x968 <__stack+0x109> |
NeuerDatensatzEmpfangen = 0; |
81a: 10 92 9b 00 sts 0x009B, r1 |
if(ErwarteAntwort == RxdBuffer[2]) AntwortEingetroffen = 1; |
81e: 90 91 6d 00 lds r25, 0x006D |
822: 80 91 54 01 lds r24, 0x0154 |
826: 98 17 cp r25, r24 |
828: 19 f4 brne .+6 ; 0x830 <BearbeiteRxDaten+0x34> |
82a: 81 e0 ldi r24, 0x01 ; 1 |
82c: 80 93 92 00 sts 0x0092, r24 |
switch(RxdBuffer[2]) |
830: 80 91 54 01 lds r24, 0x0154 |
834: 99 27 eor r25, r25 |
836: 82 33 cpi r24, 0x32 ; 50 |
838: 91 05 cpc r25, r1 |
83a: 09 f4 brne .+2 ; 0x83e <BearbeiteRxDaten+0x42> |
83c: 46 c0 rjmp .+140 ; 0x8ca <__stack+0x6b> |
83e: 83 33 cpi r24, 0x33 ; 51 |
840: 91 05 cpc r25, r1 |
842: 34 f4 brge .+12 ; 0x850 <BearbeiteRxDaten+0x54> |
844: 80 33 cpi r24, 0x30 ; 48 |
846: 91 05 cpc r25, r1 |
848: 99 f0 breq .+38 ; 0x870 <__stack+0x11> |
84a: c1 97 sbiw r24, 0x31 ; 49 |
84c: 49 f1 breq .+82 ; 0x8a0 <__stack+0x41> |
84e: 8c c0 rjmp .+280 ; 0x968 <__stack+0x109> |
850: 84 34 cpi r24, 0x44 ; 68 |
852: 91 05 cpc r25, r1 |
854: 09 f4 brne .+2 ; 0x858 <BearbeiteRxDaten+0x5c> |
856: 6b c0 rjmp .+214 ; 0x92e <__stack+0xcf> |
858: 85 34 cpi r24, 0x45 ; 69 |
85a: 91 05 cpc r25, r1 |
85c: 24 f4 brge .+8 ; 0x866 <__stack+0x7> |
85e: c3 97 sbiw r24, 0x33 ; 51 |
860: 09 f4 brne .+2 ; 0x864 <__stack+0x5> |
862: 48 c0 rjmp .+144 ; 0x8f4 <__stack+0x95> |
864: 81 c0 rjmp .+258 ; 0x968 <__stack+0x109> |
866: 8b 34 cpi r24, 0x4B ; 75 |
868: 91 05 cpc r25, r1 |
86a: 09 f4 brne .+2 ; 0x86e <__stack+0xf> |
86c: 6c c0 rjmp .+216 ; 0x946 <__stack+0xe7> |
86e: 7c c0 rjmp .+248 ; 0x968 <__stack+0x109> |
{ |
case '0':// LCD-Zeile0 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
870: 20 91 98 00 lds r18, 0x0098 |
874: 43 e0 ldi r20, 0x03 ; 3 |
876: 6a e2 ldi r22, 0x2A ; 42 |
878: ce 01 movw r24, r28 |
87a: 01 96 adiw r24, 0x01 ; 1 |
87c: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
880: 1a a6 std Y+42, r1 ; 0x2a |
882: 19 a6 std Y+41, r1 ; 0x29 |
DisplayBusy = 1; |
884: 81 e0 ldi r24, 0x01 ; 1 |
886: 80 93 93 00 sts 0x0093, r24 |
LCD_printfxy(0,0,"%s",tmp_int_arr20); |
88a: 60 e0 ldi r22, 0x00 ; 0 |
88c: 86 2f mov r24, r22 |
88e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
892: ce 01 movw r24, r28 |
894: 01 96 adiw r24, 0x01 ; 1 |
896: 9f 93 push r25 |
898: 8f 93 push r24 |
89a: 88 ea ldi r24, 0xA8 ; 168 |
89c: 90 e0 ldi r25, 0x00 ; 0 |
89e: 3e c0 rjmp .+124 ; 0x91c <__stack+0xbd> |
break; |
case '1':// LCD-Zeile1 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8a0: 20 91 98 00 lds r18, 0x0098 |
8a4: 43 e0 ldi r20, 0x03 ; 3 |
8a6: 6a e2 ldi r22, 0x2A ; 42 |
8a8: ce 01 movw r24, r28 |
8aa: 01 96 adiw r24, 0x01 ; 1 |
8ac: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8b0: 1a a6 std Y+42, r1 ; 0x2a |
8b2: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,1,"%s",tmp_int_arr20); |
8b4: 61 e0 ldi r22, 0x01 ; 1 |
8b6: 80 e0 ldi r24, 0x00 ; 0 |
8b8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8bc: ce 01 movw r24, r28 |
8be: 01 96 adiw r24, 0x01 ; 1 |
8c0: 9f 93 push r25 |
8c2: 8f 93 push r24 |
8c4: 8b ea ldi r24, 0xAB ; 171 |
8c6: 90 e0 ldi r25, 0x00 ; 0 |
8c8: 29 c0 rjmp .+82 ; 0x91c <__stack+0xbd> |
break; |
case '2':// LCD-Zeile2 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8ca: 20 91 98 00 lds r18, 0x0098 |
8ce: 43 e0 ldi r20, 0x03 ; 3 |
8d0: 6a e2 ldi r22, 0x2A ; 42 |
8d2: ce 01 movw r24, r28 |
8d4: 01 96 adiw r24, 0x01 ; 1 |
8d6: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8da: 1a a6 std Y+42, r1 ; 0x2a |
8dc: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,2,"%s",tmp_int_arr20); |
8de: 62 e0 ldi r22, 0x02 ; 2 |
8e0: 80 e0 ldi r24, 0x00 ; 0 |
8e2: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8e6: ce 01 movw r24, r28 |
8e8: 01 96 adiw r24, 0x01 ; 1 |
8ea: 9f 93 push r25 |
8ec: 8f 93 push r24 |
8ee: 8e ea ldi r24, 0xAE ; 174 |
8f0: 90 e0 ldi r25, 0x00 ; 0 |
8f2: 14 c0 rjmp .+40 ; 0x91c <__stack+0xbd> |
break; |
case '3':// LCD-Zeile3 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8f4: 20 91 98 00 lds r18, 0x0098 |
8f8: 43 e0 ldi r20, 0x03 ; 3 |
8fa: 6a e2 ldi r22, 0x2A ; 42 |
8fc: ce 01 movw r24, r28 |
8fe: 01 96 adiw r24, 0x01 ; 1 |
900: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
904: 1a a6 std Y+42, r1 ; 0x2a |
906: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,3,"%s",tmp_int_arr20); |
908: 63 e0 ldi r22, 0x03 ; 3 |
90a: 80 e0 ldi r24, 0x00 ; 0 |
90c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
910: ce 01 movw r24, r28 |
912: 01 96 adiw r24, 0x01 ; 1 |
914: 9f 93 push r25 |
916: 8f 93 push r24 |
918: 81 eb ldi r24, 0xB1 ; 177 |
91a: 90 e0 ldi r25, 0x00 ; 0 |
91c: 9f 93 push r25 |
91e: 8f 93 push r24 |
920: 0e 94 e3 06 call 0xdc6 <_printf_P> |
break; |
924: 0f 90 pop r0 |
926: 0f 90 pop r0 |
928: 0f 90 pop r0 |
92a: 0f 90 pop r0 |
92c: 1d c0 rjmp .+58 ; 0x968 <__stack+0x109> |
case 'D': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugOut,sizeof(DebugOut),3,AnzahlEmpfangsBytes); |
92e: 20 91 98 00 lds r18, 0x0098 |
932: 43 e0 ldi r20, 0x03 ; 3 |
934: 6a e1 ldi r22, 0x1A ; 26 |
936: 83 ed ldi r24, 0xD3 ; 211 |
938: 90 e0 ldi r25, 0x00 ; 0 |
93a: 0e 94 92 03 call 0x724 <Decode64> |
PORTB = DebugOut.Digital[1]; |
93e: 80 91 d4 00 lds r24, 0x00D4 |
942: 88 bb out 0x18, r24 ; 24 |
break; |
944: 11 c0 rjmp .+34 ; 0x968 <__stack+0x109> |
case 'K': // Debug Eingangsdaten |
Decode64(tmp_char_arr3,sizeof(tmp_char_arr3),3,AnzahlEmpfangsBytes); |
946: 20 91 98 00 lds r18, 0x0098 |
94a: 43 e0 ldi r20, 0x03 ; 3 |
94c: 64 2f mov r22, r20 |
94e: ce 01 movw r24, r28 |
950: 8b 96 adiw r24, 0x2b ; 43 |
952: 0e 94 92 03 call 0x724 <Decode64> |
TX_DigTransferKanalL = tmp_char_arr3[0]; |
956: 8b a5 ldd r24, Y+43 ; 0x2b |
958: 80 93 96 00 sts 0x0096, r24 |
TX_DigTransferKanalH = tmp_char_arr3[1]; |
95c: 8c a5 ldd r24, Y+44 ; 0x2c |
95e: 80 93 95 00 sts 0x0095, r24 |
TX_DigTransferKanalDaten = tmp_char_arr3[2]; |
962: 8d a5 ldd r24, Y+45 ; 0x2d |
964: 80 93 94 00 sts 0x0094, r24 |
968: ad 96 adiw r28, 0x2d ; 45 |
96a: 0f b6 in r0, 0x3f ; 63 |
96c: f8 94 cli |
96e: de bf out 0x3e, r29 ; 62 |
970: 0f be out 0x3f, r0 ; 63 |
972: cd bf out 0x3d, r28 ; 61 |
974: df 91 pop r29 |
976: cf 91 pop r28 |
978: 08 95 ret |
0000097a <uart_putchar>: |
//if(RxdBuffer[1] == 'b') LCD_printfxy(0,0,"b:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
//if(RxdBuffer[1] == 'c') LCD_printfxy(0,1,"c:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
break; |
/* |
unsigned char Digital[13]; // 0 = Taster, Hauptkarte |
// 1 + 2 = Debugkanäle |
// 3 = Digin, Hauptkarte |
// 4 = Relais, Hauptkarte |
// 5 + 6 = Extern IO1 (12Bit ein 4 Bit aus) |
// 7 + 8 = Extern IO2 (12Bit ein 4 Bit aus) |
// 9 + 10 = Extern IO3 (12Bit ein 4 Bit aus) |
// 11 + 12= Extern IO4 (12Bit ein 4 Bit aus) |
*/ |
/* case 'd': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
} |
break; |
case 'g': // "Get"-Anforderung für Debug-Daten // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'u': // Uhr stellen |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
ZEITWERT = tmp_int_arr2[0]; |
SEK = tmp_int_arr2[1]; |
make_time_variables(ZEITWERT); |
RTC_SetTime(STD, MIN, SEK); |
RTC_SetWDay(TAG); |
break; |
case 'i': // Intervalle für die Datenübertragung |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
Debug_Timer_Intervall = tmp_int_arr2[0]; |
Debug_Display_Intervall = tmp_int_arr2[1]; |
SendeDummyDaten = 1; |
break; |
case 's': // single Step 1 = Stop 2 = noch einen Zyklus 3 = noch 2 Zyklen |
Decode64((unsigned char *) &tmp_int_arr1[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
SingleStep = tmp_int_arr1[0]; |
break; |
*/ |
} |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
97a: cf 93 push r28 |
97c: c8 2f mov r28, r24 |
if (c == '\n') |
97e: 8a 30 cpi r24, 0x0A ; 10 |
980: 19 f4 brne .+6 ; 0x988 <uart_putchar+0xe> |
uart_putchar('\r'); |
982: 8d e0 ldi r24, 0x0D ; 13 |
984: 0e 94 bd 04 call 0x97a <uart_putchar> |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
988: 5d 9b sbis 0x0b, 5 ; 11 |
98a: fe cf rjmp .-4 ; 0x988 <uart_putchar+0xe> |
//Ausgabe des Zeichens |
UDR = c; |
98c: cc b9 out 0x0c, r28 ; 12 |
return (0); |
} |
98e: 80 e0 ldi r24, 0x00 ; 0 |
990: 90 e0 ldi r25, 0x00 ; 0 |
992: cf 91 pop r28 |
994: 08 95 ret |
00000996 <WriteProgramData>: |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
996: 08 95 ret |
00000998 <UART_Init>: |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
998: 88 e1 ldi r24, 0x18 ; 24 |
99a: 8a b9 out 0x0a, r24 ; 10 |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
99c: 59 9a sbi 0x0b, 1 ; 11 |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
99e: 57 9a sbi 0x0a, 7 ; 10 |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
9a0: 56 9a sbi 0x0a, 6 ; 10 |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
9a2: 81 e2 ldi r24, 0x21 ; 33 |
9a4: 89 b9 out 0x09, r24 ; 9 |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
9a6: 60 e0 ldi r22, 0x00 ; 0 |
9a8: 70 e0 ldi r23, 0x00 ; 0 |
9aa: 8d eb ldi r24, 0xBD ; 189 |
9ac: 94 e0 ldi r25, 0x04 ; 4 |
9ae: 0e 94 71 0c call 0x18e2 <fdevopen> |
9b2: 08 95 ret |
000009b4 <SendeRemoteTasten>: |
//sbi(PORTD,4); |
} |
/* |
struct str_DebugIn |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
unsigned int Analog[4]; |
}; |
*/ |
void SendeRemoteTasten(unsigned char keys) |
{ |
9b4: 98 2f mov r25, r24 |
while(!UebertragungAbgeschlossen); // evtl warten |
9b6: 80 91 6e 00 lds r24, 0x006E |
9ba: 88 23 and r24, r24 |
9bc: e1 f3 breq .-8 ; 0x9b6 <SendeRemoteTasten+0x2> |
DebugIn.RemoteTasten = keys; |
9be: 90 93 c0 00 sts 0x00C0, r25 |
DebugIn.Analog[0] = AnalogWerte[0]; |
9c2: 80 91 ca 01 lds r24, 0x01CA |
9c6: 90 91 cb 01 lds r25, 0x01CB |
9ca: 90 93 c2 00 sts 0x00C2, r25 |
9ce: 80 93 c1 00 sts 0x00C1, r24 |
DebugIn.Analog[1] = AnalogWerte[1]; |
9d2: 80 91 cc 01 lds r24, 0x01CC |
9d6: 90 91 cd 01 lds r25, 0x01CD |
9da: 90 93 c4 00 sts 0x00C4, r25 |
9de: 80 93 c3 00 sts 0x00C3, r24 |
DebugIn.Analog[2] = AnalogWerte[2]; |
9e2: 80 91 ce 01 lds r24, 0x01CE |
9e6: 90 91 cf 01 lds r25, 0x01CF |
9ea: 90 93 c6 00 sts 0x00C6, r25 |
9ee: 80 93 c5 00 sts 0x00C5, r24 |
DebugIn.Analog[3] = IR_Code; |
9f2: 80 91 c7 01 lds r24, 0x01C7 |
9f6: 90 91 c8 01 lds r25, 0x01C8 |
9fa: 90 93 c8 00 sts 0x00C8, r25 |
9fe: 80 93 c7 00 sts 0x00C7, r24 |
SendOutData('d',SlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
a02: 2b e0 ldi r18, 0x0B ; 11 |
a04: 4e eb ldi r20, 0xBE ; 190 |
a06: 50 e0 ldi r21, 0x00 ; 0 |
a08: 60 91 64 00 lds r22, 0x0064 |
a0c: 84 e6 ldi r24, 0x64 ; 100 |
a0e: 0e 94 1e 03 call 0x63c <SendOutData> |
a12: 08 95 ret |
00000a14 <SendIntervalle>: |
} |
void SendIntervalle(unsigned int debug, unsigned int disp) |
{ |
a14: cf 93 push r28 |
a16: df 93 push r29 |
a18: cd b7 in r28, 0x3d ; 61 |
a1a: de b7 in r29, 0x3e ; 62 |
a1c: 24 97 sbiw r28, 0x04 ; 4 |
a1e: 0f b6 in r0, 0x3f ; 63 |
a20: f8 94 cli |
a22: de bf out 0x3e, r29 ; 62 |
a24: 0f be out 0x3f, r0 ; 63 |
a26: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = debug; |
a28: 9a 83 std Y+2, r25 ; 0x02 |
a2a: 89 83 std Y+1, r24 ; 0x01 |
tmp_int_arr2[1] = disp; |
a2c: 7c 83 std Y+4, r23 ; 0x04 |
a2e: 6b 83 std Y+3, r22 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a30: 80 91 6e 00 lds r24, 0x006E |
a34: 88 23 and r24, r24 |
a36: e1 f3 breq .-8 ; 0xa30 <SendIntervalle+0x1c> |
SendOutData('i',SlaveAdresse,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); |
a38: 24 e0 ldi r18, 0x04 ; 4 |
a3a: ae 01 movw r20, r28 |
a3c: 4f 5f subi r20, 0xFF ; 255 |
a3e: 5f 4f sbci r21, 0xFF ; 255 |
a40: 60 91 64 00 lds r22, 0x0064 |
a44: 89 e6 ldi r24, 0x69 ; 105 |
a46: 0e 94 1e 03 call 0x63c <SendOutData> |
a4a: 24 96 adiw r28, 0x04 ; 4 |
a4c: 0f b6 in r0, 0x3f ; 63 |
a4e: f8 94 cli |
a50: de bf out 0x3e, r29 ; 62 |
a52: 0f be out 0x3f, r0 ; 63 |
a54: cd bf out 0x3d, r28 ; 61 |
a56: df 91 pop r29 |
a58: cf 91 pop r28 |
a5a: 08 95 ret |
00000a5c <ClearIntervalle>: |
} |
void ClearIntervalle(void) |
{ |
a5c: cf 93 push r28 |
a5e: df 93 push r29 |
a60: cd b7 in r28, 0x3d ; 61 |
a62: de b7 in r29, 0x3e ; 62 |
a64: 24 97 sbiw r28, 0x04 ; 4 |
a66: 0f b6 in r0, 0x3f ; 63 |
a68: f8 94 cli |
a6a: de bf out 0x3e, r29 ; 62 |
a6c: 0f be out 0x3f, r0 ; 63 |
a6e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = 0; |
a70: 1a 82 std Y+2, r1 ; 0x02 |
a72: 19 82 std Y+1, r1 ; 0x01 |
tmp_int_arr2[1] = 0; |
a74: 1c 82 std Y+4, r1 ; 0x04 |
a76: 1b 82 std Y+3, r1 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a78: 80 91 6e 00 lds r24, 0x006E |
a7c: 88 23 and r24, r24 |
a7e: e1 f3 breq .-8 ; 0xa78 <ClearIntervalle+0x1c> |
SendOutData('i',0,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); // 0= an alle |
a80: 24 e0 ldi r18, 0x04 ; 4 |
a82: ae 01 movw r20, r28 |
a84: 4f 5f subi r20, 0xFF ; 255 |
a86: 5f 4f sbci r21, 0xFF ; 255 |
a88: 60 e0 ldi r22, 0x00 ; 0 |
a8a: 89 e6 ldi r24, 0x69 ; 105 |
a8c: 0e 94 1e 03 call 0x63c <SendOutData> |
a90: 24 96 adiw r28, 0x04 ; 4 |
a92: 0f b6 in r0, 0x3f ; 63 |
a94: f8 94 cli |
a96: de bf out 0x3e, r29 ; 62 |
a98: 0f be out 0x3f, r0 ; 63 |
a9a: cd bf out 0x3d, r28 ; 61 |
a9c: df 91 pop r29 |
a9e: cf 91 pop r28 |
aa0: 08 95 ret |
00000aa2 <DatenUebertragung>: |
} |
void DatenUebertragung(unsigned char key) |
{ |
aa2: cf 93 push r28 |
aa4: df 93 push r29 |
aa6: cd b7 in r28, 0x3d ; 61 |
aa8: de b7 in r29, 0x3e ; 62 |
aaa: 25 97 sbiw r28, 0x05 ; 5 |
aac: 0f b6 in r0, 0x3f ; 63 |
aae: f8 94 cli |
ab0: de bf out 0x3e, r29 ; 62 |
ab2: 0f be out 0x3f, r0 ; 63 |
ab4: cd bf out 0x3d, r28 ; 61 |
ab6: 98 2f mov r25, r24 |
static unsigned char state = 1; |
unsigned char temp_1[1]; |
unsigned char temp_2[2]; |
unsigned char temp_3[3]; |
unsigned int tmp_int_arr2[2]; |
while(!UebertragungAbgeschlossen); // evtl warten |
ab8: 80 91 6e 00 lds r24, 0x006E |
abc: 88 23 and r24, r24 |
abe: e1 f3 breq .-8 ; 0xab8 <DatenUebertragung+0x16> |
static unsigned char KanalSlave = 1; |
if(PollDisplay) |
ac0: 80 91 ed 00 lds r24, 0x00ED |
ac4: 88 23 and r24, r24 |
ac6: e1 f0 breq .+56 ; 0xb00 <DatenUebertragung+0x5e> |
{ |
temp_2[0] = key; |
ac8: 9c 83 std Y+4, r25 ; 0x04 |
temp_2[1] = 6; |
aca: 86 e0 ldi r24, 0x06 ; 6 |
acc: 8d 83 std Y+5, r24 ; 0x05 |
if(DisplayZeilen == 4) temp_2[1] = 4 + 9; // anzahl Zeilen --> + 8 bedeutet: ersten Pollingzyklus freilassen |
ace: 80 91 65 00 lds r24, 0x0065 |
ad2: 84 30 cpi r24, 0x04 ; 4 |
ad4: 11 f4 brne .+4 ; 0xada <DatenUebertragung+0x38> |
ad6: 8d e0 ldi r24, 0x0D ; 13 |
ad8: 01 c0 rjmp .+2 ; 0xadc <DatenUebertragung+0x3a> |
else temp_2[1] = 2 + 9; |
ada: 8b e0 ldi r24, 0x0B ; 11 |
adc: 8d 83 std Y+5, r24 ; 0x05 |
SendOutData('h',SlaveAdresse,(unsigned char *) &temp_2,sizeof(temp_2)); |
ade: 22 e0 ldi r18, 0x02 ; 2 |
ae0: ae 01 movw r20, r28 |
ae2: 4c 5f subi r20, 0xFC ; 252 |
ae4: 5f 4f sbci r21, 0xFF ; 255 |
ae6: 60 91 64 00 lds r22, 0x0064 |
aea: 88 e6 ldi r24, 0x68 ; 104 |
aec: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = '0'; |
af0: 80 e3 ldi r24, 0x30 ; 48 |
af2: 80 93 6d 00 sts 0x006D, r24 |
DisplayBusy = 90; |
af6: 8a e5 ldi r24, 0x5A ; 90 |
af8: 80 93 93 00 sts 0x0093, r24 |
PollDisplay = 0; |
afc: 10 92 ed 00 sts 0x00ED, r1 |
} |
if(!DisplayBusy) |
b00: 60 91 93 00 lds r22, 0x0093 |
b04: 66 23 and r22, r22 |
b06: e1 f5 brne .+120 ; 0xb80 <DatenUebertragung+0xde> |
switch(state) |
b08: 80 91 6f 00 lds r24, 0x006F |
b0c: 99 27 eor r25, r25 |
b0e: 81 30 cpi r24, 0x01 ; 1 |
b10: 91 05 cpc r25, r1 |
b12: 19 f0 breq .+6 ; 0xb1a <DatenUebertragung+0x78> |
b14: 02 97 sbiw r24, 0x02 ; 2 |
b16: e9 f0 breq .+58 ; 0xb52 <DatenUebertragung+0xb0> |
b18: 30 c0 rjmp .+96 ; 0xb7a <DatenUebertragung+0xd8> |
{ |
case 1:// Display |
SendOutData('k',KanalSlave,(unsigned char *) &temp_3,sizeof(temp_3)); |
b1a: 23 e0 ldi r18, 0x03 ; 3 |
b1c: ae 01 movw r20, r28 |
b1e: 4f 5f subi r20, 0xFF ; 255 |
b20: 5f 4f sbci r21, 0xFF ; 255 |
b22: 60 91 70 00 lds r22, 0x0070 |
b26: 8b e6 ldi r24, 0x6B ; 107 |
b28: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = 'K'; |
b2c: 8b e4 ldi r24, 0x4B ; 75 |
b2e: 80 93 6d 00 sts 0x006D, r24 |
if(++KanalSlave > AnzahlTeilnehmer) KanalSlave = 1; |
b32: 80 91 70 00 lds r24, 0x0070 |
b36: 8f 5f subi r24, 0xFF ; 255 |
b38: 80 93 70 00 sts 0x0070, r24 |
b3c: 90 91 6c 00 lds r25, 0x006C |
b40: 98 17 cp r25, r24 |
b42: 18 f4 brcc .+6 ; 0xb4a <DatenUebertragung+0xa8> |
b44: 81 e0 ldi r24, 0x01 ; 1 |
b46: 80 93 70 00 sts 0x0070, r24 |
state++; |
b4a: 80 91 6f 00 lds r24, 0x006F |
b4e: 8f 5f subi r24, 0xFF ; 255 |
b50: 15 c0 rjmp .+42 ; 0xb7c <DatenUebertragung+0xda> |
break; |
case 2: |
temp_3[0] = TX_DigTransferKanalL; |
b52: 80 91 96 00 lds r24, 0x0096 |
b56: 89 83 std Y+1, r24 ; 0x01 |
temp_3[1] = TX_DigTransferKanalH; |
b58: 80 91 95 00 lds r24, 0x0095 |
b5c: 8a 83 std Y+2, r24 ; 0x02 |
temp_3[2] = TX_DigTransferKanalDaten; |
b5e: 80 91 94 00 lds r24, 0x0094 |
b62: 8b 83 std Y+3, r24 ; 0x03 |
SendOutData('l',0,(unsigned char *) &temp_3,sizeof(temp_3)); |
b64: 23 e0 ldi r18, 0x03 ; 3 |
b66: ae 01 movw r20, r28 |
b68: 4f 5f subi r20, 0xFF ; 255 |
b6a: 5f 4f sbci r21, 0xFF ; 255 |
b6c: 8c e6 ldi r24, 0x6C ; 108 |
b6e: 0e 94 1e 03 call 0x63c <SendOutData> |
AntwortEingetroffen = 1; // erwarte keine Antwort |
b72: 81 e0 ldi r24, 0x01 ; 1 |
b74: 80 93 92 00 sts 0x0092, r24 |
b78: 01 c0 rjmp .+2 ; 0xb7c <DatenUebertragung+0xda> |
state = 1; |
break; |
default: state = 1; |
b7a: 81 e0 ldi r24, 0x01 ; 1 |
b7c: 80 93 6f 00 sts 0x006F, r24 |
b80: 25 96 adiw r28, 0x05 ; 5 |
b82: 0f b6 in r0, 0x3f ; 63 |
b84: f8 94 cli |
b86: de bf out 0x3e, r29 ; 62 |
b88: 0f be out 0x3f, r0 ; 63 |
b8a: cd bf out 0x3d, r28 ; 61 |
b8c: df 91 pop r29 |
b8e: cf 91 pop r28 |
b90: 08 95 ret |
00000b92 <_long_delay>: |
#include "main.h" |
void _long_delay(void) |
{ |
long t = 5000; |
b92: 88 e8 ldi r24, 0x88 ; 136 |
b94: 93 e1 ldi r25, 0x13 ; 19 |
b96: a0 e0 ldi r26, 0x00 ; 0 |
b98: b0 e0 ldi r27, 0x00 ; 0 |
while (t--); |
b9a: 03 97 sbiw r24, 0x03 ; 3 |
b9c: a1 09 sbc r26, r1 |
b9e: b1 09 sbc r27, r1 |
ba0: 8f 3f cpi r24, 0xFF ; 255 |
ba2: 2f ef ldi r18, 0xFF ; 255 |
ba4: 92 07 cpc r25, r18 |
ba6: 2f ef ldi r18, 0xFF ; 255 |
ba8: a2 07 cpc r26, r18 |
baa: 2f ef ldi r18, 0xFF ; 255 |
bac: b2 07 cpc r27, r18 |
bae: a9 f7 brne .-22 ; 0xb9a <_long_delay+0x8> |
bb0: 08 95 ret |
00000bb2 <_short_delay>: |
} |
void _short_delay(void) |
{ |
int t = 500; |
bb2: 84 ef ldi r24, 0xF4 ; 244 |
bb4: 91 e0 ldi r25, 0x01 ; 1 |
while (t--); |
bb6: 03 97 sbiw r24, 0x03 ; 3 |
bb8: 2f ef ldi r18, 0xFF ; 255 |
bba: 8f 3f cpi r24, 0xFF ; 255 |
bbc: 92 07 cpc r25, r18 |
bbe: d9 f7 brne .-10 ; 0xbb6 <_short_delay+0x4> |
bc0: 08 95 ret |
00000bc2 <_lcd_write_command>: |
} |
void _lcd_write_command(unsigned char data) |
{ |
bc2: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bc4: 80 7f andi r24, 0xF0 ; 240 |
bc6: 98 2f mov r25, r24 |
bc8: 94 60 ori r25, 0x04 ; 4 |
bca: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bcc: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bce: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bd0: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bd2: 82 2f mov r24, r18 |
bd4: 99 27 eor r25, r25 |
bd6: 34 e0 ldi r19, 0x04 ; 4 |
bd8: 88 0f add r24, r24 |
bda: 99 1f adc r25, r25 |
bdc: 3a 95 dec r19 |
bde: e1 f7 brne .-8 ; 0xbd8 <_lcd_write_command+0x16> |
be0: 84 60 ori r24, 0x04 ; 4 |
be2: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
be4: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4); |
be6: 22 95 swap r18 |
be8: 20 7f andi r18, 0xF0 ; 240 |
bea: 25 bb out 0x15, r18 ; 21 |
bec: 08 95 ret |
00000bee <_lcd_write_4bit>: |
} |
void _lcd_write_4bit(unsigned char data) |
{ |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bee: 28 2f mov r18, r24 |
bf0: 33 27 eor r19, r19 |
bf2: 44 e0 ldi r20, 0x04 ; 4 |
bf4: 22 0f add r18, r18 |
bf6: 33 1f adc r19, r19 |
bf8: 4a 95 dec r20 |
bfa: e1 f7 brne .-8 ; 0xbf4 <_lcd_write_4bit+0x6> |
bfc: 92 2f mov r25, r18 |
bfe: 94 60 ori r25, 0x04 ; 4 |
c00: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
c02: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4); |
c04: 82 95 swap r24 |
c06: 80 7f andi r24, 0xF0 ; 240 |
c08: 85 bb out 0x15, r24 ; 21 |
c0a: 08 95 ret |
00000c0c <lcd_write_byte>: |
} |
void lcd_write_byte(unsigned char data) |
{ |
c0c: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN | DISPLAY_RS; |
c0e: 80 7f andi r24, 0xF0 ; 240 |
c10: 98 2f mov r25, r24 |
c12: 95 60 ori r25, 0x05 ; 5 |
c14: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_RS; |
c16: 81 60 ori r24, 0x01 ; 1 |
c18: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN | DISPLAY_RS; |
c1a: 82 2f mov r24, r18 |
c1c: 99 27 eor r25, r25 |
c1e: 54 e0 ldi r21, 0x04 ; 4 |
c20: 88 0f add r24, r24 |
c22: 99 1f adc r25, r25 |
c24: 5a 95 dec r21 |
c26: e1 f7 brne .-8 ; 0xc20 <lcd_write_byte+0x14> |
c28: 28 2f mov r18, r24 |
c2a: 25 60 ori r18, 0x05 ; 5 |
c2c: 25 bb out 0x15, r18 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_RS; |
c2e: 81 60 ori r24, 0x01 ; 1 |
c30: 85 bb out 0x15, r24 ; 21 |
c32: 08 95 ret |
00000c34 <my_pput>: |
} |
int my_pput(int zeichen) |
{ |
lcd_write_byte((char) zeichen); |
c34: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
c38: 81 e0 ldi r24, 0x01 ; 1 |
c3a: 90 e0 ldi r25, 0x00 ; 0 |
c3c: 08 95 ret |
00000c3e <LCD_Init>: |
// initialize the LCD controller |
void LCD_Init(void) |
{ |
LCD_PORT_DDR = 0xff;//0xf0 | DISPLAY_RS | DISPLAY_EN; |
c3e: 8f ef ldi r24, 0xFF ; 255 |
c40: 84 bb out 0x14, r24 ; 20 |
_long_delay(); |
c42: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c46: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c4a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c4e: 83 e0 ldi r24, 0x03 ; 3 |
c50: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c54: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c58: 83 e0 ldi r24, 0x03 ; 3 |
c5a: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c5e: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c62: 83 e0 ldi r24, 0x03 ; 3 |
c64: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c68: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x02); // jetzt 4 Bit |
c6c: 82 e0 ldi r24, 0x02 ; 2 |
c6e: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c72: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x28); // 4 Bit Zweizeilig |
c76: 88 e2 ldi r24, 0x28 ; 40 |
c78: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c7c: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08); // Display aus |
c80: 88 e0 ldi r24, 0x08 ; 8 |
c82: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c86: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x01); // Clear |
c8a: 81 e0 ldi r24, 0x01 ; 1 |
c8c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c90: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x06); //Entry mode |
c94: 86 e0 ldi r24, 0x06 ; 6 |
c96: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c9a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08 + 4); // Display an |
c9e: 8c e0 ldi r24, 0x0C ; 12 |
ca0: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
ca4: 0e 94 c9 05 call 0xb92 <_long_delay> |
ca8: 08 95 ret |
00000caa <LCD_Gotoxy>: |
} |
void LCD_Gotoxy(unsigned char x , unsigned char y) |
{ |
caa: 1f 93 push r17 |
cac: cf 93 push r28 |
cae: c8 2f mov r28, r24 |
cb0: 16 2f mov r17, r22 |
_short_delay(); |
cb2: 0e 94 d9 05 call 0xbb2 <_short_delay> |
switch(y) |
cb6: 81 2f mov r24, r17 |
cb8: 99 27 eor r25, r25 |
cba: 81 30 cpi r24, 0x01 ; 1 |
cbc: 91 05 cpc r25, r1 |
cbe: 79 f0 breq .+30 ; 0xcde <LCD_Gotoxy+0x34> |
cc0: 82 30 cpi r24, 0x02 ; 2 |
cc2: 91 05 cpc r25, r1 |
cc4: 1c f4 brge .+6 ; 0xccc <LCD_Gotoxy+0x22> |
cc6: 89 2b or r24, r25 |
cc8: 39 f0 breq .+14 ; 0xcd8 <LCD_Gotoxy+0x2e> |
cca: 13 c0 rjmp .+38 ; 0xcf2 <LCD_Gotoxy+0x48> |
ccc: 82 30 cpi r24, 0x02 ; 2 |
cce: 91 05 cpc r25, r1 |
cd0: 49 f0 breq .+18 ; 0xce4 <LCD_Gotoxy+0x3a> |
cd2: 03 97 sbiw r24, 0x03 ; 3 |
cd4: 51 f0 breq .+20 ; 0xcea <LCD_Gotoxy+0x40> |
cd6: 0d c0 rjmp .+26 ; 0xcf2 <LCD_Gotoxy+0x48> |
{ case 0 : _lcd_write_command(x + 0x80); break; |
cd8: 8c 2f mov r24, r28 |
cda: 80 58 subi r24, 0x80 ; 128 |
cdc: 08 c0 rjmp .+16 ; 0xcee <LCD_Gotoxy+0x44> |
case 1 : _lcd_write_command(x + 0xC0); break; |
cde: 8c 2f mov r24, r28 |
ce0: 80 54 subi r24, 0x40 ; 64 |
ce2: 05 c0 rjmp .+10 ; 0xcee <LCD_Gotoxy+0x44> |
case 2 : _lcd_write_command(x + (0x80 + 20)); break; |
ce4: 8c 2f mov r24, r28 |
ce6: 8c 56 subi r24, 0x6C ; 108 |
ce8: 02 c0 rjmp .+4 ; 0xcee <LCD_Gotoxy+0x44> |
case 3 : _lcd_write_command(x + (0xC0 + 20)); break; |
cea: 8c 2f mov r24, r28 |
cec: 8c 52 subi r24, 0x2C ; 44 |
cee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
cf2: cf 91 pop r28 |
cf4: 1f 91 pop r17 |
cf6: 08 95 ret |
00000cf8 <LCD_Write>: |
} |
} |
void LCD_Write(unsigned char *this_text) |
{ |
cf8: 1f 93 push r17 |
cfa: cf 93 push r28 |
cfc: df 93 push r29 |
cfe: ec 01 movw r28, r24 |
unsigned char i = 0; |
d00: 10 e0 ldi r17, 0x00 ; 0 |
while(this_text[i] != 0) |
{ |
lcd_write_byte(this_text[i++]); |
_long_delay(); |
d02: 88 81 ld r24, Y |
d04: 88 23 and r24, r24 |
d06: 79 f0 breq .+30 ; 0xd26 <LCD_Write+0x2e> |
d08: fe 01 movw r30, r28 |
d0a: e1 0f add r30, r17 |
d0c: f1 1d adc r31, r1 |
d0e: 1f 5f subi r17, 0xFF ; 255 |
d10: 80 81 ld r24, Z |
d12: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
d16: 0e 94 c9 05 call 0xb92 <_long_delay> |
d1a: fe 01 movw r30, r28 |
d1c: e1 0f add r30, r17 |
d1e: f1 1d adc r31, r1 |
d20: 80 81 ld r24, Z |
d22: 88 23 and r24, r24 |
d24: 89 f7 brne .-30 ; 0xd08 <LCD_Write+0x10> |
d26: df 91 pop r29 |
d28: cf 91 pop r28 |
d2a: 1f 91 pop r17 |
d2c: 08 95 ret |
00000d2e <LCD_Putchar>: |
} |
} |
char LCD_Putchar(char zeichen) |
{ |
d2e: 1f 93 push r17 |
d30: 18 2f mov r17, r24 |
_short_delay(); |
d32: 0e 94 d9 05 call 0xbb2 <_short_delay> |
lcd_write_byte((char) zeichen); |
d36: 81 2f mov r24, r17 |
d38: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
d3c: 81 e0 ldi r24, 0x01 ; 1 |
d3e: 90 e0 ldi r25, 0x00 ; 0 |
d40: 1f 91 pop r17 |
d42: 08 95 ret |
00000d44 <PRINT>: |
#include "old_macros.h" |
//#define LIGHTPRINTF |
void PRINT(const char * ptr, unsigned int len) { |
d44: 0f 93 push r16 |
d46: 1f 93 push r17 |
d48: cf 93 push r28 |
d4a: df 93 push r29 |
d4c: 8c 01 movw r16, r24 |
d4e: eb 01 movw r28, r22 |
for(;len;len--) |
d50: 67 2b or r22, r23 |
d52: 39 f0 breq .+14 ; 0xd62 <PRINT+0x1e> |
LCD_Putchar(*ptr++); |
d54: f8 01 movw r30, r16 |
d56: 81 91 ld r24, Z+ |
d58: 8f 01 movw r16, r30 |
d5a: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d5e: 21 97 sbiw r28, 0x01 ; 1 |
d60: c9 f7 brne .-14 ; 0xd54 <PRINT+0x10> |
d62: df 91 pop r29 |
d64: cf 91 pop r28 |
d66: 1f 91 pop r17 |
d68: 0f 91 pop r16 |
d6a: 08 95 ret |
00000d6c <PRINTP>: |
} |
void PRINTP(const char * ptr, unsigned int len) { |
d6c: 0f 93 push r16 |
d6e: 1f 93 push r17 |
d70: cf 93 push r28 |
d72: df 93 push r29 |
d74: 8c 01 movw r16, r24 |
d76: eb 01 movw r28, r22 |
for(;len;len--) |
d78: 67 2b or r22, r23 |
d7a: 41 f0 breq .+16 ; 0xd8c <PRINTP+0x20> |
// LCD_Putchar(PRG_RDB(ptr++)); |
LCD_Putchar(pgm_read_byte(ptr++)); |
d7c: f8 01 movw r30, r16 |
d7e: 0f 5f subi r16, 0xFF ; 255 |
d80: 1f 4f sbci r17, 0xFF ; 255 |
d82: 84 91 lpm r24, Z |
d84: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d88: 21 97 sbiw r28, 0x01 ; 1 |
d8a: c1 f7 brne .-16 ; 0xd7c <PRINTP+0x10> |
d8c: df 91 pop r29 |
d8e: cf 91 pop r28 |
d90: 1f 91 pop r17 |
d92: 0f 91 pop r16 |
d94: 08 95 ret |
00000d96 <PAD_SP>: |
} |
void PAD_SP(signed char howmany) { |
d96: cf 93 push r28 |
d98: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
d9a: 18 16 cp r1, r24 |
d9c: 34 f4 brge .+12 ; 0xdaa <PAD_SP+0x14> |
LCD_Putchar(' '); |
d9e: 80 e2 ldi r24, 0x20 ; 32 |
da0: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
da4: c1 50 subi r28, 0x01 ; 1 |
da6: 1c 16 cp r1, r28 |
da8: d4 f3 brlt .-12 ; 0xd9e <PAD_SP+0x8> |
daa: cf 91 pop r28 |
dac: 08 95 ret |
00000dae <PAD_0>: |
} |
void PAD_0(signed char howmany) { |
dae: cf 93 push r28 |
db0: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
db2: 18 16 cp r1, r24 |
db4: 34 f4 brge .+12 ; 0xdc2 <PAD_0+0x14> |
LCD_Putchar('0'); |
db6: 80 e3 ldi r24, 0x30 ; 48 |
db8: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
dbc: c1 50 subi r28, 0x01 ; 1 |
dbe: 1c 16 cp r1, r28 |
dc0: d4 f3 brlt .-12 ; 0xdb6 <PAD_0+0x8> |
dc2: cf 91 pop r28 |
dc4: 08 95 ret |
00000dc6 <_printf_P>: |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
dc6: 2f 92 push r2 |
dc8: 3f 92 push r3 |
dca: 4f 92 push r4 |
dcc: 5f 92 push r5 |
dce: 6f 92 push r6 |
dd0: 7f 92 push r7 |
dd2: 8f 92 push r8 |
dd4: 9f 92 push r9 |
dd6: af 92 push r10 |
dd8: bf 92 push r11 |
dda: cf 92 push r12 |
ddc: df 92 push r13 |
dde: ef 92 push r14 |
de0: ff 92 push r15 |
de2: 0f 93 push r16 |
de4: 1f 93 push r17 |
de6: cf 93 push r28 |
de8: df 93 push r29 |
dea: cd b7 in r28, 0x3d ; 61 |
dec: de b7 in r29, 0x3e ; 62 |
dee: e0 97 sbiw r28, 0x30 ; 48 |
df0: 0f b6 in r0, 0x3f ; 63 |
df2: f8 94 cli |
df4: de bf out 0x3e, r29 ; 62 |
df6: 0f be out 0x3f, r0 ; 63 |
df8: cd bf out 0x3d, r28 ; 61 |
dfa: a5 e4 ldi r26, 0x45 ; 69 |
dfc: 6a 2e mov r6, r26 |
dfe: 71 2c mov r7, r1 |
e00: 6c 0e add r6, r28 |
e02: 7d 1e adc r7, r29 |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
e04: 1c a6 std Y+44, r1 ; 0x2c |
e06: 1d a6 std Y+45, r1 ; 0x2d |
e08: 1e a6 std Y+46, r1 ; 0x2e |
e0a: 1f a6 std Y+47, r1 ; 0x2f |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
va_start(ap, fmt0); |
fmt = fmt0; |
e0c: d3 01 movw r26, r6 |
e0e: ad 90 ld r10, X+ |
e10: bd 90 ld r11, X+ |
e12: 3d 01 movw r6, r26 |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
e14: c5 01 movw r24, r10 |
e16: 05 c0 rjmp .+10 ; 0xe22 <_printf_P+0x5c> |
e18: 05 32 cpi r16, 0x25 ; 37 |
e1a: 39 f0 breq .+14 ; 0xe2a <_printf_P+0x64> |
e1c: 08 94 sec |
e1e: a1 1c adc r10, r1 |
e20: b1 1c adc r11, r1 |
e22: f5 01 movw r30, r10 |
e24: 04 91 lpm r16, Z |
e26: 00 23 and r16, r16 |
e28: b9 f7 brne .-18 ; 0xe18 <_printf_P+0x52> |
/* void */; |
if ((n = fmt - fmark) != 0) { |
e2a: b5 01 movw r22, r10 |
e2c: 68 1b sub r22, r24 |
e2e: 79 0b sbc r23, r25 |
e30: 11 f0 breq .+4 ; 0xe36 <_printf_P+0x70> |
PRINTP(fmark, n); |
e32: 0e 94 b6 06 call 0xd6c <PRINTP> |
} |
if (ch == '\0') |
e36: 00 23 and r16, r16 |
e38: 09 f4 brne .+2 ; 0xe3c <_printf_P+0x76> |
e3a: 30 c2 rjmp .+1120 ; 0x129c <_printf_P+0x4d6> |
goto done; |
fmt++; /* skip over '%' */ |
e3c: 08 94 sec |
e3e: a1 1c adc r10, r1 |
e40: b1 1c adc r11, r1 |
flags = 0; |
e42: 55 24 eor r5, r5 |
dprec = 0; |
e44: 58 aa std Y+48, r5 ; 0x30 |
width = 0; |
e46: 25 2c mov r2, r5 |
prec = -1; |
e48: 1f ef ldi r17, 0xFF ; 255 |
sign = '\0'; |
e4a: 59 a6 std Y+41, r5 ; 0x29 |
rflag: ch = PRG_RDB(fmt++); |
e4c: f5 01 movw r30, r10 |
e4e: 08 94 sec |
e50: a1 1c adc r10, r1 |
e52: b1 1c adc r11, r1 |
e54: 04 91 lpm r16, Z |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
e56: 05 37 cpi r16, 0x75 ; 117 |
e58: 21 f0 breq .+8 ; 0xe62 <_printf_P+0x9c> |
e5a: 80 2f mov r24, r16 |
e5c: 80 62 ori r24, 0x20 ; 32 |
e5e: 88 37 cpi r24, 0x78 ; 120 |
e60: f1 f4 brne .+60 ; 0xe9e <_printf_P+0xd8> |
#endif |
if (flags&LONGINT) { |
e62: 50 fe sbrs r5, 0 |
e64: 0e c0 rjmp .+28 ; 0xe82 <_printf_P+0xbc> |
_ulong=va_arg(ap, unsigned long); |
e66: f3 01 movw r30, r6 |
e68: 24 e0 ldi r18, 0x04 ; 4 |
e6a: 30 e0 ldi r19, 0x00 ; 0 |
e6c: 62 0e add r6, r18 |
e6e: 73 1e adc r7, r19 |
e70: 80 81 ld r24, Z |
e72: 91 81 ldd r25, Z+1 ; 0x01 |
e74: a2 81 ldd r26, Z+2 ; 0x02 |
e76: b3 81 ldd r27, Z+3 ; 0x03 |
e78: 8c a7 std Y+44, r24 ; 0x2c |
e7a: 9d a7 std Y+45, r25 ; 0x2d |
e7c: ae a7 std Y+46, r26 ; 0x2e |
e7e: bf a7 std Y+47, r27 ; 0x2f |
e80: 0e c0 rjmp .+28 ; 0xe9e <_printf_P+0xd8> |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
e82: f3 01 movw r30, r6 |
e84: a2 e0 ldi r26, 0x02 ; 2 |
e86: b0 e0 ldi r27, 0x00 ; 0 |
e88: 6a 0e add r6, r26 |
e8a: 7b 1e adc r7, r27 |
e8c: 80 81 ld r24, Z |
e8e: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
e90: 9c 01 movw r18, r24 |
e92: 44 27 eor r20, r20 |
e94: 55 27 eor r21, r21 |
e96: 2c a7 std Y+44, r18 ; 0x2c |
e98: 3d a7 std Y+45, r19 ; 0x2d |
e9a: 4e a7 std Y+46, r20 ; 0x2e |
e9c: 5f a7 std Y+47, r21 ; 0x2f |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
e9e: 00 32 cpi r16, 0x20 ; 32 |
ea0: 21 f4 brne .+8 ; 0xeaa <_printf_P+0xe4> |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
ea2: 89 a5 ldd r24, Y+41 ; 0x29 |
ea4: 88 23 and r24, r24 |
ea6: 91 f6 brne .-92 ; 0xe4c <_printf_P+0x86> |
ea8: 1b c0 rjmp .+54 ; 0xee0 <_printf_P+0x11a> |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
eaa: 03 32 cpi r16, 0x23 ; 35 |
eac: 11 f4 brne .+4 ; 0xeb2 <_printf_P+0xec> |
flags |= ALT; |
eae: 38 e0 ldi r19, 0x08 ; 8 |
eb0: 81 c0 rjmp .+258 ; 0xfb4 <_printf_P+0x1ee> |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
eb2: 0a 32 cpi r16, 0x2A ; 42 |
eb4: 11 f0 breq .+4 ; 0xeba <_printf_P+0xf4> |
eb6: 0d 32 cpi r16, 0x2D ; 45 |
eb8: 89 f4 brne .+34 ; 0xedc <_printf_P+0x116> |
if (ch=='*') { |
eba: 0a 32 cpi r16, 0x2A ; 42 |
ebc: 51 f4 brne .+20 ; 0xed2 <_printf_P+0x10c> |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
ebe: f3 01 movw r30, r6 |
ec0: 42 e0 ldi r20, 0x02 ; 2 |
ec2: 50 e0 ldi r21, 0x00 ; 0 |
ec4: 64 0e add r6, r20 |
ec6: 75 1e adc r7, r21 |
ec8: 20 80 ld r2, Z |
eca: 22 20 and r2, r2 |
ecc: 0c f0 brlt .+2 ; 0xed0 <_printf_P+0x10a> |
ece: be cf rjmp .-132 ; 0xe4c <_printf_P+0x86> |
goto rflag; |
width = -width; |
ed0: 21 94 neg r2 |
} |
flags |= LADJUST; |
ed2: 50 e1 ldi r21, 0x10 ; 16 |
ed4: 55 2a or r5, r21 |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
ed6: 8f ed ldi r24, 0xDF ; 223 |
ed8: 58 22 and r5, r24 |
goto rflag; |
eda: b8 cf rjmp .-144 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='+') { |
edc: 0b 32 cpi r16, 0x2B ; 43 |
ede: 11 f4 brne .+4 ; 0xee4 <_printf_P+0x11e> |
sign = '+'; |
ee0: 09 a7 std Y+41, r16 ; 0x29 |
goto rflag; |
ee2: b4 cf rjmp .-152 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='.') { |
ee4: 0e 32 cpi r16, 0x2E ; 46 |
ee6: c1 f5 brne .+112 ; 0xf58 <_printf_P+0x192> |
if ((ch = PRG_RDB(fmt++)) == '*') { |
ee8: f5 01 movw r30, r10 |
eea: 08 94 sec |
eec: a1 1c adc r10, r1 |
eee: b1 1c adc r11, r1 |
ef0: 04 91 lpm r16, Z |
ef2: 0a 32 cpi r16, 0x2A ; 42 |
ef4: 79 f4 brne .+30 ; 0xf14 <_printf_P+0x14e> |
n = va_arg(ap, int); |
ef6: f3 01 movw r30, r6 |
ef8: a2 e0 ldi r26, 0x02 ; 2 |
efa: b0 e0 ldi r27, 0x00 ; 0 |
efc: 6a 0e add r6, r26 |
efe: 7b 1e adc r7, r27 |
f00: 60 81 ld r22, Z |
f02: 71 81 ldd r23, Z+1 ; 0x01 |
prec = n < 0 ? -1 : n; |
f04: bf ef ldi r27, 0xFF ; 255 |
f06: 6f 3f cpi r22, 0xFF ; 255 |
f08: 7b 07 cpc r23, r27 |
f0a: 14 f4 brge .+4 ; 0xf10 <_printf_P+0x14a> |
f0c: 6f ef ldi r22, 0xFF ; 255 |
f0e: 7f ef ldi r23, 0xFF ; 255 |
f10: 16 2f mov r17, r22 |
goto rflag; |
f12: 9c cf rjmp .-200 ; 0xe4c <_printf_P+0x86> |
} |
n = 0; |
f14: 60 e0 ldi r22, 0x00 ; 0 |
f16: 70 e0 ldi r23, 0x00 ; 0 |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
f18: 80 2f mov r24, r16 |
f1a: 80 53 subi r24, 0x30 ; 48 |
f1c: 8a 30 cpi r24, 0x0A ; 10 |
f1e: a0 f4 brcc .+40 ; 0xf48 <_printf_P+0x182> |
f20: cb 01 movw r24, r22 |
f22: f3 e0 ldi r31, 0x03 ; 3 |
f24: 88 0f add r24, r24 |
f26: 99 1f adc r25, r25 |
f28: fa 95 dec r31 |
f2a: e1 f7 brne .-8 ; 0xf24 <_printf_P+0x15e> |
f2c: 86 0f add r24, r22 |
f2e: 97 1f adc r25, r23 |
f30: 68 0f add r22, r24 |
f32: 79 1f adc r23, r25 |
f34: 60 0f add r22, r16 |
f36: 71 1d adc r23, r1 |
f38: 60 53 subi r22, 0x30 ; 48 |
f3a: 70 40 sbci r23, 0x00 ; 0 |
f3c: f5 01 movw r30, r10 |
f3e: 08 94 sec |
f40: a1 1c adc r10, r1 |
f42: b1 1c adc r11, r1 |
f44: 04 91 lpm r16, Z |
f46: e8 cf rjmp .-48 ; 0xf18 <_printf_P+0x152> |
} |
prec = n < 0 ? -1 : n; |
f48: ef ef ldi r30, 0xFF ; 255 |
f4a: 6f 3f cpi r22, 0xFF ; 255 |
f4c: 7e 07 cpc r23, r30 |
f4e: 14 f4 brge .+4 ; 0xf54 <_printf_P+0x18e> |
f50: 6f ef ldi r22, 0xFF ; 255 |
f52: 7f ef ldi r23, 0xFF ; 255 |
f54: 16 2f mov r17, r22 |
goto reswitch; |
f56: 7f cf rjmp .-258 ; 0xe56 <_printf_P+0x90> |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
f58: 00 33 cpi r16, 0x30 ; 48 |
f5a: 29 f4 brne .+10 ; 0xf66 <_printf_P+0x1a0> |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
f5c: 54 fc sbrc r5, 4 |
f5e: 76 cf rjmp .-276 ; 0xe4c <_printf_P+0x86> |
flags |= ZEROPAD; /* '-' disables '0' */ |
f60: f0 e2 ldi r31, 0x20 ; 32 |
f62: 5f 2a or r5, r31 |
goto rflag; |
f64: 73 cf rjmp .-282 ; 0xe4c <_printf_P+0x86> |
} else if (ch>='1' && ch<='9') { |
f66: 80 2f mov r24, r16 |
f68: 81 53 subi r24, 0x31 ; 49 |
f6a: 89 30 cpi r24, 0x09 ; 9 |
f6c: d8 f4 brcc .+54 ; 0xfa4 <_printf_P+0x1de> |
n = 0; |
f6e: 60 e0 ldi r22, 0x00 ; 0 |
f70: 70 e0 ldi r23, 0x00 ; 0 |
do { |
n = 10 * n + to_digit(ch); |
f72: cb 01 movw r24, r22 |
f74: e3 e0 ldi r30, 0x03 ; 3 |
f76: 88 0f add r24, r24 |
f78: 99 1f adc r25, r25 |
f7a: ea 95 dec r30 |
f7c: e1 f7 brne .-8 ; 0xf76 <_printf_P+0x1b0> |
f7e: 86 0f add r24, r22 |
f80: 97 1f adc r25, r23 |
f82: 68 0f add r22, r24 |
f84: 79 1f adc r23, r25 |
f86: 60 0f add r22, r16 |
f88: 71 1d adc r23, r1 |
f8a: 60 53 subi r22, 0x30 ; 48 |
f8c: 70 40 sbci r23, 0x00 ; 0 |
ch = PRG_RDB(fmt++); |
f8e: f5 01 movw r30, r10 |
f90: 08 94 sec |
f92: a1 1c adc r10, r1 |
f94: b1 1c adc r11, r1 |
f96: 04 91 lpm r16, Z |
} while (is_digit(ch)); |
f98: 80 2f mov r24, r16 |
f9a: 80 53 subi r24, 0x30 ; 48 |
f9c: 8a 30 cpi r24, 0x0A ; 10 |
f9e: 48 f3 brcs .-46 ; 0xf72 <_printf_P+0x1ac> |
width = n; |
fa0: 26 2e mov r2, r22 |
goto reswitch; |
fa2: 59 cf rjmp .-334 ; 0xe56 <_printf_P+0x90> |
} else if (ch=='h') { |
fa4: 08 36 cpi r16, 0x68 ; 104 |
fa6: 19 f4 brne .+6 ; 0xfae <_printf_P+0x1e8> |
flags |= SHORTINT; |
fa8: 24 e0 ldi r18, 0x04 ; 4 |
faa: 52 2a or r5, r18 |
goto rflag; |
fac: 4f cf rjmp .-354 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='l') { |
fae: 0c 36 cpi r16, 0x6C ; 108 |
fb0: 19 f4 brne .+6 ; 0xfb8 <_printf_P+0x1f2> |
flags |= LONGINT; |
fb2: 31 e0 ldi r19, 0x01 ; 1 |
fb4: 53 2a or r5, r19 |
goto rflag; |
fb6: 4a cf rjmp .-364 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='c') { |
fb8: 03 36 cpi r16, 0x63 ; 99 |
fba: 61 f4 brne .+24 ; 0xfd4 <_printf_P+0x20e> |
*(cp = buf) = va_arg(ap, int); |
fbc: 4e 01 movw r8, r28 |
fbe: 08 94 sec |
fc0: 81 1c adc r8, r1 |
fc2: 91 1c adc r9, r1 |
fc4: f3 01 movw r30, r6 |
fc6: 42 e0 ldi r20, 0x02 ; 2 |
fc8: 50 e0 ldi r21, 0x00 ; 0 |
fca: 64 0e add r6, r20 |
fcc: 75 1e adc r7, r21 |
fce: 80 81 ld r24, Z |
fd0: 89 83 std Y+1, r24 ; 0x01 |
fd2: 1b c1 rjmp .+566 ; 0x120a <_printf_P+0x444> |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
fd4: 04 34 cpi r16, 0x44 ; 68 |
fd6: 21 f0 breq .+8 ; 0xfe0 <_printf_P+0x21a> |
fd8: 04 36 cpi r16, 0x64 ; 100 |
fda: 11 f0 breq .+4 ; 0xfe0 <_printf_P+0x21a> |
fdc: 09 36 cpi r16, 0x69 ; 105 |
fde: b1 f5 brne .+108 ; 0x104c <_printf_P+0x286> |
if(ch=='D') |
fe0: 04 34 cpi r16, 0x44 ; 68 |
fe2: 11 f4 brne .+4 ; 0xfe8 <_printf_P+0x222> |
flags |= LONGINT; |
fe4: 51 e0 ldi r21, 0x01 ; 1 |
fe6: 55 2a or r5, r21 |
if (flags&LONGINT) { |
fe8: 50 fe sbrs r5, 0 |
fea: 0a c0 rjmp .+20 ; 0x1000 <_printf_P+0x23a> |
_ulong=va_arg(ap, long); |
fec: f3 01 movw r30, r6 |
fee: 84 e0 ldi r24, 0x04 ; 4 |
ff0: 90 e0 ldi r25, 0x00 ; 0 |
ff2: 68 0e add r6, r24 |
ff4: 79 1e adc r7, r25 |
ff6: 20 81 ld r18, Z |
ff8: 31 81 ldd r19, Z+1 ; 0x01 |
ffa: 42 81 ldd r20, Z+2 ; 0x02 |
ffc: 53 81 ldd r21, Z+3 ; 0x03 |
ffe: 0c c0 rjmp .+24 ; 0x1018 <_printf_P+0x252> |
} else { |
register int _d; |
_d=va_arg(ap, int); |
1000: f3 01 movw r30, r6 |
1002: 42 e0 ldi r20, 0x02 ; 2 |
1004: 50 e0 ldi r21, 0x00 ; 0 |
1006: 64 0e add r6, r20 |
1008: 75 1e adc r7, r21 |
100a: 80 81 ld r24, Z |
100c: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
100e: 9c 01 movw r18, r24 |
1010: 44 27 eor r20, r20 |
1012: 37 fd sbrc r19, 7 |
1014: 40 95 com r20 |
1016: 54 2f mov r21, r20 |
1018: 2c a7 std Y+44, r18 ; 0x2c |
101a: 3d a7 std Y+45, r19 ; 0x2d |
101c: 4e a7 std Y+46, r20 ; 0x2e |
101e: 5f a7 std Y+47, r21 ; 0x2f |
} |
if ((long)_ulong < 0) { |
1020: 8c a5 ldd r24, Y+44 ; 0x2c |
1022: 9d a5 ldd r25, Y+45 ; 0x2d |
1024: ae a5 ldd r26, Y+46 ; 0x2e |
1026: bf a5 ldd r27, Y+47 ; 0x2f |
1028: b7 ff sbrs r27, 7 |
102a: 0d c0 rjmp .+26 ; 0x1046 <_printf_P+0x280> |
_ulong = -_ulong; |
102c: b0 95 com r27 |
102e: a0 95 com r26 |
1030: 90 95 com r25 |
1032: 81 95 neg r24 |
1034: 9f 4f sbci r25, 0xFF ; 255 |
1036: af 4f sbci r26, 0xFF ; 255 |
1038: bf 4f sbci r27, 0xFF ; 255 |
103a: 8c a7 std Y+44, r24 ; 0x2c |
103c: 9d a7 std Y+45, r25 ; 0x2d |
103e: ae a7 std Y+46, r26 ; 0x2e |
1040: bf a7 std Y+47, r27 ; 0x2f |
sign = '-'; |
1042: 8d e2 ldi r24, 0x2D ; 45 |
1044: 89 a7 std Y+41, r24 ; 0x29 |
} |
base = DEC; |
1046: 7a e0 ldi r23, 0x0A ; 10 |
1048: 47 2e mov r4, r23 |
goto number; |
104a: 7b c0 rjmp .+246 ; 0x1142 <_printf_P+0x37c> |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
104c: 0f 34 cpi r16, 0x4F ; 79 |
104e: 11 f0 breq .+4 ; 0x1054 <_printf_P+0x28e> |
1050: 0f 36 cpi r16, 0x6F ; 111 |
1052: 39 f4 brne .+14 ; 0x1062 <_printf_P+0x29c> |
if (ch=='O') |
1054: 0f 34 cpi r16, 0x4F ; 79 |
1056: 11 f4 brne .+4 ; 0x105c <_printf_P+0x296> |
flags |= LONGINT; |
1058: 91 e0 ldi r25, 0x01 ; 1 |
105a: 59 2a or r5, r25 |
base = OCT; |
105c: 68 e0 ldi r22, 0x08 ; 8 |
105e: 46 2e mov r4, r22 |
goto nosign; |
1060: 6f c0 rjmp .+222 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='p') { |
1062: 00 37 cpi r16, 0x70 ; 112 |
1064: a1 f4 brne .+40 ; 0x108e <_printf_P+0x2c8> |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
1066: f3 01 movw r30, r6 |
1068: a2 e0 ldi r26, 0x02 ; 2 |
106a: b0 e0 ldi r27, 0x00 ; 0 |
106c: 6a 0e add r6, r26 |
106e: 7b 1e adc r7, r27 |
1070: 80 81 ld r24, Z |
1072: 91 81 ldd r25, Z+1 ; 0x01 |
1074: 9c 01 movw r18, r24 |
1076: 44 27 eor r20, r20 |
1078: 55 27 eor r21, r21 |
107a: 2c a7 std Y+44, r18 ; 0x2c |
107c: 3d a7 std Y+45, r19 ; 0x2d |
107e: 4e a7 std Y+46, r20 ; 0x2e |
1080: 5f a7 std Y+47, r21 ; 0x2f |
base = HEX; |
1082: 50 e1 ldi r21, 0x10 ; 16 |
1084: 45 2e mov r4, r21 |
flags |= HEXPREFIX; |
1086: 30 e4 ldi r19, 0x40 ; 64 |
1088: 53 2a or r5, r19 |
ch = 'x'; |
108a: 08 e7 ldi r16, 0x78 ; 120 |
goto nosign; |
108c: 59 c0 rjmp .+178 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='s') { // print a string from RAM |
108e: 03 37 cpi r16, 0x73 ; 115 |
1090: c1 f5 brne .+112 ; 0x1102 <_printf_P+0x33c> |
if ((cp = va_arg(ap, char *)) == NULL) { |
1092: f3 01 movw r30, r6 |
1094: 42 e0 ldi r20, 0x02 ; 2 |
1096: 50 e0 ldi r21, 0x00 ; 0 |
1098: 64 0e add r6, r20 |
109a: 75 1e adc r7, r21 |
109c: 80 80 ld r8, Z |
109e: 91 80 ldd r9, Z+1 ; 0x01 |
10a0: 81 14 cp r8, r1 |
10a2: 91 04 cpc r9, r1 |
10a4: 89 f4 brne .+34 ; 0x10c8 <_printf_P+0x302> |
cp=buf; |
10a6: 4e 01 movw r8, r28 |
10a8: 08 94 sec |
10aa: 81 1c adc r8, r1 |
10ac: 91 1c adc r9, r1 |
cp[0] = '('; |
10ae: 88 e2 ldi r24, 0x28 ; 40 |
10b0: 89 83 std Y+1, r24 ; 0x01 |
cp[1] = 'n'; |
10b2: 8e e6 ldi r24, 0x6E ; 110 |
10b4: f4 01 movw r30, r8 |
10b6: 81 83 std Z+1, r24 ; 0x01 |
cp[2] = 'u'; |
10b8: 85 e7 ldi r24, 0x75 ; 117 |
10ba: 8b 83 std Y+3, r24 ; 0x03 |
cp[4] = cp[3] = 'l'; |
10bc: 8c e6 ldi r24, 0x6C ; 108 |
10be: 8c 83 std Y+4, r24 ; 0x04 |
10c0: 8d 83 std Y+5, r24 ; 0x05 |
cp[5] = ')'; |
10c2: 89 e2 ldi r24, 0x29 ; 41 |
10c4: 8e 83 std Y+6, r24 ; 0x06 |
cp[6] = '\0'; |
10c6: 1f 82 std Y+7, r1 ; 0x07 |
} |
if (prec >= 0) { |
10c8: 17 fd sbrc r17, 7 |
10ca: 13 c0 rjmp .+38 ; 0x10f2 <_printf_P+0x32c> |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
10cc: 81 2f mov r24, r17 |
10ce: 99 27 eor r25, r25 |
10d0: 87 fd sbrc r24, 7 |
10d2: 90 95 com r25 |
10d4: ac 01 movw r20, r24 |
10d6: 60 e0 ldi r22, 0x00 ; 0 |
10d8: 70 e0 ldi r23, 0x00 ; 0 |
10da: c4 01 movw r24, r8 |
10dc: 0e 94 64 0c call 0x18c8 <memchr> |
if (p != NULL) { |
10e0: 00 97 sbiw r24, 0x00 ; 0 |
10e2: 29 f0 breq .+10 ; 0x10ee <_printf_P+0x328> |
size = p - cp; |
10e4: d8 2e mov r13, r24 |
10e6: d8 18 sub r13, r8 |
if (size > prec) |
10e8: 1d 15 cp r17, r13 |
10ea: 0c f0 brlt .+2 ; 0x10ee <_printf_P+0x328> |
10ec: 90 c0 rjmp .+288 ; 0x120e <_printf_P+0x448> |
size = prec; |
} else |
size = prec; |
10ee: d1 2e mov r13, r17 |
10f0: 8e c0 rjmp .+284 ; 0x120e <_printf_P+0x448> |
} else |
size = strlen(cp); |
10f2: f4 01 movw r30, r8 |
10f4: 01 90 ld r0, Z+ |
10f6: 00 20 and r0, r0 |
10f8: e9 f7 brne .-6 ; 0x10f4 <_printf_P+0x32e> |
10fa: 31 97 sbiw r30, 0x01 ; 1 |
10fc: de 2e mov r13, r30 |
10fe: d8 18 sub r13, r8 |
1100: 86 c0 rjmp .+268 ; 0x120e <_printf_P+0x448> |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
1102: 05 35 cpi r16, 0x55 ; 85 |
1104: 11 f0 breq .+4 ; 0x110a <_printf_P+0x344> |
1106: 05 37 cpi r16, 0x75 ; 117 |
1108: 39 f4 brne .+14 ; 0x1118 <_printf_P+0x352> |
if (ch=='U') |
110a: 05 35 cpi r16, 0x55 ; 85 |
110c: 11 f4 brne .+4 ; 0x1112 <_printf_P+0x34c> |
flags |= LONGINT; |
110e: f1 e0 ldi r31, 0x01 ; 1 |
1110: 5f 2a or r5, r31 |
base = DEC; |
1112: 4a e0 ldi r20, 0x0A ; 10 |
1114: 44 2e mov r4, r20 |
goto nosign; |
1116: 14 c0 rjmp .+40 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='X'||ch=='x') { |
1118: 08 35 cpi r16, 0x58 ; 88 |
111a: 19 f0 breq .+6 ; 0x1122 <_printf_P+0x35c> |
111c: 08 37 cpi r16, 0x78 ; 120 |
111e: 09 f0 breq .+2 ; 0x1122 <_printf_P+0x35c> |
1120: 6c c0 rjmp .+216 ; 0x11fa <_printf_P+0x434> |
base = HEX; |
1122: 30 e1 ldi r19, 0x10 ; 16 |
1124: 43 2e mov r4, r19 |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
1126: 53 fe sbrs r5, 3 |
1128: 0b c0 rjmp .+22 ; 0x1140 <_printf_P+0x37a> |
112a: 2c a5 ldd r18, Y+44 ; 0x2c |
112c: 3d a5 ldd r19, Y+45 ; 0x2d |
112e: 4e a5 ldd r20, Y+46 ; 0x2e |
1130: 5f a5 ldd r21, Y+47 ; 0x2f |
1132: 21 15 cp r18, r1 |
1134: 31 05 cpc r19, r1 |
1136: 41 05 cpc r20, r1 |
1138: 51 05 cpc r21, r1 |
113a: 11 f0 breq .+4 ; 0x1140 <_printf_P+0x37a> |
flags |= HEXPREFIX; |
113c: 30 e4 ldi r19, 0x40 ; 64 |
113e: 53 2a or r5, r19 |
/* unsigned conversions */ |
nosign: sign = '\0'; |
1140: 19 a6 std Y+41, r1 ; 0x29 |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
1142: 18 ab std Y+48, r17 ; 0x30 |
1144: 17 fd sbrc r17, 7 |
1146: 02 c0 rjmp .+4 ; 0x114c <_printf_P+0x386> |
flags &= ~ZEROPAD; |
1148: 4f ed ldi r20, 0xDF ; 223 |
114a: 54 22 and r5, r20 |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
114c: 29 e2 ldi r18, 0x29 ; 41 |
114e: 82 2e mov r8, r18 |
1150: 91 2c mov r9, r1 |
1152: 8c 0e add r8, r28 |
1154: 9d 1e adc r9, r29 |
if (_ulong != 0 || prec != 0) { |
1156: 8c a5 ldd r24, Y+44 ; 0x2c |
1158: 9d a5 ldd r25, Y+45 ; 0x2d |
115a: ae a5 ldd r26, Y+46 ; 0x2e |
115c: bf a5 ldd r27, Y+47 ; 0x2f |
115e: 00 97 sbiw r24, 0x00 ; 0 |
1160: a1 05 cpc r26, r1 |
1162: b1 05 cpc r27, r1 |
1164: 21 f4 brne .+8 ; 0x116e <_printf_P+0x3a8> |
1166: 98 a9 ldd r25, Y+48 ; 0x30 |
1168: 99 23 and r25, r25 |
116a: 09 f4 brne .+2 ; 0x116e <_printf_P+0x3a8> |
116c: 3f c0 rjmp .+126 ; 0x11ec <_printf_P+0x426> |
116e: c4 2c mov r12, r4 |
1170: dd 24 eor r13, r13 |
1172: ee 24 eor r14, r14 |
1174: ff 24 eor r15, r15 |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
1176: 33 24 eor r3, r3 |
1178: 2c a5 ldd r18, Y+44 ; 0x2c |
117a: 3d a5 ldd r19, Y+45 ; 0x2d |
117c: 4e a5 ldd r20, Y+46 ; 0x2e |
117e: 5f a5 ldd r21, Y+47 ; 0x2f |
1180: 2c 15 cp r18, r12 |
1182: 3d 05 cpc r19, r13 |
1184: 4e 05 cpc r20, r14 |
1186: 5f 05 cpc r21, r15 |
1188: 10 f0 brcs .+4 ; 0x118e <_printf_P+0x3c8> |
118a: 91 e0 ldi r25, 0x01 ; 1 |
118c: 39 2e mov r3, r25 |
_d = _ulong % base; |
118e: 6c a5 ldd r22, Y+44 ; 0x2c |
1190: 7d a5 ldd r23, Y+45 ; 0x2d |
1192: 8e a5 ldd r24, Y+46 ; 0x2e |
1194: 9f a5 ldd r25, Y+47 ; 0x2f |
1196: a7 01 movw r20, r14 |
1198: 96 01 movw r18, r12 |
119a: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
119e: dc 01 movw r26, r24 |
11a0: cb 01 movw r24, r22 |
11a2: 18 2f mov r17, r24 |
if (_d<10) { |
11a4: 8a 30 cpi r24, 0x0A ; 10 |
11a6: 10 f4 brcc .+4 ; 0x11ac <_printf_P+0x3e6> |
_d+='0'; |
11a8: 10 5d subi r17, 0xD0 ; 208 |
11aa: 04 c0 rjmp .+8 ; 0x11b4 <_printf_P+0x3ee> |
} else { |
_d+='a'-10; |
11ac: 19 5a subi r17, 0xA9 ; 169 |
if (ch=='X') _d&=~0x20; |
11ae: 08 35 cpi r16, 0x58 ; 88 |
11b0: 09 f4 brne .+2 ; 0x11b4 <_printf_P+0x3ee> |
11b2: 1f 7d andi r17, 0xDF ; 223 |
} |
*--cp=_d; |
11b4: d4 01 movw r26, r8 |
11b6: 1e 93 st -X, r17 |
11b8: 4d 01 movw r8, r26 |
_ulong /= base; |
11ba: 6c a5 ldd r22, Y+44 ; 0x2c |
11bc: 7d a5 ldd r23, Y+45 ; 0x2d |
11be: 8e a5 ldd r24, Y+46 ; 0x2e |
11c0: 9f a5 ldd r25, Y+47 ; 0x2f |
11c2: a7 01 movw r20, r14 |
11c4: 96 01 movw r18, r12 |
11c6: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
11ca: 2c a7 std Y+44, r18 ; 0x2c |
11cc: 3d a7 std Y+45, r19 ; 0x2d |
11ce: 4e a7 std Y+46, r20 ; 0x2e |
11d0: 5f a7 std Y+47, r21 ; 0x2f |
} while (notlastdigit); |
11d2: 33 20 and r3, r3 |
11d4: 81 f6 brne .-96 ; 0x1176 <_printf_P+0x3b0> |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
11d6: b8 e0 ldi r27, 0x08 ; 8 |
11d8: 4b 16 cp r4, r27 |
11da: 41 f4 brne .+16 ; 0x11ec <_printf_P+0x426> |
11dc: 53 fe sbrs r5, 3 |
11de: 06 c0 rjmp .+12 ; 0x11ec <_printf_P+0x426> |
11e0: 10 33 cpi r17, 0x30 ; 48 |
11e2: 21 f0 breq .+8 ; 0x11ec <_printf_P+0x426> |
*--cp = '0'; |
11e4: 80 e3 ldi r24, 0x30 ; 48 |
11e6: f4 01 movw r30, r8 |
11e8: 82 93 st -Z, r24 |
11ea: 4f 01 movw r8, r30 |
#endif |
} |
size = buf + BUF - cp; |
11ec: ce 01 movw r24, r28 |
11ee: 01 96 adiw r24, 0x01 ; 1 |
11f0: d8 2e mov r13, r24 |
11f2: d8 18 sub r13, r8 |
11f4: f8 e2 ldi r31, 0x28 ; 40 |
11f6: df 0e add r13, r31 |
11f8: 0b c0 rjmp .+22 ; 0x1210 <_printf_P+0x44a> |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
11fa: 00 23 and r16, r16 |
11fc: 09 f4 brne .+2 ; 0x1200 <_printf_P+0x43a> |
11fe: 4e c0 rjmp .+156 ; 0x129c <_printf_P+0x4d6> |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
1200: 4e 01 movw r8, r28 |
1202: 08 94 sec |
1204: 81 1c adc r8, r1 |
1206: 91 1c adc r9, r1 |
*cp = ch; |
1208: 09 83 std Y+1, r16 ; 0x01 |
size = 1; |
120a: 81 e0 ldi r24, 0x01 ; 1 |
120c: d8 2e mov r13, r24 |
sign = '\0'; |
120e: 19 a6 std Y+41, r1 ; 0x29 |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
1210: 1d 2d mov r17, r13 |
dpad = dprec - size; |
1212: c8 a8 ldd r12, Y+48 ; 0x30 |
1214: cd 18 sub r12, r13 |
if (dpad < 0) |
1216: c7 fc sbrc r12, 7 |
dpad = 0; |
1218: cc 24 eor r12, r12 |
if (sign) |
121a: 89 a5 ldd r24, Y+41 ; 0x29 |
121c: 88 23 and r24, r24 |
121e: 11 f0 breq .+4 ; 0x1224 <_printf_P+0x45e> |
fieldsz++; |
1220: 1f 5f subi r17, 0xFF ; 255 |
1222: 02 c0 rjmp .+4 ; 0x1228 <_printf_P+0x462> |
else if (flags & HEXPREFIX) |
1224: 56 fc sbrc r5, 6 |
fieldsz += 2; |
1226: 1e 5f subi r17, 0xFE ; 254 |
fieldsz += dpad; |
1228: 1c 0d add r17, r12 |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
122a: e5 2c mov r14, r5 |
122c: ff 24 eor r15, r15 |
122e: c7 01 movw r24, r14 |
1230: 80 73 andi r24, 0x30 ; 48 |
1232: 90 70 andi r25, 0x00 ; 0 |
1234: 89 2b or r24, r25 |
1236: 21 f4 brne .+8 ; 0x1240 <_printf_P+0x47a> |
PAD_SP(width - fieldsz); |
1238: 82 2d mov r24, r2 |
123a: 81 1b sub r24, r17 |
123c: 0e 94 cb 06 call 0xd96 <PAD_SP> |
/* prefix */ |
if (sign) { |
1240: 89 a5 ldd r24, Y+41 ; 0x29 |
1242: 88 23 and r24, r24 |
1244: 29 f0 breq .+10 ; 0x1250 <_printf_P+0x48a> |
PRINT(&sign, 1); |
1246: 61 e0 ldi r22, 0x01 ; 1 |
1248: 70 e0 ldi r23, 0x00 ; 0 |
124a: ce 01 movw r24, r28 |
124c: 89 96 adiw r24, 0x29 ; 41 |
124e: 09 c0 rjmp .+18 ; 0x1262 <_printf_P+0x49c> |
} else if (flags & HEXPREFIX) { |
1250: e6 fe sbrs r14, 6 |
1252: 09 c0 rjmp .+18 ; 0x1266 <_printf_P+0x4a0> |
ox[0] = '0'; |
1254: 80 e3 ldi r24, 0x30 ; 48 |
1256: 8a a7 std Y+42, r24 ; 0x2a |
ox[1] = ch; |
1258: 0b a7 std Y+43, r16 ; 0x2b |
PRINT(ox, 2); |
125a: 62 e0 ldi r22, 0x02 ; 2 |
125c: 70 e0 ldi r23, 0x00 ; 0 |
125e: ce 01 movw r24, r28 |
1260: 8a 96 adiw r24, 0x2a ; 42 |
1262: 0e 94 a2 06 call 0xd44 <PRINT> |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
1266: c7 01 movw r24, r14 |
1268: 80 73 andi r24, 0x30 ; 48 |
126a: 90 70 andi r25, 0x00 ; 0 |
126c: 80 97 sbiw r24, 0x20 ; 32 |
126e: 21 f4 brne .+8 ; 0x1278 <_printf_P+0x4b2> |
PAD_0(width - fieldsz); |
1270: 82 2d mov r24, r2 |
1272: 81 1b sub r24, r17 |
1274: 0e 94 d7 06 call 0xdae <PAD_0> |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
1278: 8c 2d mov r24, r12 |
127a: 0e 94 d7 06 call 0xdae <PAD_0> |
/* the string or number proper */ |
PRINT(cp, size); |
127e: 8d 2d mov r24, r13 |
1280: 99 27 eor r25, r25 |
1282: 87 fd sbrc r24, 7 |
1284: 90 95 com r25 |
1286: bc 01 movw r22, r24 |
1288: c4 01 movw r24, r8 |
128a: 0e 94 a2 06 call 0xd44 <PRINT> |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
128e: e4 fe sbrs r14, 4 |
1290: c1 cd rjmp .-1150 ; 0xe14 <_printf_P+0x4e> |
PAD_SP(width - fieldsz); |
1292: 82 2d mov r24, r2 |
1294: 81 1b sub r24, r17 |
1296: 0e 94 cb 06 call 0xd96 <PAD_SP> |
129a: bc cd rjmp .-1160 ; 0xe14 <_printf_P+0x4e> |
129c: e0 96 adiw r28, 0x30 ; 48 |
129e: 0f b6 in r0, 0x3f ; 63 |
12a0: f8 94 cli |
12a2: de bf out 0x3e, r29 ; 62 |
12a4: 0f be out 0x3f, r0 ; 63 |
12a6: cd bf out 0x3d, r28 ; 61 |
12a8: df 91 pop r29 |
12aa: cf 91 pop r28 |
12ac: 1f 91 pop r17 |
12ae: 0f 91 pop r16 |
12b0: ff 90 pop r15 |
12b2: ef 90 pop r14 |
12b4: df 90 pop r13 |
12b6: cf 90 pop r12 |
12b8: bf 90 pop r11 |
12ba: af 90 pop r10 |
12bc: 9f 90 pop r9 |
12be: 8f 90 pop r8 |
12c0: 7f 90 pop r7 |
12c2: 6f 90 pop r6 |
12c4: 5f 90 pop r5 |
12c6: 4f 90 pop r4 |
12c8: 3f 90 pop r3 |
12ca: 2f 90 pop r2 |
12cc: 08 95 ret |
000012ce <__vector_9>: |
}; |
SIGNAL (SIG_OVERFLOW1) |
{ |
12ce: 1f 92 push r1 |
12d0: 0f 92 push r0 |
12d2: 0f b6 in r0, 0x3f ; 63 |
12d4: 0f 92 push r0 |
12d6: 11 24 eor r1, r1 |
12d8: 8f 93 push r24 |
12da: 9f 93 push r25 |
static unsigned char cnt_10ms = 0; |
TCNT1 -= TIMER_RELOAD_VALUE; |
12dc: 8c b5 in r24, 0x2c ; 44 |
12de: 9d b5 in r25, 0x2d ; 45 |
12e0: 8a 5f subi r24, 0xFA ; 250 |
12e2: 90 40 sbci r25, 0x00 ; 0 |
12e4: 9d bd out 0x2d, r25 ; 45 |
12e6: 8c bd out 0x2c, r24 ; 44 |
CountMilliseconds++; |
12e8: 80 91 a5 00 lds r24, 0x00A5 |
12ec: 90 91 a6 00 lds r25, 0x00A6 |
12f0: 01 96 adiw r24, 0x01 ; 1 |
12f2: 90 93 a6 00 sts 0x00A6, r25 |
12f6: 80 93 a5 00 sts 0x00A5, r24 |
if(DisplayBusy) DisplayBusy--; |
12fa: 80 91 93 00 lds r24, 0x0093 |
12fe: 88 23 and r24, r24 |
1300: 29 f0 breq .+10 ; 0x130c <__vector_9+0x3e> |
1302: 80 91 93 00 lds r24, 0x0093 |
1306: 81 50 subi r24, 0x01 ; 1 |
1308: 80 93 93 00 sts 0x0093, r24 |
if(LoescheIrCodeTimer) |
130c: 80 91 7c 00 lds r24, 0x007C |
1310: 90 91 7d 00 lds r25, 0x007D |
1314: 00 97 sbiw r24, 0x00 ; 0 |
1316: 59 f0 breq .+22 ; 0x132e <__vector_9+0x60> |
{ |
if(--LoescheIrCodeTimer == 0) IR_Code = 0; |
1318: 01 97 sbiw r24, 0x01 ; 1 |
131a: 90 93 7d 00 sts 0x007D, r25 |
131e: 80 93 7c 00 sts 0x007C, r24 |
1322: 00 97 sbiw r24, 0x00 ; 0 |
1324: 21 f4 brne .+8 ; 0x132e <__vector_9+0x60> |
1326: 90 93 c8 01 sts 0x01C8, r25 |
132a: 80 93 c7 01 sts 0x01C7, r24 |
132e: 9f 91 pop r25 |
1330: 8f 91 pop r24 |
1332: 0f 90 pop r0 |
1334: 0f be out 0x3f, r0 ; 63 |
1336: 0f 90 pop r0 |
1338: 1f 90 pop r1 |
133a: 18 95 reti |
0000133c <Timer1_Init>: |
} |
} |
void Timer1_Init(void) |
{ |
TCCR1B = TIMER_TEILER; |
133c: 83 e0 ldi r24, 0x03 ; 3 |
133e: 8e bd out 0x2e, r24 ; 46 |
TCNT1 = -TIMER_RELOAD_VALUE; // reload |
1340: 86 e0 ldi r24, 0x06 ; 6 |
1342: 9f ef ldi r25, 0xFF ; 255 |
1344: 9d bd out 0x2d, r25 ; 45 |
1346: 8c bd out 0x2c, r24 ; 44 |
//OCR1 = 0x00; |
// Timer(s)/Counter(s) Interrupt(s) initialization |
#if defined (__AVR_ATmega32__) |
TIMSK |= 0x04; |
1348: 89 b7 in r24, 0x39 ; 57 |
134a: 84 60 ori r24, 0x04 ; 4 |
134c: 89 bf out 0x39, r24 ; 57 |
134e: 08 95 ret |
00001350 <SetDelay>: |
#endif |
#if defined (__AVR_ATmega644__) |
TIMSK1 |= _BV(TOIE1); |
#endif |
} |
unsigned int SetDelay (unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
1350: 20 91 a5 00 lds r18, 0x00A5 |
1354: 30 91 a6 00 lds r19, 0x00A6 |
1358: 28 0f add r18, r24 |
135a: 39 1f adc r19, r25 |
} |
135c: c9 01 movw r24, r18 |
135e: 01 97 sbiw r24, 0x01 ; 1 |
1360: 08 95 ret |
00001362 <CheckDelay>: |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
1362: 20 91 a5 00 lds r18, 0x00A5 |
1366: 30 91 a6 00 lds r19, 0x00A6 |
136a: 82 1b sub r24, r18 |
136c: 93 0b sbc r25, r19 |
136e: 89 2f mov r24, r25 |
1370: 99 27 eor r25, r25 |
1372: 80 78 andi r24, 0x80 ; 128 |
} |
1374: 99 27 eor r25, r25 |
1376: 08 95 ret |
00001378 <Delay_ms>: |
void Delay_ms(unsigned int w) |
{ |
1378: cf 93 push r28 |
137a: df 93 push r29 |
unsigned int akt; |
akt = SetDelay(w); |
137c: 0e 94 a8 09 call 0x1350 <SetDelay> |
1380: ec 01 movw r28, r24 |
while (!CheckDelay(akt)); |
1382: ce 01 movw r24, r28 |
1384: 0e 94 b1 09 call 0x1362 <CheckDelay> |
1388: 88 23 and r24, r24 |
138a: d9 f3 breq .-10 ; 0x1382 <Delay_ms+0xa> |
138c: df 91 pop r29 |
138e: cf 91 pop r28 |
1390: 08 95 ret |
00001392 <Keyboard_Init>: |
unsigned int KeyTimer = 0; |
void Keyboard_Init(void) |
{ |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1392: 82 e3 ldi r24, 0x32 ; 50 |
1394: 90 e0 ldi r25, 0x00 ; 0 |
1396: 0e 94 a8 09 call 0x1350 <SetDelay> |
139a: 90 93 a9 00 sts 0x00A9, r25 |
139e: 80 93 a8 00 sts 0x00A8, r24 |
13a2: 08 95 ret |
000013a4 <GetKeyboard>: |
} |
unsigned char GetKeyboard(void) |
{ |
13a4: cf 93 push r28 |
static char taste1 = 0, taste2 = 0,taste3 = 0,taste4 = 0,taste5 = 0; |
unsigned char ret = 0; |
13a6: c0 e0 ldi r28, 0x00 ; 0 |
if(CheckDelay(KeyTimer)) |
13a8: 80 91 a8 00 lds r24, 0x00A8 |
13ac: 90 91 a9 00 lds r25, 0x00A9 |
13b0: 0e 94 b1 09 call 0x1362 <CheckDelay> |
13b4: 88 23 and r24, r24 |
13b6: 09 f4 brne .+2 ; 0x13ba <GetKeyboard+0x16> |
13b8: 76 c0 rjmp .+236 ; 0x14a6 <GetKeyboard+0x102> |
{ |
if(_TASTE1) { if(taste1++ == 0 || taste1 == CNT_TASTE) ret |= KEY1; if(taste1 == CNT_TASTE) taste1 = CNT_TASTE-CNT_TASTE/3;} else taste1 = 0; |
13ba: cf 9b sbis 0x19, 7 ; 25 |
13bc: 12 c0 rjmp .+36 ; 0x13e2 <GetKeyboard+0x3e> |
13be: 80 91 aa 00 lds r24, 0x00AA |
13c2: 8f 5f subi r24, 0xFF ; 255 |
13c4: 80 93 aa 00 sts 0x00AA, r24 |
13c8: 81 30 cpi r24, 0x01 ; 1 |
13ca: 11 f0 breq .+4 ; 0x13d0 <GetKeyboard+0x2c> |
13cc: 8a 30 cpi r24, 0x0A ; 10 |
13ce: 09 f4 brne .+2 ; 0x13d2 <GetKeyboard+0x2e> |
13d0: c1 e0 ldi r28, 0x01 ; 1 |
13d2: 80 91 aa 00 lds r24, 0x00AA |
13d6: 8a 30 cpi r24, 0x0A ; 10 |
13d8: 31 f4 brne .+12 ; 0x13e6 <GetKeyboard+0x42> |
13da: 87 e0 ldi r24, 0x07 ; 7 |
13dc: 80 93 aa 00 sts 0x00AA, r24 |
13e0: 02 c0 rjmp .+4 ; 0x13e6 <GetKeyboard+0x42> |
13e2: c0 93 aa 00 sts 0x00AA, r28 |
if(_TASTE2) { if(taste2++ == 0 || taste2 == CNT_TASTE) ret |= KEY2; if(taste2 == CNT_TASTE) taste2 = CNT_TASTE-CNT_TASTE/3;} else taste2 = 0; |
13e6: ce 9b sbis 0x19, 6 ; 25 |
13e8: 12 c0 rjmp .+36 ; 0x140e <GetKeyboard+0x6a> |
13ea: 80 91 ab 00 lds r24, 0x00AB |
13ee: 8f 5f subi r24, 0xFF ; 255 |
13f0: 80 93 ab 00 sts 0x00AB, r24 |
13f4: 81 30 cpi r24, 0x01 ; 1 |
13f6: 11 f0 breq .+4 ; 0x13fc <GetKeyboard+0x58> |
13f8: 8a 30 cpi r24, 0x0A ; 10 |
13fa: 09 f4 brne .+2 ; 0x13fe <GetKeyboard+0x5a> |
13fc: c2 60 ori r28, 0x02 ; 2 |
13fe: 80 91 ab 00 lds r24, 0x00AB |
1402: 8a 30 cpi r24, 0x0A ; 10 |
1404: 31 f4 brne .+12 ; 0x1412 <GetKeyboard+0x6e> |
1406: 87 e0 ldi r24, 0x07 ; 7 |
1408: 80 93 ab 00 sts 0x00AB, r24 |
140c: 02 c0 rjmp .+4 ; 0x1412 <GetKeyboard+0x6e> |
140e: 10 92 ab 00 sts 0x00AB, r1 |
if(_TASTE3) { if(taste3++ == 0 || taste3 == CNT_TASTE) ret |= KEY3; if(taste3 == CNT_TASTE) taste3 = CNT_TASTE-CNT_TASTE/3;} else taste3 = 0; |
1412: cd 9b sbis 0x19, 5 ; 25 |
1414: 12 c0 rjmp .+36 ; 0x143a <GetKeyboard+0x96> |
1416: 80 91 ac 00 lds r24, 0x00AC |
141a: 8f 5f subi r24, 0xFF ; 255 |
141c: 80 93 ac 00 sts 0x00AC, r24 |
1420: 81 30 cpi r24, 0x01 ; 1 |
1422: 11 f0 breq .+4 ; 0x1428 <GetKeyboard+0x84> |
1424: 8a 30 cpi r24, 0x0A ; 10 |
1426: 09 f4 brne .+2 ; 0x142a <GetKeyboard+0x86> |
1428: c4 60 ori r28, 0x04 ; 4 |
142a: 80 91 ac 00 lds r24, 0x00AC |
142e: 8a 30 cpi r24, 0x0A ; 10 |
1430: 31 f4 brne .+12 ; 0x143e <GetKeyboard+0x9a> |
1432: 87 e0 ldi r24, 0x07 ; 7 |
1434: 80 93 ac 00 sts 0x00AC, r24 |
1438: 02 c0 rjmp .+4 ; 0x143e <GetKeyboard+0x9a> |
143a: 10 92 ac 00 sts 0x00AC, r1 |
if(_TASTE4) { if(taste4++ == 0 || taste4 == CNT_TASTE) ret |= KEY4; if(taste4 == CNT_TASTE) taste4 = CNT_TASTE-CNT_TASTE/3;} else taste4 = 0; |
143e: cc 9b sbis 0x19, 4 ; 25 |
1440: 12 c0 rjmp .+36 ; 0x1466 <GetKeyboard+0xc2> |
1442: 80 91 ad 00 lds r24, 0x00AD |
1446: 8f 5f subi r24, 0xFF ; 255 |
1448: 80 93 ad 00 sts 0x00AD, r24 |
144c: 81 30 cpi r24, 0x01 ; 1 |
144e: 11 f0 breq .+4 ; 0x1454 <GetKeyboard+0xb0> |
1450: 8a 30 cpi r24, 0x0A ; 10 |
1452: 09 f4 brne .+2 ; 0x1456 <GetKeyboard+0xb2> |
1454: c8 60 ori r28, 0x08 ; 8 |
1456: 80 91 ad 00 lds r24, 0x00AD |
145a: 8a 30 cpi r24, 0x0A ; 10 |
145c: 31 f4 brne .+12 ; 0x146a <GetKeyboard+0xc6> |
145e: 87 e0 ldi r24, 0x07 ; 7 |
1460: 80 93 ad 00 sts 0x00AD, r24 |
1464: 02 c0 rjmp .+4 ; 0x146a <GetKeyboard+0xc6> |
1466: 10 92 ad 00 sts 0x00AD, r1 |
if(_TASTE5) { if(taste5++ == 0 || taste5 == CNT_TASTE) ret |= KEY5; if(taste5 == CNT_TASTE) taste5 = CNT_TASTE-CNT_TASTE/3;} else taste5 = 0; |
146a: cb 9b sbis 0x19, 3 ; 25 |
146c: 12 c0 rjmp .+36 ; 0x1492 <GetKeyboard+0xee> |
146e: 80 91 ae 00 lds r24, 0x00AE |
1472: 8f 5f subi r24, 0xFF ; 255 |
1474: 80 93 ae 00 sts 0x00AE, r24 |
1478: 81 30 cpi r24, 0x01 ; 1 |
147a: 11 f0 breq .+4 ; 0x1480 <GetKeyboard+0xdc> |
147c: 8a 30 cpi r24, 0x0A ; 10 |
147e: 09 f4 brne .+2 ; 0x1482 <GetKeyboard+0xde> |
1480: c0 61 ori r28, 0x10 ; 16 |
1482: 80 91 ae 00 lds r24, 0x00AE |
1486: 8a 30 cpi r24, 0x0A ; 10 |
1488: 31 f4 brne .+12 ; 0x1496 <GetKeyboard+0xf2> |
148a: 87 e0 ldi r24, 0x07 ; 7 |
148c: 80 93 ae 00 sts 0x00AE, r24 |
1490: 02 c0 rjmp .+4 ; 0x1496 <GetKeyboard+0xf2> |
1492: 10 92 ae 00 sts 0x00AE, r1 |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1496: 82 e3 ldi r24, 0x32 ; 50 |
1498: 90 e0 ldi r25, 0x00 ; 0 |
149a: 0e 94 a8 09 call 0x1350 <SetDelay> |
149e: 90 93 a9 00 sts 0x00A9, r25 |
14a2: 80 93 a8 00 sts 0x00A8, r24 |
} |
return(ret); |
} |
14a6: 8c 2f mov r24, r28 |
14a8: 99 27 eor r25, r25 |
14aa: cf 91 pop r28 |
14ac: 08 95 ret |
000014ae <GetKeyboard2>: |
unsigned char GetKeyboard2(void) |
{ |
unsigned char ret = 0; |
14ae: 80 e0 ldi r24, 0x00 ; 0 |
if(_TASTE1) ret |= KEY1; |
14b0: cf 99 sbic 0x19, 7 ; 25 |
14b2: 81 e0 ldi r24, 0x01 ; 1 |
if(_TASTE2) ret |= KEY2; |
14b4: ce 99 sbic 0x19, 6 ; 25 |
14b6: 82 60 ori r24, 0x02 ; 2 |
if(_TASTE3) ret |= KEY3; |
14b8: cd 99 sbic 0x19, 5 ; 25 |
14ba: 84 60 ori r24, 0x04 ; 4 |
if(_TASTE4) ret |= KEY4; |
14bc: cc 99 sbic 0x19, 4 ; 25 |
14be: 88 60 ori r24, 0x08 ; 8 |
if(_TASTE5) ret |= KEY5; |
14c0: cb 99 sbic 0x19, 3 ; 25 |
14c2: 80 61 ori r24, 0x10 ; 16 |
return(ret); |
} |
14c4: 99 27 eor r25, r25 |
14c6: 08 95 ret |
000014c8 <Menu>: |
unsigned char KanalVon[MAX_KANAL]; |
unsigned char KanalAn[MAX_KANAL]; |
void Menu(unsigned char key) |
{ |
14c8: 0f 93 push r16 |
14ca: 1f 93 push r17 |
14cc: cf 93 push r28 |
14ce: df 93 push r29 |
static unsigned int arr = 0; |
static unsigned char MaxMenue = 2,MenuePunkt=0; |
unsigned char kanal = 0; |
if(key & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LCD_Clear; } |
14d0: c8 2f mov r28, r24 |
14d2: dd 27 eor r29, r29 |
14d4: c0 ff sbrs r28, 0 |
14d6: 0f c0 rjmp .+30 ; 0x14f6 <Menu+0x2e> |
14d8: 80 91 b3 00 lds r24, 0x00B3 |
14dc: 88 23 and r24, r24 |
14de: 11 f0 breq .+4 ; 0x14e4 <Menu+0x1c> |
14e0: 81 50 subi r24, 0x01 ; 1 |
14e2: 02 c0 rjmp .+4 ; 0x14e8 <Menu+0x20> |
14e4: 80 91 7b 00 lds r24, 0x007B |
14e8: 80 93 b3 00 sts 0x00B3, r24 |
14ec: 81 e0 ldi r24, 0x01 ; 1 |
14ee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
14f2: 0e 94 c9 05 call 0xb92 <_long_delay> |
if(key & KEY2) { MenuePunkt++; LCD_Clear; } |
14f6: 8e 01 movw r16, r28 |
14f8: 02 70 andi r16, 0x02 ; 2 |
14fa: 10 70 andi r17, 0x00 ; 0 |
14fc: c1 ff sbrs r28, 1 |
14fe: 0a c0 rjmp .+20 ; 0x1514 <Menu+0x4c> |
1500: 80 91 b3 00 lds r24, 0x00B3 |
1504: 8f 5f subi r24, 0xFF ; 255 |
1506: 80 93 b3 00 sts 0x00B3, r24 |
150a: 81 e0 ldi r24, 0x01 ; 1 |
150c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
1510: 0e 94 c9 05 call 0xb92 <_long_delay> |
if((key & KEY1) && (key & KEY2)) MenuePunkt = 0; |
1514: c0 ff sbrs r28, 0 |
1516: 04 c0 rjmp .+8 ; 0x1520 <Menu+0x58> |
1518: 01 2b or r16, r17 |
151a: 11 f0 breq .+4 ; 0x1520 <Menu+0x58> |
151c: 10 92 b3 00 sts 0x00B3, r1 |
// LCD_printfxy(13,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
1520: 20 91 b3 00 lds r18, 0x00B3 |
1524: 82 2f mov r24, r18 |
1526: 99 27 eor r25, r25 |
1528: 81 30 cpi r24, 0x01 ; 1 |
152a: 91 05 cpc r25, r1 |
152c: 09 f4 brne .+2 ; 0x1530 <Menu+0x68> |
152e: 41 c0 rjmp .+130 ; 0x15b2 <Menu+0xea> |
1530: 82 30 cpi r24, 0x02 ; 2 |
1532: 91 05 cpc r25, r1 |
1534: 1c f4 brge .+6 ; 0x153c <Menu+0x74> |
1536: 89 2b or r24, r25 |
1538: 49 f0 breq .+18 ; 0x154c <Menu+0x84> |
153a: bf c0 rjmp .+382 ; 0x16ba <Menu+0x1f2> |
153c: 82 30 cpi r24, 0x02 ; 2 |
153e: 91 05 cpc r25, r1 |
1540: 09 f4 brne .+2 ; 0x1544 <Menu+0x7c> |
1542: 6a c0 rjmp .+212 ; 0x1618 <Menu+0x150> |
1544: 03 97 sbiw r24, 0x03 ; 3 |
1546: 09 f4 brne .+2 ; 0x154a <Menu+0x82> |
1548: 8e c0 rjmp .+284 ; 0x1666 <Menu+0x19e> |
154a: b7 c0 rjmp .+366 ; 0x16ba <Menu+0x1f2> |
{ |
case 0: |
LCD_printfxy(0,0,"Verbinden mit"); |
154c: 60 e0 ldi r22, 0x00 ; 0 |
154e: 86 2f mov r24, r22 |
1550: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1554: 84 eb ldi r24, 0xB4 ; 180 |
1556: 90 e0 ldi r25, 0x00 ; 0 |
1558: 9f 93 push r25 |
155a: 8f 93 push r24 |
155c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"MicroSPS:%2i ",SlaveAdresse); |
1560: 61 e0 ldi r22, 0x01 ; 1 |
1562: 80 e0 ldi r24, 0x00 ; 0 |
1564: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1568: 0f 90 pop r0 |
156a: 0f 90 pop r0 |
156c: 80 91 64 00 lds r24, 0x0064 |
1570: 99 27 eor r25, r25 |
1572: 9f 93 push r25 |
1574: 8f 93 push r24 |
1576: 82 ec ldi r24, 0xC2 ; 194 |
1578: 90 e0 ldi r25, 0x00 ; 0 |
157a: 9f 93 push r25 |
157c: 8f 93 push r24 |
157e: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && SlaveAdresse > 1) SlaveAdresse--; |
1582: 0f 90 pop r0 |
1584: 0f 90 pop r0 |
1586: 0f 90 pop r0 |
1588: 0f 90 pop r0 |
158a: c2 ff sbrs r28, 2 |
158c: 07 c0 rjmp .+14 ; 0x159c <Menu+0xd4> |
158e: 80 91 64 00 lds r24, 0x0064 |
1592: 82 30 cpi r24, 0x02 ; 2 |
1594: 18 f0 brcs .+6 ; 0x159c <Menu+0xd4> |
1596: 81 50 subi r24, 0x01 ; 1 |
1598: 80 93 64 00 sts 0x0064, r24 |
if(key & KEY4 && SlaveAdresse < 26) SlaveAdresse++; |
159c: c3 ff sbrs r28, 3 |
159e: 92 c0 rjmp .+292 ; 0x16c4 <Menu+0x1fc> |
15a0: 80 91 64 00 lds r24, 0x0064 |
15a4: 8a 31 cpi r24, 0x1A ; 26 |
15a6: 08 f0 brcs .+2 ; 0x15aa <Menu+0xe2> |
15a8: 8d c0 rjmp .+282 ; 0x16c4 <Menu+0x1fc> |
15aa: 8f 5f subi r24, 0xFF ; 255 |
15ac: 80 93 64 00 sts 0x0064, r24 |
break; |
15b0: 89 c0 rjmp .+274 ; 0x16c4 <Menu+0x1fc> |
case 1: |
LCD_printfxy(0,0,"Max Adresse"); |
15b2: 60 e0 ldi r22, 0x00 ; 0 |
15b4: 86 2f mov r24, r22 |
15b6: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ba: 80 ed ldi r24, 0xD0 ; 208 |
15bc: 90 e0 ldi r25, 0x00 ; 0 |
15be: 9f 93 push r25 |
15c0: 8f 93 push r24 |
15c2: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"%2i ",AnzahlTeilnehmer); |
15c6: 61 e0 ldi r22, 0x01 ; 1 |
15c8: 80 e0 ldi r24, 0x00 ; 0 |
15ca: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ce: 0f 90 pop r0 |
15d0: 0f 90 pop r0 |
15d2: 80 91 6c 00 lds r24, 0x006C |
15d6: 99 27 eor r25, r25 |
15d8: 9f 93 push r25 |
15da: 8f 93 push r24 |
15dc: 8c ed ldi r24, 0xDC ; 220 |
15de: 90 e0 ldi r25, 0x00 ; 0 |
15e0: 9f 93 push r25 |
15e2: 8f 93 push r24 |
15e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && AnzahlTeilnehmer > 1) AnzahlTeilnehmer--; |
15e8: 0f 90 pop r0 |
15ea: 0f 90 pop r0 |
15ec: 0f 90 pop r0 |
15ee: 0f 90 pop r0 |
15f0: c2 ff sbrs r28, 2 |
15f2: 07 c0 rjmp .+14 ; 0x1602 <Menu+0x13a> |
15f4: 80 91 6c 00 lds r24, 0x006C |
15f8: 82 30 cpi r24, 0x02 ; 2 |
15fa: 18 f0 brcs .+6 ; 0x1602 <Menu+0x13a> |
15fc: 81 50 subi r24, 0x01 ; 1 |
15fe: 80 93 6c 00 sts 0x006C, r24 |
if(key & KEY4 && AnzahlTeilnehmer < 26) AnzahlTeilnehmer++; |
1602: c3 ff sbrs r28, 3 |
1604: 5f c0 rjmp .+190 ; 0x16c4 <Menu+0x1fc> |
1606: 80 91 6c 00 lds r24, 0x006C |
160a: 8a 31 cpi r24, 0x1A ; 26 |
160c: 08 f0 brcs .+2 ; 0x1610 <Menu+0x148> |
160e: 5a c0 rjmp .+180 ; 0x16c4 <Menu+0x1fc> |
1610: 8f 5f subi r24, 0xFF ; 255 |
1612: 80 93 6c 00 sts 0x006C, r24 |
break; |
1616: 56 c0 rjmp .+172 ; 0x16c4 <Menu+0x1fc> |
case 2: |
LCD_printfxy(0,0,"Checksum"); |
1618: 60 e0 ldi r22, 0x00 ; 0 |
161a: 86 2f mov r24, r22 |
161c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1620: 81 ee ldi r24, 0xE1 ; 225 |
1622: 90 e0 ldi r25, 0x00 ; 0 |
1624: 9f 93 push r25 |
1626: 8f 93 push r24 |
1628: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Errors:%5i ",CntCrcError); |
162c: 61 e0 ldi r22, 0x01 ; 1 |
162e: 80 e0 ldi r24, 0x00 ; 0 |
1630: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1634: 0f 90 pop r0 |
1636: 0f 90 pop r0 |
1638: 80 91 99 00 lds r24, 0x0099 |
163c: 90 91 9a 00 lds r25, 0x009A |
1640: 9f 93 push r25 |
1642: 8f 93 push r24 |
1644: 8a ee ldi r24, 0xEA ; 234 |
1646: 90 e0 ldi r25, 0x00 ; 0 |
1648: 9f 93 push r25 |
164a: 8f 93 push r24 |
164c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) CntCrcError = 0; |
1650: 0f 90 pop r0 |
1652: 0f 90 pop r0 |
1654: 0f 90 pop r0 |
1656: 0f 90 pop r0 |
1658: c2 ff sbrs r28, 2 |
165a: 34 c0 rjmp .+104 ; 0x16c4 <Menu+0x1fc> |
165c: 10 92 9a 00 sts 0x009A, r1 |
1660: 10 92 99 00 sts 0x0099, r1 |
break; |
1664: 2f c0 rjmp .+94 ; 0x16c4 <Menu+0x1fc> |
case 3: |
LCD_printfxy(0,0,"Display"); |
1666: 60 e0 ldi r22, 0x00 ; 0 |
1668: 86 2f mov r24, r22 |
166a: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
166e: 86 ef ldi r24, 0xF6 ; 246 |
1670: 90 e0 ldi r25, 0x00 ; 0 |
1672: 9f 93 push r25 |
1674: 8f 93 push r24 |
1676: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Zeilen:%1i ",DisplayZeilen); |
167a: 61 e0 ldi r22, 0x01 ; 1 |
167c: 80 e0 ldi r24, 0x00 ; 0 |
167e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1682: 0f 90 pop r0 |
1684: 0f 90 pop r0 |
1686: 80 91 65 00 lds r24, 0x0065 |
168a: 99 27 eor r25, r25 |
168c: 9f 93 push r25 |
168e: 8f 93 push r24 |
1690: 8e ef ldi r24, 0xFE ; 254 |
1692: 90 e0 ldi r25, 0x00 ; 0 |
1694: 9f 93 push r25 |
1696: 8f 93 push r24 |
1698: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) DisplayZeilen = 4; |
169c: 0f 90 pop r0 |
169e: 0f 90 pop r0 |
16a0: 0f 90 pop r0 |
16a2: 0f 90 pop r0 |
16a4: c2 ff sbrs r28, 2 |
16a6: 03 c0 rjmp .+6 ; 0x16ae <Menu+0x1e6> |
16a8: 84 e0 ldi r24, 0x04 ; 4 |
16aa: 80 93 65 00 sts 0x0065, r24 |
if(key & KEY4) DisplayZeilen = 2; |
16ae: c3 ff sbrs r28, 3 |
16b0: 09 c0 rjmp .+18 ; 0x16c4 <Menu+0x1fc> |
16b2: 82 e0 ldi r24, 0x02 ; 2 |
16b4: 80 93 65 00 sts 0x0065, r24 |
break; |
16b8: 05 c0 rjmp .+10 ; 0x16c4 <Menu+0x1fc> |
/* case 1: |
case 2: |
case 3: |
case 4: |
kanal = MenuePunkt - 1; |
LCD_printfxy(0,0,"Datenkanal:%2i",kanal); |
LCD_printfxy(0,1,"Von:%2i an %2i ",KanalVon[kanal],KanalAn[kanal]); |
if(key & KEY3) KanalVon[kanal]++; |
if(key & KEY4) KanalAn[kanal]++; |
KanalVon[kanal] % MAX_KANAL; |
KanalAn[kanal] % MAX_KANAL; |
break; |
*/ |
/* |
case 1: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Display:%3ims ",IntervallDisplay); |
if(key & KEY3 && IntervallDisplay > 25) IntervallDisplay -= 5; |
if(key & KEY4 && IntervallDisplay < 990) IntervallDisplay += 5; |
break; |
case 2: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Debug:%3ims ",IntervallDebug); |
if(key & KEY3 && IntervallDebug > 25) IntervallDebug -= 5; |
if(key & KEY4 && IntervallDebug < 990) IntervallDebug += 5; |
break; |
case 1: |
LCD_printfxy(0,0,"Time"); |
LCD_printfxy(0,1,"%3i:%02i",Minute,Sekunde); |
if(key & KEY3) if(Minute) Minute--; |
if(key & KEY4) Minute++; |
if(key & KEY5) Sekunde = 0; |
break; |
case 2: |
LCD_printfxy(0,0,"Testvariable"); |
LCD_printfxy(0,1,"TestInt:%5i",TestInt); |
if(key & KEY3) TestInt--; |
if(key & KEY4) TestInt++; |
break; |
case 3: |
LCD_printfxy(0,0,"Testarray"); |
LCD_printfxy(0,1,"Array[%i]=%3i",arr,Array[arr]); |
if(key & KEY5) if(++arr == ARRAYGROESSE) arr = 0; |
if(key & KEY3) Array[arr]--; |
if(key & KEY4) Array[arr]++; |
break; |
case 4: |
LCD_printfxy(0,0,"Infrarot RC5:"); |
LCD_printfxy(0,1,"Adr:%2i Cmd:%3i",(IR_Code >> 8), IR_Code & 0xff); |
break; |
*/ |
default: MaxMenue = MenuePunkt - 1; |
16ba: 21 50 subi r18, 0x01 ; 1 |
16bc: 20 93 7b 00 sts 0x007B, r18 |
MenuePunkt = 0; |
16c0: 10 92 b3 00 sts 0x00B3, r1 |
16c4: df 91 pop r29 |
16c6: cf 91 pop r28 |
16c8: 1f 91 pop r17 |
16ca: 0f 91 pop r16 |
16cc: 08 95 ret |
000016ce <InitIR>: |
// Init IR |
// ************************************************************************ |
void InitIR(void) |
{ |
INT0_ENABLE; // ext. Int0 enable |
16ce: 8b b7 in r24, 0x3b ; 59 |
16d0: 80 64 ori r24, 0x40 ; 64 |
16d2: 8b bf out 0x3b, r24 ; 59 |
CLR_INT0_FLAG; // war |= 0x40 |
16d4: 8a b7 in r24, 0x3a ; 58 |
16d6: 8f 7b andi r24, 0xBF ; 191 |
16d8: 8a bf out 0x3a, r24 ; 58 |
INIT_INT0_FLANKE; |
16da: 85 b7 in r24, 0x35 ; 53 |
16dc: 8c 7f andi r24, 0xFC ; 252 |
16de: 85 bf out 0x35, r24 ; 53 |
16e0: 85 b7 in r24, 0x35 ; 53 |
16e2: 82 60 ori r24, 0x02 ; 2 |
16e4: 85 bf out 0x35, r24 ; 53 |
TIMER0_PRESCALER = 0x04; // Timer0: Clk div 256 |
16e6: 84 e0 ldi r24, 0x04 ; 4 |
16e8: 83 bf out 0x33, r24 ; 51 |
Decodierung_Lauft = 0; |
16ea: 10 92 c9 01 sts 0x01C9, r1 |
New_IR_Code = 0; |
16ee: 10 92 c6 01 sts 0x01C6, r1 |
IR_Code = 0; |
16f2: 10 92 c8 01 sts 0x01C8, r1 |
16f6: 10 92 c7 01 sts 0x01C7, r1 |
16fa: 08 95 ret |
000016fc <__vector_1>: |
} |
// ************************************************************************** |
// * aufgerufen durch: externer Interrupt |
// ************************************************************************** |
// * Die Funktion wird durch einen externen Interrupt aufgerufen. |
// * Sie dient nur zum Starten der Abtastsequenz und zum Triggern auf die |
// * Signalflanken in der Mitte der Daten. |
// ************************************************************************** |
SIGNAL (SIG_INTERRUPT0) |
{ |
16fc: 1f 92 push r1 |
16fe: 0f 92 push r0 |
1700: 0f b6 in r0, 0x3f ; 63 |
1702: 0f 92 push r0 |
1704: 11 24 eor r1, r1 |
1706: 8f 93 push r24 |
// Zeitbasis fuer Timer einstellen |
// Entspricht 1,5 mal einer Bitlaenge |
// PORTB++; |
TCNT0 = -41; |
1708: 87 ed ldi r24, 0xD7 ; 215 |
170a: 82 bf out 0x32, r24 ; 50 |
TIM0_START; // Timer 0 starten, |
170c: 89 b7 in r24, 0x39 ; 57 |
170e: 81 60 ori r24, 0x01 ; 1 |
1710: 89 bf out 0x39, r24 ; 57 |
if(Decodierung_Lauft) INT0_DISABLE; // die erneute Int.-Auslsung soll |
1712: 80 91 c9 01 lds r24, 0x01C9 |
1716: 88 23 and r24, r24 |
1718: 19 f0 breq .+6 ; 0x1720 <__vector_1+0x24> |
171a: 8b b7 in r24, 0x3b ; 59 |
171c: 8f 7b andi r24, 0xBF ; 191 |
171e: 8b bf out 0x3b, r24 ; 59 |
1720: 8f 91 pop r24 |
1722: 0f 90 pop r0 |
1724: 0f be out 0x3f, r0 ; 63 |
1726: 0f 90 pop r0 |
1728: 1f 90 pop r1 |
172a: 18 95 reti |
0000172c <__vector_11>: |
// nur die Timer-Routine erlauben |
} |
// ************************************************************************** |
// * aufgerufen durch: Timerueberlauf Timer 0 |
// ************************************************************************** |
// * Die Funktion wird durch einen Timer0-Interrupt aufgerufen. |
// * Der Timer wird vom ext. Int0 gestartet. |
// * Das Infrarotsignal wird hier abgetastet und die Wertigkeiten der |
// * Bits entsprechend aufaddiert. Das empfangende Zeichen wird in der |
// * globalen Variablen IR_Code gespeichert. Nach Empfang wird das Bit |
// * Neues_Zeichen gesetzt. |
// ************************************************************************** |
SIGNAL (SIG_OVERFLOW0) |
{ |
172c: 1f 92 push r1 |
172e: 0f 92 push r0 |
1730: 0f b6 in r0, 0x3f ; 63 |
1732: 0f 92 push r0 |
1734: 11 24 eor r1, r1 |
1736: 2f 93 push r18 |
1738: 3f 93 push r19 |
173a: 4f 93 push r20 |
173c: 8f 93 push r24 |
173e: 9f 93 push r25 |
static unsigned int Shift,IR_Code_tmp; |
static unsigned char IR_Zaehler=0,IRSperrCounter=0; |
// Reinitialize Timer's 0 value |
TCNT1 = -41; |
1740: 87 ed ldi r24, 0xD7 ; 215 |
1742: 9f ef ldi r25, 0xFF ; 255 |
1744: 9d bd out 0x2d, r25 ; 45 |
1746: 8c bd out 0x2c, r24 ; 44 |
if (IRSperrCounter) |
1748: 80 91 b9 00 lds r24, 0x00B9 |
174c: 88 23 and r24, r24 |
174e: 69 f0 breq .+26 ; 0x176a <__vector_11+0x3e> |
{ IRSperrCounter--; |
1750: 81 50 subi r24, 0x01 ; 1 |
1752: 80 93 b9 00 sts 0x00B9, r24 |
if (!IRSperrCounter) |
1756: 88 23 and r24, r24 |
1758: 09 f0 breq .+2 ; 0x175c <__vector_11+0x30> |
175a: 8a c0 rjmp .+276 ; 0x1870 <__vector_11+0x144> |
{ |
TIM0_STOPP; // Timer0 sperre wird durch ExtInt0 gestartet |
175c: 89 b7 in r24, 0x39 ; 57 |
175e: 8e 7f andi r24, 0xFE ; 254 |
1760: 89 bf out 0x39, r24 ; 57 |
CLR_INT0_FLAG; // IntFlag Loeschen |
1762: 8a b7 in r24, 0x3a ; 58 |
1764: 8f 7b andi r24, 0xBF ; 191 |
1766: 8a bf out 0x3a, r24 ; 58 |
1768: 80 c0 rjmp .+256 ; 0x186a <__vector_11+0x13e> |
INT0_ENABLE; // externen Interrupt wieder freigenben |
} |
} |
else |
{ |
if(IR_Zaehler > 1) |
176a: 40 91 b8 00 lds r20, 0x00B8 |
176e: 42 30 cpi r20, 0x02 ; 2 |
1770: 88 f0 brcs .+34 ; 0x1794 <__vector_11+0x68> |
{ |
Decodierung_Lauft = 1; |
1772: 81 e0 ldi r24, 0x01 ; 1 |
1774: 80 93 c9 01 sts 0x01C9, r24 |
{ |
CLR_INT0_FLAG; // Interrupt Flag loeschen |
1778: 8a b7 in r24, 0x3a ; 58 |
177a: 8f 7b andi r24, 0xBF ; 191 |
177c: 8a bf out 0x3a, r24 ; 58 |
if(IR_PP) INT0_NEG_FLANKE; // naechste fallende Flanke soll Int0 ausloesen |
177e: 82 9b sbis 0x10, 2 ; 16 |
1780: 03 c0 rjmp .+6 ; 0x1788 <__vector_11+0x5c> |
1782: 85 b7 in r24, 0x35 ; 53 |
1784: 8e 7f andi r24, 0xFE ; 254 |
1786: 02 c0 rjmp .+4 ; 0x178c <__vector_11+0x60> |
else INT0_POS_FLANKE; // naechste steigende Flanke soll Int0 ausloesen |
1788: 85 b7 in r24, 0x35 ; 53 |
178a: 81 60 ori r24, 0x01 ; 1 |
178c: 85 bf out 0x35, r24 ; 53 |
INT0_ENABLE; // externen Int frei |
178e: 8b b7 in r24, 0x3b ; 59 |
1790: 80 64 ori r24, 0x40 ; 64 |
1792: 8b bf out 0x3b, r24 ; 59 |
} |
} |
if(!IR_Zaehler) // es beginnt eine neue Abtastung |
1794: 44 23 and r20, r20 |
1796: 59 f4 brne .+22 ; 0x17ae <__vector_11+0x82> |
{ // es handelt sich um das 1. Sync-Bit |
IR_Code_tmp=0; // Merker löschen |
1798: 10 92 b7 00 sts 0x00B7, r1 |
179c: 10 92 b6 00 sts 0x00B6, r1 |
Shift=0x8000; //;8192; // Maske auf MSB |
17a0: 80 e0 ldi r24, 0x00 ; 0 |
17a2: 90 e8 ldi r25, 0x80 ; 128 |
17a4: 90 93 b5 00 sts 0x00B5, r25 |
17a8: 80 93 b4 00 sts 0x00B4, r24 |
17ac: 14 c0 rjmp .+40 ; 0x17d6 <__vector_11+0xaa> |
} |
else |
if(IR_PP==1) // das empfangende Bit ist logisch High |
17ae: 82 9b sbis 0x10, 2 ; 16 |
17b0: 10 c0 rjmp .+32 ; 0x17d2 <__vector_11+0xa6> |
{ if(IR_Zaehler>2) // (IR_Zaehler ist gleich 1 beim 2. Sync-Bit) |
17b2: 43 30 cpi r20, 0x03 ; 3 |
17b4: 70 f0 brcs .+28 ; 0x17d2 <__vector_11+0xa6> |
{ // 2 --> Toggle-Bit (wird übersprungen) |
IR_Code_tmp |= Shift; // entsprechendse Bit setzen |
17b6: 80 91 b6 00 lds r24, 0x00B6 |
17ba: 90 91 b7 00 lds r25, 0x00B7 |
17be: 20 91 b4 00 lds r18, 0x00B4 |
17c2: 30 91 b5 00 lds r19, 0x00B5 |
17c6: 82 2b or r24, r18 |
17c8: 93 2b or r25, r19 |
17ca: 90 93 b7 00 sts 0x00B7, r25 |
17ce: 80 93 b6 00 sts 0x00B6, r24 |
} |
} |
if ((IR_Zaehler < 2) && !(IR_PP==1)) // startbits überprüfen |
17d2: 42 30 cpi r20, 0x02 ; 2 |
17d4: 20 f4 brcc .+8 ; 0x17de <__vector_11+0xb2> |
17d6: 82 99 sbic 0x10, 2 ; 16 |
17d8: 02 c0 rjmp .+4 ; 0x17de <__vector_11+0xb2> |
{ |
IR_Zaehler = 0; |
17da: 10 92 b8 00 sts 0x00B8, r1 |
} |
Shift >>=1; // Shiftregister um 1 nach rechts schieben |
17de: 80 91 b4 00 lds r24, 0x00B4 |
17e2: 90 91 b5 00 lds r25, 0x00B5 |
17e6: 96 95 lsr r25 |
17e8: 87 95 ror r24 |
17ea: 90 93 b5 00 sts 0x00B5, r25 |
17ee: 80 93 b4 00 sts 0x00B4, r24 |
// (für das nächste empf. Bit |
if (Shift == 128) Shift = 32; // Adresse ins HighByte, Kommando ins LowByte |
17f2: 80 38 cpi r24, 0x80 ; 128 |
17f4: 91 05 cpc r25, r1 |
17f6: 31 f4 brne .+12 ; 0x1804 <__vector_11+0xd8> |
17f8: 80 e2 ldi r24, 0x20 ; 32 |
17fa: 90 e0 ldi r25, 0x00 ; 0 |
17fc: 90 93 b5 00 sts 0x00B5, r25 |
1800: 80 93 b4 00 sts 0x00B4, r24 |
if(IR_Zaehler++==15) // Das IR-Wort wurde vollstaendig abgetastet |
1804: 80 91 b8 00 lds r24, 0x00B8 |
1808: 8f 5f subi r24, 0xFF ; 255 |
180a: 80 93 b8 00 sts 0x00B8, r24 |
180e: 80 31 cpi r24, 0x10 ; 16 |
1810: 79 f5 brne .+94 ; 0x1870 <__vector_11+0x144> |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
1812: 8a b7 in r24, 0x3a ; 58 |
1814: 8f 7b andi r24, 0xBF ; 191 |
1816: 8a bf out 0x3a, r24 ; 58 |
INT0_NEG_FLANKE; // fallende Flanke |
1818: 85 b7 in r24, 0x35 ; 53 |
181a: 8e 7f andi r24, 0xFE ; 254 |
181c: 85 bf out 0x35, r24 ; 53 |
IR_Zaehler = 0; |
181e: 10 92 b8 00 sts 0x00B8, r1 |
Decodierung_Lauft=0; |
1822: 10 92 c9 01 sts 0x01C9, r1 |
/* if ((HIGH(IR_Code_tmp)==ALLOWED1)|| (HIGH(IR_Code_tmp)==ALLOWED2)|| |
(HIGH(IR_Code_tmp)==ALLOWED3)||(HIGH(IR_Code_tmp)==ALLOWED4)|| |
(HIGH(IR_Code_tmp)==ALLOWED5) ) |
if ((HIGH(IR_Code_tmp)< 10))*/ |
if ((HIGH(IR_Code_tmp)< 10 ) && (LOW(IR_Code_tmp)!=0x3F) ) |
1826: 80 91 b7 00 lds r24, 0x00B7 |
182a: 8a 30 cpi r24, 0x0A ; 10 |
182c: d8 f4 brcc .+54 ; 0x1864 <__vector_11+0x138> |
182e: 80 91 b6 00 lds r24, 0x00B6 |
1832: 8f 33 cpi r24, 0x3F ; 63 |
1834: b9 f0 breq .+46 ; 0x1864 <__vector_11+0x138> |
{ // nur erlaubt Adressen werden akzepetiert |
IR_Code=IR_Code_tmp; // IR-Wort in die globale Variable schreiben |
1836: 80 91 b6 00 lds r24, 0x00B6 |
183a: 90 91 b7 00 lds r25, 0x00B7 |
183e: 90 93 c8 01 sts 0x01C8, r25 |
1842: 80 93 c7 01 sts 0x01C7, r24 |
New_IR_Code = 1; // Es ist ein neues Zeichen eingetragen worden |
1846: 81 e0 ldi r24, 0x01 ; 1 |
1848: 80 93 c6 01 sts 0x01C6, r24 |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
184c: 84 e0 ldi r24, 0x04 ; 4 |
184e: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
1852: 8b b7 in r24, 0x3b ; 59 |
1854: 80 64 ori r24, 0x40 ; 64 |
1856: 8b bf out 0x3b, r24 ; 59 |
LoescheIrCodeTimer = 250; |
1858: 8a ef ldi r24, 0xFA ; 250 |
185a: 90 e0 ldi r25, 0x00 ; 0 |
185c: 90 93 7d 00 sts 0x007D, r25 |
1860: 80 93 7c 00 sts 0x007C, r24 |
} |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
1864: 84 e0 ldi r24, 0x04 ; 4 |
1866: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
186a: 8b b7 in r24, 0x3b ; 59 |
186c: 80 64 ori r24, 0x40 ; 64 |
186e: 8b bf out 0x3b, r24 ; 59 |
1870: 9f 91 pop r25 |
1872: 8f 91 pop r24 |
1874: 4f 91 pop r20 |
1876: 3f 91 pop r19 |
1878: 2f 91 pop r18 |
187a: 0f 90 pop r0 |
187c: 0f be out 0x3f, r0 ; 63 |
187e: 0f 90 pop r0 |
1880: 1f 90 pop r1 |
1882: 18 95 reti |
00001884 <ADC_Init>: |
// --------------------------------------------------------------------------------------- |
void ADC_Init(void) |
{ |
ADMUX = 0; |
1884: 17 b8 out 0x07, r1 ; 7 |
ADCSRA = 0x86; |
1886: 86 e8 ldi r24, 0x86 ; 134 |
1888: 86 b9 out 0x06, r24 ; 6 |
188a: 08 95 ret |
0000188c <ReadADC>: |
} |
// --------------------------------------------------------------------------------------- |
unsigned int ReadADC(unsigned char adc_input) |
{ |
ADMUX = adc_input; |
188c: 87 b9 out 0x07, r24 ; 7 |
ADCSRA |= 0x40; |
188e: 36 9a sbi 0x06, 6 ; 6 |
//Delay_ms(10); |
while ((ADCSRA & 0x10) == 0); |
1890: 34 9b sbis 0x06, 4 ; 6 |
1892: fe cf rjmp .-4 ; 0x1890 <ReadADC+0x4> |
ADCSRA |= 0x10; |
1894: 34 9a sbi 0x06, 4 ; 6 |
return ADCW; // read ad and calc. temp. |
1896: 84 b1 in r24, 0x04 ; 4 |
1898: 95 b1 in r25, 0x05 ; 5 |
189a: 08 95 ret |
0000189c <GetAnalogWerte>: |
} |
void GetAnalogWerte(void) |
{ |
AnalogWerte[0] = ReadADC(0); |
189c: 80 e0 ldi r24, 0x00 ; 0 |
189e: 0e 94 46 0c call 0x188c <ReadADC> |
18a2: 90 93 cb 01 sts 0x01CB, r25 |
18a6: 80 93 ca 01 sts 0x01CA, r24 |
AnalogWerte[1] = ReadADC(1); |
18aa: 81 e0 ldi r24, 0x01 ; 1 |
18ac: 0e 94 46 0c call 0x188c <ReadADC> |
18b0: 90 93 cd 01 sts 0x01CD, r25 |
18b4: 80 93 cc 01 sts 0x01CC, r24 |
AnalogWerte[2] = ReadADC(2); |
18b8: 82 e0 ldi r24, 0x02 ; 2 |
18ba: 0e 94 46 0c call 0x188c <ReadADC> |
18be: 90 93 cf 01 sts 0x01CF, r25 |
18c2: 80 93 ce 01 sts 0x01CE, r24 |
18c6: 08 95 ret |
000018c8 <memchr>: |
18c8: fc 01 movw r30, r24 |
18ca: 41 50 subi r20, 0x01 ; 1 |
18cc: 50 40 sbci r21, 0x00 ; 0 |
18ce: 30 f0 brcs .+12 ; 0x18dc <memchr+0x14> |
18d0: 01 90 ld r0, Z+ |
18d2: 06 16 cp r0, r22 |
18d4: d1 f7 brne .-12 ; 0x18ca <memchr+0x2> |
18d6: 31 97 sbiw r30, 0x01 ; 1 |
18d8: cf 01 movw r24, r30 |
18da: 08 95 ret |
18dc: 88 27 eor r24, r24 |
18de: 99 27 eor r25, r25 |
18e0: 08 95 ret |
000018e2 <fdevopen>: |
18e2: 0f 93 push r16 |
18e4: 1f 93 push r17 |
18e6: cf 93 push r28 |
18e8: df 93 push r29 |
18ea: 8c 01 movw r16, r24 |
18ec: eb 01 movw r28, r22 |
18ee: 00 97 sbiw r24, 0x00 ; 0 |
18f0: 11 f4 brne .+4 ; 0x18f6 <fdevopen+0x14> |
18f2: 67 2b or r22, r23 |
18f4: c1 f1 breq .+112 ; 0x1966 <fdevopen+0x84> |
18f6: 6e e0 ldi r22, 0x0E ; 14 |
18f8: 70 e0 ldi r23, 0x00 ; 0 |
18fa: 81 e0 ldi r24, 0x01 ; 1 |
18fc: 90 e0 ldi r25, 0x00 ; 0 |
18fe: 0e 94 b8 0c call 0x1970 <calloc> |
1902: fc 01 movw r30, r24 |
1904: 89 2b or r24, r25 |
1906: 71 f1 breq .+92 ; 0x1964 <fdevopen+0x82> |
1908: 80 e8 ldi r24, 0x80 ; 128 |
190a: 83 83 std Z+3, r24 ; 0x03 |
190c: 20 97 sbiw r28, 0x00 ; 0 |
190e: 71 f0 breq .+28 ; 0x192c <fdevopen+0x4a> |
1910: d3 87 std Z+11, r29 ; 0x0b |
1912: c2 87 std Z+10, r28 ; 0x0a |
1914: 81 e8 ldi r24, 0x81 ; 129 |
1916: 83 83 std Z+3, r24 ; 0x03 |
1918: 80 91 d0 01 lds r24, 0x01D0 |
191c: 90 91 d1 01 lds r25, 0x01D1 |
1920: 89 2b or r24, r25 |
1922: 21 f4 brne .+8 ; 0x192c <fdevopen+0x4a> |
1924: f0 93 d1 01 sts 0x01D1, r31 |
1928: e0 93 d0 01 sts 0x01D0, r30 |
192c: 01 15 cp r16, r1 |
192e: 11 05 cpc r17, r1 |
1930: c9 f0 breq .+50 ; 0x1964 <fdevopen+0x82> |
1932: 11 87 std Z+9, r17 ; 0x09 |
1934: 00 87 std Z+8, r16 ; 0x08 |
1936: 83 81 ldd r24, Z+3 ; 0x03 |
1938: 82 60 ori r24, 0x02 ; 2 |
193a: 83 83 std Z+3, r24 ; 0x03 |
193c: 80 91 d2 01 lds r24, 0x01D2 |
1940: 90 91 d3 01 lds r25, 0x01D3 |
1944: 89 2b or r24, r25 |
1946: 71 f4 brne .+28 ; 0x1964 <fdevopen+0x82> |
1948: f0 93 d3 01 sts 0x01D3, r31 |
194c: e0 93 d2 01 sts 0x01D2, r30 |
1950: 80 91 d4 01 lds r24, 0x01D4 |
1954: 90 91 d5 01 lds r25, 0x01D5 |
1958: 89 2b or r24, r25 |
195a: 21 f4 brne .+8 ; 0x1964 <fdevopen+0x82> |
195c: f0 93 d5 01 sts 0x01D5, r31 |
1960: e0 93 d4 01 sts 0x01D4, r30 |
1964: cf 01 movw r24, r30 |
1966: df 91 pop r29 |
1968: cf 91 pop r28 |
196a: 1f 91 pop r17 |
196c: 0f 91 pop r16 |
196e: 08 95 ret |
00001970 <calloc>: |
1970: 0f 93 push r16 |
1972: 1f 93 push r17 |
1974: cf 93 push r28 |
1976: df 93 push r29 |
1978: 86 9f mul r24, r22 |
197a: 80 01 movw r16, r0 |
197c: 87 9f mul r24, r23 |
197e: 10 0d add r17, r0 |
1980: 96 9f mul r25, r22 |
1982: 10 0d add r17, r0 |
1984: 11 24 eor r1, r1 |
1986: c8 01 movw r24, r16 |
1988: 0e 94 d4 0c call 0x19a8 <malloc> |
198c: ec 01 movw r28, r24 |
198e: 00 97 sbiw r24, 0x00 ; 0 |
1990: 29 f0 breq .+10 ; 0x199c <calloc+0x2c> |
1992: a8 01 movw r20, r16 |
1994: 60 e0 ldi r22, 0x00 ; 0 |
1996: 70 e0 ldi r23, 0x00 ; 0 |
1998: 0e 94 ca 0d call 0x1b94 <memset> |
199c: ce 01 movw r24, r28 |
199e: df 91 pop r29 |
19a0: cf 91 pop r28 |
19a2: 1f 91 pop r17 |
19a4: 0f 91 pop r16 |
19a6: 08 95 ret |
000019a8 <malloc>: |
19a8: cf 93 push r28 |
19aa: df 93 push r29 |
19ac: ac 01 movw r20, r24 |
19ae: 02 97 sbiw r24, 0x02 ; 2 |
19b0: 10 f4 brcc .+4 ; 0x19b6 <malloc+0xe> |
19b2: 42 e0 ldi r20, 0x02 ; 2 |
19b4: 50 e0 ldi r21, 0x00 ; 0 |
19b6: 20 e0 ldi r18, 0x00 ; 0 |
19b8: 30 e0 ldi r19, 0x00 ; 0 |
19ba: a0 91 d8 01 lds r26, 0x01D8 |
19be: b0 91 d9 01 lds r27, 0x01D9 |
19c2: bd 01 movw r22, r26 |
19c4: f9 01 movw r30, r18 |
19c6: 10 97 sbiw r26, 0x00 ; 0 |
19c8: 09 f4 brne .+2 ; 0x19cc <malloc+0x24> |
19ca: 4c c0 rjmp .+152 ; 0x1a64 <malloc+0xbc> |
19cc: 8d 91 ld r24, X+ |
19ce: 9c 91 ld r25, X |
19d0: 11 97 sbiw r26, 0x01 ; 1 |
19d2: 84 17 cp r24, r20 |
19d4: 95 07 cpc r25, r21 |
19d6: 31 f1 breq .+76 ; 0x1a24 <malloc+0x7c> |
19d8: 48 17 cp r20, r24 |
19da: 59 07 cpc r21, r25 |
19dc: 38 f4 brcc .+14 ; 0x19ec <malloc+0x44> |
19de: 21 15 cp r18, r1 |
19e0: 31 05 cpc r19, r1 |
19e2: 19 f0 breq .+6 ; 0x19ea <malloc+0x42> |
19e4: 82 17 cp r24, r18 |
19e6: 93 07 cpc r25, r19 |
19e8: 08 f4 brcc .+2 ; 0x19ec <malloc+0x44> |
19ea: 9c 01 movw r18, r24 |
19ec: fd 01 movw r30, r26 |
19ee: a2 81 ldd r26, Z+2 ; 0x02 |
19f0: b3 81 ldd r27, Z+3 ; 0x03 |
19f2: 10 97 sbiw r26, 0x00 ; 0 |
19f4: 59 f7 brne .-42 ; 0x19cc <malloc+0x24> |
19f6: 21 15 cp r18, r1 |
19f8: 31 05 cpc r19, r1 |
19fa: a1 f1 breq .+104 ; 0x1a64 <malloc+0xbc> |
19fc: c9 01 movw r24, r18 |
19fe: 84 1b sub r24, r20 |
1a00: 95 0b sbc r25, r21 |
1a02: 04 97 sbiw r24, 0x04 ; 4 |
1a04: 08 f4 brcc .+2 ; 0x1a08 <malloc+0x60> |
1a06: a9 01 movw r20, r18 |
1a08: db 01 movw r26, r22 |
1a0a: e0 e0 ldi r30, 0x00 ; 0 |
1a0c: f0 e0 ldi r31, 0x00 ; 0 |
1a0e: 10 97 sbiw r26, 0x00 ; 0 |
1a10: 49 f1 breq .+82 ; 0x1a64 <malloc+0xbc> |
1a12: 8d 91 ld r24, X+ |
1a14: 9c 91 ld r25, X |
1a16: 11 97 sbiw r26, 0x01 ; 1 |
1a18: 82 17 cp r24, r18 |
1a1a: 93 07 cpc r25, r19 |
1a1c: f9 f4 brne .+62 ; 0x1a5c <malloc+0xb4> |
1a1e: 42 17 cp r20, r18 |
1a20: 53 07 cpc r21, r19 |
1a22: 79 f4 brne .+30 ; 0x1a42 <malloc+0x9a> |
1a24: ed 01 movw r28, r26 |
1a26: 8a 81 ldd r24, Y+2 ; 0x02 |
1a28: 9b 81 ldd r25, Y+3 ; 0x03 |
1a2a: 30 97 sbiw r30, 0x00 ; 0 |
1a2c: 19 f0 breq .+6 ; 0x1a34 <malloc+0x8c> |
1a2e: 93 83 std Z+3, r25 ; 0x03 |
1a30: 82 83 std Z+2, r24 ; 0x02 |
1a32: 04 c0 rjmp .+8 ; 0x1a3c <malloc+0x94> |
1a34: 90 93 d9 01 sts 0x01D9, r25 |
1a38: 80 93 d8 01 sts 0x01D8, r24 |
1a3c: cd 01 movw r24, r26 |
1a3e: 02 96 adiw r24, 0x02 ; 2 |
1a40: 4a c0 rjmp .+148 ; 0x1ad6 <malloc+0x12e> |
1a42: 24 1b sub r18, r20 |
1a44: 35 0b sbc r19, r21 |
1a46: fd 01 movw r30, r26 |
1a48: e2 0f add r30, r18 |
1a4a: f3 1f adc r31, r19 |
1a4c: 41 93 st Z+, r20 |
1a4e: 51 93 st Z+, r21 |
1a50: 22 50 subi r18, 0x02 ; 2 |
1a52: 30 40 sbci r19, 0x00 ; 0 |
1a54: 2d 93 st X+, r18 |
1a56: 3c 93 st X, r19 |
1a58: cf 01 movw r24, r30 |
1a5a: 3d c0 rjmp .+122 ; 0x1ad6 <malloc+0x12e> |
1a5c: fd 01 movw r30, r26 |
1a5e: a2 81 ldd r26, Z+2 ; 0x02 |
1a60: b3 81 ldd r27, Z+3 ; 0x03 |
1a62: d5 cf rjmp .-86 ; 0x1a0e <malloc+0x66> |
1a64: 80 91 d6 01 lds r24, 0x01D6 |
1a68: 90 91 d7 01 lds r25, 0x01D7 |
1a6c: 89 2b or r24, r25 |
1a6e: 41 f4 brne .+16 ; 0x1a80 <malloc+0xd8> |
1a70: 80 91 80 00 lds r24, 0x0080 |
1a74: 90 91 81 00 lds r25, 0x0081 |
1a78: 90 93 d7 01 sts 0x01D7, r25 |
1a7c: 80 93 d6 01 sts 0x01D6, r24 |
1a80: e0 91 7e 00 lds r30, 0x007E |
1a84: f0 91 7f 00 lds r31, 0x007F |
1a88: 30 97 sbiw r30, 0x00 ; 0 |
1a8a: 41 f4 brne .+16 ; 0x1a9c <malloc+0xf4> |
1a8c: ed b7 in r30, 0x3d ; 61 |
1a8e: fe b7 in r31, 0x3e ; 62 |
1a90: 80 91 82 00 lds r24, 0x0082 |
1a94: 90 91 83 00 lds r25, 0x0083 |
1a98: e8 1b sub r30, r24 |
1a9a: f9 0b sbc r31, r25 |
1a9c: a0 91 d6 01 lds r26, 0x01D6 |
1aa0: b0 91 d7 01 lds r27, 0x01D7 |
1aa4: 9f 01 movw r18, r30 |
1aa6: 2a 1b sub r18, r26 |
1aa8: 3b 0b sbc r19, r27 |
1aaa: 24 17 cp r18, r20 |
1aac: 35 07 cpc r19, r21 |
1aae: 88 f0 brcs .+34 ; 0x1ad2 <malloc+0x12a> |
1ab0: ca 01 movw r24, r20 |
1ab2: 02 96 adiw r24, 0x02 ; 2 |
1ab4: 28 17 cp r18, r24 |
1ab6: 39 07 cpc r19, r25 |
1ab8: 60 f0 brcs .+24 ; 0x1ad2 <malloc+0x12a> |
1aba: cd 01 movw r24, r26 |
1abc: 84 0f add r24, r20 |
1abe: 95 1f adc r25, r21 |
1ac0: 02 96 adiw r24, 0x02 ; 2 |
1ac2: 90 93 d7 01 sts 0x01D7, r25 |
1ac6: 80 93 d6 01 sts 0x01D6, r24 |
1aca: 4d 93 st X+, r20 |
1acc: 5d 93 st X+, r21 |
1ace: cd 01 movw r24, r26 |
1ad0: 02 c0 rjmp .+4 ; 0x1ad6 <malloc+0x12e> |
1ad2: 80 e0 ldi r24, 0x00 ; 0 |
1ad4: 90 e0 ldi r25, 0x00 ; 0 |
1ad6: df 91 pop r29 |
1ad8: cf 91 pop r28 |
1ada: 08 95 ret |
00001adc <free>: |
1adc: cf 93 push r28 |
1ade: df 93 push r29 |
1ae0: 00 97 sbiw r24, 0x00 ; 0 |
1ae2: 09 f4 brne .+2 ; 0x1ae6 <free+0xa> |
1ae4: 54 c0 rjmp .+168 ; 0x1b8e <free+0xb2> |
1ae6: dc 01 movw r26, r24 |
1ae8: 12 97 sbiw r26, 0x02 ; 2 |
1aea: ed 01 movw r28, r26 |
1aec: 1b 82 std Y+3, r1 ; 0x03 |
1aee: 1a 82 std Y+2, r1 ; 0x02 |
1af0: 80 91 d8 01 lds r24, 0x01D8 |
1af4: 90 91 d9 01 lds r25, 0x01D9 |
1af8: 00 97 sbiw r24, 0x00 ; 0 |
1afa: 21 f1 breq .+72 ; 0x1b44 <free+0x68> |
1afc: fc 01 movw r30, r24 |
1afe: 40 e0 ldi r20, 0x00 ; 0 |
1b00: 50 e0 ldi r21, 0x00 ; 0 |
1b02: ea 17 cp r30, r26 |
1b04: fb 07 cpc r31, r27 |
1b06: 18 f1 brcs .+70 ; 0x1b4e <free+0x72> |
1b08: ed 01 movw r28, r26 |
1b0a: fb 83 std Y+3, r31 ; 0x03 |
1b0c: ea 83 std Y+2, r30 ; 0x02 |
1b0e: 2d 91 ld r18, X+ |
1b10: 3c 91 ld r19, X |
1b12: 11 97 sbiw r26, 0x01 ; 1 |
1b14: c2 0f add r28, r18 |
1b16: d3 1f adc r29, r19 |
1b18: ce 01 movw r24, r28 |
1b1a: 02 96 adiw r24, 0x02 ; 2 |
1b1c: 8e 17 cp r24, r30 |
1b1e: 9f 07 cpc r25, r31 |
1b20: 71 f4 brne .+28 ; 0x1b3e <free+0x62> |
1b22: 8a 81 ldd r24, Y+2 ; 0x02 |
1b24: 9b 81 ldd r25, Y+3 ; 0x03 |
1b26: 28 0f add r18, r24 |
1b28: 39 1f adc r19, r25 |
1b2a: 2e 5f subi r18, 0xFE ; 254 |
1b2c: 3f 4f sbci r19, 0xFF ; 255 |
1b2e: 11 96 adiw r26, 0x01 ; 1 |
1b30: 3c 93 st X, r19 |
1b32: 2e 93 st -X, r18 |
1b34: 82 81 ldd r24, Z+2 ; 0x02 |
1b36: 93 81 ldd r25, Z+3 ; 0x03 |
1b38: fd 01 movw r30, r26 |
1b3a: 93 83 std Z+3, r25 ; 0x03 |
1b3c: 82 83 std Z+2, r24 ; 0x02 |
1b3e: 41 15 cp r20, r1 |
1b40: 51 05 cpc r21, r1 |
1b42: 59 f4 brne .+22 ; 0x1b5a <free+0x7e> |
1b44: b0 93 d9 01 sts 0x01D9, r27 |
1b48: a0 93 d8 01 sts 0x01D8, r26 |
1b4c: 20 c0 rjmp .+64 ; 0x1b8e <free+0xb2> |
1b4e: af 01 movw r20, r30 |
1b50: 02 80 ldd r0, Z+2 ; 0x02 |
1b52: f3 81 ldd r31, Z+3 ; 0x03 |
1b54: e0 2d mov r30, r0 |
1b56: 30 97 sbiw r30, 0x00 ; 0 |
1b58: a1 f6 brne .-88 ; 0x1b02 <free+0x26> |
1b5a: ea 01 movw r28, r20 |
1b5c: bb 83 std Y+3, r27 ; 0x03 |
1b5e: aa 83 std Y+2, r26 ; 0x02 |
1b60: ca 01 movw r24, r20 |
1b62: 02 96 adiw r24, 0x02 ; 2 |
1b64: 28 81 ld r18, Y |
1b66: 39 81 ldd r19, Y+1 ; 0x01 |
1b68: 82 0f add r24, r18 |
1b6a: 93 1f adc r25, r19 |
1b6c: 8a 17 cp r24, r26 |
1b6e: 9b 07 cpc r25, r27 |
1b70: 71 f4 brne .+28 ; 0x1b8e <free+0xb2> |
1b72: 8d 91 ld r24, X+ |
1b74: 9c 91 ld r25, X |
1b76: 11 97 sbiw r26, 0x01 ; 1 |
1b78: 28 0f add r18, r24 |
1b7a: 39 1f adc r19, r25 |
1b7c: 2e 5f subi r18, 0xFE ; 254 |
1b7e: 3f 4f sbci r19, 0xFF ; 255 |
1b80: 39 83 std Y+1, r19 ; 0x01 |
1b82: 28 83 st Y, r18 |
1b84: fd 01 movw r30, r26 |
1b86: 82 81 ldd r24, Z+2 ; 0x02 |
1b88: 93 81 ldd r25, Z+3 ; 0x03 |
1b8a: 9b 83 std Y+3, r25 ; 0x03 |
1b8c: 8a 83 std Y+2, r24 ; 0x02 |
1b8e: df 91 pop r29 |
1b90: cf 91 pop r28 |
1b92: 08 95 ret |
00001b94 <memset>: |
1b94: dc 01 movw r26, r24 |
1b96: 40 ff sbrs r20, 0 |
1b98: 03 c0 rjmp .+6 ; 0x1ba0 <memset+0xc> |
1b9a: 01 c0 rjmp .+2 ; 0x1b9e <memset+0xa> |
1b9c: 6d 93 st X+, r22 |
1b9e: 6d 93 st X+, r22 |
1ba0: 42 50 subi r20, 0x02 ; 2 |
1ba2: 50 40 sbci r21, 0x00 ; 0 |
1ba4: d8 f7 brcc .-10 ; 0x1b9c <memset+0x8> |
1ba6: 08 95 ret |
00001ba8 <__udivmodsi4>: |
1ba8: a1 e2 ldi r26, 0x21 ; 33 |
1baa: 1a 2e mov r1, r26 |
1bac: aa 1b sub r26, r26 |
1bae: bb 1b sub r27, r27 |
1bb0: fd 01 movw r30, r26 |
1bb2: 0d c0 rjmp .+26 ; 0x1bce <__udivmodsi4_ep> |
00001bb4 <__udivmodsi4_loop>: |
1bb4: aa 1f adc r26, r26 |
1bb6: bb 1f adc r27, r27 |
1bb8: ee 1f adc r30, r30 |
1bba: ff 1f adc r31, r31 |
1bbc: a2 17 cp r26, r18 |
1bbe: b3 07 cpc r27, r19 |
1bc0: e4 07 cpc r30, r20 |
1bc2: f5 07 cpc r31, r21 |
1bc4: 20 f0 brcs .+8 ; 0x1bce <__udivmodsi4_ep> |
1bc6: a2 1b sub r26, r18 |
1bc8: b3 0b sbc r27, r19 |
1bca: e4 0b sbc r30, r20 |
1bcc: f5 0b sbc r31, r21 |
00001bce <__udivmodsi4_ep>: |
1bce: 66 1f adc r22, r22 |
1bd0: 77 1f adc r23, r23 |
1bd2: 88 1f adc r24, r24 |
1bd4: 99 1f adc r25, r25 |
1bd6: 1a 94 dec r1 |
1bd8: 69 f7 brne .-38 ; 0x1bb4 <__udivmodsi4_loop> |
1bda: 60 95 com r22 |
1bdc: 70 95 com r23 |
1bde: 80 95 com r24 |
1be0: 90 95 com r25 |
1be2: 9b 01 movw r18, r22 |
1be4: ac 01 movw r20, r24 |
1be6: bd 01 movw r22, r26 |
1be8: cf 01 movw r24, r30 |
1bea: 08 95 ret |
/branches/V0.42_addr9-12_fix_ligi/main.map |
---|
0,0 → 1,764 |
Archive member included because of file (symbol) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o (__udivmodsi4) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
main.o (__do_copy_data) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
main.o (__do_clear_bss) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o (memchr) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o (fdevopen) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (__iob) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (calloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (malloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (memset) |
Allocating common symbols |
Common symbol size file |
SendeBuffer 0x64 uart.o |
Debug_Timer 0x2 main.o |
Debug_Display_Timer |
0x2 main.o |
__brkval 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
DebugIn 0xb main.o |
VersionInfo 0xa main.o |
New_IR_Code 0x1 ir.o |
RxdBuffer 0x64 uart.o |
AnalogWerte 0x6 analog.o |
IR_Code 0x2 ir.o |
KanalVon 0x8 menu.o |
Decodierung_Lauft 0x1 ir.o |
DebugOut 0x1a main.o |
KanalAn 0x8 menu.o |
__flp 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
PollDisplay 0x1 main.o |
__iob 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
Memory Configuration |
Name Origin Length Attributes |
text 0x00000000 0x00020000 xr |
data 0x00800060 0x0000ffa0 rw !x |
eeprom 0x00810000 0x00010000 rw !x |
*default* 0x00000000 0xffffffff |
Linker script and memory map |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
LOAD main.o |
LOAD uart.o |
LOAD lcd.o |
LOAD printf_P.o |
LOAD timer0.o |
LOAD keyboard.o |
LOAD menu.o |
LOAD ir.o |
LOAD analog.o |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libm.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
.hash |
*(.hash) |
.dynsym |
*(.dynsym) |
.dynstr |
*(.dynstr) |
.gnu.version |
*(.gnu.version) |
.gnu.version_d |
*(.gnu.version_d) |
.gnu.version_r |
*(.gnu.version_r) |
.rel.init |
*(.rel.init) |
.rela.init |
*(.rela.init) |
.rel.text |
*(.rel.text) |
*(.rel.text.*) |
*(.rel.gnu.linkonce.t*) |
.rela.text |
*(.rela.text) |
*(.rela.text.*) |
*(.rela.gnu.linkonce.t*) |
.rel.fini |
*(.rel.fini) |
.rela.fini |
*(.rela.fini) |
.rel.rodata |
*(.rel.rodata) |
*(.rel.rodata.*) |
*(.rel.gnu.linkonce.r*) |
.rela.rodata |
*(.rela.rodata) |
*(.rela.rodata.*) |
*(.rela.gnu.linkonce.r*) |
.rel.data |
*(.rel.data) |
*(.rel.data.*) |
*(.rel.gnu.linkonce.d*) |
.rela.data |
*(.rela.data) |
*(.rela.data.*) |
*(.rela.gnu.linkonce.d*) |
.rel.ctors |
*(.rel.ctors) |
.rela.ctors |
*(.rela.ctors) |
.rel.dtors |
*(.rel.dtors) |
.rela.dtors |
*(.rela.dtors) |
.rel.got |
*(.rel.got) |
.rela.got |
*(.rela.got) |
.rel.bss |
*(.rel.bss) |
.rela.bss |
*(.rela.bss) |
.rel.plt |
*(.rel.plt) |
.rela.plt |
*(.rela.plt) |
.text 0x00000000 0x1c18 |
*(.vectors) |
.vectors 0x00000000 0x54 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000000 __vectors |
0x00000000 __vector_default |
0x00000054 __ctors_start = . |
*(.ctors) |
0x00000054 __ctors_end = . |
0x00000054 __dtors_start = . |
*(.dtors) |
0x00000054 __dtors_end = . |
*(.progmem.gcc*) |
*(.progmem*) |
.progmem.data 0x00000054 0x54 main.o |
.progmem.data 0x000000a8 0xc uart.o |
.progmem.data 0x000000b4 0x56 menu.o |
0x0000010a . = ALIGN (0x2) |
*(.init0) |
*(.init1) |
*(.init2) |
.init2 0x0000010a 0xc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.init3) |
*(.init4) |
.init4 0x00000116 0x16 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
0x00000116 __do_copy_data |
.init4 0x0000012c 0x10 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
0x0000012c __do_clear_bss |
*(.init5) |
*(.init6) |
*(.init7) |
*(.init8) |
*(.init9) |
.init9 0x0000013c 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.text) |
.text 0x00000140 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000140 __vector_12 |
0x00000140 __bad_interrupt |
0x00000140 __vector_6 |
0x00000140 __vector_3 |
0x00000140 __vector_17 |
0x00000140 __vector_19 |
0x00000140 __vector_7 |
0x00000140 __vector_5 |
0x00000140 __vector_4 |
0x00000140 __vector_2 |
0x00000140 __vector_8 |
0x00000140 __vector_14 |
0x00000140 __vector_10 |
0x00000140 __vector_16 |
0x00000140 __vector_18 |
0x00000140 __vector_20 |
.text 0x00000144 0x282 main.o |
0x000001b4 Init |
0x00000156 Sekundentakt |
0x000001ca main |
0x00000144 Sekundentakt_Init |
.text 0x000003c6 0x7e6 uart.o |
0x000009f8 WriteProgramData |
0x00000a16 SendeRemoteTasten |
0x000009fa UART_Init |
0x00000430 __vector_13 |
0x0000080a BearbeiteRxDaten |
0x00000abe ClearIntervalle |
0x00000a76 SendIntervalle |
0x000005de AddCRC |
0x00000b04 DatenUebertragung |
0x00000732 Decode64 |
0x000003c6 __vector_15 |
0x0000064a SendOutData |
0x000009dc uart_putchar |
.text 0x00000bac 0x1b2 lcd.o |
0x00000cc4 LCD_Gotoxy |
0x00000c4e my_pput |
0x00000c08 _lcd_write_4bit |
0x00000bcc _short_delay |
0x00000c26 lcd_write_byte |
0x00000bdc _lcd_write_command |
0x00000c58 LCD_Init |
0x00000d48 LCD_Putchar |
0x00000d12 LCD_Write |
0x00000bac _long_delay |
.text 0x00000d5e 0x58a printf_P.o |
0x00000de0 _printf_P |
0x00000dc8 PAD_0 |
0x00000d86 PRINTP |
0x00000d5e PRINT |
0x00000db0 PAD_SP |
.text 0x000012e8 0xd6 timer0.o |
0x0000137c SetDelay |
0x0000138e CheckDelay |
0x000013a4 Delay_ms |
0x000012e8 __vector_9 |
0x00001368 Timer1_Init |
.text 0x000013be 0x136 keyboard.o |
0x000014da GetKeyboard2 |
0x000013be Keyboard_Init |
0x000013d0 GetKeyboard |
.text 0x000014f4 0x206 menu.o |
0x000014f4 Menu |
.text 0x000016fa 0x1b6 ir.o |
0x00001728 __vector_1 |
0x00001758 __vector_11 |
0x000016fa InitIR |
.text 0x000018b0 0x44 analog.o |
0x000018c8 GetAnalogWerte |
0x000018b8 ReadADC |
0x000018b0 ADC_Init |
.text 0x000018f4 0x1a C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
0x000018f4 memchr |
.text 0x0000190e 0x8e C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
0x0000190e fdevopen |
.text 0x0000199c 0x38 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
0x0000199c calloc |
.text 0x000019d4 0x1ec C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x000019d4 malloc |
0x00001b08 free |
.text 0x00001bc0 0x14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
0x00001bc0 memset |
0x00001bd4 . = ALIGN (0x2) |
*(.text.*) |
.text.libgcc 0x00001bd4 0x44 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
0x00001bd4 __udivmodsi4 |
0x00001c18 . = ALIGN (0x2) |
*(.fini9) |
*(.fini8) |
*(.fini7) |
*(.fini6) |
*(.fini5) |
*(.fini4) |
*(.fini3) |
*(.fini2) |
*(.fini1) |
*(.fini0) |
0x00001c18 _etext = . |
.data 0x00800060 0x24 load address 0x00001c18 |
0x00800060 PROVIDE (__data_start, .) |
*(.data) |
.data 0x00800060 0xc main.o |
0x00800065 DisplayZeilen |
0x00800064 SlaveAdresse |
0x00800066 CntDatensaetzeProSekunde |
0x00800062 IntervallDebug |
0x00800060 IntervallDisplay |
.data 0x0080006c 0x5 uart.o |
0x0080006e UebertragungAbgeschlossen |
0x0080006c AnzahlTeilnehmer |
0x0080006d ErwarteAntwort |
.data 0x00800071 0xb menu.o |
0x00800071 Array |
.data 0x0080007c 0x2 ir.o |
0x0080007c LoescheIrCodeTimer |
.data 0x0080007e 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x00800080 __malloc_heap_start |
0x0080007e __malloc_heap_end |
0x00800082 __malloc_margin |
*(.gnu.linkonce.d*) |
0x00800084 . = ALIGN (0x2) |
0x00800084 _edata = . |
0x00800084 PROVIDE (__data_end, .) |
.bss 0x00800084 0x157 |
0x00800084 PROVIDE (__bss_start, .) |
*(.bss) |
.bss 0x00800084 0xe main.o |
0x00800087 DebugGetAnforderung |
0x00800088 Debug_Display_Intervall |
0x00800086 GetVersionAnforderung |
0x0080008d Sekunde |
0x00800085 SendeDummyDaten |
0x0080008e _TastTimer |
0x0080008c Minute |
0x0080008a Debug_Timer_Intervall |
0x00800084 UebertragungUnterbrochen |
0x00800090 _SekTimer |
.bss 0x00800092 0x14 uart.o |
0x0080009d SioTmp |
0x00800098 PC_DebugTimeout |
0x0080009c NeuerDatensatzEmpfangen |
0x0080009a CntCrcError |
0x00800097 TX_DigTransferKanalL |
0x00800094 DisplayBusy |
0x00800092 WaitTXD |
0x00800099 AnzahlEmpfangsBytes |
0x00800095 TX_DigTransferKanalDaten |
0x00800093 AntwortEingetroffen |
0x00800096 TX_DigTransferKanalH |
.bss 0x008000a6 0x3 timer0.o |
0x008000a6 CountMilliseconds |
.bss 0x008000a9 0x7 keyboard.o |
0x008000a9 KeyTimer |
.bss 0x008000b0 0x5 menu.o |
0x008000b0 TestInt |
.bss 0x008000b5 0x6 ir.o |
*(COMMON) |
COMMON 0x008000bb 0x34 main.o |
0x008000bb Debug_Timer |
0x008000bd Debug_Display_Timer |
0x008000bf DebugIn |
0x008000ca VersionInfo |
0x008000d4 DebugOut |
0x008000ee PollDisplay |
COMMON 0x008000ef 0xc8 uart.o |
0x008000ef SendeBuffer |
0x00800153 RxdBuffer |
COMMON 0x008001b7 0x10 menu.o |
0x008001b7 KanalVon |
0x008001bf KanalAn |
COMMON 0x008001c7 0x4 ir.o |
0x008001c7 New_IR_Code |
0x008001c8 IR_Code |
0x008001ca Decodierung_Lauft |
COMMON 0x008001cb 0x6 analog.o |
0x008001cb AnalogWerte |
COMMON 0x008001d1 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
0x008001d1 __iob |
COMMON 0x008001d7 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x008001d7 __brkval |
0x008001d9 __flp |
0x008001db PROVIDE (__bss_end, .) |
0x00001c18 __data_load_start = LOADADDR (.data) |
0x00001c3c __data_load_end = (__data_load_start + SIZEOF (.data)) |
.noinit 0x008001db 0x0 |
0x008001db PROVIDE (__noinit_start, .) |
*(.noinit*) |
0x008001db PROVIDE (__noinit_end, .) |
0x008001db _end = . |
0x008001db PROVIDE (__heap_start, .) |
.eeprom 0x00810000 0x0 |
*(.eeprom*) |
0x00810000 __eeprom_end = . |
.stab 0x00000000 0x36c |
*(.stab) |
.stab 0x00000000 0x36c C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stabstr 0x00000000 0x84 |
*(.stabstr) |
.stabstr 0x00000000 0x84 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stab.excl |
*(.stab.excl) |
.stab.exclstr |
*(.stab.exclstr) |
.stab.index |
*(.stab.index) |
.stab.indexstr |
*(.stab.indexstr) |
.comment |
*(.comment) |
.debug |
*(.debug) |
.line |
*(.line) |
.debug_srcinfo |
*(.debug_srcinfo) |
.debug_sfnames |
*(.debug_sfnames) |
.debug_aranges 0x00000000 0xb4 |
*(.debug_aranges) |
.debug_aranges |
0x00000000 0x14 main.o |
.debug_aranges |
0x00000014 0x14 uart.o |
.debug_aranges |
0x00000028 0x14 lcd.o |
.debug_aranges |
0x0000003c 0x14 printf_P.o |
.debug_aranges |
0x00000050 0x14 timer0.o |
.debug_aranges |
0x00000064 0x14 keyboard.o |
.debug_aranges |
0x00000078 0x14 menu.o |
.debug_aranges |
0x0000008c 0x14 ir.o |
.debug_aranges |
0x000000a0 0x14 analog.o |
.debug_pubnames |
0x00000000 0x701 |
*(.debug_pubnames) |
.debug_pubnames |
0x00000000 0x1e1 main.o |
.debug_pubnames |
0x000001e1 0x240 uart.o |
.debug_pubnames |
0x00000421 0xb7 lcd.o |
.debug_pubnames |
0x000004d8 0x4a printf_P.o |
.debug_pubnames |
0x00000522 0x70 timer0.o |
.debug_pubnames |
0x00000592 0x52 keyboard.o |
.debug_pubnames |
0x000005e4 0x4a menu.o |
.debug_pubnames |
0x0000062e 0x85 ir.o |
.debug_pubnames |
0x000006b3 0x4e analog.o |
.debug_info 0x00000000 0x1a6c |
*(.debug_info) |
.debug_info 0x00000000 0x469 main.o |
.debug_info 0x00000469 0x7ba uart.o |
.debug_info 0x00000c23 0x260 lcd.o |
.debug_info 0x00000e83 0x45d printf_P.o |
.debug_info 0x000012e0 0x1d7 timer0.o |
.debug_info 0x000014b7 0x177 keyboard.o |
.debug_info 0x0000162e 0x1a7 menu.o |
.debug_info 0x000017d5 0x171 ir.o |
.debug_info 0x00001946 0x126 analog.o |
*(.gnu.linkonce.wi.*) |
.debug_abbrev 0x00000000 0x774 |
*(.debug_abbrev) |
.debug_abbrev 0x00000000 0x10c main.o |
.debug_abbrev 0x0000010c 0x178 uart.o |
.debug_abbrev 0x00000284 0xbc lcd.o |
.debug_abbrev 0x00000340 0x132 printf_P.o |
.debug_abbrev 0x00000472 0xc5 timer0.o |
.debug_abbrev 0x00000537 0x87 keyboard.o |
.debug_abbrev 0x000005be 0xb6 menu.o |
.debug_abbrev 0x00000674 0x76 ir.o |
.debug_abbrev 0x000006ea 0x8a analog.o |
.debug_line 0x00000000 0x16a3 |
*(.debug_line) |
.debug_line 0x00000000 0x2aa main.o |
.debug_line 0x000002aa 0x4c4 uart.o |
.debug_line 0x0000076e 0x279 lcd.o |
.debug_line 0x000009e7 0x4e2 printf_P.o |
.debug_line 0x00000ec9 0x180 timer0.o |
.debug_line 0x00001049 0x170 keyboard.o |
.debug_line 0x000011b9 0x19a menu.o |
.debug_line 0x00001353 0x212 ir.o |
.debug_line 0x00001565 0x13e analog.o |
.debug_frame |
*(.debug_frame) |
.debug_str 0x00000000 0x889 |
*(.debug_str) |
.debug_str 0x00000000 0x2e2 main.o |
0x371 (size before relaxing) |
.debug_str 0x000002e2 0x26b uart.o |
0x423 (size before relaxing) |
.debug_str 0x0000054d 0x9a lcd.o |
0x17b (size before relaxing) |
.debug_str 0x000005e7 0xf9 printf_P.o |
0x1bd (size before relaxing) |
.debug_str 0x000006e0 0x6b timer0.o |
0x168 (size before relaxing) |
.debug_str 0x0000074b 0x5e keyboard.o |
0x13f (size before relaxing) |
.debug_str 0x000007a9 0x40 menu.o |
0x15e (size before relaxing) |
.debug_str 0x000007e9 0x6d ir.o |
0x169 (size before relaxing) |
.debug_str 0x00000856 0x33 analog.o |
0x120 (size before relaxing) |
.debug_loc |
*(.debug_loc) |
.debug_macinfo |
*(.debug_macinfo) |
OUTPUT(main.elf elf32-avr) |
Cross Reference Table |
Symbol File |
ADC_Init analog.o |
main.o |
AddCRC uart.o |
AnalogWerte analog.o |
uart.o |
AntwortEingetroffen uart.o |
AnzahlEmpfangsBytes uart.o |
AnzahlTeilnehmer uart.o |
menu.o |
Array menu.o |
BearbeiteRxDaten uart.o |
main.o |
CheckDelay timer0.o |
keyboard.o |
main.o |
ClearIntervalle uart.o |
main.o |
CntCrcError uart.o |
menu.o |
CntDatensaetzeProSekunde main.o |
uart.o |
CountMilliseconds timer0.o |
DatenUebertragung uart.o |
main.o |
DebugGetAnforderung main.o |
DebugIn uart.o |
main.o |
DebugOut uart.o |
main.o |
Debug_Display_Intervall main.o |
Debug_Display_Timer main.o |
Debug_Timer main.o |
Debug_Timer_Intervall main.o |
Decode64 uart.o |
Decodierung_Lauft ir.o |
Delay_ms timer0.o |
main.o |
DisplayBusy uart.o |
timer0.o |
DisplayZeilen main.o |
menu.o |
uart.o |
ErwarteAntwort uart.o |
GetAnalogWerte analog.o |
main.o |
GetKeyboard keyboard.o |
main.o |
GetKeyboard2 keyboard.o |
main.o |
GetVersionAnforderung main.o |
IR_Code ir.o |
timer0.o |
uart.o |
Init main.o |
InitIR ir.o |
main.o |
IntervallDebug main.o |
IntervallDisplay main.o |
KanalAn menu.o |
KanalVon menu.o |
KeyTimer keyboard.o |
Keyboard_Init keyboard.o |
main.o |
LCD_Gotoxy lcd.o |
menu.o |
uart.o |
main.o |
LCD_Init lcd.o |
main.o |
LCD_Putchar lcd.o |
printf_P.o |
LCD_Write lcd.o |
LoescheIrCodeTimer ir.o |
timer0.o |
Menu menu.o |
main.o |
Minute main.o |
NeuerDatensatzEmpfangen uart.o |
New_IR_Code ir.o |
PAD_0 printf_P.o |
PAD_SP printf_P.o |
PC_DebugTimeout uart.o |
PRINT printf_P.o |
PRINTP printf_P.o |
PollDisplay uart.o |
main.o |
ReadADC analog.o |
RxdBuffer uart.o |
Sekunde main.o |
Sekundentakt main.o |
Sekundentakt_Init main.o |
SendIntervalle uart.o |
SendOutData uart.o |
SendeBuffer uart.o |
SendeDummyDaten main.o |
SendeRemoteTasten uart.o |
SetDelay timer0.o |
keyboard.o |
main.o |
SioTmp uart.o |
SlaveAdresse main.o |
menu.o |
uart.o |
TX_DigTransferKanalDaten uart.o |
TX_DigTransferKanalH uart.o |
TX_DigTransferKanalL uart.o |
TestInt menu.o |
Timer1_Init timer0.o |
main.o |
UART_Init uart.o |
main.o |
UebertragungAbgeschlossen uart.o |
UebertragungUnterbrochen main.o |
VersionInfo main.o |
WaitTXD uart.o |
timer0.o |
WriteProgramData uart.o |
_SekTimer main.o |
_TastTimer main.o |
__bad_interrupt C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__brkval C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__bss_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__bss_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__data_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_load_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__do_clear_bss C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__do_copy_data C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__flp C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__init C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__iob C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
__malloc_heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_margin C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__stack C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
main.o |
__udivmodsi4 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o |
__vector_1 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_10 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_11 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_12 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_13 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_15 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_16 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_17 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_18 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_19 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_20 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_3 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_5 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_7 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_8 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_9 timer0.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_default C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vectors C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
_lcd_write_4bit lcd.o |
_lcd_write_command lcd.o |
menu.o |
main.o |
_long_delay lcd.o |
menu.o |
main.o |
_printf_P printf_P.o |
menu.o |
uart.o |
main.o |
_short_delay lcd.o |
calloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
fdevopen C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o |
free C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
lcd_write_byte lcd.o |
main main.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
malloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
memchr C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o |
memset C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
my_pput lcd.o |
uart_putchar uart.o |
/branches/V0.42_addr9-12_fix_ligi/main.sym |
---|
0,0 → 1,253 |
00000000 W __heap_end |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 W __vector_default |
00000000 T __vectors |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
00000054 t __c.0 |
00000054 T __ctors_end |
00000054 T __ctors_start |
00000054 T __dtors_end |
00000054 T __dtors_start |
00000069 t __c.1 |
0000007e t __c.2 |
00000093 t __c.3 |
000000a8 t __c.2 |
000000ab t __c.3 |
000000ae t __c.4 |
000000b1 t __c.5 |
000000b4 t __c.3 |
000000c2 t __c.4 |
000000d0 t __c.5 |
000000dc t __c.6 |
000000e1 t __c.7 |
000000ea t __c.8 |
000000f6 t __c.9 |
000000fe t __c.10 |
0000010a W __init |
00000116 T __do_copy_data |
00000122 t .do_copy_data_loop |
00000126 t .do_copy_data_start |
0000012c T __do_clear_bss |
00000134 t .do_clear_bss_loop |
00000136 t .do_clear_bss_start |
00000140 T __bad_interrupt |
00000140 W __vector_10 |
00000140 W __vector_12 |
00000140 W __vector_14 |
00000140 W __vector_16 |
00000140 W __vector_17 |
00000140 W __vector_18 |
00000140 W __vector_19 |
00000140 W __vector_2 |
00000140 W __vector_20 |
00000140 W __vector_3 |
00000140 W __vector_4 |
00000140 W __vector_5 |
00000140 W __vector_6 |
00000140 W __vector_7 |
00000140 W __vector_8 |
00000144 T Sekundentakt_Init |
00000156 T Sekundentakt |
000001b4 T Init |
000001ca T main |
000003c6 T __vector_15 |
00000430 T __vector_13 |
000005de T AddCRC |
0000063c T SendOutData |
00000724 T Decode64 |
000007fc T BearbeiteRxDaten |
0000085f W __stack |
0000097a T uart_putchar |
00000996 T WriteProgramData |
00000998 T UART_Init |
000009b4 T SendeRemoteTasten |
00000a14 T SendIntervalle |
00000a5c T ClearIntervalle |
00000aa2 T DatenUebertragung |
00000b92 T _long_delay |
00000bb2 T _short_delay |
00000bc2 T _lcd_write_command |
00000bee T _lcd_write_4bit |
00000c0c T lcd_write_byte |
00000c34 T my_pput |
00000c3e T LCD_Init |
00000caa T LCD_Gotoxy |
00000cf8 T LCD_Write |
00000d2e T LCD_Putchar |
00000d44 T PRINT |
00000d6c T PRINTP |
00000d96 T PAD_SP |
00000dae T PAD_0 |
00000dc6 T _printf_P |
000012ce T __vector_9 |
0000133c T Timer1_Init |
00001350 T SetDelay |
00001362 T CheckDelay |
00001378 T Delay_ms |
00001392 T Keyboard_Init |
000013a4 T GetKeyboard |
000014ae T GetKeyboard2 |
000014c8 T Menu |
000016ce T InitIR |
000016fc T __vector_1 |
0000172c T __vector_11 |
00001884 T ADC_Init |
0000188c T ReadADC |
0000189c T GetAnalogWerte |
000018c8 T memchr |
000018e2 T fdevopen |
00001970 T calloc |
000019a8 T malloc |
00001adc T free |
00001b94 T memset |
00001ba8 T __udivmodsi4 |
00001bb4 t __udivmodsi4_loop |
00001bce t __udivmodsi4_ep |
00001bec A __data_load_start |
00001bec T _etext |
00001c10 A __data_load_end |
00800060 D __data_start |
00800060 D IntervallDisplay |
00800062 D IntervallDebug |
00800064 D SlaveAdresse |
00800065 D DisplayZeilen |
00800066 D CntDatensaetzeProSekunde |
0080006c D AnzahlTeilnehmer |
0080006d D ErwarteAntwort |
0080006e D UebertragungAbgeschlossen |
0080006f d state.0 |
00800070 d KanalSlave.1 |
00800071 D Array |
0080007b d MaxMenue.1 |
0080007c D LoescheIrCodeTimer |
0080007e D __malloc_heap_end |
00800080 D __malloc_heap_start |
00800082 D __malloc_margin |
00800084 B __bss_start |
00800084 D __data_end |
00800084 D _edata |
00800084 B UebertragungUnterbrochen |
00800085 B SendeDummyDaten |
00800086 B GetVersionAnforderung |
00800087 B DebugGetAnforderung |
00800088 B Debug_Display_Intervall |
0080008a B Debug_Timer_Intervall |
0080008c B Minute |
0080008d B Sekunde |
0080008e B _TastTimer |
00800090 B _SekTimer |
00800092 B AntwortEingetroffen |
00800093 B DisplayBusy |
00800094 B TX_DigTransferKanalDaten |
00800095 B TX_DigTransferKanalH |
00800096 B TX_DigTransferKanalL |
00800097 B PC_DebugTimeout |
00800098 B AnzahlEmpfangsBytes |
00800099 B CntCrcError |
0080009b B NeuerDatensatzEmpfangen |
0080009c B SioTmp |
0080009d b ptr.11 |
0080009f b crc.6 |
008000a1 b crc1.7 |
008000a2 b crc2.8 |
008000a3 b buf_ptr.9 |
008000a4 b UartState.10 |
008000a5 B CountMilliseconds |
008000a7 b cnt_10ms.0 |
008000a8 B KeyTimer |
008000aa b taste1.0 |
008000ab b taste2.1 |
008000ac b taste3.2 |
008000ad b taste4.3 |
008000ae b taste5.4 |
008000af B TestInt |
008000b1 b arr.0 |
008000b3 b MenuePunkt.2 |
008000b4 b Shift.0 |
008000b6 b IR_Code_tmp.1 |
008000b8 b IR_Zaehler.2 |
008000b9 b IRSperrCounter.3 |
008000ba B Debug_Timer |
008000bc B Debug_Display_Timer |
008000be B DebugIn |
008000c9 B VersionInfo |
008000d3 B DebugOut |
008000ed B PollDisplay |
008000ee B SendeBuffer |
00800152 B RxdBuffer |
008001b6 B KanalVon |
008001be B KanalAn |
008001c6 B New_IR_Code |
008001c7 B IR_Code |
008001c9 B Decodierung_Lauft |
008001ca B AnalogWerte |
008001d0 B __iob |
008001d6 B __brkval |
008001d8 B __flp |
008001da B __bss_end |
008001da ? __heap_start |
008001da ? _end |
00810000 ? __eeprom_end |
/branches/V0.42_addr9-12_fix_ligi/makefile |
---|
0,0 → 1,402 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega8 |
#------------------------------------------------------------------- |
# ACHTUNG: Immer "Make Clean" machen, wenn hier etwas geändert wird! |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 42 |
MotorAdresse = 4 |
FDD_IRLR = 1 |
#------------------------------------------------------------------- |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
ifeq ($(MotorAdresse), 0) |
ifeq ($(FDD_IRLR), 1) |
TARGET = BrushLess-Ctrlr_MEGA8_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_10A |
else |
TARGET = BrushLess-Ctrlr_MEGA8_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_6A |
endif |
else |
ifeq ($(FDD_IRLR), 1) |
TARGET = BrushLess-Ctrlr_MEGA8_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_10A_ADR_$(MotorAdresse)_for_BL-Ctrl_V1_0 |
else |
TARGET = BrushLess-Ctrlr_MEGA8_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_6A_ADR_$(MotorAdresse)_for_BL-Ctrl_V1_0 |
endif |
endif |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c timer0.c analog.c PPM_Decode.c twislave.c BLMC.c |
#printf_P.c |
########################################################################################################## |
# If there is more than one source file, append them above, or modify and |
# uncomment the following: |
#SRC += foo.c bar.c |
# You can also wrap lines by appending a backslash to the end of the line: |
#SRC += baz.c \ |
#xyzzy.c |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -g -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DMOTORADRESSE=$(MotorAdresse) -DFDD_IRLR=$(FDD_IRLR) |
ifeq ($(AVR_CTRL_PLATINE), 1) |
CFLAGS += -DAVR_CTRL_PLATINE=$(AVR_CTRL_PLATINE) |
endif |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
#AVRDUDE_FLAGS += -V -E noreset |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
# $(REMOVE) $(TARGET).eep |
# $(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/V0.42_addr9-12_fix_ligi/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/branches/V0.42_addr9-12_fix_ligi/timer0.c |
---|
0,0 → 1,59 |
/***************************************************************************** |
*****************************************************************************/ |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile unsigned char Timer0Overflow; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL(SIG_OVERFLOW0) |
{ |
static unsigned char cnt; |
Timer0Overflow++; |
if(!cnt--) |
{ |
cnt = 3; |
CountMilliseconds += 1; |
if(I2C_Timeout) I2C_Timeout--; |
if(PPM_Timeout) PPM_Timeout--; else anz_ppm_werte = 0; |
if(SIO_Timeout) SIO_Timeout--; |
} |
} |
void Timer0_Init(void) |
{ |
TCCR0 = TIMER_TEILER; |
// TCNT0 = -TIMER_RELOAD_VALUE; // reload |
TIM0_START; |
TIMER2_INT_ENABLE; |
} |
unsigned int SetDelay(unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
} |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
} |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
/branches/V0.42_addr9-12_fix_ligi/timer0.h |
---|
0,0 → 1,15 |
#if defined (__AVR_ATmega8__) |
#define TIMER_TEILER CK8 |
//#define TIMER_RELOAD_VALUE 125 |
#endif |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char Timer0Overflow; |
void Timer1_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
/branches/V0.42_addr9-12_fix_ligi/twislave.c |
---|
0,0 → 1,77 |
/*############################################################################ |
Slaveadr = 0x52 = Vorne, 0x54 = Hinten, 0x56 = Rechts, 0x58 = Links |
############################################################################*/ |
#include <avr/io.h> |
#include <util/twi.h> |
#include "main.h" |
unsigned char I2C_RXBuffer; |
unsigned char Byte_Counter=0; |
//############################################################################ |
//I2C (TWI) Interface Init |
void InitIC2_Slave(uint8_t adr) |
//############################################################################ |
{ |
TWAR = adr + (2*MotorAdresse); // Eigene Adresse setzen |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
//############################################################################ |
//ISR, die bei einem Ereignis auf dem Bus ausgelöst wird. Im Register TWSR befindet |
//sich dann ein Statuscode, anhand dessen die Situation festgestellt werden kann. |
ISR (TWI_vect) |
//############################################################################ |
{ |
switch (TWSR & 0xF8) |
{ |
case SR_SLA_ACK: |
TWCR |= (1<<TWINT); |
Byte_Counter=0; |
return; |
// Daten Empfangen |
case SR_PREV_ACK: |
GRN_OFF; |
I2C_RXBuffer = TWDR; |
I2C_Timeout = 500; |
TWCR |= (1<<TWINT); |
GRN_ON; |
return; |
// Daten Senden |
case SW_SLA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_DATA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_2: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_1: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
} |
TWCR =(1<<TWEA) | (1<<TWINT) | (1<<TWEN) | (1<<TWIE); // TWI Reset |
} |
/branches/V0.42_addr9-12_fix_ligi/twislave.h |
---|
0,0 → 1,32 |
#ifndef _TWI_SLAVE_H_ |
#define _TWI_SLAVE_H_ |
extern unsigned char I2C_RXBuffer; |
extern unsigned char Byte_Counter; |
extern void InitIC2_Slave (uint8_t adr); |
#define TWI_BUS_ERR_1 0x00 |
#define TWI_BUS_ERR_2 0xF8 |
// Status Slave RX Mode |
#define SR_SLA_ACK 0x60 |
#define SR_LOST_ACK 0x68 |
#define SR_GEN_CALL_ACK 0x70 |
#define GEN_LOST_ACK 0x78 |
#define SR_PREV_ACK 0x80 |
#define SR_PREV_NACK 0x88 |
#define GEN_PREV_ACK 0x90 |
#define GEN_PREV_NACK 0x98 |
#define STOP_CONDITION 0xA0 |
#define REPEATED_START 0xA0 |
// Status Slave TX mode |
#define SW_SLA_ACK 0xA8 |
#define SW_LOST_ACK 0xB0 |
#define SW_DATA_ACK 0xB8 |
#define SW_DATA_NACK 0xC0 |
#define SW_LAST_ACK 0xC8 |
#endif |
/branches/V0.42_addr9-12_fix_ligi/uart.c |
---|
0,0 → 1,280 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + (c) 01.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + Keine Garantie auf Fehlerfreiheit |
// + Kommerzielle Nutzung nur mit meiner Zustimmung |
// + Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
// + www.mikrocontroller.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
#define MAX_SENDE_BUFF 100 |
#define MAX_EMPFANGS_BUFF 100 |
unsigned volatile char SIO_Sollwert = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned char MeineSlaveAdresse; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
struct str_DebugOut DebugOut; |
int Debug_Timer; |
SIGNAL(INT_VEC_TX) |
{ |
} |
void SendUart(void) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!(UCSRA & 0x40)) return; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
USR |= (1<TXC); |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
#if X3D_SIO == 1 |
static unsigned char serPacketCounter = 100; |
SioTmp = UDR; |
if(SioTmp == 0xF5) // Startzeichen |
{ |
serPacketCounter = 0; |
} |
else |
{ |
if(++serPacketCounter == MotorAdresse) // (1-4) |
{ |
SIO_Sollwert = SioTmp; |
SIO_Timeout = 200; // werte für 200ms gültig |
} |
else |
{ |
if(serPacketCounter > 100) serPacketCounter = 100; |
} |
} |
#else |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; }; |
if(CrcOkay) // Datensatz schon verarbeitet |
{ |
//NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
uart_putchar(RxdBuffer[2]); |
if (RxdBuffer[2] == 't') // Motortest |
{ Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
SIO_Sollwert = MotorTest[MotorAdresse - 1]; |
SIO_Timeout = 500; // werte für 500ms gültig |
} |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
#endif |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); // serieller Empfangsinterrupt |
// TX-Interrupt Freigabe |
// UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR= (SYSCLK / (BAUD_RATE * 8L) -1 ); |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
Debug_Timer = SetDelay(200); |
// Version beim Start ausgeben (nicht schön, aber geht... ) |
uart_putchar ('\n');uart_putchar ('B');uart_putchar ('L');uart_putchar (':'); |
uart_putchar ('V');uart_putchar (0x30 + VERSION_HAUPTVERSION);uart_putchar ('.');uart_putchar (0x30 + VERSION_NEBENVERSION/10); uart_putchar (0x30 + VERSION_NEBENVERSION%10); |
uart_putchar ('\n');uart_putchar('H');uart_putchar('W');uart_putchar (':');uart_putchar('1');uart_putchar('.');uart_putchar ((0x30-10) + HwVersion); |
uart_putchar ('\n');uart_putchar ('A');uart_putchar ('D');uart_putchar ('R'); uart_putchar (':'); |
uart_putchar (0x30 + MotorAdresse/10); uart_putchar (0x30 + MotorAdresse%10); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen)) // im Singlestep-Betrieb in jedem Schtitt senden |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
Debug_Timer = SetDelay(50); // Sendeintervall |
} |
} |
/branches/V0.42_addr9-12_fix_ligi/uart.h |
---|
0,0 → 1,79 |
#ifndef _UART_H |
#define _UART_H |
extern unsigned volatile char SIO_Sollwert; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned char MeineSlaveAdresse; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void SendUart(void); |
extern void DatenUebertragung(void); |
struct str_DebugOut |
{ |
unsigned char Digital[2]; |
unsigned int Analog[8]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
//Die Baud_Rate der Seriellen Schnittstelle |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
#if X3D_SIO == 1 |
#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#else |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
#endif |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega8__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/branches/V0.42_addr9-12_fix_ligi |
---|
Property changes: |
Added: tsvn:logminsize |
+8 |
\ No newline at end of property |
/branches/v0.31_8kHz_PWM/BLMC.c |
---|
0,0 → 1,196 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned char Phase = 0,ShadowTCCR1A = 0; |
volatile unsigned char CompFreigabeTimer = 100; |
volatile unsigned char CompInterruptFreigabe = 0; |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW2) |
//############################################################################ |
{ |
} |
//############################################################################ |
// + Interruptroutine |
// + Wird durch den Analogkomperator ausgelöst |
// + Dadurch wird das Kommutieren erzeugt |
SIGNAL(SIG_COMPARATOR) |
//############################################################################ |
{ |
unsigned char sense = 0; |
do |
{ |
if(SENSE_H) sense = 1; else sense = 0; |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
if(sense) |
{ |
STEUER_C_L; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_FALLING_INT; |
SENSE_B; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_L; |
} |
break; |
case 1: |
STEUER_C_L; |
if(!sense) |
{ |
STEUER_B_H; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_H; |
} |
break; |
case 2: |
STEUER_B_H; |
if(sense) |
{ |
STEUER_A_L; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_L; |
} |
break; |
case 3: |
STEUER_A_L; |
if(!sense) |
{ |
STEUER_C_H; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_B; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_H; |
} |
break; |
case 4: |
STEUER_C_H; |
if(sense) |
{ |
STEUER_B_L; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_L; |
} |
break; |
case 5: |
STEUER_B_L; |
if(!sense) |
{ |
STEUER_A_H; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_RISING_INT; |
Phase = 0; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_H; |
} |
break; |
} |
} |
while((SENSE_L && sense) || (SENSE_H && !sense)); |
ZeitZumAdWandeln = 0; |
} |
//############################################################################ |
// |
void Manuell(void) |
//############################################################################ |
{ |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
STEUER_B_L; |
SENSE_C; |
SENSE_RISING_INT; |
break; |
case 1: |
STEUER_A_H; |
STEUER_C_L; |
SENSE_B; |
SENSE_FALLING_INT; |
break; |
case 2: |
STEUER_B_H; |
STEUER_C_L; |
SENSE_A; |
SENSE_RISING_INT; |
break; |
case 3: |
STEUER_B_H; |
STEUER_A_L; |
SENSE_C; |
SENSE_FALLING_INT; |
break; |
case 4: |
STEUER_C_H; |
STEUER_A_L; |
SENSE_B; |
SENSE_RISING_INT; |
break; |
case 5: |
STEUER_C_H; |
STEUER_B_L; |
SENSE_A; |
SENSE_FALLING_INT; |
break; |
} |
} |
/branches/v0.31_8kHz_PWM/BLMC.h |
---|
0,0 → 1,55 |
/*############################################################################ |
############################################################################*/ |
#ifndef BLMC_H_ |
#define BLMC_H_ |
extern volatile unsigned char Phase; |
extern volatile unsigned char ShadowTCCR1A; |
extern volatile unsigned char CompInterruptFreigabe; |
void Blc(void); |
void Manuell(void); |
#ifdef _32KHZ |
#define PWM_C_ON {TCCR1A = 0xA1; TCCR2 = 0x49; DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xA1; TCCR2 = 0x49; DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xA1; TCCR2 = 0x69; DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x01; TCCR2 = 0x49; PORTC &= ~0x0E;} |
#endif |
#ifdef _16KHZ |
#define PWM_C_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xA2; TCCR2 = 0x61; DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x02; TCCR2 = 0x41; PORTC &= ~0x0E;} |
#endif |
#define STEUER_A_H {PWM_A_ON} |
#define STEUER_B_H {PWM_B_ON} |
#define STEUER_C_H {PWM_C_ON} |
#define STEUER_A_L {PORTD &= ~0x30; PORTD |= 0x08;} |
#define STEUER_B_L {PORTD &= ~0x28; PORTD |= 0x10;} |
#define STEUER_C_L {PORTD &= ~0x18; PORTD |= 0x20;} |
#define STEUER_OFF {PORTD &= ~0x38; PWM_OFF;} |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
#define ENABLE_SENSE_INT {CompInterruptFreigabe = 1;ACSR |= 0x0A; } |
#define DISABLE_SENSE_INT {CompInterruptFreigabe = 0; ACSR &= ~0x08; } |
#define SENSE_FALLING_INT ACSR &= ~0x01 |
#define SENSE_RISING_INT ACSR |= 0x03 |
#define SENSE_TOGGLE_INT ACSR &= ~0x03 |
#endif //BLMC_H_ |
/branches/v0.31_8kHz_PWM/BL_Ctrl.pnproj |
---|
0,0 → 1,0 |
<Project name="avr_ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="analog.h"></File><File path="analog.c"></File><File path="PPM_Decode.c"></File><File path="PPM_Decode.h"></File><File path="twislave.c"></File><File path="twislave.h"></File><File path="BLMC.c"></File><File path="BLMC.h"></File></Project> |
/branches/v0.31_8kHz_PWM/BL_Ctrl.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="avr_ctrl" x="true"></e></ViewState></pd> |
/branches/v0.31_8kHz_PWM/BrushLess-Ctrl_8kHz_PWM_V0_31_1.hex |
---|
0,0 → 1,292 |
:1000000012C073C52BC02AC0D5C5D9C427C026C00D |
:10001000C5C402C423C005C321C0D2C21FC01EC0B4 |
:1000200036C677C51BC011241FBECFE5D4E0DEBFA6 |
:10003000CDBF10E0A0E6B0E0EEE1F2E102C0059035 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73CD1E0C8D1CF20917F |
:10006000700080916400821710F4AB9A282F809161 |
:100070007200909173008338910560F01BBC1ABC2C |
:1000800019BC18BC13BCAB9A019790937300809372 |
:1000900072000895822F9927880F991F9BBD8ABDF2 |
:1000A00099BD88BD23BD089582E08FBD81E485BDE3 |
:1000B00085B3817F85BB89E08EBD089592B7980F87 |
:1000C00082B7891B87FDFCCF0895809178009091BD |
:1000D0007900892B09F04EC080917A00882371F055 |
:1000E000909186008FEF989FC001112468EC70E01A |
:1000F00044D8709385006093840044C0809191003F |
:10010000882359F120918E0030918F0041E02D32EB |
:10011000340730F4293C310540F42B30310538F4F4 |
:1001200010928500109284002CC028EC30E08CEFF7 |
:1001300090E0AC01249FC001259F900D349F900D4D |
:100140001124885D994064EB70E017D86D5F7F4F94 |
:10015000709385006093840014C080918400909116 |
:100160008500009729F00197909385008093840083 |
:10017000AB9A08C08091880399279093850080935B |
:100180008400AB9880918400909185008F3F910509 |
:1001900039F030F08FEF90E09093850080938400E9 |
:1001A0008091840099270895809172009091730046 |
:1001B00090937803809377038091750099279093AB |
:1001C0007A038093790380918200909183009093C9 |
:1001D0007C0380937B0380918E0090918F0090939D |
:1001E0007E0380937D030895AF92BF92CF92DF92FA |
:1001F000EF92FF920F931F93CF93DF93182F1092DC |
:100200009900439885E090E090937100809370008E |
:1002100026DFDAD488EC90E05FD3C12FDD27D093BE |
:100220007100C09370004CE2A42E41E0B42EC12CAA |
:10023000D12CEE24FF2487010EC080916600882314 |
:1002400011F4C8D101C0B9D284E638DF0894E11CAA |
:10025000F11C011D111DEA14FB040C051D0569F7B5 |
:10026000C601B5012FE030E040E050E09AD7A21A75 |
:10027000B30AC40AD50A0894A108B108C108D10874 |
:1002800089E1A816B104C104D104C0F09DD48091C5 |
:1002900097008F5F809397008091970066E061D709 |
:1002A0009093970034D3D0937100C0937000D7DE41 |
:1002B000449BBFCF82B3805882BBBBCFDF91CF912D |
:1002C0001F910F91FF90EF90DF90CF90BF90AF9074 |
:1002D0000895AF92BF92CF92DF92EF92FF920F9369 |
:1002E0001F93CF93DF9388E084BB85BB8AEB81BBF0 |
:1002F00080E882BB8EE087BB81E388BB78D2CFD217 |
:10030000789486E990E0E8D297988AEF90E0E4D27A |
:10031000C0E0D0E02196C130D10549F4979A86E932 |
:1003200090E0DAD297988AEF90E0D6D2F3CF86E9C0 |
:1003300090E0D2D297988AEF90E0CED2CE0101968B |
:10034000059744F384EF91E0C7D251D2ADDE80E54A |
:10035000DBD317D385E690E0ABD286E690E0A8D257 |
:1003600087E690E0A5D2EC018EEF90E0A1D25C018F |
:100370008DEE93E09DD28C018EEE93E099D26C01CC |
:10038000CE019FD28823E1F3979A109271001092C8 |
:10039000700065DE88E080BF81E087B98AE090E088 |
:1003A00087D2EC0181E090E090937A038093790307 |
:1003B00010928F0010928E00EE2487DE9927909382 |
:1003C000710080937000809197008E1551F010920B |
:1003D00063001092620082E390E06AD2EC01E09048 |
:1003E00097008091700090917100892BC9F4109250 |
:1003F0007F0010926200C80164D28823D9F0109265 |
:100400009900439881E08093630082B3877C82BB2C |
:1004100082E08FBD81E485BD85B3817F85BB0EC041 |
:1004200080916300882319F081E080937F008CED38 |
:1004300095E03ED280916300882321F010927100F4 |
:10044000109270000CDE809162008F5F80936200DA |
:10045000813009F0B2CF809163008111979AC50174 |
:1004600030D2882339F182E390E022D25C0180917E |
:100470007500482F55272091720030917300421764 |
:10048000530710F48F5F04C02417350718F4815008 |
:10049000809375008091750090916400823428F0FB |
:1004A000915090936400AB9A05C09F3F19F09F5FF5 |
:1004B00090936400C80105D2882309F18AE090E096 |
:1004C000F7D18C012091800030918100C901880F03 |
:1004D000991F820F931F880F991F66E070E04DD619 |
:1004E00070938300609382001092810010928000CC |
:1004F00080919100882319F481E080936500C60102 |
:10050000E0D1882321F08CED95E0D2D16C01CE01B1 |
:10051000D8D1882331F08091820090918300892B7B |
:1005200029F080917F00882309F447CF61E0F62EFF |
:10053000F092630010929900439884E690E0B8D15D |
:10054000EC0180917F00882309F437CFAB9810929B |
:100550007F008AE049DE979A1092630080919700AD |
:1005600081508093970081E090E090937100809398 |
:10057000700075DD88B18C7F88B9F092990088B1E0 |
:100580008A6088B984E690E093D1EC01CE0199D1DC |
:100590008823E1F38AE090E09093710080937000EB |
:1005A0005EDD88EC90E084D1EC01CE018AD1882315 |
:1005B000E1F388EE93E07CD1EC0157E0E52EFDCE2F |
:1005C0001F920F920FB60F9211240F900FBE0F9033 |
:1005D0001F9018955E9B24C0809166008823E1F4EB |
:1005E0008091890090918A00019690938A0080936F |
:1005F0008900FC01E556FD4FE081ED3019F08436AD |
:10060000910539F410928A001092890081E080935C |
:100610006600589AECB9089510928A0010928900E9 |
:1006200008951F920F920FB60F9211248F938CB1E1 |
:100630008093870080918700853F19F410926700AE |
:1006400014C0809167008F5F80936700813041F410 |
:10065000809187008093860088EC80937A0005C0A3 |
:10066000853618F084E6809367008F910F900FBE57 |
:100670000F901F901895DC0120E030E040E050E042 |
:10068000EBE9F2E005C08191280F311D4F5F5F4F0C |
:100690004A175B07C1F73F70C90136E09695879509 |
:1006A0003A95E1F7835CFD01E556FD4F8083119695 |
:1006B0002F73235CFD01E556FD4F2083A456BD4FEB |
:1006C0008DE08C931092660080919B028CB9089506 |
:1006D000EF92FF920F931F93CF93DF937A01722FC4 |
:1006E00093E290939B0260939C0280939D0203E0AF |
:1006F00010E060E0AEE9B2E046C0F701E60FF11DA0 |
:1007000090816F5F715019F4E0E040E00FC0F70195 |
:10071000E60FF11D40816F5F715011F4E0E006C0FB |
:10072000F701E60FF11DE0816F5F7150892F86950B |
:100730008695835C8C935527892F992783709070B9 |
:1007400024E0880F991F2A95E1F79A0194E03695E5 |
:1007500027959A95E1F7822B835CED0189834F7091 |
:100760005070440F551F440F551F8E2F829586954C |
:1007700086958370842B835C8A83EF73E35CEB83C1 |
:100780000C5F1F4F1496772309F0B7CFC80173DFB2 |
:10079000DF91CF911F910F91FF90EF9008951F93DC |
:1007A000182F8A3011F48DE0FADF5D9BFECF1CB963 |
:1007B00080E090E01F91089508958091FF0290914C |
:1007C00000037FD0882391F080916600882371F028 |
:1007D00022E245E653E060919A0284E479DF82E305 |
:1007E00090E066D0909300038093FF02089588E123 |
:1007F0008AB9599A579A8CE089B960E070E08FEC19 |
:1008000093E049D388EC90E053D090930003809319 |
:10081000FF028AE28CB908951F920F920FB60F92D1 |
:1008200011248F939F9380E882BF809187038F5F0D |
:100830008093870380918D00815080938D008F3F3E |
:1008400039F583E080938D0080918B0090918C002E |
:10085000019690938C0080938B008091780090910A |
:100860007900009729F001979093790080937800A0 |
:1008700080919100882329F080919100815080938C |
:10088000910080917A00882319F0815080937A003A |
:100890009F918F910F900FBE0F901F90189582E03F |
:1008A00083BF89B7816089BF89B7806489BF089594 |
:1008B00020918B0030918C00280F391FC9010197BE |
:1008C000089520918B0030918C00821B930B892F0F |
:1008D000992780789927089520918B0030918C007A |
:1008E000280F391F2150304080918B0090918C004F |
:1008F000A901481B590BCA01892F992787FFF4CFFB |
:10090000089585EA86B987E087B9369A089527B1B0 |
:1009100096E097B910BE82ED86B9349A97B9369AA7 |
:10092000349BFECF27B944B155B1440F551F440F36 |
:10093000551F493C510510F048EC50E08091720081 |
:10094000909173009C0163E0220F331F6A95E1F7D9 |
:10095000281B390B240F351F83E0369527958A9580 |
:10096000E1F730937300209372008091740099270F |
:100970008217930710F42093740016B888E080BFA4 |
:1009800008958EB5806C8EBD8EB580648EBD89B79E |
:10099000806289BF89B7846089BF08951F920F92D2 |
:1009A0000FB60F9211248F93809190008F5F8093E8 |
:1009B00090008F910F900FBE0F901F9018951F926F |
:1009C0000F920FB60F9211242F933F934F935F9383 |
:1009D0008F939F930EB406FE0FC01092900086B5C1 |
:1009E00097B590939500809394008EB58F7B8EBDC4 |
:1009F00084E6809391006EC08EB580648EBD46B54E |
:100A000057B5809190002091940030919500421B41 |
:100A1000530B9927982F8827990F480F591F5295E4 |
:100A200042954F7045275F70452750939300409340 |
:100A3000920081E04831580758F4109293001092C8 |
:100A4000920080918E0090918F0040E050E013C0A2 |
:100A500048515140509393004093920080918E00F2 |
:100A600090918F008417950730F480918E009091BB |
:100A70008F0001960CC080918E0090918F004817D6 |
:100A8000590748F480918E0090918F0001979093C0 |
:100A90008F0080938E0080918E0090918F009C013A |
:100AA000220F331F220F331F220F331F281B390B36 |
:100AB000240F351F83E0369527958A95E1F730930B |
:100AC00093002093920030938F0020938E0081E05A |
:100AD000809365009F918F915F914F913F912F91EE |
:100AE0000F900FBE0F901F9018951F920F920FB688 |
:100AF0000F9211248F938AB78F7B8ABF8F910F90AB |
:100B00000FBE0F901F9018958E5F82B985EC86BF3F |
:100B100008951F920F920FB60F9211248F939F93F7 |
:100B200081B19927887F907080389105C9F081380C |
:100B3000910534F4009791F18036910591F50AC042 |
:100B4000883B9105B9F0883F910529F1883A9105D4 |
:100B500041F510C086B7806886BF1092960023C00A |
:100B600083B18093880384EF91E090937900809320 |
:100B700078000EC080919600882339F4809175002A |
:100B800083B981E08093960003C08091640083B9AB |
:100B900086B7806807C086B7806986BF86B78069D8 |
:100BA00086BF85EC86BF9F918F910F900FBE0F90EF |
:100BB0001F9018951F920F920FB60F9211240F904D |
:100BC0000FBE0F901F90189590919700923041F1B1 |
:100BD000933030F4992361F0913009F057C014C07C |
:100BE0009430C1F1943040F1953009F04FC042C0CB |
:100BF00082EA8FBD81E685BD88E087BB82B3877DB1 |
:100C000082BB949A82E031C082EA8FBD81E685BDC5 |
:100C100088E087BB82B3877E82BB959A97B918C05C |
:100C200082EA8FBD81E485BD8CE087BB82B3877E7D |
:100C300082BB959A17B81AC082EA8FBD81E485BD40 |
:100C40008CE087BB82B38F7C82BB939A82E087B9AA |
:100C50004098089582EA8FBD81E485BD8AE087BB14 |
:100C600082B38F7C82BB939A81E087B988B183601D |
:100C700088B9089582EA8FBD81E485BD8AE087BB8B |
:100C800082B3877D82BB949A17B8409808951F92CB |
:100C90000F920FB60F9211240F931F932F933F9330 |
:100CA0004F935F936F937F938F939F93AF93BF9374 |
:100CB000EF93FF9388B19927689414F896958795D8 |
:100CC0001694E1F7082F017010919700123009F483 |
:100CD00056C0133030F4112371F0113009F0BCC04C |
:100CE00024C0143009F47EC0143008F461C01530FB |
:100CF00009F0B2C091C082EA8FBD81E685BD88E06F |
:100D000087BB002369F082B3877E82BB959A11E08E |
:100D100014BD809165008111FADD409817B91AC0A1 |
:100D200082B3877D82BB949A97C082B3877E82BB51 |
:100D3000959A0023F1F482EA8FBD81E485BD8CE0B1 |
:100D400087BB14BD809165008111E1DD17B888B1C2 |
:100D5000836088B9809197008F5F8093970080911E |
:100D60008000909181000196909381008093800093 |
:100D700073C082EA8FBD81E685BD88E06CC082EADF |
:100D80008FBD81E485BD8CE087BB002361F082B319 |
:100D90008F7C82BB939A81E084BD80916500811134 |
:100DA000B6DD17B932C082B3877E82BB959A54C034 |
:100DB00082B38F7C82BB939A002371F482EA8FBD49 |
:100DC00081E485BD8AE087BB11E014BD8091650098 |
:100DD00081119DDD17B9BBCF82EA8FBD81E485BD4E |
:100DE0008CE039C082EA8FBD81E485BD8AE087BB93 |
:100DF000002369F082B3877D82BB949A81E084BD31 |
:100E000080916500811183DD17B84098A3CF82B32C |
:100E10008F7C82BB939A20C082B3877D82BB949AD9 |
:100E20000023A1F482EA8FBD81E685BD88E087BBFF |
:100E300081E084BD80916500811169DD82E087B920 |
:100E400088B1836088B91092970089CF82EA8FBDFC |
:100E500081E485BD8AE087BB459903C0002309F082 |
:100E600029CF459B03C0002309F424CF10926500CD |
:100E7000FF91EF91BF91AF919F918F917F916F9172 |
:100E80005F914F913F912F911F910F910F900FBE46 |
:100E90000F901F901895EF92FF920F931F93CF938F |
:100EA000DF938C017B01892B11F4672BC9F16EE074 |
:100EB00070E081E090E03BD0FC01009789F1DC011B |
:100EC00080E88383E114F10471F0F386E28681E81F |
:100ED00083838091890390918A03892B21F4F09375 |
:100EE0008A03E093890301151105E1F0118700875A |
:100EF00083818260838380918B0390918C03892B03 |
:100F000089F4F0938C03E0938B0380918D0390918F |
:100F10008E03892B39F4F0938E03E0938D0302C086 |
:100F2000A0E0B0E0CD01E6E0CDB7DEB768C10F9339 |
:100F30001F93CF93DF93869F8001879F100D969F0D |
:100F4000100D1124C8010DD0EC01009721F0A8016B |
:100F500060E070E0FFD0CE01DF91CF911F910F9143 |
:100F60000895CF93DF93AC01029710F442E050E074 |
:100F7000A0919103B0919203FD01C0E0D0E020E088 |
:100F800030E020C0808191818417950769F48281C7 |
:100F90009381209719F09B838A8304C090939203D6 |
:100FA00080939103CF0132C04817590738F42115B7 |
:100FB000310519F08217930708F49C01EF010280B4 |
:100FC000F381E02D3097F1F62115310589F1C90142 |
:100FD000841B950B049708F4A901E0E0F0E026C01B |
:100FE0008D919C91119782179307E9F4481759073F |
:100FF00079F4ED018A819B81309719F09383828384 |
:1010000004C09093920380939103CD01029649C04E |
:10101000841B950BFD01E80FF91F41935193029733 |
:101020008D939C933AC0FD01A281B3811097C1F6C4 |
:1010300080918F0390919003892B41F480916B00F4 |
:1010400090916C009093900380938F0320916D009A |
:1010500030916E002115310541F42DB73EB78091D6 |
:10106000690090916A00281B390BE0918F03F09181 |
:1010700090032E1B3F0B2417350788F0CA010296F8 |
:101080002817390760F0CF01840F951F02969093BF |
:10109000900380938F0341935193CF0102C080E06E |
:1010A00090E0DF91CF910895CF93DF93009709F4FB |
:1010B0004EC0EC0122971B821A82A0919103B0913D |
:1010C0009203109711F140E050E001C0DC01AC1731 |
:1010D000BD0700F1BB83AA83FE0121913191E20F8C |
:1010E000F31FEA17FB0771F42E5F3F4F8D919C9120 |
:1010F0001197820F931F99838883FD0182819381C9 |
:101100009B838A834115510559F4D0939203C09370 |
:1011100091031DC0FD0182819381AD010097B1F65D |
:10112000FA01D383C28321913191E20FF31FEC17AF |
:10113000FD0769F42E5F3F4F88819981820F931FCD |
:10114000FA01918380838A819B8193838283DF91DB |
:10115000CF910895DC0101C06D9341505040E0F7FC |
:101160000895991B79E004C0991F961708F0961B03 |
:10117000881F7A95C9F780950895AA1BBB1B51E17A |
:1011800007C0AA1FBB1FA617B70710F0A61BB70BF7 |
:10119000881F991F5A95A9F780959095BC01CD019C |
:1011A0000895A1E21A2EAA1BBB1BFD010DC0AA1FA8 |
:1011B000BB1FEE1FFF1FA217B307E407F50720F0C0 |
:1011C000A21BB30BE40BF50B661F771F881F991F3B |
:1011D0001A9469F760957095809590959B01AC0184 |
:1011E000BD01CF0108952A88398848885F846E84BC |
:1011F0007D848C849B84AA84B984C884DF80EE803B |
:10120000FD800C811B81AA81B981CE0FD11D0FB643 |
:0E121000F894DEBF0FBECDBFED010895FFCFF5 |
:10121E000A000101FF010164642000930300000035 |
:00000001FF |
/branches/v0.31_8kHz_PWM/BrushLess-Ctrl_8kHz_PWM_V0_31_2.hex |
---|
0,0 → 1,292 |
:1000000012C073C52BC02AC0D5C5D9C427C026C00D |
:10001000C5C402C423C005C321C0D2C21FC01EC0B4 |
:1000200036C677C51BC011241FBECFE5D4E0DEBFA6 |
:10003000CDBF10E0A0E6B0E0EEE1F2E102C0059035 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73CD1E0C8D1CF20917F |
:10006000700080916400821710F4AB9A282F809161 |
:100070007200909173008338910560F01BBC1ABC2C |
:1000800019BC18BC13BCAB9A019790937300809372 |
:1000900072000895822F9927880F991F9BBD8ABDF2 |
:1000A00099BD88BD23BD089582E08FBD81E485BDE3 |
:1000B00085B3817F85BB89E08EBD089592B7980F87 |
:1000C00082B7891B87FDFCCF0895809178009091BD |
:1000D0007900892B09F04EC080917A00882371F055 |
:1000E000909186008FEF989FC001112468EC70E01A |
:1000F00044D8709385006093840044C0809191003F |
:10010000882359F120918E0030918F0041E02D32EB |
:10011000340730F4293C310540F42B30310538F4F4 |
:1001200010928500109284002CC028EC30E08CEFF7 |
:1001300090E0AC01249FC001259F900D349F900D4D |
:100140001124885D994064EB70E017D86D5F7F4F94 |
:10015000709385006093840014C080918400909116 |
:100160008500009729F00197909385008093840083 |
:10017000AB9A08C08091880399279093850080935B |
:100180008400AB9880918400909185008F3F910509 |
:1001900039F030F08FEF90E09093850080938400E9 |
:1001A0008091840099270895809172009091730046 |
:1001B00090937803809377038091750099279093AB |
:1001C0007A038093790380918200909183009093C9 |
:1001D0007C0380937B0380918E0090918F0090939D |
:1001E0007E0380937D030895AF92BF92CF92DF92FA |
:1001F000EF92FF920F931F93CF93DF93182F1092DC |
:100200009900439885E090E090937100809370008E |
:1002100026DFDAD488EC90E05FD3C12FDD27D093BE |
:100220007100C09370004CE2A42E41E0B42EC12CAA |
:10023000D12CEE24FF2487010EC080916600882314 |
:1002400011F4C8D101C0B9D284E638DF0894E11CAA |
:10025000F11C011D111DEA14FB040C051D0569F7B5 |
:10026000C601B5012FE030E040E050E09AD7A21A75 |
:10027000B30AC40AD50A0894A108B108C108D10874 |
:1002800089E1A816B104C104D104C0F09DD48091C5 |
:1002900097008F5F809397008091970066E061D709 |
:1002A0009093970034D3D0937100C0937000D7DE41 |
:1002B000449BBFCF82B3805882BBBBCFDF91CF912D |
:1002C0001F910F91FF90EF90DF90CF90BF90AF9074 |
:1002D0000895AF92BF92CF92DF92EF92FF920F9369 |
:1002E0001F93CF93DF9388E084BB85BB8AEB81BBF0 |
:1002F00080E882BB8EE087BB81E388BB78D2CFD217 |
:10030000789486E990E0E8D297988AEF90E0E4D27A |
:10031000C0E0D0E02196C230D10549F4979A86E931 |
:1003200090E0DAD297988AEF90E0D6D2F3CF86E9C0 |
:1003300090E0D2D297988AEF90E0CED2CE0101968B |
:10034000059744F384EF91E0C7D251D2ADDE80E54A |
:10035000DBD317D385E690E0ABD286E690E0A8D257 |
:1003600087E690E0A5D2EC018EEF90E0A1D25C018F |
:100370008DEE93E09DD28C018EEE93E099D26C01CC |
:10038000CE019FD28823E1F3979A109271001092C8 |
:10039000700065DE88E080BF81E087B98AE090E088 |
:1003A00087D2EC0181E090E090937A038093790307 |
:1003B00010928F0010928E00EE2487DE9927909382 |
:1003C000710080937000809197008E1551F010920B |
:1003D00063001092620082E390E06AD2EC01E09048 |
:1003E00097008091700090917100892BC9F4109250 |
:1003F0007F0010926200C80164D28823D9F0109265 |
:100400009900439881E08093630082B3877C82BB2C |
:1004100082E08FBD81E485BD85B3817F85BB0EC041 |
:1004200080916300882319F081E080937F008CED38 |
:1004300095E03ED280916300882321F010927100F4 |
:10044000109270000CDE809162008F5F80936200DA |
:10045000813009F0B2CF809163008111979AC50174 |
:1004600030D2882339F182E390E022D25C0180917E |
:100470007500482F55272091720030917300421764 |
:10048000530710F48F5F04C02417350718F4815008 |
:10049000809375008091750090916400823428F0FB |
:1004A000915090936400AB9A05C09F3F19F09F5FF5 |
:1004B00090936400C80105D2882309F18AE090E096 |
:1004C000F7D18C012091800030918100C901880F03 |
:1004D000991F820F931F880F991F66E070E04DD619 |
:1004E00070938300609382001092810010928000CC |
:1004F00080919100882319F481E080936500C60102 |
:10050000E0D1882321F08CED95E0D2D16C01CE01B1 |
:10051000D8D1882331F08091820090918300892B7B |
:1005200029F080917F00882309F447CF61E0F62EFF |
:10053000F092630010929900439884E690E0B8D15D |
:10054000EC0180917F00882309F437CFAB9810929B |
:100550007F008AE049DE979A1092630080919700AD |
:1005600081508093970081E090E090937100809398 |
:10057000700075DD88B18C7F88B9F092990088B1E0 |
:100580008A6088B984E690E093D1EC01CE0199D1DC |
:100590008823E1F38AE090E09093710080937000EB |
:1005A0005EDD88EC90E084D1EC01CE018AD1882315 |
:1005B000E1F388EE93E07CD1EC0157E0E52EFDCE2F |
:1005C0001F920F920FB60F9211240F900FBE0F9033 |
:1005D0001F9018955E9B24C0809166008823E1F4EB |
:1005E0008091890090918A00019690938A0080936F |
:1005F0008900FC01E556FD4FE081ED3019F08436AD |
:10060000910539F410928A001092890081E080935C |
:100610006600589AECB9089510928A0010928900E9 |
:1006200008951F920F920FB60F9211248F938CB1E1 |
:100630008093870080918700853F19F410926700AE |
:1006400014C0809167008F5F80936700823041F40F |
:10065000809187008093860088EC80937A0005C0A3 |
:10066000853618F084E6809367008F910F900FBE57 |
:100670000F901F901895DC0120E030E040E050E042 |
:10068000EBE9F2E005C08191280F311D4F5F5F4F0C |
:100690004A175B07C1F73F70C90136E09695879509 |
:1006A0003A95E1F7835CFD01E556FD4F8083119695 |
:1006B0002F73235CFD01E556FD4F2083A456BD4FEB |
:1006C0008DE08C931092660080919B028CB9089506 |
:1006D000EF92FF920F931F93CF93DF937A01722FC4 |
:1006E00093E290939B0260939C0280939D0203E0AF |
:1006F00010E060E0AEE9B2E046C0F701E60FF11DA0 |
:1007000090816F5F715019F4E0E040E00FC0F70195 |
:10071000E60FF11D40816F5F715011F4E0E006C0FB |
:10072000F701E60FF11DE0816F5F7150892F86950B |
:100730008695835C8C935527892F992783709070B9 |
:1007400024E0880F991F2A95E1F79A0194E03695E5 |
:1007500027959A95E1F7822B835CED0189834F7091 |
:100760005070440F551F440F551F8E2F829586954C |
:1007700086958370842B835C8A83EF73E35CEB83C1 |
:100780000C5F1F4F1496772309F0B7CFC80173DFB2 |
:10079000DF91CF911F910F91FF90EF9008951F93DC |
:1007A000182F8A3011F48DE0FADF5D9BFECF1CB963 |
:1007B00080E090E01F91089508958091FF0290914C |
:1007C00000037FD0882391F080916600882371F028 |
:1007D00022E245E653E060919A0284E479DF82E305 |
:1007E00090E066D0909300038093FF02089588E123 |
:1007F0008AB9599A579A8CE089B960E070E08FEC19 |
:1008000093E049D388EC90E053D090930003809319 |
:10081000FF028AE28CB908951F920F920FB60F92D1 |
:1008200011248F939F9380E882BF809187038F5F0D |
:100830008093870380918D00815080938D008F3F3E |
:1008400039F583E080938D0080918B0090918C002E |
:10085000019690938C0080938B008091780090910A |
:100860007900009729F001979093790080937800A0 |
:1008700080919100882329F080919100815080938C |
:10088000910080917A00882319F0815080937A003A |
:100890009F918F910F900FBE0F901F90189582E03F |
:1008A00083BF89B7816089BF89B7806489BF089594 |
:1008B00020918B0030918C00280F391FC9010197BE |
:1008C000089520918B0030918C00821B930B892F0F |
:1008D000992780789927089520918B0030918C007A |
:1008E000280F391F2150304080918B0090918C004F |
:1008F000A901481B590BCA01892F992787FFF4CFFB |
:10090000089585EA86B987E087B9369A089527B1B0 |
:1009100096E097B910BE82ED86B9349A97B9369AA7 |
:10092000349BFECF27B944B155B1440F551F440F36 |
:10093000551F493C510510F048EC50E08091720081 |
:10094000909173009C0163E0220F331F6A95E1F7D9 |
:10095000281B390B240F351F83E0369527958A9580 |
:10096000E1F730937300209372008091740099270F |
:100970008217930710F42093740016B888E080BFA4 |
:1009800008958EB5806C8EBD8EB580648EBD89B79E |
:10099000806289BF89B7846089BF08951F920F92D2 |
:1009A0000FB60F9211248F93809190008F5F8093E8 |
:1009B00090008F910F900FBE0F901F9018951F926F |
:1009C0000F920FB60F9211242F933F934F935F9383 |
:1009D0008F939F930EB406FE0FC01092900086B5C1 |
:1009E00097B590939500809394008EB58F7B8EBDC4 |
:1009F00084E6809391006EC08EB580648EBD46B54E |
:100A000057B5809190002091940030919500421B41 |
:100A1000530B9927982F8827990F480F591F5295E4 |
:100A200042954F7045275F70452750939300409340 |
:100A3000920081E04831580758F4109293001092C8 |
:100A4000920080918E0090918F0040E050E013C0A2 |
:100A500048515140509393004093920080918E00F2 |
:100A600090918F008417950730F480918E009091BB |
:100A70008F0001960CC080918E0090918F004817D6 |
:100A8000590748F480918E0090918F0001979093C0 |
:100A90008F0080938E0080918E0090918F009C013A |
:100AA000220F331F220F331F220F331F281B390B36 |
:100AB000240F351F83E0369527958A95E1F730930B |
:100AC00093002093920030938F0020938E0081E05A |
:100AD000809365009F918F915F914F913F912F91EE |
:100AE0000F900FBE0F901F9018951F920F920FB688 |
:100AF0000F9211248F938AB78F7B8ABF8F910F90AB |
:100B00000FBE0F901F9018958C5F82B985EC86BF41 |
:100B100008951F920F920FB60F9211248F939F93F7 |
:100B200081B19927887F907080389105C9F081380C |
:100B3000910534F4009791F18036910591F50AC042 |
:100B4000883B9105B9F0883F910529F1883A9105D4 |
:100B500041F510C086B7806886BF1092960023C00A |
:100B600083B18093880384EF91E090937900809320 |
:100B700078000EC080919600882339F4809175002A |
:100B800083B981E08093960003C08091640083B9AB |
:100B900086B7806807C086B7806986BF86B78069D8 |
:100BA00086BF85EC86BF9F918F910F900FBE0F90EF |
:100BB0001F9018951F920F920FB60F9211240F904D |
:100BC0000FBE0F901F90189590919700923041F1B1 |
:100BD000933030F4992361F0913009F057C014C07C |
:100BE0009430C1F1943040F1953009F04FC042C0CB |
:100BF00082EA8FBD81E685BD88E087BB82B3877DB1 |
:100C000082BB949A82E031C082EA8FBD81E685BDC5 |
:100C100088E087BB82B3877E82BB959A97B918C05C |
:100C200082EA8FBD81E485BD8CE087BB82B3877E7D |
:100C300082BB959A17B81AC082EA8FBD81E485BD40 |
:100C40008CE087BB82B38F7C82BB939A82E087B9AA |
:100C50004098089582EA8FBD81E485BD8AE087BB14 |
:100C600082B38F7C82BB939A81E087B988B183601D |
:100C700088B9089582EA8FBD81E485BD8AE087BB8B |
:100C800082B3877D82BB949A17B8409808951F92CB |
:100C90000F920FB60F9211240F931F932F933F9330 |
:100CA0004F935F936F937F938F939F93AF93BF9374 |
:100CB000EF93FF9388B19927689414F896958795D8 |
:100CC0001694E1F7082F017010919700123009F483 |
:100CD00056C0133030F4112371F0113009F0BCC04C |
:100CE00024C0143009F47EC0143008F461C01530FB |
:100CF00009F0B2C091C082EA8FBD81E685BD88E06F |
:100D000087BB002369F082B3877E82BB959A11E08E |
:100D100014BD809165008111FADD409817B91AC0A1 |
:100D200082B3877D82BB949A97C082B3877E82BB51 |
:100D3000959A0023F1F482EA8FBD81E485BD8CE0B1 |
:100D400087BB14BD809165008111E1DD17B888B1C2 |
:100D5000836088B9809197008F5F8093970080911E |
:100D60008000909181000196909381008093800093 |
:100D700073C082EA8FBD81E685BD88E06CC082EADF |
:100D80008FBD81E485BD8CE087BB002361F082B319 |
:100D90008F7C82BB939A81E084BD80916500811134 |
:100DA000B6DD17B932C082B3877E82BB959A54C034 |
:100DB00082B38F7C82BB939A002371F482EA8FBD49 |
:100DC00081E485BD8AE087BB11E014BD8091650098 |
:100DD00081119DDD17B9BBCF82EA8FBD81E485BD4E |
:100DE0008CE039C082EA8FBD81E485BD8AE087BB93 |
:100DF000002369F082B3877D82BB949A81E084BD31 |
:100E000080916500811183DD17B84098A3CF82B32C |
:100E10008F7C82BB939A20C082B3877D82BB949AD9 |
:100E20000023A1F482EA8FBD81E685BD88E087BBFF |
:100E300081E084BD80916500811169DD82E087B920 |
:100E400088B1836088B91092970089CF82EA8FBDFC |
:100E500081E485BD8AE087BB459903C0002309F082 |
:100E600029CF459B03C0002309F424CF10926500CD |
:100E7000FF91EF91BF91AF919F918F917F916F9172 |
:100E80005F914F913F912F911F910F910F900FBE46 |
:100E90000F901F901895EF92FF920F931F93CF938F |
:100EA000DF938C017B01892B11F4672BC9F16EE074 |
:100EB00070E081E090E03BD0FC01009789F1DC011B |
:100EC00080E88383E114F10471F0F386E28681E81F |
:100ED00083838091890390918A03892B21F4F09375 |
:100EE0008A03E093890301151105E1F0118700875A |
:100EF00083818260838380918B0390918C03892B03 |
:100F000089F4F0938C03E0938B0380918D0390918F |
:100F10008E03892B39F4F0938E03E0938D0302C086 |
:100F2000A0E0B0E0CD01E6E0CDB7DEB768C10F9339 |
:100F30001F93CF93DF93869F8001879F100D969F0D |
:100F4000100D1124C8010DD0EC01009721F0A8016B |
:100F500060E070E0FFD0CE01DF91CF911F910F9143 |
:100F60000895CF93DF93AC01029710F442E050E074 |
:100F7000A0919103B0919203FD01C0E0D0E020E088 |
:100F800030E020C0808191818417950769F48281C7 |
:100F90009381209719F09B838A8304C090939203D6 |
:100FA00080939103CF0132C04817590738F42115B7 |
:100FB000310519F08217930708F49C01EF010280B4 |
:100FC000F381E02D3097F1F62115310589F1C90142 |
:100FD000841B950B049708F4A901E0E0F0E026C01B |
:100FE0008D919C91119782179307E9F4481759073F |
:100FF00079F4ED018A819B81309719F09383828384 |
:1010000004C09093920380939103CD01029649C04E |
:10101000841B950BFD01E80FF91F41935193029733 |
:101020008D939C933AC0FD01A281B3811097C1F6C4 |
:1010300080918F0390919003892B41F480916B00F4 |
:1010400090916C009093900380938F0320916D009A |
:1010500030916E002115310541F42DB73EB78091D6 |
:10106000690090916A00281B390BE0918F03F09181 |
:1010700090032E1B3F0B2417350788F0CA010296F8 |
:101080002817390760F0CF01840F951F02969093BF |
:10109000900380938F0341935193CF0102C080E06E |
:1010A00090E0DF91CF910895CF93DF93009709F4FB |
:1010B0004EC0EC0122971B821A82A0919103B0913D |
:1010C0009203109711F140E050E001C0DC01AC1731 |
:1010D000BD0700F1BB83AA83FE0121913191E20F8C |
:1010E000F31FEA17FB0771F42E5F3F4F8D919C9120 |
:1010F0001197820F931F99838883FD0182819381C9 |
:101100009B838A834115510559F4D0939203C09370 |
:1011100091031DC0FD0182819381AD010097B1F65D |
:10112000FA01D383C28321913191E20FF31FEC17AF |
:10113000FD0769F42E5F3F4F88819981820F931FCD |
:10114000FA01918380838A819B8193838283DF91DB |
:10115000CF910895DC0101C06D9341505040E0F7FC |
:101160000895991B79E004C0991F961708F0961B03 |
:10117000881F7A95C9F780950895AA1BBB1B51E17A |
:1011800007C0AA1FBB1FA617B70710F0A61BB70BF7 |
:10119000881F991F5A95A9F780959095BC01CD019C |
:1011A0000895A1E21A2EAA1BBB1BFD010DC0AA1FA8 |
:1011B000BB1FEE1FFF1FA217B307E407F50720F0C0 |
:1011C000A21BB30BE40BF50B661F771F881F991F3B |
:1011D0001A9469F760957095809590959B01AC0184 |
:1011E000BD01CF0108952A88398848885F846E84BC |
:1011F0007D848C849B84AA84B984C884DF80EE803B |
:10120000FD800C811B81AA81B981CE0FD11D0FB643 |
:0E121000F894DEBF0FBECDBFED010895FFCFF5 |
:10121E000A000101FF010164642000930300000035 |
:00000001FF |
/branches/v0.31_8kHz_PWM/BrushLess-Ctrl_8kHz_PWM_V0_31_3.hex |
---|
0,0 → 1,292 |
:1000000012C073C52BC02AC0D5C5D9C427C026C00D |
:10001000C5C402C423C005C321C0D2C21FC01EC0B4 |
:1000200036C677C51BC011241FBECFE5D4E0DEBFA6 |
:10003000CDBF10E0A0E6B0E0EEE1F2E102C0059035 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73CD1E0C8D1CF20917F |
:10006000700080916400821710F4AB9A282F809161 |
:100070007200909173008338910560F01BBC1ABC2C |
:1000800019BC18BC13BCAB9A019790937300809372 |
:1000900072000895822F9927880F991F9BBD8ABDF2 |
:1000A00099BD88BD23BD089582E08FBD81E485BDE3 |
:1000B00085B3817F85BB89E08EBD089592B7980F87 |
:1000C00082B7891B87FDFCCF0895809178009091BD |
:1000D0007900892B09F04EC080917A00882371F055 |
:1000E000909186008FEF989FC001112468EC70E01A |
:1000F00044D8709385006093840044C0809191003F |
:10010000882359F120918E0030918F0041E02D32EB |
:10011000340730F4293C310540F42B30310538F4F4 |
:1001200010928500109284002CC028EC30E08CEFF7 |
:1001300090E0AC01249FC001259F900D349F900D4D |
:100140001124885D994064EB70E017D86D5F7F4F94 |
:10015000709385006093840014C080918400909116 |
:100160008500009729F00197909385008093840083 |
:10017000AB9A08C08091880399279093850080935B |
:100180008400AB9880918400909185008F3F910509 |
:1001900039F030F08FEF90E09093850080938400E9 |
:1001A0008091840099270895809172009091730046 |
:1001B00090937803809377038091750099279093AB |
:1001C0007A038093790380918200909183009093C9 |
:1001D0007C0380937B0380918E0090918F0090939D |
:1001E0007E0380937D030895AF92BF92CF92DF92FA |
:1001F000EF92FF920F931F93CF93DF93182F1092DC |
:100200009900439885E090E090937100809370008E |
:1002100026DFDAD488EC90E05FD3C12FDD27D093BE |
:100220007100C09370004CE2A42E41E0B42EC12CAA |
:10023000D12CEE24FF2487010EC080916600882314 |
:1002400011F4C8D101C0B9D284E638DF0894E11CAA |
:10025000F11C011D111DEA14FB040C051D0569F7B5 |
:10026000C601B5012FE030E040E050E09AD7A21A75 |
:10027000B30AC40AD50A0894A108B108C108D10874 |
:1002800089E1A816B104C104D104C0F09DD48091C5 |
:1002900097008F5F809397008091970066E061D709 |
:1002A0009093970034D3D0937100C0937000D7DE41 |
:1002B000449BBFCF82B3805882BBBBCFDF91CF912D |
:1002C0001F910F91FF90EF90DF90CF90BF90AF9074 |
:1002D0000895AF92BF92CF92DF92EF92FF920F9369 |
:1002E0001F93CF93DF9388E084BB85BB8AEB81BBF0 |
:1002F00080E882BB8EE087BB81E388BB78D2CFD217 |
:10030000789486E990E0E8D297988AEF90E0E4D27A |
:10031000C0E0D0E02196C330D10549F4979A86E930 |
:1003200090E0DAD297988AEF90E0D6D2F3CF86E9C0 |
:1003300090E0D2D297988AEF90E0CED2CE0101968B |
:10034000059744F384EF91E0C7D251D2ADDE80E54A |
:10035000DBD317D385E690E0ABD286E690E0A8D257 |
:1003600087E690E0A5D2EC018EEF90E0A1D25C018F |
:100370008DEE93E09DD28C018EEE93E099D26C01CC |
:10038000CE019FD28823E1F3979A109271001092C8 |
:10039000700065DE88E080BF81E087B98AE090E088 |
:1003A00087D2EC0181E090E090937A038093790307 |
:1003B00010928F0010928E00EE2487DE9927909382 |
:1003C000710080937000809197008E1551F010920B |
:1003D00063001092620082E390E06AD2EC01E09048 |
:1003E00097008091700090917100892BC9F4109250 |
:1003F0007F0010926200C80164D28823D9F0109265 |
:100400009900439881E08093630082B3877C82BB2C |
:1004100082E08FBD81E485BD85B3817F85BB0EC041 |
:1004200080916300882319F081E080937F008CED38 |
:1004300095E03ED280916300882321F010927100F4 |
:10044000109270000CDE809162008F5F80936200DA |
:10045000813009F0B2CF809163008111979AC50174 |
:1004600030D2882339F182E390E022D25C0180917E |
:100470007500482F55272091720030917300421764 |
:10048000530710F48F5F04C02417350718F4815008 |
:10049000809375008091750090916400823428F0FB |
:1004A000915090936400AB9A05C09F3F19F09F5FF5 |
:1004B00090936400C80105D2882309F18AE090E096 |
:1004C000F7D18C012091800030918100C901880F03 |
:1004D000991F820F931F880F991F66E070E04DD619 |
:1004E00070938300609382001092810010928000CC |
:1004F00080919100882319F481E080936500C60102 |
:10050000E0D1882321F08CED95E0D2D16C01CE01B1 |
:10051000D8D1882331F08091820090918300892B7B |
:1005200029F080917F00882309F447CF61E0F62EFF |
:10053000F092630010929900439884E690E0B8D15D |
:10054000EC0180917F00882309F437CFAB9810929B |
:100550007F008AE049DE979A1092630080919700AD |
:1005600081508093970081E090E090937100809398 |
:10057000700075DD88B18C7F88B9F092990088B1E0 |
:100580008A6088B984E690E093D1EC01CE0199D1DC |
:100590008823E1F38AE090E09093710080937000EB |
:1005A0005EDD88EC90E084D1EC01CE018AD1882315 |
:1005B000E1F388EE93E07CD1EC0157E0E52EFDCE2F |
:1005C0001F920F920FB60F9211240F900FBE0F9033 |
:1005D0001F9018955E9B24C0809166008823E1F4EB |
:1005E0008091890090918A00019690938A0080936F |
:1005F0008900FC01E556FD4FE081ED3019F08436AD |
:10060000910539F410928A001092890081E080935C |
:100610006600589AECB9089510928A0010928900E9 |
:1006200008951F920F920FB60F9211248F938CB1E1 |
:100630008093870080918700853F19F410926700AE |
:1006400014C0809167008F5F80936700833041F40E |
:10065000809187008093860088EC80937A0005C0A3 |
:10066000853618F084E6809367008F910F900FBE57 |
:100670000F901F901895DC0120E030E040E050E042 |
:10068000EBE9F2E005C08191280F311D4F5F5F4F0C |
:100690004A175B07C1F73F70C90136E09695879509 |
:1006A0003A95E1F7835CFD01E556FD4F8083119695 |
:1006B0002F73235CFD01E556FD4F2083A456BD4FEB |
:1006C0008DE08C931092660080919B028CB9089506 |
:1006D000EF92FF920F931F93CF93DF937A01722FC4 |
:1006E00093E290939B0260939C0280939D0203E0AF |
:1006F00010E060E0AEE9B2E046C0F701E60FF11DA0 |
:1007000090816F5F715019F4E0E040E00FC0F70195 |
:10071000E60FF11D40816F5F715011F4E0E006C0FB |
:10072000F701E60FF11DE0816F5F7150892F86950B |
:100730008695835C8C935527892F992783709070B9 |
:1007400024E0880F991F2A95E1F79A0194E03695E5 |
:1007500027959A95E1F7822B835CED0189834F7091 |
:100760005070440F551F440F551F8E2F829586954C |
:1007700086958370842B835C8A83EF73E35CEB83C1 |
:100780000C5F1F4F1496772309F0B7CFC80173DFB2 |
:10079000DF91CF911F910F91FF90EF9008951F93DC |
:1007A000182F8A3011F48DE0FADF5D9BFECF1CB963 |
:1007B00080E090E01F91089508958091FF0290914C |
:1007C00000037FD0882391F080916600882371F028 |
:1007D00022E245E653E060919A0284E479DF82E305 |
:1007E00090E066D0909300038093FF02089588E123 |
:1007F0008AB9599A579A8CE089B960E070E08FEC19 |
:1008000093E049D388EC90E053D090930003809319 |
:10081000FF028AE28CB908951F920F920FB60F92D1 |
:1008200011248F939F9380E882BF809187038F5F0D |
:100830008093870380918D00815080938D008F3F3E |
:1008400039F583E080938D0080918B0090918C002E |
:10085000019690938C0080938B008091780090910A |
:100860007900009729F001979093790080937800A0 |
:1008700080919100882329F080919100815080938C |
:10088000910080917A00882319F0815080937A003A |
:100890009F918F910F900FBE0F901F90189582E03F |
:1008A00083BF89B7816089BF89B7806489BF089594 |
:1008B00020918B0030918C00280F391FC9010197BE |
:1008C000089520918B0030918C00821B930B892F0F |
:1008D000992780789927089520918B0030918C007A |
:1008E000280F391F2150304080918B0090918C004F |
:1008F000A901481B590BCA01892F992787FFF4CFFB |
:10090000089585EA86B987E087B9369A089527B1B0 |
:1009100096E097B910BE82ED86B9349A97B9369AA7 |
:10092000349BFECF27B944B155B1440F551F440F36 |
:10093000551F493C510510F048EC50E08091720081 |
:10094000909173009C0163E0220F331F6A95E1F7D9 |
:10095000281B390B240F351F83E0369527958A9580 |
:10096000E1F730937300209372008091740099270F |
:100970008217930710F42093740016B888E080BFA4 |
:1009800008958EB5806C8EBD8EB580648EBD89B79E |
:10099000806289BF89B7846089BF08951F920F92D2 |
:1009A0000FB60F9211248F93809190008F5F8093E8 |
:1009B00090008F910F900FBE0F901F9018951F926F |
:1009C0000F920FB60F9211242F933F934F935F9383 |
:1009D0008F939F930EB406FE0FC01092900086B5C1 |
:1009E00097B590939500809394008EB58F7B8EBDC4 |
:1009F00084E6809391006EC08EB580648EBD46B54E |
:100A000057B5809190002091940030919500421B41 |
:100A1000530B9927982F8827990F480F591F5295E4 |
:100A200042954F7045275F70452750939300409340 |
:100A3000920081E04831580758F4109293001092C8 |
:100A4000920080918E0090918F0040E050E013C0A2 |
:100A500048515140509393004093920080918E00F2 |
:100A600090918F008417950730F480918E009091BB |
:100A70008F0001960CC080918E0090918F004817D6 |
:100A8000590748F480918E0090918F0001979093C0 |
:100A90008F0080938E0080918E0090918F009C013A |
:100AA000220F331F220F331F220F331F281B390B36 |
:100AB000240F351F83E0369527958A95E1F730930B |
:100AC00093002093920030938F0020938E0081E05A |
:100AD000809365009F918F915F914F913F912F91EE |
:100AE0000F900FBE0F901F9018951F920F920FB688 |
:100AF0000F9211248F938AB78F7B8ABF8F910F90AB |
:100B00000FBE0F901F9018958A5F82B985EC86BF43 |
:100B100008951F920F920FB60F9211248F939F93F7 |
:100B200081B19927887F907080389105C9F081380C |
:100B3000910534F4009791F18036910591F50AC042 |
:100B4000883B9105B9F0883F910529F1883A9105D4 |
:100B500041F510C086B7806886BF1092960023C00A |
:100B600083B18093880384EF91E090937900809320 |
:100B700078000EC080919600882339F4809175002A |
:100B800083B981E08093960003C08091640083B9AB |
:100B900086B7806807C086B7806986BF86B78069D8 |
:100BA00086BF85EC86BF9F918F910F900FBE0F90EF |
:100BB0001F9018951F920F920FB60F9211240F904D |
:100BC0000FBE0F901F90189590919700923041F1B1 |
:100BD000933030F4992361F0913009F057C014C07C |
:100BE0009430C1F1943040F1953009F04FC042C0CB |
:100BF00082EA8FBD81E685BD88E087BB82B3877DB1 |
:100C000082BB949A82E031C082EA8FBD81E685BDC5 |
:100C100088E087BB82B3877E82BB959A97B918C05C |
:100C200082EA8FBD81E485BD8CE087BB82B3877E7D |
:100C300082BB959A17B81AC082EA8FBD81E485BD40 |
:100C40008CE087BB82B38F7C82BB939A82E087B9AA |
:100C50004098089582EA8FBD81E485BD8AE087BB14 |
:100C600082B38F7C82BB939A81E087B988B183601D |
:100C700088B9089582EA8FBD81E485BD8AE087BB8B |
:100C800082B3877D82BB949A17B8409808951F92CB |
:100C90000F920FB60F9211240F931F932F933F9330 |
:100CA0004F935F936F937F938F939F93AF93BF9374 |
:100CB000EF93FF9388B19927689414F896958795D8 |
:100CC0001694E1F7082F017010919700123009F483 |
:100CD00056C0133030F4112371F0113009F0BCC04C |
:100CE00024C0143009F47EC0143008F461C01530FB |
:100CF00009F0B2C091C082EA8FBD81E685BD88E06F |
:100D000087BB002369F082B3877E82BB959A11E08E |
:100D100014BD809165008111FADD409817B91AC0A1 |
:100D200082B3877D82BB949A97C082B3877E82BB51 |
:100D3000959A0023F1F482EA8FBD81E485BD8CE0B1 |
:100D400087BB14BD809165008111E1DD17B888B1C2 |
:100D5000836088B9809197008F5F8093970080911E |
:100D60008000909181000196909381008093800093 |
:100D700073C082EA8FBD81E685BD88E06CC082EADF |
:100D80008FBD81E485BD8CE087BB002361F082B319 |
:100D90008F7C82BB939A81E084BD80916500811134 |
:100DA000B6DD17B932C082B3877E82BB959A54C034 |
:100DB00082B38F7C82BB939A002371F482EA8FBD49 |
:100DC00081E485BD8AE087BB11E014BD8091650098 |
:100DD00081119DDD17B9BBCF82EA8FBD81E485BD4E |
:100DE0008CE039C082EA8FBD81E485BD8AE087BB93 |
:100DF000002369F082B3877D82BB949A81E084BD31 |
:100E000080916500811183DD17B84098A3CF82B32C |
:100E10008F7C82BB939A20C082B3877D82BB949AD9 |
:100E20000023A1F482EA8FBD81E685BD88E087BBFF |
:100E300081E084BD80916500811169DD82E087B920 |
:100E400088B1836088B91092970089CF82EA8FBDFC |
:100E500081E485BD8AE087BB459903C0002309F082 |
:100E600029CF459B03C0002309F424CF10926500CD |
:100E7000FF91EF91BF91AF919F918F917F916F9172 |
:100E80005F914F913F912F911F910F910F900FBE46 |
:100E90000F901F901895EF92FF920F931F93CF938F |
:100EA000DF938C017B01892B11F4672BC9F16EE074 |
:100EB00070E081E090E03BD0FC01009789F1DC011B |
:100EC00080E88383E114F10471F0F386E28681E81F |
:100ED00083838091890390918A03892B21F4F09375 |
:100EE0008A03E093890301151105E1F0118700875A |
:100EF00083818260838380918B0390918C03892B03 |
:100F000089F4F0938C03E0938B0380918D0390918F |
:100F10008E03892B39F4F0938E03E0938D0302C086 |
:100F2000A0E0B0E0CD01E6E0CDB7DEB768C10F9339 |
:100F30001F93CF93DF93869F8001879F100D969F0D |
:100F4000100D1124C8010DD0EC01009721F0A8016B |
:100F500060E070E0FFD0CE01DF91CF911F910F9143 |
:100F60000895CF93DF93AC01029710F442E050E074 |
:100F7000A0919103B0919203FD01C0E0D0E020E088 |
:100F800030E020C0808191818417950769F48281C7 |
:100F90009381209719F09B838A8304C090939203D6 |
:100FA00080939103CF0132C04817590738F42115B7 |
:100FB000310519F08217930708F49C01EF010280B4 |
:100FC000F381E02D3097F1F62115310589F1C90142 |
:100FD000841B950B049708F4A901E0E0F0E026C01B |
:100FE0008D919C91119782179307E9F4481759073F |
:100FF00079F4ED018A819B81309719F09383828384 |
:1010000004C09093920380939103CD01029649C04E |
:10101000841B950BFD01E80FF91F41935193029733 |
:101020008D939C933AC0FD01A281B3811097C1F6C4 |
:1010300080918F0390919003892B41F480916B00F4 |
:1010400090916C009093900380938F0320916D009A |
:1010500030916E002115310541F42DB73EB78091D6 |
:10106000690090916A00281B390BE0918F03F09181 |
:1010700090032E1B3F0B2417350788F0CA010296F8 |
:101080002817390760F0CF01840F951F02969093BF |
:10109000900380938F0341935193CF0102C080E06E |
:1010A00090E0DF91CF910895CF93DF93009709F4FB |
:1010B0004EC0EC0122971B821A82A0919103B0913D |
:1010C0009203109711F140E050E001C0DC01AC1731 |
:1010D000BD0700F1BB83AA83FE0121913191E20F8C |
:1010E000F31FEA17FB0771F42E5F3F4F8D919C9120 |
:1010F0001197820F931F99838883FD0182819381C9 |
:101100009B838A834115510559F4D0939203C09370 |
:1011100091031DC0FD0182819381AD010097B1F65D |
:10112000FA01D383C28321913191E20FF31FEC17AF |
:10113000FD0769F42E5F3F4F88819981820F931FCD |
:10114000FA01918380838A819B8193838283DF91DB |
:10115000CF910895DC0101C06D9341505040E0F7FC |
:101160000895991B79E004C0991F961708F0961B03 |
:10117000881F7A95C9F780950895AA1BBB1B51E17A |
:1011800007C0AA1FBB1FA617B70710F0A61BB70BF7 |
:10119000881F991F5A95A9F780959095BC01CD019C |
:1011A0000895A1E21A2EAA1BBB1BFD010DC0AA1FA8 |
:1011B000BB1FEE1FFF1FA217B307E407F50720F0C0 |
:1011C000A21BB30BE40BF50B661F771F881F991F3B |
:1011D0001A9469F760957095809590959B01AC0184 |
:1011E000BD01CF0108952A88398848885F846E84BC |
:1011F0007D848C849B84AA84B984C884DF80EE803B |
:10120000FD800C811B81AA81B981CE0FD11D0FB643 |
:0E121000F894DEBF0FBECDBFED010895FFCFF5 |
:10121E000A000101FF010164642000930300000035 |
:00000001FF |
/branches/v0.31_8kHz_PWM/BrushLess-Ctrl_8kHz_PWM_V0_31_4.hex |
---|
0,0 → 1,292 |
:1000000012C072C52BC02AC0D4C5D8C427C026C010 |
:10001000C4C401C423C004C321C0D1C21FC01EC0B8 |
:1000200035C676C51BC011241FBECFE5D4E0DEBFA8 |
:10003000CDBF10E0A0E6B0E0ECE1F2E102C0059037 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73CD1DFC8D1CF209180 |
:10006000700080916400821710F4AB9A282F809161 |
:100070007200909173008338910560F01BBC1ABC2C |
:1000800019BC18BC13BCAB9A019790937300809372 |
:1000900072000895822F9927880F991F9BBD8ABDF2 |
:1000A00099BD88BD23BD089582E08FBD81E485BDE3 |
:1000B00085B3817F85BB89E08EBD089592B7980F87 |
:1000C00082B7891B87FDFCCF0895809178009091BD |
:1000D0007900892B09F04EC080917A00882371F055 |
:1000E000909186008FEF989FC001112468EC70E01A |
:1000F00043D8709385006093840044C08091910040 |
:10010000882359F120918E0030918F0041E02D32EB |
:10011000340730F4293C310540F42B30310538F4F4 |
:1001200010928500109284002CC028EC30E08CEFF7 |
:1001300090E0AC01249FC001259F900D349F900D4D |
:100140001124885D994064EB70E016D86D5F7F4F95 |
:10015000709385006093840014C080918400909116 |
:100160008500009729F00197909385008093840083 |
:10017000AB9A08C08091880399279093850080935B |
:100180008400AB9880918400909185008F3F910509 |
:1001900039F030F08FEF90E09093850080938400E9 |
:1001A0008091840099270895809172009091730046 |
:1001B00090937803809377038091750099279093AB |
:1001C0007A038093790380918200909183009093C9 |
:1001D0007C0380937B0380918E0090918F0090939D |
:1001E0007E0380937D030895AF92BF92CF92DF92FA |
:1001F000EF92FF920F931F93CF93DF93182F1092DC |
:100200009900439885E090E090937100809370008E |
:1002100026DFD9D488EC90E05ED3C12FDD27D093C0 |
:100220007100C09370004CE2A42E41E0B42EC12CAA |
:10023000D12CEE24FF2487010EC080916600882314 |
:1002400011F4C7D101C0B8D284E638DF0894E11CAC |
:10025000F11C011D111DEA14FB040C051D0569F7B5 |
:10026000C601B5012FE030E040E050E099D7A21A76 |
:10027000B30AC40AD50A0894A108B108C108D10874 |
:1002800089E1A816B104C104D104C0F09CD48091C6 |
:1002900097008F5F809397008091970066E060D70A |
:1002A0009093970033D3D0937100C0937000D7DE42 |
:1002B000449BBFCF82B3805882BBBBCFDF91CF912D |
:1002C0001F910F91FF90EF90DF90CF90BF90AF9074 |
:1002D0000895AF92BF92CF92DF92EF92FF920F9369 |
:1002E0001F93CF93DF9388E084BB85BB8AEB81BBF0 |
:1002F00080E882BB8EE087BB81E388BB77D2CED219 |
:10030000789486E990E0E7D297988AEF90E0E3D27C |
:10031000C1E0D0E0C430D10549F4979A86E990E075 |
:10032000DAD297988AEF90E0D6D20BC086E990E0B7 |
:10033000D2D297988AEF90E0CED22196C530D105DF |
:1003400049F784EF91E0C7D251D2AEDE80E5DBD32E |
:1003500017D385E690E0ABD286E690E0A8D287E698 |
:1003600090E0A5D2EC018EEF90E0A1D25C018DEE81 |
:1003700093E09DD28C018EEE93E099D26C01CE0178 |
:100380009FD28823E1F3979A109271001092700027 |
:1003900066DE88E080BF81E087B98AE090E087D29E |
:1003A000EC0181E090E090937A03809379031092BE |
:1003B0008F0010928E00EE2488DE992790937100B2 |
:1003C00080937000809197008E1551F01092630019 |
:1003D0001092620082E390E06AD2EC01E090970014 |
:1003E0008091700090917100892BC9F410927F0068 |
:1003F00010926200C80164D28823D9F0109299004B |
:10040000439881E08093630082B3877C82BB82E063 |
:100410008FBD81E485BD85B3817F85BB0EC0809192 |
:100420006300882319F081E080937F008CED95E0D4 |
:100430003ED280916300882321F0109271001092C7 |
:1004400070000DDE809162008F5F809362008130CA |
:1004500009F0B2CF809163008111979AC50130D223 |
:10046000882339F182E390E022D25C01809175000B |
:10047000482F55272091720030917300421753077F |
:1004800010F48F5F04C02417350718F4815080934F |
:1004900075008091750090916400823428F091502D |
:1004A00090936400AB9A05C09F3F19F09F5F9093B3 |
:1004B0006400C80105D2882309F18AE090E0F7D1F1 |
:1004C0008C012091800030918100C901880F991F13 |
:1004D000820F931F880F991F66E070E04DD67093CE |
:1004E00083006093820010928100109280008091BE |
:1004F0009100882319F481E080936500C601E0D162 |
:10050000882321F08CED95E0D2D16C01CE01D8D1B9 |
:10051000882331F08091820090918300892B29F00B |
:1005200080917F00882309F447CF61E0F62EF09296 |
:10053000630010929900439884E690E0B8D1EC01F2 |
:1005400080917F00882309F437CFAB9810927F0009 |
:100550008AE04ADE979A109263008091970081505A |
:100560008093970081E090E09093710080937000F9 |
:1005700076DD88B18C7F88B9F092990088B18A6065 |
:1005800088B984E690E093D1EC01CE0199D188231B |
:10059000E1F38AE090E090937100809370005FDD5A |
:1005A00088EC90E084D1EC01CE018AD18823E1F37C |
:1005B00088EE93E07CD1EC0157E0E52EFDCE1F9252 |
:1005C0000F920FB60F9211240F900FBE0F901F9035 |
:1005D00018955E9B24C0809166008823E1F4809189 |
:1005E000890090918A00019690938A0080938900F7 |
:1005F000FC01E556FD4FE081ED3019F084369105A0 |
:1006000039F410928A001092890081E0809366008C |
:10061000589AECB9089510928A00109289000895B2 |
:100620001F920F920FB60F9211248F938CB180936B |
:10063000870080918700853F19F41092670014C0ED |
:10064000809167008F5F80936700843041F48091D0 |
:1006500087008093860088EC80937A0005C08536F9 |
:1006600018F084E6809367008F910F900FBE0F9073 |
:100670001F901895DC0120E030E040E050E0EBE90D |
:10068000F2E005C08191280F311D4F5F5F4F4A177F |
:100690005B07C1F73F70C90136E0969587953A959B |
:1006A000E1F7835CFD01E556FD4F808311962F73C2 |
:1006B000235CFD01E556FD4F2083A456BD4F8DE020 |
:1006C0008C931092660080919B028CB90895EF92F2 |
:1006D000FF920F931F93CF93DF937A01722F93E2D0 |
:1006E00090939B0260939C0280939D0203E010E034 |
:1006F00060E0AEE9B2E046C0F701E60FF11D90817F |
:100700006F5F715019F4E0E040E00FC0F701E60FB1 |
:10071000F11D40816F5F715011F4E0E006C0F701F8 |
:10072000E60FF11DE0816F5F7150892F86958695E8 |
:10073000835C8C935527892F99278370907024E0D0 |
:10074000880F991F2A95E1F79A0194E0369527952D |
:100750009A95E1F7822B835CED0189834F7050708D |
:10076000440F551F440F551F8E2F829586958695F1 |
:100770008370842B835C8A83EF73E35CEB830C5F71 |
:100780001F4F1496772309F0B7CFC80173DFDF91AD |
:10079000CF911F910F91FF90EF9008951F93182F05 |
:1007A0008A3011F48DE0FADF5D9BFECF1CB980E04A |
:1007B00090E01F91089508958091FF0290910003A9 |
:1007C0007FD0882391F080916600882371F022E227 |
:1007D00045E653E060919A0284E479DF82E390E099 |
:1007E00066D0909300038093FF02089588E18AB950 |
:1007F000599A579A8CE089B960E070E08EEC93E0EA |
:1008000049D388EC90E053D0909300038093FF028B |
:100810008AE28CB908951F920F920FB60F9211249D |
:100820008F939F9380E882BF809187038F5F80932F |
:10083000870380918D00815080938D008F3F39F523 |
:1008400083E080938D0080918B0090918C000196C5 |
:1008500090938C0080938B00809178009091790028 |
:10086000009729F001979093790080937800809108 |
:100870009100882329F0809191008150809391000C |
:1008800080917A00882319F0815080937A009F919B |
:100890008F910F900FBE0F901F90189582E083BF2D |
:1008A00089B7816089BF89B7806489BF0895209125 |
:1008B0008B0030918C00280F391FC90101970895D2 |
:1008C00020918B0030918C00821B930B892F9927EC |
:1008D00080789927089520918B0030918C00280F03 |
:1008E000391F2150304080918B0090918C00A901DC |
:1008F000481B590BCA01892F992787FFF4CF089508 |
:1009000085EA86B987E087B9369A089527B196E0D7 |
:1009100097B910BE82ED86B9349A97B9369A349B4E |
:10092000FECF27B944B155B1440F551F440F551F91 |
:10093000493C510510F048EC50E0809172009091D4 |
:1009400073009C0163E0220F331F6A95E1F7281BB7 |
:10095000390B240F351F83E0369527958A95E1F7EB |
:10096000309373002093720080917400992782174E |
:10097000930710F42093740016B888E080BF0895A0 |
:100980008EB5806C8EBD8EB580648EBD89B7806259 |
:1009900089BF89B7846089BF08951F920F920FB6EF |
:1009A0000F9211248F93809190008F5F809390001D |
:1009B0008F910F900FBE0F901F9018951F920F925E |
:1009C0000FB60F9211242F933F934F935F938F9302 |
:1009D0009F930EB406FE0FC01092900086B597B597 |
:1009E00090939500809394008EB58F7B8EBD84E6A6 |
:1009F000809391006EC08EB580648EBD46B557B5AC |
:100A0000809190002091940030919500421B530BEF |
:100A10009927982F8827990F480F591F529542956B |
:100A20004F7045275F704527509393004093920085 |
:100A300081E04831580758F41092930010929200C8 |
:100A400080918E0090918F0040E050E013C048519B |
:100A50005140509393004093920080918E0090916A |
:100A60008F008417950730F480918E0090918F004D |
:100A700001960CC080918E0090918F004817590705 |
:100A800048F480918E0090918F00019790938F0091 |
:100A900080938E0080918E0090918F009C01220F98 |
:100AA000331F220F331F220F331F281B390B240F34 |
:100AB000351F83E0369527958A95E1F730939300AB |
:100AC0002093920030938F0020938E0081E08093DA |
:100AD00065009F918F915F914F913F912F910F9062 |
:100AE0000FBE0F901F9018951F920F920FB60F9286 |
:100AF00011248F938AB78F7B8ABF8F910F900FBE7F |
:100B00000F901F901895885F82B985EC86BF089575 |
:100B10001F920F920FB60F9211248F939F9381B162 |
:100B20009927887F907080389105C9F081389105A8 |
:100B300034F4009791F18036910591F50AC0883B15 |
:100B40009105B9F0883F910529F1883A910541F561 |
:100B500010C086B7806886BF1092960023C083B10C |
:100B60008093880384EF91E09093790080937800DC |
:100B70000EC080919600882339F48091750083B966 |
:100B800081E08093960003C08091640083B986B7AA |
:100B9000806807C086B7806986BF86B7806986BFD0 |
:100BA00085EC86BF9F918F910F900FBE0F901F9085 |
:100BB00018951F920F920FB60F9211240F900FBE2F |
:100BC0000F901F90189590919700923041F19330BB |
:100BD00030F4992361F0913009F057C014C094307B |
:100BE000C1F1943040F1953009F04FC042C082EA23 |
:100BF0008FBD81E685BD88E087BB82B3877D82BBE0 |
:100C0000949A82E031C082EA8FBD81E685BD88E09A |
:100C100087BB82B3877E82BB959A97B918C082EA58 |
:100C20008FBD81E485BD8CE087BB82B3877E82BBAC |
:100C3000959A17B81AC082EA8FBD81E485BD8CE011 |
:100C400087BB82B38F7C82BB939A82E087B940983E |
:100C5000089582EA8FBD81E485BD8AE087BB82B3B7 |
:100C60008F7C82BB939A81E087B988B1836088B911 |
:100C7000089582EA8FBD81E485BD8AE087BB82B397 |
:100C8000877D82BB949A17B8409808951F920F925F |
:100C90000FB60F9211240F931F932F933F934F93EF |
:100CA0005F936F937F938F939F93AF93BF93EF93D4 |
:100CB000FF9388B19927689414F8969587951694B0 |
:100CC000E1F7082F017010919700123009F456C017 |
:100CD000133030F4112371F0113009F0BCC024C07E |
:100CE000143009F47EC0143008F461C0153009F0E6 |
:100CF000B2C091C082EA8FBD81E685BD88E087BB26 |
:100D0000002369F082B3877E82BB959A11E014BDFF |
:100D1000809165008111FADD409817B91AC082B33D |
:100D2000877D82BB949A97C082B3877E82BB959A57 |
:100D30000023F1F482EA8FBD81E485BD8CE087BB9E |
:100D400014BD809165008111E1DD17B888B1836021 |
:100D500088B9809197008F5F809397008091800081 |
:100D6000909181000196909381008093800073C0E0 |
:100D700082EA8FBD81E685BD88E06CC082EA8FBDC6 |
:100D800081E485BD8CE087BB002361F082B38F7C5A |
:100D900082BB939A81E084BD809165008111B6DDAC |
:100DA00017B932C082B3877E82BB959A54C082B392 |
:100DB0008F7C82BB939A002371F482EA8FBD81E419 |
:100DC00085BD8AE087BB11E014BD8091650081116B |
:100DD0009DDD17B9BBCF82EA8FBD81E485BD8CE074 |
:100DE00039C082EA8FBD81E485BD8AE087BB0023DC |
:100DF00069F082B3877D82BB949A81E084BD809143 |
:100E00006500811183DD17B84098A3CF82B38F7C32 |
:100E100082BB939A20C082B3877D82BB949A0023C1 |
:100E2000A1F482EA8FBD81E685BD88E087BB81E0C1 |
:100E300084BD80916500811169DD82E087B988B148 |
:100E4000836088B91092970089CF82EA8FBD81E4D0 |
:100E500085BD8AE087BB459903C0002309F029CFEF |
:100E6000459B03C0002309F424CF10926500FF9135 |
:100E7000EF91BF91AF919F918F917F916F915F9112 |
:100E80004F913F912F911F910F910F900FBE0F9097 |
:100E90001F901895EF92FF920F931F93CF93DF93BC |
:100EA0008C017B01892B11F4672BC9F16EE070E096 |
:100EB00081E090E03BD0FC01009789F1DC0180E803 |
:100EC0008383E114F10471F0F386E28681E8838381 |
:100ED0008091890390918A03892B21F4F0938A03EE |
:100EE000E093890301151105E1F0118700878381E3 |
:100EF0008260838380918B0390918C03892B89F48A |
:100F0000F0938C03E0938B0380918D0390918E037B |
:100F1000892B39F4F0938E03E0938D0302C0A0E097 |
:100F2000B0E0CD01E6E0CDB7DEB768C10F931F9307 |
:100F3000CF93DF93869F8001879F100D969F100DA2 |
:100F40001124C8010DD0EC01009721F0A80160E048 |
:100F500070E0FFD0CE01DF91CF911F910F910895E6 |
:100F6000CF93DF93AC01029710F442E050E0A091E0 |
:100F70009103B0919203FD01C0E0D0E020E030E0A9 |
:100F800020C0808191818417950769F482819381C3 |
:100F9000209719F09B838A8304C0909392038093D7 |
:100FA0009103CF0132C04817590738F42115310594 |
:100FB00019F08217930708F49C01EF010280F38176 |
:100FC000E02D3097F1F62115310589F1C901841B17 |
:100FD000950B049708F4A901E0E0F0E026C08D919C |
:100FE0009C91119782179307E9F44817590779F4F0 |
:100FF000ED018A819B81309719F09383828304C02D |
:101000009093920380939103CD01029649C0841B73 |
:10101000950BFD01E80FF91F4193519302978D93B2 |
:101020009C933AC0FD01A281B3811097C1F68091D3 |
:101030008F0390919003892B41F480916B009091E4 |
:101040006C009093900380938F0320916D003091FA |
:101050006E002115310541F42DB73EB7809169002E |
:1010600090916A00281B390BE0918F03F091900357 |
:101070002E1B3F0B2417350788F0CA01029628174C |
:10108000390760F0CF01840F951F0296909390036B |
:1010900080938F0341935193CF0102C080E090E091 |
:1010A000DF91CF910895CF93DF93009709F44EC05D |
:1010B000EC0122971B821A82A0919103B0919203B6 |
:1010C000109711F140E050E001C0DC01AC17BD0702 |
:1010D00000F1BB83AA83FE0121913191E20FF31F3E |
:1010E000EA17FB0771F42E5F3F4F8D919C9111978A |
:1010F000820F931F99838883FD01828193819B8353 |
:101100008A834115510559F4D0939203C0939103FA |
:101110001DC0FD0182819381AD010097B1F6FA01F6 |
:10112000D383C28321913191E20FF31FEC17FD07A6 |
:1011300069F42E5F3F4F88819981820F931FFA01D6 |
:10114000918380838A819B8193838283DF91CF9176 |
:101150000895DC0101C06D9341505040E0F70895BF |
:10116000991B79E004C0991F961708F0961B881FF9 |
:101170007A95C9F780950895AA1BBB1B51E107C05A |
:10118000AA1FBB1FA617B70710F0A61BB70B881F17 |
:10119000991F5A95A9F780959095BC01CD010895A6 |
:1011A000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F6B |
:1011B000EE1FFF1FA217B307E407F50720F0A21BDD |
:1011C000B30BE40BF50B661F771F881F991F1A944A |
:1011D00069F760957095809590959B01AC01BD0174 |
:1011E000CF0108952A88398848885F846E847D8479 |
:1011F0008C849B84AA84B984C884DF80EE80FD80BF |
:101200000C811B81AA81B981CE0FD11D0FB6F89434 |
:0C121000DEBF0FBECDBFED010895FFCF83 |
:10121C000A000101FF010164642000930300000037 |
:00000001FF |
/branches/v0.31_8kHz_PWM/PPM_Decode.c |
---|
0,0 → 1,76 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned int PPM_Signal = 0; |
volatile unsigned char Timer1Overflow = 0; |
volatile unsigned char PPM_Timeout = 0; // Ungültig, wenn Null |
//############################################################################ |
// |
void InitPPM(void) |
//############################################################################ |
{ |
TCCR1B |= (1<<ICES1)|(1<<ICNC1); |
ICP_POS_FLANKE; |
ICP_INT_ENABLE; |
TIMER1_INT_ENABLE; |
} |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW1) |
//############################################################################ |
{ |
Timer1Overflow++; |
} |
//############################################################################ |
// |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int tim_alt; |
static unsigned int ppm; |
if(TCCR1B & (1<<ICES1)) // Positive Flanke |
{ |
Timer1Overflow = 0; |
tim_alt = ICR1; |
ICP_NEG_FLANKE; |
PPM_Timeout = 100; |
} |
else // Negative Flanke |
{ |
ICP_POS_FLANKE; |
#ifdef _32KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 16; |
#endif |
#ifdef _16KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 16; |
#endif |
if(ppm < 280) ppm = 280; |
ppm -= 280; |
if(PPM_Signal < ppm) PPM_Signal++; |
else if(PPM_Signal > ppm) PPM_Signal--; |
if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern |
PPM_Signal = ppm; |
ZeitZumAdWandeln = 1; |
} |
} |
//############################################################################ |
// |
SIGNAL(SIG_INTERRUPT0) |
//############################################################################ |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
} |
/branches/v0.31_8kHz_PWM/PPM_Decode.h |
---|
0,0 → 1,27 |
/*############################################################################ |
############################################################################*/ |
extern volatile unsigned int PPM_Signal; |
extern volatile unsigned char PPM_Timeout; |
void InitPPM(void); |
#define INT0_ENABLE GIMSK |= 0x40 |
#define INT0_DISABLE GIMSK &= ~0x40 |
#define TIM0_START TIMSK |= 0x01 |
#define TIM0_STOPP TIMSK &= ~0x01 |
#define ICP_INT_ENABLE TIMSK |= 0x20 |
#define ICP_INT_DISABLE TIMSK &= ~0x20 |
#define TIMER1_INT_ENABLE TIMSK |= 0x04 |
#define TIMER1_INT_DISABLE TIMSK &= ~0x04 |
#define TIMER2_INT_ENABLE TIMSK |= 0x40 |
#define TIMER2_INT_DISABLE TIMSK &= ~0x40 |
#define INT0_POS_FLANKE MCUCR |= 0x01 |
#define INT0_ANY_FLANKE MCUCR |= 0x01 |
#define INT0_NEG_FLANKE MCUCR &= ~0x01 |
#define CLR_INT0_FLAG GIFR &= ~0x40 |
#define INIT_INT0_FLANKE MCUCR &= ~0x03; MCUCR |= 0x02; |
#define TIMER0_PRESCALER TCCR0 |
#define ICP_POS_FLANKE TCCR1B |= (1<<ICES1) |
#define ICP_NEG_FLANKE TCCR1B &= ~(1<<ICES1) |
/branches/v0.31_8kHz_PWM/README.TXT |
---|
0,0 → 1,10 |
Nicht vergessen: |
ATmega8 auf 4 MHz stellen: |
Fusebits: |
CKSEL3: on |
CKSEL2: on |
CKSEL1: off |
CKSEL0: off |
/branches/v0.31_8kHz_PWM/analog.c |
---|
0,0 → 1,39 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
//############################################################################ |
//Init ADC |
void ADC_Init(void) |
//############################################################################ |
{ |
ADCSRA = 0xA5; // Free Run, 125 kHZ |
ADMUX = 7; // Kanal 7 |
ADCSRA |= 0x40; // Start |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void AdConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = 0x06; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD2; // Converter ein, single, 1 MHz |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = 0x06; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
i = ADCW * 4; |
if(i > 200) i = 200; |
Strom = (i + Strom * 7) / 8; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
/branches/v0.31_8kHz_PWM/analog.h |
---|
0,0 → 1,5 |
extern void ADC_Init(void); |
extern void GetAnalogWerte(void); |
extern void AdConvert(void); |
/branches/v0.31_8kHz_PWM/avr.pjt |
---|
0,0 → 1,199 |
;Codewright Project File (do not remove or modify this line) |
[ProjInit] |
ConfigSetExtMode=2 |
ProjSetConfigFlags=0x04110940 |
[State] |
SysSetCwd='C:\WinAVR\Projects\Flug\Flight-Ctrl_V0_22' |
SrchSetFlags=0x0005600a |
SrchSetAgainFlags=0x04056004,0 |
SrchSetAgainFlags=0x02056008,1 |
SrchSetAttrElements= |
SrchSetAgainAttrElements= |
FileSortMode=0x0 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\PPM_Decode.c',81,81,1058,605,-1,-1,29,16,2,1,12,'',0x00100008,0,80,0,0,'',0,12 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\main.c',135,135,1058,605,-1,-1,276,8,254,1,3,'',0x00100008,0,80,0,0,'',0,3 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\BLMC.c',0,0,1165,490,-1,-1,1,1,1,1,5,'',0x00100008,0,80,0,0,'',0,5 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\BLMC.h',27,27,1165,490,-1,-1,46,1,26,1,9,'',0x00100008,0,80,0,0,'',0,9 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\timer0.c',135,135,1058,605,-1,-1,30,31,1,1,7,'',0x00100008,0,80,0,0,'',0,7 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\twislave.c',162,162,1058,605,-1,-1,117,1,104,1,8,'',0x00100008,0,80,0,0,'',0,8 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\uart.h',189,189,1058,605,-1,-1,30,5,1,1,2,'',0x00100008,0,80,0,0,'',0,2 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\analog.h',216,216,1058,605,-1,-1,2,1,1,1,14,'',0x00100008,0,80,0,0,'',0,14 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\main.h',243,243,1058,605,-1,-1,30,30,1,1,1,'',0x00100018,0,80,0,0,'',0,1 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\old_macros.h',270,270,1058,605,-1,-1,1,1,1,1,15,'',0x00100008,0,80,0,0,'',0,15 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\PPM_Decode.h',0,0,1058,605,-1,-1,13,9,1,1,10,'',0x00100008,0,80,0,0,'',0,10 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\timer0.h',54,54,1058,605,-1,-1,10,4,1,1,11,'',0x00100008,0,80,0,0,'',0,11 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\twislave.h',81,81,1058,605,-1,-1,1,1,1,1,16,'',0x00100008,0,80,0,0,'',0,16 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\makefile',108,108,1058,605,-1,-1,6,1,1,1,6,'',0x00100008,0,80,0,0,'',0,6 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\uart.c',0,0,1058,605,-1,-1,161,1,139,1,4,'',0x00100008,0,80,0,0,'',0,4 |
_StateView='C:\WinAVR\Projects\Flug\BL_MC_0_27\analog.c',27,27,1058,605,-1,-1,30,48,1,1,13,'',0x00100008,0,80,0,0,'',0,13 |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\PPM_Decode.c',0x0400048e,29,16,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\main.c',0x0400048e,276,8,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\BLMC.c',0x0000048e,1,1,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\BLMC.h',0x0400048e,46,1,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\timer0.c',0x0400048e,30,31,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\twislave.c',0x0400048e,117,1,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\uart.h',0x0400048e,30,5,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\analog.h',0x0400048e,2,1,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\main.h',0x0c00048e,30,30,25,'5 9','',0x0,'',1,72,1,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\old_macros.h',0x0000048e,1,1,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\PPM_Decode.h',0x0400048e,13,9,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\timer0.h',0x0c00048e,10,4,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\twislave.h',0x0000048e,1,1,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\makefile',0x0400048e,6,1,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\uart.c',0x0400048e,161,1,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateBuffer='C:\WinAVR\Projects\Flug\BL_MC_0_27\analog.c',0x0c00048e,30,48,25,'5 9','',0x0,'',1,72,0,0,'' |
_StateHistory=FILELIST,'C:\WinAVR\Projects\Flug\BL_MC_0_27\old_macros.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\PPM_Decode.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\printf_P.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\timer0.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\twislave.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\makefile','C:\WinAVR\Projects\Flug\BL_MC_0_27\main.c','C:\WinAVR\Projects\Flug\BL_MC_0_27\BLMC.c','C:\WinAVR\Projects\Flug\BL_MC_0_27\BLMC.h' |
_StateHistory=SEARCH,'ClrSENSE()','GRUEN','MANUELL_PWM','ENABLE_SENSE_INT','ACSR','GRUE','MotorGestoppt','MotorAnwerfen','SIO_DEBUG','X3D_SIO' |
_StateHistory=REPLACE,'DebugDisplayZeilenAnforderung','SollPeriodendauer','TestschubTimer','SENSE_h','SENSE_L','SENSE_H','SENSE__FALLING_INT','SENSE_RISING_INT','SENSE_FALLING_INT' |
_StateHistory=EDITFILE,'C:\WinAVR\Projects\Flug\BL_MC_0_27\PPM_Decode.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\printf_P.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\timer0.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\twislave.h','C:\WinAVR\Projects\Flug\BL_MC_0_27\main.c','C:\WinAVR\Projects\Flug\BL_MC_0_27\makefile','C:\WinAVR\Projects\Flug\Flight-Ctrl_V0_05\AVR.pjt','C:\WinAVR\Projects\Flug\Flight-Ctrl_V0_06\Main.psp','C:\compiler\M16C\UniversalGateway\UN_DP_V1_25\m16C.psp','C:\WinAVR\Projects\Flug\Flight-Ctrl_V0_22\Main.psp' |
_StateHistory=DOCUMENTVISIT,'14 18 C:\WinAVR\Projects\Flug\BL_MC_0_27\main.h','276 8 C:\WinAVR\Projects\Flug\BL_MC_0_27\main.c','15 16 C:\WinAVR\Projects\Flug\BL_MC_0_27\main.h','161 1 C:\WinAVR\Projects\Flug\BL_MC_0_27\uart.c','33 5 C:\WinAVR\Projects\Flug\BL_MC_0_27\uart.h','30 30 C:\WinAVR\Projects\Flug\BL_MC_0_27\main.h','33 5 C:\WinAVR\Projects\Flug\BL_MC_0_27\uart.h','30 30 C:\WinAVR\Projects\Flug\BL_MC_0_27\main.h','276 8 C:\WinAVR\Projects\Flug\BL_MC_0_27\main.c','33 5 C:\WinAVR\Projects\Flug\BL_MC_0_27\uart.h' |
_StateDocumentVisit=10 |
[Editor] |
_RestoreSysFlags=0x43097fca, 0xfffffffc, 0 |
FilterProjDeleteList |
FilterProjAdd='Source Files','*.c;*.cc;*.cpp;*.cxx;*.ic;*.c96;*.fle;*.cmp;*.asm;*.src;*.s;*.a96;*.i;*.pcp',-1 |
FilterProjAdd='Header Files','*.h;*.inc;*.sfr',-1 |
FilterProjAdd='Project Files','*.pjt',-1 |
FilterProjAdd='Resources','*.rc;*.bmp;*.ico;*.cur;*.dlg',-1 |
FilterProjAdd='Other Files','*.*',-1 |
VCSProject='' |
VCSProjectPath='' |
VCSProjectLocalPath='' |
ScrapSetCount=1 |
ClipboardSetCount=1 |
ClipboardEnableSepStr=1 |
ClipboardSetSepStr='\r\n',0 |
ClipboardEnableTermStr=1 |
ClipboardSetTermStr='\r\n',0 |
[Tools] |
ToolDeleteList |
ToolAddCmd='$_custom_tool_$_1','API Database Editor',1342177312,'cwtedit.exe' |
ToolAddCmd='$_custom_tool_$_2','Paint',1342177713,'make.exe program' |
ToolAddCmd='$_custom_tool_$_3','Build all',1342177680,'make.exe all' |
ToolAddCmd='$_custom_tool_$_4','Bulid Clean',1342177680,'make.exe clean' |
[Compiler] |
CompilerAssign='TASKING src','.src' |
CompilerNewExt=.htm |
CompilerNewExt=.v |
CompilerNewExt=.awk |
CompilerNewExt=.bas |
CompilerAssign='TASKING c','.c' |
CompilerNewExt=.adb |
CompilerNewExt=.cfml |
CompilerNewExt=.jsp |
CompilerNewExt=.pl |
CompilerNewExt=.vhd |
CompilerNewExt=.pas |
CompilerNewExt=.tk |
CompilerNewExt=.asp |
CompilerNewExt=.rul |
CompilerNewExt=.cob |
CompilerNewExt=.js |
CompilerNewExt=.php |
CompilerNewExt=.rc |
CompilerNewExt=.tcl |
CompilerAssign='TASKING cc','.cc' |
CompilerAssign='TASKING fle','.fle' |
CompilerNewExt=.ini |
CompilerAssign='TASKING ic','.ic' |
CompilerNewExt=.cs |
CompilerNewExt=.bat |
CompilerNewExt=.html |
CompilerAssign='TASKING cpp','.cpp' |
CompilerAssign='TASKING cxx','.cxx' |
CompilerAssign='TASKING asm','.asm' |
CompilerNewExt=.txt |
CompilerNewExt=.nrx |
CompilerNewExt=.java |
CompilerNewExt=.sqlj |
CompilerNewExt=.xml |
TagSetCmd='"${HOME}${WTAGS}" -oc -d -t"${TAGFILE}.tag" -p"${TAGFILE}.ptg"',0x8000060 |
BrowseSetFile='C:\Cw32_M16\tagfile.ptg' |
TagSetFile='C:\Cw32_M16\tagfile.tag' |
[VersionControl:PVCS] |
VCSSetCmd=VCS_CHECKIN_ID,'put -n -T@"%Q" -M@"%Q" "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKINLOCK_ID,'put -n -T@"%Q" -M@"%Q" -l "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKOUT_ID,'get -y "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKOUTLOCK_ID,'get -y -l "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKLOCK_ID,'vcs -y -l "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKUNLOCK_ID,'vcs -y -u "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKLABEL_ID,'vcs -y -v"${VCSLABEL}" "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKLOG_ID,'vlog "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKPROP_ID,'vlog -b "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKDIFF_ID,'vdiff -r "%b%e"',0x8000040 |
VCSSetCmd=VCS_CHECKMENU_ID,'pvcsvmwn',0x8000000 |
VCSSetCmd=VCS_ADD_ID,'vcs -i -t@"%Q" "%b%e"',0x8000040 |
VCSSetCmd=VCS_REMOVE_ID,'del /f "%b%{??v|___}e"',0x8000040 |
[Project] |
ConfigSetUserMakefile='' |
ConfigSetUserMakefileParser='' |
ConfigSetUserMakefileTimeStamp=0 |
ConfigSetUserMakefileAutoSync=0 |
ConfigSetLinkDBFilename='C:\Cw32\cwright.ldb' |
ConfigSetMarkDBFilename='C:\Cw32\cwright.mrk' |
ConfigSetSymbolDBFilename='C:\WinAVR\Projects\Flug\BL_MC_0_01\avr.sbl' |
EditSetPath='' |
[Files] |
.\uart.c |
.\analog.c |
.\interrupt4.c |
.\main.c |
.\PPM_Decode.c |
.\printf_P.c |
.\timer0.c |
.\twislave.c |
.\uart.h |
.\analog.h |
.\main.h |
.\old_macros.h |
.\PPM_Decode.h |
.\printf_P.h |
.\timer0.h |
.\twislave.h |
.\makefile |
[Ede] |
Toolchain=c:\c166\etc\c166.dol |
ToolchainName=TASKING C for C166/ST10 v6.0 r4 |
ProjectDir=C:\WinAVR\Projects\Flug\BL_MC_0_27 |
UserMode=Expert |
EdeVersion=2.7r5 (094) |
CodeWrightVersion=7.0 |
DefBuildSettings=True |
SaveFiles=True |
ScanDependencies=False |
StopAfterError=True |
KeepTmpFiles=False |
ExtMakefile=False |
ExtMakefileName= |
UseMakeOptions=False |
MakeOptions= |
ShowOptions=False |
ExtDebugger=False |
ExtDebuggerName= |
UseDOSShell=False |
SaveOptionMethod=0 |
SaveOptionFileName= |
LoadOptionFileName= |
LoadOptionStartup=False |
GroupList= |
[Directories] |
Executables=c:\c166\bin |
Includes=c:\c166\include |
Libraries=c:\c166\lib |
[DefaultOptions] |
CpuRwdc=CpuRwdcDelay |
OptionList=CpuRwdc |
[Options] |
FileList= |
/branches/v0.31_8kHz_PWM/main.c |
---|
0,0 → 1,349 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
/############################################################################*/ |
#include "main.h" |
unsigned int PWM = 0; |
unsigned int Strom = 0; //ca. in 0,1A |
unsigned char Strom_max = 0; |
unsigned char Mittelstrom = 0; |
unsigned int Drehzahl = 0; // in 100UPM 60 = 6000 |
unsigned int KommutierDelay = 10; |
unsigned int I2C_Timeout = 0; |
unsigned char SIO_Timeout = 0; |
unsigned int SollDrehzahl = 0; |
unsigned int IstDrehzahl = 0; |
unsigned int DrehZahlTabelle[256];//vorberechnete Werte zur Drehzahlerfassung |
unsigned char ZeitFuerBerechnungen = 1; |
unsigned char MotorAnwerfen = 0; |
unsigned char MotorGestoppt = 1; |
unsigned char MaxPWM = MAX_PWM; |
unsigned int CntKommutierungen = 0; |
unsigned int SIO_Drehzahl = 0; |
unsigned char ZeitZumAdWandeln = 1; |
//############################################################################ |
// |
void SetPWM(void) |
//############################################################################ |
{ |
unsigned char tmp_pwm; |
tmp_pwm = PWM; |
if(tmp_pwm > MaxPWM) // Strombegrenzung |
{ |
tmp_pwm = MaxPWM; |
PORTC |= ROT; |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
PORTC |= ROT; |
Strom--; |
} |
else |
{ |
#ifdef _32KHZ |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
#ifdef _16KHZ |
OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
#endif |
} |
} |
//############################################################################ |
// |
void PWM_Init(void) |
//############################################################################ |
{ |
PWM_OFF; |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
} |
//############################################################################ |
// |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
while((TCNT0 - dauer) & 0x80); |
} |
//############################################################################ |
// |
void Anwerfen(unsigned char pwm) |
//############################################################################ |
{ |
unsigned long timer = 300,i; |
DISABLE_SENSE_INT; |
PWM = 5; |
SetPWM(); |
Manuell(); |
Delay_ms(200); |
PWM = pwm; |
while(1) |
{ |
for(i=0;i<timer; i++) |
{ |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
Wait(100); // warten |
} |
timer-= timer/15+1; |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return; } |
Manuell(); |
Phase++; |
Phase %= 6; |
AdConvert(); |
PWM = pwm; |
SetPWM(); |
if(SENSE) |
{ |
PORTD ^= GRUEN; |
} |
} |
} |
//############################################################################ |
// |
unsigned char SollwertErmittlung(void) |
//############################################################################ |
{ |
static unsigned int sollwert = 0; |
unsigned int ppm; |
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
} |
else |
if(PPM_Timeout) // es gibt gültige PPM-Daten |
{ |
ppm = PPM_Signal; |
if(ppm > 300) ppm = 0; // ungültiges Signal |
if(ppm > 200) ppm = 200; |
if(ppm <= MIN_PPM) sollwert = 0; |
else |
{ |
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM); |
} |
PORTC &= ~ROT; |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
PORTC |= ROT; |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
PORTC &= ~ROT; |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
return(sollwert); |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
char altPhase = 0; |
int test = 0; |
unsigned int MinUpmPulse,Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
DDRC = 0x08; |
PORTC = 0x08; |
DDRD = 0xBA; |
PORTD = 0x80; |
DDRB = 0x0E; |
PORTB = 0x31; |
UART_Init(); |
Timer0_Init(); |
sei ();//Globale Interrupts Einschalten |
// Am Blinken erkennt man die richtige Motoradresse |
for(test=0;test<5;test++) |
{ |
if(test == MOTORADRESSE) PORTD |= GRUEN; |
Delay_ms(150); |
PORTD &= ~GRUEN; |
Delay_ms(250); |
} |
Delay_ms(500); |
UART_Init(); |
PWM_Init(); |
InitIC2_Slave(0x50); |
InitPPM(); |
Blink = SetDelay(101); |
Blink2 = SetDelay(102); |
MinUpmPulse = SetDelay(103); |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)); |
PORTD |= GRUEN; |
PWM = 0; |
SetPWM(); |
SFIOR = 0x08; // Analog Comperator ein |
ADMUX = 1; |
MinUpmPulse = SetDelay(10); |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung |
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder |
while (1) |
{ |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt |
{ |
MotorGestoppt = 0; |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
MinUpmPulse = SetDelay(50); // Timeout, falls ein Motor stehen bleibt |
altPhase = Phase; |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!PWM) // Sollwert == 0 |
{ |
MotorAnwerfen = 0; // kein Startversuch |
ZeitFuerBerechnungen = 0; |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(DrehzahlMessTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
STEUER_OFF; |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
MotorGestopptTimer = SetDelay(1500); |
} |
if(MotorGestoppt && !TEST_SCHUB) PWM = 0; |
SetPWM(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
{ |
if(MotorGestoppt) PORTD |= GRUEN; //else PORTD &= ~GRUEN; |
if(SIO_DEBUG) |
{ |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
} |
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung |
if(CheckDelay(MittelstromTimer)) |
{ |
MittelstromTimer = SetDelay(50); // alle 50ms |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
else if(Mittelstrom > Strom) Mittelstrom--; |
if(Mittelstrom > LIMIT_STROM)// Strom am Limit? |
{ |
MaxPWM--;// dann die Maximale PWM herunterfahren |
PORTC |= ROT; |
} |
else |
{ |
if(MaxPWM < MAX_PWM) MaxPWM++; |
} |
} |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
{ |
DrehzahlMessTimer = SetDelay(10); |
SIO_Drehzahl = (6 * CntKommutierungen) / (POLANZAHL / 2); |
CntKommutierungen = 0; |
if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
} |
if(CheckDelay(TestschubTimer)) |
{ |
TestschubTimer = SetDelay(1500); |
if(TEST_SCHUB) |
{ |
switch(test) |
{ |
case 0: PWM = 50; test++; break; |
case 1: PWM = 60; test++; break; |
case 2: PWM = 128; test++; break; |
case 3: PWM = 200; test++; break; |
case 4: PWM = 255; test = 0; break; |
default: test = 0; |
} |
} |
} |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
{ |
MotorGestoppt = 1; |
DISABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
if(MotorAnwerfen) |
{ |
PORTC &= ~ROT; |
MotorAnwerfen = 0; |
Anwerfen(10); |
PORTD |= GRUEN; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 10; |
SetPWM(); |
MinUpmPulse = SetDelay(200); |
while(!CheckDelay(MinUpmPulse)); // kurz Durchstarten |
MinUpmPulse = SetDelay(1000); |
altPhase = 7; |
} |
} |
} // ZeitFuerBerechnungen |
} // while(1) - Hauptschleife |
} |
/branches/v0.31_8kHz_PWM/main.h |
---|
0,0 → 1,126 |
#ifndef _MAIN_H |
#define _MAIN_H |
#define MOTORADRESSE 4 // Adresse (1-4) |
#define MANUELL_PWM 0 // zur manuellen Vorgabe der PWM Werte: 0-255 |
#define TEST_MANUELL 0 // zum Testen der Hardware ohne Kommutierungsdetektion Werte: 0-255 (PWM) |
#define TEST_SCHUB 0 // Erzeugt ein Schubmuster Werte: 0 = normal 1 = Test |
#define POLANZAHL 12 // Anzahl der Pole (Magnete) Wird nur zur Drehzahlausgabe über Debug gebraucht |
#define MAX_PWM 255 |
#define MIN_PWM 3 |
#define MIN_PPM 10 // ab hier (PPM-Signal) schaltet der Regler erst ein |
#define FILTER_PPM 7 // wie stark soll das PPM-Signal gefiltert werden (Werte: 0-30)? |
#define SIO_DEBUG 0 // Testwertausgaben auf der seriellen Schnittstelle |
#define X3D_SIO 1 // serielles Protokoll des X3D (38400Bd) Achtung: dann muss SIO_DEBUG = 0 sein |
#define _16KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define _32KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
#ifdef _16KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 65 // ab ca. 6,5A PWM begrenzen |
#endif |
#ifdef _32KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 50 // ab ca. 5,0A PWM begrenzen |
#endif |
#define SYSCLK 4000000L //Quarz Frequenz in Hz |
//Robbe Roxxy 2824-34 mit Todd 10x4,5 bei 16kHz |
//PWM Strom Schub |
//10 0,18A 21g |
//20 0,30A 38g |
//30 0,40A 49g |
//40 0,54A 60g |
//50 0,70A 83g |
//60 0,95A 102g |
//70 1,25A 128g |
//80 1,50A 151g |
//90 1,83A 175g |
//100 2,25A 206g |
//110 2,66A 228g |
//120 3,10A 257g |
//130 3,55A 278g |
//140 4,00A 305g |
//150 4,50A 330g |
//160 5,30A 355g |
//170 5,85A 387g |
//180 6,40A 400g |
//190 7,10A 425g |
//200 7,60A 460g |
//0,5A 63g 14% |
//1,0A 110g 24% |
//1,5A 170g 32% |
//2,0A 195g 37% |
//2,5A 230g 41% |
//3,0A 260g 46% |
//3,5A 290g 50% |
//4,0A 310g 53% |
//4,5A 340g 58% |
//5,0A 360g 63% |
//5,5A 380g 67% |
//6,0A 400g 68% |
//6,5A 420g 70% |
//7,0A 450g 75% |
//7,5A 460g 78% |
//8,0A 475g 82% |
//9,0A 550g 86% |
//11 A 600g 100% |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "twislave.h" |
#include "old_macros.h" |
#include "analog.h" |
#include "uart.h" |
#include "timer0.h" |
#include "BLMC.h" |
#include "PPM_Decode.h" |
extern unsigned int I2C_Timeout; |
extern unsigned char SIO_Timeout; |
extern unsigned int PWM; |
extern unsigned int Strom; //ca. in 0,1A |
extern unsigned char Strom_max; |
extern unsigned char Mittelstrom; |
extern unsigned int CntKommutierungen; |
extern unsigned char MotorAnwerfen; |
extern unsigned char MotorGestoppt; |
extern unsigned char ZeitZumAdWandeln; |
extern unsigned char MaxPWM; |
#define ROT 0x08 |
#define GRUEN 0x80 |
#if defined(__AVR_ATmega8__) |
# define OC1 PB1 |
# define DDROC DDRB |
# define OCR OCR1A |
# define PWM10 WGM10 |
# define PWM11 WGM11 |
#endif |
#endif //_MAIN_H |
/branches/v0.31_8kHz_PWM/makefile |
---|
0,0 → 1,386 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega8 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 31 |
#------------------------------------------------------------------- |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
TARGET = BrushLess-Ctrl_8kHz_PWM_V$(HAUPT_VERSION)_$(NEBEN_VERSION) |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c timer0.c analog.c PPM_Decode.c twislave.c BLMC.c |
#printf_P.c |
########################################################################################################## |
# If there is more than one source file, append them above, or modify and |
# uncomment the following: |
#SRC += foo.c bar.c |
# You can also wrap lines by appending a backslash to the end of the line: |
#SRC += baz.c \ |
#xyzzy.c |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -g -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) |
ifeq ($(AVR_CTRL_PLATINE), 1) |
CFLAGS += -DAVR_CTRL_PLATINE=$(AVR_CTRL_PLATINE) |
endif |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
#AVRDUDE_FLAGS += -V -E noreset |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
# $(REMOVE) $(TARGET).eep |
# $(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/v0.31_8kHz_PWM/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/branches/v0.31_8kHz_PWM/timer0.c |
---|
0,0 → 1,60 |
/***************************************************************************** |
*****************************************************************************/ |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile unsigned char Timer0Overflow; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL(SIG_OVERFLOW0) |
{ |
static unsigned char cnt; |
TCNT0 = 0x80; |
Timer0Overflow++; |
if(!cnt--) |
{ |
cnt = 3; |
CountMilliseconds += 1; |
if(I2C_Timeout) I2C_Timeout--; |
if(PPM_Timeout) PPM_Timeout--; |
if(SIO_Timeout) SIO_Timeout--; |
} |
} |
void Timer0_Init(void) |
{ |
TCCR0 = TIMER_TEILER; |
//TCNT0 = -TIMER_RELOAD_VALUE; // reload |
TIM0_START; |
TIMER2_INT_ENABLE; |
} |
unsigned int SetDelay(unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
} |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
} |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
/branches/v0.31_8kHz_PWM/timer0.h |
---|
0,0 → 1,15 |
#if defined (__AVR_ATmega8__) |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 125 |
#endif |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char Timer0Overflow; |
void Timer1_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
/branches/v0.31_8kHz_PWM/twislave.c |
---|
0,0 → 1,75 |
/*############################################################################ |
Slaveadr = 0x52 = Vorne, 0x54 = Hinten, 0x56 = Rechts, 0x58 = Links |
############################################################################*/ |
#include <avr/io.h> |
#include <util/twi.h> |
#include "main.h" |
unsigned char I2C_RXBuffer; |
unsigned char Byte_Counter=0; |
//############################################################################ |
//I2C (TWI) Interface Init |
void InitIC2_Slave(uint8_t adr) |
//############################################################################ |
{ |
TWAR = adr + (2*MOTORADRESSE); // Eigene Adresse setzen |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
//############################################################################ |
//ISR, die bei einem Ereignis auf dem Bus ausgelöst wird. Im Register TWSR befindet |
//sich dann ein Statuscode, anhand dessen die Situation festgestellt werden kann. |
ISR (TWI_vect) |
//############################################################################ |
{ |
switch (TWSR & 0xF8) |
{ |
case SR_SLA_ACK: |
TWCR |= (1<<TWINT); |
Byte_Counter=0; |
return; |
// Daten Empfangen |
case SR_PREV_ACK: |
I2C_RXBuffer = TWDR; |
I2C_Timeout = 500; |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_SLA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_DATA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_2: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_1: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
} |
TWCR =(1<<TWEA) | (1<<TWINT) | (1<<TWEN) | (1<<TWIE); // TWI Reset |
} |
/branches/v0.31_8kHz_PWM/twislave.h |
---|
0,0 → 1,32 |
#ifndef _TWI_SLAVE_H_ |
#define _TWI_SLAVE_H_ |
extern unsigned char I2C_RXBuffer; |
extern unsigned char Byte_Counter; |
extern void InitIC2_Slave (uint8_t adr); |
#define TWI_BUS_ERR_1 0x00 |
#define TWI_BUS_ERR_2 0xF8 |
// Status Slave RX Mode |
#define SR_SLA_ACK 0x60 |
#define SR_LOST_ACK 0x68 |
#define SR_GEN_CALL_ACK 0x70 |
#define GEN_LOST_ACK 0x78 |
#define SR_PREV_ACK 0x80 |
#define SR_PREV_NACK 0x88 |
#define GEN_PREV_ACK 0x90 |
#define GEN_PREV_NACK 0x98 |
#define STOP_CONDITION 0xA0 |
#define REPEATED_START 0xA0 |
// Status Slave TX mode |
#define SW_SLA_ACK 0xA8 |
#define SW_LOST_ACK 0xB0 |
#define SW_DATA_ACK 0xB8 |
#define SW_DATA_NACK 0xC0 |
#define SW_LAST_ACK 0xC8 |
#endif |
/branches/v0.31_8kHz_PWM/uart.c |
---|
0,0 → 1,191 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + (c) 01.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + Keine Garantie auf Fehlerfreiheit |
// + Kommerzielle Nutzung nur mit meiner Zustimmung |
// + Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
// + www.mikrocontroller.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
#define MAX_SENDE_BUFF 100 |
#define MAX_EMPFANGS_BUFF 100 |
unsigned volatile char SIO_Sollwert = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned char MeineSlaveAdresse; |
struct str_DebugOut DebugOut; |
int Debug_Timer; |
SIGNAL(INT_VEC_TX) |
{ |
} |
void SendUart(void) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!(UCSRA & 0x40)) return; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
USR |= (1<TXC); |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
static unsigned char serPacketCounter = 100; |
SioTmp = UDR; |
#if X3D_SIO == 1 |
if(SioTmp == 0xF5) // Startzeichen |
{ |
serPacketCounter = 0; |
} |
else |
{ |
if(++serPacketCounter == MOTORADRESSE) // (1-4) |
{ |
SIO_Sollwert = SioTmp; |
SIO_Timeout = 200; // werte für 200ms gültig |
} |
else |
{ |
if(serPacketCounter > 100) serPacketCounter = 100; |
} |
} |
#endif |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
#if X3D_SIO == 1 |
UCSRB |= (1<<RXCIE); // serieller Empfangsinterrupt |
#endif |
// TX-Interrupt Freigabe |
// UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
//UBRR= (SYSCLK / (BAUD_RATE * 8L) -1 ); |
#if X3D_SIO == 1 |
UBRR = 12; //38400 Baud @ 4 MHz |
#else |
UBRR = 8; //57600 Baud @ 4 MHz |
#endif |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
Debug_Timer = SetDelay(200); |
UDR = '*'; |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen)) // im Singlestep-Betrieb in jedem Schtitt senden |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
Debug_Timer = SetDelay(50); // Sendeintervall |
} |
} |
/branches/v0.31_8kHz_PWM/uart.h |
---|
0,0 → 1,81 |
#ifndef _UART_H |
#define _UART_H |
extern unsigned volatile char SIO_Sollwert; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned char MeineSlaveAdresse; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void SendUart(void); |
struct str_DebugOut |
{ |
unsigned char Digital[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned int Analog[8]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
//Die Baud_Rate der Seriellen Schnittstelle |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
#if X3D_SIO == 1 |
#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#else |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
#endif |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega8__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/tags/V0.31/BLMC.c |
---|
0,0 → 1,196 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned char Phase = 0,ShadowTCCR1A = 0; |
volatile unsigned char CompFreigabeTimer = 100; |
volatile unsigned char CompInterruptFreigabe = 0; |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW2) |
//############################################################################ |
{ |
} |
//############################################################################ |
// + Interruptroutine |
// + Wird durch den Analogkomperator ausgelöst |
// + Dadurch wird das Kommutieren erzeugt |
SIGNAL(SIG_COMPARATOR) |
//############################################################################ |
{ |
unsigned char sense = 0; |
do |
{ |
if(SENSE_H) sense = 1; else sense = 0; |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
if(sense) |
{ |
STEUER_C_L; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_FALLING_INT; |
SENSE_B; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_L; |
} |
break; |
case 1: |
STEUER_C_L; |
if(!sense) |
{ |
STEUER_B_H; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_H; |
} |
break; |
case 2: |
STEUER_B_H; |
if(sense) |
{ |
STEUER_A_L; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_L; |
} |
break; |
case 3: |
STEUER_A_L; |
if(!sense) |
{ |
STEUER_C_H; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_B; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_H; |
} |
break; |
case 4: |
STEUER_C_H; |
if(sense) |
{ |
STEUER_B_L; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_L; |
} |
break; |
case 5: |
STEUER_B_L; |
if(!sense) |
{ |
STEUER_A_H; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_RISING_INT; |
Phase = 0; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_H; |
} |
break; |
} |
} |
while((SENSE_L && sense) || (SENSE_H && !sense)); |
ZeitZumAdWandeln = 0; |
} |
//############################################################################ |
// |
void Manuell(void) |
//############################################################################ |
{ |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
STEUER_B_L; |
SENSE_C; |
SENSE_RISING_INT; |
break; |
case 1: |
STEUER_A_H; |
STEUER_C_L; |
SENSE_B; |
SENSE_FALLING_INT; |
break; |
case 2: |
STEUER_B_H; |
STEUER_C_L; |
SENSE_A; |
SENSE_RISING_INT; |
break; |
case 3: |
STEUER_B_H; |
STEUER_A_L; |
SENSE_C; |
SENSE_FALLING_INT; |
break; |
case 4: |
STEUER_C_H; |
STEUER_A_L; |
SENSE_B; |
SENSE_RISING_INT; |
break; |
case 5: |
STEUER_C_H; |
STEUER_B_L; |
SENSE_A; |
SENSE_FALLING_INT; |
break; |
} |
} |
/tags/V0.31/BLMC.h |
---|
0,0 → 1,55 |
/*############################################################################ |
############################################################################*/ |
#ifndef BLMC_H_ |
#define BLMC_H_ |
extern volatile unsigned char Phase; |
extern volatile unsigned char ShadowTCCR1A; |
extern volatile unsigned char CompInterruptFreigabe; |
void Blc(void); |
void Manuell(void); |
#ifdef _32KHZ |
#define PWM_C_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xAD; TCCR2 = 0x69;DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x0D; TCCR2 = 0x49;PORTC &= ~0x0E;} |
#endif |
#ifdef _16KHZ |
#define PWM_C_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xA2; TCCR2 = 0x61; DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x02; TCCR2 = 0x41;PORTC &= ~0x0E;} |
#endif |
#define STEUER_A_H {PWM_A_ON} |
#define STEUER_B_H {PWM_B_ON} |
#define STEUER_C_H {PWM_C_ON} |
#define STEUER_A_L {PORTD &= ~0x30; PORTD |= 0x08;} |
#define STEUER_B_L {PORTD &= ~0x28; PORTD |= 0x10;} |
#define STEUER_C_L {PORTD &= ~0x18; PORTD |= 0x20;} |
#define STEUER_OFF {PORTD &= ~0x38; PWM_OFF;} |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
#define ENABLE_SENSE_INT {CompInterruptFreigabe = 1;ACSR |= 0x0A; } |
#define DISABLE_SENSE_INT {CompInterruptFreigabe = 0; ACSR &= ~0x08; } |
#define SENSE_FALLING_INT ACSR &= ~0x01 |
#define SENSE_RISING_INT ACSR |= 0x03 |
#define SENSE_TOGGLE_INT ACSR &= ~0x03 |
#endif //BLMC_H_ |
/tags/V0.31/BL_Ctrl.pnproj |
---|
0,0 → 1,0 |
<Project name="avr_ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="analog.h"></File><File path="analog.c"></File><File path="PPM_Decode.c"></File><File path="PPM_Decode.h"></File><File path="twislave.c"></File><File path="twislave.h"></File><File path="BLMC.c"></File><File path="BLMC.h"></File></Project> |
/tags/V0.31/BL_Ctrl.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="avr_ctrl" x="true"></e></ViewState></pd> |
/tags/V0.31/BrushLess-Ctrl_V0_31.eep |
---|
0,0 → 1,0 |
:00000001FF |
/tags/V0.31/BrushLess-Ctrl_V0_31.hex |
---|
0,0 → 1,286 |
:1000000012C05DC52AC029C0C3C5C5C426C025C04D |
:10001000B1C4F8C322C0EFC220C0BCC21EC01DC004 |
:10002000C1C561C51AC011241FBECFE5D4E0DEBF33 |
:10003000CDBF10E0A0E6B0E0E8EBF1E102C0059032 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73AC1D2CF20918200B6 |
:1000600080916100821710F4282FAB9A8091800054 |
:10007000909181008338910560F01BBC1ABC19BCBB |
:1000800018BC13BCAB9A01979093810080938000B9 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C109297004398F5 |
:1000F00085E090E09093830080938200AFDF57D635 |
:1001000088EC90E0DDD3C12FDD27D0938300C0932E |
:100110008200EE24FF248701EA14FB040C051D0570 |
:1001200078F480916600882311F43ED201C050D348 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E013D8A21A1C |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F020D6809159 |
:1001700099008F5F809399008091990066E0DAD7AB |
:1001800090939900AED3D0938300C093820066DF32 |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089540917A0050917B004115510510 |
:1001C00009F04BC080917900882371F090918800EC |
:1001D0008FEF989FC001112468EC70E0B7D770933F |
:1001E00085006093840041C080918E00882341F196 |
:1001F000209190003091910081E02D32380708F075 |
:100200009A01293C310510F028EC30E02B30310503 |
:1002100028F4509385004093840026C08CEF90E032 |
:10022000289FA001299F500D389F500D1124CA010D |
:10023000885D994064EB70E089D7CB01039610C0CC |
:100240008091840090918500009729F00197909308 |
:10025000850080938400AB9A08C080918803992719 |
:100260009093850080938400AB9880918400909156 |
:1002700085008F3F910539F030F08FEF90E090933B |
:10028000850080938400809184009927089580914F |
:100290008000909181009093780380937703809100 |
:1002A0007E00992790937A03809379038091700060 |
:1002B0009091710090937C0380937B0380919000D8 |
:1002C0009091910090937E0380937D030895CFE5F4 |
:1002D000D4E0DEBFCDBFEE2488E084BB85BB8AEBD3 |
:1002E00081BB80E882BB8EE087BB81E388BB5BD2A9 |
:1002F000CAD27894C0E0D0E0C430D10509F4979A0E |
:1003000086E990E0DDD297988AEF90E0D9D22196E5 |
:10031000C530D1058CF384EF91E0D2D244D2C3DE54 |
:1003200080E5DCD31AD385E690E0B6D286E690E08D |
:10033000B3D287E690E0B0D2EC018EEF90E0ACD281 |
:100340005C018DEE93E0A8D28C018EEE93E0A4D2F6 |
:100350006C01CE01AAD28823E1F3979A1092830010 |
:10036000109282007BDE88E080BF81E087B98AE05E |
:1003700090E092D2EC0181E090E090937A03809338 |
:100380007903109291001092900014DF99279093B6 |
:10039000830080938200809199008E1551F0109215 |
:1003A00062001092630082E390E076D2EC01E0906C |
:1003B00099008091820090918300892BC9F410925A |
:1003C000740010926300C80170D28823D9F0109293 |
:1003D0009700439881E08093620082B3877C82BB60 |
:1003E00082E08FBD81E485BD85B3817F85BB0AC076 |
:1003F00080916200882319F081E0809374008CED75 |
:1004000095E04AD280916200882321F01092830007 |
:100410001092820023DE809163008F5F80936300DF |
:10042000813009F0B2CF809162008111979AC501A5 |
:100430003CD2882339F182E390E02ED25C01809196 |
:100440007E00482F5527209180003091810042176F |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937E0080917E0090916100823428F01C |
:10047000915090936100AB9A05C09F3F19F09F5F28 |
:1004800090936100C80111D2882319F18AE090E0AD |
:1004900003D28C012091720030917300C901880F42 |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E04CD6709371006093700010927300DE |
:1004C0001092720080918E00882319F481E080934D |
:1004D0006000C601EAD1882321F08CED95E0DCD1E3 |
:1004E0006C01CE01E2D1882331F0809170009091AF |
:1004F0007100892B29F080917400882309F445CF7D |
:1005000021E0F22EF092620010929700439884E668 |
:1005100090E0C2D1EC0180917400882309F435CFBA |
:10052000AB98109274008AE0CFDD979A1092620027 |
:100530008091990081508093990081E090E09093A0 |
:100540008300809382008ADD88B18C7F88B9F09225 |
:10055000970088B18A6088B984E690E09DD1EC016B |
:10056000CE01A3D18823E1F38AE090E09093830049 |
:100570008093820073DD88EC90E08ED1EC01CE0197 |
:1005800094D18823E1F388EE93E086D1EC0197E0E3 |
:10059000E92EFBCE1F920F920FB60F9211240F90EF |
:1005A0000FBE0F901F9018955E9B24C0809166002F |
:1005B0008823E1F48091890090918A0001969093BC |
:1005C0008A0080938900FC01E556FD4FE081ED3003 |
:1005D00019F08436910539F410928A00109289003E |
:1005E00081E080936600589AECB9089510928A00D1 |
:1005F0001092890008951F920F920FB60F92112446 |
:100600008F938CB18093870080918700853F19F488 |
:100610001092670014C0809167008F5F809367001D |
:10062000843041F4809187008093880088EC809327 |
:10063000790005C0853618F084E6809367008F91B5 |
:100640000F900FBE0F901F901895AC01A0E0B0E086 |
:100650009D01A817B90748F4EBE9F2E08191280F52 |
:10066000311D1196A417B507C8F33F70FD01E5567B |
:10067000FD4FC90146E0969587954A95E1F7835C61 |
:1006800080831196FD01E556FD4F2F733070822F48 |
:10069000835C8083A456BD4F8DE08C9310926600DE |
:1006A00080919B028CB908951F93CF93DF93382FCD |
:1006B000EA01722F10E083E280939B0260939C0218 |
:1006C00030939D02A3E0B0E0772309F458C077236C |
:1006D00011F4972F07C0FE01E10FF11D1F5F9081FC |
:1006E000715011F4472F0EC0FE01E10FF11D1F5F85 |
:1006F0004081715039F0FE01E10FF11D1F5F6081F3 |
:10070000715001C0672FFD01E556FD4F892F869579 |
:100710008695835C80831196FD01E556FD4F892FF8 |
:1007200099278370907024E0880F991F2A95E1F72C |
:1007300055279A0194E0369527959A95E1F7822BF3 |
:10074000835C80831196FD01E556FD4F4F7050701C |
:10075000440F551F440F551F862F992756E0969535 |
:1007600087955A95E1F7842B835C80831196FD0170 |
:10077000E556FD4F6F73635C60831196A5CFCD0185 |
:1007800064DFDF91CF911F910895CF93C82F8A30F6 |
:1007900011F48DE0FADF5D9BFECFCCB980E090E0F4 |
:1007A000CF910895089588E18AB9599A579A89E1B5 |
:1007B00089B960E070E085EC93E05FD388EC90E06D |
:1007C0006BD0909300038093FF028AE28CB9089566 |
:1007D0008091FF029091000368D0882391F080916E |
:1007E0006600882371F022E245E653E060919A02A8 |
:1007F00084E45ADF82E390E04FD09093000380932B |
:10080000FF0208951F920F920FB60F9211248F933B |
:100810009F93809187038F5F8093870380918D00E2 |
:10082000815080938D008F3F39F583E080938D0058 |
:1008300080918B0090918C00019690938C00809316 |
:100840008B0080917A0090917B00009729F00197AE |
:1008500090937B0080937A0080918E00882329F00A |
:1008600080918E00815080938E0080917900882342 |
:1008700019F08150809379009F918F910F900FBE56 |
:100880000F901F90189582E083BF89B7816089BF60 |
:1008900089B7806489BF089520918B0030918C00C6 |
:1008A000280F391FC9010197089520918B003091BD |
:1008B0008C00821B930B892F9927807899270895A4 |
:1008C000CF93DF93E9DFEC01CE01EFDF8823E1F383 |
:1008D000DF91CF91089586EA86B987E087B9369A85 |
:1008E000089527B196E097B910BE83ED86B9349A82 |
:1008F00097B9369A349BFECF27B944B155B1440F0E |
:10090000551F440F551F493C510510F048EC50E06D |
:100910002091800030918100C90163E0880F991F08 |
:100920006A95E1F7821B930B840F951F23E0969540 |
:1009300087952A95E1F7909381008093800020911C |
:100940007F0033272817390720F480918000809397 |
:100950007F0016B888E080BF08958EB5806C8EBD8C |
:100960008EB580648EBD89B7806289BF89B7846087 |
:1009700089BF08951F920F920FB60F9211248F9383 |
:1009800080918F008F5F80938F008F910F900FBEAB |
:100990000F901F9018951F920F920FB60F9211246F |
:1009A0002F933F938F939F930EB406FE0FC0109228 |
:1009B0008F0086B597B590939300809392008EB583 |
:1009C0008F7B8EBD84E680938E0070C08EB5806470 |
:1009D0008EBD26B537B58091920090919300281B6B |
:1009E000390B80918F009927982F8827990F280F0E |
:1009F000391F689414F8369527951694E1F73093CB |
:100A00009500209394002851314030F488E191E022 |
:100A100090939500809394002091940030919500DC |
:100A2000285131403093950020939400809190009C |
:100A3000909191008217930730F4809190009091EB |
:100A4000910001960CC08091900090919100281720 |
:100A5000390748F48091900090919100019790930C |
:100A60009100809390002091900030919100C901F5 |
:100A7000880F991F880F991F880F991F821B930B4E |
:100A80002091940030919500820F931F23E096955A |
:100A900087952A95E1F79093950080939400909321 |
:100AA00091008093900081E0809360009F918F91EE |
:100AB0003F912F910F900FBE0F901F9018951F928E |
:100AC0000F920FB60F9211248F938AB78F7B8ABF34 |
:100AD0008F910F900FBE0F901F901895885F82B96D |
:100AE00085EC86BF08951F920F920FB60F921124C6 |
:100AF0008F939F9381B19927887F9070803891055B |
:100B0000E9F08138910534F40097B1F18036910510 |
:100B100079F035C0883B9105D9F0893B910524F4E3 |
:100B2000883A9105A9F02BC0883F910511F127C0A3 |
:100B300086B7806886BF1092960023C083B18093E9 |
:100B4000880384EF91E090937B0080937A000EC03D |
:100B500090919600992339F480917E0083B99F5F2C |
:100B60009093960003C08091610083B986B7806836 |
:100B700007C086B7806986BF86B7806986BF85EC67 |
:100B800086BF9F918F910F900FBE0F901F90189569 |
:100B90001F920F920FB60F9211240F900FBE0F905D |
:100BA0001F9018951F920F920FB60F9211241F934A |
:100BB0002F933F934F935F936F937F938F939F9365 |
:100BC000AF93BF93CF93EF93FF93459B02C011E088 |
:100BD00001C010E08091990099278230910509F4B5 |
:100BE00050C0833091052CF4009779F0019739F1CA |
:100BF000BFC08430910509F478C0843091050CF4AD |
:100C00005AC0059709F48BC0B3C082EA8FBD81E654 |
:100C100085BD88E087BB112369F082B3877E82BBE4 |
:100C2000959AC1E0C4BD8091600081115ADE409860 |
:100C3000C7B91BC082B3877D82BB949A99C082B327 |
:100C4000877E82BB959A1123B1F482EA8FBD81E43D |
:100C500085BD8CE087BB81E084BD809160008111FF |
:100C600040DE17B988B1836088B9809199008F5FA1 |
:100C7000809399006DC082EA8FBD81E685BD88E0D2 |
:100C800076C082EA8FBD81E485BD8CE087BB1123ED |
:100C900069F082B38F7C82BB939A81E084BD80919E |
:100CA000600081111EDE82E087B932C082B3877E88 |
:100CB00082BB959A5DC082B38F7C82BB939A1123CD |
:100CC00071F482EA8FBD81E485BD8AE087BBC1E013 |
:100CD000C4BD80916000811104DEC7B9C3CF82EA30 |
:100CE0008FBD81E485BD8CE042C082EA8FBD81E486 |
:100CF00085BD8AE087BB112369F082B3877D82BB03 |
:100D0000949A81E084BD809160008111EADD17B87A |
:100D10004098ABCF82B38F7C82BB939A29C082B3B9 |
:100D2000877D82BB949A1123E9F482EA8FBD81E624 |
:100D300085BD88E087BB81E084BD80916000811122 |
:100D4000D0DD82E087B988B1836088B910939900BB |
:100D5000809172009091730001969093730080933C |
:100D6000720006C082EA8FBD81E485BD8AE087BB40 |
:100D7000459903C0112309F028CF459B03C01123D7 |
:100D800009F423CF10926000FF91EF91CF91BF91B2 |
:100D9000AF919F918F917F916F915F914F913F9113 |
:100DA0002F911F910F900FBE0F901F90189580915B |
:100DB000990099278230910551F1833091052CF4E7 |
:100DC000009769F00197B9F0089584309105E1F139 |
:100DD000843091055CF1059709F443C0089582EAD7 |
:100DE0008FBD81E685BD88E087BB82B3877D82BBEE |
:100DF000949A82E034C082EA8FBD81E685BD88E0A6 |
:100E000087BB82B3877E82BB959A81E01AC082EA53 |
:100E10008FBD81E485BD8CE087BB82B3877E82BBBA |
:100E2000959A17B888B1836088B9089582EA8FBD12 |
:100E300081E485BD8CE087BB82B38F7C82BB939AB3 |
:100E400082E087B94098089582EA8FBD81E485BD2C |
:100E50008AE087BB82B38F7C82BB939A81E087B99B |
:100E6000E1CF82EA8FBD81E485BD8AE087BB82B392 |
:100E7000877D82BB949A17B8E5CF0F931F93CF93CA |
:100E8000DF938C01EB01009711F4672BB9F16EE051 |
:100E900070E081E090E037D0FC01892B71F180E8AF |
:100EA0008383209771F0D387C28781E88383809101 |
:100EB000890390918A03892B21F4F0938A03E093AC |
:100EC000890301151105C9F01187008783818260AC |
:100ED000838380918B0390918C03892B71F4F09321 |
:100EE0008C03E0938B0380918D0390918E03892B6B |
:100EF00021F4F0938E03E0938D03CF01DF91CF9126 |
:100F00001F910F9108950F931F93CF93DF93869FA7 |
:100F10008001879F100D969F100D1124C8010DD0E0 |
:100F2000EC01009721F0A80160E070E0FCD0CE0158 |
:100F3000DF91CF911F910F910895CF93DF93AC0173 |
:100F4000029710F442E050E020E030E0A0919103DD |
:100F5000B0919203BD01F901109709F44CC08D9135 |
:100F60009C9111978417950731F14817590738F468 |
:100F70002115310519F08217930708F49C01FD0132 |
:100F8000A281B381109759F721153105A1F1C9014B |
:100F9000841B950B049708F4A901DB01E0E0F0E065 |
:100FA000109749F18D919C91119782179307F9F44D |
:100FB0004217530779F4ED018A819B81309719F02C |
:100FC0009383828304C09093920380939103CD0115 |
:100FD00002964AC0241B350BFD01E20FF31F41931B |
:100FE0005193225030402D933C93CF013DC0FD01E1 |
:100FF000A281B381D5CF80918F0390919003892BEB |
:1010000041F480916B0090916C00909390038093D9 |
:101010008F03E0916900F0916A00309741F4EDB7D9 |
:10102000FEB780916D0090916E00E81BF90BA091C6 |
:101030008F03B09190039F012A1B3B0B24173507A8 |
:1010400088F0CA0102962817390760F0CD01840F95 |
:10105000951F02969093900380938F034D935D9319 |
:10106000CD0102C080E090E0DF91CF910895CF9351 |
:10107000DF93009709F454C0DC011297ED011B8245 |
:101080001A828091910390919203009721F1FC01C3 |
:1010900040E050E0EA17FB0718F1ED01FB83EA831B |
:1010A0002D913C911197C20FD31FCE0102968E173E |
:1010B0009F0771F48A819B81280F391F2E5F3F4F54 |
:1010C00011963C932E9382819381FD0193838283B9 |
:1010D0004115510559F4B0939203A093910320C098 |
:1010E000AF010280F381E02D3097A1F6EA01BB83C6 |
:1010F000AA83CA01029628813981820F931F8A1719 |
:101100009B0771F48D919C911197280F391F2E5FC9 |
:101110003F4F39832883FD01828193819B838A839A |
:10112000DF91CF910895DC0101C06D934150504093 |
:10113000E0F70895991B79E004C0991F961708F00D |
:10114000961B881F7A95C9F780950895AA1BBB1B2B |
:1011500051E107C0AA1FBB1FA617B70710F0A61BB7 |
:10116000B70B881F991F5A95A9F780959095BC01D8 |
:10117000CD010895A1E21A2EAA1BBB1BFD010DC0D3 |
:10118000AA1FBB1FEE1FFF1FA217B307E407F50737 |
:1011900020F0A21BB30BE40BF50B661F771F881F13 |
:1011A000991F1A9469F760957095809590959B01A9 |
:0811B000AC01BD01CF0108955F |
:1011B80001FF01010A00016464000093032000009C |
:00000001FF |
/tags/V0.31/Doku/BrushLess-Ctr_32kHz_V0_23.hex |
---|
0,0 → 1,271 |
:1000000012C0EAC42AC029C028C053C426C025C0D3 |
:100010003FC49EC322C0B1C220C07EC21EC01DC04C |
:100020005CC5F4C41AC011241FBECFE5D4E0DEBF06 |
:10003000CDBF10E0A0E6B0E0EAEBF0E102C0059031 |
:100040000D92A637B107D9F713E0A6E7B0E001C0DB |
:100050001D92A23AB107E1F706C1D2CF20918500E7 |
:1000600080916100821710F4282FAB9A8091830051 |
:10007000909184008338910560F01BBC1ABC19BCB8 |
:1000800018BC13BCAB9A01979093840080938300B3 |
:100090000895822F99279BBD8ABD99BD88BD23BD38 |
:1000A00008958DE08FBD89E485BD85B3817F85BBD3 |
:1000B00089E08EBD089592B7980F82B7891B87FD9E |
:1000C000FCCF0895AF92BF92CF92DF92EF92FF9252 |
:1000D0000F931F93CF93DF93182F8CE2A82E81E00C |
:1000E000B82EC12CD12C439885E090E090938600E7 |
:1000F00080938500B3DFDED588EC90E079D3C12F03 |
:10010000DD27D0938600C0938500EE24FF2487016D |
:10011000EA14FB040C051D0578F480916D0088231A |
:1001200011F404D201C0FAD284E6C5DF0894E11CC0 |
:10013000F11C011D111DECCFC601B5012FE030E00F |
:1001400040E050E098D7A21AB30AC40AD50A08942E |
:10015000A108B108C108D10889E1A816B104C104F9 |
:10016000D104C8F0A7D5809198008F5F8093980044 |
:100170008091980066E05FD7909398004AD3D0931F |
:100180008600C09385006ADF449BBFCF82B390E8AE |
:10019000892782BBBACFDF91CF911F910F91FF903A |
:1001A000EF90DF90CF90BF90AF90089560E070E047 |
:1001B00080917F00882379F580918E00882349F112 |
:1001C000209190003091910041E02D32340708F0E9 |
:1001D0009B01293C310510F028EC30E02B30310533 |
:1001E000F0F08CEF90E0289FA001299F500D389FE0 |
:1001F000500D1124CA01885D994064EB70E027D747 |
:100200006D5F7F4F6F3F710551F048F06FEF70E009 |
:1002100006C0AB9A05C080919003682F7727AB98F2 |
:10022000862F992708958091830090918400909360 |
:1002300077038093760380918200992790937903C6 |
:1002400080937803809176009091770090937B0360 |
:1002500080937A03809190009091910090937D0318 |
:1002600080937C030895CAE3D4E0DEBFCDBFDE01F6 |
:100270001196E8E6F0E085E001900D928150E1F7FB |
:10028000B82E88E084BB85BB8AEB81BB80E882BB4B |
:100290008EE087BB81E088BB2DD290D2789480E13C |
:1002A00080936E0000E010E00130110509F4979A88 |
:1002B00086E990E09DD297988AEF90E099D20F5FFF |
:1002C0001F4F0530110584F384EF91E091D212D2D3 |
:1002D000E8DE80916E008093880380918500809392 |
:1002E000890310928A038AEA80938B0310928C030D |
:1002F00080E581D3C0D285E690E066D286E690E0C4 |
:1003000063D287E690E060D28C018EEF90E05CD201 |
:100310006C018DEE93E058D27C018EEE93E054D2C6 |
:10032000C8015BD28823E1F3979A1092860010925D |
:10033000850094DE88E080BF81E087B98AE090E0A4 |
:1003400043D28C0181E090E090937903809378030D |
:10035000109291001092900029DF992790938600C7 |
:100360008093850080918500809389038091980017 |
:100370008B1551F0109262001092630082E390E0BE |
:1003800023D28C01B09098008091850090918600D6 |
:10039000892B61F410927A0010926300C7011DD27C |
:1003A000882371F081E0809362000AC0809162002E |
:1003B000882319F081E080937A008CED95E004D2D7 |
:1003C00080916200882321F01092860010928500AF |
:1003D00045DE809163008F5F80936300813009F078 |
:1003E000BBCF80916200882311F0979A01C0979843 |
:1003F0001ADF80916D00882311F498D001C08ED14E |
:10040000C601EBD1882339F182E390E0DDD16C01A4 |
:1004100080918200482F55272091830030918400DD |
:100420004217530710F48F5F04C02417350718F4E0 |
:10043000815080938200809182009091610083338B |
:1004400028F0915090936100AB9A05C09F3F19F03E |
:100450009F5F90936100C701C0D1882319F18AE0A2 |
:1004600090E0B2D17C012091780030917900C901EF |
:10047000880F991F880F991F820F931F820F931F58 |
:1004800066E070E0E4D57093770060937600109298 |
:1004900079001092780080918E00882319F481E011 |
:1004A00080936000C80199D1882331F08091760053 |
:1004B00090917700892B29F080917A00882309F4A4 |
:1004C0004BCF81E080936200439884E690E07CD13A |
:1004D0008C0180917A00882309F43ECFAB9810926A |
:1004E0007A008AE0EFDD10926200809198008150DE |
:1004F0008093980088B18A6088B984E690E064D1DE |
:100500008C01C8016AD18823E1F384E690E05CD1D4 |
:100510008C0197E0B92E20CF1F920F920FB60F9249 |
:1005200011240F900FBE0F901F9018955E9B24C052 |
:1005300080916D008823E1F48091890090918A0078 |
:10054000019690938A0080938900FC01E656FD4F46 |
:10055000E081ED3019F08436910539F410928A006B |
:100560001092890081E080936D00589AECB908954B |
:1005700010928A001092890008951F920F920FB670 |
:100580000F9211248F938CB1809388008F910F90DC |
:100590000FBE0F901F901895AC01A0E0B0E09D0138 |
:1005A000A817B90748F4EAE9F2E08191280F311D54 |
:1005B0001196A417B507C8F33F70FD01E656FD4F2D |
:1005C000C90146E0969587954A95E1F7835C80835B |
:1005D0001196FD01E656FD4F2F733070822F835C1C |
:1005E0008083A556BD4F8DE08C9310926D00809155 |
:1005F0009A028CB908951F93CF93DF93382FEA01A5 |
:10060000722F10E083E280939A0260939B023093F2 |
:100610009C02A3E0B0E0772309F458C0772311F4DB |
:10062000972F07C0FE01E10FF11D1F5F90817150F0 |
:1006300011F4472F0EC0FE01E10FF11D1F5F408135 |
:10064000715039F0FE01E10FF11D1F5F60817150A3 |
:1006500001C0672FFD01E656FD4F892F86958695CF |
:10066000835C80831196FD01E656FD4F892F992703 |
:100670008370907024E0880F991F2A95E1F7552721 |
:100680009A0194E0369527959A95E1F7822B835C41 |
:1006900080831196FD01E656FD4F4F705070440F58 |
:1006A000551F440F551F862F992756E0969587951D |
:1006B0005A95E1F7842B835C80831196FD01E65601 |
:1006C000FD4F6F73635C60831196A5CFCD0164DF2E |
:1006D000DF91CF911F910895CF93C82F8A3011F4E5 |
:1006E0008DE0FADF5D9BFECFCCB980E090E0CF914A |
:1006F0000895089588E18AB9599A80E189B960E03E |
:1007000070E08CE693E03AD388EC90E05DD0909373 |
:10071000FF028093FE028AE28CB908958091FE0266 |
:100720009091FF025AD0882391F080916D00882328 |
:1007300071F022E244E653E06091990284E45BDFC9 |
:1007400082E390E041D09093FF028093FE020895EF |
:100750001F920F920FB60F9211248F939F93809147 |
:1007600086038F5F8093860380918D0081508093F4 |
:100770008D008F3FE1F483E080938D0080918B00AA |
:1007800090918C00019690938C0080938B008091C7 |
:100790007F00882319F0815080937F0080918E0024 |
:1007A000882329F080918E00815080938E009F9144 |
:1007B0008F910F900FBE0F901F90189582E083BF0E |
:1007C00089B7816089BF089520918B0030918C009A |
:1007D000280F391FC9010197089520918B0030918E |
:1007E0008C00821B930B892F992780789927089575 |
:1007F000CF93DF93E9DFEC01CE01EFDF8823E1F354 |
:10080000DF91CF91089586EA86B987E087B9369A55 |
:10081000089527B196E097B910BE83ED86B9349A52 |
:1008200097B9369A349BFECF27B944B155B1440FDE |
:10083000551F440F551F493C510510F048EC50E03E |
:1008400080918300909184009C0163E0220F331F0C |
:100850006A95E1F7281B390B420F531F83E0569529 |
:1008600047958A95E1F7509384004093830016B82A |
:1008700088E080BF08958EB5806C8EBD8EB5806493 |
:100880008EBD89B7806289BF89B7846089BF0895AA |
:100890001F920F920FB60F9211248F9380918F00A9 |
:1008A0008F5F80938F008F910F900FBE0F901F90DE |
:1008B00018951F920F920FB60F9211242F933F930A |
:1008C0008F939F930EB406FE0FC010928F0086B5D3 |
:1008D00097B590939300809392008EB58F7B8EBDD9 |
:1008E00084E680938E006FC08EB580648EBD86B521 |
:1008F00097B52091920030919300821B930B209129 |
:100900008F003327322F2227820F931F689414F809 |
:10091000969587951694E1F79093950080939400AF |
:100920008851914030F488E191E090939500809354 |
:1009300094002091940030919500285131403093DB |
:1009400095002093940080919000909191008217DF |
:10095000930730F4809190009091910001960CC023 |
:1009600080919000909191002817390748F4809168 |
:100970009000909191000197909391008093900046 |
:100980002091900030919100C901880F991F880F24 |
:10099000991F880F991F821B930B2091940030910F |
:1009A0009500820F931F23E0969587952A95E1F78E |
:1009B0009093950080939400909391008093900081 |
:1009C00081E0809360009F918F913F912F910F90D4 |
:1009D0000FBE0F901F9018951F920F920FB60F9297 |
:1009E00011248F938AB78F7B8ABF8F910F900FBE90 |
:1009F0000F901F90189582B986B7856486BF86B719 |
:100A00008F7D86BF8FEF8093870308951F920F928B |
:100A10000FB60F9211242F938F939F93EF93FF9311 |
:100A200081B1992780389105A1F08138910524F48E |
:100A30008036910541F045C0883A910549F1883BDF |
:100A4000910531F13EC085EC86BF8FEF809387031F |
:100A50003AC023B1909187039F3F49F410928703D6 |
:100A60002093960080916E00281759F10FC0E92F4E |
:100A7000FF27E057FC4F20839F5F9093870382E31B |
:100A800080937F009430E8F01092870385E81AC0C5 |
:100A90009091960080916E00981789F49091870349 |
:100AA000E92FFF27E857FC4F808183B9892F8F5F9B |
:100AB00080938703883028F01092870302C08FEF5D |
:100AC00083B985EC86BFFF91EF919F918F912F9114 |
:100AD0000F900FBE0F901F9018951F920F920FB698 |
:100AE0000F9211242F933F934F935F936F937F93B4 |
:100AF0008F939F93AF93BF93EF93FF93979A8091B8 |
:100B0000980099278230910509F44AC083309105F5 |
:100B10002CF4009779F0019759F1B8C08430910511 |
:100B200009F476C0843091050CF458C0059709F497 |
:100B300086C0ACC08DEA8FBD89E685BD88E087BBE5 |
:100B4000459B11C082B3877E82BB959A80916000DD |
:100B500081115FDE81E087B9809198008F5F80937B |
:100B60009800409883C082B3877D82BB949A8EC0E0 |
:100B700082B3877E82BB959A45990CC08DEA8FBD62 |
:100B800089E485BD8CE087BB80916000811141DEE6 |
:100B900017B836C08DEA8FBD89E685BD88E075C07F |
:100BA0008DEA8FBD89E485BD8CE087BB459B11C074 |
:100BB00082B38F7C82BB939A80916000811129DE81 |
:100BC00082E087B94098809198008F5F8093980069 |
:100BD0004DC082B3877E82BB959A58C082B38F7C0A |
:100BE00082BB939A45990EC08DEA8FBD89E485BD7D |
:100BF0008AE087BB8091600081110BDE81E087B9BC |
:100C0000409AE1CF8DEA8FBD89E485BD8CE03DC07F |
:100C10008DEA8FBD89E485BD8AE087BB459B0AC00C |
:100C200082B3877D82BB949A809160008111F1DD4F |
:100C300017B8C8CF82B38F7C82BB939A27C082B388 |
:100C4000877D82BB949A45991BC08DEA8FBD89E64A |
:100C500085BD88E087BB81E084BD80916000811103 |
:100C6000D8DD82E087B9409A109298008091780090 |
:100C7000909179000196909379008093780006C056 |
:100C80008DEA8FBD89E485BD8AE087BB9798109275 |
:100C90006000FF91EF91BF91AF919F918F917F91F4 |
:100CA0006F915F914F913F912F910F900FBE0F90D9 |
:100CB0001F9018958091980099278230910551F1E5 |
:100CC000833091052CF4009769F00197B9F00895ED |
:100CD00084309105D1F1843091054CF1059709F4E8 |
:100CE00041C008958DEA8FBD89E685BD88E087BB48 |
:100CF00082B3877D82BB949A82E032C08DEA8FBD39 |
:100D000089E685BD88E087BB82B3877E82BB959AE2 |
:100D100081E018C08DEA8FBD89E485BD8CE087BB7A |
:100D200082B3877E82BB959A17B8409A08958DEA60 |
:100D30008FBD89E485BD8CE087BB82B38F7C82BB8D |
:100D4000939A82E087B9409808958DEA8FBD89E42F |
:100D500085BD8AE087BB82B38F7C82BB939A81E09A |
:100D600087B9E3CF8DEA8FBD89E485BD8AE087BB73 |
:100D700082B3877D82BB949A17B8E5CF0F931F93F8 |
:100D8000CF93DF938C01EB01009711F4672BB9F13E |
:100D90006EE070E081E090E037D0FC01892B71F1CA |
:100DA00080E88383209771F0D387C28781E88383AB |
:100DB0008091980390919903892B21F4F0939903E2 |
:100DC000E093980301151105C9F01187008783810D |
:100DD0008260838380919A0390919B03892B71F4A5 |
:100DE000F0939B03E0939A0380919C0390919D0361 |
:100DF000892B21F4F0939D03E0939C03CF01DF91B5 |
:100E0000CF911F910F9108950F931F93CF93DF936D |
:100E1000869F8001879F100D969F100D1124C80199 |
:100E20000DD0EC01009721F0A80160E070E0FCD04B |
:100E3000CE01DF91CF911F910F910895CF93DF9352 |
:100E4000AC01029710F442E050E020E030E0A091C5 |
:100E5000A003B091A103BD01F901109709F44CC0A2 |
:100E60008D919C9111978417950731F14817590777 |
:100E700038F42115310519F08217930708F49C0105 |
:100E8000FD01A281B381109759F721153105A1F118 |
:100E9000C901841B950B049708F4A901DB01E0E06C |
:100EA000F0E0109749F18D919C911197821793076B |
:100EB000F9F44217530779F4ED018A819B81309749 |
:100EC00019F09383828304C09093A1038093A003BD |
:100ED000CD0102964AC0241B350BFD01E20FF31F22 |
:100EE00041935193225030402D933C93CF013DC00C |
:100EF000FD01A281B381D5CF80919E0390919F0384 |
:100F0000892B41F4809172009091730090939F031C |
:100F100080939E03E0917000F0917100309741F44E |
:100F2000EDB7FEB78091740090917500E81BF90B46 |
:100F3000A0919E03B0919F039F012A1B3B0B241796 |
:100F4000350788F0CA0102962817390760F0CD01ED |
:100F5000840F951F029690939F0380939E034D9359 |
:100F60005D93CD0102C080E090E0DF91CF910895C4 |
:100F7000CF93DF93009709F454C0DC011297ED0181 |
:100F80001B821A828091A0039091A103009721F106 |
:100F9000FC0140E050E0EA17FB0718F1ED01FB838C |
:100FA000EA832D913C911197C20FD31FCE01029677 |
:100FB0008E179F0771F48A819B81280F391F2E5F3E |
:100FC0003F4F11963C932E9382819381FD01938331 |
:100FD00082834115510559F4B093A103A093A00356 |
:100FE00020C0AF010280F381E02D3097A1F6EA0125 |
:100FF000BB83AA83CA01029628813981820F931F7D |
:101000008A179B0771F48D919C911197280F391FB6 |
:101010002E5F3F4F39832883FD01828193819B831B |
:101020008A83DF91CF910895DC0101C06D93415017 |
:101030005040E0F70895991B79E004C0991F961776 |
:1010400008F0961B881F7A95C9F780950895AA1B0A |
:10105000BB1B51E107C0AA1FBB1FA617B70710F0A3 |
:10106000A61BB70B881F991F5A95A9F780959095D5 |
:10107000BC01CD010895A1E21A2EAA1BBB1BFD01E4 |
:101080000DC0AA1FBB1FEE1FFF1FA217B307E40767 |
:10109000F50720F0A21BB30BE40BF50B661F771FBF |
:1010A000881F991F1A9469F760957095809590959F |
:0A10B0009B01AC01BD01CF010895C2 |
:1010BA0001FF01010A00FF004D6F696E00014064E3 |
:0610CA000000A20320005B |
:00000001FF |
/tags/V0.31/Doku/BrushLess-Ctrl_16kHz_ADR1_V0_31.hex |
---|
0,0 → 1,286 |
:1000000012C05DC52AC029C0C3C5C5C426C025C04D |
:10001000B1C4F8C322C0EFC220C0BCC21EC01DC004 |
:10002000C1C561C51AC011241FBECFE5D4E0DEBF33 |
:10003000CDBF10E0A0E6B0E0E8EBF1E102C0059032 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73AC1D2CF20918200B6 |
:1000600080916100821710F4282FAB9A8091800054 |
:10007000909181008338910560F01BBC1ABC19BCBB |
:1000800018BC13BCAB9A01979093810080938000B9 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C109297004398F5 |
:1000F00085E090E09093830080938200AFDF57D635 |
:1001000088EC90E0DDD3C12FDD27D0938300C0932E |
:100110008200EE24FF248701EA14FB040C051D0570 |
:1001200078F480916600882311F43ED201C050D348 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E013D8A21A1C |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F020D6809159 |
:1001700099008F5F809399008091990066E0DAD7AB |
:1001800090939900AED3D0938300C093820066DF32 |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089540917A0050917B004115510510 |
:1001C00009F04BC080917900882371F090918800EC |
:1001D0008FEF989FC001112468EC70E0B7D770933F |
:1001E00085006093840041C080918E00882341F196 |
:1001F000209190003091910081E02D32380708F075 |
:100200009A01293C310510F028EC30E02B30310503 |
:1002100028F4509385004093840026C08CEF90E032 |
:10022000289FA001299F500D389F500D1124CA010D |
:10023000885D994064EB70E089D7CB01039610C0CC |
:100240008091840090918500009729F00197909308 |
:10025000850080938400AB9A08C080918803992719 |
:100260009093850080938400AB9880918400909156 |
:1002700085008F3F910539F030F08FEF90E090933B |
:10028000850080938400809184009927089580914F |
:100290008000909181009093780380937703809100 |
:1002A0007E00992790937A03809379038091700060 |
:1002B0009091710090937C0380937B0380919000D8 |
:1002C0009091910090937E0380937D030895CFE5F4 |
:1002D000D4E0DEBFCDBFEE2488E084BB85BB8AEBD3 |
:1002E00081BB80E882BB8EE087BB81E388BB5BD2A9 |
:1002F000CAD27894C0E0D0E0C130D10509F4979A11 |
:1003000086E990E0DDD297988AEF90E0D9D22196E5 |
:10031000C530D1058CF384EF91E0D2D244D2C3DE54 |
:1003200080E5DCD31AD385E690E0B6D286E690E08D |
:10033000B3D287E690E0B0D2EC018EEF90E0ACD281 |
:100340005C018DEE93E0A8D28C018EEE93E0A4D2F6 |
:100350006C01CE01AAD28823E1F3979A1092830010 |
:10036000109282007BDE88E080BF81E087B98AE05E |
:1003700090E092D2EC0181E090E090937A03809338 |
:100380007903109291001092900014DF99279093B6 |
:10039000830080938200809199008E1551F0109215 |
:1003A00062001092630082E390E076D2EC01E0906C |
:1003B00099008091820090918300892BC9F410925A |
:1003C000740010926300C80170D28823D9F0109293 |
:1003D0009700439881E08093620082B3877C82BB60 |
:1003E00082E08FBD81E485BD85B3817F85BB0AC076 |
:1003F00080916200882319F081E0809374008CED75 |
:1004000095E04AD280916200882321F01092830007 |
:100410001092820023DE809163008F5F80936300DF |
:10042000813009F0B2CF809162008111979AC501A5 |
:100430003CD2882339F182E390E02ED25C01809196 |
:100440007E00482F5527209180003091810042176F |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937E0080917E0090916100823428F01C |
:10047000915090936100AB9A05C09F3F19F09F5F28 |
:1004800090936100C80111D2882319F18AE090E0AD |
:1004900003D28C012091720030917300C901880F42 |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E04CD6709371006093700010927300DE |
:1004C0001092720080918E00882319F481E080934D |
:1004D0006000C601EAD1882321F08CED95E0DCD1E3 |
:1004E0006C01CE01E2D1882331F0809170009091AF |
:1004F0007100892B29F080917400882309F445CF7D |
:1005000021E0F22EF092620010929700439884E668 |
:1005100090E0C2D1EC0180917400882309F435CFBA |
:10052000AB98109274008AE0CFDD979A1092620027 |
:100530008091990081508093990081E090E09093A0 |
:100540008300809382008ADD88B18C7F88B9F09225 |
:10055000970088B18A6088B984E690E09DD1EC016B |
:10056000CE01A3D18823E1F38AE090E09093830049 |
:100570008093820073DD88EC90E08ED1EC01CE0197 |
:1005800094D18823E1F388EE93E086D1EC0197E0E3 |
:10059000E92EFBCE1F920F920FB60F9211240F90EF |
:1005A0000FBE0F901F9018955E9B24C0809166002F |
:1005B0008823E1F48091890090918A0001969093BC |
:1005C0008A0080938900FC01E556FD4FE081ED3003 |
:1005D00019F08436910539F410928A00109289003E |
:1005E00081E080936600589AECB9089510928A00D1 |
:1005F0001092890008951F920F920FB60F92112446 |
:100600008F938CB18093870080918700853F19F488 |
:100610001092670014C0809167008F5F809367001D |
:10062000813041F4809187008093880088EC80932A |
:10063000790005C0853618F084E6809367008F91B5 |
:100640000F900FBE0F901F901895AC01A0E0B0E086 |
:100650009D01A817B90748F4EBE9F2E08191280F52 |
:10066000311D1196A417B507C8F33F70FD01E5567B |
:10067000FD4FC90146E0969587954A95E1F7835C61 |
:1006800080831196FD01E556FD4F2F733070822F48 |
:10069000835C8083A456BD4F8DE08C9310926600DE |
:1006A00080919B028CB908951F93CF93DF93382FCD |
:1006B000EA01722F10E083E280939B0260939C0218 |
:1006C00030939D02A3E0B0E0772309F458C077236C |
:1006D00011F4972F07C0FE01E10FF11D1F5F9081FC |
:1006E000715011F4472F0EC0FE01E10FF11D1F5F85 |
:1006F0004081715039F0FE01E10FF11D1F5F6081F3 |
:10070000715001C0672FFD01E556FD4F892F869579 |
:100710008695835C80831196FD01E556FD4F892FF8 |
:1007200099278370907024E0880F991F2A95E1F72C |
:1007300055279A0194E0369527959A95E1F7822BF3 |
:10074000835C80831196FD01E556FD4F4F7050701C |
:10075000440F551F440F551F862F992756E0969535 |
:1007600087955A95E1F7842B835C80831196FD0170 |
:10077000E556FD4F6F73635C60831196A5CFCD0185 |
:1007800064DFDF91CF911F910895CF93C82F8A30F6 |
:1007900011F48DE0FADF5D9BFECFCCB980E090E0F4 |
:1007A000CF910895089588E18AB9599A579A89E1B5 |
:1007B00089B960E070E085EC93E05FD388EC90E06D |
:1007C0006BD0909300038093FF028AE28CB9089566 |
:1007D0008091FF029091000368D0882391F080916E |
:1007E0006600882371F022E245E653E060919A02A8 |
:1007F00084E45ADF82E390E04FD09093000380932B |
:10080000FF0208951F920F920FB60F9211248F933B |
:100810009F93809187038F5F8093870380918D00E2 |
:10082000815080938D008F3F39F583E080938D0058 |
:1008300080918B0090918C00019690938C00809316 |
:100840008B0080917A0090917B00009729F00197AE |
:1008500090937B0080937A0080918E00882329F00A |
:1008600080918E00815080938E0080917900882342 |
:1008700019F08150809379009F918F910F900FBE56 |
:100880000F901F90189582E083BF89B7816089BF60 |
:1008900089B7806489BF089520918B0030918C00C6 |
:1008A000280F391FC9010197089520918B003091BD |
:1008B0008C00821B930B892F9927807899270895A4 |
:1008C000CF93DF93E9DFEC01CE01EFDF8823E1F383 |
:1008D000DF91CF91089586EA86B987E087B9369A85 |
:1008E000089527B196E097B910BE83ED86B9349A82 |
:1008F00097B9369A349BFECF27B944B155B1440F0E |
:10090000551F440F551F493C510510F048EC50E06D |
:100910002091800030918100C90163E0880F991F08 |
:100920006A95E1F7821B930B840F951F23E0969540 |
:1009300087952A95E1F7909381008093800020911C |
:100940007F0033272817390720F480918000809397 |
:100950007F0016B888E080BF08958EB5806C8EBD8C |
:100960008EB580648EBD89B7806289BF89B7846087 |
:1009700089BF08951F920F920FB60F9211248F9383 |
:1009800080918F008F5F80938F008F910F900FBEAB |
:100990000F901F9018951F920F920FB60F9211246F |
:1009A0002F933F938F939F930EB406FE0FC0109228 |
:1009B0008F0086B597B590939300809392008EB583 |
:1009C0008F7B8EBD84E680938E0070C08EB5806470 |
:1009D0008EBD26B537B58091920090919300281B6B |
:1009E000390B80918F009927982F8827990F280F0E |
:1009F000391F689414F8369527951694E1F73093CB |
:100A00009500209394002851314030F488E191E022 |
:100A100090939500809394002091940030919500DC |
:100A2000285131403093950020939400809190009C |
:100A3000909191008217930730F4809190009091EB |
:100A4000910001960CC08091900090919100281720 |
:100A5000390748F48091900090919100019790930C |
:100A60009100809390002091900030919100C901F5 |
:100A7000880F991F880F991F880F991F821B930B4E |
:100A80002091940030919500820F931F23E096955A |
:100A900087952A95E1F79093950080939400909321 |
:100AA00091008093900081E0809360009F918F91EE |
:100AB0003F912F910F900FBE0F901F9018951F928E |
:100AC0000F920FB60F9211248F938AB78F7B8ABF34 |
:100AD0008F910F900FBE0F901F9018958E5F82B967 |
:100AE00085EC86BF08951F920F920FB60F921124C6 |
:100AF0008F939F9381B19927887F9070803891055B |
:100B0000E9F08138910534F40097B1F18036910510 |
:100B100079F035C0883B9105D9F0893B910524F4E3 |
:100B2000883A9105A9F02BC0883F910511F127C0A3 |
:100B300086B7806886BF1092960023C083B18093E9 |
:100B4000880384EF91E090937B0080937A000EC03D |
:100B500090919600992339F480917E0083B99F5F2C |
:100B60009093960003C08091610083B986B7806836 |
:100B700007C086B7806986BF86B7806986BF85EC67 |
:100B800086BF9F918F910F900FBE0F901F90189569 |
:100B90001F920F920FB60F9211240F900FBE0F905D |
:100BA0001F9018951F920F920FB60F9211241F934A |
:100BB0002F933F934F935F936F937F938F939F9365 |
:100BC000AF93BF93CF93EF93FF93459B02C011E088 |
:100BD00001C010E08091990099278230910509F4B5 |
:100BE00050C0833091052CF4009779F0019739F1CA |
:100BF000BFC08430910509F478C0843091050CF4AD |
:100C00005AC0059709F48BC0B3C082EA8FBD81E654 |
:100C100085BD88E087BB112369F082B3877E82BBE4 |
:100C2000959AC1E0C4BD8091600081115ADE409860 |
:100C3000C7B91BC082B3877D82BB949A99C082B327 |
:100C4000877E82BB959A1123B1F482EA8FBD81E43D |
:100C500085BD8CE087BB81E084BD809160008111FF |
:100C600040DE17B988B1836088B9809199008F5FA1 |
:100C7000809399006DC082EA8FBD81E685BD88E0D2 |
:100C800076C082EA8FBD81E485BD8CE087BB1123ED |
:100C900069F082B38F7C82BB939A81E084BD80919E |
:100CA000600081111EDE82E087B932C082B3877E88 |
:100CB00082BB959A5DC082B38F7C82BB939A1123CD |
:100CC00071F482EA8FBD81E485BD8AE087BBC1E013 |
:100CD000C4BD80916000811104DEC7B9C3CF82EA30 |
:100CE0008FBD81E485BD8CE042C082EA8FBD81E486 |
:100CF00085BD8AE087BB112369F082B3877D82BB03 |
:100D0000949A81E084BD809160008111EADD17B87A |
:100D10004098ABCF82B38F7C82BB939A29C082B3B9 |
:100D2000877D82BB949A1123E9F482EA8FBD81E624 |
:100D300085BD88E087BB81E084BD80916000811122 |
:100D4000D0DD82E087B988B1836088B910939900BB |
:100D5000809172009091730001969093730080933C |
:100D6000720006C082EA8FBD81E485BD8AE087BB40 |
:100D7000459903C0112309F028CF459B03C01123D7 |
:100D800009F423CF10926000FF91EF91CF91BF91B2 |
:100D9000AF919F918F917F916F915F914F913F9113 |
:100DA0002F911F910F900FBE0F901F90189580915B |
:100DB000990099278230910551F1833091052CF4E7 |
:100DC000009769F00197B9F0089584309105E1F139 |
:100DD000843091055CF1059709F443C0089582EAD7 |
:100DE0008FBD81E685BD88E087BB82B3877D82BBEE |
:100DF000949A82E034C082EA8FBD81E685BD88E0A6 |
:100E000087BB82B3877E82BB959A81E01AC082EA53 |
:100E10008FBD81E485BD8CE087BB82B3877E82BBBA |
:100E2000959A17B888B1836088B9089582EA8FBD12 |
:100E300081E485BD8CE087BB82B38F7C82BB939AB3 |
:100E400082E087B94098089582EA8FBD81E485BD2C |
:100E50008AE087BB82B38F7C82BB939A81E087B99B |
:100E6000E1CF82EA8FBD81E485BD8AE087BB82B392 |
:100E7000877D82BB949A17B8E5CF0F931F93CF93CA |
:100E8000DF938C01EB01009711F4672BB9F16EE051 |
:100E900070E081E090E037D0FC01892B71F180E8AF |
:100EA0008383209771F0D387C28781E88383809101 |
:100EB000890390918A03892B21F4F0938A03E093AC |
:100EC000890301151105C9F01187008783818260AC |
:100ED000838380918B0390918C03892B71F4F09321 |
:100EE0008C03E0938B0380918D0390918E03892B6B |
:100EF00021F4F0938E03E0938D03CF01DF91CF9126 |
:100F00001F910F9108950F931F93CF93DF93869FA7 |
:100F10008001879F100D969F100D1124C8010DD0E0 |
:100F2000EC01009721F0A80160E070E0FCD0CE0158 |
:100F3000DF91CF911F910F910895CF93DF93AC0173 |
:100F4000029710F442E050E020E030E0A0919103DD |
:100F5000B0919203BD01F901109709F44CC08D9135 |
:100F60009C9111978417950731F14817590738F468 |
:100F70002115310519F08217930708F49C01FD0132 |
:100F8000A281B381109759F721153105A1F1C9014B |
:100F9000841B950B049708F4A901DB01E0E0F0E065 |
:100FA000109749F18D919C91119782179307F9F44D |
:100FB0004217530779F4ED018A819B81309719F02C |
:100FC0009383828304C09093920380939103CD0115 |
:100FD00002964AC0241B350BFD01E20FF31F41931B |
:100FE0005193225030402D933C93CF013DC0FD01E1 |
:100FF000A281B381D5CF80918F0390919003892BEB |
:1010000041F480916B0090916C00909390038093D9 |
:101010008F03E0916900F0916A00309741F4EDB7D9 |
:10102000FEB780916D0090916E00E81BF90BA091C6 |
:101030008F03B09190039F012A1B3B0B24173507A8 |
:1010400088F0CA0102962817390760F0CD01840F95 |
:10105000951F02969093900380938F034D935D9319 |
:10106000CD0102C080E090E0DF91CF910895CF9351 |
:10107000DF93009709F454C0DC011297ED011B8245 |
:101080001A828091910390919203009721F1FC01C3 |
:1010900040E050E0EA17FB0718F1ED01FB83EA831B |
:1010A0002D913C911197C20FD31FCE0102968E173E |
:1010B0009F0771F48A819B81280F391F2E5F3F4F54 |
:1010C00011963C932E9382819381FD0193838283B9 |
:1010D0004115510559F4B0939203A093910320C098 |
:1010E000AF010280F381E02D3097A1F6EA01BB83C6 |
:1010F000AA83CA01029628813981820F931F8A1719 |
:101100009B0771F48D919C911197280F391F2E5FC9 |
:101110003F4F39832883FD01828193819B838A839A |
:10112000DF91CF910895DC0101C06D934150504093 |
:10113000E0F70895991B79E004C0991F961708F00D |
:10114000961B881F7A95C9F780950895AA1BBB1B2B |
:1011500051E107C0AA1FBB1FA617B70710F0A61BB7 |
:10116000B70B881F991F5A95A9F780959095BC01D8 |
:10117000CD010895A1E21A2EAA1BBB1BFD010DC0D3 |
:10118000AA1FBB1FEE1FFF1FA217B307E407F50737 |
:1011900020F0A21BB30BE40BF50B661F771F881F13 |
:1011A000991F1A9469F760957095809590959B01A9 |
:0811B000AC01BD01CF0108955F |
:1011B80001FF01010A00016464000093032000009C |
:00000001FF |
/tags/V0.31/Doku/BrushLess-Ctrl_16kHz_ADR2_V0_31.hex |
---|
0,0 → 1,286 |
:1000000012C05DC52AC029C0C3C5C5C426C025C04D |
:10001000B1C4F8C322C0EFC220C0BCC21EC01DC004 |
:10002000C1C561C51AC011241FBECFE5D4E0DEBF33 |
:10003000CDBF10E0A0E6B0E0E8EBF1E102C0059032 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73AC1D2CF20918200B6 |
:1000600080916100821710F4282FAB9A8091800054 |
:10007000909181008338910560F01BBC1ABC19BCBB |
:1000800018BC13BCAB9A01979093810080938000B9 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C109297004398F5 |
:1000F00085E090E09093830080938200AFDF57D635 |
:1001000088EC90E0DDD3C12FDD27D0938300C0932E |
:100110008200EE24FF248701EA14FB040C051D0570 |
:1001200078F480916600882311F43ED201C050D348 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E013D8A21A1C |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F020D6809159 |
:1001700099008F5F809399008091990066E0DAD7AB |
:1001800090939900AED3D0938300C093820066DF32 |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089540917A0050917B004115510510 |
:1001C00009F04BC080917900882371F090918800EC |
:1001D0008FEF989FC001112468EC70E0B7D770933F |
:1001E00085006093840041C080918E00882341F196 |
:1001F000209190003091910081E02D32380708F075 |
:100200009A01293C310510F028EC30E02B30310503 |
:1002100028F4509385004093840026C08CEF90E032 |
:10022000289FA001299F500D389F500D1124CA010D |
:10023000885D994064EB70E089D7CB01039610C0CC |
:100240008091840090918500009729F00197909308 |
:10025000850080938400AB9A08C080918803992719 |
:100260009093850080938400AB9880918400909156 |
:1002700085008F3F910539F030F08FEF90E090933B |
:10028000850080938400809184009927089580914F |
:100290008000909181009093780380937703809100 |
:1002A0007E00992790937A03809379038091700060 |
:1002B0009091710090937C0380937B0380919000D8 |
:1002C0009091910090937E0380937D030895CFE5F4 |
:1002D000D4E0DEBFCDBFEE2488E084BB85BB8AEBD3 |
:1002E00081BB80E882BB8EE087BB81E388BB5BD2A9 |
:1002F000CAD27894C0E0D0E0C230D10509F4979A10 |
:1003000086E990E0DDD297988AEF90E0D9D22196E5 |
:10031000C530D1058CF384EF91E0D2D244D2C3DE54 |
:1003200080E5DCD31AD385E690E0B6D286E690E08D |
:10033000B3D287E690E0B0D2EC018EEF90E0ACD281 |
:100340005C018DEE93E0A8D28C018EEE93E0A4D2F6 |
:100350006C01CE01AAD28823E1F3979A1092830010 |
:10036000109282007BDE88E080BF81E087B98AE05E |
:1003700090E092D2EC0181E090E090937A03809338 |
:100380007903109291001092900014DF99279093B6 |
:10039000830080938200809199008E1551F0109215 |
:1003A00062001092630082E390E076D2EC01E0906C |
:1003B00099008091820090918300892BC9F410925A |
:1003C000740010926300C80170D28823D9F0109293 |
:1003D0009700439881E08093620082B3877C82BB60 |
:1003E00082E08FBD81E485BD85B3817F85BB0AC076 |
:1003F00080916200882319F081E0809374008CED75 |
:1004000095E04AD280916200882321F01092830007 |
:100410001092820023DE809163008F5F80936300DF |
:10042000813009F0B2CF809162008111979AC501A5 |
:100430003CD2882339F182E390E02ED25C01809196 |
:100440007E00482F5527209180003091810042176F |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937E0080917E0090916100823428F01C |
:10047000915090936100AB9A05C09F3F19F09F5F28 |
:1004800090936100C80111D2882319F18AE090E0AD |
:1004900003D28C012091720030917300C901880F42 |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E04CD6709371006093700010927300DE |
:1004C0001092720080918E00882319F481E080934D |
:1004D0006000C601EAD1882321F08CED95E0DCD1E3 |
:1004E0006C01CE01E2D1882331F0809170009091AF |
:1004F0007100892B29F080917400882309F445CF7D |
:1005000021E0F22EF092620010929700439884E668 |
:1005100090E0C2D1EC0180917400882309F435CFBA |
:10052000AB98109274008AE0CFDD979A1092620027 |
:100530008091990081508093990081E090E09093A0 |
:100540008300809382008ADD88B18C7F88B9F09225 |
:10055000970088B18A6088B984E690E09DD1EC016B |
:10056000CE01A3D18823E1F38AE090E09093830049 |
:100570008093820073DD88EC90E08ED1EC01CE0197 |
:1005800094D18823E1F388EE93E086D1EC0197E0E3 |
:10059000E92EFBCE1F920F920FB60F9211240F90EF |
:1005A0000FBE0F901F9018955E9B24C0809166002F |
:1005B0008823E1F48091890090918A0001969093BC |
:1005C0008A0080938900FC01E556FD4FE081ED3003 |
:1005D00019F08436910539F410928A00109289003E |
:1005E00081E080936600589AECB9089510928A00D1 |
:1005F0001092890008951F920F920FB60F92112446 |
:100600008F938CB18093870080918700853F19F488 |
:100610001092670014C0809167008F5F809367001D |
:10062000823041F4809187008093880088EC809329 |
:10063000790005C0853618F084E6809367008F91B5 |
:100640000F900FBE0F901F901895AC01A0E0B0E086 |
:100650009D01A817B90748F4EBE9F2E08191280F52 |
:10066000311D1196A417B507C8F33F70FD01E5567B |
:10067000FD4FC90146E0969587954A95E1F7835C61 |
:1006800080831196FD01E556FD4F2F733070822F48 |
:10069000835C8083A456BD4F8DE08C9310926600DE |
:1006A00080919B028CB908951F93CF93DF93382FCD |
:1006B000EA01722F10E083E280939B0260939C0218 |
:1006C00030939D02A3E0B0E0772309F458C077236C |
:1006D00011F4972F07C0FE01E10FF11D1F5F9081FC |
:1006E000715011F4472F0EC0FE01E10FF11D1F5F85 |
:1006F0004081715039F0FE01E10FF11D1F5F6081F3 |
:10070000715001C0672FFD01E556FD4F892F869579 |
:100710008695835C80831196FD01E556FD4F892FF8 |
:1007200099278370907024E0880F991F2A95E1F72C |
:1007300055279A0194E0369527959A95E1F7822BF3 |
:10074000835C80831196FD01E556FD4F4F7050701C |
:10075000440F551F440F551F862F992756E0969535 |
:1007600087955A95E1F7842B835C80831196FD0170 |
:10077000E556FD4F6F73635C60831196A5CFCD0185 |
:1007800064DFDF91CF911F910895CF93C82F8A30F6 |
:1007900011F48DE0FADF5D9BFECFCCB980E090E0F4 |
:1007A000CF910895089588E18AB9599A579A89E1B5 |
:1007B00089B960E070E085EC93E05FD388EC90E06D |
:1007C0006BD0909300038093FF028AE28CB9089566 |
:1007D0008091FF029091000368D0882391F080916E |
:1007E0006600882371F022E245E653E060919A02A8 |
:1007F00084E45ADF82E390E04FD09093000380932B |
:10080000FF0208951F920F920FB60F9211248F933B |
:100810009F93809187038F5F8093870380918D00E2 |
:10082000815080938D008F3F39F583E080938D0058 |
:1008300080918B0090918C00019690938C00809316 |
:100840008B0080917A0090917B00009729F00197AE |
:1008500090937B0080937A0080918E00882329F00A |
:1008600080918E00815080938E0080917900882342 |
:1008700019F08150809379009F918F910F900FBE56 |
:100880000F901F90189582E083BF89B7816089BF60 |
:1008900089B7806489BF089520918B0030918C00C6 |
:1008A000280F391FC9010197089520918B003091BD |
:1008B0008C00821B930B892F9927807899270895A4 |
:1008C000CF93DF93E9DFEC01CE01EFDF8823E1F383 |
:1008D000DF91CF91089586EA86B987E087B9369A85 |
:1008E000089527B196E097B910BE83ED86B9349A82 |
:1008F00097B9369A349BFECF27B944B155B1440F0E |
:10090000551F440F551F493C510510F048EC50E06D |
:100910002091800030918100C90163E0880F991F08 |
:100920006A95E1F7821B930B840F951F23E0969540 |
:1009300087952A95E1F7909381008093800020911C |
:100940007F0033272817390720F480918000809397 |
:100950007F0016B888E080BF08958EB5806C8EBD8C |
:100960008EB580648EBD89B7806289BF89B7846087 |
:1009700089BF08951F920F920FB60F9211248F9383 |
:1009800080918F008F5F80938F008F910F900FBEAB |
:100990000F901F9018951F920F920FB60F9211246F |
:1009A0002F933F938F939F930EB406FE0FC0109228 |
:1009B0008F0086B597B590939300809392008EB583 |
:1009C0008F7B8EBD84E680938E0070C08EB5806470 |
:1009D0008EBD26B537B58091920090919300281B6B |
:1009E000390B80918F009927982F8827990F280F0E |
:1009F000391F689414F8369527951694E1F73093CB |
:100A00009500209394002851314030F488E191E022 |
:100A100090939500809394002091940030919500DC |
:100A2000285131403093950020939400809190009C |
:100A3000909191008217930730F4809190009091EB |
:100A4000910001960CC08091900090919100281720 |
:100A5000390748F48091900090919100019790930C |
:100A60009100809390002091900030919100C901F5 |
:100A7000880F991F880F991F880F991F821B930B4E |
:100A80002091940030919500820F931F23E096955A |
:100A900087952A95E1F79093950080939400909321 |
:100AA00091008093900081E0809360009F918F91EE |
:100AB0003F912F910F900FBE0F901F9018951F928E |
:100AC0000F920FB60F9211248F938AB78F7B8ABF34 |
:100AD0008F910F900FBE0F901F9018958C5F82B969 |
:100AE00085EC86BF08951F920F920FB60F921124C6 |
:100AF0008F939F9381B19927887F9070803891055B |
:100B0000E9F08138910534F40097B1F18036910510 |
:100B100079F035C0883B9105D9F0893B910524F4E3 |
:100B2000883A9105A9F02BC0883F910511F127C0A3 |
:100B300086B7806886BF1092960023C083B18093E9 |
:100B4000880384EF91E090937B0080937A000EC03D |
:100B500090919600992339F480917E0083B99F5F2C |
:100B60009093960003C08091610083B986B7806836 |
:100B700007C086B7806986BF86B7806986BF85EC67 |
:100B800086BF9F918F910F900FBE0F901F90189569 |
:100B90001F920F920FB60F9211240F900FBE0F905D |
:100BA0001F9018951F920F920FB60F9211241F934A |
:100BB0002F933F934F935F936F937F938F939F9365 |
:100BC000AF93BF93CF93EF93FF93459B02C011E088 |
:100BD00001C010E08091990099278230910509F4B5 |
:100BE00050C0833091052CF4009779F0019739F1CA |
:100BF000BFC08430910509F478C0843091050CF4AD |
:100C00005AC0059709F48BC0B3C082EA8FBD81E654 |
:100C100085BD88E087BB112369F082B3877E82BBE4 |
:100C2000959AC1E0C4BD8091600081115ADE409860 |
:100C3000C7B91BC082B3877D82BB949A99C082B327 |
:100C4000877E82BB959A1123B1F482EA8FBD81E43D |
:100C500085BD8CE087BB81E084BD809160008111FF |
:100C600040DE17B988B1836088B9809199008F5FA1 |
:100C7000809399006DC082EA8FBD81E685BD88E0D2 |
:100C800076C082EA8FBD81E485BD8CE087BB1123ED |
:100C900069F082B38F7C82BB939A81E084BD80919E |
:100CA000600081111EDE82E087B932C082B3877E88 |
:100CB00082BB959A5DC082B38F7C82BB939A1123CD |
:100CC00071F482EA8FBD81E485BD8AE087BBC1E013 |
:100CD000C4BD80916000811104DEC7B9C3CF82EA30 |
:100CE0008FBD81E485BD8CE042C082EA8FBD81E486 |
:100CF00085BD8AE087BB112369F082B3877D82BB03 |
:100D0000949A81E084BD809160008111EADD17B87A |
:100D10004098ABCF82B38F7C82BB939A29C082B3B9 |
:100D2000877D82BB949A1123E9F482EA8FBD81E624 |
:100D300085BD88E087BB81E084BD80916000811122 |
:100D4000D0DD82E087B988B1836088B910939900BB |
:100D5000809172009091730001969093730080933C |
:100D6000720006C082EA8FBD81E485BD8AE087BB40 |
:100D7000459903C0112309F028CF459B03C01123D7 |
:100D800009F423CF10926000FF91EF91CF91BF91B2 |
:100D9000AF919F918F917F916F915F914F913F9113 |
:100DA0002F911F910F900FBE0F901F90189580915B |
:100DB000990099278230910551F1833091052CF4E7 |
:100DC000009769F00197B9F0089584309105E1F139 |
:100DD000843091055CF1059709F443C0089582EAD7 |
:100DE0008FBD81E685BD88E087BB82B3877D82BBEE |
:100DF000949A82E034C082EA8FBD81E685BD88E0A6 |
:100E000087BB82B3877E82BB959A81E01AC082EA53 |
:100E10008FBD81E485BD8CE087BB82B3877E82BBBA |
:100E2000959A17B888B1836088B9089582EA8FBD12 |
:100E300081E485BD8CE087BB82B38F7C82BB939AB3 |
:100E400082E087B94098089582EA8FBD81E485BD2C |
:100E50008AE087BB82B38F7C82BB939A81E087B99B |
:100E6000E1CF82EA8FBD81E485BD8AE087BB82B392 |
:100E7000877D82BB949A17B8E5CF0F931F93CF93CA |
:100E8000DF938C01EB01009711F4672BB9F16EE051 |
:100E900070E081E090E037D0FC01892B71F180E8AF |
:100EA0008383209771F0D387C28781E88383809101 |
:100EB000890390918A03892B21F4F0938A03E093AC |
:100EC000890301151105C9F01187008783818260AC |
:100ED000838380918B0390918C03892B71F4F09321 |
:100EE0008C03E0938B0380918D0390918E03892B6B |
:100EF00021F4F0938E03E0938D03CF01DF91CF9126 |
:100F00001F910F9108950F931F93CF93DF93869FA7 |
:100F10008001879F100D969F100D1124C8010DD0E0 |
:100F2000EC01009721F0A80160E070E0FCD0CE0158 |
:100F3000DF91CF911F910F910895CF93DF93AC0173 |
:100F4000029710F442E050E020E030E0A0919103DD |
:100F5000B0919203BD01F901109709F44CC08D9135 |
:100F60009C9111978417950731F14817590738F468 |
:100F70002115310519F08217930708F49C01FD0132 |
:100F8000A281B381109759F721153105A1F1C9014B |
:100F9000841B950B049708F4A901DB01E0E0F0E065 |
:100FA000109749F18D919C91119782179307F9F44D |
:100FB0004217530779F4ED018A819B81309719F02C |
:100FC0009383828304C09093920380939103CD0115 |
:100FD00002964AC0241B350BFD01E20FF31F41931B |
:100FE0005193225030402D933C93CF013DC0FD01E1 |
:100FF000A281B381D5CF80918F0390919003892BEB |
:1010000041F480916B0090916C00909390038093D9 |
:101010008F03E0916900F0916A00309741F4EDB7D9 |
:10102000FEB780916D0090916E00E81BF90BA091C6 |
:101030008F03B09190039F012A1B3B0B24173507A8 |
:1010400088F0CA0102962817390760F0CD01840F95 |
:10105000951F02969093900380938F034D935D9319 |
:10106000CD0102C080E090E0DF91CF910895CF9351 |
:10107000DF93009709F454C0DC011297ED011B8245 |
:101080001A828091910390919203009721F1FC01C3 |
:1010900040E050E0EA17FB0718F1ED01FB83EA831B |
:1010A0002D913C911197C20FD31FCE0102968E173E |
:1010B0009F0771F48A819B81280F391F2E5F3F4F54 |
:1010C00011963C932E9382819381FD0193838283B9 |
:1010D0004115510559F4B0939203A093910320C098 |
:1010E000AF010280F381E02D3097A1F6EA01BB83C6 |
:1010F000AA83CA01029628813981820F931F8A1719 |
:101100009B0771F48D919C911197280F391F2E5FC9 |
:101110003F4F39832883FD01828193819B838A839A |
:10112000DF91CF910895DC0101C06D934150504093 |
:10113000E0F70895991B79E004C0991F961708F00D |
:10114000961B881F7A95C9F780950895AA1BBB1B2B |
:1011500051E107C0AA1FBB1FA617B70710F0A61BB7 |
:10116000B70B881F991F5A95A9F780959095BC01D8 |
:10117000CD010895A1E21A2EAA1BBB1BFD010DC0D3 |
:10118000AA1FBB1FEE1FFF1FA217B307E407F50737 |
:1011900020F0A21BB30BE40BF50B661F771F881F13 |
:1011A000991F1A9469F760957095809590959B01A9 |
:0811B000AC01BD01CF0108955F |
:1011B80001FF01010A00016464000093032000009C |
:00000001FF |
/tags/V0.31/Doku/BrushLess-Ctrl_16kHz_ADR3_V0_31.hex |
---|
0,0 → 1,286 |
:1000000012C05DC52AC029C0C3C5C5C426C025C04D |
:10001000B1C4F8C322C0EFC220C0BCC21EC01DC004 |
:10002000C1C561C51AC011241FBECFE5D4E0DEBF33 |
:10003000CDBF10E0A0E6B0E0E8EBF1E102C0059032 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73AC1D2CF20918200B6 |
:1000600080916100821710F4282FAB9A8091800054 |
:10007000909181008338910560F01BBC1ABC19BCBB |
:1000800018BC13BCAB9A01979093810080938000B9 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C109297004398F5 |
:1000F00085E090E09093830080938200AFDF57D635 |
:1001000088EC90E0DDD3C12FDD27D0938300C0932E |
:100110008200EE24FF248701EA14FB040C051D0570 |
:1001200078F480916600882311F43ED201C050D348 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E013D8A21A1C |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F020D6809159 |
:1001700099008F5F809399008091990066E0DAD7AB |
:1001800090939900AED3D0938300C093820066DF32 |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089540917A0050917B004115510510 |
:1001C00009F04BC080917900882371F090918800EC |
:1001D0008FEF989FC001112468EC70E0B7D770933F |
:1001E00085006093840041C080918E00882341F196 |
:1001F000209190003091910081E02D32380708F075 |
:100200009A01293C310510F028EC30E02B30310503 |
:1002100028F4509385004093840026C08CEF90E032 |
:10022000289FA001299F500D389F500D1124CA010D |
:10023000885D994064EB70E089D7CB01039610C0CC |
:100240008091840090918500009729F00197909308 |
:10025000850080938400AB9A08C080918803992719 |
:100260009093850080938400AB9880918400909156 |
:1002700085008F3F910539F030F08FEF90E090933B |
:10028000850080938400809184009927089580914F |
:100290008000909181009093780380937703809100 |
:1002A0007E00992790937A03809379038091700060 |
:1002B0009091710090937C0380937B0380919000D8 |
:1002C0009091910090937E0380937D030895CFE5F4 |
:1002D000D4E0DEBFCDBFEE2488E084BB85BB8AEBD3 |
:1002E00081BB80E882BB8EE087BB81E388BB5BD2A9 |
:1002F000CAD27894C0E0D0E0C330D10509F4979A0F |
:1003000086E990E0DDD297988AEF90E0D9D22196E5 |
:10031000C530D1058CF384EF91E0D2D244D2C3DE54 |
:1003200080E5DCD31AD385E690E0B6D286E690E08D |
:10033000B3D287E690E0B0D2EC018EEF90E0ACD281 |
:100340005C018DEE93E0A8D28C018EEE93E0A4D2F6 |
:100350006C01CE01AAD28823E1F3979A1092830010 |
:10036000109282007BDE88E080BF81E087B98AE05E |
:1003700090E092D2EC0181E090E090937A03809338 |
:100380007903109291001092900014DF99279093B6 |
:10039000830080938200809199008E1551F0109215 |
:1003A00062001092630082E390E076D2EC01E0906C |
:1003B00099008091820090918300892BC9F410925A |
:1003C000740010926300C80170D28823D9F0109293 |
:1003D0009700439881E08093620082B3877C82BB60 |
:1003E00082E08FBD81E485BD85B3817F85BB0AC076 |
:1003F00080916200882319F081E0809374008CED75 |
:1004000095E04AD280916200882321F01092830007 |
:100410001092820023DE809163008F5F80936300DF |
:10042000813009F0B2CF809162008111979AC501A5 |
:100430003CD2882339F182E390E02ED25C01809196 |
:100440007E00482F5527209180003091810042176F |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937E0080917E0090916100823428F01C |
:10047000915090936100AB9A05C09F3F19F09F5F28 |
:1004800090936100C80111D2882319F18AE090E0AD |
:1004900003D28C012091720030917300C901880F42 |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E04CD6709371006093700010927300DE |
:1004C0001092720080918E00882319F481E080934D |
:1004D0006000C601EAD1882321F08CED95E0DCD1E3 |
:1004E0006C01CE01E2D1882331F0809170009091AF |
:1004F0007100892B29F080917400882309F445CF7D |
:1005000021E0F22EF092620010929700439884E668 |
:1005100090E0C2D1EC0180917400882309F435CFBA |
:10052000AB98109274008AE0CFDD979A1092620027 |
:100530008091990081508093990081E090E09093A0 |
:100540008300809382008ADD88B18C7F88B9F09225 |
:10055000970088B18A6088B984E690E09DD1EC016B |
:10056000CE01A3D18823E1F38AE090E09093830049 |
:100570008093820073DD88EC90E08ED1EC01CE0197 |
:1005800094D18823E1F388EE93E086D1EC0197E0E3 |
:10059000E92EFBCE1F920F920FB60F9211240F90EF |
:1005A0000FBE0F901F9018955E9B24C0809166002F |
:1005B0008823E1F48091890090918A0001969093BC |
:1005C0008A0080938900FC01E556FD4FE081ED3003 |
:1005D00019F08436910539F410928A00109289003E |
:1005E00081E080936600589AECB9089510928A00D1 |
:1005F0001092890008951F920F920FB60F92112446 |
:100600008F938CB18093870080918700853F19F488 |
:100610001092670014C0809167008F5F809367001D |
:10062000833041F4809187008093880088EC809328 |
:10063000790005C0853618F084E6809367008F91B5 |
:100640000F900FBE0F901F901895AC01A0E0B0E086 |
:100650009D01A817B90748F4EBE9F2E08191280F52 |
:10066000311D1196A417B507C8F33F70FD01E5567B |
:10067000FD4FC90146E0969587954A95E1F7835C61 |
:1006800080831196FD01E556FD4F2F733070822F48 |
:10069000835C8083A456BD4F8DE08C9310926600DE |
:1006A00080919B028CB908951F93CF93DF93382FCD |
:1006B000EA01722F10E083E280939B0260939C0218 |
:1006C00030939D02A3E0B0E0772309F458C077236C |
:1006D00011F4972F07C0FE01E10FF11D1F5F9081FC |
:1006E000715011F4472F0EC0FE01E10FF11D1F5F85 |
:1006F0004081715039F0FE01E10FF11D1F5F6081F3 |
:10070000715001C0672FFD01E556FD4F892F869579 |
:100710008695835C80831196FD01E556FD4F892FF8 |
:1007200099278370907024E0880F991F2A95E1F72C |
:1007300055279A0194E0369527959A95E1F7822BF3 |
:10074000835C80831196FD01E556FD4F4F7050701C |
:10075000440F551F440F551F862F992756E0969535 |
:1007600087955A95E1F7842B835C80831196FD0170 |
:10077000E556FD4F6F73635C60831196A5CFCD0185 |
:1007800064DFDF91CF911F910895CF93C82F8A30F6 |
:1007900011F48DE0FADF5D9BFECFCCB980E090E0F4 |
:1007A000CF910895089588E18AB9599A579A89E1B5 |
:1007B00089B960E070E085EC93E05FD388EC90E06D |
:1007C0006BD0909300038093FF028AE28CB9089566 |
:1007D0008091FF029091000368D0882391F080916E |
:1007E0006600882371F022E245E653E060919A02A8 |
:1007F00084E45ADF82E390E04FD09093000380932B |
:10080000FF0208951F920F920FB60F9211248F933B |
:100810009F93809187038F5F8093870380918D00E2 |
:10082000815080938D008F3F39F583E080938D0058 |
:1008300080918B0090918C00019690938C00809316 |
:100840008B0080917A0090917B00009729F00197AE |
:1008500090937B0080937A0080918E00882329F00A |
:1008600080918E00815080938E0080917900882342 |
:1008700019F08150809379009F918F910F900FBE56 |
:100880000F901F90189582E083BF89B7816089BF60 |
:1008900089B7806489BF089520918B0030918C00C6 |
:1008A000280F391FC9010197089520918B003091BD |
:1008B0008C00821B930B892F9927807899270895A4 |
:1008C000CF93DF93E9DFEC01CE01EFDF8823E1F383 |
:1008D000DF91CF91089586EA86B987E087B9369A85 |
:1008E000089527B196E097B910BE83ED86B9349A82 |
:1008F00097B9369A349BFECF27B944B155B1440F0E |
:10090000551F440F551F493C510510F048EC50E06D |
:100910002091800030918100C90163E0880F991F08 |
:100920006A95E1F7821B930B840F951F23E0969540 |
:1009300087952A95E1F7909381008093800020911C |
:100940007F0033272817390720F480918000809397 |
:100950007F0016B888E080BF08958EB5806C8EBD8C |
:100960008EB580648EBD89B7806289BF89B7846087 |
:1009700089BF08951F920F920FB60F9211248F9383 |
:1009800080918F008F5F80938F008F910F900FBEAB |
:100990000F901F9018951F920F920FB60F9211246F |
:1009A0002F933F938F939F930EB406FE0FC0109228 |
:1009B0008F0086B597B590939300809392008EB583 |
:1009C0008F7B8EBD84E680938E0070C08EB5806470 |
:1009D0008EBD26B537B58091920090919300281B6B |
:1009E000390B80918F009927982F8827990F280F0E |
:1009F000391F689414F8369527951694E1F73093CB |
:100A00009500209394002851314030F488E191E022 |
:100A100090939500809394002091940030919500DC |
:100A2000285131403093950020939400809190009C |
:100A3000909191008217930730F4809190009091EB |
:100A4000910001960CC08091900090919100281720 |
:100A5000390748F48091900090919100019790930C |
:100A60009100809390002091900030919100C901F5 |
:100A7000880F991F880F991F880F991F821B930B4E |
:100A80002091940030919500820F931F23E096955A |
:100A900087952A95E1F79093950080939400909321 |
:100AA00091008093900081E0809360009F918F91EE |
:100AB0003F912F910F900FBE0F901F9018951F928E |
:100AC0000F920FB60F9211248F938AB78F7B8ABF34 |
:100AD0008F910F900FBE0F901F9018958A5F82B96B |
:100AE00085EC86BF08951F920F920FB60F921124C6 |
:100AF0008F939F9381B19927887F9070803891055B |
:100B0000E9F08138910534F40097B1F18036910510 |
:100B100079F035C0883B9105D9F0893B910524F4E3 |
:100B2000883A9105A9F02BC0883F910511F127C0A3 |
:100B300086B7806886BF1092960023C083B18093E9 |
:100B4000880384EF91E090937B0080937A000EC03D |
:100B500090919600992339F480917E0083B99F5F2C |
:100B60009093960003C08091610083B986B7806836 |
:100B700007C086B7806986BF86B7806986BF85EC67 |
:100B800086BF9F918F910F900FBE0F901F90189569 |
:100B90001F920F920FB60F9211240F900FBE0F905D |
:100BA0001F9018951F920F920FB60F9211241F934A |
:100BB0002F933F934F935F936F937F938F939F9365 |
:100BC000AF93BF93CF93EF93FF93459B02C011E088 |
:100BD00001C010E08091990099278230910509F4B5 |
:100BE00050C0833091052CF4009779F0019739F1CA |
:100BF000BFC08430910509F478C0843091050CF4AD |
:100C00005AC0059709F48BC0B3C082EA8FBD81E654 |
:100C100085BD88E087BB112369F082B3877E82BBE4 |
:100C2000959AC1E0C4BD8091600081115ADE409860 |
:100C3000C7B91BC082B3877D82BB949A99C082B327 |
:100C4000877E82BB959A1123B1F482EA8FBD81E43D |
:100C500085BD8CE087BB81E084BD809160008111FF |
:100C600040DE17B988B1836088B9809199008F5FA1 |
:100C7000809399006DC082EA8FBD81E685BD88E0D2 |
:100C800076C082EA8FBD81E485BD8CE087BB1123ED |
:100C900069F082B38F7C82BB939A81E084BD80919E |
:100CA000600081111EDE82E087B932C082B3877E88 |
:100CB00082BB959A5DC082B38F7C82BB939A1123CD |
:100CC00071F482EA8FBD81E485BD8AE087BBC1E013 |
:100CD000C4BD80916000811104DEC7B9C3CF82EA30 |
:100CE0008FBD81E485BD8CE042C082EA8FBD81E486 |
:100CF00085BD8AE087BB112369F082B3877D82BB03 |
:100D0000949A81E084BD809160008111EADD17B87A |
:100D10004098ABCF82B38F7C82BB939A29C082B3B9 |
:100D2000877D82BB949A1123E9F482EA8FBD81E624 |
:100D300085BD88E087BB81E084BD80916000811122 |
:100D4000D0DD82E087B988B1836088B910939900BB |
:100D5000809172009091730001969093730080933C |
:100D6000720006C082EA8FBD81E485BD8AE087BB40 |
:100D7000459903C0112309F028CF459B03C01123D7 |
:100D800009F423CF10926000FF91EF91CF91BF91B2 |
:100D9000AF919F918F917F916F915F914F913F9113 |
:100DA0002F911F910F900FBE0F901F90189580915B |
:100DB000990099278230910551F1833091052CF4E7 |
:100DC000009769F00197B9F0089584309105E1F139 |
:100DD000843091055CF1059709F443C0089582EAD7 |
:100DE0008FBD81E685BD88E087BB82B3877D82BBEE |
:100DF000949A82E034C082EA8FBD81E685BD88E0A6 |
:100E000087BB82B3877E82BB959A81E01AC082EA53 |
:100E10008FBD81E485BD8CE087BB82B3877E82BBBA |
:100E2000959A17B888B1836088B9089582EA8FBD12 |
:100E300081E485BD8CE087BB82B38F7C82BB939AB3 |
:100E400082E087B94098089582EA8FBD81E485BD2C |
:100E50008AE087BB82B38F7C82BB939A81E087B99B |
:100E6000E1CF82EA8FBD81E485BD8AE087BB82B392 |
:100E7000877D82BB949A17B8E5CF0F931F93CF93CA |
:100E8000DF938C01EB01009711F4672BB9F16EE051 |
:100E900070E081E090E037D0FC01892B71F180E8AF |
:100EA0008383209771F0D387C28781E88383809101 |
:100EB000890390918A03892B21F4F0938A03E093AC |
:100EC000890301151105C9F01187008783818260AC |
:100ED000838380918B0390918C03892B71F4F09321 |
:100EE0008C03E0938B0380918D0390918E03892B6B |
:100EF00021F4F0938E03E0938D03CF01DF91CF9126 |
:100F00001F910F9108950F931F93CF93DF93869FA7 |
:100F10008001879F100D969F100D1124C8010DD0E0 |
:100F2000EC01009721F0A80160E070E0FCD0CE0158 |
:100F3000DF91CF911F910F910895CF93DF93AC0173 |
:100F4000029710F442E050E020E030E0A0919103DD |
:100F5000B0919203BD01F901109709F44CC08D9135 |
:100F60009C9111978417950731F14817590738F468 |
:100F70002115310519F08217930708F49C01FD0132 |
:100F8000A281B381109759F721153105A1F1C9014B |
:100F9000841B950B049708F4A901DB01E0E0F0E065 |
:100FA000109749F18D919C91119782179307F9F44D |
:100FB0004217530779F4ED018A819B81309719F02C |
:100FC0009383828304C09093920380939103CD0115 |
:100FD00002964AC0241B350BFD01E20FF31F41931B |
:100FE0005193225030402D933C93CF013DC0FD01E1 |
:100FF000A281B381D5CF80918F0390919003892BEB |
:1010000041F480916B0090916C00909390038093D9 |
:101010008F03E0916900F0916A00309741F4EDB7D9 |
:10102000FEB780916D0090916E00E81BF90BA091C6 |
:101030008F03B09190039F012A1B3B0B24173507A8 |
:1010400088F0CA0102962817390760F0CD01840F95 |
:10105000951F02969093900380938F034D935D9319 |
:10106000CD0102C080E090E0DF91CF910895CF9351 |
:10107000DF93009709F454C0DC011297ED011B8245 |
:101080001A828091910390919203009721F1FC01C3 |
:1010900040E050E0EA17FB0718F1ED01FB83EA831B |
:1010A0002D913C911197C20FD31FCE0102968E173E |
:1010B0009F0771F48A819B81280F391F2E5F3F4F54 |
:1010C00011963C932E9382819381FD0193838283B9 |
:1010D0004115510559F4B0939203A093910320C098 |
:1010E000AF010280F381E02D3097A1F6EA01BB83C6 |
:1010F000AA83CA01029628813981820F931F8A1719 |
:101100009B0771F48D919C911197280F391F2E5FC9 |
:101110003F4F39832883FD01828193819B838A839A |
:10112000DF91CF910895DC0101C06D934150504093 |
:10113000E0F70895991B79E004C0991F961708F00D |
:10114000961B881F7A95C9F780950895AA1BBB1B2B |
:1011500051E107C0AA1FBB1FA617B70710F0A61BB7 |
:10116000B70B881F991F5A95A9F780959095BC01D8 |
:10117000CD010895A1E21A2EAA1BBB1BFD010DC0D3 |
:10118000AA1FBB1FEE1FFF1FA217B307E407F50737 |
:1011900020F0A21BB30BE40BF50B661F771F881F13 |
:1011A000991F1A9469F760957095809590959B01A9 |
:0811B000AC01BD01CF0108955F |
:1011B80001FF01010A00016464000093032000009C |
:00000001FF |
/tags/V0.31/Doku/BrushLess-Ctrl_16kHz_ADR4_V0_31.hex |
---|
0,0 → 1,286 |
:1000000012C05DC52AC029C0C3C5C5C426C025C04D |
:10001000B1C4F8C322C0EFC220C0BCC21EC01DC004 |
:10002000C1C561C51AC011241FBECFE5D4E0DEBF33 |
:10003000CDBF10E0A0E6B0E0E8EBF1E102C0059032 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73AC1D2CF20918200B6 |
:1000600080916100821710F4282FAB9A8091800054 |
:10007000909181008338910560F01BBC1ABC19BCBB |
:1000800018BC13BCAB9A01979093810080938000B9 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C109297004398F5 |
:1000F00085E090E09093830080938200AFDF57D635 |
:1001000088EC90E0DDD3C12FDD27D0938300C0932E |
:100110008200EE24FF248701EA14FB040C051D0570 |
:1001200078F480916600882311F43ED201C050D348 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E013D8A21A1C |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F020D6809159 |
:1001700099008F5F809399008091990066E0DAD7AB |
:1001800090939900AED3D0938300C093820066DF32 |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089540917A0050917B004115510510 |
:1001C00009F04BC080917900882371F090918800EC |
:1001D0008FEF989FC001112468EC70E0B7D770933F |
:1001E00085006093840041C080918E00882341F196 |
:1001F000209190003091910081E02D32380708F075 |
:100200009A01293C310510F028EC30E02B30310503 |
:1002100028F4509385004093840026C08CEF90E032 |
:10022000289FA001299F500D389F500D1124CA010D |
:10023000885D994064EB70E089D7CB01039610C0CC |
:100240008091840090918500009729F00197909308 |
:10025000850080938400AB9A08C080918803992719 |
:100260009093850080938400AB9880918400909156 |
:1002700085008F3F910539F030F08FEF90E090933B |
:10028000850080938400809184009927089580914F |
:100290008000909181009093780380937703809100 |
:1002A0007E00992790937A03809379038091700060 |
:1002B0009091710090937C0380937B0380919000D8 |
:1002C0009091910090937E0380937D030895CFE5F4 |
:1002D000D4E0DEBFCDBFEE2488E084BB85BB8AEBD3 |
:1002E00081BB80E882BB8EE087BB81E388BB5BD2A9 |
:1002F000CAD27894C0E0D0E0C430D10509F4979A0E |
:1003000086E990E0DDD297988AEF90E0D9D22196E5 |
:10031000C530D1058CF384EF91E0D2D244D2C3DE54 |
:1003200080E5DCD31AD385E690E0B6D286E690E08D |
:10033000B3D287E690E0B0D2EC018EEF90E0ACD281 |
:100340005C018DEE93E0A8D28C018EEE93E0A4D2F6 |
:100350006C01CE01AAD28823E1F3979A1092830010 |
:10036000109282007BDE88E080BF81E087B98AE05E |
:1003700090E092D2EC0181E090E090937A03809338 |
:100380007903109291001092900014DF99279093B6 |
:10039000830080938200809199008E1551F0109215 |
:1003A00062001092630082E390E076D2EC01E0906C |
:1003B00099008091820090918300892BC9F410925A |
:1003C000740010926300C80170D28823D9F0109293 |
:1003D0009700439881E08093620082B3877C82BB60 |
:1003E00082E08FBD81E485BD85B3817F85BB0AC076 |
:1003F00080916200882319F081E0809374008CED75 |
:1004000095E04AD280916200882321F01092830007 |
:100410001092820023DE809163008F5F80936300DF |
:10042000813009F0B2CF809162008111979AC501A5 |
:100430003CD2882339F182E390E02ED25C01809196 |
:100440007E00482F5527209180003091810042176F |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937E0080917E0090916100823428F01C |
:10047000915090936100AB9A05C09F3F19F09F5F28 |
:1004800090936100C80111D2882319F18AE090E0AD |
:1004900003D28C012091720030917300C901880F42 |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E04CD6709371006093700010927300DE |
:1004C0001092720080918E00882319F481E080934D |
:1004D0006000C601EAD1882321F08CED95E0DCD1E3 |
:1004E0006C01CE01E2D1882331F0809170009091AF |
:1004F0007100892B29F080917400882309F445CF7D |
:1005000021E0F22EF092620010929700439884E668 |
:1005100090E0C2D1EC0180917400882309F435CFBA |
:10052000AB98109274008AE0CFDD979A1092620027 |
:100530008091990081508093990081E090E09093A0 |
:100540008300809382008ADD88B18C7F88B9F09225 |
:10055000970088B18A6088B984E690E09DD1EC016B |
:10056000CE01A3D18823E1F38AE090E09093830049 |
:100570008093820073DD88EC90E08ED1EC01CE0197 |
:1005800094D18823E1F388EE93E086D1EC0197E0E3 |
:10059000E92EFBCE1F920F920FB60F9211240F90EF |
:1005A0000FBE0F901F9018955E9B24C0809166002F |
:1005B0008823E1F48091890090918A0001969093BC |
:1005C0008A0080938900FC01E556FD4FE081ED3003 |
:1005D00019F08436910539F410928A00109289003E |
:1005E00081E080936600589AECB9089510928A00D1 |
:1005F0001092890008951F920F920FB60F92112446 |
:100600008F938CB18093870080918700853F19F488 |
:100610001092670014C0809167008F5F809367001D |
:10062000843041F4809187008093880088EC809327 |
:10063000790005C0853618F084E6809367008F91B5 |
:100640000F900FBE0F901F901895AC01A0E0B0E086 |
:100650009D01A817B90748F4EBE9F2E08191280F52 |
:10066000311D1196A417B507C8F33F70FD01E5567B |
:10067000FD4FC90146E0969587954A95E1F7835C61 |
:1006800080831196FD01E556FD4F2F733070822F48 |
:10069000835C8083A456BD4F8DE08C9310926600DE |
:1006A00080919B028CB908951F93CF93DF93382FCD |
:1006B000EA01722F10E083E280939B0260939C0218 |
:1006C00030939D02A3E0B0E0772309F458C077236C |
:1006D00011F4972F07C0FE01E10FF11D1F5F9081FC |
:1006E000715011F4472F0EC0FE01E10FF11D1F5F85 |
:1006F0004081715039F0FE01E10FF11D1F5F6081F3 |
:10070000715001C0672FFD01E556FD4F892F869579 |
:100710008695835C80831196FD01E556FD4F892FF8 |
:1007200099278370907024E0880F991F2A95E1F72C |
:1007300055279A0194E0369527959A95E1F7822BF3 |
:10074000835C80831196FD01E556FD4F4F7050701C |
:10075000440F551F440F551F862F992756E0969535 |
:1007600087955A95E1F7842B835C80831196FD0170 |
:10077000E556FD4F6F73635C60831196A5CFCD0185 |
:1007800064DFDF91CF911F910895CF93C82F8A30F6 |
:1007900011F48DE0FADF5D9BFECFCCB980E090E0F4 |
:1007A000CF910895089588E18AB9599A579A89E1B5 |
:1007B00089B960E070E085EC93E05FD388EC90E06D |
:1007C0006BD0909300038093FF028AE28CB9089566 |
:1007D0008091FF029091000368D0882391F080916E |
:1007E0006600882371F022E245E653E060919A02A8 |
:1007F00084E45ADF82E390E04FD09093000380932B |
:10080000FF0208951F920F920FB60F9211248F933B |
:100810009F93809187038F5F8093870380918D00E2 |
:10082000815080938D008F3F39F583E080938D0058 |
:1008300080918B0090918C00019690938C00809316 |
:100840008B0080917A0090917B00009729F00197AE |
:1008500090937B0080937A0080918E00882329F00A |
:1008600080918E00815080938E0080917900882342 |
:1008700019F08150809379009F918F910F900FBE56 |
:100880000F901F90189582E083BF89B7816089BF60 |
:1008900089B7806489BF089520918B0030918C00C6 |
:1008A000280F391FC9010197089520918B003091BD |
:1008B0008C00821B930B892F9927807899270895A4 |
:1008C000CF93DF93E9DFEC01CE01EFDF8823E1F383 |
:1008D000DF91CF91089586EA86B987E087B9369A85 |
:1008E000089527B196E097B910BE83ED86B9349A82 |
:1008F00097B9369A349BFECF27B944B155B1440F0E |
:10090000551F440F551F493C510510F048EC50E06D |
:100910002091800030918100C90163E0880F991F08 |
:100920006A95E1F7821B930B840F951F23E0969540 |
:1009300087952A95E1F7909381008093800020911C |
:100940007F0033272817390720F480918000809397 |
:100950007F0016B888E080BF08958EB5806C8EBD8C |
:100960008EB580648EBD89B7806289BF89B7846087 |
:1009700089BF08951F920F920FB60F9211248F9383 |
:1009800080918F008F5F80938F008F910F900FBEAB |
:100990000F901F9018951F920F920FB60F9211246F |
:1009A0002F933F938F939F930EB406FE0FC0109228 |
:1009B0008F0086B597B590939300809392008EB583 |
:1009C0008F7B8EBD84E680938E0070C08EB5806470 |
:1009D0008EBD26B537B58091920090919300281B6B |
:1009E000390B80918F009927982F8827990F280F0E |
:1009F000391F689414F8369527951694E1F73093CB |
:100A00009500209394002851314030F488E191E022 |
:100A100090939500809394002091940030919500DC |
:100A2000285131403093950020939400809190009C |
:100A3000909191008217930730F4809190009091EB |
:100A4000910001960CC08091900090919100281720 |
:100A5000390748F48091900090919100019790930C |
:100A60009100809390002091900030919100C901F5 |
:100A7000880F991F880F991F880F991F821B930B4E |
:100A80002091940030919500820F931F23E096955A |
:100A900087952A95E1F79093950080939400909321 |
:100AA00091008093900081E0809360009F918F91EE |
:100AB0003F912F910F900FBE0F901F9018951F928E |
:100AC0000F920FB60F9211248F938AB78F7B8ABF34 |
:100AD0008F910F900FBE0F901F901895885F82B96D |
:100AE00085EC86BF08951F920F920FB60F921124C6 |
:100AF0008F939F9381B19927887F9070803891055B |
:100B0000E9F08138910534F40097B1F18036910510 |
:100B100079F035C0883B9105D9F0893B910524F4E3 |
:100B2000883A9105A9F02BC0883F910511F127C0A3 |
:100B300086B7806886BF1092960023C083B18093E9 |
:100B4000880384EF91E090937B0080937A000EC03D |
:100B500090919600992339F480917E0083B99F5F2C |
:100B60009093960003C08091610083B986B7806836 |
:100B700007C086B7806986BF86B7806986BF85EC67 |
:100B800086BF9F918F910F900FBE0F901F90189569 |
:100B90001F920F920FB60F9211240F900FBE0F905D |
:100BA0001F9018951F920F920FB60F9211241F934A |
:100BB0002F933F934F935F936F937F938F939F9365 |
:100BC000AF93BF93CF93EF93FF93459B02C011E088 |
:100BD00001C010E08091990099278230910509F4B5 |
:100BE00050C0833091052CF4009779F0019739F1CA |
:100BF000BFC08430910509F478C0843091050CF4AD |
:100C00005AC0059709F48BC0B3C082EA8FBD81E654 |
:100C100085BD88E087BB112369F082B3877E82BBE4 |
:100C2000959AC1E0C4BD8091600081115ADE409860 |
:100C3000C7B91BC082B3877D82BB949A99C082B327 |
:100C4000877E82BB959A1123B1F482EA8FBD81E43D |
:100C500085BD8CE087BB81E084BD809160008111FF |
:100C600040DE17B988B1836088B9809199008F5FA1 |
:100C7000809399006DC082EA8FBD81E685BD88E0D2 |
:100C800076C082EA8FBD81E485BD8CE087BB1123ED |
:100C900069F082B38F7C82BB939A81E084BD80919E |
:100CA000600081111EDE82E087B932C082B3877E88 |
:100CB00082BB959A5DC082B38F7C82BB939A1123CD |
:100CC00071F482EA8FBD81E485BD8AE087BBC1E013 |
:100CD000C4BD80916000811104DEC7B9C3CF82EA30 |
:100CE0008FBD81E485BD8CE042C082EA8FBD81E486 |
:100CF00085BD8AE087BB112369F082B3877D82BB03 |
:100D0000949A81E084BD809160008111EADD17B87A |
:100D10004098ABCF82B38F7C82BB939A29C082B3B9 |
:100D2000877D82BB949A1123E9F482EA8FBD81E624 |
:100D300085BD88E087BB81E084BD80916000811122 |
:100D4000D0DD82E087B988B1836088B910939900BB |
:100D5000809172009091730001969093730080933C |
:100D6000720006C082EA8FBD81E485BD8AE087BB40 |
:100D7000459903C0112309F028CF459B03C01123D7 |
:100D800009F423CF10926000FF91EF91CF91BF91B2 |
:100D9000AF919F918F917F916F915F914F913F9113 |
:100DA0002F911F910F900FBE0F901F90189580915B |
:100DB000990099278230910551F1833091052CF4E7 |
:100DC000009769F00197B9F0089584309105E1F139 |
:100DD000843091055CF1059709F443C0089582EAD7 |
:100DE0008FBD81E685BD88E087BB82B3877D82BBEE |
:100DF000949A82E034C082EA8FBD81E685BD88E0A6 |
:100E000087BB82B3877E82BB959A81E01AC082EA53 |
:100E10008FBD81E485BD8CE087BB82B3877E82BBBA |
:100E2000959A17B888B1836088B9089582EA8FBD12 |
:100E300081E485BD8CE087BB82B38F7C82BB939AB3 |
:100E400082E087B94098089582EA8FBD81E485BD2C |
:100E50008AE087BB82B38F7C82BB939A81E087B99B |
:100E6000E1CF82EA8FBD81E485BD8AE087BB82B392 |
:100E7000877D82BB949A17B8E5CF0F931F93CF93CA |
:100E8000DF938C01EB01009711F4672BB9F16EE051 |
:100E900070E081E090E037D0FC01892B71F180E8AF |
:100EA0008383209771F0D387C28781E88383809101 |
:100EB000890390918A03892B21F4F0938A03E093AC |
:100EC000890301151105C9F01187008783818260AC |
:100ED000838380918B0390918C03892B71F4F09321 |
:100EE0008C03E0938B0380918D0390918E03892B6B |
:100EF00021F4F0938E03E0938D03CF01DF91CF9126 |
:100F00001F910F9108950F931F93CF93DF93869FA7 |
:100F10008001879F100D969F100D1124C8010DD0E0 |
:100F2000EC01009721F0A80160E070E0FCD0CE0158 |
:100F3000DF91CF911F910F910895CF93DF93AC0173 |
:100F4000029710F442E050E020E030E0A0919103DD |
:100F5000B0919203BD01F901109709F44CC08D9135 |
:100F60009C9111978417950731F14817590738F468 |
:100F70002115310519F08217930708F49C01FD0132 |
:100F8000A281B381109759F721153105A1F1C9014B |
:100F9000841B950B049708F4A901DB01E0E0F0E065 |
:100FA000109749F18D919C91119782179307F9F44D |
:100FB0004217530779F4ED018A819B81309719F02C |
:100FC0009383828304C09093920380939103CD0115 |
:100FD00002964AC0241B350BFD01E20FF31F41931B |
:100FE0005193225030402D933C93CF013DC0FD01E1 |
:100FF000A281B381D5CF80918F0390919003892BEB |
:1010000041F480916B0090916C00909390038093D9 |
:101010008F03E0916900F0916A00309741F4EDB7D9 |
:10102000FEB780916D0090916E00E81BF90BA091C6 |
:101030008F03B09190039F012A1B3B0B24173507A8 |
:1010400088F0CA0102962817390760F0CD01840F95 |
:10105000951F02969093900380938F034D935D9319 |
:10106000CD0102C080E090E0DF91CF910895CF9351 |
:10107000DF93009709F454C0DC011297ED011B8245 |
:101080001A828091910390919203009721F1FC01C3 |
:1010900040E050E0EA17FB0718F1ED01FB83EA831B |
:1010A0002D913C911197C20FD31FCE0102968E173E |
:1010B0009F0771F48A819B81280F391F2E5F3F4F54 |
:1010C00011963C932E9382819381FD0193838283B9 |
:1010D0004115510559F4B0939203A093910320C098 |
:1010E000AF010280F381E02D3097A1F6EA01BB83C6 |
:1010F000AA83CA01029628813981820F931F8A1719 |
:101100009B0771F48D919C911197280F391F2E5FC9 |
:101110003F4F39832883FD01828193819B838A839A |
:10112000DF91CF910895DC0101C06D934150504093 |
:10113000E0F70895991B79E004C0991F961708F00D |
:10114000961B881F7A95C9F780950895AA1BBB1B2B |
:1011500051E107C0AA1FBB1FA617B70710F0A61BB7 |
:10116000B70B881F991F5A95A9F780959095BC01D8 |
:10117000CD010895A1E21A2EAA1BBB1BFD010DC0D3 |
:10118000AA1FBB1FEE1FFF1FA217B307E407F50737 |
:1011900020F0A21BB30BE40BF50B661F771F881F13 |
:1011A000991F1A9469F760957095809590959B01A9 |
:0811B000AC01BD01CF0108955F |
:1011B80001FF01010A00016464000093032000009C |
:00000001FF |
/tags/V0.31/Doku/BrushLess-Ctrll_16kHz_V0_31.hex |
---|
0,0 → 1,286 |
:1000000012C05DC52AC029C0C3C5C5C426C025C04D |
:10001000B1C4F8C322C0EFC220C0BCC21EC01DC004 |
:10002000C1C561C51AC011241FBECFE5D4E0DEBF33 |
:10003000CDBF10E0A0E6B0E0E8EBF1E102C0059032 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F73AC1D2CF20918200B6 |
:1000600080916100821710F4282FAB9A8091800054 |
:10007000909181008338910560F01BBC1ABC19BCBB |
:1000800018BC13BCAB9A01979093810080938000B9 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C109297004398F5 |
:1000F00085E090E09093830080938200AFDF57D635 |
:1001000088EC90E0DDD3C12FDD27D0938300C0932E |
:100110008200EE24FF248701EA14FB040C051D0570 |
:1001200078F480916600882311F43ED201C050D348 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E013D8A21A1C |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F020D6809159 |
:1001700099008F5F809399008091990066E0DAD7AB |
:1001800090939900AED3D0938300C093820066DF32 |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089540917A0050917B004115510510 |
:1001C00009F04BC080917900882371F090918800EC |
:1001D0008FEF989FC001112468EC70E0B7D770933F |
:1001E00085006093840041C080918E00882341F196 |
:1001F000209190003091910081E02D32380708F075 |
:100200009A01293C310510F028EC30E02B30310503 |
:1002100028F4509385004093840026C08CEF90E032 |
:10022000289FA001299F500D389F500D1124CA010D |
:10023000885D994064EB70E089D7CB01039610C0CC |
:100240008091840090918500009729F00197909308 |
:10025000850080938400AB9A08C080918803992719 |
:100260009093850080938400AB9880918400909156 |
:1002700085008F3F910539F030F08FEF90E090933B |
:10028000850080938400809184009927089580914F |
:100290008000909181009093780380937703809100 |
:1002A0007E00992790937A03809379038091700060 |
:1002B0009091710090937C0380937B0380919000D8 |
:1002C0009091910090937E0380937D030895CFE5F4 |
:1002D000D4E0DEBFCDBFEE2488E084BB85BB8AEBD3 |
:1002E00081BB80E882BB8EE087BB81E388BB5BD2A9 |
:1002F000CAD27894C0E0D0E0C230D10509F4979A10 |
:1003000086E990E0DDD297988AEF90E0D9D22196E5 |
:10031000C530D1058CF384EF91E0D2D244D2C3DE54 |
:1003200080E5DCD31AD385E690E0B6D286E690E08D |
:10033000B3D287E690E0B0D2EC018EEF90E0ACD281 |
:100340005C018DEE93E0A8D28C018EEE93E0A4D2F6 |
:100350006C01CE01AAD28823E1F3979A1092830010 |
:10036000109282007BDE88E080BF81E087B98AE05E |
:1003700090E092D2EC0181E090E090937A03809338 |
:100380007903109291001092900014DF99279093B6 |
:10039000830080938200809199008E1551F0109215 |
:1003A00062001092630082E390E076D2EC01E0906C |
:1003B00099008091820090918300892BC9F410925A |
:1003C000740010926300C80170D28823D9F0109293 |
:1003D0009700439881E08093620082B3877C82BB60 |
:1003E00082E08FBD81E485BD85B3817F85BB0AC076 |
:1003F00080916200882319F081E0809374008CED75 |
:1004000095E04AD280916200882321F01092830007 |
:100410001092820023DE809163008F5F80936300DF |
:10042000813009F0B2CF809162008111979AC501A5 |
:100430003CD2882339F182E390E02ED25C01809196 |
:100440007E00482F5527209180003091810042176F |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937E0080917E0090916100823428F01C |
:10047000915090936100AB9A05C09F3F19F09F5F28 |
:1004800090936100C80111D2882319F18AE090E0AD |
:1004900003D28C012091720030917300C901880F42 |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E04CD6709371006093700010927300DE |
:1004C0001092720080918E00882319F481E080934D |
:1004D0006000C601EAD1882321F08CED95E0DCD1E3 |
:1004E0006C01CE01E2D1882331F0809170009091AF |
:1004F0007100892B29F080917400882309F445CF7D |
:1005000021E0F22EF092620010929700439884E668 |
:1005100090E0C2D1EC0180917400882309F435CFBA |
:10052000AB98109274008AE0CFDD979A1092620027 |
:100530008091990081508093990081E090E09093A0 |
:100540008300809382008ADD88B18C7F88B9F09225 |
:10055000970088B18A6088B984E690E09DD1EC016B |
:10056000CE01A3D18823E1F38AE090E09093830049 |
:100570008093820073DD88EC90E08ED1EC01CE0197 |
:1005800094D18823E1F388EE93E086D1EC0197E0E3 |
:10059000E92EFBCE1F920F920FB60F9211240F90EF |
:1005A0000FBE0F901F9018955E9B24C0809166002F |
:1005B0008823E1F48091890090918A0001969093BC |
:1005C0008A0080938900FC01E556FD4FE081ED3003 |
:1005D00019F08436910539F410928A00109289003E |
:1005E00081E080936600589AECB9089510928A00D1 |
:1005F0001092890008951F920F920FB60F92112446 |
:100600008F938CB18093870080918700853F19F488 |
:100610001092670014C0809167008F5F809367001D |
:10062000823041F4809187008093880088EC809329 |
:10063000790005C0853618F084E6809367008F91B5 |
:100640000F900FBE0F901F901895AC01A0E0B0E086 |
:100650009D01A817B90748F4EBE9F2E08191280F52 |
:10066000311D1196A417B507C8F33F70FD01E5567B |
:10067000FD4FC90146E0969587954A95E1F7835C61 |
:1006800080831196FD01E556FD4F2F733070822F48 |
:10069000835C8083A456BD4F8DE08C9310926600DE |
:1006A00080919B028CB908951F93CF93DF93382FCD |
:1006B000EA01722F10E083E280939B0260939C0218 |
:1006C00030939D02A3E0B0E0772309F458C077236C |
:1006D00011F4972F07C0FE01E10FF11D1F5F9081FC |
:1006E000715011F4472F0EC0FE01E10FF11D1F5F85 |
:1006F0004081715039F0FE01E10FF11D1F5F6081F3 |
:10070000715001C0672FFD01E556FD4F892F869579 |
:100710008695835C80831196FD01E556FD4F892FF8 |
:1007200099278370907024E0880F991F2A95E1F72C |
:1007300055279A0194E0369527959A95E1F7822BF3 |
:10074000835C80831196FD01E556FD4F4F7050701C |
:10075000440F551F440F551F862F992756E0969535 |
:1007600087955A95E1F7842B835C80831196FD0170 |
:10077000E556FD4F6F73635C60831196A5CFCD0185 |
:1007800064DFDF91CF911F910895CF93C82F8A30F6 |
:1007900011F48DE0FADF5D9BFECFCCB980E090E0F4 |
:1007A000CF910895089588E18AB9599A579A89E1B5 |
:1007B00089B960E070E085EC93E05FD388EC90E06D |
:1007C0006BD0909300038093FF028AE28CB9089566 |
:1007D0008091FF029091000368D0882391F080916E |
:1007E0006600882371F022E245E653E060919A02A8 |
:1007F00084E45ADF82E390E04FD09093000380932B |
:10080000FF0208951F920F920FB60F9211248F933B |
:100810009F93809187038F5F8093870380918D00E2 |
:10082000815080938D008F3F39F583E080938D0058 |
:1008300080918B0090918C00019690938C00809316 |
:100840008B0080917A0090917B00009729F00197AE |
:1008500090937B0080937A0080918E00882329F00A |
:1008600080918E00815080938E0080917900882342 |
:1008700019F08150809379009F918F910F900FBE56 |
:100880000F901F90189582E083BF89B7816089BF60 |
:1008900089B7806489BF089520918B0030918C00C6 |
:1008A000280F391FC9010197089520918B003091BD |
:1008B0008C00821B930B892F9927807899270895A4 |
:1008C000CF93DF93E9DFEC01CE01EFDF8823E1F383 |
:1008D000DF91CF91089586EA86B987E087B9369A85 |
:1008E000089527B196E097B910BE83ED86B9349A82 |
:1008F00097B9369A349BFECF27B944B155B1440F0E |
:10090000551F440F551F493C510510F048EC50E06D |
:100910002091800030918100C90163E0880F991F08 |
:100920006A95E1F7821B930B840F951F23E0969540 |
:1009300087952A95E1F7909381008093800020911C |
:100940007F0033272817390720F480918000809397 |
:100950007F0016B888E080BF08958EB5806C8EBD8C |
:100960008EB580648EBD89B7806289BF89B7846087 |
:1009700089BF08951F920F920FB60F9211248F9383 |
:1009800080918F008F5F80938F008F910F900FBEAB |
:100990000F901F9018951F920F920FB60F9211246F |
:1009A0002F933F938F939F930EB406FE0FC0109228 |
:1009B0008F0086B597B590939300809392008EB583 |
:1009C0008F7B8EBD84E680938E0070C08EB5806470 |
:1009D0008EBD26B537B58091920090919300281B6B |
:1009E000390B80918F009927982F8827990F280F0E |
:1009F000391F689414F8369527951694E1F73093CB |
:100A00009500209394002851314030F488E191E022 |
:100A100090939500809394002091940030919500DC |
:100A2000285131403093950020939400809190009C |
:100A3000909191008217930730F4809190009091EB |
:100A4000910001960CC08091900090919100281720 |
:100A5000390748F48091900090919100019790930C |
:100A60009100809390002091900030919100C901F5 |
:100A7000880F991F880F991F880F991F821B930B4E |
:100A80002091940030919500820F931F23E096955A |
:100A900087952A95E1F79093950080939400909321 |
:100AA00091008093900081E0809360009F918F91EE |
:100AB0003F912F910F900FBE0F901F9018951F928E |
:100AC0000F920FB60F9211248F938AB78F7B8ABF34 |
:100AD0008F910F900FBE0F901F9018958C5F82B969 |
:100AE00085EC86BF08951F920F920FB60F921124C6 |
:100AF0008F939F9381B19927887F9070803891055B |
:100B0000E9F08138910534F40097B1F18036910510 |
:100B100079F035C0883B9105D9F0893B910524F4E3 |
:100B2000883A9105A9F02BC0883F910511F127C0A3 |
:100B300086B7806886BF1092960023C083B18093E9 |
:100B4000880384EF91E090937B0080937A000EC03D |
:100B500090919600992339F480917E0083B99F5F2C |
:100B60009093960003C08091610083B986B7806836 |
:100B700007C086B7806986BF86B7806986BF85EC67 |
:100B800086BF9F918F910F900FBE0F901F90189569 |
:100B90001F920F920FB60F9211240F900FBE0F905D |
:100BA0001F9018951F920F920FB60F9211241F934A |
:100BB0002F933F934F935F936F937F938F939F9365 |
:100BC000AF93BF93CF93EF93FF93459B02C011E088 |
:100BD00001C010E08091990099278230910509F4B5 |
:100BE00050C0833091052CF4009779F0019739F1CA |
:100BF000BFC08430910509F478C0843091050CF4AD |
:100C00005AC0059709F48BC0B3C082EA8FBD81E654 |
:100C100085BD88E087BB112369F082B3877E82BBE4 |
:100C2000959AC1E0C4BD8091600081115ADE409860 |
:100C3000C7B91BC082B3877D82BB949A99C082B327 |
:100C4000877E82BB959A1123B1F482EA8FBD81E43D |
:100C500085BD8CE087BB81E084BD809160008111FF |
:100C600040DE17B988B1836088B9809199008F5FA1 |
:100C7000809399006DC082EA8FBD81E685BD88E0D2 |
:100C800076C082EA8FBD81E485BD8CE087BB1123ED |
:100C900069F082B38F7C82BB939A81E084BD80919E |
:100CA000600081111EDE82E087B932C082B3877E88 |
:100CB00082BB959A5DC082B38F7C82BB939A1123CD |
:100CC00071F482EA8FBD81E485BD8AE087BBC1E013 |
:100CD000C4BD80916000811104DEC7B9C3CF82EA30 |
:100CE0008FBD81E485BD8CE042C082EA8FBD81E486 |
:100CF00085BD8AE087BB112369F082B3877D82BB03 |
:100D0000949A81E084BD809160008111EADD17B87A |
:100D10004098ABCF82B38F7C82BB939A29C082B3B9 |
:100D2000877D82BB949A1123E9F482EA8FBD81E624 |
:100D300085BD88E087BB81E084BD80916000811122 |
:100D4000D0DD82E087B988B1836088B910939900BB |
:100D5000809172009091730001969093730080933C |
:100D6000720006C082EA8FBD81E485BD8AE087BB40 |
:100D7000459903C0112309F028CF459B03C01123D7 |
:100D800009F423CF10926000FF91EF91CF91BF91B2 |
:100D9000AF919F918F917F916F915F914F913F9113 |
:100DA0002F911F910F900FBE0F901F90189580915B |
:100DB000990099278230910551F1833091052CF4E7 |
:100DC000009769F00197B9F0089584309105E1F139 |
:100DD000843091055CF1059709F443C0089582EAD7 |
:100DE0008FBD81E685BD88E087BB82B3877D82BBEE |
:100DF000949A82E034C082EA8FBD81E685BD88E0A6 |
:100E000087BB82B3877E82BB959A81E01AC082EA53 |
:100E10008FBD81E485BD8CE087BB82B3877E82BBBA |
:100E2000959A17B888B1836088B9089582EA8FBD12 |
:100E300081E485BD8CE087BB82B38F7C82BB939AB3 |
:100E400082E087B94098089582EA8FBD81E485BD2C |
:100E50008AE087BB82B38F7C82BB939A81E087B99B |
:100E6000E1CF82EA8FBD81E485BD8AE087BB82B392 |
:100E7000877D82BB949A17B8E5CF0F931F93CF93CA |
:100E8000DF938C01EB01009711F4672BB9F16EE051 |
:100E900070E081E090E037D0FC01892B71F180E8AF |
:100EA0008383209771F0D387C28781E88383809101 |
:100EB000890390918A03892B21F4F0938A03E093AC |
:100EC000890301151105C9F01187008783818260AC |
:100ED000838380918B0390918C03892B71F4F09321 |
:100EE0008C03E0938B0380918D0390918E03892B6B |
:100EF00021F4F0938E03E0938D03CF01DF91CF9126 |
:100F00001F910F9108950F931F93CF93DF93869FA7 |
:100F10008001879F100D969F100D1124C8010DD0E0 |
:100F2000EC01009721F0A80160E070E0FCD0CE0158 |
:100F3000DF91CF911F910F910895CF93DF93AC0173 |
:100F4000029710F442E050E020E030E0A0919103DD |
:100F5000B0919203BD01F901109709F44CC08D9135 |
:100F60009C9111978417950731F14817590738F468 |
:100F70002115310519F08217930708F49C01FD0132 |
:100F8000A281B381109759F721153105A1F1C9014B |
:100F9000841B950B049708F4A901DB01E0E0F0E065 |
:100FA000109749F18D919C91119782179307F9F44D |
:100FB0004217530779F4ED018A819B81309719F02C |
:100FC0009383828304C09093920380939103CD0115 |
:100FD00002964AC0241B350BFD01E20FF31F41931B |
:100FE0005193225030402D933C93CF013DC0FD01E1 |
:100FF000A281B381D5CF80918F0390919003892BEB |
:1010000041F480916B0090916C00909390038093D9 |
:101010008F03E0916900F0916A00309741F4EDB7D9 |
:10102000FEB780916D0090916E00E81BF90BA091C6 |
:101030008F03B09190039F012A1B3B0B24173507A8 |
:1010400088F0CA0102962817390760F0CD01840F95 |
:10105000951F02969093900380938F034D935D9319 |
:10106000CD0102C080E090E0DF91CF910895CF9351 |
:10107000DF93009709F454C0DC011297ED011B8245 |
:101080001A828091910390919203009721F1FC01C3 |
:1010900040E050E0EA17FB0718F1ED01FB83EA831B |
:1010A0002D913C911197C20FD31FCE0102968E173E |
:1010B0009F0771F48A819B81280F391F2E5F3F4F54 |
:1010C00011963C932E9382819381FD0193838283B9 |
:1010D0004115510559F4B0939203A093910320C098 |
:1010E000AF010280F381E02D3097A1F6EA01BB83C6 |
:1010F000AA83CA01029628813981820F931F8A1719 |
:101100009B0771F48D919C911197280F391F2E5FC9 |
:101110003F4F39832883FD01828193819B838A839A |
:10112000DF91CF910895DC0101C06D934150504093 |
:10113000E0F70895991B79E004C0991F961708F00D |
:10114000961B881F7A95C9F780950895AA1BBB1B2B |
:1011500051E107C0AA1FBB1FA617B70710F0A61BB7 |
:10116000B70B881F991F5A95A9F780959095BC01D8 |
:10117000CD010895A1E21A2EAA1BBB1BFD010DC0D3 |
:10118000AA1FBB1FEE1FFF1FA217B307E407F50737 |
:1011900020F0A21BB30BE40BF50B661F771F881F13 |
:1011A000991F1A9469F760957095809590959B01A9 |
:0811B000AC01BD01CF0108955F |
:1011B80001FF01010A00016464000093032000009C |
:00000001FF |
/tags/V0.31/Doku/BrushLess-Ctrll_32kHz_V0_31.hex |
---|
0,0 → 1,286 |
:1000000012C05AC52AC029C0C0C5C3C426C025C055 |
:10001000AFC4F6C322C0EDC220C0BAC21EC01DC00C |
:10002000BEC55EC51AC011241FBECFE5D4E0DEBF39 |
:10003000CDBF10E0A0E6B0E0E2EBF1E102C0059038 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92A339B107E1F738C1D2CF20918200B8 |
:1000600080916100821710F4282FAB9A8091800054 |
:10007000909181008338910560F01BBC1ABC19BCBB |
:1000800018BC13BCAB9A01979093810080938000B9 |
:100090000895822F99279BBD8ABD99BD88BD23BD38 |
:1000A00008958DE08FBD89E485BD85B3817F85BBD3 |
:1000B00089E08EBD089592B7980F82B7891B87FD9E |
:1000C000FCCF0895AF92BF92CF92DF92EF92FF9252 |
:1000D0000F931F93CF93DF93182F8CE2A82E81E00C |
:1000E000B82EC12CD12C10929700439885E090E057 |
:1000F0009093830080938200B1DF56D688EC90E025 |
:10010000DDD3C12FDD27D0938300C0938200EE247E |
:10011000FF248701EA14FB040C051D0578F4809187 |
:100120006600882311F43ED201C050D384E6C3DFB9 |
:100130000894E11CF11C011D111DECCFC601B50195 |
:100140002FE030E040E050E012D8A21AB30AC40A0F |
:10015000D50A0894A108B108C108D10889E1A816F8 |
:10016000B104C104D104C8F01FD6809199008F5FFB |
:10017000809399008091990066E0D9D79093990077 |
:10018000AED3D0938300C093820068DF449BBFCF7F |
:1001900082B390E8892782BBBACFDF91CF911F91BC |
:1001A0000F91FF90EF90DF90CF90BF90AF900895A8 |
:1001B00040917A0050917B004115510509F04BC0E8 |
:1001C00080917900882371F0909188008FEF989F3B |
:1001D000C001112468EC70E0B6D77093850060937D |
:1001E000840041C080918E00882341F120919000CD |
:1001F0003091910081E02D32380708F09A01293CB6 |
:10020000310510F028EC30E02B30310528F4509304 |
:1002100085004093840026C08CEF90E0289FA001C9 |
:10022000299F500D389F500D1124CA01885D9940B7 |
:1002300064EB70E088D7CB01039610C080918400F6 |
:1002400090918500009729F0019790938500809305 |
:100250008400AB9A08C08091880399279093850009 |
:1002600080938400AB9880918400909185008F3FAB |
:10027000910539F030F08FEF90E0909385008093F6 |
:100280008400809184009927089580918000909146 |
:100290008100909378038093770380917E00992763 |
:1002A00090937A038093790380917000909171000C |
:1002B00090937C0380937B038091900090919100B8 |
:1002C00090937E0380937D030895CFE5D4E0DEBF55 |
:1002D000CDBFEE2488E084BB85BB8AEB81BB80E880 |
:1002E00082BB8EE087BB81E388BB5BD2CAD27894A5 |
:1002F000C0E0D0E0C430D10509F4979A86E990E0D7 |
:10030000DDD297988AEF90E0D9D22196C530D105F9 |
:100310008CF384EF91E0D2D244D2C3DE80E5DBD30C |
:100320001AD385E690E0B6D286E690E0B3D287E6AF |
:1003300090E0B0D2EC018EEF90E0ACD25C018DEE9B |
:1003400093E0A8D28C018EEE93E0A4D26C01CE0192 |
:10035000AAD28823E1F3979A109283001092820028 |
:100360007DDE88E080BF81E087B98AE090E092D2AC |
:10037000EC0181E090E090937A03809379031092EE |
:1003800091001092900014DF99279093830080933E |
:100390008200809199008E1551F0109262001092A7 |
:1003A000630082E390E076D2EC01E09099008091C6 |
:1003B000820090918300892BC9F4109274001092EE |
:1003C0006300C80170D28823D9F010929700439837 |
:1003D00081E08093620082B3877C82BB8DE08FBD19 |
:1003E00089E485BD85B3817F85BB0AC080916200A9 |
:1003F000882319F081E0809374008CED95E04AD257 |
:1004000080916200882321F0109283001092820074 |
:1004100025DE809163008F5F80936300813009F057 |
:10042000B2CF809162008111979AC5013CD2882396 |
:1004300039F182E390E02ED25C0180917E00482F5A |
:10044000552720918000309181004217530710F406 |
:100450008F5F04C02417350718F4815080937E0005 |
:1004600080917E0090916100833328F091509093A9 |
:100470006100AB9A05C09F3F19F09F5F90936100A8 |
:10048000C80111D2882319F18AE090E003D28C01CF |
:100490002091720030917300C901880F991F880F55 |
:1004A000991F820F931F820F931F66E070E04BD657 |
:1004B000709371006093700010927300109272003C |
:1004C00080918E00882319F481E080936000C6013A |
:1004D000EAD1882321F08CED95E0DCD16C01CE01CE |
:1004E000E2D1882331F08091700090917100892BC6 |
:1004F00029F080917400882309F445CF21E0F22E81 |
:10050000F092620010929700439884E690E0C2D186 |
:10051000EC0180917400882309F435CFAB981092D8 |
:1005200074008AE0CFDD979A109262008091990062 |
:1005300081508093990081E090E0909383008093B4 |
:1005400082008CDD88B18C7F88B9F092970088B1E9 |
:100550008A6088B984E690E09DD1EC01CE01A3D1F8 |
:100560008823E1F38AE090E09093830080938200F7 |
:1005700075DD88EC90E08ED1EC01CE0194D188231A |
:10058000E1F388EE93E086D1EC0197E0E92EFBCE13 |
:100590001F920F920FB60F9211240F900FBE0F9063 |
:1005A0001F9018955E9B24C0809166008823E1F41B |
:1005B0008091890090918A00019690938A0080939F |
:1005C0008900FC01E556FD4FE081ED3019F08436DD |
:1005D000910539F410928A001092890081E080938D |
:1005E0006600589AECB9089510928A00109289001A |
:1005F00008951F920F920FB60F9211248F938CB112 |
:100600008093870080918700853F19F410926700DE |
:1006100014C0809167008F5F80936700843041F43D |
:10062000809187008093880088EC8093790005C0D2 |
:10063000853618F084E6809367008F910F900FBE87 |
:100640000F901F901895AC01A0E0B0E09D01A81795 |
:10065000B90748F4EBE9F2E08191280F311D1196BA |
:10066000A417B507C8F33F70FD01E556FD4FC9015A |
:1006700046E0969587954A95E1F7835C80831196CD |
:10068000FD01E556FD4F2F733070822F835C808310 |
:10069000A456BD4F8DE08C931092660080919B0212 |
:1006A0008CB908951F93CF93DF93382FEA01722FEF |
:1006B00010E083E280939B0260939C0230939D0242 |
:1006C000A3E0B0E0772309F458C0772311F4972F03 |
:1006D00007C0FE01E10FF11D1F5F9081715011F401 |
:1006E000472F0EC0FE01E10FF11D1F5F40817150C9 |
:1006F00039F0FE01E10FF11D1F5F6081715001C0F3 |
:10070000672FFD01E556FD4F892F86958695835C01 |
:1007100080831196FD01E556FD4F892F992783703F |
:10072000907024E0880F991F2A95E1F755279A01C8 |
:1007300094E0369527959A95E1F7822B835C808328 |
:100740001196FD01E556FD4F4F705070440F551F37 |
:10075000440F551F862F992756E0969587955A95F1 |
:10076000E1F7842B835C80831196FD01E556FD4FF4 |
:100770006F73635C60831196A5CFCD0164DFDF9159 |
:10078000CF911F910895CF93C82F8A3011F48DE037 |
:10079000FADF5D9BFECFCCB980E090E0CF91089569 |
:1007A000089588E18AB9599A579A89E189B960E030 |
:1007B00070E083EC93E05ED388EC90E06BD0909394 |
:1007C00000038093FF028AE28CB908958091FF02B2 |
:1007D0009091000368D0882391F08091660088236F |
:1007E00071F022E245E653E060919A0284E45ADF18 |
:1007F00082E390E04FD0909300038093FF0208952E |
:100800001F920F920FB60F9211248F939F93809196 |
:1008100087038F5F8093870380918D008150809341 |
:100820008D008F3F39F583E080938D0080918B00A0 |
:1008300090918C00019690938C0080938B00809116 |
:100840007A0090917B00009729F0019790937B00AC |
:1008500080937A0080918E00882329F080918E0009 |
:10086000815080938E0080917900882319F0815007 |
:10087000809379009F918F910F900FBE0F901F90E2 |
:10088000189582E083BF89B7816089BF89B780648A |
:1008900089BF089520918B0030918C00280F391F5B |
:1008A000C9010197089520918B0030918C00821B23 |
:1008B000930B892F9927807899270895CF93DF93F9 |
:1008C000E9DFEC01CE01EFDF8823E1F3DF91CF9187 |
:1008D000089586EA86B987E087B9369A089527B1E0 |
:1008E00096E097B910BE83ED86B9349A97B9369AD7 |
:1008F000349BFECF27B944B155B1440F551F440F67 |
:10090000551F493C510510F048EC50E02091800003 |
:1009100030918100C90163E0880F991F6A95E1F762 |
:10092000821B930B840F951F23E0969587952A953C |
:10093000E1F7909381008093800020917F0033271E |
:100940002817390720F48091800080937F0016B823 |
:1009500088E080BF08958EB5806C8EBD8EB58064B2 |
:100960008EBD89B7806289BF89B7846089BF0895C9 |
:100970001F920F920FB60F9211248F9380918F00C8 |
:100980008F5F80938F008F910F900FBE0F901F90FD |
:1009900018951F920F920FB60F9211242F933F9329 |
:1009A0008F939F930EB406FE0FC010928F0086B5F2 |
:1009B00097B590939300809392008EB58F7B8EBDF8 |
:1009C00084E680938E006FC08EB580648EBD86B540 |
:1009D00097B52091920030919300821B930B209148 |
:1009E0008F003327322F2227820F931F689414F829 |
:1009F000969587951694E1F79093950080939400CF |
:100A00008851914030F488E191E090939500809373 |
:100A100094002091940030919500285131403093FA |
:100A200095002093940080919000909191008217FE |
:100A3000930730F4809190009091910001960CC042 |
:100A400080919000909191002817390748F4809187 |
:100A50009000909191000197909391008093900065 |
:100A60002091900030919100C901880F991F880F43 |
:100A7000991F880F991F821B930B2091940030912E |
:100A80009500820F931F23E0969587952A95E1F7AD |
:100A900090939500809394009093910080939000A0 |
:100AA00081E0809360009F918F913F912F910F90F3 |
:100AB0000FBE0F901F9018951F920F920FB60F92B6 |
:100AC00011248F938AB78F7B8ABF8F910F900FBEAF |
:100AD0000F901F901895885F82B985EC86BF0895A6 |
:100AE0001F920F920FB60F9211248F939F9381B193 |
:100AF0009927887F907080389105E9F081389105B9 |
:100B000034F40097B1F18036910579F035C0883B17 |
:100B10009105D9F0893B910524F4883A9105A9F013 |
:100B20002BC0883F910511F127C086B7806886BF2A |
:100B30001092960023C083B18093880384EF91E0E4 |
:100B400090937B0080937A000EC090919600992339 |
:100B500039F480917E0083B99F5F9093960003C023 |
:100B60008091610083B986B7806807C086B78069C5 |
:100B700086BF86B7806986BF85EC86BF9F918F91BF |
:100B80000F900FBE0F901F9018951F920F920FB6E7 |
:100B90000F9211240F900FBE0F901F9018951F9267 |
:100BA0000F920FB60F9211241F932F933F934F93E1 |
:100BB0005F936F937F938F939F93AF93BF93CF93E5 |
:100BC000EF93FF93459B02C011E001C010E08091BC |
:100BD000990099278230910509F450C0833091051E |
:100BE0002CF4009779F0019739F1BFC0843091055A |
:100BF00009F478C0843091050CF45AC0059709F4C3 |
:100C00008BC0B3C08DEA8FBD89E685BD88E087BB08 |
:100C1000112369F082B3877E82BB959AC1E0C4BD7F |
:100C20008091600081115BDE4098C7B91BC082B320 |
:100C3000877D82BB949A99C082B3877E82BB959A46 |
:100C40001123B1F48DEA8FBD89E485BD8CE087BBAB |
:100C500081E084BD80916000811141DE17B988B1C7 |
:100C6000836088B9809199008F5F809399006DC0EF |
:100C70008DEA8FBD89E685BD88E076C08DEA8FBD9F |
:100C800089E485BD8CE087BB112369F082B38F7C3A |
:100C900082BB939A81E084BD8091600081111FDE48 |
:100CA00082E087B932C082B3877E82BB959A5DC0ED |
:100CB00082B38F7C82BB939A112371F48DEA8FBD2E |
:100CC00089E485BD8AE087BBC1E0C4BD8091600036 |
:100CD000811105DEC7B9C3CF8DEA8FBD89E485BD1B |
:100CE0008CE042C08DEA8FBD89E485BD8AE087BB78 |
:100CF000112369F082B3877D82BB949A81E084BD21 |
:100D0000809160008111EBDD17B84098ABCF82B3C2 |
:100D10008F7C82BB939A29C082B3877D82BB949AD1 |
:100D20001123E9F48DEA8FBD89E685BD88E087BB94 |
:100D300081E084BD809160008111D1DD82E087B9BE |
:100D400088B1836088B91093990080917200909166 |
:100D500073000196909373008093720006C08DEA31 |
:100D60008FBD89E485BD8AE087BB459903C0112307 |
:100D700009F028CF459B03C0112309F423CF10921B |
:100D80006000FF91EF91CF91BF91AF919F918F91B3 |
:100D90007F916F915F914F913F912F911F910F9094 |
:100DA0000FBE0F901F90189580919900992782305F |
:100DB000910551F1833091052CF4009769F001976A |
:100DC000B9F0089584309105E1F1843091055CF12A |
:100DD000059709F443C008958DEA8FBD89E685BD66 |
:100DE00088E087BB82B3877D82BB949A82E034C05F |
:100DF0008DEA8FBD89E685BD88E087BB82B3877E9B |
:100E000082BB959A81E01AC08DEA8FBD89E485BDC9 |
:100E10008CE087BB82B3877E82BB959A17B888B176 |
:100E2000836088B908958DEA8FBD89E485BD8CE023 |
:100E300087BB82B38F7C82BB939A82E087B940984C |
:100E400008958DEA8FBD89E485BD8AE087BB82B3B2 |
:100E50008F7C82BB939A81E087B9E1CF8DEA8FBD09 |
:100E600089E485BD8AE087BB82B3877D82BB949A83 |
:100E700017B8E5CF0F931F93CF93DF938C01EB014E |
:100E8000009711F4672BB9F16EE070E081E090E01B |
:100E900037D0FC01892B71F180E88383209771F0B2 |
:100EA000D387C28781E883838091890390918A03E5 |
:100EB000892B21F4F0938A03E0938903011511052E |
:100EC000C9F01187008783818260838380918B03BF |
:100ED00090918C03892B71F4F0938C03E0938B0336 |
:100EE00080918D0390918E03892B21F4F0938E03D2 |
:100EF000E0938D03CF01DF91CF911F910F91089562 |
:100F00000F931F93CF93DF93869F8001879F100DD0 |
:100F1000969F100D1124C8010DD0EC01009721F00F |
:100F2000A80160E070E0FCD0CE01DF91CF911F916D |
:100F30000F910895CF93DF93AC01029710F442E034 |
:100F400050E020E030E0A0919103B0919203BD0108 |
:100F5000F901109709F44CC08D919C911197841759 |
:100F6000950731F14817590738F42115310519F063 |
:100F70008217930708F49C01FD01A281B3811097A9 |
:100F800059F721153105A1F1C901841B950B04976F |
:100F900008F4A901DB01E0E0F0E0109749F18D9140 |
:100FA0009C91119782179307F9F44217530779F42C |
:100FB000ED018A819B81309719F09383828304C06D |
:100FC0009093920380939103CD0102964AC0241B13 |
:100FD000350BFD01E20FF31F419351932250304036 |
:100FE0002D933C93CF013DC0FD01A281B381D5CFAC |
:100FF00080918F0390919003892B41F480916B0035 |
:1010000090916C009093900380938F03E09169001E |
:10101000F0916A00309741F4EDB7FEB780916D0012 |
:1010200090916E00E81BF90BA0918F03B091900393 |
:101030009F012A1B3B0B2417350788F0CA01029633 |
:101040002817390760F0CD01840F951F0296909301 |
:10105000900380938F034D935D93CD0102C080E098 |
:1010600090E0DF91CF910895CF93DF93009709F43B |
:1010700054C0DC011297ED011B821A82809191030A |
:1010800090919203009721F1FC0140E050E0EA17B3 |
:10109000FB0718F1ED01FB83EA832D913C91119739 |
:1010A000C20FD31FCE0102968E179F0771F48A815B |
:1010B0009B81280F391F2E5F3F4F11963C932E9333 |
:1010C00082819381FD01938382834115510559F4F7 |
:1010D000B0939203A093910320C0AF010280F381EB |
:1010E000E02D3097A1F6EA01BB83AA83CA010296DC |
:1010F00028813981820F931F8A179B0771F48D9184 |
:101100009C911197280F391F2E5F3F4F39832883F9 |
:10111000FD01828193819B838A83DF91CF91089522 |
:10112000DC0101C06D9341505040E0F70895991BD8 |
:1011300079E004C0991F961708F0961B881F7A95CE |
:10114000C9F780950895AA1BBB1B51E107C0AA1FD0 |
:10115000BB1FA617B70710F0A61BB70B881F991F58 |
:101160005A95A9F780959095BC01CD010895A1E20B |
:101170001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F11 |
:10118000FF1FA217B307E407F50720F0A21BB30B5C |
:10119000E40BF50B661F771F881F991F1A9469F7D8 |
:1011A00060957095809590959B01AC01BD01CF0134 |
:0211B0000895A0 |
:1011B20001FF01010A0001646400009303200000A2 |
:00000001FF |
/tags/V0.31/Doku/Fuses_Mega8_8MHZ_Intern.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.31/Doku/Test_Manuell_BrushLess-Ctrl_V0_21.hex |
---|
0,0 → 1,247 |
:1000000012C048C42AC029C028C0E6C326C025C0E3 |
:10001000D2C333C322C046C220C013C21EC01DC0FB |
:100020006AC552C41AC011241FBECFE5D4E0DEBF9A |
:10003000CDBF10E0A0E6B0E0E4E3FFE002C0059031 |
:100040000D92A437B107D9F713E0A4E7B0E001C0DF |
:100050001D92A53AB107E1F734C1D2CF20918300B8 |
:1000600080916000821710F4282FAB9A8091810054 |
:10007000909182008338910560F01BBC1ABC19BCBA |
:1000800018BC13BCAB9A01979093820080938100B7 |
:100090000895822F99279BBD8ABD99BD88BD23BD38 |
:1000A00008958DE08FBD89E485BD89E08EBD0895FA |
:1000B00092B7980F82B7891B87FDFCCF0895AF9246 |
:1000C000BF92CF92DF92EF92FF920F931F93CF9345 |
:1000D000DF939CE2A92E91E0B92EC12CD12C43983C |
:1000E000C82FDD27D0938400C0938300B7DF11D5DC |
:1000F000EE24FF248701EA14FB040C051D0578F4A7 |
:1001000080916C00882311F4A6D101C09CD284E6B2 |
:10011000CFDF0894E11CF11C011D111DECCFC601BD |
:10012000B5012FE030E040E050E0C7D6A21AB30A94 |
:10013000C40AD50A0894A108B108C108D10889E108 |
:10014000A816B104C104D10428F489E1A82EB12C69 |
:10015000C12CD12CDED480919B008F5F80939B00BB |
:1001600080919B0066E089D690939B00E7D2D09364 |
:100170008400C093830072DF449BBACF82B390E8BF |
:10018000892782BBB5CF60E070E080917B00882337 |
:1001900079F580919200882349F120919400309163 |
:1001A000950041E02D32340708F09B01293C3105D0 |
:1001B00010F028EC30E02B303105F0F08CEF90E0BF |
:1001C000289FA001299F500D389F500D1124CA016E |
:1001D000885D994064EB70E05CD66D5F7F4F6F3F48 |
:1001E000710551F048F06FEF70E006C0AB9A05C0A2 |
:1001F00080919303682F7727AB98862F99270895CE |
:1002000080917700909178004091790050917A0028 |
:100210008417950760F4CA010A96209183003091F3 |
:10022000840028173907C0F42E5F3F4F11C04817CC |
:10023000590790F4CA0196958795969587952091D0 |
:100240008300309184008217930730F422503040AD |
:1002500030938400209383004115510529F4509375 |
:1002600084004093830008958091830090918400DE |
:10027000892B31F481E090E0909384008093830097 |
:100280000895809181009091820090937A038093E9 |
:10029000790380918000992790937C0380937B035E |
:1002A000809183009091840090937E0380937D03DE |
:1002B00080919400909195009093800380937F03A8 |
:1002C0000895CAE3D4E0DEBFCDBFDE011196E7E6B4 |
:1002D000F0E085E001900D928150E1F788E084BB69 |
:1002E00085BB8AEB81BB80E882BB8EE087BB81E067 |
:1002F00088BB95D1F8D1789480E180936D0000E0BF |
:1003000010E00130110509F4979A86E990E005D2D2 |
:1003100097988AEF90E001D20F5F1F4F05301105CB |
:1003200084F384EF91E0F9D14AEFA42E45E0B42E96 |
:10033000EE24FF2487013CE9C32E30E0D32E60EA8F |
:100340007CE880E090E0A8019701D9D5F6013183DF |
:1003500020832B5F354018F0F601B182A08282E045 |
:1003600090E0C80ED91E0894E11CF11C011D111D5E |
:100370009AE9C91692E0D90611F308F350D191DE3B |
:1003800080916D0080938B038091830080938C0318 |
:1003900010928D038AEA80938E0310928F0380E57A |
:1003A00088D2FCD184E690E0A4D184E690E0A1D18B |
:1003B00084E690E09ED18C018AEF90E09AD1C8014A |
:1003C000A1D18823E1F3979A1092840010928300C0 |
:1003D00045DE88E080BF81E087B98AE090E089D17E |
:1003E00088EE93E086D18C0181E090E090938400C8 |
:1003F0008093830090937C0380937B0310929500FD |
:100400001092940081E090E090937A0080937900BC |
:10041000BADE9927909384008093830080918300B3 |
:1004200080938C03C8016ED1882361F388EE93E03A |
:1004300060D18C01C80166D18823E1F384E13FDEFD |
:10044000E1CF1F920F920FB60F9211240F900FBEA3 |
:100450000F901F9018955E9B24C080916C0088239C |
:10046000E1F480918D0090918E00019690938E0022 |
:1004700080938D00FC01E356FD4FE081ED3019F0D3 |
:100480008436910539F410928E0010928D0081E02F |
:1004900080936C00589AECB9089510928E001092D7 |
:1004A0008D0008951F920F920FB60F9211248F9313 |
:1004B0008CB180938C008F910F900FBE0F901F9086 |
:1004C0001895AC01A0E0B0E09D01A817B90748F469 |
:1004D000EDE9F2E08191280F311D1196A417B507BF |
:1004E000C8F33F70FD01E356FD4FC90146E0969504 |
:1004F00087954A95E1F7835C80831196FD01E35669 |
:10050000FD4F2F733070822F835C8083A256BD4FC6 |
:100510008DE08C9310926C0080919D028CB90895AF |
:100520001F93CF93DF93382FEA01722F10E083E2FD |
:1005300080939D0260939E0230939F02A3E0B0E0FF |
:10054000772309F458C0772311F4972F07C0FE01D1 |
:10055000E10FF11D1F5F9081715011F4472F0EC004 |
:10056000FE01E10FF11D1F5F4081715039F0FE0166 |
:10057000E10FF11D1F5F6081715001C0672FFD0108 |
:10058000E356FD4F892F86958695835C808311966F |
:10059000FD01E356FD4F892F99278370907024E069 |
:1005A000880F991F2A95E1F755279A0194E036950F |
:1005B00027959A95E1F7822B835C80831196FD0144 |
:1005C000E356FD4F4F705070440F551F440F551F99 |
:1005D000862F992756E0969587955A95E1F7842BB3 |
:1005E000835C80831196FD01E356FD4F6F73635C5E |
:1005F00060831196A5CFCD0164DFDF91CF911F916C |
:100600000895CF93C82F8A3011F48DE0FADF5D9BF7 |
:10061000FECFCCB980E090E0CF910895089588E1B5 |
:100620008AB9599A80E189B960E070E081E093E08D |
:10063000C7D288EC90E05DD09093020380930103D1 |
:100640008AE28CB9089580910103909102035AD0F7 |
:10065000882391F080916C00882371F022E247E6B4 |
:1006600053E060919C0284E45BDF82E390E041D040 |
:10067000909302038093010308951F920F920FB687 |
:100680000F9211248F939F93809189038F5F8093A2 |
:100690008903809191008150809391008F3FE1F414 |
:1006A00083E08093910080918F009091900001965B |
:1006B0009093900080938F0080917B00882319F0A5 |
:1006C000815080937B0080919200882329F0809153 |
:1006D00092008150809392009F918F910F900FBE56 |
:1006E0000F901F90189582E083BF89B7816089BF02 |
:1006F000089520918F0030919000280F391FC90173 |
:100700000197089520918F0030919000821B930BE8 |
:10071000892F9927807899270895CF93DF93E9DF70 |
:10072000EC01CE01EFDF8823E1F3DF91CF91089553 |
:1007300086EA86B987E087B9369A089596E097B930 |
:1007400010BE83ED86B9349A97B9369A349BFECFA2 |
:1007500044B155B1440F551F440F551F493C510535 |
:1007600010F048EC50E080918100909182009C0153 |
:1007700063E0220F331F6A95E1F7281B390B420F04 |
:10078000531F83E0569547958A95E1F75093820071 |
:100790004093810016B888E080BF08958EB5806CC4 |
:1007A0008EBD8EB580648EBD89B7806289BF89B7E2 |
:1007B000846089BF08951F920F920FB60F92112483 |
:1007C0008F93809193008F5F809393008F910F9010 |
:1007D0000FBE0F901F9018951F920F920FB60F9299 |
:1007E00011242F933F938F939F930EB406FE0FC057 |
:1007F0001092930086B597B59093970080939600DA |
:100800008EB58F7B8EBD84E6809392003AC08EB504 |
:1008100080648EBD86B597B5209196003091970083 |
:10082000821B930B209193003327322F2227820FB4 |
:10083000931F35E0969587953A95E1F79093990047 |
:10084000809398008851914030F488E191E0909332 |
:100850009900809398002091980030919900285138 |
:1008600031408091940090919500820F931F96954E |
:10087000879590939900809398009093950080932A |
:1008800094009F918F913F912F910F900FBE0F90E9 |
:100890001F9018951F920F920FB60F9211248F93ED |
:1008A0008AB78F7B8ABF8F910F900FBE0F901F90DA |
:1008B000189582B986B7856486BF86B78F7D86BF57 |
:1008C0008FEF80938A0308951F920F920FB60F92B5 |
:1008D00011242F938F939F93EF93FF9381B19927C7 |
:1008E00080389105A1F08138910524F48036910576 |
:1008F00041F045C0883A910549F1883B910531F1B5 |
:100900003EC085EC86BF8FEF80938A033AC023B147 |
:1009100090918A039F3F49F410928A0320939A0092 |
:1009200080916D00281759F10FC0E92FFF27ED5670 |
:10093000FC4F20839F5F90938A0382E380937B0028 |
:100940009430E8F010928A0385E81AC090919A00DA |
:1009500080916D00981789F490918A03E92FFF2701 |
:10096000E557FC4F808183B9892F8F5F80938A037D |
:10097000883028F010928A0302C08FEF83B985EC8B |
:1009800086BFFF91EF919F918F912F910F900FBE96 |
:100990000F901F9018958091830090918400892B6F |
:1009A00041F482B3877C82BB8DE08FBD89E485BD35 |
:1009B000089580919B0099278230910509F445C0E4 |
:1009C000833091052CF4009779F0019759F108953F |
:1009D0008430910509F466C0843091050CF44EC052 |
:1009E000059709F472C008958DE08FBD89E685BD35 |
:1009F00082B3877D82BB949A82E087B9459B7AC097 |
:100A000082B3877E82BB959A99DE81E087B9809117 |
:100A10009B008F5F80939B00409882B3877E82BB50 |
:100A2000959A08958DE08FBD89E685BD82B3877E56 |
:100A300082BB959A81E087B945995CC08DE28FBDF4 |
:100A400089E485BD7BDE17B82BC08DE28FBD89E4BC |
:100A500085BD82B3877E82BB959A17B8459B4AC0F5 |
:100A600082B38F7C82BB939A69DE82E087B940981B |
:100A700080919B008F5F80939B0008958DE28FBDD6 |
:100A800099E495BD82B38F7C82BB939A82E087B94B |
:100A9000459930C08DE88FBD95BD50DE81E087B9A6 |
:100AA000409AE6CF8DE88FBD89E485BD82B38F7C07 |
:100AB00082BB939A81E087B9459B1CC082B3877D36 |
:100AC00082BB949A3BDE17B8D2CF8DE88FBD89E404 |
:100AD00085BD82B3877D82BB949A17B845990AC0B9 |
:100AE0008DE08FBD89E685BD29DE82E087B9409A19 |
:100AF00010929B0008951F920F920FB60F9211242F |
:100B0000979A4398449A97980F900FBE0F901F9012 |
:100B1000189580919B0099278230910529F18330A7 |
:100B200091052CF4009761F00197A1F008958430AD |
:100B3000910589F18430910514F10597B9F1089573 |
:100B40008DE08FBD89E685BD82B3877D82BB949A97 |
:100B500082E02AC08DE08FBD89E685BD82B3877EA5 |
:100B600082BB959A81E014C08DE28FBD89E485BD7A |
:100B700082B3877E82BB959A17B8409A08958DE21A |
:100B80008FBD89E485BD82B38F7C82BB939A82E05E |
:100B900087B9409808958DE88FBD89E485BD82B3FB |
:100BA0008F7C82BB939A81E087B9E7CF8DE88FBDB8 |
:100BB00089E485BD82B3877D82BB949A17B8E9CF5B |
:100BC0000F931F93CF93DF938C01EB01009711F4E8 |
:100BD000672BB9F16EE070E081E090E037D0FC0166 |
:100BE000892B71F180E88383209771F0D387C287C6 |
:100BF00081E8838380919B0390919C03892B21F44E |
:100C0000F0939C03E0939B0301151105C9F0118734 |
:100C1000008783818260838380919D0390919E03EE |
:100C2000892B71F4F0939E03E0939D0380919F03C1 |
:100C30009091A003892B21F4F093A003E0939F03EC |
:100C4000CF01DF91CF911F910F9108950F931F93C3 |
:100C5000CF93DF93869F8001879F100D969F100D85 |
:100C60001124C8010DD0EC01009721F0A80160E02B |
:100C700070E0FCD0CE01DF91CF911F910F910895CC |
:100C8000CF93DF93AC01029710F442E050E020E0F4 |
:100C900030E0A091A303B091A403BD01F901109726 |
:100CA00009F44CC08D919C9111978417950731F1EF |
:100CB0004817590738F42115310519F082179307A1 |
:100CC00008F49C01FD01A281B381109759F7211509 |
:100CD0003105A1F1C901841B950B049708F4A90102 |
:100CE000DB01E0E0F0E0109749F18D919C911197C4 |
:100CF00082179307F9F44217530779F4ED018A81BB |
:100D00009B81309719F09383828304C09093A4034E |
:100D10008093A303CD0102964AC0241B350BFD012D |
:100D2000E20FF31F41935193225030402D933C9397 |
:100D3000CF013DC0FD01A281B381D5CF8091A10338 |
:100D40009091A203892B41F48091700090917100E1 |
:100D50009093A2038093A103E0916E00F0916F0045 |
:100D6000309741F4EDB7FEB7809172009091730017 |
:100D7000E81BF90BA091A103B091A2039F012A1BCC |
:100D80003B0B2417350788F0CA010296281739074C |
:100D900060F0CD01840F951F02969093A20380937B |
:100DA000A1034D935D93CD0102C080E090E0DF91FF |
:100DB000CF910895CF93DF93009709F454C0DC01DD |
:100DC0001297ED011B821A828091A3039091A403D4 |
:100DD000009721F1FC0140E050E0EA17FB0718F111 |
:100DE000ED01FB83EA832D913C911197C20FD31F34 |
:100DF000CE0102968E179F0771F48A819B81280F7E |
:100E0000391F2E5F3F4F11963C932E938281938121 |
:100E1000FD01938382834115510559F4B093A403D6 |
:100E2000A093A30320C0AF010280F381E02D30978F |
:100E3000A1F6EA01BB83AA83CA01029628813981FF |
:100E4000820F931F8A179B0771F48D919C911197C4 |
:100E5000280F391F2E5F3F4F39832883FD01828180 |
:100E600093819B838A83DF91CF910895DC0101C038 |
:100E70006D9341505040E0F70895991B79E004C00C |
:100E8000991F961708F0961B881F7A95C9F78095C9 |
:100E90000895AA1BBB1B51E107C0AA1FBB1FA617C1 |
:100EA000B70710F0A61BB70B881F991F5A95A9F713 |
:100EB00080959095BC01CD010895A1E21A2EAA1B40 |
:100EC000BB1BFD010DC0AA1FBB1FEE1FFF1FA217FA |
:100ED000B307E407F50720F0A21BB30BE40BF50BF7 |
:100EE000661F771F881F991F1A9469F76095709580 |
:100EF000809590959B01AC01BD01CF01089597FBB2 |
:100F0000092E05260ED057FD04D0D7DF0AD0001CCD |
:100F100038F450954095309521953F4F4F4F5F4F96 |
:100F20000895F6F790958095709561957F4F8F4F56 |
:040F30009F4F089532 |
:100F3400FF01010A00FF004D6F696E0001400000CF |
:040F4400A5032000E1 |
:00000001FF |
/tags/V0.31/Doku/Test_Schub_BrushLess-Ctrl_V0_21.hex |
---|
0,0 → 1,277 |
:1000000012C017C52AC029C028C07FC426C025C079 |
:100010006BC4CAC322C0DDC220C0AAC21EC01DC09C |
:1000200089C521C51AC011241FBECFE5D4E0DEBFAB |
:10003000CDBF10E0A0E6B0E0E4E1F1E102C0059040 |
:100040000D92A637B107D9F713E0A6E7B0E001C0DB |
:100050001D92A23AB107E1F708C1D2CF20918500E5 |
:1000600080916100821710F4282FAB9A8091830051 |
:10007000909184008338910560F01BBC1ABC19BCB8 |
:1000800018BC13BCAB9A01979093840080938300B3 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C439885E090E059 |
:1000F0009093860080938500B1DF09D688EC90E06C |
:10010000A3D3C12FDD27D0938600C0938500EE24B2 |
:10011000FF248701EA14FB040C051D0578F4809187 |
:100120006D00882311F42ED201C024D384E6C5DFEC |
:100130000894E11CF11C011D111DECCFC601B50195 |
:100140002FE030E040E050E0C3D7A21AB30AC40A5F |
:10015000D50A0894A108B108C108D10889E1A816F8 |
:10016000B104C104D104C8F0D2D5809198008F5F4A |
:10017000809398008091980066E08AD790939800C9 |
:1001800074D3D0938600C093850068DF449BBFCFB3 |
:1001900082B390E8892782BBBACFDF91CF911F91BC |
:1001A0000F91FF90EF90DF90CF90BF90AF900895A8 |
:1001B00060E070E080917F00882379F580918E0067 |
:1001C000882349F1209190003091910041E02D3237 |
:1001D000340708F09B01293C310510F028EC30E091 |
:1001E0002B303105F0F08CEF90E0289FA001299F83 |
:1001F000500D389F500D1124CA01885D994064EB61 |
:1002000070E052D76D5F7F4F6F3F710551F048F03E |
:100210006FEF70E006C0AB9A05C080919003682F25 |
:100220007727AB98862F9927089580918300909126 |
:1002300084009093770380937603809182009927BE |
:100240009093790380937803809176009091770062 |
:1002500090937B0380937A0380919000909191001A |
:1002600090937D0380937C030895CAE3D4E0DEBFBE |
:10027000CDBFDE011196E8E6F0E085E001900D9239 |
:100280008150E1F7782E88E084BB85BB8AEB81BB87 |
:1002900080E882BB8EE087BB81E088BB57D2BAD2B0 |
:1002A000789480E180936E0000E010E00130110549 |
:1002B00009F4979A86E990E0C7D297988AEF90E080 |
:1002C000C3D20F5F1F4F0530110584F305E010E026 |
:1002D00084EF91E0B9D23AD2E6DE80916E0080934D |
:1002E0008803809185008093890310928A038AEAAB |
:1002F00080938B0310928C0380E5AAD3E8D285E625 |
:1003000090E08ED286E690E08BD287E690E088D2AD |
:100310007C018EEF90E084D24C018DEE93E080D290 |
:100320006C018EEE93E07CD25C01C70182D28823FF |
:10033000E1F3979A10928600109285008FDE88E094 |
:1003400080BF81E087B98AE090E06AD27C0181E0D9 |
:1003500090E090937903809378031092910010922B |
:100360009000809185008093890380919800871583 |
:1003700051F0109262001092630082E390E050D23C |
:100380007C01709098008091850090918600892B67 |
:1003900061F410927A0010926300C6014AD2882359 |
:1003A00071F081E0809362000AC08091620088232E |
:1003B00019F081E080937A008CED95E031D24EDE29 |
:1003C000809163008F5F80936300813051F680914C |
:1003D0006200882311F0979A01C0979826DF8091D8 |
:1003E0006D00882311F4CED001C0C4D1C40121D244 |
:1003F000882339F182E390E013D24C01809182008E |
:10040000482F5527209183003091840042175307CD |
:1004100010F48F5F04C02417350718F481508093BF |
:1004200082008091820090916100823428F0915086 |
:1004300090936100AB9A05C09F3F19F09F5F909326 |
:100440006100C601F6D1882319F18AE090E0E8D175 |
:100450006C012091780030917900C901880F991FB3 |
:10046000880F991F820F931F820F931F66E070E021 |
:100470001BD67093770060937600109279001092EB |
:10048000780080918E00882319F481E080936000C9 |
:10049000C501CFD1882391F18CED95E0C1D15C01EC |
:1004A00002301105B9F0033011053CF401151105B6 |
:1004B00059F00130110559F01FC00330110569F0E2 |
:1004C0000430110599F018C082E390E008C082E87A |
:1004D00090E005C08CE390E002C08CE890E090933F |
:1004E0008600809385000F5F1F4F08C086E990E06B |
:1004F000909386008093850000E010E0C70199D1B9 |
:10050000882331F08091760090917700892B29F033 |
:1005100080917A00882309F424CF81E080936200DF |
:10052000439884E690E07CD17C0180917A00882316 |
:1005300009F417CFAB9810927A008AE0C5DD1092CB |
:1005400062008091980081508093980088B18A6001 |
:1005500088B984E690E064D17C01C7016AD1882320 |
:10056000E1F384E690E05CD17C0197E0792EF9CE4E |
:100570001F920F920FB60F9211240F900FBE0F9083 |
:100580001F9018955E9B24C080916D008823E1F434 |
:100590008091890090918A00019690938A008093BF |
:1005A0008900FC01E656FD4FE081ED3019F08436FC |
:1005B000910539F410928A001092890081E08093AD |
:1005C0006D00589AECB9089510928A001092890033 |
:1005D00008951F920F920FB60F9211248F938CB132 |
:1005E000809388008F910F900FBE0F901F901895E9 |
:1005F000AC01A0E0B0E09D01A817B90748F4EAE912 |
:10060000F2E08191280F311D1196A417B507C8F3A8 |
:100610003F70FD01E656FD4FC90146E0969587956E |
:100620004A95E1F7835C80831196FD01E656FD4F04 |
:100630002F733070822F835C8083A556BD4F8DE071 |
:100640008C9310926D0080919A028CB908951F933B |
:10065000CF93DF93382FEA01722F10E083E280936B |
:100660009A0260939B0230939C02A3E0B0E0772350 |
:1006700009F458C0772311F4972F07C0FE01E10F4A |
:10068000F11D1F5F9081715011F4472F0EC0FE01C4 |
:10069000E10FF11D1F5F4081715039F0FE01E10F44 |
:1006A000F11D1F5F6081715001C0672FFD01E6568B |
:1006B000FD4F892F86958695835C80831196FD0179 |
:1006C000E656FD4F892F99278370907024E0880F9C |
:1006D000991F2A95E1F755279A0194E036952795B9 |
:1006E0009A95E1F7822B835C80831196FD01E65693 |
:1006F000FD4F4F705070440F551F440F551F862FEC |
:10070000992756E0969587955A95E1F7842B835C57 |
:1007100080831196FD01E656FD4F6F73635C608325 |
:100720001196A5CFCD0164DFDF91CF911F91089580 |
:10073000CF93C82F8A3011F48DE0FADF5D9BFECF96 |
:10074000CCB980E090E0CF910895089588E18AB90E |
:10075000599A80E189B960E070E088E993E03BD381 |
:1007600088EC90E05DD09093FF028093FE028AE2D5 |
:100770008CB908958091FE029091FF025AD088238F |
:1007800091F080916D00882371F022E244E653E0FD |
:100790006091990284E45BDF82E390E041D0909322 |
:1007A000FF028093FE0208951F920F920FB60F92E0 |
:1007B00011248F939F93809186038F5F809386038C |
:1007C00080918D00815080938D008F3FE1F483E014 |
:1007D00080938D0080918B0090918C000196909376 |
:1007E0008C0080938B0080917F00882319F08150CA |
:1007F00080937F0080918E00882329F080918E0065 |
:10080000815080938E009F918F910F900FBE0F901B |
:100810001F90189582E083BF89B7816089BF0895D2 |
:1008200020918B0030918C00280F391FC90101974E |
:10083000089520918B0030918C00821B930B892F9F |
:100840009927807899270895CF93DF93E9DFEC010A |
:10085000CE01EFDF8823E1F3DF91CF91089586EA9F |
:1008600086B987E087B9369A089527B196E097B997 |
:1008700010BE83ED86B9349A97B9369A349BFECF71 |
:1008800027B944B155B1440F551F440F551F493C7A |
:10089000510510F048EC50E0809183009091840065 |
:1008A0009C0163E0220F331F6A95E1F7281B390B87 |
:1008B000420F531F83E0569547958A95E1F7509371 |
:1008C00084004093830016B888E080BF08958EB5F9 |
:1008D000806C8EBD8EB580648EBD89B7806289BF05 |
:1008E00089B7846089BF08951F920F920FB60F9247 |
:1008F00011248F9380918F008F5F80938F008F9151 |
:100900000F900FBE0F901F9018951F920F920FB669 |
:100910000F9211242F933F938F939F930EB406FE53 |
:100920000FC010928F0086B597B590939300809377 |
:1009300092008EB58F7B8EBD84E680938E0070C052 |
:100940008EB580648EBD26B537B5809192009091AA |
:100950009300281B390B80918F009927982F8827A7 |
:10096000990F280F391F689414F836952795169417 |
:10097000E1F730939500209394002851314030F4F2 |
:1009800088E191E0909395008093940020919400E9 |
:100990003091950028513140309395002093940078 |
:1009A00080919000909191008217930730F480918C |
:1009B00090009091910001960CC0809190009091D0 |
:1009C00091002817390748F4809190009091910088 |
:1009D0000197909391008093900020919000309126 |
:1009E0009100C901880F991F880F991F880F991FBF |
:1009F000821B930B2091940030919500820F931FDE |
:100A000023E0969587952A95E1F79093950080933A |
:100A10009400909391008093900081E08093600017 |
:100A20009F918F913F912F910F900FBE0F901F902C |
:100A300018951F920F920FB60F9211248F938AB7B9 |
:100A40008F7B8ABF8F910F900FBE0F901F901895CC |
:100A500082B986B7856486BF86B78F7D86BF8FEFE4 |
:100A60008093870308951F920F920FB60F9211245F |
:100A70002F938F939F93EF93FF9381B199278038A2 |
:100A80009105A1F08138910524F48036910541F05B |
:100A900045C0883A910549F1883B910531F13EC046 |
:100AA00085EC86BF8FEF809387033AC023B1909186 |
:100AB00087039F3F49F4109287032093960080910B |
:100AC0006E00281759F10FC0E92FFF27E057FC4FA0 |
:100AD00020839F5F9093870382E380937F0094300D |
:100AE000E8F01092870385E81AC0909196008091F3 |
:100AF0006E00981789F490918703E92FFF27E85734 |
:100B0000FC4F808183B9892F8F5F80938703883062 |
:100B100028F01092870302C08FEF83B985EC86BF5F |
:100B2000FF91EF919F918F912F910F900FBE0F909A |
:100B30001F9018951F920F920FB60F9211242F93AA |
:100B40003F934F935F936F937F938F939F93AF9355 |
:100B5000BF93EF93FF93979A8091980099278230E3 |
:100B6000910509F44AC0833091052CF4009779F07F |
:100B7000019759F1B8C08430910509F476C08430EA |
:100B800091050CF458C0059709F486C0ACC082EA00 |
:100B90008FBD81E685BD88E087BB459B11C082B3D0 |
:100BA000877E82BB959A8091600081115EDE81E034 |
:100BB00087B9809198008F5F80939800409883C098 |
:100BC00082B3877D82BB949A8EC082B3877E82BBBC |
:100BD000959A45990CC082EA8FBD81E485BD8CE071 |
:100BE00087BB80916000811140DE17B836C082EA71 |
:100BF0008FBD81E685BD88E075C082EA8FBD81E446 |
:100C000085BD8CE087BB459B11C082B38F7C82BBC6 |
:100C1000939A80916000811128DE82E087B9409824 |
:100C2000809198008F5F809398004DC082B3877E3B |
:100C300082BB959A58C082B38F7C82BB939A4599A8 |
:100C40000EC082EA8FBD81E485BD8AE087BB8091BA |
:100C5000600081110ADE81E087B9409AE1CF82EA23 |
:100C60008FBD81E485BD8CE03DC082EA8FBD81E40B |
:100C700085BD8AE087BB459B0AC082B3877D82BB66 |
:100C8000949A809160008111F0DD17B8C8CF82B3CB |
:100C90008F7C82BB939A27C082B3877D82BB949A54 |
:100CA00045991BC082EA8FBD81E685BD88E087BB80 |
:100CB00081E084BD809160008111D7DD82E087B939 |
:100CC000409A109298008091780090917900019656 |
:100CD000909379008093780006C082EA8FBD81E40A |
:100CE00085BD8AE087BB979810926000FF91EF91D5 |
:100CF000BF91AF919F918F917F916F915F914F9134 |
:100D00003F912F910F900FBE0F901F9018958091DB |
:100D1000980099278230910551F1833091052CF488 |
:100D2000009769F00197B9F0089584309105D1F1E9 |
:100D3000843091054CF1059709F441C0089582EA89 |
:100D40008FBD81E685BD88E087BB82B3877D82BB8E |
:100D5000949A82E032C082EA8FBD81E685BD88E048 |
:100D600087BB82B3877E82BB959A81E018C082EAF6 |
:100D70008FBD81E485BD8CE087BB82B3877E82BB5B |
:100D8000959A17B8409A089582EA8FBD81E485BD8F |
:100D90008CE087BB82B38F7C82BB939A82E087B959 |
:100DA0004098089582EA8FBD81E485BD8AE087BBC3 |
:100DB00082B38F7C82BB939A81E087B9E3CF82EACA |
:100DC0008FBD81E485BD8AE087BB82B3877D82BB0E |
:100DD000949A17B8E5CF0F931F93CF93DF938C01AD |
:100DE000EB01009711F4672BB9F16EE070E081E040 |
:100DF00090E037D0FC01892B71F180E88383209744 |
:100E000071F0D387C28781E88383809198039091A2 |
:100E10009903892B21F4F0939903E093980301152A |
:100E20001105C9F0118700878381826083838091D7 |
:100E30009A0390919B03892B71F4F0939B03E093A9 |
:100E40009A0380919C0390919D03892B21F4F09348 |
:100E50009D03E0939C03CF01DF91CF911F910F91F0 |
:100E600008950F931F93CF93DF93869F8001879FF1 |
:100E7000100D969F100D1124C8010DD0EC010097A4 |
:100E800021F0A80160E070E0FCD0CE01DF91CF91AD |
:100E90001F910F910895CF93DF93AC01029710F447 |
:100EA00042E050E020E030E0A091A003B091A10327 |
:100EB000BD01F901109709F44CC08D919C911197D7 |
:100EC0008417950731F14817590738F42115310572 |
:100ED00019F08217930708F49C01FD01A281B381E8 |
:100EE000109759F721153105A1F1C901841B950B04 |
:100EF000049708F4A901DB01E0E0F0E0109749F164 |
:100F00008D919C91119782179307F9F4421753071B |
:100F100079F4ED018A819B81309719F09383828364 |
:100F200004C09093A1038093A003CD0102964AC010 |
:100F3000241B350BFD01E20FF31F41935193225007 |
:100F400030402D933C93CF013DC0FD01A281B38180 |
:100F5000D5CF80919E0390919F03892B41F480917E |
:100F600072009091730090939F0380939E03E09191 |
:100F70007000F0917100309741F4EDB7FEB78091A9 |
:100F8000740090917500E81BF90BA0919E03B0913D |
:100F90009F039F012A1B3B0B2417350788F0CA01CA |
:100FA00002962817390760F0CD01840F951F02962D |
:100FB00090939F0380939E034D935D93CD0102C058 |
:100FC00080E090E0DF91CF910895CF93DF93009779 |
:100FD00009F454C0DC011297ED011B821A82809142 |
:100FE000A0039091A103009721F1FC0140E050E0A3 |
:100FF000EA17FB0718F1ED01FB83EA832D913C9181 |
:101000001197C20FD31FCE0102968E179F0771F45E |
:101010008A819B81280F391F2E5F3F4F11963C9389 |
:101020002E9382819381FD01938382834115510523 |
:1010300059F4B093A103A093A00320C0AF01028094 |
:10104000F381E02D3097A1F6EA01BB83AA83CA01A0 |
:10105000029628813981820F931F8A179B0771F4AA |
:101060008D919C911197280F391F2E5F3F4F398327 |
:101070002883FD01828193819B838A83DF91CF91B5 |
:101080000895DC0101C06D9341505040E0F7089590 |
:10109000991B79E004C0991F961708F0961B881FCA |
:1010A0007A95C9F780950895AA1BBB1B51E107C02B |
:1010B000AA1FBB1FA617B70710F0A61BB70B881FE8 |
:1010C000991F5A95A9F780959095BC01CD01089577 |
:1010D000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F3C |
:1010E000EE1FFF1FA217B307E407F50720F0A21BAE |
:1010F000B30BE40BF50B661F771F881F991F1A941B |
:1011000069F760957095809590959B01AC01BD0144 |
:04111000CF0108956E |
:1011140001FF01010A00FF004D6F696E0001406488 |
:061124000000A203200000 |
:00000001FF |
/tags/V0.31/Doku/Test_Sollwert_Fix_32KHz_BrushLess-Ctrl_V0_23.hex |
---|
0,0 → 1,272 |
:1000000012C0F0C42AC029C028C059C426C025C0C7 |
:1000100045C4A4C322C0B7C220C084C21EC01DC034 |
:1000200062C5FAC41AC011241FBECFE5D4E0DEBFFA |
:10003000CDBF10E0A0E6B0E0E6ECF0E102C0059034 |
:100040000D92A637B107D9F713E0A6E7B0E001C0DB |
:100050001D92A23AB107E1F706C1D2CF20918500E7 |
:1000600080916100821710F4282FAB9A8091830051 |
:10007000909184008338910560F01BBC1ABC19BCB8 |
:1000800018BC13BCAB9A01979093840080938300B3 |
:100090000895822F99279BBD8ABD99BD88BD23BD38 |
:1000A00008958DE08FBD89E485BD85B3817F85BBD3 |
:1000B00089E08EBD089592B7980F82B7891B87FD9E |
:1000C000FCCF0895AF92BF92CF92DF92EF92FF9252 |
:1000D0000F931F93CF93DF93182F8CE2A82E81E00C |
:1000E000B82EC12CD12C439885E090E090938600E7 |
:1000F00080938500B3DFE4D588EC90E07FD3C12FF7 |
:10010000DD27D0938600C0938500EE24FF2487016D |
:10011000EA14FB040C051D0578F480916D0088231A |
:1001200011F40AD201C000D384E6C5DF0894E11CB3 |
:10013000F11C011D111DECCFC601B5012FE030E00F |
:1001400040E050E09ED7A21AB30AC40AD50A089428 |
:10015000A108B108C108D10889E1A816B104C104F9 |
:10016000D104C8F0ADD5809198008F5F809398003E |
:100170008091980066E065D79093980050D3D09313 |
:100180008600C09385006ADF449BBFCF82B390E8AE |
:10019000892782BBBACFDF91CF911F910F91FF903A |
:1001A000EF90DF90CF90BF90AF90089560E070E047 |
:1001B00080917F00882379F580918E00882349F112 |
:1001C000209190003091910041E02D32340708F0E9 |
:1001D0009B01293C310510F028EC30E02B30310533 |
:1001E000F0F08CEF90E0289FA001299F500D389FE0 |
:1001F000500D1124CA01885D994064EB70E02DD741 |
:100200006D5F7F4F6F3F710551F048F06FEF70E009 |
:1002100006C0AB9A05C080919003682F7727AB98F2 |
:10022000862F992708958091830090918400909360 |
:1002300077038093760380918200992790937903C6 |
:1002400080937803809176009091770090937B0360 |
:1002500080937A03809190009091910090937D0318 |
:1002600080937C030895CAE3D4E0DEBFCDBFDE01F6 |
:100270001196E8E6F0E085E001900D928150E1F7FB |
:10028000B82E88E084BB85BB8AEB81BB80E882BB4B |
:100290008EE087BB81E088BB33D296D2789480E130 |
:1002A00080936E0000E010E00130110509F4979A88 |
:1002B00086E990E0A3D297988AEF90E09FD20F5FF3 |
:1002C0001F4F0530110584F384EF91E097D218D2C7 |
:1002D000E8DE80916E008093880380918500809392 |
:1002E000890310928A038AEA80938B0310928C030D |
:1002F00080E587D3C6D285E690E06CD286E690E0B2 |
:1003000069D287E690E066D28C018EEF90E062D2EF |
:100310006C018DEE93E05ED27C018EEE93E05AD2BA |
:10032000C80161D28823E1F3979A10928600109257 |
:10033000850094DE88E080BF81E087B98AE090E0A4 |
:1003400049D28C0181E090E0909379038093780307 |
:10035000109291001092900029DF992790938600C7 |
:100360008093850080918500809389038FE090E0E1 |
:100370009093860080938500809198008B1551F0B2 |
:10038000109262001092630082E390E023D28C010D |
:10039000B09098008091850090918600892B61F43F |
:1003A00010927A0010926300C7011DD2882371F069 |
:1003B00081E0809362000AC080916200882319F076 |
:1003C00081E080937A008CED95E004D28091620008 |
:1003D000882321F010928600109285003FDE8091E4 |
:1003E00063008F5F80936300813009F0B5CF809107 |
:1003F0006200882311F0979A01C0979814DF8091CA |
:100400006D00882311F498D001C08ED1C601EBD1C4 |
:10041000882339F182E390E0DDD16C018091820084 |
:10042000482F5527209183003091840042175307AD |
:1004300010F48F5F04C02417350718F4815080939F |
:1004400082008091820090916100833328F0915066 |
:1004500090936100AB9A05C09F3F19F09F5F909306 |
:100460006100C701C0D1882319F18AE090E0B2D1C0 |
:100470007C012091780030917900C901880F991F83 |
:10048000880F991F820F931F820F931F66E070E001 |
:10049000E4D5709377006093760010927900109203 |
:1004A000780080918E00882319F481E080936000A9 |
:1004B000C80199D1882331F080917600909177001E |
:1004C000892B29F080917A00882309F445CF81E0B7 |
:1004D00080936200439884E690E07CD18C01809107 |
:1004E0007A00882309F438CFAB9810927A008AE01A |
:1004F000E9DD10926200809198008150809398000D |
:1005000088B18A6088B984E690E064D18C01C80122 |
:100510006AD18823E1F384E690E05CD18C0197E016 |
:10052000B92E1ACF1F920F920FB60F9211240F906F |
:100530000FBE0F901F9018955E9B24C080916D0098 |
:100540008823E1F48091890090918A00019690932C |
:100550008A0080938900FC01E656FD4FE081ED3072 |
:1005600019F08436910539F410928A0010928900AE |
:1005700081E080936D00589AECB9089510928A003A |
:100580001092890008951F920F920FB60F921124B6 |
:100590008F938CB1809388008F910F900FBE0F9036 |
:1005A0001F901895AC01A0E0B0E09D01A817B90715 |
:1005B00048F4EAE9F2E08191280F311D1196A41761 |
:1005C000B507C8F33F70FD01E656FD4FC90146E08F |
:1005D000969587954A95E1F7835C80831196FD0196 |
:1005E000E656FD4F2F733070822F835C8083A556B3 |
:1005F000BD4F8DE08C9310926D0080919A028CB962 |
:1006000008951F93CF93DF93382FEA01722F10E0E4 |
:1006100083E280939A0260939B0230939C02A3E052 |
:10062000B0E0772309F458C0772311F4972F07C05F |
:10063000FE01E10FF11D1F5F9081715011F4472FF2 |
:100640000EC0FE01E10FF11D1F5F4081715039F0B6 |
:10065000FE01E10FF11D1F5F6081715001C0672F26 |
:10066000FD01E656FD4F892F86958695835C808334 |
:100670001196FD01E656FD4F892F992783709070E2 |
:1006800024E0880F991F2A95E1F755279A0194E0F5 |
:10069000369527959A95E1F7822B835C8083119696 |
:1006A000FD01E656FD4F4F705070440F551F440F2B |
:1006B000551F862F992756E0969587955A95E1F70D |
:1006C000842B835C80831196FD01E656FD4F6F738A |
:1006D000635C60831196A5CFCD0164DFDF91CF917C |
:1006E0001F910895CF93C82F8A3011F48DE0FADF5F |
:1006F0005D9BFECFCCB980E090E0CF910895089546 |
:1007000088E18AB9599A80E189B960E070E082E7AE |
:1007100093E03AD388EC90E05DD09093FF02809311 |
:10072000FE028AE28CB908958091FE029091FF0248 |
:100730005AD0882391F080916D00882371F022E2D5 |
:1007400044E653E06091990284E45BDF82E390E049 |
:1007500041D09093FF028093FE0208951F920F9262 |
:100760000FB60F9211248F939F93809186038F5F12 |
:100770008093860380918D00815080938D008F3F00 |
:10078000E1F483E080938D0080918B0090918C0048 |
:10079000019690938C0080938B0080917F0088233A |
:1007A00019F0815080937F0080918E00882329F07A |
:1007B00080918E00815080938E009F918F910F9039 |
:1007C0000FBE0F901F90189582E083BF89B781609C |
:1007D00089BF089520918B0030918C00280F391F1C |
:1007E000C9010197089520918B0030918C00821BE4 |
:1007F000930B892F9927807899270895CF93DF93BA |
:10080000E9DFEC01CE01EFDF8823E1F3DF91CF9147 |
:10081000089586EA86B987E087B9369A089527B1A0 |
:1008200096E097B910BE83ED86B9349A97B9369A97 |
:10083000349BFECF27B944B155B1440F551F440F27 |
:10084000551F493C510510F048EC50E08091830061 |
:10085000909184009C0163E0220F331F6A95E1F7B9 |
:10086000281B390B420F531F83E0569547958A95F5 |
:10087000E1F7509384004093830016B888E080BF6E |
:1008800008958EB5806C8EBD8EB580648EBD89B79F |
:10089000806289BF89B7846089BF08951F920F92D3 |
:1008A0000FB60F9211248F9380918F008F5F8093EA |
:1008B0008F008F910F900FBE0F901F9018951F9271 |
:1008C0000F920FB60F9211242F933F938F939F9304 |
:1008D0000EB406FE0FC010928F0086B597B59093A8 |
:1008E0009300809392008EB58F7B8EBD84E68093BB |
:1008F0008E006FC08EB580648EBD86B597B5209191 |
:10090000920030919300821B930B20918F0033272C |
:10091000322F2227820F931F689414F8969587959B |
:100920001694E1F79093950080939400885191403C |
:1009300030F488E191E090939500809394002091A9 |
:1009400094003091950028513140309395002093C8 |
:10095000940080919000909191008217930730F459 |
:10096000809190009091910001960CC08091900030 |
:10097000909191002817390748F480919000909148 |
:1009800091000197909391008093900020919000A6 |
:1009900030919100C901880F991F880F991F880F06 |
:1009A000991F821B930B2091940030919500820F28 |
:1009B000931F23E0969587952A95E1F790939500EC |
:1009C00080939400909391008093900081E08093B5 |
:1009D00060009F918F913F912F910F900FBE0F90CC |
:1009E0001F9018951F920F920FB60F9211248F939C |
:1009F0008AB78F7B8ABF8F910F900FBE0F901F9089 |
:100A0000189582B986B7856486BF86B78F7D86BF05 |
:100A10008FEF8093870308951F920F920FB60F9266 |
:100A200011242F938F939F93EF93FF9381B1992775 |
:100A300080389105A1F08138910524F48036910524 |
:100A400041F045C0883A910549F1883B910531F163 |
:100A50003EC085EC86BF8FEF809387033AC023B1F9 |
:100A6000909187039F3F49F410928703209396004B |
:100A700080916E00281759F10FC0E92FFF27E0572A |
:100A8000FC4F20839F5F9093870382E380937F00D6 |
:100A90009430E8F01092870385E81AC09091960090 |
:100AA00080916E00981789F490918703E92FFF27B2 |
:100AB000E857FC4F808183B9892F8F5F809387032C |
:100AC000883028F01092870302C08FEF83B985EC3D |
:100AD00086BFFF91EF919F918F912F910F900FBE45 |
:100AE0000F901F9018951F920F920FB60F9211241E |
:100AF0002F933F934F935F936F937F938F939F9326 |
:100B0000AF93BF93EF93FF93979A809198009927A3 |
:100B10008230910509F44AC0833091052CF4009786 |
:100B200079F0019759F1B8C08430910509F476C085 |
:100B3000843091050CF458C0059709F486C0ACC008 |
:100B40008DEA8FBD89E685BD88E087BB459B11C0D6 |
:100B500082B3877E82BB959A8091600081115FDEAF |
:100B600081E087B9809198008F5F809398004098CA |
:100B700083C082B3877D82BB949A8EC082B3877E06 |
:100B800082BB959A45990CC08DEA8FBD89E485BDDD |
:100B90008CE087BB80916000811141DE17B836C0C0 |
:100BA0008DEA8FBD89E685BD88E075C08DEA8FBD71 |
:100BB00089E485BD8CE087BB459B11C082B38F7CE7 |
:100BC00082BB939A80916000811129DE82E087B90F |
:100BD0004098809198008F5F809398004DC082B3B9 |
:100BE000877E82BB959A58C082B38F7C82BB939AD2 |
:100BF00045990EC08DEA8FBD89E485BD8AE087BB2B |
:100C00008091600081110BDE81E087B9409AE1CFCD |
:100C10008DEA8FBD89E485BD8CE03DC08DEA8FBD36 |
:100C200089E485BD8AE087BB459B0AC082B3877D86 |
:100C300082BB949A809160008111F1DD17B8C8CF12 |
:100C400082B38F7C82BB939A27C082B3877D82BB9D |
:100C5000949A45991BC08DEA8FBD89E685BD88E0D1 |
:100C600087BB81E084BD809160008111D8DD82E086 |
:100C700087B9409A109298008091780090917900FD |
:100C80000196909379008093780006C08DEA8FBD1D |
:100C900089E485BD8AE087BB979810926000FF9138 |
:100CA000EF91BF91AF919F918F917F916F915F91E4 |
:100CB0004F913F912F910F900FBE0F901F9018955D |
:100CC0008091980099278230910551F183309105E8 |
:100CD0002CF4009769F00197B9F0089584309105DC |
:100CE000D1F1843091054CF1059709F441C0089584 |
:100CF0008DEA8FBD89E685BD88E087BB82B3877D9D |
:100D000082BB949A82E032C08DEA8FBD89E685BDB0 |
:100D100088E087BB82B3877E82BB959A81E018C04A |
:100D20008DEA8FBD89E485BD8CE087BB82B3877E69 |
:100D300082BB959A17B8409A08958DEA8FBD89E4D1 |
:100D400085BD8CE087BB82B38F7C82BB939A82E0A7 |
:100D500087B9409808958DEA8FBD89E485BD8AE002 |
:100D600087BB82B38F7C82BB939A81E087B9E3CF44 |
:100D70008DEA8FBD89E485BD8AE087BB82B3877D1C |
:100D800082BB949A17B8E5CF0F931F93CF93DF934D |
:100D90008C01EB01009711F4672BB9F16EE070E064 |
:100DA00081E090E037D0FC01892B71F180E88383EA |
:100DB000209771F0D387C28781E88383809198035D |
:100DC00090919903892B21F4F0939903E093980370 |
:100DD00001151105C9F01187008783818260838323 |
:100DE00080919A0390919B03892B71F4F0939B035C |
:100DF000E0939A0380919C0390919D03892B21F4A9 |
:100E0000F0939D03E0939C03CF01DF91CF911F915D |
:100E10000F9108950F931F93CF93DF93869F8001C7 |
:100E2000879F100D969F100D1124C8010DD0EC0165 |
:100E3000009721F0A80160E070E0FCD0CE01DF91C6 |
:100E4000CF911F910F910895CF93DF93AC0102973B |
:100E500010F442E050E020E030E0A091A003B09117 |
:100E6000A103BD01F901109709F44CC08D919C912B |
:100E700011978417950731F14817590738F4211550 |
:100E8000310519F08217930708F49C01FD01A28136 |
:100E9000B381109759F721153105A1F1C901841BC0 |
:100EA000950B049708F4A901DB01E0E0F0E010974E |
:100EB00049F18D919C91119782179307F9F442178C |
:100EC000530779F4ED018A819B81309719F0938360 |
:100ED000828304C09093A1038093A003CD01029666 |
:100EE0004AC0241B350BFD01E20FF31F41935193C0 |
:100EF000225030402D933C93CF013DC0FD01A28193 |
:100F0000B381D5CF80919E0390919F03892B41F4AB |
:100F1000809172009091730090939F0380939E0341 |
:100F2000E0917000F0917100309741F4EDB7FEB799 |
:100F30008091740090917500E81BF90BA0919E03BD |
:100F4000B0919F039F012A1B3B0B2417350788F0A4 |
:100F5000CA0102962817390760F0CD01840F951F4A |
:100F6000029690939F0380939E034D935D93CD01D2 |
:100F700002C080E090E0DF91CF910895CF93DF939E |
:100F8000009709F454C0DC011297ED011B821A820C |
:100F90008091A0039091A103009721F1FC0140E012 |
:100FA00050E0EA17FB0718F1ED01FB83EA832D916E |
:100FB0003C911197C20FD31FCE0102968E179F0747 |
:100FC00071F48A819B81280F391F2E5F3F4F119644 |
:100FD0003C932E9382819381FD01938382834115FB |
:100FE000510559F4B093A103A093A00320C0AF0111 |
:100FF0000280F381E02D3097A1F6EA01BB83AA833A |
:10100000CA01029628813981820F931F8A179B0794 |
:1010100071F48D919C911197280F391F2E5F3F4FCE |
:1010200039832883FD01828193819B838A83DF91A9 |
:10103000CF910895DC0101C06D9341505040E0F71D |
:101040000895991B79E004C0991F961708F0961B24 |
:10105000881F7A95C9F780950895AA1BBB1B51E19B |
:1010600007C0AA1FBB1FA617B70710F0A61BB70B18 |
:10107000881F991F5A95A9F780959095BC01CD01BD |
:101080000895A1E21A2EAA1BBB1BFD010DC0AA1FC9 |
:10109000BB1FEE1FFF1FA217B307E407F50720F0E1 |
:1010A000A21BB30BE40BF50B661F771F881F991F5C |
:1010B0001A9469F760957095809590959B01AC01A5 |
:0610C000BD01CF010895FF |
:1010C60001FF01010A00FF004D6F696E00014064D7 |
:0610D6000000A20320004F |
:00000001FF |
/tags/V0.31/Doku/_BL_Ctrl_History.txt |
---|
0,0 → 1,31 |
+++++++++++++++++++++++++++++++++++ |
Brushless-Control |
Holger Buss |
buss@Mikrocontroller.com |
+++++++++++++++++++++++++++++++++++ |
V0.21 13.01.2007 |
- Erste offizielle Version |
- Unterstützt I2C und PPM |
V0.23 |
- Bei niedrigen PWM-Werten, kam es am Motor zu einem "Knackgeräusch" (besonders in der 16kHz-Variante). |
- Manchmal reagierte der Regler nicht gleich auf das PPM-Einschalt-Signal, wenn der Regler länger auf 0% war |
- Die Kommutierungserkennung läuft jetzt im Interrupt |
- Komponenten zur Drehzahlregelung wieder entfernt, weil sie den Code unleserlich machten |
Kommt in einer späteren Version wahrscheinlich wieder rein |
V0.25 |
- Es wurden zu viele Kommutierungs-Interrupts ausgelöst |
V0.27 02.02.2007 |
- X3D-Protokoll implementiert (für eine Sonderversion des X3D mit serieller Ausgabe) |
V0.31 22.2.2007 |
- Das I2C-Bus Protokoll wurde geändert: |
Jeder Motor wird jetzt mit einem eigenen Datensatz angesprochen |
Aus den Motorreglern kann jetzt Strom und MaxPWM ausgelesen werden |
- Es hatte sich ein Fehler in der Umrechnung des seriellen Wertes (X-3D) eingeschlichen; das ist hier behoben |
Mittels eines PC-Programms (SimTxData.exe) kann das X-3D-Protokoll simuliert und so die Motoren angefahren werden |
/tags/V0.31/Doku/_Files.txt |
---|
0,0 → 1,12 |
Files: |
BrushLess-Ctrl_16kHz_Vx_xx.hex --> Software für 16kHz |
BrushLess-Ctrl_32kHz_Vx_xx.hex --> Software für 32kHz |
BrushLess-Ctrl_16kHz_ADRy_Vx_xx.hex --> Software für I2C und für X3D mit serieller Ausgabe 38400Bd (Motoradresse = y) |
Testprogramme (Achtung: Motor läuft an!) |
Test_Manuell_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft ungeregelt mit fester Frequenz |
Test_Schub_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft mit unterschiedlichen Leistungen |
Test_Sollwert_Fix_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft fix mit 7,8% PWM |
Sonstiges: |
Fuses_Mega8_8MHZ_Intern.gif --> Fusebits von Ponyprog |
/tags/V0.31/PPM_Decode.c |
---|
0,0 → 1,76 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned int PPM_Signal = 0; |
volatile unsigned char Timer1Overflow = 0; |
volatile unsigned char PPM_Timeout = 0; // Ungültig, wenn Null |
//############################################################################ |
// |
void InitPPM(void) |
//############################################################################ |
{ |
TCCR1B |= (1<<ICES1)|(1<<ICNC1); |
ICP_POS_FLANKE; |
ICP_INT_ENABLE; |
TIMER1_INT_ENABLE; |
} |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW1) |
//############################################################################ |
{ |
Timer1Overflow++; |
} |
//############################################################################ |
// |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int tim_alt; |
static unsigned int ppm; |
if(TCCR1B & (1<<ICES1)) // Positive Flanke |
{ |
Timer1Overflow = 0; |
tim_alt = ICR1; |
ICP_NEG_FLANKE; |
PPM_Timeout = 100; |
} |
else // Negative Flanke |
{ |
ICP_POS_FLANKE; |
#ifdef _32KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 32; |
#endif |
#ifdef _16KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 32; |
#endif |
if(ppm < 280) ppm = 280; |
ppm -= 280; |
if(PPM_Signal < ppm) PPM_Signal++; |
else if(PPM_Signal > ppm) PPM_Signal--; |
if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern |
PPM_Signal = ppm; |
ZeitZumAdWandeln = 1; |
} |
} |
//############################################################################ |
// |
SIGNAL(SIG_INTERRUPT0) |
//############################################################################ |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
} |
/tags/V0.31/PPM_Decode.h |
---|
0,0 → 1,27 |
/*############################################################################ |
############################################################################*/ |
extern volatile unsigned int PPM_Signal; |
extern volatile unsigned char PPM_Timeout; |
void InitPPM(void); |
#define INT0_ENABLE GIMSK |= 0x40 |
#define INT0_DISABLE GIMSK &= ~0x40 |
#define TIM0_START TIMSK |= 0x01 |
#define TIM0_STOPP TIMSK &= ~0x01 |
#define ICP_INT_ENABLE TIMSK |= 0x20 |
#define ICP_INT_DISABLE TIMSK &= ~0x20 |
#define TIMER1_INT_ENABLE TIMSK |= 0x04 |
#define TIMER1_INT_DISABLE TIMSK &= ~0x04 |
#define TIMER2_INT_ENABLE TIMSK |= 0x40 |
#define TIMER2_INT_DISABLE TIMSK &= ~0x40 |
#define INT0_POS_FLANKE MCUCR |= 0x01 |
#define INT0_ANY_FLANKE MCUCR |= 0x01 |
#define INT0_NEG_FLANKE MCUCR &= ~0x01 |
#define CLR_INT0_FLAG GIFR &= ~0x40 |
#define INIT_INT0_FLANKE MCUCR &= ~0x03; MCUCR |= 0x02; |
#define TIMER0_PRESCALER TCCR0 |
#define ICP_POS_FLANKE TCCR1B |= (1<<ICES1) |
#define ICP_NEG_FLANKE TCCR1B &= ~(1<<ICES1) |
/tags/V0.31/analog.c |
---|
0,0 → 1,40 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
//############################################################################ |
//Init ADC |
void ADC_Init(void) |
//############################################################################ |
{ |
ADCSRA = 0xA6; // Free Run & 1MHZ |
ADMUX = 7; // Kanal 7 |
ADCSRA |= 0x40; // Start |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void AdConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = 0x06; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = 0x06; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
i = ADCW * 4; |
if(i > 200) i = 200; |
Strom = (i + Strom * 7) / 8; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
/tags/V0.31/analog.h |
---|
0,0 → 1,5 |
extern void ADC_Init(void); |
extern void GetAnalogWerte(void); |
extern void AdConvert(void); |
/tags/V0.31/avr.mak |
---|
0,0 → 1,129 |
# TASKING EDE (Windows based integrated Embedded Development Environment) |
# |
# This makefile has been generated by TASKING EDE |
# |
# Toolchain: TASKING C for C166/ST10 v6.0 r4 |
# |
BINDIR = c:\c166\bin |
INCDIR = c:\c166\include |
LIBDIR = c:\c166\lib |
M166INC = c:\c166\include |
export M166INC |
CC166BIN = c:\c166\bin |
export CC166BIN |
PROJ = avr |
PROJDIR = c:\winavr\projects\flug\bl_mc_0_14 |
PRODDIR = c:\c166 |
OUTDIR = |
OPT_CC = -Ic:\c166\include -xmifp -Ms -FFSC -Ot -OB -OE -zautobitastruct-4 -zautobita-0 -zswitch_tabmem_default -s -wstrict -g -zvolatile_union -A1 -O1 |
OPT_MPP = DEF(_CPU,167) DEF(_EXT,1) DEF(__XPEN,0) DEF(__WRCFG,0) DEF(__CLKEN,0) DEF(__BYTDIS,0) DEF(__ROMEN,0) DEF(__RDYEN0,0) DEF(__SGTDIS,0) DEF(__STKSZ,0) DEF(__MCTC,1) DEF(__RWDC0,0) DEF(__MTTC0,0) DEF(__ALECTL0,0) DEF(__BUSACT0,1) DEF(__RDYEN0,0) DEF(__CSREN0,0) DEF(__CSWEN0,0) DEF(__BUSACT1,0) DEF(__BUSACT2,0) DEF(__BUSACT3,0) DEF(__BUSACT4,0) DEF(EVA,1) DEF(EX_AB,0) DEF(FLOAT,1) DEF(BIT_INIT,0) DEF(MODEL,SMALL) DEF(_USRSTACK,0) DEF(_SINGLE_FP,0) WA(1) |
OPT_AS = PL(60) PW(132) TA(8) WA(1) CHECKCPU16 CHECKBUS18 EX NOM166 SN(reg167.def) |
OPT_LC = _avr.ilo -cf -Ms -xmifp |
OPT_XVW = --single_instance -tcfg sim167.cfg -i -a 100 -b 200 -c 32 -s 26 |
all : "$(PROJ).abs" |
"uart.src" : "uart.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"uart.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "uart.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"uart.obj" : "uart.src" |
"c:\c166\bin\a166.exe" "uart.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"analog.src" : "analog.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"analog.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "analog.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"analog.obj" : "analog.src" |
"c:\c166\bin\a166.exe" "analog.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"interrupt4.src" : "interrupt4.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"interrupt4.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "interrupt4.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"interrupt4.obj" : "interrupt4.src" |
"c:\c166\bin\a166.exe" "interrupt4.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"main.src" : "main.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"main.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "main.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"main.obj" : "main.src" |
"c:\c166\bin\a166.exe" "main.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"ppm_decode.src" : "ppm_decode.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"ppm_decode.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "ppm_decode.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"ppm_decode.obj" : "ppm_decode.src" |
"c:\c166\bin\a166.exe" "ppm_decode.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"printf_p.src" : "printf_p.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"printf_p.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "printf_p.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"printf_p.obj" : "printf_p.src" |
"c:\c166\bin\a166.exe" "printf_p.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"timer0.src" : "timer0.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"timer0.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "timer0.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"timer0.obj" : "timer0.src" |
"c:\c166\bin\a166.exe" "timer0.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"twislave.src" : "twislave.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"twislave.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "twislave.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"twislave.obj" : "twislave.src" |
"c:\c166\bin\a166.exe" "twislave.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"$(PROJ).out" : "uart.obj" "analog.obj" "interrupt4.obj" "main.obj" "ppm_decode.obj" |
"$(PROJ).out" : "printf_p.obj" "timer0.obj" "twislave.obj" "_avr.ilo" |
"c:\c166\bin\cc166.exe" -o $@ -f <<EOF |
${separate "\n" $(match .obj $!) $(match .lno $!) $(match .lib $!) $(OPT_LC)} |
EOF |
"$(PROJ).abs" : "$(PROJ).out" |
"c:\c166\bin\ieee166.exe" $! $@ |
# Copyright (c) 2001 Altium, Ltd. |
# Serial: 979910-094 |
# EDE Version: 2.7 r5 |
/tags/V0.31/avr.opm |
---|
0,0 → 1,4 |
-G "C:\WinAVR\Projects\Flug\BL_MC_0_14\" |
-err "avr.err" |
-r |
-f "avr.mak" |
/tags/V0.31/avr_ctrl.psp |
---|
0,0 → 1,18 |
;Codewright Project Space File (do not remove or modify this line) |
[State] |
StateWindowFrame=10,18,939,1018,0x43097fca |
_StateHistory=PROJECTS,'..\Flight-Ctrl_V0_05\AVR.pjt','.\avr.pjt' |
_RestoreProject='.\avr.pjt' |
ProjSpaceFlags=0x00000000, 1 |
ProjViewSetShow=Abcccccbcccccc |
[Project] |
ConfigSetUserWorkspace='' |
ConfigSetUserWorkspaceParser='' |
ConfigSetUserWorkspaceTimeStamp=0 |
ConfigSetUserWorkspaceAutoSync=0 |
[Project.".\avr.pjt"] |
[Project."..\Flight-Ctrl_V0_05\AVR.pjt"] |
/tags/V0.31/main.c |
---|
0,0 → 1,349 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
/############################################################################*/ |
#include "main.h" |
unsigned int PWM = 0; |
unsigned int Strom = 0; //ca. in 0,1A |
unsigned char Strom_max = 0; |
unsigned char Mittelstrom = 0; |
unsigned int Drehzahl = 0; // in 100UPM 60 = 6000 |
unsigned int KommutierDelay = 10; |
unsigned int I2C_Timeout = 0; |
unsigned char SIO_Timeout = 0; |
unsigned int SollDrehzahl = 0; |
unsigned int IstDrehzahl = 0; |
unsigned int DrehZahlTabelle[256];//vorberechnete Werte zur Drehzahlerfassung |
unsigned char ZeitFuerBerechnungen = 1; |
unsigned char MotorAnwerfen = 0; |
unsigned char MotorGestoppt = 1; |
unsigned char MaxPWM = MAX_PWM; |
unsigned int CntKommutierungen = 0; |
unsigned int SIO_Drehzahl = 0; |
unsigned char ZeitZumAdWandeln = 1; |
//############################################################################ |
// |
void SetPWM(void) |
//############################################################################ |
{ |
unsigned char tmp_pwm; |
tmp_pwm = PWM; |
if(tmp_pwm > MaxPWM) // Strombegrenzung |
{ |
tmp_pwm = MaxPWM; |
PORTC |= ROT; |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
PORTC |= ROT; |
Strom--; |
} |
else |
{ |
#ifdef _32KHZ |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
#ifdef _16KHZ |
OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
#endif |
} |
} |
//############################################################################ |
// |
void PWM_Init(void) |
//############################################################################ |
{ |
PWM_OFF; |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
} |
//############################################################################ |
// |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
while((TCNT0 - dauer) & 0x80); |
} |
//############################################################################ |
// |
void Anwerfen(unsigned char pwm) |
//############################################################################ |
{ |
unsigned long timer = 300,i; |
DISABLE_SENSE_INT; |
PWM = 5; |
SetPWM(); |
Manuell(); |
Delay_ms(200); |
PWM = pwm; |
while(1) |
{ |
for(i=0;i<timer; i++) |
{ |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
Wait(100); // warten |
} |
timer-= timer/15+1; |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return; } |
Manuell(); |
Phase++; |
Phase %= 6; |
AdConvert(); |
PWM = pwm; |
SetPWM(); |
if(SENSE) |
{ |
PORTD ^= GRUEN; |
} |
} |
} |
//############################################################################ |
// |
unsigned char SollwertErmittlung(void) |
//############################################################################ |
{ |
static unsigned int sollwert = 0; |
unsigned int ppm; |
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
} |
else |
if(PPM_Timeout) // es gibt gültige PPM-Daten |
{ |
ppm = PPM_Signal; |
if(ppm > 300) ppm = 0; // ungültiges Signal |
if(ppm > 200) ppm = 200; |
if(ppm <= MIN_PPM) sollwert = 0; |
else |
{ |
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM); |
} |
PORTC &= ~ROT; |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
PORTC |= ROT; |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
PORTC &= ~ROT; |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
return(sollwert); |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
char altPhase = 0; |
int test = 0; |
unsigned int MinUpmPulse,Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
DDRC = 0x08; |
PORTC = 0x08; |
DDRD = 0xBA; |
PORTD = 0x80; |
DDRB = 0x0E; |
PORTB = 0x31; |
UART_Init(); |
Timer0_Init(); |
sei ();//Globale Interrupts Einschalten |
// Am Blinken erkennt man die richtige Motoradresse |
for(test=0;test<5;test++) |
{ |
if(test == MOTORADRESSE) PORTD |= GRUEN; |
Delay_ms(150); |
PORTD &= ~GRUEN; |
Delay_ms(250); |
} |
Delay_ms(500); |
UART_Init(); |
PWM_Init(); |
InitIC2_Slave(0x50); |
InitPPM(); |
Blink = SetDelay(101); |
Blink2 = SetDelay(102); |
MinUpmPulse = SetDelay(103); |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)); |
PORTD |= GRUEN; |
PWM = 0; |
SetPWM(); |
SFIOR = 0x08; // Analog Comperator ein |
ADMUX = 1; |
MinUpmPulse = SetDelay(10); |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung |
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder |
while (1) |
{ |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt |
{ |
MotorGestoppt = 0; |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
MinUpmPulse = SetDelay(50); // Timeout, falls ein Motor stehen bleibt |
altPhase = Phase; |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!PWM) // Sollwert == 0 |
{ |
MotorAnwerfen = 0; // kein Startversuch |
ZeitFuerBerechnungen = 0; |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(DrehzahlMessTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
STEUER_OFF; |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
MotorGestopptTimer = SetDelay(1500); |
} |
if(MotorGestoppt && !TEST_SCHUB) PWM = 0; |
SetPWM(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
{ |
if(MotorGestoppt) PORTD |= GRUEN; //else PORTD &= ~GRUEN; |
if(SIO_DEBUG) |
{ |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
} |
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung |
if(CheckDelay(MittelstromTimer)) |
{ |
MittelstromTimer = SetDelay(50); // alle 50ms |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
else if(Mittelstrom > Strom) Mittelstrom--; |
if(Mittelstrom > LIMIT_STROM)// Strom am Limit? |
{ |
MaxPWM--;// dann die Maximale PWM herunterfahren |
PORTC |= ROT; |
} |
else |
{ |
if(MaxPWM < MAX_PWM) MaxPWM++; |
} |
} |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
{ |
DrehzahlMessTimer = SetDelay(10); |
SIO_Drehzahl = (6 * CntKommutierungen) / (POLANZAHL / 2); |
CntKommutierungen = 0; |
if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
} |
if(CheckDelay(TestschubTimer)) |
{ |
TestschubTimer = SetDelay(1500); |
if(TEST_SCHUB) |
{ |
switch(test) |
{ |
case 0: PWM = 50; test++; break; |
case 1: PWM = 130; test++; break; |
case 2: PWM = 60; test++; break; |
case 3: PWM = 140; test++; break; |
case 4: PWM = 150; test = 0; break; |
default: test = 0; |
} |
} |
} |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
{ |
MotorGestoppt = 1; |
DISABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
if(MotorAnwerfen) |
{ |
PORTC &= ~ROT; |
MotorAnwerfen = 0; |
Anwerfen(10); |
PORTD |= GRUEN; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 10; |
SetPWM(); |
MinUpmPulse = SetDelay(200); |
while(!CheckDelay(MinUpmPulse)); // kurz Durchstarten |
MinUpmPulse = SetDelay(1000); |
altPhase = 7; |
} |
} |
} // ZeitFuerBerechnungen |
} // while(1) - Hauptschleife |
} |
/tags/V0.31/main.elf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.31/main.h |
---|
0,0 → 1,126 |
#ifndef _MAIN_H |
#define _MAIN_H |
#define MOTORADRESSE 4 // Adresse (1-4) |
#define MANUELL_PWM 0 // zur manuellen Vorgabe der PWM Werte: 0-255 |
#define TEST_MANUELL 0 // zum Testen der Hardware ohne Kommutierungsdetektion Werte: 0-255 (PWM) |
#define TEST_SCHUB 0 // Erzeugt ein Schubmuster Werte: 0 = normal 1 = Test |
#define POLANZAHL 12 // Anzahl der Pole (Magnete) Wird nur zur Drehzahlausgabe über Debug gebraucht |
#define MAX_PWM 255 |
#define MIN_PWM 3 |
#define MIN_PPM 10 // ab hier (PPM-Signal) schaltet der Regler erst ein |
#define FILTER_PPM 7 // wie stark soll das PPM-Signal gefiltert werden (Werte: 0-30)? |
#define SIO_DEBUG 0 // Testwertausgaben auf der seriellen Schnittstelle |
#define X3D_SIO 1 // serielles Protokoll des X3D (38400Bd) Achtung: dann muss SIO_DEBUG = 0 sein |
#define _16KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define _32KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
#ifdef _16KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 65 // ab ca. 6,5A PWM begrenzen |
#endif |
#ifdef _32KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 50 // ab ca. 5,0A PWM begrenzen |
#endif |
#define SYSCLK 8000000L //Quarz Frequenz in Hz |
//Robbe Roxxy 2824-34 mit Todd 10x4,5 bei 16kHz |
//PWM Strom Schub |
//10 0,18A 21g |
//20 0,30A 38g |
//30 0,40A 49g |
//40 0,54A 60g |
//50 0,70A 83g |
//60 0,95A 102g |
//70 1,25A 128g |
//80 1,50A 151g |
//90 1,83A 175g |
//100 2,25A 206g |
//110 2,66A 228g |
//120 3,10A 257g |
//130 3,55A 278g |
//140 4,00A 305g |
//150 4,50A 330g |
//160 5,30A 355g |
//170 5,85A 387g |
//180 6,40A 400g |
//190 7,10A 425g |
//200 7,60A 460g |
//0,5A 63g 14% |
//1,0A 110g 24% |
//1,5A 170g 32% |
//2,0A 195g 37% |
//2,5A 230g 41% |
//3,0A 260g 46% |
//3,5A 290g 50% |
//4,0A 310g 53% |
//4,5A 340g 58% |
//5,0A 360g 63% |
//5,5A 380g 67% |
//6,0A 400g 68% |
//6,5A 420g 70% |
//7,0A 450g 75% |
//7,5A 460g 78% |
//8,0A 475g 82% |
//9,0A 550g 86% |
//11 A 600g 100% |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "twislave.h" |
#include "old_macros.h" |
#include "analog.h" |
#include "uart.h" |
#include "timer0.h" |
#include "BLMC.h" |
#include "PPM_Decode.h" |
extern unsigned int I2C_Timeout; |
extern unsigned char SIO_Timeout; |
extern unsigned int PWM; |
extern unsigned int Strom; //ca. in 0,1A |
extern unsigned char Strom_max; |
extern unsigned char Mittelstrom; |
extern unsigned int CntKommutierungen; |
extern unsigned char MotorAnwerfen; |
extern unsigned char MotorGestoppt; |
extern unsigned char ZeitZumAdWandeln; |
extern unsigned char MaxPWM; |
#define ROT 0x08 |
#define GRUEN 0x80 |
#if defined(__AVR_ATmega8__) |
# define OC1 PB1 |
# define DDROC DDRB |
# define OCR OCR1A |
# define PWM10 WGM10 |
# define PWM11 WGM11 |
#endif |
#endif //_MAIN_H |
/tags/V0.31/main.lss |
---|
0,0 → 1,4534 |
main.elf: file format elf32-avr |
Sections: |
Idx Name Size VMA LMA File off Algn |
0 .text 00001bec 00000000 00000000 00000094 2**0 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
1 .data 00000024 00800060 00001bec 00001c80 2**0 |
CONTENTS, ALLOC, LOAD, DATA |
2 .bss 00000156 00800084 00800084 00001ca4 2**0 |
ALLOC |
3 .noinit 00000000 008001da 008001da 00001ca4 2**0 |
CONTENTS |
4 .eeprom 00000000 00810000 00810000 00001ca4 2**0 |
CONTENTS |
5 .stab 0000036c 00000000 00000000 00001ca4 2**2 |
CONTENTS, READONLY, DEBUGGING |
6 .stabstr 00000084 00000000 00000000 00002010 2**0 |
CONTENTS, READONLY, DEBUGGING |
7 .debug_aranges 000000b4 00000000 00000000 00002094 2**0 |
CONTENTS, READONLY, DEBUGGING |
8 .debug_pubnames 000006f5 00000000 00000000 00002148 2**0 |
CONTENTS, READONLY, DEBUGGING |
9 .debug_info 00001a41 00000000 00000000 0000283d 2**0 |
CONTENTS, READONLY, DEBUGGING |
10 .debug_abbrev 00000774 00000000 00000000 0000427e 2**0 |
CONTENTS, READONLY, DEBUGGING |
11 .debug_line 0000169d 00000000 00000000 000049f2 2**0 |
CONTENTS, READONLY, DEBUGGING |
12 .debug_str 00000874 00000000 00000000 0000608f 2**0 |
CONTENTS, READONLY, DEBUGGING |
Disassembly of section .text: |
00000000 <__vectors>: |
0: 0c 94 85 00 jmp 0x10a <__init> |
4: 0c 94 7e 0b jmp 0x16fc <__vector_1> |
8: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
10: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
14: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
18: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
1c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
20: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
24: 0c 94 67 09 jmp 0x12ce <__vector_9> |
28: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
2c: 0c 94 96 0b jmp 0x172c <__vector_11> |
30: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
34: 0c 94 18 02 jmp 0x430 <__vector_13> |
38: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
3c: 0c 94 e3 01 jmp 0x3c6 <__vector_15> |
40: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
44: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
48: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
4c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
50: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
00000054 <__ctors_end>: |
54: 20 2d mov r18, r0 |
56: 2d 20 and r2, r13 |
58: 52 65 ori r21, 0x52 ; 82 |
5a: 6d 6f ori r22, 0xFD ; 253 |
5c: 74 65 ori r23, 0x54 ; 84 |
5e: 20 20 and r2, r0 |
60: 2d 2d mov r18, r13 |
62: 20 20 and r2, r0 |
64: 20 20 and r2, r0 |
66: 20 20 and r2, r0 |
... |
00000069 <__c.1>: |
69: 20 2d 2d 20 44 69 73 70 6c 61 79 20 2d 2d 20 20 -- Display -- |
79: 20 20 20 20 00 . |
0000007e <__c.2>: |
7e: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |
8e: 20 20 20 20 00 . |
00000093 <__c.3>: |
93: 20 20 77 77 77 2e 4d 69 63 72 6f 53 50 53 2e 63 www.MicroSPS.c |
a3: 6f 6d 20 20 00 om . |
000000a8 <__c.2>: |
a8: 25 73 00 %s. |
000000ab <__c.3>: |
ab: 25 73 00 %s. |
000000ae <__c.4>: |
ae: 25 73 00 %s. |
000000b1 <__c.5>: |
b1: 25 73 00 %s. |
000000b4 <__c.3>: |
b4: 56 65 72 62 69 6e 64 65 6e 20 6d 69 74 00 Verbinden mit. |
000000c2 <__c.4>: |
c2: 4d 69 63 72 6f 53 50 53 3a 25 32 69 20 00 MicroSPS:%2i . |
000000d0 <__c.5>: |
d0: 4d 61 78 20 41 64 72 65 73 73 65 00 Max Adresse. |
000000dc <__c.6>: |
dc: 25 32 69 20 00 %2i . |
000000e1 <__c.7>: |
e1: 43 68 65 63 6b 73 75 6d 00 Checksum. |
000000ea <__c.8>: |
ea: 45 72 72 6f 72 73 3a 25 35 69 20 00 Errors:%5i . |
000000f6 <__c.9>: |
f6: 44 69 73 70 6c 61 79 00 Display. |
000000fe <__c.10>: |
fe: 5a 65 69 6c 65 6e 3a 25 31 69 20 00 Zeilen:%1i . |
0000010a <__init>: |
10a: 11 24 eor r1, r1 |
10c: 1f be out 0x3f, r1 ; 63 |
10e: cf e5 ldi r28, 0x5F ; 95 |
110: d8 e0 ldi r29, 0x08 ; 8 |
112: de bf out 0x3e, r29 ; 62 |
114: cd bf out 0x3d, r28 ; 61 |
00000116 <__do_copy_data>: |
116: 10 e0 ldi r17, 0x00 ; 0 |
118: a0 e6 ldi r26, 0x60 ; 96 |
11a: b0 e0 ldi r27, 0x00 ; 0 |
11c: ec ee ldi r30, 0xEC ; 236 |
11e: fb e1 ldi r31, 0x1B ; 27 |
120: 02 c0 rjmp .+4 ; 0x126 <.do_copy_data_start> |
00000122 <.do_copy_data_loop>: |
122: 05 90 lpm r0, Z+ |
124: 0d 92 st X+, r0 |
00000126 <.do_copy_data_start>: |
126: a4 38 cpi r26, 0x84 ; 132 |
128: b1 07 cpc r27, r17 |
12a: d9 f7 brne .-10 ; 0x122 <.do_copy_data_loop> |
0000012c <__do_clear_bss>: |
12c: 11 e0 ldi r17, 0x01 ; 1 |
12e: a4 e8 ldi r26, 0x84 ; 132 |
130: b0 e0 ldi r27, 0x00 ; 0 |
132: 01 c0 rjmp .+2 ; 0x136 <.do_clear_bss_start> |
00000134 <.do_clear_bss_loop>: |
134: 1d 92 st X+, r1 |
00000136 <.do_clear_bss_start>: |
136: aa 3d cpi r26, 0xDA ; 218 |
138: b1 07 cpc r27, r17 |
13a: e1 f7 brne .-8 ; 0x134 <.do_clear_bss_loop> |
13c: 0c 94 e5 00 jmp 0x1ca <main> |
00000140 <__bad_interrupt>: |
140: 0c 94 00 00 jmp 0x0 <__vectors> |
00000144 <Sekundentakt_Init>: |
unsigned int IntervallDebug = 250, IntervallDisplay = 120; |
void Sekundentakt_Init(void) |
{ |
_SekTimer = SetDelay(1000); |
144: 88 ee ldi r24, 0xE8 ; 232 |
146: 93 e0 ldi r25, 0x03 ; 3 |
148: 0e 94 a8 09 call 0x1350 <SetDelay> |
14c: 90 93 91 00 sts 0x0091, r25 |
150: 80 93 90 00 sts 0x0090, r24 |
154: 08 95 ret |
00000156 <Sekundentakt>: |
} |
void Sekundentakt(void) |
{ |
if(CheckDelay(_SekTimer)) |
156: 80 91 90 00 lds r24, 0x0090 |
15a: 90 91 91 00 lds r25, 0x0091 |
15e: 0e 94 b1 09 call 0x1362 <CheckDelay> |
162: 88 23 and r24, r24 |
164: 31 f1 breq .+76 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
GetKeyboard(); |
166: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
_SekTimer += 1000; |
16a: 80 91 90 00 lds r24, 0x0090 |
16e: 90 91 91 00 lds r25, 0x0091 |
172: 88 51 subi r24, 0x18 ; 24 |
174: 9c 4f sbci r25, 0xFC ; 252 |
176: 90 93 91 00 sts 0x0091, r25 |
17a: 80 93 90 00 sts 0x0090, r24 |
if(!CntDatensaetzeProSekunde) UebertragungUnterbrochen = 1; else UebertragungUnterbrochen = 0; |
17e: 80 91 66 00 lds r24, 0x0066 |
182: 88 23 and r24, r24 |
184: 21 f4 brne .+8 ; 0x18e <Sekundentakt+0x38> |
186: 81 e0 ldi r24, 0x01 ; 1 |
188: 80 93 84 00 sts 0x0084, r24 |
18c: 02 c0 rjmp .+4 ; 0x192 <Sekundentakt+0x3c> |
18e: 10 92 84 00 sts 0x0084, r1 |
CntDatensaetzeProSekunde = 0; |
192: 10 92 66 00 sts 0x0066, r1 |
if(++Sekunde == 60) |
196: 80 91 8d 00 lds r24, 0x008D |
19a: 8f 5f subi r24, 0xFF ; 255 |
19c: 80 93 8d 00 sts 0x008D, r24 |
1a0: 8c 33 cpi r24, 0x3C ; 60 |
1a2: 39 f4 brne .+14 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
Sekunde = 0; |
1a4: 10 92 8d 00 sts 0x008D, r1 |
Minute++; |
1a8: 80 91 8c 00 lds r24, 0x008C |
1ac: 8f 5f subi r24, 0xFF ; 255 |
1ae: 80 93 8c 00 sts 0x008C, r24 |
1b2: 08 95 ret |
000001b4 <Init>: |
} |
} |
} |
void Init(void) |
{ |
VersionInfo.Hauptversion = 0; |
1b4: 10 92 c9 00 sts 0x00C9, r1 |
VersionInfo.Nebenversion = 99; |
1b8: 83 e6 ldi r24, 0x63 ; 99 |
1ba: 80 93 ca 00 sts 0x00CA, r24 |
VersionInfo.PCKompatibel = 1; |
1be: 81 e0 ldi r24, 0x01 ; 1 |
1c0: 80 93 cb 00 sts 0x00CB, r24 |
VersionInfo.Commercial = 0x00; |
1c4: 10 92 cc 00 sts 0x00CC, r1 |
1c8: 08 95 ret |
000001ca <main>: |
} |
#define MENU 0 |
#define REMOTE 1 |
//############################################################################ |
//Hauptprogramm |
void main (void) |
//############################################################################ |
{ |
1ca: ca e5 ldi r28, 0x5A ; 90 |
1cc: d8 e0 ldi r29, 0x08 ; 8 |
1ce: de bf out 0x3e, r29 ; 62 |
1d0: cd bf out 0x3d, r28 ; 61 |
char z,txt[]= {"Moin"},key,key_old = 255; |
1d2: de 01 movw r26, r28 |
1d4: 11 96 adiw r26, 0x01 ; 1 |
1d6: e7 e6 ldi r30, 0x67 ; 103 |
1d8: f0 e0 ldi r31, 0x00 ; 0 |
1da: 85 e0 ldi r24, 0x05 ; 5 |
1dc: 01 90 ld r0, Z+ |
1de: 0d 92 st X+, r0 |
1e0: 81 50 subi r24, 0x01 ; 1 |
1e2: e1 f7 brne .-8 ; 0x1dc <main+0x12> |
int test = 0; |
unsigned int DelayTast; |
unsigned int DelayDaten,DelayDisplay; |
unsigned char mode = REMOTE; |
1e4: 91 e0 ldi r25, 0x01 ; 1 |
1e6: b9 2e mov r11, r25 |
unsigned char neueDatenuebertragung = 1; |
UART_Init(); |
1e8: 0e 94 cc 04 call 0x998 <UART_Init> |
LCD_Init(); |
1ec: 0e 94 1f 06 call 0xc3e <LCD_Init> |
UART_Init(); |
1f0: 0e 94 cc 04 call 0x998 <UART_Init> |
Timer1_Init(); |
1f4: 0e 94 9e 09 call 0x133c <Timer1_Init> |
Keyboard_Init(); |
1f8: 0e 94 c9 09 call 0x1392 <Keyboard_Init> |
Sekundentakt_Init(); |
1fc: 0e 94 a2 00 call 0x144 <Sekundentakt_Init> |
InitIR(); |
200: 0e 94 67 0b call 0x16ce <InitIR> |
ADC_Init(); |
204: 0e 94 42 0c call 0x1884 <ADC_Init> |
Init(); |
208: 0e 94 da 00 call 0x1b4 <Init> |
sei ();//Globale Interrupts Einschalten |
20c: 78 94 sei |
DDRB = 0xff; |
20e: 8f ef ldi r24, 0xFF ; 255 |
210: 87 bb out 0x17, r24 ; 23 |
PORTB = 0x00; |
212: 18 ba out 0x18, r1 ; 24 |
LCD_Clear; |
214: 81 e0 ldi r24, 0x01 ; 1 |
216: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
21a: 0e 94 c9 05 call 0xb92 <_long_delay> |
/* while(1) |
*/ |
DelayTast = SetDelay(80); |
21e: 80 e5 ldi r24, 0x50 ; 80 |
220: 90 e0 ldi r25, 0x00 ; 0 |
222: 0e 94 a8 09 call 0x1350 <SetDelay> |
226: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
228: 88 ec ldi r24, 0xC8 ; 200 |
22a: 90 e0 ldi r25, 0x00 ; 0 |
22c: 0e 94 a8 09 call 0x1350 <SetDelay> |
230: 8c 01 movw r16, r24 |
DelayDisplay = SetDelay(300); |
232: 8c e2 ldi r24, 0x2C ; 44 |
234: 91 e0 ldi r25, 0x01 ; 1 |
236: 0e 94 a8 09 call 0x1350 <SetDelay> |
23a: 6c 01 movw r12, r24 |
ClearIntervalle(); |
23c: 0e 94 2e 05 call 0xa5c <ClearIntervalle> |
while (1) |
{ |
if(mode == MENU) |
240: bb 20 and r11, r11 |
242: 11 f5 brne .+68 ; 0x288 <main+0xbe> |
{ |
Delay_ms(10); |
244: 8a e0 ldi r24, 0x0A ; 10 |
246: 90 e0 ldi r25, 0x00 ; 0 |
248: 0e 94 bc 09 call 0x1378 <Delay_ms> |
key = GetKeyboard(); |
24c: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
Menu(key); |
250: 99 27 eor r25, r25 |
252: 0e 94 64 0a call 0x14c8 <Menu> |
if(_TASTE5) |
256: cb 9b sbis 0x19, 3 ; 25 |
258: f5 cf rjmp .-22 ; 0x244 <main+0x7a> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
25a: 8a e0 ldi r24, 0x0A ; 10 |
25c: 90 e0 ldi r25, 0x00 ; 0 |
25e: 0e 94 bc 09 call 0x1378 <Delay_ms> |
262: cb 99 sbic 0x19, 3 ; 25 |
264: fa cf rjmp .-12 ; 0x25a <main+0x90> |
mode = REMOTE; |
266: 81 e0 ldi r24, 0x01 ; 1 |
268: b8 2e mov r11, r24 |
DelayTast = SetDelay(100); |
26a: 84 e6 ldi r24, 0x64 ; 100 |
26c: 90 e0 ldi r25, 0x00 ; 0 |
26e: 0e 94 a8 09 call 0x1350 <SetDelay> |
272: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
274: 88 ec ldi r24, 0xC8 ; 200 |
276: 90 e0 ldi r25, 0x00 ; 0 |
278: 0e 94 a8 09 call 0x1350 <SetDelay> |
27c: 8c 01 movw r16, r24 |
LCD_Clear; |
27e: 8b 2d mov r24, r11 |
280: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
284: 0e 94 c9 05 call 0xb92 <_long_delay> |
} |
} |
else |
if(mode == REMOTE) |
288: 81 e0 ldi r24, 0x01 ; 1 |
28a: b8 16 cp r11, r24 |
28c: c9 f6 brne .-78 ; 0x240 <main+0x76> |
{ |
BearbeiteRxDaten(); |
28e: 0e 94 fe 03 call 0x7fc <BearbeiteRxDaten> |
if(CheckDelay(DelayDaten)) |
292: c8 01 movw r24, r16 |
294: 0e 94 b1 09 call 0x1362 <CheckDelay> |
298: 88 23 and r24, r24 |
29a: c9 f3 breq .-14 ; 0x28e <main+0xc4> |
{ |
Sekundentakt(); |
29c: 0e 94 ab 00 call 0x156 <Sekundentakt> |
DelayDaten = SetDelay(10); |
2a0: 8a e0 ldi r24, 0x0A ; 10 |
2a2: 90 e0 ldi r25, 0x00 ; 0 |
2a4: 0e 94 a8 09 call 0x1350 <SetDelay> |
2a8: 8c 01 movw r16, r24 |
if(CheckDelay(DelayDisplay)) |
2aa: c6 01 movw r24, r12 |
2ac: 0e 94 b1 09 call 0x1362 <CheckDelay> |
2b0: 88 23 and r24, r24 |
2b2: 39 f0 breq .+14 ; 0x2c2 <main+0xf8> |
{ |
DelayDisplay = SetDelay(300); |
2b4: 8c e2 ldi r24, 0x2C ; 44 |
2b6: 91 e0 ldi r25, 0x01 ; 1 |
2b8: 0e 94 a8 09 call 0x1350 <SetDelay> |
2bc: 6c 01 movw r12, r24 |
PollDisplay = 1; |
2be: b0 92 ed 00 sts 0x00ED, r11 |
} |
key = GetKeyboard2(); |
2c2: 0e 94 57 0a call 0x14ae <GetKeyboard2> |
DatenUebertragung(key); |
2c6: 99 27 eor r25, r25 |
2c8: 0e 94 51 05 call 0xaa2 <DatenUebertragung> |
if(UebertragungUnterbrochen) |
2cc: 80 91 84 00 lds r24, 0x0084 |
2d0: 88 23 and r24, r24 |
2d2: 81 f1 breq .+96 ; 0x334 <main+0x16a> |
{ |
//01234567890123456789 |
LCD_printfxy(0,0," -- Remote -- "); |
2d4: 60 e0 ldi r22, 0x00 ; 0 |
2d6: 86 2f mov r24, r22 |
2d8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2dc: 84 e5 ldi r24, 0x54 ; 84 |
2de: 90 e0 ldi r25, 0x00 ; 0 |
2e0: 9f 93 push r25 |
2e2: 8f 93 push r24 |
2e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1," -- Display -- "); |
2e8: 61 e0 ldi r22, 0x01 ; 1 |
2ea: 80 e0 ldi r24, 0x00 ; 0 |
2ec: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2f0: 0f 90 pop r0 |
2f2: 0f 90 pop r0 |
2f4: 89 e6 ldi r24, 0x69 ; 105 |
2f6: 90 e0 ldi r25, 0x00 ; 0 |
2f8: 9f 93 push r25 |
2fa: 8f 93 push r24 |
2fc: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,2," "); |
300: 62 e0 ldi r22, 0x02 ; 2 |
302: 80 e0 ldi r24, 0x00 ; 0 |
304: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
308: 0f 90 pop r0 |
30a: 0f 90 pop r0 |
30c: 8e e7 ldi r24, 0x7E ; 126 |
30e: 90 e0 ldi r25, 0x00 ; 0 |
310: 9f 93 push r25 |
312: 8f 93 push r24 |
314: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,3," www.MicroSPS.com "); |
318: 63 e0 ldi r22, 0x03 ; 3 |
31a: 80 e0 ldi r24, 0x00 ; 0 |
31c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
320: 0f 90 pop r0 |
322: 0f 90 pop r0 |
324: 83 e9 ldi r24, 0x93 ; 147 |
326: 90 e0 ldi r25, 0x00 ; 0 |
328: 9f 93 push r25 |
32a: 8f 93 push r24 |
32c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
330: 0f 90 pop r0 |
332: 0f 90 pop r0 |
} |
if(CheckDelay(DelayTast)) |
334: c7 01 movw r24, r14 |
336: 0e 94 b1 09 call 0x1362 <CheckDelay> |
33a: 88 23 and r24, r24 |
33c: 09 f4 brne .+2 ; 0x340 <main+0x176> |
33e: a7 cf rjmp .-178 ; 0x28e <main+0xc4> |
{ |
DelayTast = SetDelay(100); |
340: 84 e6 ldi r24, 0x64 ; 100 |
342: 90 e0 ldi r25, 0x00 ; 0 |
344: 0e 94 a8 09 call 0x1350 <SetDelay> |
348: 7c 01 movw r14, r24 |
if(_TASTE5) |
34a: cb 9b sbis 0x19, 3 ; 25 |
34c: 0c c0 rjmp .+24 ; 0x366 <main+0x19c> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
34e: 8a e0 ldi r24, 0x0A ; 10 |
350: 90 e0 ldi r25, 0x00 ; 0 |
352: 0e 94 bc 09 call 0x1378 <Delay_ms> |
356: cb 99 sbic 0x19, 3 ; 25 |
358: fa cf rjmp .-12 ; 0x34e <main+0x184> |
mode = MENU; |
35a: bb 24 eor r11, r11 |
LCD_Clear; |
35c: 81 e0 ldi r24, 0x01 ; 1 |
35e: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
362: 0e 94 c9 05 call 0xb92 <_long_delay> |
366: 80 91 be 00 lds r24, 0x00BE |
} |
// if(key & 0x10) DebugIn.Digital[0] |= 0x01; else DebugIn.Digital[0] &= ~0x01; |
if(PIND & 0x08) DebugIn.Digital[0] |= 0x02; else DebugIn.Digital[0] &= ~0x02; |
36a: 83 9b sbis 0x10, 3 ; 16 |
36c: 02 c0 rjmp .+4 ; 0x372 <main+0x1a8> |
36e: 82 60 ori r24, 0x02 ; 2 |
370: 01 c0 rjmp .+2 ; 0x374 <main+0x1aa> |
372: 8d 7f andi r24, 0xFD ; 253 |
374: 80 93 be 00 sts 0x00BE, r24 |
378: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x10) DebugIn.Digital[0] |= 0x04; else DebugIn.Digital[0] &= ~0x04; |
37c: 84 9b sbis 0x10, 4 ; 16 |
37e: 02 c0 rjmp .+4 ; 0x384 <main+0x1ba> |
380: 84 60 ori r24, 0x04 ; 4 |
382: 01 c0 rjmp .+2 ; 0x386 <main+0x1bc> |
384: 8b 7f andi r24, 0xFB ; 251 |
386: 80 93 be 00 sts 0x00BE, r24 |
38a: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x20) DebugIn.Digital[0] |= 0x08; else DebugIn.Digital[0] &= ~0x08; |
38e: 85 9b sbis 0x10, 5 ; 16 |
390: 02 c0 rjmp .+4 ; 0x396 <main+0x1cc> |
392: 88 60 ori r24, 0x08 ; 8 |
394: 01 c0 rjmp .+2 ; 0x398 <main+0x1ce> |
396: 87 7f andi r24, 0xF7 ; 247 |
398: 80 93 be 00 sts 0x00BE, r24 |
39c: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x40) DebugIn.Digital[0] |= 0x10; else DebugIn.Digital[0] &= ~0x10; |
3a0: 86 9b sbis 0x10, 6 ; 16 |
3a2: 02 c0 rjmp .+4 ; 0x3a8 <main+0x1de> |
3a4: 80 61 ori r24, 0x10 ; 16 |
3a6: 01 c0 rjmp .+2 ; 0x3aa <main+0x1e0> |
3a8: 8f 7e andi r24, 0xEF ; 239 |
3aa: 80 93 be 00 sts 0x00BE, r24 |
3ae: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x80) DebugIn.Digital[0] |= 0x20; else DebugIn.Digital[0] &= ~0x20; |
3b2: 87 9b sbis 0x10, 7 ; 16 |
3b4: 02 c0 rjmp .+4 ; 0x3ba <main+0x1f0> |
3b6: 80 62 ori r24, 0x20 ; 32 |
3b8: 01 c0 rjmp .+2 ; 0x3bc <main+0x1f2> |
3ba: 8f 7d andi r24, 0xDF ; 223 |
3bc: 80 93 be 00 sts 0x00BE, r24 |
GetAnalogWerte(); |
3c0: 0e 94 4e 0c call 0x189c <GetAnalogWerte> |
3c4: 3d cf rjmp .-390 ; 0x240 <main+0x76> |
000003c6 <__vector_15>: |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
3c6: 1f 92 push r1 |
3c8: 0f 92 push r0 |
3ca: 0f b6 in r0, 0x3f ; 63 |
3cc: 0f 92 push r0 |
3ce: 11 24 eor r1, r1 |
3d0: 8f 93 push r24 |
3d2: 9f 93 push r25 |
3d4: ef 93 push r30 |
3d6: ff 93 push r31 |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
3d8: 80 91 6e 00 lds r24, 0x006E |
3dc: 88 23 and r24, r24 |
3de: d9 f4 brne .+54 ; 0x416 <__vector_15+0x50> |
{ |
ptr++; // die [0] wurde schon gesendet |
3e0: 80 91 9d 00 lds r24, 0x009D |
3e4: 90 91 9e 00 lds r25, 0x009E |
3e8: 01 96 adiw r24, 0x01 ; 1 |
3ea: 90 93 9e 00 sts 0x009E, r25 |
3ee: 80 93 9d 00 sts 0x009D, r24 |
tmp_tx = SendeBuffer[ptr]; |
3f2: fc 01 movw r30, r24 |
3f4: e2 51 subi r30, 0x12 ; 18 |
3f6: ff 4f sbci r31, 0xFF ; 255 |
3f8: e0 81 ld r30, Z |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
3fa: ed 30 cpi r30, 0x0D ; 13 |
3fc: 19 f0 breq .+6 ; 0x404 <__vector_15+0x3e> |
3fe: 84 36 cpi r24, 0x64 ; 100 |
400: 91 05 cpc r25, r1 |
402: 39 f4 brne .+14 ; 0x412 <__vector_15+0x4c> |
{ |
ptr = 0; |
404: 10 92 9e 00 sts 0x009E, r1 |
408: 10 92 9d 00 sts 0x009D, r1 |
UebertragungAbgeschlossen = 1; |
40c: 81 e0 ldi r24, 0x01 ; 1 |
40e: 80 93 6e 00 sts 0x006E, r24 |
} |
UDR = tmp_tx; |
412: ec b9 out 0x0c, r30 ; 12 |
414: 04 c0 rjmp .+8 ; 0x41e <__vector_15+0x58> |
} |
else ptr = 0; |
416: 10 92 9e 00 sts 0x009E, r1 |
41a: 10 92 9d 00 sts 0x009D, r1 |
41e: ff 91 pop r31 |
420: ef 91 pop r30 |
422: 9f 91 pop r25 |
424: 8f 91 pop r24 |
426: 0f 90 pop r0 |
428: 0f be out 0x3f, r0 ; 63 |
42a: 0f 90 pop r0 |
42c: 1f 90 pop r1 |
42e: 18 95 reti |
00000430 <__vector_13>: |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
430: 1f 92 push r1 |
432: 0f 92 push r0 |
434: 0f b6 in r0, 0x3f ; 63 |
436: 0f 92 push r0 |
438: 11 24 eor r1, r1 |
43a: 2f 93 push r18 |
43c: 3f 93 push r19 |
43e: 4f 93 push r20 |
440: 5f 93 push r21 |
442: 8f 93 push r24 |
444: 9f 93 push r25 |
446: af 93 push r26 |
448: bf 93 push r27 |
44a: ef 93 push r30 |
44c: ff 93 push r31 |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
44e: 20 e0 ldi r18, 0x00 ; 0 |
SioTmp = UDR; |
450: 8c b1 in r24, 0x0c ; 12 |
452: 80 93 9c 00 sts 0x009C, r24 |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
456: 50 91 a3 00 lds r21, 0x00A3 |
45a: 54 36 cpi r21, 0x64 ; 100 |
45c: 10 f0 brcs .+4 ; 0x462 <__vector_13+0x32> |
45e: 20 93 a4 00 sts 0x00A4, r18 |
if(SioTmp == '\r' && UartState == 2) |
462: 80 91 9c 00 lds r24, 0x009C |
466: 8d 30 cpi r24, 0x0D ; 13 |
468: 09 f0 breq .+2 ; 0x46c <__vector_13+0x3c> |
46a: 5b c0 rjmp .+182 ; 0x522 <__vector_13+0xf2> |
46c: 80 91 a4 00 lds r24, 0x00A4 |
470: 82 30 cpi r24, 0x02 ; 2 |
472: 09 f0 breq .+2 ; 0x476 <__vector_13+0x46> |
474: 56 c0 rjmp .+172 ; 0x522 <__vector_13+0xf2> |
{ |
UartState = 0; |
476: 20 93 a4 00 sts 0x00A4, r18 |
crc -= RxdBuffer[buf_ptr-2]; |
47a: 85 2f mov r24, r21 |
47c: 99 27 eor r25, r25 |
47e: 8e 5a subi r24, 0xAE ; 174 |
480: 9e 4f sbci r25, 0xFE ; 254 |
482: fc 01 movw r30, r24 |
484: 32 97 sbiw r30, 0x02 ; 2 |
486: 40 81 ld r20, Z |
488: 20 91 9f 00 lds r18, 0x009F |
48c: 30 91 a0 00 lds r19, 0x00A0 |
490: 24 1b sub r18, r20 |
492: 31 09 sbc r19, r1 |
crc -= RxdBuffer[buf_ptr-1]; |
494: dc 01 movw r26, r24 |
496: 11 97 sbiw r26, 0x01 ; 1 |
498: 8c 91 ld r24, X |
49a: 28 1b sub r18, r24 |
49c: 31 09 sbc r19, r1 |
crc %= 4096; |
49e: c9 01 movw r24, r18 |
4a0: 9f 70 andi r25, 0x0F ; 15 |
4a2: 90 93 a0 00 sts 0x00A0, r25 |
4a6: 80 93 9f 00 sts 0x009F, r24 |
crc1 = '=' + crc / 64; |
4aa: 46 e0 ldi r20, 0x06 ; 6 |
4ac: 96 95 lsr r25 |
4ae: 87 95 ror r24 |
4b0: 4a 95 dec r20 |
4b2: e1 f7 brne .-8 ; 0x4ac <__vector_13+0x7c> |
4b4: 98 2f mov r25, r24 |
4b6: 93 5c subi r25, 0xC3 ; 195 |
4b8: 90 93 a1 00 sts 0x00A1, r25 |
crc2 = '=' + crc % 64; |
4bc: 2f 73 andi r18, 0x3F ; 63 |
4be: 30 70 andi r19, 0x00 ; 0 |
4c0: 23 5c subi r18, 0xC3 ; 195 |
4c2: 20 93 a2 00 sts 0x00A2, r18 |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
4c6: 80 81 ld r24, Z |
4c8: 98 17 cp r25, r24 |
4ca: 29 f4 brne .+10 ; 0x4d6 <__vector_13+0xa6> |
4cc: 8c 91 ld r24, X |
4ce: 28 17 cp r18, r24 |
4d0: 11 f4 brne .+4 ; 0x4d6 <__vector_13+0xa6> |
4d2: 21 e0 ldi r18, 0x01 ; 1 |
4d4: 0a c0 rjmp .+20 ; 0x4ea <__vector_13+0xba> |
4d6: 20 e0 ldi r18, 0x00 ; 0 |
4d8: 80 91 99 00 lds r24, 0x0099 |
4dc: 90 91 9a 00 lds r25, 0x009A |
4e0: 01 96 adiw r24, 0x01 ; 1 |
4e2: 90 93 9a 00 sts 0x009A, r25 |
4e6: 80 93 99 00 sts 0x0099, r24 |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
4ea: 80 91 9b 00 lds r24, 0x009B |
4ee: 88 23 and r24, r24 |
4f0: 09 f0 breq .+2 ; 0x4f4 <__vector_13+0xc4> |
4f2: 66 c0 rjmp .+204 ; 0x5c0 <__vector_13+0x190> |
4f4: 22 23 and r18, r18 |
4f6: 09 f4 brne .+2 ; 0x4fa <__vector_13+0xca> |
4f8: 63 c0 rjmp .+198 ; 0x5c0 <__vector_13+0x190> |
{ |
CntDatensaetzeProSekunde++; |
4fa: 80 91 66 00 lds r24, 0x0066 |
4fe: 8f 5f subi r24, 0xFF ; 255 |
500: 80 93 66 00 sts 0x0066, r24 |
PC_DebugTimeout = 10; |
504: 8a e0 ldi r24, 0x0A ; 10 |
506: 80 93 97 00 sts 0x0097, r24 |
NeuerDatensatzEmpfangen = 1; |
50a: 81 e0 ldi r24, 0x01 ; 1 |
50c: 80 93 9b 00 sts 0x009B, r24 |
AnzahlEmpfangsBytes = buf_ptr; |
510: 50 93 98 00 sts 0x0098, r21 |
RxdBuffer[buf_ptr] = '\r'; |
514: e5 2f mov r30, r21 |
516: ff 27 eor r31, r31 |
518: ee 5a subi r30, 0xAE ; 174 |
51a: fe 4f sbci r31, 0xFE ; 254 |
51c: 8d e0 ldi r24, 0x0D ; 13 |
51e: 80 83 st Z, r24 |
520: 4f c0 rjmp .+158 ; 0x5c0 <__vector_13+0x190> |
// if((RxdBuffer[1] == 's') && (RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
522: 20 91 a4 00 lds r18, 0x00A4 |
526: 82 2f mov r24, r18 |
528: 99 27 eor r25, r25 |
52a: 81 30 cpi r24, 0x01 ; 1 |
52c: 91 05 cpc r25, r1 |
52e: f9 f0 breq .+62 ; 0x56e <__vector_13+0x13e> |
530: 82 30 cpi r24, 0x02 ; 2 |
532: 91 05 cpc r25, r1 |
534: 1c f4 brge .+6 ; 0x53c <__vector_13+0x10c> |
536: 89 2b or r24, r25 |
538: 21 f0 breq .+8 ; 0x542 <__vector_13+0x112> |
53a: 40 c0 rjmp .+128 ; 0x5bc <__vector_13+0x18c> |
53c: 02 97 sbiw r24, 0x02 ; 2 |
53e: 11 f1 breq .+68 ; 0x584 <__vector_13+0x154> |
540: 3d c0 rjmp .+122 ; 0x5bc <__vector_13+0x18c> |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
542: 80 91 9c 00 lds r24, 0x009C |
546: 83 32 cpi r24, 0x23 ; 35 |
548: 39 f4 brne .+14 ; 0x558 <__vector_13+0x128> |
54a: 80 91 9b 00 lds r24, 0x009B |
54e: 88 23 and r24, r24 |
550: 19 f4 brne .+6 ; 0x558 <__vector_13+0x128> |
552: 81 e0 ldi r24, 0x01 ; 1 |
554: 80 93 a4 00 sts 0x00A4, r24 |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
558: 80 91 9c 00 lds r24, 0x009C |
55c: 80 93 52 01 sts 0x0152, r24 |
560: 81 e0 ldi r24, 0x01 ; 1 |
562: 80 93 a3 00 sts 0x00A3, r24 |
crc = SioTmp; |
566: 80 91 9c 00 lds r24, 0x009C |
56a: 99 27 eor r25, r25 |
56c: 22 c0 rjmp .+68 ; 0x5b2 <__vector_13+0x182> |
break; |
case 1: // Adresse auswerten |
UartState++; |
56e: 2f 5f subi r18, 0xFF ; 255 |
570: 20 93 a4 00 sts 0x00A4, r18 |
RxdBuffer[buf_ptr++] = SioTmp; |
574: e5 2f mov r30, r21 |
576: ff 27 eor r31, r31 |
578: ee 5a subi r30, 0xAE ; 174 |
57a: fe 4f sbci r31, 0xFE ; 254 |
57c: 80 91 9c 00 lds r24, 0x009C |
580: 80 83 st Z, r24 |
582: 09 c0 rjmp .+18 ; 0x596 <__vector_13+0x166> |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
584: e5 2f mov r30, r21 |
586: ff 27 eor r31, r31 |
588: ee 5a subi r30, 0xAE ; 174 |
58a: fe 4f sbci r31, 0xFE ; 254 |
58c: 80 91 9c 00 lds r24, 0x009C |
590: 80 83 st Z, r24 |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
592: 54 36 cpi r21, 0x64 ; 100 |
594: 20 f4 brcc .+8 ; 0x59e <__vector_13+0x16e> |
596: 5f 5f subi r21, 0xFF ; 255 |
598: 50 93 a3 00 sts 0x00A3, r21 |
59c: 02 c0 rjmp .+4 ; 0x5a2 <__vector_13+0x172> |
else UartState = 0; |
59e: 10 92 a4 00 sts 0x00A4, r1 |
crc += SioTmp; |
5a2: 20 91 9c 00 lds r18, 0x009C |
5a6: 80 91 9f 00 lds r24, 0x009F |
5aa: 90 91 a0 00 lds r25, 0x00A0 |
5ae: 82 0f add r24, r18 |
5b0: 91 1d adc r25, r1 |
5b2: 90 93 a0 00 sts 0x00A0, r25 |
5b6: 80 93 9f 00 sts 0x009F, r24 |
break; |
5ba: 02 c0 rjmp .+4 ; 0x5c0 <__vector_13+0x190> |
default: |
UartState = 0; |
5bc: 10 92 a4 00 sts 0x00A4, r1 |
5c0: ff 91 pop r31 |
5c2: ef 91 pop r30 |
5c4: bf 91 pop r27 |
5c6: af 91 pop r26 |
5c8: 9f 91 pop r25 |
5ca: 8f 91 pop r24 |
5cc: 5f 91 pop r21 |
5ce: 4f 91 pop r20 |
5d0: 3f 91 pop r19 |
5d2: 2f 91 pop r18 |
5d4: 0f 90 pop r0 |
5d6: 0f be out 0x3f, r0 ; 63 |
5d8: 0f 90 pop r0 |
5da: 1f 90 pop r1 |
5dc: 18 95 reti |
000005de <AddCRC>: |
break; |
} |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
5de: ac 01 movw r20, r24 |
unsigned int tmpCRC = 0,i; |
5e0: a0 e0 ldi r26, 0x00 ; 0 |
5e2: b0 e0 ldi r27, 0x00 ; 0 |
for(i = 0; i < wieviele;i++) |
5e4: 9d 01 movw r18, r26 |
5e6: a8 17 cp r26, r24 |
5e8: b9 07 cpc r27, r25 |
5ea: 48 f4 brcc .+18 ; 0x5fe <AddCRC+0x20> |
5ec: ee ee ldi r30, 0xEE ; 238 |
5ee: f0 e0 ldi r31, 0x00 ; 0 |
{ |
tmpCRC += SendeBuffer[i]; |
5f0: 81 91 ld r24, Z+ |
5f2: 28 0f add r18, r24 |
5f4: 31 1d adc r19, r1 |
5f6: 11 96 adiw r26, 0x01 ; 1 |
5f8: a4 17 cp r26, r20 |
5fa: b5 07 cpc r27, r21 |
5fc: c8 f3 brcs .-14 ; 0x5f0 <AddCRC+0x12> |
} |
tmpCRC %= 4096; |
5fe: 3f 70 andi r19, 0x0F ; 15 |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
600: fd 01 movw r30, r26 |
602: e2 51 subi r30, 0x12 ; 18 |
604: ff 4f sbci r31, 0xFF ; 255 |
606: c9 01 movw r24, r18 |
608: 56 e0 ldi r21, 0x06 ; 6 |
60a: 96 95 lsr r25 |
60c: 87 95 ror r24 |
60e: 5a 95 dec r21 |
610: e1 f7 brne .-8 ; 0x60a <AddCRC+0x2c> |
612: 83 5c subi r24, 0xC3 ; 195 |
614: 80 83 st Z, r24 |
616: 11 96 adiw r26, 0x01 ; 1 |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
618: fd 01 movw r30, r26 |
61a: e2 51 subi r30, 0x12 ; 18 |
61c: ff 4f sbci r31, 0xFF ; 255 |
61e: 2f 73 andi r18, 0x3F ; 63 |
620: 30 70 andi r19, 0x00 ; 0 |
622: 82 2f mov r24, r18 |
624: 83 5c subi r24, 0xC3 ; 195 |
626: 80 83 st Z, r24 |
SendeBuffer[i++] = '\r'; |
628: a1 51 subi r26, 0x11 ; 17 |
62a: bf 4f sbci r27, 0xFF ; 255 |
62c: 8d e0 ldi r24, 0x0D ; 13 |
62e: 8c 93 st X, r24 |
UebertragungAbgeschlossen = 0; |
630: 10 92 6e 00 sts 0x006E, r1 |
UDR = SendeBuffer[0]; |
634: 80 91 ee 00 lds r24, 0x00EE |
638: 8c b9 out 0x0c, r24 ; 12 |
63a: 08 95 ret |
0000063c <SendOutData>: |
// PrintSendeBuffer(); |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
63c: 1f 93 push r17 |
63e: cf 93 push r28 |
640: df 93 push r29 |
642: 38 2f mov r19, r24 |
644: 96 2f mov r25, r22 |
646: ea 01 movw r28, r20 |
648: 72 2f mov r23, r18 |
unsigned int pt = 0,i; |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
64a: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
//while(!UebertragungAbgeschlossen); |
SendeBuffer[pt++] = '#'; // Startzeichen |
64c: 83 e2 ldi r24, 0x23 ; 35 |
64e: 80 93 ee 00 sts 0x00EE, r24 |
SendeBuffer[pt++] = modul+'a'; // Adresse (a=0; b=1,...) |
652: 9f 59 subi r25, 0x9F ; 159 |
654: 90 93 ef 00 sts 0x00EF, r25 |
SendeBuffer[pt++] = cmd; // Commando |
658: 30 93 f0 00 sts 0x00F0, r19 |
65c: a3 e0 ldi r26, 0x03 ; 3 |
65e: b0 e0 ldi r27, 0x00 ; 0 |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
660: 77 23 and r23, r23 |
662: 09 f4 brne .+2 ; 0x666 <SendOutData+0x2a> |
664: 58 c0 rjmp .+176 ; 0x716 <SendOutData+0xda> |
666: 77 23 and r23, r23 |
668: 11 f4 brne .+4 ; 0x66e <SendOutData+0x32> |
66a: 97 2f mov r25, r23 |
66c: 07 c0 rjmp .+14 ; 0x67c <SendOutData+0x40> |
66e: fe 01 movw r30, r28 |
670: e1 0f add r30, r17 |
672: f1 1d adc r31, r1 |
674: 1f 5f subi r17, 0xFF ; 255 |
676: 90 81 ld r25, Z |
678: 71 50 subi r23, 0x01 ; 1 |
67a: 11 f4 brne .+4 ; 0x680 <SendOutData+0x44> |
67c: 47 2f mov r20, r23 |
67e: 0e c0 rjmp .+28 ; 0x69c <SendOutData+0x60> |
680: fe 01 movw r30, r28 |
682: e1 0f add r30, r17 |
684: f1 1d adc r31, r1 |
686: 1f 5f subi r17, 0xFF ; 255 |
688: 40 81 ld r20, Z |
68a: 71 50 subi r23, 0x01 ; 1 |
68c: 39 f0 breq .+14 ; 0x69c <SendOutData+0x60> |
68e: fe 01 movw r30, r28 |
690: e1 0f add r30, r17 |
692: f1 1d adc r31, r1 |
694: 1f 5f subi r17, 0xFF ; 255 |
696: 60 81 ld r22, Z |
698: 71 50 subi r23, 0x01 ; 1 |
69a: 01 c0 rjmp .+2 ; 0x69e <SendOutData+0x62> |
69c: 67 2f mov r22, r23 |
69e: fd 01 movw r30, r26 |
6a0: e2 51 subi r30, 0x12 ; 18 |
6a2: ff 4f sbci r31, 0xFF ; 255 |
6a4: 89 2f mov r24, r25 |
6a6: 86 95 lsr r24 |
6a8: 86 95 lsr r24 |
6aa: 83 5c subi r24, 0xC3 ; 195 |
6ac: 80 83 st Z, r24 |
6ae: 11 96 adiw r26, 0x01 ; 1 |
6b0: fd 01 movw r30, r26 |
6b2: e2 51 subi r30, 0x12 ; 18 |
6b4: ff 4f sbci r31, 0xFF ; 255 |
6b6: 89 2f mov r24, r25 |
6b8: 99 27 eor r25, r25 |
6ba: 83 70 andi r24, 0x03 ; 3 |
6bc: 90 70 andi r25, 0x00 ; 0 |
6be: 24 e0 ldi r18, 0x04 ; 4 |
6c0: 88 0f add r24, r24 |
6c2: 99 1f adc r25, r25 |
6c4: 2a 95 dec r18 |
6c6: e1 f7 brne .-8 ; 0x6c0 <SendOutData+0x84> |
6c8: 55 27 eor r21, r21 |
6ca: 9a 01 movw r18, r20 |
6cc: 94 e0 ldi r25, 0x04 ; 4 |
6ce: 36 95 lsr r19 |
6d0: 27 95 ror r18 |
6d2: 9a 95 dec r25 |
6d4: e1 f7 brne .-8 ; 0x6ce <SendOutData+0x92> |
6d6: 82 2b or r24, r18 |
6d8: 83 5c subi r24, 0xC3 ; 195 |
6da: 80 83 st Z, r24 |
6dc: 11 96 adiw r26, 0x01 ; 1 |
6de: fd 01 movw r30, r26 |
6e0: e2 51 subi r30, 0x12 ; 18 |
6e2: ff 4f sbci r31, 0xFF ; 255 |
6e4: 4f 70 andi r20, 0x0F ; 15 |
6e6: 50 70 andi r21, 0x00 ; 0 |
6e8: 44 0f add r20, r20 |
6ea: 55 1f adc r21, r21 |
6ec: 44 0f add r20, r20 |
6ee: 55 1f adc r21, r21 |
6f0: 86 2f mov r24, r22 |
6f2: 99 27 eor r25, r25 |
6f4: 26 e0 ldi r18, 0x06 ; 6 |
6f6: 96 95 lsr r25 |
6f8: 87 95 ror r24 |
6fa: 2a 95 dec r18 |
6fc: e1 f7 brne .-8 ; 0x6f6 <SendOutData+0xba> |
6fe: 84 2b or r24, r20 |
700: 83 5c subi r24, 0xC3 ; 195 |
702: 80 83 st Z, r24 |
704: 11 96 adiw r26, 0x01 ; 1 |
706: fd 01 movw r30, r26 |
708: e2 51 subi r30, 0x12 ; 18 |
70a: ff 4f sbci r31, 0xFF ; 255 |
70c: 6f 73 andi r22, 0x3F ; 63 |
70e: 63 5c subi r22, 0xC3 ; 195 |
710: 60 83 st Z, r22 |
712: 11 96 adiw r26, 0x01 ; 1 |
714: a5 cf rjmp .-182 ; 0x660 <SendOutData+0x24> |
} |
AddCRC(pt); |
716: cd 01 movw r24, r26 |
718: 0e 94 ef 02 call 0x5de <AddCRC> |
71c: df 91 pop r29 |
71e: cf 91 pop r28 |
720: 1f 91 pop r17 |
722: 08 95 ret |
00000724 <Decode64>: |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
724: 1f 93 push r17 |
726: cf 93 push r28 |
728: df 93 push r29 |
72a: ec 01 movw r28, r24 |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
72c: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
72e: 66 23 and r22, r22 |
730: 09 f4 brne .+2 ; 0x734 <Decode64+0x10> |
732: 60 c0 rjmp .+192 ; 0x7f4 <Decode64+0xd0> |
734: a2 2f mov r26, r18 |
736: bb 27 eor r27, r27 |
738: 12 97 sbiw r26, 0x02 ; 2 |
73a: e4 2f mov r30, r20 |
73c: ff 27 eor r31, r31 |
73e: ee 5a subi r30, 0xAE ; 174 |
740: fe 4f sbci r31, 0xFE ; 254 |
742: 30 81 ld r19, Z |
744: 3d 53 subi r19, 0x3D ; 61 |
746: 4f 5f subi r20, 0xFF ; 255 |
748: e4 2f mov r30, r20 |
74a: ff 27 eor r31, r31 |
74c: ee 5a subi r30, 0xAE ; 174 |
74e: fe 4f sbci r31, 0xFE ; 254 |
750: 50 81 ld r21, Z |
752: 5d 53 subi r21, 0x3D ; 61 |
754: 4f 5f subi r20, 0xFF ; 255 |
756: e4 2f mov r30, r20 |
758: ff 27 eor r31, r31 |
75a: ee 5a subi r30, 0xAE ; 174 |
75c: fe 4f sbci r31, 0xFE ; 254 |
75e: 70 81 ld r23, Z |
760: 7d 53 subi r23, 0x3D ; 61 |
762: 4f 5f subi r20, 0xFF ; 255 |
764: e4 2f mov r30, r20 |
766: ff 27 eor r31, r31 |
768: ee 5a subi r30, 0xAE ; 174 |
76a: fe 4f sbci r31, 0xFE ; 254 |
76c: e0 81 ld r30, Z |
76e: ed 53 subi r30, 0x3D ; 61 |
770: 4f 5f subi r20, 0xFF ; 255 |
772: 84 2f mov r24, r20 |
774: 99 27 eor r25, r25 |
776: a8 17 cp r26, r24 |
778: b9 07 cpc r27, r25 |
77a: e4 f1 brlt .+120 ; 0x7f4 <Decode64+0xd0> |
77c: 83 2f mov r24, r19 |
77e: 99 27 eor r25, r25 |
780: 88 0f add r24, r24 |
782: 99 1f adc r25, r25 |
784: 88 0f add r24, r24 |
786: 99 1f adc r25, r25 |
788: 35 2f mov r19, r21 |
78a: 32 95 swap r19 |
78c: 3f 70 andi r19, 0x0F ; 15 |
78e: 38 2b or r19, r24 |
790: 85 2f mov r24, r21 |
792: 99 27 eor r25, r25 |
794: 8f 70 andi r24, 0x0F ; 15 |
796: 90 70 andi r25, 0x00 ; 0 |
798: f4 e0 ldi r31, 0x04 ; 4 |
79a: 88 0f add r24, r24 |
79c: 99 1f adc r25, r25 |
79e: fa 95 dec r31 |
7a0: e1 f7 brne .-8 ; 0x79a <Decode64+0x76> |
7a2: 57 2f mov r21, r23 |
7a4: 56 95 lsr r21 |
7a6: 56 95 lsr r21 |
7a8: 58 2b or r21, r24 |
7aa: 87 2f mov r24, r23 |
7ac: 99 27 eor r25, r25 |
7ae: 83 70 andi r24, 0x03 ; 3 |
7b0: 90 70 andi r25, 0x00 ; 0 |
7b2: 76 e0 ldi r23, 0x06 ; 6 |
7b4: 88 0f add r24, r24 |
7b6: 99 1f adc r25, r25 |
7b8: 7a 95 dec r23 |
7ba: e1 f7 brne .-8 ; 0x7b4 <Decode64+0x90> |
7bc: 8e 2b or r24, r30 |
7be: 61 50 subi r22, 0x01 ; 1 |
7c0: 6f 3f cpi r22, 0xFF ; 255 |
7c2: c1 f0 breq .+48 ; 0x7f4 <Decode64+0xd0> |
7c4: fe 01 movw r30, r28 |
7c6: e1 0f add r30, r17 |
7c8: f1 1d adc r31, r1 |
7ca: 30 83 st Z, r19 |
7cc: 1f 5f subi r17, 0xFF ; 255 |
7ce: 61 50 subi r22, 0x01 ; 1 |
7d0: 6f 3f cpi r22, 0xFF ; 255 |
7d2: 81 f0 breq .+32 ; 0x7f4 <Decode64+0xd0> |
7d4: fe 01 movw r30, r28 |
7d6: e1 0f add r30, r17 |
7d8: f1 1d adc r31, r1 |
7da: 50 83 st Z, r21 |
7dc: 1f 5f subi r17, 0xFF ; 255 |
7de: 61 50 subi r22, 0x01 ; 1 |
7e0: 6f 3f cpi r22, 0xFF ; 255 |
7e2: 41 f0 breq .+16 ; 0x7f4 <Decode64+0xd0> |
7e4: fe 01 movw r30, r28 |
7e6: e1 0f add r30, r17 |
7e8: f1 1d adc r31, r1 |
7ea: 80 83 st Z, r24 |
7ec: 1f 5f subi r17, 0xFF ; 255 |
7ee: 66 23 and r22, r22 |
7f0: 09 f0 breq .+2 ; 0x7f4 <Decode64+0xd0> |
7f2: a3 cf rjmp .-186 ; 0x73a <Decode64+0x16> |
7f4: df 91 pop r29 |
7f6: cf 91 pop r28 |
7f8: 1f 91 pop r17 |
7fa: 08 95 ret |
000007fc <BearbeiteRxDaten>: |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
7fc: cf 93 push r28 |
7fe: df 93 push r29 |
800: cd b7 in r28, 0x3d ; 61 |
802: de b7 in r29, 0x3e ; 62 |
804: ad 97 sbiw r28, 0x2d ; 45 |
806: 0f b6 in r0, 0x3f ; 63 |
808: f8 94 cli |
80a: de bf out 0x3e, r29 ; 62 |
80c: 0f be out 0x3f, r0 ; 63 |
80e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr1[1]; |
unsigned int tmp_int_arr2[2]; |
unsigned int tmp_int_arr20[21]; |
unsigned char tmp_char_arr3[3]; |
// unsigned int tmp_int_arr4[4]; |
if(!NeuerDatensatzEmpfangen) return; |
810: 80 91 9b 00 lds r24, 0x009B |
814: 88 23 and r24, r24 |
816: 09 f4 brne .+2 ; 0x81a <BearbeiteRxDaten+0x1e> |
818: a7 c0 rjmp .+334 ; 0x968 <__stack+0x109> |
NeuerDatensatzEmpfangen = 0; |
81a: 10 92 9b 00 sts 0x009B, r1 |
if(ErwarteAntwort == RxdBuffer[2]) AntwortEingetroffen = 1; |
81e: 90 91 6d 00 lds r25, 0x006D |
822: 80 91 54 01 lds r24, 0x0154 |
826: 98 17 cp r25, r24 |
828: 19 f4 brne .+6 ; 0x830 <BearbeiteRxDaten+0x34> |
82a: 81 e0 ldi r24, 0x01 ; 1 |
82c: 80 93 92 00 sts 0x0092, r24 |
switch(RxdBuffer[2]) |
830: 80 91 54 01 lds r24, 0x0154 |
834: 99 27 eor r25, r25 |
836: 82 33 cpi r24, 0x32 ; 50 |
838: 91 05 cpc r25, r1 |
83a: 09 f4 brne .+2 ; 0x83e <BearbeiteRxDaten+0x42> |
83c: 46 c0 rjmp .+140 ; 0x8ca <__stack+0x6b> |
83e: 83 33 cpi r24, 0x33 ; 51 |
840: 91 05 cpc r25, r1 |
842: 34 f4 brge .+12 ; 0x850 <BearbeiteRxDaten+0x54> |
844: 80 33 cpi r24, 0x30 ; 48 |
846: 91 05 cpc r25, r1 |
848: 99 f0 breq .+38 ; 0x870 <__stack+0x11> |
84a: c1 97 sbiw r24, 0x31 ; 49 |
84c: 49 f1 breq .+82 ; 0x8a0 <__stack+0x41> |
84e: 8c c0 rjmp .+280 ; 0x968 <__stack+0x109> |
850: 84 34 cpi r24, 0x44 ; 68 |
852: 91 05 cpc r25, r1 |
854: 09 f4 brne .+2 ; 0x858 <BearbeiteRxDaten+0x5c> |
856: 6b c0 rjmp .+214 ; 0x92e <__stack+0xcf> |
858: 85 34 cpi r24, 0x45 ; 69 |
85a: 91 05 cpc r25, r1 |
85c: 24 f4 brge .+8 ; 0x866 <__stack+0x7> |
85e: c3 97 sbiw r24, 0x33 ; 51 |
860: 09 f4 brne .+2 ; 0x864 <__stack+0x5> |
862: 48 c0 rjmp .+144 ; 0x8f4 <__stack+0x95> |
864: 81 c0 rjmp .+258 ; 0x968 <__stack+0x109> |
866: 8b 34 cpi r24, 0x4B ; 75 |
868: 91 05 cpc r25, r1 |
86a: 09 f4 brne .+2 ; 0x86e <__stack+0xf> |
86c: 6c c0 rjmp .+216 ; 0x946 <__stack+0xe7> |
86e: 7c c0 rjmp .+248 ; 0x968 <__stack+0x109> |
{ |
case '0':// LCD-Zeile0 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
870: 20 91 98 00 lds r18, 0x0098 |
874: 43 e0 ldi r20, 0x03 ; 3 |
876: 6a e2 ldi r22, 0x2A ; 42 |
878: ce 01 movw r24, r28 |
87a: 01 96 adiw r24, 0x01 ; 1 |
87c: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
880: 1a a6 std Y+42, r1 ; 0x2a |
882: 19 a6 std Y+41, r1 ; 0x29 |
DisplayBusy = 1; |
884: 81 e0 ldi r24, 0x01 ; 1 |
886: 80 93 93 00 sts 0x0093, r24 |
LCD_printfxy(0,0,"%s",tmp_int_arr20); |
88a: 60 e0 ldi r22, 0x00 ; 0 |
88c: 86 2f mov r24, r22 |
88e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
892: ce 01 movw r24, r28 |
894: 01 96 adiw r24, 0x01 ; 1 |
896: 9f 93 push r25 |
898: 8f 93 push r24 |
89a: 88 ea ldi r24, 0xA8 ; 168 |
89c: 90 e0 ldi r25, 0x00 ; 0 |
89e: 3e c0 rjmp .+124 ; 0x91c <__stack+0xbd> |
break; |
case '1':// LCD-Zeile1 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8a0: 20 91 98 00 lds r18, 0x0098 |
8a4: 43 e0 ldi r20, 0x03 ; 3 |
8a6: 6a e2 ldi r22, 0x2A ; 42 |
8a8: ce 01 movw r24, r28 |
8aa: 01 96 adiw r24, 0x01 ; 1 |
8ac: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8b0: 1a a6 std Y+42, r1 ; 0x2a |
8b2: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,1,"%s",tmp_int_arr20); |
8b4: 61 e0 ldi r22, 0x01 ; 1 |
8b6: 80 e0 ldi r24, 0x00 ; 0 |
8b8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8bc: ce 01 movw r24, r28 |
8be: 01 96 adiw r24, 0x01 ; 1 |
8c0: 9f 93 push r25 |
8c2: 8f 93 push r24 |
8c4: 8b ea ldi r24, 0xAB ; 171 |
8c6: 90 e0 ldi r25, 0x00 ; 0 |
8c8: 29 c0 rjmp .+82 ; 0x91c <__stack+0xbd> |
break; |
case '2':// LCD-Zeile2 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8ca: 20 91 98 00 lds r18, 0x0098 |
8ce: 43 e0 ldi r20, 0x03 ; 3 |
8d0: 6a e2 ldi r22, 0x2A ; 42 |
8d2: ce 01 movw r24, r28 |
8d4: 01 96 adiw r24, 0x01 ; 1 |
8d6: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8da: 1a a6 std Y+42, r1 ; 0x2a |
8dc: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,2,"%s",tmp_int_arr20); |
8de: 62 e0 ldi r22, 0x02 ; 2 |
8e0: 80 e0 ldi r24, 0x00 ; 0 |
8e2: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8e6: ce 01 movw r24, r28 |
8e8: 01 96 adiw r24, 0x01 ; 1 |
8ea: 9f 93 push r25 |
8ec: 8f 93 push r24 |
8ee: 8e ea ldi r24, 0xAE ; 174 |
8f0: 90 e0 ldi r25, 0x00 ; 0 |
8f2: 14 c0 rjmp .+40 ; 0x91c <__stack+0xbd> |
break; |
case '3':// LCD-Zeile3 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8f4: 20 91 98 00 lds r18, 0x0098 |
8f8: 43 e0 ldi r20, 0x03 ; 3 |
8fa: 6a e2 ldi r22, 0x2A ; 42 |
8fc: ce 01 movw r24, r28 |
8fe: 01 96 adiw r24, 0x01 ; 1 |
900: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
904: 1a a6 std Y+42, r1 ; 0x2a |
906: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,3,"%s",tmp_int_arr20); |
908: 63 e0 ldi r22, 0x03 ; 3 |
90a: 80 e0 ldi r24, 0x00 ; 0 |
90c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
910: ce 01 movw r24, r28 |
912: 01 96 adiw r24, 0x01 ; 1 |
914: 9f 93 push r25 |
916: 8f 93 push r24 |
918: 81 eb ldi r24, 0xB1 ; 177 |
91a: 90 e0 ldi r25, 0x00 ; 0 |
91c: 9f 93 push r25 |
91e: 8f 93 push r24 |
920: 0e 94 e3 06 call 0xdc6 <_printf_P> |
break; |
924: 0f 90 pop r0 |
926: 0f 90 pop r0 |
928: 0f 90 pop r0 |
92a: 0f 90 pop r0 |
92c: 1d c0 rjmp .+58 ; 0x968 <__stack+0x109> |
case 'D': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugOut,sizeof(DebugOut),3,AnzahlEmpfangsBytes); |
92e: 20 91 98 00 lds r18, 0x0098 |
932: 43 e0 ldi r20, 0x03 ; 3 |
934: 6a e1 ldi r22, 0x1A ; 26 |
936: 83 ed ldi r24, 0xD3 ; 211 |
938: 90 e0 ldi r25, 0x00 ; 0 |
93a: 0e 94 92 03 call 0x724 <Decode64> |
PORTB = DebugOut.Digital[1]; |
93e: 80 91 d4 00 lds r24, 0x00D4 |
942: 88 bb out 0x18, r24 ; 24 |
break; |
944: 11 c0 rjmp .+34 ; 0x968 <__stack+0x109> |
case 'K': // Debug Eingangsdaten |
Decode64(tmp_char_arr3,sizeof(tmp_char_arr3),3,AnzahlEmpfangsBytes); |
946: 20 91 98 00 lds r18, 0x0098 |
94a: 43 e0 ldi r20, 0x03 ; 3 |
94c: 64 2f mov r22, r20 |
94e: ce 01 movw r24, r28 |
950: 8b 96 adiw r24, 0x2b ; 43 |
952: 0e 94 92 03 call 0x724 <Decode64> |
TX_DigTransferKanalL = tmp_char_arr3[0]; |
956: 8b a5 ldd r24, Y+43 ; 0x2b |
958: 80 93 96 00 sts 0x0096, r24 |
TX_DigTransferKanalH = tmp_char_arr3[1]; |
95c: 8c a5 ldd r24, Y+44 ; 0x2c |
95e: 80 93 95 00 sts 0x0095, r24 |
TX_DigTransferKanalDaten = tmp_char_arr3[2]; |
962: 8d a5 ldd r24, Y+45 ; 0x2d |
964: 80 93 94 00 sts 0x0094, r24 |
968: ad 96 adiw r28, 0x2d ; 45 |
96a: 0f b6 in r0, 0x3f ; 63 |
96c: f8 94 cli |
96e: de bf out 0x3e, r29 ; 62 |
970: 0f be out 0x3f, r0 ; 63 |
972: cd bf out 0x3d, r28 ; 61 |
974: df 91 pop r29 |
976: cf 91 pop r28 |
978: 08 95 ret |
0000097a <uart_putchar>: |
//if(RxdBuffer[1] == 'b') LCD_printfxy(0,0,"b:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
//if(RxdBuffer[1] == 'c') LCD_printfxy(0,1,"c:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
break; |
/* |
unsigned char Digital[13]; // 0 = Taster, Hauptkarte |
// 1 + 2 = Debugkanäle |
// 3 = Digin, Hauptkarte |
// 4 = Relais, Hauptkarte |
// 5 + 6 = Extern IO1 (12Bit ein 4 Bit aus) |
// 7 + 8 = Extern IO2 (12Bit ein 4 Bit aus) |
// 9 + 10 = Extern IO3 (12Bit ein 4 Bit aus) |
// 11 + 12= Extern IO4 (12Bit ein 4 Bit aus) |
*/ |
/* case 'd': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
} |
break; |
case 'g': // "Get"-Anforderung für Debug-Daten // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'u': // Uhr stellen |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
ZEITWERT = tmp_int_arr2[0]; |
SEK = tmp_int_arr2[1]; |
make_time_variables(ZEITWERT); |
RTC_SetTime(STD, MIN, SEK); |
RTC_SetWDay(TAG); |
break; |
case 'i': // Intervalle für die Datenübertragung |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
Debug_Timer_Intervall = tmp_int_arr2[0]; |
Debug_Display_Intervall = tmp_int_arr2[1]; |
SendeDummyDaten = 1; |
break; |
case 's': // single Step 1 = Stop 2 = noch einen Zyklus 3 = noch 2 Zyklen |
Decode64((unsigned char *) &tmp_int_arr1[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
SingleStep = tmp_int_arr1[0]; |
break; |
*/ |
} |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
97a: cf 93 push r28 |
97c: c8 2f mov r28, r24 |
if (c == '\n') |
97e: 8a 30 cpi r24, 0x0A ; 10 |
980: 19 f4 brne .+6 ; 0x988 <uart_putchar+0xe> |
uart_putchar('\r'); |
982: 8d e0 ldi r24, 0x0D ; 13 |
984: 0e 94 bd 04 call 0x97a <uart_putchar> |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
988: 5d 9b sbis 0x0b, 5 ; 11 |
98a: fe cf rjmp .-4 ; 0x988 <uart_putchar+0xe> |
//Ausgabe des Zeichens |
UDR = c; |
98c: cc b9 out 0x0c, r28 ; 12 |
return (0); |
} |
98e: 80 e0 ldi r24, 0x00 ; 0 |
990: 90 e0 ldi r25, 0x00 ; 0 |
992: cf 91 pop r28 |
994: 08 95 ret |
00000996 <WriteProgramData>: |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
996: 08 95 ret |
00000998 <UART_Init>: |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
998: 88 e1 ldi r24, 0x18 ; 24 |
99a: 8a b9 out 0x0a, r24 ; 10 |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
99c: 59 9a sbi 0x0b, 1 ; 11 |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
99e: 57 9a sbi 0x0a, 7 ; 10 |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
9a0: 56 9a sbi 0x0a, 6 ; 10 |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
9a2: 81 e2 ldi r24, 0x21 ; 33 |
9a4: 89 b9 out 0x09, r24 ; 9 |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
9a6: 60 e0 ldi r22, 0x00 ; 0 |
9a8: 70 e0 ldi r23, 0x00 ; 0 |
9aa: 8d eb ldi r24, 0xBD ; 189 |
9ac: 94 e0 ldi r25, 0x04 ; 4 |
9ae: 0e 94 71 0c call 0x18e2 <fdevopen> |
9b2: 08 95 ret |
000009b4 <SendeRemoteTasten>: |
//sbi(PORTD,4); |
} |
/* |
struct str_DebugIn |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
unsigned int Analog[4]; |
}; |
*/ |
void SendeRemoteTasten(unsigned char keys) |
{ |
9b4: 98 2f mov r25, r24 |
while(!UebertragungAbgeschlossen); // evtl warten |
9b6: 80 91 6e 00 lds r24, 0x006E |
9ba: 88 23 and r24, r24 |
9bc: e1 f3 breq .-8 ; 0x9b6 <SendeRemoteTasten+0x2> |
DebugIn.RemoteTasten = keys; |
9be: 90 93 c0 00 sts 0x00C0, r25 |
DebugIn.Analog[0] = AnalogWerte[0]; |
9c2: 80 91 ca 01 lds r24, 0x01CA |
9c6: 90 91 cb 01 lds r25, 0x01CB |
9ca: 90 93 c2 00 sts 0x00C2, r25 |
9ce: 80 93 c1 00 sts 0x00C1, r24 |
DebugIn.Analog[1] = AnalogWerte[1]; |
9d2: 80 91 cc 01 lds r24, 0x01CC |
9d6: 90 91 cd 01 lds r25, 0x01CD |
9da: 90 93 c4 00 sts 0x00C4, r25 |
9de: 80 93 c3 00 sts 0x00C3, r24 |
DebugIn.Analog[2] = AnalogWerte[2]; |
9e2: 80 91 ce 01 lds r24, 0x01CE |
9e6: 90 91 cf 01 lds r25, 0x01CF |
9ea: 90 93 c6 00 sts 0x00C6, r25 |
9ee: 80 93 c5 00 sts 0x00C5, r24 |
DebugIn.Analog[3] = IR_Code; |
9f2: 80 91 c7 01 lds r24, 0x01C7 |
9f6: 90 91 c8 01 lds r25, 0x01C8 |
9fa: 90 93 c8 00 sts 0x00C8, r25 |
9fe: 80 93 c7 00 sts 0x00C7, r24 |
SendOutData('d',SlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
a02: 2b e0 ldi r18, 0x0B ; 11 |
a04: 4e eb ldi r20, 0xBE ; 190 |
a06: 50 e0 ldi r21, 0x00 ; 0 |
a08: 60 91 64 00 lds r22, 0x0064 |
a0c: 84 e6 ldi r24, 0x64 ; 100 |
a0e: 0e 94 1e 03 call 0x63c <SendOutData> |
a12: 08 95 ret |
00000a14 <SendIntervalle>: |
} |
void SendIntervalle(unsigned int debug, unsigned int disp) |
{ |
a14: cf 93 push r28 |
a16: df 93 push r29 |
a18: cd b7 in r28, 0x3d ; 61 |
a1a: de b7 in r29, 0x3e ; 62 |
a1c: 24 97 sbiw r28, 0x04 ; 4 |
a1e: 0f b6 in r0, 0x3f ; 63 |
a20: f8 94 cli |
a22: de bf out 0x3e, r29 ; 62 |
a24: 0f be out 0x3f, r0 ; 63 |
a26: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = debug; |
a28: 9a 83 std Y+2, r25 ; 0x02 |
a2a: 89 83 std Y+1, r24 ; 0x01 |
tmp_int_arr2[1] = disp; |
a2c: 7c 83 std Y+4, r23 ; 0x04 |
a2e: 6b 83 std Y+3, r22 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a30: 80 91 6e 00 lds r24, 0x006E |
a34: 88 23 and r24, r24 |
a36: e1 f3 breq .-8 ; 0xa30 <SendIntervalle+0x1c> |
SendOutData('i',SlaveAdresse,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); |
a38: 24 e0 ldi r18, 0x04 ; 4 |
a3a: ae 01 movw r20, r28 |
a3c: 4f 5f subi r20, 0xFF ; 255 |
a3e: 5f 4f sbci r21, 0xFF ; 255 |
a40: 60 91 64 00 lds r22, 0x0064 |
a44: 89 e6 ldi r24, 0x69 ; 105 |
a46: 0e 94 1e 03 call 0x63c <SendOutData> |
a4a: 24 96 adiw r28, 0x04 ; 4 |
a4c: 0f b6 in r0, 0x3f ; 63 |
a4e: f8 94 cli |
a50: de bf out 0x3e, r29 ; 62 |
a52: 0f be out 0x3f, r0 ; 63 |
a54: cd bf out 0x3d, r28 ; 61 |
a56: df 91 pop r29 |
a58: cf 91 pop r28 |
a5a: 08 95 ret |
00000a5c <ClearIntervalle>: |
} |
void ClearIntervalle(void) |
{ |
a5c: cf 93 push r28 |
a5e: df 93 push r29 |
a60: cd b7 in r28, 0x3d ; 61 |
a62: de b7 in r29, 0x3e ; 62 |
a64: 24 97 sbiw r28, 0x04 ; 4 |
a66: 0f b6 in r0, 0x3f ; 63 |
a68: f8 94 cli |
a6a: de bf out 0x3e, r29 ; 62 |
a6c: 0f be out 0x3f, r0 ; 63 |
a6e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = 0; |
a70: 1a 82 std Y+2, r1 ; 0x02 |
a72: 19 82 std Y+1, r1 ; 0x01 |
tmp_int_arr2[1] = 0; |
a74: 1c 82 std Y+4, r1 ; 0x04 |
a76: 1b 82 std Y+3, r1 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a78: 80 91 6e 00 lds r24, 0x006E |
a7c: 88 23 and r24, r24 |
a7e: e1 f3 breq .-8 ; 0xa78 <ClearIntervalle+0x1c> |
SendOutData('i',0,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); // 0= an alle |
a80: 24 e0 ldi r18, 0x04 ; 4 |
a82: ae 01 movw r20, r28 |
a84: 4f 5f subi r20, 0xFF ; 255 |
a86: 5f 4f sbci r21, 0xFF ; 255 |
a88: 60 e0 ldi r22, 0x00 ; 0 |
a8a: 89 e6 ldi r24, 0x69 ; 105 |
a8c: 0e 94 1e 03 call 0x63c <SendOutData> |
a90: 24 96 adiw r28, 0x04 ; 4 |
a92: 0f b6 in r0, 0x3f ; 63 |
a94: f8 94 cli |
a96: de bf out 0x3e, r29 ; 62 |
a98: 0f be out 0x3f, r0 ; 63 |
a9a: cd bf out 0x3d, r28 ; 61 |
a9c: df 91 pop r29 |
a9e: cf 91 pop r28 |
aa0: 08 95 ret |
00000aa2 <DatenUebertragung>: |
} |
void DatenUebertragung(unsigned char key) |
{ |
aa2: cf 93 push r28 |
aa4: df 93 push r29 |
aa6: cd b7 in r28, 0x3d ; 61 |
aa8: de b7 in r29, 0x3e ; 62 |
aaa: 25 97 sbiw r28, 0x05 ; 5 |
aac: 0f b6 in r0, 0x3f ; 63 |
aae: f8 94 cli |
ab0: de bf out 0x3e, r29 ; 62 |
ab2: 0f be out 0x3f, r0 ; 63 |
ab4: cd bf out 0x3d, r28 ; 61 |
ab6: 98 2f mov r25, r24 |
static unsigned char state = 1; |
unsigned char temp_1[1]; |
unsigned char temp_2[2]; |
unsigned char temp_3[3]; |
unsigned int tmp_int_arr2[2]; |
while(!UebertragungAbgeschlossen); // evtl warten |
ab8: 80 91 6e 00 lds r24, 0x006E |
abc: 88 23 and r24, r24 |
abe: e1 f3 breq .-8 ; 0xab8 <DatenUebertragung+0x16> |
static unsigned char KanalSlave = 1; |
if(PollDisplay) |
ac0: 80 91 ed 00 lds r24, 0x00ED |
ac4: 88 23 and r24, r24 |
ac6: e1 f0 breq .+56 ; 0xb00 <DatenUebertragung+0x5e> |
{ |
temp_2[0] = key; |
ac8: 9c 83 std Y+4, r25 ; 0x04 |
temp_2[1] = 6; |
aca: 86 e0 ldi r24, 0x06 ; 6 |
acc: 8d 83 std Y+5, r24 ; 0x05 |
if(DisplayZeilen == 4) temp_2[1] = 4 + 9; // anzahl Zeilen --> + 8 bedeutet: ersten Pollingzyklus freilassen |
ace: 80 91 65 00 lds r24, 0x0065 |
ad2: 84 30 cpi r24, 0x04 ; 4 |
ad4: 11 f4 brne .+4 ; 0xada <DatenUebertragung+0x38> |
ad6: 8d e0 ldi r24, 0x0D ; 13 |
ad8: 01 c0 rjmp .+2 ; 0xadc <DatenUebertragung+0x3a> |
else temp_2[1] = 2 + 9; |
ada: 8b e0 ldi r24, 0x0B ; 11 |
adc: 8d 83 std Y+5, r24 ; 0x05 |
SendOutData('h',SlaveAdresse,(unsigned char *) &temp_2,sizeof(temp_2)); |
ade: 22 e0 ldi r18, 0x02 ; 2 |
ae0: ae 01 movw r20, r28 |
ae2: 4c 5f subi r20, 0xFC ; 252 |
ae4: 5f 4f sbci r21, 0xFF ; 255 |
ae6: 60 91 64 00 lds r22, 0x0064 |
aea: 88 e6 ldi r24, 0x68 ; 104 |
aec: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = '0'; |
af0: 80 e3 ldi r24, 0x30 ; 48 |
af2: 80 93 6d 00 sts 0x006D, r24 |
DisplayBusy = 90; |
af6: 8a e5 ldi r24, 0x5A ; 90 |
af8: 80 93 93 00 sts 0x0093, r24 |
PollDisplay = 0; |
afc: 10 92 ed 00 sts 0x00ED, r1 |
} |
if(!DisplayBusy) |
b00: 60 91 93 00 lds r22, 0x0093 |
b04: 66 23 and r22, r22 |
b06: e1 f5 brne .+120 ; 0xb80 <DatenUebertragung+0xde> |
switch(state) |
b08: 80 91 6f 00 lds r24, 0x006F |
b0c: 99 27 eor r25, r25 |
b0e: 81 30 cpi r24, 0x01 ; 1 |
b10: 91 05 cpc r25, r1 |
b12: 19 f0 breq .+6 ; 0xb1a <DatenUebertragung+0x78> |
b14: 02 97 sbiw r24, 0x02 ; 2 |
b16: e9 f0 breq .+58 ; 0xb52 <DatenUebertragung+0xb0> |
b18: 30 c0 rjmp .+96 ; 0xb7a <DatenUebertragung+0xd8> |
{ |
case 1:// Display |
SendOutData('k',KanalSlave,(unsigned char *) &temp_3,sizeof(temp_3)); |
b1a: 23 e0 ldi r18, 0x03 ; 3 |
b1c: ae 01 movw r20, r28 |
b1e: 4f 5f subi r20, 0xFF ; 255 |
b20: 5f 4f sbci r21, 0xFF ; 255 |
b22: 60 91 70 00 lds r22, 0x0070 |
b26: 8b e6 ldi r24, 0x6B ; 107 |
b28: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = 'K'; |
b2c: 8b e4 ldi r24, 0x4B ; 75 |
b2e: 80 93 6d 00 sts 0x006D, r24 |
if(++KanalSlave > AnzahlTeilnehmer) KanalSlave = 1; |
b32: 80 91 70 00 lds r24, 0x0070 |
b36: 8f 5f subi r24, 0xFF ; 255 |
b38: 80 93 70 00 sts 0x0070, r24 |
b3c: 90 91 6c 00 lds r25, 0x006C |
b40: 98 17 cp r25, r24 |
b42: 18 f4 brcc .+6 ; 0xb4a <DatenUebertragung+0xa8> |
b44: 81 e0 ldi r24, 0x01 ; 1 |
b46: 80 93 70 00 sts 0x0070, r24 |
state++; |
b4a: 80 91 6f 00 lds r24, 0x006F |
b4e: 8f 5f subi r24, 0xFF ; 255 |
b50: 15 c0 rjmp .+42 ; 0xb7c <DatenUebertragung+0xda> |
break; |
case 2: |
temp_3[0] = TX_DigTransferKanalL; |
b52: 80 91 96 00 lds r24, 0x0096 |
b56: 89 83 std Y+1, r24 ; 0x01 |
temp_3[1] = TX_DigTransferKanalH; |
b58: 80 91 95 00 lds r24, 0x0095 |
b5c: 8a 83 std Y+2, r24 ; 0x02 |
temp_3[2] = TX_DigTransferKanalDaten; |
b5e: 80 91 94 00 lds r24, 0x0094 |
b62: 8b 83 std Y+3, r24 ; 0x03 |
SendOutData('l',0,(unsigned char *) &temp_3,sizeof(temp_3)); |
b64: 23 e0 ldi r18, 0x03 ; 3 |
b66: ae 01 movw r20, r28 |
b68: 4f 5f subi r20, 0xFF ; 255 |
b6a: 5f 4f sbci r21, 0xFF ; 255 |
b6c: 8c e6 ldi r24, 0x6C ; 108 |
b6e: 0e 94 1e 03 call 0x63c <SendOutData> |
AntwortEingetroffen = 1; // erwarte keine Antwort |
b72: 81 e0 ldi r24, 0x01 ; 1 |
b74: 80 93 92 00 sts 0x0092, r24 |
b78: 01 c0 rjmp .+2 ; 0xb7c <DatenUebertragung+0xda> |
state = 1; |
break; |
default: state = 1; |
b7a: 81 e0 ldi r24, 0x01 ; 1 |
b7c: 80 93 6f 00 sts 0x006F, r24 |
b80: 25 96 adiw r28, 0x05 ; 5 |
b82: 0f b6 in r0, 0x3f ; 63 |
b84: f8 94 cli |
b86: de bf out 0x3e, r29 ; 62 |
b88: 0f be out 0x3f, r0 ; 63 |
b8a: cd bf out 0x3d, r28 ; 61 |
b8c: df 91 pop r29 |
b8e: cf 91 pop r28 |
b90: 08 95 ret |
00000b92 <_long_delay>: |
#include "main.h" |
void _long_delay(void) |
{ |
long t = 5000; |
b92: 88 e8 ldi r24, 0x88 ; 136 |
b94: 93 e1 ldi r25, 0x13 ; 19 |
b96: a0 e0 ldi r26, 0x00 ; 0 |
b98: b0 e0 ldi r27, 0x00 ; 0 |
while (t--); |
b9a: 03 97 sbiw r24, 0x03 ; 3 |
b9c: a1 09 sbc r26, r1 |
b9e: b1 09 sbc r27, r1 |
ba0: 8f 3f cpi r24, 0xFF ; 255 |
ba2: 2f ef ldi r18, 0xFF ; 255 |
ba4: 92 07 cpc r25, r18 |
ba6: 2f ef ldi r18, 0xFF ; 255 |
ba8: a2 07 cpc r26, r18 |
baa: 2f ef ldi r18, 0xFF ; 255 |
bac: b2 07 cpc r27, r18 |
bae: a9 f7 brne .-22 ; 0xb9a <_long_delay+0x8> |
bb0: 08 95 ret |
00000bb2 <_short_delay>: |
} |
void _short_delay(void) |
{ |
int t = 500; |
bb2: 84 ef ldi r24, 0xF4 ; 244 |
bb4: 91 e0 ldi r25, 0x01 ; 1 |
while (t--); |
bb6: 03 97 sbiw r24, 0x03 ; 3 |
bb8: 2f ef ldi r18, 0xFF ; 255 |
bba: 8f 3f cpi r24, 0xFF ; 255 |
bbc: 92 07 cpc r25, r18 |
bbe: d9 f7 brne .-10 ; 0xbb6 <_short_delay+0x4> |
bc0: 08 95 ret |
00000bc2 <_lcd_write_command>: |
} |
void _lcd_write_command(unsigned char data) |
{ |
bc2: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bc4: 80 7f andi r24, 0xF0 ; 240 |
bc6: 98 2f mov r25, r24 |
bc8: 94 60 ori r25, 0x04 ; 4 |
bca: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bcc: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bce: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bd0: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bd2: 82 2f mov r24, r18 |
bd4: 99 27 eor r25, r25 |
bd6: 34 e0 ldi r19, 0x04 ; 4 |
bd8: 88 0f add r24, r24 |
bda: 99 1f adc r25, r25 |
bdc: 3a 95 dec r19 |
bde: e1 f7 brne .-8 ; 0xbd8 <_lcd_write_command+0x16> |
be0: 84 60 ori r24, 0x04 ; 4 |
be2: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
be4: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4); |
be6: 22 95 swap r18 |
be8: 20 7f andi r18, 0xF0 ; 240 |
bea: 25 bb out 0x15, r18 ; 21 |
bec: 08 95 ret |
00000bee <_lcd_write_4bit>: |
} |
void _lcd_write_4bit(unsigned char data) |
{ |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bee: 28 2f mov r18, r24 |
bf0: 33 27 eor r19, r19 |
bf2: 44 e0 ldi r20, 0x04 ; 4 |
bf4: 22 0f add r18, r18 |
bf6: 33 1f adc r19, r19 |
bf8: 4a 95 dec r20 |
bfa: e1 f7 brne .-8 ; 0xbf4 <_lcd_write_4bit+0x6> |
bfc: 92 2f mov r25, r18 |
bfe: 94 60 ori r25, 0x04 ; 4 |
c00: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
c02: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4); |
c04: 82 95 swap r24 |
c06: 80 7f andi r24, 0xF0 ; 240 |
c08: 85 bb out 0x15, r24 ; 21 |
c0a: 08 95 ret |
00000c0c <lcd_write_byte>: |
} |
void lcd_write_byte(unsigned char data) |
{ |
c0c: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN | DISPLAY_RS; |
c0e: 80 7f andi r24, 0xF0 ; 240 |
c10: 98 2f mov r25, r24 |
c12: 95 60 ori r25, 0x05 ; 5 |
c14: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_RS; |
c16: 81 60 ori r24, 0x01 ; 1 |
c18: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN | DISPLAY_RS; |
c1a: 82 2f mov r24, r18 |
c1c: 99 27 eor r25, r25 |
c1e: 54 e0 ldi r21, 0x04 ; 4 |
c20: 88 0f add r24, r24 |
c22: 99 1f adc r25, r25 |
c24: 5a 95 dec r21 |
c26: e1 f7 brne .-8 ; 0xc20 <lcd_write_byte+0x14> |
c28: 28 2f mov r18, r24 |
c2a: 25 60 ori r18, 0x05 ; 5 |
c2c: 25 bb out 0x15, r18 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_RS; |
c2e: 81 60 ori r24, 0x01 ; 1 |
c30: 85 bb out 0x15, r24 ; 21 |
c32: 08 95 ret |
00000c34 <my_pput>: |
} |
int my_pput(int zeichen) |
{ |
lcd_write_byte((char) zeichen); |
c34: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
c38: 81 e0 ldi r24, 0x01 ; 1 |
c3a: 90 e0 ldi r25, 0x00 ; 0 |
c3c: 08 95 ret |
00000c3e <LCD_Init>: |
// initialize the LCD controller |
void LCD_Init(void) |
{ |
LCD_PORT_DDR = 0xff;//0xf0 | DISPLAY_RS | DISPLAY_EN; |
c3e: 8f ef ldi r24, 0xFF ; 255 |
c40: 84 bb out 0x14, r24 ; 20 |
_long_delay(); |
c42: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c46: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c4a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c4e: 83 e0 ldi r24, 0x03 ; 3 |
c50: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c54: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c58: 83 e0 ldi r24, 0x03 ; 3 |
c5a: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c5e: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c62: 83 e0 ldi r24, 0x03 ; 3 |
c64: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c68: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x02); // jetzt 4 Bit |
c6c: 82 e0 ldi r24, 0x02 ; 2 |
c6e: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c72: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x28); // 4 Bit Zweizeilig |
c76: 88 e2 ldi r24, 0x28 ; 40 |
c78: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c7c: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08); // Display aus |
c80: 88 e0 ldi r24, 0x08 ; 8 |
c82: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c86: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x01); // Clear |
c8a: 81 e0 ldi r24, 0x01 ; 1 |
c8c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c90: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x06); //Entry mode |
c94: 86 e0 ldi r24, 0x06 ; 6 |
c96: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c9a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08 + 4); // Display an |
c9e: 8c e0 ldi r24, 0x0C ; 12 |
ca0: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
ca4: 0e 94 c9 05 call 0xb92 <_long_delay> |
ca8: 08 95 ret |
00000caa <LCD_Gotoxy>: |
} |
void LCD_Gotoxy(unsigned char x , unsigned char y) |
{ |
caa: 1f 93 push r17 |
cac: cf 93 push r28 |
cae: c8 2f mov r28, r24 |
cb0: 16 2f mov r17, r22 |
_short_delay(); |
cb2: 0e 94 d9 05 call 0xbb2 <_short_delay> |
switch(y) |
cb6: 81 2f mov r24, r17 |
cb8: 99 27 eor r25, r25 |
cba: 81 30 cpi r24, 0x01 ; 1 |
cbc: 91 05 cpc r25, r1 |
cbe: 79 f0 breq .+30 ; 0xcde <LCD_Gotoxy+0x34> |
cc0: 82 30 cpi r24, 0x02 ; 2 |
cc2: 91 05 cpc r25, r1 |
cc4: 1c f4 brge .+6 ; 0xccc <LCD_Gotoxy+0x22> |
cc6: 89 2b or r24, r25 |
cc8: 39 f0 breq .+14 ; 0xcd8 <LCD_Gotoxy+0x2e> |
cca: 13 c0 rjmp .+38 ; 0xcf2 <LCD_Gotoxy+0x48> |
ccc: 82 30 cpi r24, 0x02 ; 2 |
cce: 91 05 cpc r25, r1 |
cd0: 49 f0 breq .+18 ; 0xce4 <LCD_Gotoxy+0x3a> |
cd2: 03 97 sbiw r24, 0x03 ; 3 |
cd4: 51 f0 breq .+20 ; 0xcea <LCD_Gotoxy+0x40> |
cd6: 0d c0 rjmp .+26 ; 0xcf2 <LCD_Gotoxy+0x48> |
{ case 0 : _lcd_write_command(x + 0x80); break; |
cd8: 8c 2f mov r24, r28 |
cda: 80 58 subi r24, 0x80 ; 128 |
cdc: 08 c0 rjmp .+16 ; 0xcee <LCD_Gotoxy+0x44> |
case 1 : _lcd_write_command(x + 0xC0); break; |
cde: 8c 2f mov r24, r28 |
ce0: 80 54 subi r24, 0x40 ; 64 |
ce2: 05 c0 rjmp .+10 ; 0xcee <LCD_Gotoxy+0x44> |
case 2 : _lcd_write_command(x + (0x80 + 20)); break; |
ce4: 8c 2f mov r24, r28 |
ce6: 8c 56 subi r24, 0x6C ; 108 |
ce8: 02 c0 rjmp .+4 ; 0xcee <LCD_Gotoxy+0x44> |
case 3 : _lcd_write_command(x + (0xC0 + 20)); break; |
cea: 8c 2f mov r24, r28 |
cec: 8c 52 subi r24, 0x2C ; 44 |
cee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
cf2: cf 91 pop r28 |
cf4: 1f 91 pop r17 |
cf6: 08 95 ret |
00000cf8 <LCD_Write>: |
} |
} |
void LCD_Write(unsigned char *this_text) |
{ |
cf8: 1f 93 push r17 |
cfa: cf 93 push r28 |
cfc: df 93 push r29 |
cfe: ec 01 movw r28, r24 |
unsigned char i = 0; |
d00: 10 e0 ldi r17, 0x00 ; 0 |
while(this_text[i] != 0) |
{ |
lcd_write_byte(this_text[i++]); |
_long_delay(); |
d02: 88 81 ld r24, Y |
d04: 88 23 and r24, r24 |
d06: 79 f0 breq .+30 ; 0xd26 <LCD_Write+0x2e> |
d08: fe 01 movw r30, r28 |
d0a: e1 0f add r30, r17 |
d0c: f1 1d adc r31, r1 |
d0e: 1f 5f subi r17, 0xFF ; 255 |
d10: 80 81 ld r24, Z |
d12: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
d16: 0e 94 c9 05 call 0xb92 <_long_delay> |
d1a: fe 01 movw r30, r28 |
d1c: e1 0f add r30, r17 |
d1e: f1 1d adc r31, r1 |
d20: 80 81 ld r24, Z |
d22: 88 23 and r24, r24 |
d24: 89 f7 brne .-30 ; 0xd08 <LCD_Write+0x10> |
d26: df 91 pop r29 |
d28: cf 91 pop r28 |
d2a: 1f 91 pop r17 |
d2c: 08 95 ret |
00000d2e <LCD_Putchar>: |
} |
} |
char LCD_Putchar(char zeichen) |
{ |
d2e: 1f 93 push r17 |
d30: 18 2f mov r17, r24 |
_short_delay(); |
d32: 0e 94 d9 05 call 0xbb2 <_short_delay> |
lcd_write_byte((char) zeichen); |
d36: 81 2f mov r24, r17 |
d38: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
d3c: 81 e0 ldi r24, 0x01 ; 1 |
d3e: 90 e0 ldi r25, 0x00 ; 0 |
d40: 1f 91 pop r17 |
d42: 08 95 ret |
00000d44 <PRINT>: |
#include "old_macros.h" |
//#define LIGHTPRINTF |
void PRINT(const char * ptr, unsigned int len) { |
d44: 0f 93 push r16 |
d46: 1f 93 push r17 |
d48: cf 93 push r28 |
d4a: df 93 push r29 |
d4c: 8c 01 movw r16, r24 |
d4e: eb 01 movw r28, r22 |
for(;len;len--) |
d50: 67 2b or r22, r23 |
d52: 39 f0 breq .+14 ; 0xd62 <PRINT+0x1e> |
LCD_Putchar(*ptr++); |
d54: f8 01 movw r30, r16 |
d56: 81 91 ld r24, Z+ |
d58: 8f 01 movw r16, r30 |
d5a: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d5e: 21 97 sbiw r28, 0x01 ; 1 |
d60: c9 f7 brne .-14 ; 0xd54 <PRINT+0x10> |
d62: df 91 pop r29 |
d64: cf 91 pop r28 |
d66: 1f 91 pop r17 |
d68: 0f 91 pop r16 |
d6a: 08 95 ret |
00000d6c <PRINTP>: |
} |
void PRINTP(const char * ptr, unsigned int len) { |
d6c: 0f 93 push r16 |
d6e: 1f 93 push r17 |
d70: cf 93 push r28 |
d72: df 93 push r29 |
d74: 8c 01 movw r16, r24 |
d76: eb 01 movw r28, r22 |
for(;len;len--) |
d78: 67 2b or r22, r23 |
d7a: 41 f0 breq .+16 ; 0xd8c <PRINTP+0x20> |
// LCD_Putchar(PRG_RDB(ptr++)); |
LCD_Putchar(pgm_read_byte(ptr++)); |
d7c: f8 01 movw r30, r16 |
d7e: 0f 5f subi r16, 0xFF ; 255 |
d80: 1f 4f sbci r17, 0xFF ; 255 |
d82: 84 91 lpm r24, Z |
d84: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d88: 21 97 sbiw r28, 0x01 ; 1 |
d8a: c1 f7 brne .-16 ; 0xd7c <PRINTP+0x10> |
d8c: df 91 pop r29 |
d8e: cf 91 pop r28 |
d90: 1f 91 pop r17 |
d92: 0f 91 pop r16 |
d94: 08 95 ret |
00000d96 <PAD_SP>: |
} |
void PAD_SP(signed char howmany) { |
d96: cf 93 push r28 |
d98: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
d9a: 18 16 cp r1, r24 |
d9c: 34 f4 brge .+12 ; 0xdaa <PAD_SP+0x14> |
LCD_Putchar(' '); |
d9e: 80 e2 ldi r24, 0x20 ; 32 |
da0: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
da4: c1 50 subi r28, 0x01 ; 1 |
da6: 1c 16 cp r1, r28 |
da8: d4 f3 brlt .-12 ; 0xd9e <PAD_SP+0x8> |
daa: cf 91 pop r28 |
dac: 08 95 ret |
00000dae <PAD_0>: |
} |
void PAD_0(signed char howmany) { |
dae: cf 93 push r28 |
db0: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
db2: 18 16 cp r1, r24 |
db4: 34 f4 brge .+12 ; 0xdc2 <PAD_0+0x14> |
LCD_Putchar('0'); |
db6: 80 e3 ldi r24, 0x30 ; 48 |
db8: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
dbc: c1 50 subi r28, 0x01 ; 1 |
dbe: 1c 16 cp r1, r28 |
dc0: d4 f3 brlt .-12 ; 0xdb6 <PAD_0+0x8> |
dc2: cf 91 pop r28 |
dc4: 08 95 ret |
00000dc6 <_printf_P>: |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
dc6: 2f 92 push r2 |
dc8: 3f 92 push r3 |
dca: 4f 92 push r4 |
dcc: 5f 92 push r5 |
dce: 6f 92 push r6 |
dd0: 7f 92 push r7 |
dd2: 8f 92 push r8 |
dd4: 9f 92 push r9 |
dd6: af 92 push r10 |
dd8: bf 92 push r11 |
dda: cf 92 push r12 |
ddc: df 92 push r13 |
dde: ef 92 push r14 |
de0: ff 92 push r15 |
de2: 0f 93 push r16 |
de4: 1f 93 push r17 |
de6: cf 93 push r28 |
de8: df 93 push r29 |
dea: cd b7 in r28, 0x3d ; 61 |
dec: de b7 in r29, 0x3e ; 62 |
dee: e0 97 sbiw r28, 0x30 ; 48 |
df0: 0f b6 in r0, 0x3f ; 63 |
df2: f8 94 cli |
df4: de bf out 0x3e, r29 ; 62 |
df6: 0f be out 0x3f, r0 ; 63 |
df8: cd bf out 0x3d, r28 ; 61 |
dfa: a5 e4 ldi r26, 0x45 ; 69 |
dfc: 6a 2e mov r6, r26 |
dfe: 71 2c mov r7, r1 |
e00: 6c 0e add r6, r28 |
e02: 7d 1e adc r7, r29 |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
e04: 1c a6 std Y+44, r1 ; 0x2c |
e06: 1d a6 std Y+45, r1 ; 0x2d |
e08: 1e a6 std Y+46, r1 ; 0x2e |
e0a: 1f a6 std Y+47, r1 ; 0x2f |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
va_start(ap, fmt0); |
fmt = fmt0; |
e0c: d3 01 movw r26, r6 |
e0e: ad 90 ld r10, X+ |
e10: bd 90 ld r11, X+ |
e12: 3d 01 movw r6, r26 |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
e14: c5 01 movw r24, r10 |
e16: 05 c0 rjmp .+10 ; 0xe22 <_printf_P+0x5c> |
e18: 05 32 cpi r16, 0x25 ; 37 |
e1a: 39 f0 breq .+14 ; 0xe2a <_printf_P+0x64> |
e1c: 08 94 sec |
e1e: a1 1c adc r10, r1 |
e20: b1 1c adc r11, r1 |
e22: f5 01 movw r30, r10 |
e24: 04 91 lpm r16, Z |
e26: 00 23 and r16, r16 |
e28: b9 f7 brne .-18 ; 0xe18 <_printf_P+0x52> |
/* void */; |
if ((n = fmt - fmark) != 0) { |
e2a: b5 01 movw r22, r10 |
e2c: 68 1b sub r22, r24 |
e2e: 79 0b sbc r23, r25 |
e30: 11 f0 breq .+4 ; 0xe36 <_printf_P+0x70> |
PRINTP(fmark, n); |
e32: 0e 94 b6 06 call 0xd6c <PRINTP> |
} |
if (ch == '\0') |
e36: 00 23 and r16, r16 |
e38: 09 f4 brne .+2 ; 0xe3c <_printf_P+0x76> |
e3a: 30 c2 rjmp .+1120 ; 0x129c <_printf_P+0x4d6> |
goto done; |
fmt++; /* skip over '%' */ |
e3c: 08 94 sec |
e3e: a1 1c adc r10, r1 |
e40: b1 1c adc r11, r1 |
flags = 0; |
e42: 55 24 eor r5, r5 |
dprec = 0; |
e44: 58 aa std Y+48, r5 ; 0x30 |
width = 0; |
e46: 25 2c mov r2, r5 |
prec = -1; |
e48: 1f ef ldi r17, 0xFF ; 255 |
sign = '\0'; |
e4a: 59 a6 std Y+41, r5 ; 0x29 |
rflag: ch = PRG_RDB(fmt++); |
e4c: f5 01 movw r30, r10 |
e4e: 08 94 sec |
e50: a1 1c adc r10, r1 |
e52: b1 1c adc r11, r1 |
e54: 04 91 lpm r16, Z |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
e56: 05 37 cpi r16, 0x75 ; 117 |
e58: 21 f0 breq .+8 ; 0xe62 <_printf_P+0x9c> |
e5a: 80 2f mov r24, r16 |
e5c: 80 62 ori r24, 0x20 ; 32 |
e5e: 88 37 cpi r24, 0x78 ; 120 |
e60: f1 f4 brne .+60 ; 0xe9e <_printf_P+0xd8> |
#endif |
if (flags&LONGINT) { |
e62: 50 fe sbrs r5, 0 |
e64: 0e c0 rjmp .+28 ; 0xe82 <_printf_P+0xbc> |
_ulong=va_arg(ap, unsigned long); |
e66: f3 01 movw r30, r6 |
e68: 24 e0 ldi r18, 0x04 ; 4 |
e6a: 30 e0 ldi r19, 0x00 ; 0 |
e6c: 62 0e add r6, r18 |
e6e: 73 1e adc r7, r19 |
e70: 80 81 ld r24, Z |
e72: 91 81 ldd r25, Z+1 ; 0x01 |
e74: a2 81 ldd r26, Z+2 ; 0x02 |
e76: b3 81 ldd r27, Z+3 ; 0x03 |
e78: 8c a7 std Y+44, r24 ; 0x2c |
e7a: 9d a7 std Y+45, r25 ; 0x2d |
e7c: ae a7 std Y+46, r26 ; 0x2e |
e7e: bf a7 std Y+47, r27 ; 0x2f |
e80: 0e c0 rjmp .+28 ; 0xe9e <_printf_P+0xd8> |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
e82: f3 01 movw r30, r6 |
e84: a2 e0 ldi r26, 0x02 ; 2 |
e86: b0 e0 ldi r27, 0x00 ; 0 |
e88: 6a 0e add r6, r26 |
e8a: 7b 1e adc r7, r27 |
e8c: 80 81 ld r24, Z |
e8e: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
e90: 9c 01 movw r18, r24 |
e92: 44 27 eor r20, r20 |
e94: 55 27 eor r21, r21 |
e96: 2c a7 std Y+44, r18 ; 0x2c |
e98: 3d a7 std Y+45, r19 ; 0x2d |
e9a: 4e a7 std Y+46, r20 ; 0x2e |
e9c: 5f a7 std Y+47, r21 ; 0x2f |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
e9e: 00 32 cpi r16, 0x20 ; 32 |
ea0: 21 f4 brne .+8 ; 0xeaa <_printf_P+0xe4> |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
ea2: 89 a5 ldd r24, Y+41 ; 0x29 |
ea4: 88 23 and r24, r24 |
ea6: 91 f6 brne .-92 ; 0xe4c <_printf_P+0x86> |
ea8: 1b c0 rjmp .+54 ; 0xee0 <_printf_P+0x11a> |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
eaa: 03 32 cpi r16, 0x23 ; 35 |
eac: 11 f4 brne .+4 ; 0xeb2 <_printf_P+0xec> |
flags |= ALT; |
eae: 38 e0 ldi r19, 0x08 ; 8 |
eb0: 81 c0 rjmp .+258 ; 0xfb4 <_printf_P+0x1ee> |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
eb2: 0a 32 cpi r16, 0x2A ; 42 |
eb4: 11 f0 breq .+4 ; 0xeba <_printf_P+0xf4> |
eb6: 0d 32 cpi r16, 0x2D ; 45 |
eb8: 89 f4 brne .+34 ; 0xedc <_printf_P+0x116> |
if (ch=='*') { |
eba: 0a 32 cpi r16, 0x2A ; 42 |
ebc: 51 f4 brne .+20 ; 0xed2 <_printf_P+0x10c> |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
ebe: f3 01 movw r30, r6 |
ec0: 42 e0 ldi r20, 0x02 ; 2 |
ec2: 50 e0 ldi r21, 0x00 ; 0 |
ec4: 64 0e add r6, r20 |
ec6: 75 1e adc r7, r21 |
ec8: 20 80 ld r2, Z |
eca: 22 20 and r2, r2 |
ecc: 0c f0 brlt .+2 ; 0xed0 <_printf_P+0x10a> |
ece: be cf rjmp .-132 ; 0xe4c <_printf_P+0x86> |
goto rflag; |
width = -width; |
ed0: 21 94 neg r2 |
} |
flags |= LADJUST; |
ed2: 50 e1 ldi r21, 0x10 ; 16 |
ed4: 55 2a or r5, r21 |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
ed6: 8f ed ldi r24, 0xDF ; 223 |
ed8: 58 22 and r5, r24 |
goto rflag; |
eda: b8 cf rjmp .-144 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='+') { |
edc: 0b 32 cpi r16, 0x2B ; 43 |
ede: 11 f4 brne .+4 ; 0xee4 <_printf_P+0x11e> |
sign = '+'; |
ee0: 09 a7 std Y+41, r16 ; 0x29 |
goto rflag; |
ee2: b4 cf rjmp .-152 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='.') { |
ee4: 0e 32 cpi r16, 0x2E ; 46 |
ee6: c1 f5 brne .+112 ; 0xf58 <_printf_P+0x192> |
if ((ch = PRG_RDB(fmt++)) == '*') { |
ee8: f5 01 movw r30, r10 |
eea: 08 94 sec |
eec: a1 1c adc r10, r1 |
eee: b1 1c adc r11, r1 |
ef0: 04 91 lpm r16, Z |
ef2: 0a 32 cpi r16, 0x2A ; 42 |
ef4: 79 f4 brne .+30 ; 0xf14 <_printf_P+0x14e> |
n = va_arg(ap, int); |
ef6: f3 01 movw r30, r6 |
ef8: a2 e0 ldi r26, 0x02 ; 2 |
efa: b0 e0 ldi r27, 0x00 ; 0 |
efc: 6a 0e add r6, r26 |
efe: 7b 1e adc r7, r27 |
f00: 60 81 ld r22, Z |
f02: 71 81 ldd r23, Z+1 ; 0x01 |
prec = n < 0 ? -1 : n; |
f04: bf ef ldi r27, 0xFF ; 255 |
f06: 6f 3f cpi r22, 0xFF ; 255 |
f08: 7b 07 cpc r23, r27 |
f0a: 14 f4 brge .+4 ; 0xf10 <_printf_P+0x14a> |
f0c: 6f ef ldi r22, 0xFF ; 255 |
f0e: 7f ef ldi r23, 0xFF ; 255 |
f10: 16 2f mov r17, r22 |
goto rflag; |
f12: 9c cf rjmp .-200 ; 0xe4c <_printf_P+0x86> |
} |
n = 0; |
f14: 60 e0 ldi r22, 0x00 ; 0 |
f16: 70 e0 ldi r23, 0x00 ; 0 |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
f18: 80 2f mov r24, r16 |
f1a: 80 53 subi r24, 0x30 ; 48 |
f1c: 8a 30 cpi r24, 0x0A ; 10 |
f1e: a0 f4 brcc .+40 ; 0xf48 <_printf_P+0x182> |
f20: cb 01 movw r24, r22 |
f22: f3 e0 ldi r31, 0x03 ; 3 |
f24: 88 0f add r24, r24 |
f26: 99 1f adc r25, r25 |
f28: fa 95 dec r31 |
f2a: e1 f7 brne .-8 ; 0xf24 <_printf_P+0x15e> |
f2c: 86 0f add r24, r22 |
f2e: 97 1f adc r25, r23 |
f30: 68 0f add r22, r24 |
f32: 79 1f adc r23, r25 |
f34: 60 0f add r22, r16 |
f36: 71 1d adc r23, r1 |
f38: 60 53 subi r22, 0x30 ; 48 |
f3a: 70 40 sbci r23, 0x00 ; 0 |
f3c: f5 01 movw r30, r10 |
f3e: 08 94 sec |
f40: a1 1c adc r10, r1 |
f42: b1 1c adc r11, r1 |
f44: 04 91 lpm r16, Z |
f46: e8 cf rjmp .-48 ; 0xf18 <_printf_P+0x152> |
} |
prec = n < 0 ? -1 : n; |
f48: ef ef ldi r30, 0xFF ; 255 |
f4a: 6f 3f cpi r22, 0xFF ; 255 |
f4c: 7e 07 cpc r23, r30 |
f4e: 14 f4 brge .+4 ; 0xf54 <_printf_P+0x18e> |
f50: 6f ef ldi r22, 0xFF ; 255 |
f52: 7f ef ldi r23, 0xFF ; 255 |
f54: 16 2f mov r17, r22 |
goto reswitch; |
f56: 7f cf rjmp .-258 ; 0xe56 <_printf_P+0x90> |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
f58: 00 33 cpi r16, 0x30 ; 48 |
f5a: 29 f4 brne .+10 ; 0xf66 <_printf_P+0x1a0> |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
f5c: 54 fc sbrc r5, 4 |
f5e: 76 cf rjmp .-276 ; 0xe4c <_printf_P+0x86> |
flags |= ZEROPAD; /* '-' disables '0' */ |
f60: f0 e2 ldi r31, 0x20 ; 32 |
f62: 5f 2a or r5, r31 |
goto rflag; |
f64: 73 cf rjmp .-282 ; 0xe4c <_printf_P+0x86> |
} else if (ch>='1' && ch<='9') { |
f66: 80 2f mov r24, r16 |
f68: 81 53 subi r24, 0x31 ; 49 |
f6a: 89 30 cpi r24, 0x09 ; 9 |
f6c: d8 f4 brcc .+54 ; 0xfa4 <_printf_P+0x1de> |
n = 0; |
f6e: 60 e0 ldi r22, 0x00 ; 0 |
f70: 70 e0 ldi r23, 0x00 ; 0 |
do { |
n = 10 * n + to_digit(ch); |
f72: cb 01 movw r24, r22 |
f74: e3 e0 ldi r30, 0x03 ; 3 |
f76: 88 0f add r24, r24 |
f78: 99 1f adc r25, r25 |
f7a: ea 95 dec r30 |
f7c: e1 f7 brne .-8 ; 0xf76 <_printf_P+0x1b0> |
f7e: 86 0f add r24, r22 |
f80: 97 1f adc r25, r23 |
f82: 68 0f add r22, r24 |
f84: 79 1f adc r23, r25 |
f86: 60 0f add r22, r16 |
f88: 71 1d adc r23, r1 |
f8a: 60 53 subi r22, 0x30 ; 48 |
f8c: 70 40 sbci r23, 0x00 ; 0 |
ch = PRG_RDB(fmt++); |
f8e: f5 01 movw r30, r10 |
f90: 08 94 sec |
f92: a1 1c adc r10, r1 |
f94: b1 1c adc r11, r1 |
f96: 04 91 lpm r16, Z |
} while (is_digit(ch)); |
f98: 80 2f mov r24, r16 |
f9a: 80 53 subi r24, 0x30 ; 48 |
f9c: 8a 30 cpi r24, 0x0A ; 10 |
f9e: 48 f3 brcs .-46 ; 0xf72 <_printf_P+0x1ac> |
width = n; |
fa0: 26 2e mov r2, r22 |
goto reswitch; |
fa2: 59 cf rjmp .-334 ; 0xe56 <_printf_P+0x90> |
} else if (ch=='h') { |
fa4: 08 36 cpi r16, 0x68 ; 104 |
fa6: 19 f4 brne .+6 ; 0xfae <_printf_P+0x1e8> |
flags |= SHORTINT; |
fa8: 24 e0 ldi r18, 0x04 ; 4 |
faa: 52 2a or r5, r18 |
goto rflag; |
fac: 4f cf rjmp .-354 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='l') { |
fae: 0c 36 cpi r16, 0x6C ; 108 |
fb0: 19 f4 brne .+6 ; 0xfb8 <_printf_P+0x1f2> |
flags |= LONGINT; |
fb2: 31 e0 ldi r19, 0x01 ; 1 |
fb4: 53 2a or r5, r19 |
goto rflag; |
fb6: 4a cf rjmp .-364 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='c') { |
fb8: 03 36 cpi r16, 0x63 ; 99 |
fba: 61 f4 brne .+24 ; 0xfd4 <_printf_P+0x20e> |
*(cp = buf) = va_arg(ap, int); |
fbc: 4e 01 movw r8, r28 |
fbe: 08 94 sec |
fc0: 81 1c adc r8, r1 |
fc2: 91 1c adc r9, r1 |
fc4: f3 01 movw r30, r6 |
fc6: 42 e0 ldi r20, 0x02 ; 2 |
fc8: 50 e0 ldi r21, 0x00 ; 0 |
fca: 64 0e add r6, r20 |
fcc: 75 1e adc r7, r21 |
fce: 80 81 ld r24, Z |
fd0: 89 83 std Y+1, r24 ; 0x01 |
fd2: 1b c1 rjmp .+566 ; 0x120a <_printf_P+0x444> |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
fd4: 04 34 cpi r16, 0x44 ; 68 |
fd6: 21 f0 breq .+8 ; 0xfe0 <_printf_P+0x21a> |
fd8: 04 36 cpi r16, 0x64 ; 100 |
fda: 11 f0 breq .+4 ; 0xfe0 <_printf_P+0x21a> |
fdc: 09 36 cpi r16, 0x69 ; 105 |
fde: b1 f5 brne .+108 ; 0x104c <_printf_P+0x286> |
if(ch=='D') |
fe0: 04 34 cpi r16, 0x44 ; 68 |
fe2: 11 f4 brne .+4 ; 0xfe8 <_printf_P+0x222> |
flags |= LONGINT; |
fe4: 51 e0 ldi r21, 0x01 ; 1 |
fe6: 55 2a or r5, r21 |
if (flags&LONGINT) { |
fe8: 50 fe sbrs r5, 0 |
fea: 0a c0 rjmp .+20 ; 0x1000 <_printf_P+0x23a> |
_ulong=va_arg(ap, long); |
fec: f3 01 movw r30, r6 |
fee: 84 e0 ldi r24, 0x04 ; 4 |
ff0: 90 e0 ldi r25, 0x00 ; 0 |
ff2: 68 0e add r6, r24 |
ff4: 79 1e adc r7, r25 |
ff6: 20 81 ld r18, Z |
ff8: 31 81 ldd r19, Z+1 ; 0x01 |
ffa: 42 81 ldd r20, Z+2 ; 0x02 |
ffc: 53 81 ldd r21, Z+3 ; 0x03 |
ffe: 0c c0 rjmp .+24 ; 0x1018 <_printf_P+0x252> |
} else { |
register int _d; |
_d=va_arg(ap, int); |
1000: f3 01 movw r30, r6 |
1002: 42 e0 ldi r20, 0x02 ; 2 |
1004: 50 e0 ldi r21, 0x00 ; 0 |
1006: 64 0e add r6, r20 |
1008: 75 1e adc r7, r21 |
100a: 80 81 ld r24, Z |
100c: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
100e: 9c 01 movw r18, r24 |
1010: 44 27 eor r20, r20 |
1012: 37 fd sbrc r19, 7 |
1014: 40 95 com r20 |
1016: 54 2f mov r21, r20 |
1018: 2c a7 std Y+44, r18 ; 0x2c |
101a: 3d a7 std Y+45, r19 ; 0x2d |
101c: 4e a7 std Y+46, r20 ; 0x2e |
101e: 5f a7 std Y+47, r21 ; 0x2f |
} |
if ((long)_ulong < 0) { |
1020: 8c a5 ldd r24, Y+44 ; 0x2c |
1022: 9d a5 ldd r25, Y+45 ; 0x2d |
1024: ae a5 ldd r26, Y+46 ; 0x2e |
1026: bf a5 ldd r27, Y+47 ; 0x2f |
1028: b7 ff sbrs r27, 7 |
102a: 0d c0 rjmp .+26 ; 0x1046 <_printf_P+0x280> |
_ulong = -_ulong; |
102c: b0 95 com r27 |
102e: a0 95 com r26 |
1030: 90 95 com r25 |
1032: 81 95 neg r24 |
1034: 9f 4f sbci r25, 0xFF ; 255 |
1036: af 4f sbci r26, 0xFF ; 255 |
1038: bf 4f sbci r27, 0xFF ; 255 |
103a: 8c a7 std Y+44, r24 ; 0x2c |
103c: 9d a7 std Y+45, r25 ; 0x2d |
103e: ae a7 std Y+46, r26 ; 0x2e |
1040: bf a7 std Y+47, r27 ; 0x2f |
sign = '-'; |
1042: 8d e2 ldi r24, 0x2D ; 45 |
1044: 89 a7 std Y+41, r24 ; 0x29 |
} |
base = DEC; |
1046: 7a e0 ldi r23, 0x0A ; 10 |
1048: 47 2e mov r4, r23 |
goto number; |
104a: 7b c0 rjmp .+246 ; 0x1142 <_printf_P+0x37c> |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
104c: 0f 34 cpi r16, 0x4F ; 79 |
104e: 11 f0 breq .+4 ; 0x1054 <_printf_P+0x28e> |
1050: 0f 36 cpi r16, 0x6F ; 111 |
1052: 39 f4 brne .+14 ; 0x1062 <_printf_P+0x29c> |
if (ch=='O') |
1054: 0f 34 cpi r16, 0x4F ; 79 |
1056: 11 f4 brne .+4 ; 0x105c <_printf_P+0x296> |
flags |= LONGINT; |
1058: 91 e0 ldi r25, 0x01 ; 1 |
105a: 59 2a or r5, r25 |
base = OCT; |
105c: 68 e0 ldi r22, 0x08 ; 8 |
105e: 46 2e mov r4, r22 |
goto nosign; |
1060: 6f c0 rjmp .+222 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='p') { |
1062: 00 37 cpi r16, 0x70 ; 112 |
1064: a1 f4 brne .+40 ; 0x108e <_printf_P+0x2c8> |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
1066: f3 01 movw r30, r6 |
1068: a2 e0 ldi r26, 0x02 ; 2 |
106a: b0 e0 ldi r27, 0x00 ; 0 |
106c: 6a 0e add r6, r26 |
106e: 7b 1e adc r7, r27 |
1070: 80 81 ld r24, Z |
1072: 91 81 ldd r25, Z+1 ; 0x01 |
1074: 9c 01 movw r18, r24 |
1076: 44 27 eor r20, r20 |
1078: 55 27 eor r21, r21 |
107a: 2c a7 std Y+44, r18 ; 0x2c |
107c: 3d a7 std Y+45, r19 ; 0x2d |
107e: 4e a7 std Y+46, r20 ; 0x2e |
1080: 5f a7 std Y+47, r21 ; 0x2f |
base = HEX; |
1082: 50 e1 ldi r21, 0x10 ; 16 |
1084: 45 2e mov r4, r21 |
flags |= HEXPREFIX; |
1086: 30 e4 ldi r19, 0x40 ; 64 |
1088: 53 2a or r5, r19 |
ch = 'x'; |
108a: 08 e7 ldi r16, 0x78 ; 120 |
goto nosign; |
108c: 59 c0 rjmp .+178 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='s') { // print a string from RAM |
108e: 03 37 cpi r16, 0x73 ; 115 |
1090: c1 f5 brne .+112 ; 0x1102 <_printf_P+0x33c> |
if ((cp = va_arg(ap, char *)) == NULL) { |
1092: f3 01 movw r30, r6 |
1094: 42 e0 ldi r20, 0x02 ; 2 |
1096: 50 e0 ldi r21, 0x00 ; 0 |
1098: 64 0e add r6, r20 |
109a: 75 1e adc r7, r21 |
109c: 80 80 ld r8, Z |
109e: 91 80 ldd r9, Z+1 ; 0x01 |
10a0: 81 14 cp r8, r1 |
10a2: 91 04 cpc r9, r1 |
10a4: 89 f4 brne .+34 ; 0x10c8 <_printf_P+0x302> |
cp=buf; |
10a6: 4e 01 movw r8, r28 |
10a8: 08 94 sec |
10aa: 81 1c adc r8, r1 |
10ac: 91 1c adc r9, r1 |
cp[0] = '('; |
10ae: 88 e2 ldi r24, 0x28 ; 40 |
10b0: 89 83 std Y+1, r24 ; 0x01 |
cp[1] = 'n'; |
10b2: 8e e6 ldi r24, 0x6E ; 110 |
10b4: f4 01 movw r30, r8 |
10b6: 81 83 std Z+1, r24 ; 0x01 |
cp[2] = 'u'; |
10b8: 85 e7 ldi r24, 0x75 ; 117 |
10ba: 8b 83 std Y+3, r24 ; 0x03 |
cp[4] = cp[3] = 'l'; |
10bc: 8c e6 ldi r24, 0x6C ; 108 |
10be: 8c 83 std Y+4, r24 ; 0x04 |
10c0: 8d 83 std Y+5, r24 ; 0x05 |
cp[5] = ')'; |
10c2: 89 e2 ldi r24, 0x29 ; 41 |
10c4: 8e 83 std Y+6, r24 ; 0x06 |
cp[6] = '\0'; |
10c6: 1f 82 std Y+7, r1 ; 0x07 |
} |
if (prec >= 0) { |
10c8: 17 fd sbrc r17, 7 |
10ca: 13 c0 rjmp .+38 ; 0x10f2 <_printf_P+0x32c> |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
10cc: 81 2f mov r24, r17 |
10ce: 99 27 eor r25, r25 |
10d0: 87 fd sbrc r24, 7 |
10d2: 90 95 com r25 |
10d4: ac 01 movw r20, r24 |
10d6: 60 e0 ldi r22, 0x00 ; 0 |
10d8: 70 e0 ldi r23, 0x00 ; 0 |
10da: c4 01 movw r24, r8 |
10dc: 0e 94 64 0c call 0x18c8 <memchr> |
if (p != NULL) { |
10e0: 00 97 sbiw r24, 0x00 ; 0 |
10e2: 29 f0 breq .+10 ; 0x10ee <_printf_P+0x328> |
size = p - cp; |
10e4: d8 2e mov r13, r24 |
10e6: d8 18 sub r13, r8 |
if (size > prec) |
10e8: 1d 15 cp r17, r13 |
10ea: 0c f0 brlt .+2 ; 0x10ee <_printf_P+0x328> |
10ec: 90 c0 rjmp .+288 ; 0x120e <_printf_P+0x448> |
size = prec; |
} else |
size = prec; |
10ee: d1 2e mov r13, r17 |
10f0: 8e c0 rjmp .+284 ; 0x120e <_printf_P+0x448> |
} else |
size = strlen(cp); |
10f2: f4 01 movw r30, r8 |
10f4: 01 90 ld r0, Z+ |
10f6: 00 20 and r0, r0 |
10f8: e9 f7 brne .-6 ; 0x10f4 <_printf_P+0x32e> |
10fa: 31 97 sbiw r30, 0x01 ; 1 |
10fc: de 2e mov r13, r30 |
10fe: d8 18 sub r13, r8 |
1100: 86 c0 rjmp .+268 ; 0x120e <_printf_P+0x448> |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
1102: 05 35 cpi r16, 0x55 ; 85 |
1104: 11 f0 breq .+4 ; 0x110a <_printf_P+0x344> |
1106: 05 37 cpi r16, 0x75 ; 117 |
1108: 39 f4 brne .+14 ; 0x1118 <_printf_P+0x352> |
if (ch=='U') |
110a: 05 35 cpi r16, 0x55 ; 85 |
110c: 11 f4 brne .+4 ; 0x1112 <_printf_P+0x34c> |
flags |= LONGINT; |
110e: f1 e0 ldi r31, 0x01 ; 1 |
1110: 5f 2a or r5, r31 |
base = DEC; |
1112: 4a e0 ldi r20, 0x0A ; 10 |
1114: 44 2e mov r4, r20 |
goto nosign; |
1116: 14 c0 rjmp .+40 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='X'||ch=='x') { |
1118: 08 35 cpi r16, 0x58 ; 88 |
111a: 19 f0 breq .+6 ; 0x1122 <_printf_P+0x35c> |
111c: 08 37 cpi r16, 0x78 ; 120 |
111e: 09 f0 breq .+2 ; 0x1122 <_printf_P+0x35c> |
1120: 6c c0 rjmp .+216 ; 0x11fa <_printf_P+0x434> |
base = HEX; |
1122: 30 e1 ldi r19, 0x10 ; 16 |
1124: 43 2e mov r4, r19 |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
1126: 53 fe sbrs r5, 3 |
1128: 0b c0 rjmp .+22 ; 0x1140 <_printf_P+0x37a> |
112a: 2c a5 ldd r18, Y+44 ; 0x2c |
112c: 3d a5 ldd r19, Y+45 ; 0x2d |
112e: 4e a5 ldd r20, Y+46 ; 0x2e |
1130: 5f a5 ldd r21, Y+47 ; 0x2f |
1132: 21 15 cp r18, r1 |
1134: 31 05 cpc r19, r1 |
1136: 41 05 cpc r20, r1 |
1138: 51 05 cpc r21, r1 |
113a: 11 f0 breq .+4 ; 0x1140 <_printf_P+0x37a> |
flags |= HEXPREFIX; |
113c: 30 e4 ldi r19, 0x40 ; 64 |
113e: 53 2a or r5, r19 |
/* unsigned conversions */ |
nosign: sign = '\0'; |
1140: 19 a6 std Y+41, r1 ; 0x29 |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
1142: 18 ab std Y+48, r17 ; 0x30 |
1144: 17 fd sbrc r17, 7 |
1146: 02 c0 rjmp .+4 ; 0x114c <_printf_P+0x386> |
flags &= ~ZEROPAD; |
1148: 4f ed ldi r20, 0xDF ; 223 |
114a: 54 22 and r5, r20 |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
114c: 29 e2 ldi r18, 0x29 ; 41 |
114e: 82 2e mov r8, r18 |
1150: 91 2c mov r9, r1 |
1152: 8c 0e add r8, r28 |
1154: 9d 1e adc r9, r29 |
if (_ulong != 0 || prec != 0) { |
1156: 8c a5 ldd r24, Y+44 ; 0x2c |
1158: 9d a5 ldd r25, Y+45 ; 0x2d |
115a: ae a5 ldd r26, Y+46 ; 0x2e |
115c: bf a5 ldd r27, Y+47 ; 0x2f |
115e: 00 97 sbiw r24, 0x00 ; 0 |
1160: a1 05 cpc r26, r1 |
1162: b1 05 cpc r27, r1 |
1164: 21 f4 brne .+8 ; 0x116e <_printf_P+0x3a8> |
1166: 98 a9 ldd r25, Y+48 ; 0x30 |
1168: 99 23 and r25, r25 |
116a: 09 f4 brne .+2 ; 0x116e <_printf_P+0x3a8> |
116c: 3f c0 rjmp .+126 ; 0x11ec <_printf_P+0x426> |
116e: c4 2c mov r12, r4 |
1170: dd 24 eor r13, r13 |
1172: ee 24 eor r14, r14 |
1174: ff 24 eor r15, r15 |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
1176: 33 24 eor r3, r3 |
1178: 2c a5 ldd r18, Y+44 ; 0x2c |
117a: 3d a5 ldd r19, Y+45 ; 0x2d |
117c: 4e a5 ldd r20, Y+46 ; 0x2e |
117e: 5f a5 ldd r21, Y+47 ; 0x2f |
1180: 2c 15 cp r18, r12 |
1182: 3d 05 cpc r19, r13 |
1184: 4e 05 cpc r20, r14 |
1186: 5f 05 cpc r21, r15 |
1188: 10 f0 brcs .+4 ; 0x118e <_printf_P+0x3c8> |
118a: 91 e0 ldi r25, 0x01 ; 1 |
118c: 39 2e mov r3, r25 |
_d = _ulong % base; |
118e: 6c a5 ldd r22, Y+44 ; 0x2c |
1190: 7d a5 ldd r23, Y+45 ; 0x2d |
1192: 8e a5 ldd r24, Y+46 ; 0x2e |
1194: 9f a5 ldd r25, Y+47 ; 0x2f |
1196: a7 01 movw r20, r14 |
1198: 96 01 movw r18, r12 |
119a: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
119e: dc 01 movw r26, r24 |
11a0: cb 01 movw r24, r22 |
11a2: 18 2f mov r17, r24 |
if (_d<10) { |
11a4: 8a 30 cpi r24, 0x0A ; 10 |
11a6: 10 f4 brcc .+4 ; 0x11ac <_printf_P+0x3e6> |
_d+='0'; |
11a8: 10 5d subi r17, 0xD0 ; 208 |
11aa: 04 c0 rjmp .+8 ; 0x11b4 <_printf_P+0x3ee> |
} else { |
_d+='a'-10; |
11ac: 19 5a subi r17, 0xA9 ; 169 |
if (ch=='X') _d&=~0x20; |
11ae: 08 35 cpi r16, 0x58 ; 88 |
11b0: 09 f4 brne .+2 ; 0x11b4 <_printf_P+0x3ee> |
11b2: 1f 7d andi r17, 0xDF ; 223 |
} |
*--cp=_d; |
11b4: d4 01 movw r26, r8 |
11b6: 1e 93 st -X, r17 |
11b8: 4d 01 movw r8, r26 |
_ulong /= base; |
11ba: 6c a5 ldd r22, Y+44 ; 0x2c |
11bc: 7d a5 ldd r23, Y+45 ; 0x2d |
11be: 8e a5 ldd r24, Y+46 ; 0x2e |
11c0: 9f a5 ldd r25, Y+47 ; 0x2f |
11c2: a7 01 movw r20, r14 |
11c4: 96 01 movw r18, r12 |
11c6: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
11ca: 2c a7 std Y+44, r18 ; 0x2c |
11cc: 3d a7 std Y+45, r19 ; 0x2d |
11ce: 4e a7 std Y+46, r20 ; 0x2e |
11d0: 5f a7 std Y+47, r21 ; 0x2f |
} while (notlastdigit); |
11d2: 33 20 and r3, r3 |
11d4: 81 f6 brne .-96 ; 0x1176 <_printf_P+0x3b0> |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
11d6: b8 e0 ldi r27, 0x08 ; 8 |
11d8: 4b 16 cp r4, r27 |
11da: 41 f4 brne .+16 ; 0x11ec <_printf_P+0x426> |
11dc: 53 fe sbrs r5, 3 |
11de: 06 c0 rjmp .+12 ; 0x11ec <_printf_P+0x426> |
11e0: 10 33 cpi r17, 0x30 ; 48 |
11e2: 21 f0 breq .+8 ; 0x11ec <_printf_P+0x426> |
*--cp = '0'; |
11e4: 80 e3 ldi r24, 0x30 ; 48 |
11e6: f4 01 movw r30, r8 |
11e8: 82 93 st -Z, r24 |
11ea: 4f 01 movw r8, r30 |
#endif |
} |
size = buf + BUF - cp; |
11ec: ce 01 movw r24, r28 |
11ee: 01 96 adiw r24, 0x01 ; 1 |
11f0: d8 2e mov r13, r24 |
11f2: d8 18 sub r13, r8 |
11f4: f8 e2 ldi r31, 0x28 ; 40 |
11f6: df 0e add r13, r31 |
11f8: 0b c0 rjmp .+22 ; 0x1210 <_printf_P+0x44a> |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
11fa: 00 23 and r16, r16 |
11fc: 09 f4 brne .+2 ; 0x1200 <_printf_P+0x43a> |
11fe: 4e c0 rjmp .+156 ; 0x129c <_printf_P+0x4d6> |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
1200: 4e 01 movw r8, r28 |
1202: 08 94 sec |
1204: 81 1c adc r8, r1 |
1206: 91 1c adc r9, r1 |
*cp = ch; |
1208: 09 83 std Y+1, r16 ; 0x01 |
size = 1; |
120a: 81 e0 ldi r24, 0x01 ; 1 |
120c: d8 2e mov r13, r24 |
sign = '\0'; |
120e: 19 a6 std Y+41, r1 ; 0x29 |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
1210: 1d 2d mov r17, r13 |
dpad = dprec - size; |
1212: c8 a8 ldd r12, Y+48 ; 0x30 |
1214: cd 18 sub r12, r13 |
if (dpad < 0) |
1216: c7 fc sbrc r12, 7 |
dpad = 0; |
1218: cc 24 eor r12, r12 |
if (sign) |
121a: 89 a5 ldd r24, Y+41 ; 0x29 |
121c: 88 23 and r24, r24 |
121e: 11 f0 breq .+4 ; 0x1224 <_printf_P+0x45e> |
fieldsz++; |
1220: 1f 5f subi r17, 0xFF ; 255 |
1222: 02 c0 rjmp .+4 ; 0x1228 <_printf_P+0x462> |
else if (flags & HEXPREFIX) |
1224: 56 fc sbrc r5, 6 |
fieldsz += 2; |
1226: 1e 5f subi r17, 0xFE ; 254 |
fieldsz += dpad; |
1228: 1c 0d add r17, r12 |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
122a: e5 2c mov r14, r5 |
122c: ff 24 eor r15, r15 |
122e: c7 01 movw r24, r14 |
1230: 80 73 andi r24, 0x30 ; 48 |
1232: 90 70 andi r25, 0x00 ; 0 |
1234: 89 2b or r24, r25 |
1236: 21 f4 brne .+8 ; 0x1240 <_printf_P+0x47a> |
PAD_SP(width - fieldsz); |
1238: 82 2d mov r24, r2 |
123a: 81 1b sub r24, r17 |
123c: 0e 94 cb 06 call 0xd96 <PAD_SP> |
/* prefix */ |
if (sign) { |
1240: 89 a5 ldd r24, Y+41 ; 0x29 |
1242: 88 23 and r24, r24 |
1244: 29 f0 breq .+10 ; 0x1250 <_printf_P+0x48a> |
PRINT(&sign, 1); |
1246: 61 e0 ldi r22, 0x01 ; 1 |
1248: 70 e0 ldi r23, 0x00 ; 0 |
124a: ce 01 movw r24, r28 |
124c: 89 96 adiw r24, 0x29 ; 41 |
124e: 09 c0 rjmp .+18 ; 0x1262 <_printf_P+0x49c> |
} else if (flags & HEXPREFIX) { |
1250: e6 fe sbrs r14, 6 |
1252: 09 c0 rjmp .+18 ; 0x1266 <_printf_P+0x4a0> |
ox[0] = '0'; |
1254: 80 e3 ldi r24, 0x30 ; 48 |
1256: 8a a7 std Y+42, r24 ; 0x2a |
ox[1] = ch; |
1258: 0b a7 std Y+43, r16 ; 0x2b |
PRINT(ox, 2); |
125a: 62 e0 ldi r22, 0x02 ; 2 |
125c: 70 e0 ldi r23, 0x00 ; 0 |
125e: ce 01 movw r24, r28 |
1260: 8a 96 adiw r24, 0x2a ; 42 |
1262: 0e 94 a2 06 call 0xd44 <PRINT> |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
1266: c7 01 movw r24, r14 |
1268: 80 73 andi r24, 0x30 ; 48 |
126a: 90 70 andi r25, 0x00 ; 0 |
126c: 80 97 sbiw r24, 0x20 ; 32 |
126e: 21 f4 brne .+8 ; 0x1278 <_printf_P+0x4b2> |
PAD_0(width - fieldsz); |
1270: 82 2d mov r24, r2 |
1272: 81 1b sub r24, r17 |
1274: 0e 94 d7 06 call 0xdae <PAD_0> |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
1278: 8c 2d mov r24, r12 |
127a: 0e 94 d7 06 call 0xdae <PAD_0> |
/* the string or number proper */ |
PRINT(cp, size); |
127e: 8d 2d mov r24, r13 |
1280: 99 27 eor r25, r25 |
1282: 87 fd sbrc r24, 7 |
1284: 90 95 com r25 |
1286: bc 01 movw r22, r24 |
1288: c4 01 movw r24, r8 |
128a: 0e 94 a2 06 call 0xd44 <PRINT> |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
128e: e4 fe sbrs r14, 4 |
1290: c1 cd rjmp .-1150 ; 0xe14 <_printf_P+0x4e> |
PAD_SP(width - fieldsz); |
1292: 82 2d mov r24, r2 |
1294: 81 1b sub r24, r17 |
1296: 0e 94 cb 06 call 0xd96 <PAD_SP> |
129a: bc cd rjmp .-1160 ; 0xe14 <_printf_P+0x4e> |
129c: e0 96 adiw r28, 0x30 ; 48 |
129e: 0f b6 in r0, 0x3f ; 63 |
12a0: f8 94 cli |
12a2: de bf out 0x3e, r29 ; 62 |
12a4: 0f be out 0x3f, r0 ; 63 |
12a6: cd bf out 0x3d, r28 ; 61 |
12a8: df 91 pop r29 |
12aa: cf 91 pop r28 |
12ac: 1f 91 pop r17 |
12ae: 0f 91 pop r16 |
12b0: ff 90 pop r15 |
12b2: ef 90 pop r14 |
12b4: df 90 pop r13 |
12b6: cf 90 pop r12 |
12b8: bf 90 pop r11 |
12ba: af 90 pop r10 |
12bc: 9f 90 pop r9 |
12be: 8f 90 pop r8 |
12c0: 7f 90 pop r7 |
12c2: 6f 90 pop r6 |
12c4: 5f 90 pop r5 |
12c6: 4f 90 pop r4 |
12c8: 3f 90 pop r3 |
12ca: 2f 90 pop r2 |
12cc: 08 95 ret |
000012ce <__vector_9>: |
}; |
SIGNAL (SIG_OVERFLOW1) |
{ |
12ce: 1f 92 push r1 |
12d0: 0f 92 push r0 |
12d2: 0f b6 in r0, 0x3f ; 63 |
12d4: 0f 92 push r0 |
12d6: 11 24 eor r1, r1 |
12d8: 8f 93 push r24 |
12da: 9f 93 push r25 |
static unsigned char cnt_10ms = 0; |
TCNT1 -= TIMER_RELOAD_VALUE; |
12dc: 8c b5 in r24, 0x2c ; 44 |
12de: 9d b5 in r25, 0x2d ; 45 |
12e0: 8a 5f subi r24, 0xFA ; 250 |
12e2: 90 40 sbci r25, 0x00 ; 0 |
12e4: 9d bd out 0x2d, r25 ; 45 |
12e6: 8c bd out 0x2c, r24 ; 44 |
CountMilliseconds++; |
12e8: 80 91 a5 00 lds r24, 0x00A5 |
12ec: 90 91 a6 00 lds r25, 0x00A6 |
12f0: 01 96 adiw r24, 0x01 ; 1 |
12f2: 90 93 a6 00 sts 0x00A6, r25 |
12f6: 80 93 a5 00 sts 0x00A5, r24 |
if(DisplayBusy) DisplayBusy--; |
12fa: 80 91 93 00 lds r24, 0x0093 |
12fe: 88 23 and r24, r24 |
1300: 29 f0 breq .+10 ; 0x130c <__vector_9+0x3e> |
1302: 80 91 93 00 lds r24, 0x0093 |
1306: 81 50 subi r24, 0x01 ; 1 |
1308: 80 93 93 00 sts 0x0093, r24 |
if(LoescheIrCodeTimer) |
130c: 80 91 7c 00 lds r24, 0x007C |
1310: 90 91 7d 00 lds r25, 0x007D |
1314: 00 97 sbiw r24, 0x00 ; 0 |
1316: 59 f0 breq .+22 ; 0x132e <__vector_9+0x60> |
{ |
if(--LoescheIrCodeTimer == 0) IR_Code = 0; |
1318: 01 97 sbiw r24, 0x01 ; 1 |
131a: 90 93 7d 00 sts 0x007D, r25 |
131e: 80 93 7c 00 sts 0x007C, r24 |
1322: 00 97 sbiw r24, 0x00 ; 0 |
1324: 21 f4 brne .+8 ; 0x132e <__vector_9+0x60> |
1326: 90 93 c8 01 sts 0x01C8, r25 |
132a: 80 93 c7 01 sts 0x01C7, r24 |
132e: 9f 91 pop r25 |
1330: 8f 91 pop r24 |
1332: 0f 90 pop r0 |
1334: 0f be out 0x3f, r0 ; 63 |
1336: 0f 90 pop r0 |
1338: 1f 90 pop r1 |
133a: 18 95 reti |
0000133c <Timer1_Init>: |
} |
} |
void Timer1_Init(void) |
{ |
TCCR1B = TIMER_TEILER; |
133c: 83 e0 ldi r24, 0x03 ; 3 |
133e: 8e bd out 0x2e, r24 ; 46 |
TCNT1 = -TIMER_RELOAD_VALUE; // reload |
1340: 86 e0 ldi r24, 0x06 ; 6 |
1342: 9f ef ldi r25, 0xFF ; 255 |
1344: 9d bd out 0x2d, r25 ; 45 |
1346: 8c bd out 0x2c, r24 ; 44 |
//OCR1 = 0x00; |
// Timer(s)/Counter(s) Interrupt(s) initialization |
#if defined (__AVR_ATmega32__) |
TIMSK |= 0x04; |
1348: 89 b7 in r24, 0x39 ; 57 |
134a: 84 60 ori r24, 0x04 ; 4 |
134c: 89 bf out 0x39, r24 ; 57 |
134e: 08 95 ret |
00001350 <SetDelay>: |
#endif |
#if defined (__AVR_ATmega644__) |
TIMSK1 |= _BV(TOIE1); |
#endif |
} |
unsigned int SetDelay (unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
1350: 20 91 a5 00 lds r18, 0x00A5 |
1354: 30 91 a6 00 lds r19, 0x00A6 |
1358: 28 0f add r18, r24 |
135a: 39 1f adc r19, r25 |
} |
135c: c9 01 movw r24, r18 |
135e: 01 97 sbiw r24, 0x01 ; 1 |
1360: 08 95 ret |
00001362 <CheckDelay>: |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
1362: 20 91 a5 00 lds r18, 0x00A5 |
1366: 30 91 a6 00 lds r19, 0x00A6 |
136a: 82 1b sub r24, r18 |
136c: 93 0b sbc r25, r19 |
136e: 89 2f mov r24, r25 |
1370: 99 27 eor r25, r25 |
1372: 80 78 andi r24, 0x80 ; 128 |
} |
1374: 99 27 eor r25, r25 |
1376: 08 95 ret |
00001378 <Delay_ms>: |
void Delay_ms(unsigned int w) |
{ |
1378: cf 93 push r28 |
137a: df 93 push r29 |
unsigned int akt; |
akt = SetDelay(w); |
137c: 0e 94 a8 09 call 0x1350 <SetDelay> |
1380: ec 01 movw r28, r24 |
while (!CheckDelay(akt)); |
1382: ce 01 movw r24, r28 |
1384: 0e 94 b1 09 call 0x1362 <CheckDelay> |
1388: 88 23 and r24, r24 |
138a: d9 f3 breq .-10 ; 0x1382 <Delay_ms+0xa> |
138c: df 91 pop r29 |
138e: cf 91 pop r28 |
1390: 08 95 ret |
00001392 <Keyboard_Init>: |
unsigned int KeyTimer = 0; |
void Keyboard_Init(void) |
{ |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1392: 82 e3 ldi r24, 0x32 ; 50 |
1394: 90 e0 ldi r25, 0x00 ; 0 |
1396: 0e 94 a8 09 call 0x1350 <SetDelay> |
139a: 90 93 a9 00 sts 0x00A9, r25 |
139e: 80 93 a8 00 sts 0x00A8, r24 |
13a2: 08 95 ret |
000013a4 <GetKeyboard>: |
} |
unsigned char GetKeyboard(void) |
{ |
13a4: cf 93 push r28 |
static char taste1 = 0, taste2 = 0,taste3 = 0,taste4 = 0,taste5 = 0; |
unsigned char ret = 0; |
13a6: c0 e0 ldi r28, 0x00 ; 0 |
if(CheckDelay(KeyTimer)) |
13a8: 80 91 a8 00 lds r24, 0x00A8 |
13ac: 90 91 a9 00 lds r25, 0x00A9 |
13b0: 0e 94 b1 09 call 0x1362 <CheckDelay> |
13b4: 88 23 and r24, r24 |
13b6: 09 f4 brne .+2 ; 0x13ba <GetKeyboard+0x16> |
13b8: 76 c0 rjmp .+236 ; 0x14a6 <GetKeyboard+0x102> |
{ |
if(_TASTE1) { if(taste1++ == 0 || taste1 == CNT_TASTE) ret |= KEY1; if(taste1 == CNT_TASTE) taste1 = CNT_TASTE-CNT_TASTE/3;} else taste1 = 0; |
13ba: cf 9b sbis 0x19, 7 ; 25 |
13bc: 12 c0 rjmp .+36 ; 0x13e2 <GetKeyboard+0x3e> |
13be: 80 91 aa 00 lds r24, 0x00AA |
13c2: 8f 5f subi r24, 0xFF ; 255 |
13c4: 80 93 aa 00 sts 0x00AA, r24 |
13c8: 81 30 cpi r24, 0x01 ; 1 |
13ca: 11 f0 breq .+4 ; 0x13d0 <GetKeyboard+0x2c> |
13cc: 8a 30 cpi r24, 0x0A ; 10 |
13ce: 09 f4 brne .+2 ; 0x13d2 <GetKeyboard+0x2e> |
13d0: c1 e0 ldi r28, 0x01 ; 1 |
13d2: 80 91 aa 00 lds r24, 0x00AA |
13d6: 8a 30 cpi r24, 0x0A ; 10 |
13d8: 31 f4 brne .+12 ; 0x13e6 <GetKeyboard+0x42> |
13da: 87 e0 ldi r24, 0x07 ; 7 |
13dc: 80 93 aa 00 sts 0x00AA, r24 |
13e0: 02 c0 rjmp .+4 ; 0x13e6 <GetKeyboard+0x42> |
13e2: c0 93 aa 00 sts 0x00AA, r28 |
if(_TASTE2) { if(taste2++ == 0 || taste2 == CNT_TASTE) ret |= KEY2; if(taste2 == CNT_TASTE) taste2 = CNT_TASTE-CNT_TASTE/3;} else taste2 = 0; |
13e6: ce 9b sbis 0x19, 6 ; 25 |
13e8: 12 c0 rjmp .+36 ; 0x140e <GetKeyboard+0x6a> |
13ea: 80 91 ab 00 lds r24, 0x00AB |
13ee: 8f 5f subi r24, 0xFF ; 255 |
13f0: 80 93 ab 00 sts 0x00AB, r24 |
13f4: 81 30 cpi r24, 0x01 ; 1 |
13f6: 11 f0 breq .+4 ; 0x13fc <GetKeyboard+0x58> |
13f8: 8a 30 cpi r24, 0x0A ; 10 |
13fa: 09 f4 brne .+2 ; 0x13fe <GetKeyboard+0x5a> |
13fc: c2 60 ori r28, 0x02 ; 2 |
13fe: 80 91 ab 00 lds r24, 0x00AB |
1402: 8a 30 cpi r24, 0x0A ; 10 |
1404: 31 f4 brne .+12 ; 0x1412 <GetKeyboard+0x6e> |
1406: 87 e0 ldi r24, 0x07 ; 7 |
1408: 80 93 ab 00 sts 0x00AB, r24 |
140c: 02 c0 rjmp .+4 ; 0x1412 <GetKeyboard+0x6e> |
140e: 10 92 ab 00 sts 0x00AB, r1 |
if(_TASTE3) { if(taste3++ == 0 || taste3 == CNT_TASTE) ret |= KEY3; if(taste3 == CNT_TASTE) taste3 = CNT_TASTE-CNT_TASTE/3;} else taste3 = 0; |
1412: cd 9b sbis 0x19, 5 ; 25 |
1414: 12 c0 rjmp .+36 ; 0x143a <GetKeyboard+0x96> |
1416: 80 91 ac 00 lds r24, 0x00AC |
141a: 8f 5f subi r24, 0xFF ; 255 |
141c: 80 93 ac 00 sts 0x00AC, r24 |
1420: 81 30 cpi r24, 0x01 ; 1 |
1422: 11 f0 breq .+4 ; 0x1428 <GetKeyboard+0x84> |
1424: 8a 30 cpi r24, 0x0A ; 10 |
1426: 09 f4 brne .+2 ; 0x142a <GetKeyboard+0x86> |
1428: c4 60 ori r28, 0x04 ; 4 |
142a: 80 91 ac 00 lds r24, 0x00AC |
142e: 8a 30 cpi r24, 0x0A ; 10 |
1430: 31 f4 brne .+12 ; 0x143e <GetKeyboard+0x9a> |
1432: 87 e0 ldi r24, 0x07 ; 7 |
1434: 80 93 ac 00 sts 0x00AC, r24 |
1438: 02 c0 rjmp .+4 ; 0x143e <GetKeyboard+0x9a> |
143a: 10 92 ac 00 sts 0x00AC, r1 |
if(_TASTE4) { if(taste4++ == 0 || taste4 == CNT_TASTE) ret |= KEY4; if(taste4 == CNT_TASTE) taste4 = CNT_TASTE-CNT_TASTE/3;} else taste4 = 0; |
143e: cc 9b sbis 0x19, 4 ; 25 |
1440: 12 c0 rjmp .+36 ; 0x1466 <GetKeyboard+0xc2> |
1442: 80 91 ad 00 lds r24, 0x00AD |
1446: 8f 5f subi r24, 0xFF ; 255 |
1448: 80 93 ad 00 sts 0x00AD, r24 |
144c: 81 30 cpi r24, 0x01 ; 1 |
144e: 11 f0 breq .+4 ; 0x1454 <GetKeyboard+0xb0> |
1450: 8a 30 cpi r24, 0x0A ; 10 |
1452: 09 f4 brne .+2 ; 0x1456 <GetKeyboard+0xb2> |
1454: c8 60 ori r28, 0x08 ; 8 |
1456: 80 91 ad 00 lds r24, 0x00AD |
145a: 8a 30 cpi r24, 0x0A ; 10 |
145c: 31 f4 brne .+12 ; 0x146a <GetKeyboard+0xc6> |
145e: 87 e0 ldi r24, 0x07 ; 7 |
1460: 80 93 ad 00 sts 0x00AD, r24 |
1464: 02 c0 rjmp .+4 ; 0x146a <GetKeyboard+0xc6> |
1466: 10 92 ad 00 sts 0x00AD, r1 |
if(_TASTE5) { if(taste5++ == 0 || taste5 == CNT_TASTE) ret |= KEY5; if(taste5 == CNT_TASTE) taste5 = CNT_TASTE-CNT_TASTE/3;} else taste5 = 0; |
146a: cb 9b sbis 0x19, 3 ; 25 |
146c: 12 c0 rjmp .+36 ; 0x1492 <GetKeyboard+0xee> |
146e: 80 91 ae 00 lds r24, 0x00AE |
1472: 8f 5f subi r24, 0xFF ; 255 |
1474: 80 93 ae 00 sts 0x00AE, r24 |
1478: 81 30 cpi r24, 0x01 ; 1 |
147a: 11 f0 breq .+4 ; 0x1480 <GetKeyboard+0xdc> |
147c: 8a 30 cpi r24, 0x0A ; 10 |
147e: 09 f4 brne .+2 ; 0x1482 <GetKeyboard+0xde> |
1480: c0 61 ori r28, 0x10 ; 16 |
1482: 80 91 ae 00 lds r24, 0x00AE |
1486: 8a 30 cpi r24, 0x0A ; 10 |
1488: 31 f4 brne .+12 ; 0x1496 <GetKeyboard+0xf2> |
148a: 87 e0 ldi r24, 0x07 ; 7 |
148c: 80 93 ae 00 sts 0x00AE, r24 |
1490: 02 c0 rjmp .+4 ; 0x1496 <GetKeyboard+0xf2> |
1492: 10 92 ae 00 sts 0x00AE, r1 |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1496: 82 e3 ldi r24, 0x32 ; 50 |
1498: 90 e0 ldi r25, 0x00 ; 0 |
149a: 0e 94 a8 09 call 0x1350 <SetDelay> |
149e: 90 93 a9 00 sts 0x00A9, r25 |
14a2: 80 93 a8 00 sts 0x00A8, r24 |
} |
return(ret); |
} |
14a6: 8c 2f mov r24, r28 |
14a8: 99 27 eor r25, r25 |
14aa: cf 91 pop r28 |
14ac: 08 95 ret |
000014ae <GetKeyboard2>: |
unsigned char GetKeyboard2(void) |
{ |
unsigned char ret = 0; |
14ae: 80 e0 ldi r24, 0x00 ; 0 |
if(_TASTE1) ret |= KEY1; |
14b0: cf 99 sbic 0x19, 7 ; 25 |
14b2: 81 e0 ldi r24, 0x01 ; 1 |
if(_TASTE2) ret |= KEY2; |
14b4: ce 99 sbic 0x19, 6 ; 25 |
14b6: 82 60 ori r24, 0x02 ; 2 |
if(_TASTE3) ret |= KEY3; |
14b8: cd 99 sbic 0x19, 5 ; 25 |
14ba: 84 60 ori r24, 0x04 ; 4 |
if(_TASTE4) ret |= KEY4; |
14bc: cc 99 sbic 0x19, 4 ; 25 |
14be: 88 60 ori r24, 0x08 ; 8 |
if(_TASTE5) ret |= KEY5; |
14c0: cb 99 sbic 0x19, 3 ; 25 |
14c2: 80 61 ori r24, 0x10 ; 16 |
return(ret); |
} |
14c4: 99 27 eor r25, r25 |
14c6: 08 95 ret |
000014c8 <Menu>: |
unsigned char KanalVon[MAX_KANAL]; |
unsigned char KanalAn[MAX_KANAL]; |
void Menu(unsigned char key) |
{ |
14c8: 0f 93 push r16 |
14ca: 1f 93 push r17 |
14cc: cf 93 push r28 |
14ce: df 93 push r29 |
static unsigned int arr = 0; |
static unsigned char MaxMenue = 2,MenuePunkt=0; |
unsigned char kanal = 0; |
if(key & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LCD_Clear; } |
14d0: c8 2f mov r28, r24 |
14d2: dd 27 eor r29, r29 |
14d4: c0 ff sbrs r28, 0 |
14d6: 0f c0 rjmp .+30 ; 0x14f6 <Menu+0x2e> |
14d8: 80 91 b3 00 lds r24, 0x00B3 |
14dc: 88 23 and r24, r24 |
14de: 11 f0 breq .+4 ; 0x14e4 <Menu+0x1c> |
14e0: 81 50 subi r24, 0x01 ; 1 |
14e2: 02 c0 rjmp .+4 ; 0x14e8 <Menu+0x20> |
14e4: 80 91 7b 00 lds r24, 0x007B |
14e8: 80 93 b3 00 sts 0x00B3, r24 |
14ec: 81 e0 ldi r24, 0x01 ; 1 |
14ee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
14f2: 0e 94 c9 05 call 0xb92 <_long_delay> |
if(key & KEY2) { MenuePunkt++; LCD_Clear; } |
14f6: 8e 01 movw r16, r28 |
14f8: 02 70 andi r16, 0x02 ; 2 |
14fa: 10 70 andi r17, 0x00 ; 0 |
14fc: c1 ff sbrs r28, 1 |
14fe: 0a c0 rjmp .+20 ; 0x1514 <Menu+0x4c> |
1500: 80 91 b3 00 lds r24, 0x00B3 |
1504: 8f 5f subi r24, 0xFF ; 255 |
1506: 80 93 b3 00 sts 0x00B3, r24 |
150a: 81 e0 ldi r24, 0x01 ; 1 |
150c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
1510: 0e 94 c9 05 call 0xb92 <_long_delay> |
if((key & KEY1) && (key & KEY2)) MenuePunkt = 0; |
1514: c0 ff sbrs r28, 0 |
1516: 04 c0 rjmp .+8 ; 0x1520 <Menu+0x58> |
1518: 01 2b or r16, r17 |
151a: 11 f0 breq .+4 ; 0x1520 <Menu+0x58> |
151c: 10 92 b3 00 sts 0x00B3, r1 |
// LCD_printfxy(13,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
1520: 20 91 b3 00 lds r18, 0x00B3 |
1524: 82 2f mov r24, r18 |
1526: 99 27 eor r25, r25 |
1528: 81 30 cpi r24, 0x01 ; 1 |
152a: 91 05 cpc r25, r1 |
152c: 09 f4 brne .+2 ; 0x1530 <Menu+0x68> |
152e: 41 c0 rjmp .+130 ; 0x15b2 <Menu+0xea> |
1530: 82 30 cpi r24, 0x02 ; 2 |
1532: 91 05 cpc r25, r1 |
1534: 1c f4 brge .+6 ; 0x153c <Menu+0x74> |
1536: 89 2b or r24, r25 |
1538: 49 f0 breq .+18 ; 0x154c <Menu+0x84> |
153a: bf c0 rjmp .+382 ; 0x16ba <Menu+0x1f2> |
153c: 82 30 cpi r24, 0x02 ; 2 |
153e: 91 05 cpc r25, r1 |
1540: 09 f4 brne .+2 ; 0x1544 <Menu+0x7c> |
1542: 6a c0 rjmp .+212 ; 0x1618 <Menu+0x150> |
1544: 03 97 sbiw r24, 0x03 ; 3 |
1546: 09 f4 brne .+2 ; 0x154a <Menu+0x82> |
1548: 8e c0 rjmp .+284 ; 0x1666 <Menu+0x19e> |
154a: b7 c0 rjmp .+366 ; 0x16ba <Menu+0x1f2> |
{ |
case 0: |
LCD_printfxy(0,0,"Verbinden mit"); |
154c: 60 e0 ldi r22, 0x00 ; 0 |
154e: 86 2f mov r24, r22 |
1550: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1554: 84 eb ldi r24, 0xB4 ; 180 |
1556: 90 e0 ldi r25, 0x00 ; 0 |
1558: 9f 93 push r25 |
155a: 8f 93 push r24 |
155c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"MicroSPS:%2i ",SlaveAdresse); |
1560: 61 e0 ldi r22, 0x01 ; 1 |
1562: 80 e0 ldi r24, 0x00 ; 0 |
1564: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1568: 0f 90 pop r0 |
156a: 0f 90 pop r0 |
156c: 80 91 64 00 lds r24, 0x0064 |
1570: 99 27 eor r25, r25 |
1572: 9f 93 push r25 |
1574: 8f 93 push r24 |
1576: 82 ec ldi r24, 0xC2 ; 194 |
1578: 90 e0 ldi r25, 0x00 ; 0 |
157a: 9f 93 push r25 |
157c: 8f 93 push r24 |
157e: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && SlaveAdresse > 1) SlaveAdresse--; |
1582: 0f 90 pop r0 |
1584: 0f 90 pop r0 |
1586: 0f 90 pop r0 |
1588: 0f 90 pop r0 |
158a: c2 ff sbrs r28, 2 |
158c: 07 c0 rjmp .+14 ; 0x159c <Menu+0xd4> |
158e: 80 91 64 00 lds r24, 0x0064 |
1592: 82 30 cpi r24, 0x02 ; 2 |
1594: 18 f0 brcs .+6 ; 0x159c <Menu+0xd4> |
1596: 81 50 subi r24, 0x01 ; 1 |
1598: 80 93 64 00 sts 0x0064, r24 |
if(key & KEY4 && SlaveAdresse < 26) SlaveAdresse++; |
159c: c3 ff sbrs r28, 3 |
159e: 92 c0 rjmp .+292 ; 0x16c4 <Menu+0x1fc> |
15a0: 80 91 64 00 lds r24, 0x0064 |
15a4: 8a 31 cpi r24, 0x1A ; 26 |
15a6: 08 f0 brcs .+2 ; 0x15aa <Menu+0xe2> |
15a8: 8d c0 rjmp .+282 ; 0x16c4 <Menu+0x1fc> |
15aa: 8f 5f subi r24, 0xFF ; 255 |
15ac: 80 93 64 00 sts 0x0064, r24 |
break; |
15b0: 89 c0 rjmp .+274 ; 0x16c4 <Menu+0x1fc> |
case 1: |
LCD_printfxy(0,0,"Max Adresse"); |
15b2: 60 e0 ldi r22, 0x00 ; 0 |
15b4: 86 2f mov r24, r22 |
15b6: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ba: 80 ed ldi r24, 0xD0 ; 208 |
15bc: 90 e0 ldi r25, 0x00 ; 0 |
15be: 9f 93 push r25 |
15c0: 8f 93 push r24 |
15c2: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"%2i ",AnzahlTeilnehmer); |
15c6: 61 e0 ldi r22, 0x01 ; 1 |
15c8: 80 e0 ldi r24, 0x00 ; 0 |
15ca: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ce: 0f 90 pop r0 |
15d0: 0f 90 pop r0 |
15d2: 80 91 6c 00 lds r24, 0x006C |
15d6: 99 27 eor r25, r25 |
15d8: 9f 93 push r25 |
15da: 8f 93 push r24 |
15dc: 8c ed ldi r24, 0xDC ; 220 |
15de: 90 e0 ldi r25, 0x00 ; 0 |
15e0: 9f 93 push r25 |
15e2: 8f 93 push r24 |
15e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && AnzahlTeilnehmer > 1) AnzahlTeilnehmer--; |
15e8: 0f 90 pop r0 |
15ea: 0f 90 pop r0 |
15ec: 0f 90 pop r0 |
15ee: 0f 90 pop r0 |
15f0: c2 ff sbrs r28, 2 |
15f2: 07 c0 rjmp .+14 ; 0x1602 <Menu+0x13a> |
15f4: 80 91 6c 00 lds r24, 0x006C |
15f8: 82 30 cpi r24, 0x02 ; 2 |
15fa: 18 f0 brcs .+6 ; 0x1602 <Menu+0x13a> |
15fc: 81 50 subi r24, 0x01 ; 1 |
15fe: 80 93 6c 00 sts 0x006C, r24 |
if(key & KEY4 && AnzahlTeilnehmer < 26) AnzahlTeilnehmer++; |
1602: c3 ff sbrs r28, 3 |
1604: 5f c0 rjmp .+190 ; 0x16c4 <Menu+0x1fc> |
1606: 80 91 6c 00 lds r24, 0x006C |
160a: 8a 31 cpi r24, 0x1A ; 26 |
160c: 08 f0 brcs .+2 ; 0x1610 <Menu+0x148> |
160e: 5a c0 rjmp .+180 ; 0x16c4 <Menu+0x1fc> |
1610: 8f 5f subi r24, 0xFF ; 255 |
1612: 80 93 6c 00 sts 0x006C, r24 |
break; |
1616: 56 c0 rjmp .+172 ; 0x16c4 <Menu+0x1fc> |
case 2: |
LCD_printfxy(0,0,"Checksum"); |
1618: 60 e0 ldi r22, 0x00 ; 0 |
161a: 86 2f mov r24, r22 |
161c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1620: 81 ee ldi r24, 0xE1 ; 225 |
1622: 90 e0 ldi r25, 0x00 ; 0 |
1624: 9f 93 push r25 |
1626: 8f 93 push r24 |
1628: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Errors:%5i ",CntCrcError); |
162c: 61 e0 ldi r22, 0x01 ; 1 |
162e: 80 e0 ldi r24, 0x00 ; 0 |
1630: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1634: 0f 90 pop r0 |
1636: 0f 90 pop r0 |
1638: 80 91 99 00 lds r24, 0x0099 |
163c: 90 91 9a 00 lds r25, 0x009A |
1640: 9f 93 push r25 |
1642: 8f 93 push r24 |
1644: 8a ee ldi r24, 0xEA ; 234 |
1646: 90 e0 ldi r25, 0x00 ; 0 |
1648: 9f 93 push r25 |
164a: 8f 93 push r24 |
164c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) CntCrcError = 0; |
1650: 0f 90 pop r0 |
1652: 0f 90 pop r0 |
1654: 0f 90 pop r0 |
1656: 0f 90 pop r0 |
1658: c2 ff sbrs r28, 2 |
165a: 34 c0 rjmp .+104 ; 0x16c4 <Menu+0x1fc> |
165c: 10 92 9a 00 sts 0x009A, r1 |
1660: 10 92 99 00 sts 0x0099, r1 |
break; |
1664: 2f c0 rjmp .+94 ; 0x16c4 <Menu+0x1fc> |
case 3: |
LCD_printfxy(0,0,"Display"); |
1666: 60 e0 ldi r22, 0x00 ; 0 |
1668: 86 2f mov r24, r22 |
166a: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
166e: 86 ef ldi r24, 0xF6 ; 246 |
1670: 90 e0 ldi r25, 0x00 ; 0 |
1672: 9f 93 push r25 |
1674: 8f 93 push r24 |
1676: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Zeilen:%1i ",DisplayZeilen); |
167a: 61 e0 ldi r22, 0x01 ; 1 |
167c: 80 e0 ldi r24, 0x00 ; 0 |
167e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1682: 0f 90 pop r0 |
1684: 0f 90 pop r0 |
1686: 80 91 65 00 lds r24, 0x0065 |
168a: 99 27 eor r25, r25 |
168c: 9f 93 push r25 |
168e: 8f 93 push r24 |
1690: 8e ef ldi r24, 0xFE ; 254 |
1692: 90 e0 ldi r25, 0x00 ; 0 |
1694: 9f 93 push r25 |
1696: 8f 93 push r24 |
1698: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) DisplayZeilen = 4; |
169c: 0f 90 pop r0 |
169e: 0f 90 pop r0 |
16a0: 0f 90 pop r0 |
16a2: 0f 90 pop r0 |
16a4: c2 ff sbrs r28, 2 |
16a6: 03 c0 rjmp .+6 ; 0x16ae <Menu+0x1e6> |
16a8: 84 e0 ldi r24, 0x04 ; 4 |
16aa: 80 93 65 00 sts 0x0065, r24 |
if(key & KEY4) DisplayZeilen = 2; |
16ae: c3 ff sbrs r28, 3 |
16b0: 09 c0 rjmp .+18 ; 0x16c4 <Menu+0x1fc> |
16b2: 82 e0 ldi r24, 0x02 ; 2 |
16b4: 80 93 65 00 sts 0x0065, r24 |
break; |
16b8: 05 c0 rjmp .+10 ; 0x16c4 <Menu+0x1fc> |
/* case 1: |
case 2: |
case 3: |
case 4: |
kanal = MenuePunkt - 1; |
LCD_printfxy(0,0,"Datenkanal:%2i",kanal); |
LCD_printfxy(0,1,"Von:%2i an %2i ",KanalVon[kanal],KanalAn[kanal]); |
if(key & KEY3) KanalVon[kanal]++; |
if(key & KEY4) KanalAn[kanal]++; |
KanalVon[kanal] % MAX_KANAL; |
KanalAn[kanal] % MAX_KANAL; |
break; |
*/ |
/* |
case 1: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Display:%3ims ",IntervallDisplay); |
if(key & KEY3 && IntervallDisplay > 25) IntervallDisplay -= 5; |
if(key & KEY4 && IntervallDisplay < 990) IntervallDisplay += 5; |
break; |
case 2: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Debug:%3ims ",IntervallDebug); |
if(key & KEY3 && IntervallDebug > 25) IntervallDebug -= 5; |
if(key & KEY4 && IntervallDebug < 990) IntervallDebug += 5; |
break; |
case 1: |
LCD_printfxy(0,0,"Time"); |
LCD_printfxy(0,1,"%3i:%02i",Minute,Sekunde); |
if(key & KEY3) if(Minute) Minute--; |
if(key & KEY4) Minute++; |
if(key & KEY5) Sekunde = 0; |
break; |
case 2: |
LCD_printfxy(0,0,"Testvariable"); |
LCD_printfxy(0,1,"TestInt:%5i",TestInt); |
if(key & KEY3) TestInt--; |
if(key & KEY4) TestInt++; |
break; |
case 3: |
LCD_printfxy(0,0,"Testarray"); |
LCD_printfxy(0,1,"Array[%i]=%3i",arr,Array[arr]); |
if(key & KEY5) if(++arr == ARRAYGROESSE) arr = 0; |
if(key & KEY3) Array[arr]--; |
if(key & KEY4) Array[arr]++; |
break; |
case 4: |
LCD_printfxy(0,0,"Infrarot RC5:"); |
LCD_printfxy(0,1,"Adr:%2i Cmd:%3i",(IR_Code >> 8), IR_Code & 0xff); |
break; |
*/ |
default: MaxMenue = MenuePunkt - 1; |
16ba: 21 50 subi r18, 0x01 ; 1 |
16bc: 20 93 7b 00 sts 0x007B, r18 |
MenuePunkt = 0; |
16c0: 10 92 b3 00 sts 0x00B3, r1 |
16c4: df 91 pop r29 |
16c6: cf 91 pop r28 |
16c8: 1f 91 pop r17 |
16ca: 0f 91 pop r16 |
16cc: 08 95 ret |
000016ce <InitIR>: |
// Init IR |
// ************************************************************************ |
void InitIR(void) |
{ |
INT0_ENABLE; // ext. Int0 enable |
16ce: 8b b7 in r24, 0x3b ; 59 |
16d0: 80 64 ori r24, 0x40 ; 64 |
16d2: 8b bf out 0x3b, r24 ; 59 |
CLR_INT0_FLAG; // war |= 0x40 |
16d4: 8a b7 in r24, 0x3a ; 58 |
16d6: 8f 7b andi r24, 0xBF ; 191 |
16d8: 8a bf out 0x3a, r24 ; 58 |
INIT_INT0_FLANKE; |
16da: 85 b7 in r24, 0x35 ; 53 |
16dc: 8c 7f andi r24, 0xFC ; 252 |
16de: 85 bf out 0x35, r24 ; 53 |
16e0: 85 b7 in r24, 0x35 ; 53 |
16e2: 82 60 ori r24, 0x02 ; 2 |
16e4: 85 bf out 0x35, r24 ; 53 |
TIMER0_PRESCALER = 0x04; // Timer0: Clk div 256 |
16e6: 84 e0 ldi r24, 0x04 ; 4 |
16e8: 83 bf out 0x33, r24 ; 51 |
Decodierung_Lauft = 0; |
16ea: 10 92 c9 01 sts 0x01C9, r1 |
New_IR_Code = 0; |
16ee: 10 92 c6 01 sts 0x01C6, r1 |
IR_Code = 0; |
16f2: 10 92 c8 01 sts 0x01C8, r1 |
16f6: 10 92 c7 01 sts 0x01C7, r1 |
16fa: 08 95 ret |
000016fc <__vector_1>: |
} |
// ************************************************************************** |
// * aufgerufen durch: externer Interrupt |
// ************************************************************************** |
// * Die Funktion wird durch einen externen Interrupt aufgerufen. |
// * Sie dient nur zum Starten der Abtastsequenz und zum Triggern auf die |
// * Signalflanken in der Mitte der Daten. |
// ************************************************************************** |
SIGNAL (SIG_INTERRUPT0) |
{ |
16fc: 1f 92 push r1 |
16fe: 0f 92 push r0 |
1700: 0f b6 in r0, 0x3f ; 63 |
1702: 0f 92 push r0 |
1704: 11 24 eor r1, r1 |
1706: 8f 93 push r24 |
// Zeitbasis fuer Timer einstellen |
// Entspricht 1,5 mal einer Bitlaenge |
// PORTB++; |
TCNT0 = -41; |
1708: 87 ed ldi r24, 0xD7 ; 215 |
170a: 82 bf out 0x32, r24 ; 50 |
TIM0_START; // Timer 0 starten, |
170c: 89 b7 in r24, 0x39 ; 57 |
170e: 81 60 ori r24, 0x01 ; 1 |
1710: 89 bf out 0x39, r24 ; 57 |
if(Decodierung_Lauft) INT0_DISABLE; // die erneute Int.-Auslsung soll |
1712: 80 91 c9 01 lds r24, 0x01C9 |
1716: 88 23 and r24, r24 |
1718: 19 f0 breq .+6 ; 0x1720 <__vector_1+0x24> |
171a: 8b b7 in r24, 0x3b ; 59 |
171c: 8f 7b andi r24, 0xBF ; 191 |
171e: 8b bf out 0x3b, r24 ; 59 |
1720: 8f 91 pop r24 |
1722: 0f 90 pop r0 |
1724: 0f be out 0x3f, r0 ; 63 |
1726: 0f 90 pop r0 |
1728: 1f 90 pop r1 |
172a: 18 95 reti |
0000172c <__vector_11>: |
// nur die Timer-Routine erlauben |
} |
// ************************************************************************** |
// * aufgerufen durch: Timerueberlauf Timer 0 |
// ************************************************************************** |
// * Die Funktion wird durch einen Timer0-Interrupt aufgerufen. |
// * Der Timer wird vom ext. Int0 gestartet. |
// * Das Infrarotsignal wird hier abgetastet und die Wertigkeiten der |
// * Bits entsprechend aufaddiert. Das empfangende Zeichen wird in der |
// * globalen Variablen IR_Code gespeichert. Nach Empfang wird das Bit |
// * Neues_Zeichen gesetzt. |
// ************************************************************************** |
SIGNAL (SIG_OVERFLOW0) |
{ |
172c: 1f 92 push r1 |
172e: 0f 92 push r0 |
1730: 0f b6 in r0, 0x3f ; 63 |
1732: 0f 92 push r0 |
1734: 11 24 eor r1, r1 |
1736: 2f 93 push r18 |
1738: 3f 93 push r19 |
173a: 4f 93 push r20 |
173c: 8f 93 push r24 |
173e: 9f 93 push r25 |
static unsigned int Shift,IR_Code_tmp; |
static unsigned char IR_Zaehler=0,IRSperrCounter=0; |
// Reinitialize Timer's 0 value |
TCNT1 = -41; |
1740: 87 ed ldi r24, 0xD7 ; 215 |
1742: 9f ef ldi r25, 0xFF ; 255 |
1744: 9d bd out 0x2d, r25 ; 45 |
1746: 8c bd out 0x2c, r24 ; 44 |
if (IRSperrCounter) |
1748: 80 91 b9 00 lds r24, 0x00B9 |
174c: 88 23 and r24, r24 |
174e: 69 f0 breq .+26 ; 0x176a <__vector_11+0x3e> |
{ IRSperrCounter--; |
1750: 81 50 subi r24, 0x01 ; 1 |
1752: 80 93 b9 00 sts 0x00B9, r24 |
if (!IRSperrCounter) |
1756: 88 23 and r24, r24 |
1758: 09 f0 breq .+2 ; 0x175c <__vector_11+0x30> |
175a: 8a c0 rjmp .+276 ; 0x1870 <__vector_11+0x144> |
{ |
TIM0_STOPP; // Timer0 sperre wird durch ExtInt0 gestartet |
175c: 89 b7 in r24, 0x39 ; 57 |
175e: 8e 7f andi r24, 0xFE ; 254 |
1760: 89 bf out 0x39, r24 ; 57 |
CLR_INT0_FLAG; // IntFlag Loeschen |
1762: 8a b7 in r24, 0x3a ; 58 |
1764: 8f 7b andi r24, 0xBF ; 191 |
1766: 8a bf out 0x3a, r24 ; 58 |
1768: 80 c0 rjmp .+256 ; 0x186a <__vector_11+0x13e> |
INT0_ENABLE; // externen Interrupt wieder freigenben |
} |
} |
else |
{ |
if(IR_Zaehler > 1) |
176a: 40 91 b8 00 lds r20, 0x00B8 |
176e: 42 30 cpi r20, 0x02 ; 2 |
1770: 88 f0 brcs .+34 ; 0x1794 <__vector_11+0x68> |
{ |
Decodierung_Lauft = 1; |
1772: 81 e0 ldi r24, 0x01 ; 1 |
1774: 80 93 c9 01 sts 0x01C9, r24 |
{ |
CLR_INT0_FLAG; // Interrupt Flag loeschen |
1778: 8a b7 in r24, 0x3a ; 58 |
177a: 8f 7b andi r24, 0xBF ; 191 |
177c: 8a bf out 0x3a, r24 ; 58 |
if(IR_PP) INT0_NEG_FLANKE; // naechste fallende Flanke soll Int0 ausloesen |
177e: 82 9b sbis 0x10, 2 ; 16 |
1780: 03 c0 rjmp .+6 ; 0x1788 <__vector_11+0x5c> |
1782: 85 b7 in r24, 0x35 ; 53 |
1784: 8e 7f andi r24, 0xFE ; 254 |
1786: 02 c0 rjmp .+4 ; 0x178c <__vector_11+0x60> |
else INT0_POS_FLANKE; // naechste steigende Flanke soll Int0 ausloesen |
1788: 85 b7 in r24, 0x35 ; 53 |
178a: 81 60 ori r24, 0x01 ; 1 |
178c: 85 bf out 0x35, r24 ; 53 |
INT0_ENABLE; // externen Int frei |
178e: 8b b7 in r24, 0x3b ; 59 |
1790: 80 64 ori r24, 0x40 ; 64 |
1792: 8b bf out 0x3b, r24 ; 59 |
} |
} |
if(!IR_Zaehler) // es beginnt eine neue Abtastung |
1794: 44 23 and r20, r20 |
1796: 59 f4 brne .+22 ; 0x17ae <__vector_11+0x82> |
{ // es handelt sich um das 1. Sync-Bit |
IR_Code_tmp=0; // Merker löschen |
1798: 10 92 b7 00 sts 0x00B7, r1 |
179c: 10 92 b6 00 sts 0x00B6, r1 |
Shift=0x8000; //;8192; // Maske auf MSB |
17a0: 80 e0 ldi r24, 0x00 ; 0 |
17a2: 90 e8 ldi r25, 0x80 ; 128 |
17a4: 90 93 b5 00 sts 0x00B5, r25 |
17a8: 80 93 b4 00 sts 0x00B4, r24 |
17ac: 14 c0 rjmp .+40 ; 0x17d6 <__vector_11+0xaa> |
} |
else |
if(IR_PP==1) // das empfangende Bit ist logisch High |
17ae: 82 9b sbis 0x10, 2 ; 16 |
17b0: 10 c0 rjmp .+32 ; 0x17d2 <__vector_11+0xa6> |
{ if(IR_Zaehler>2) // (IR_Zaehler ist gleich 1 beim 2. Sync-Bit) |
17b2: 43 30 cpi r20, 0x03 ; 3 |
17b4: 70 f0 brcs .+28 ; 0x17d2 <__vector_11+0xa6> |
{ // 2 --> Toggle-Bit (wird übersprungen) |
IR_Code_tmp |= Shift; // entsprechendse Bit setzen |
17b6: 80 91 b6 00 lds r24, 0x00B6 |
17ba: 90 91 b7 00 lds r25, 0x00B7 |
17be: 20 91 b4 00 lds r18, 0x00B4 |
17c2: 30 91 b5 00 lds r19, 0x00B5 |
17c6: 82 2b or r24, r18 |
17c8: 93 2b or r25, r19 |
17ca: 90 93 b7 00 sts 0x00B7, r25 |
17ce: 80 93 b6 00 sts 0x00B6, r24 |
} |
} |
if ((IR_Zaehler < 2) && !(IR_PP==1)) // startbits überprüfen |
17d2: 42 30 cpi r20, 0x02 ; 2 |
17d4: 20 f4 brcc .+8 ; 0x17de <__vector_11+0xb2> |
17d6: 82 99 sbic 0x10, 2 ; 16 |
17d8: 02 c0 rjmp .+4 ; 0x17de <__vector_11+0xb2> |
{ |
IR_Zaehler = 0; |
17da: 10 92 b8 00 sts 0x00B8, r1 |
} |
Shift >>=1; // Shiftregister um 1 nach rechts schieben |
17de: 80 91 b4 00 lds r24, 0x00B4 |
17e2: 90 91 b5 00 lds r25, 0x00B5 |
17e6: 96 95 lsr r25 |
17e8: 87 95 ror r24 |
17ea: 90 93 b5 00 sts 0x00B5, r25 |
17ee: 80 93 b4 00 sts 0x00B4, r24 |
// (für das nächste empf. Bit |
if (Shift == 128) Shift = 32; // Adresse ins HighByte, Kommando ins LowByte |
17f2: 80 38 cpi r24, 0x80 ; 128 |
17f4: 91 05 cpc r25, r1 |
17f6: 31 f4 brne .+12 ; 0x1804 <__vector_11+0xd8> |
17f8: 80 e2 ldi r24, 0x20 ; 32 |
17fa: 90 e0 ldi r25, 0x00 ; 0 |
17fc: 90 93 b5 00 sts 0x00B5, r25 |
1800: 80 93 b4 00 sts 0x00B4, r24 |
if(IR_Zaehler++==15) // Das IR-Wort wurde vollstaendig abgetastet |
1804: 80 91 b8 00 lds r24, 0x00B8 |
1808: 8f 5f subi r24, 0xFF ; 255 |
180a: 80 93 b8 00 sts 0x00B8, r24 |
180e: 80 31 cpi r24, 0x10 ; 16 |
1810: 79 f5 brne .+94 ; 0x1870 <__vector_11+0x144> |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
1812: 8a b7 in r24, 0x3a ; 58 |
1814: 8f 7b andi r24, 0xBF ; 191 |
1816: 8a bf out 0x3a, r24 ; 58 |
INT0_NEG_FLANKE; // fallende Flanke |
1818: 85 b7 in r24, 0x35 ; 53 |
181a: 8e 7f andi r24, 0xFE ; 254 |
181c: 85 bf out 0x35, r24 ; 53 |
IR_Zaehler = 0; |
181e: 10 92 b8 00 sts 0x00B8, r1 |
Decodierung_Lauft=0; |
1822: 10 92 c9 01 sts 0x01C9, r1 |
/* if ((HIGH(IR_Code_tmp)==ALLOWED1)|| (HIGH(IR_Code_tmp)==ALLOWED2)|| |
(HIGH(IR_Code_tmp)==ALLOWED3)||(HIGH(IR_Code_tmp)==ALLOWED4)|| |
(HIGH(IR_Code_tmp)==ALLOWED5) ) |
if ((HIGH(IR_Code_tmp)< 10))*/ |
if ((HIGH(IR_Code_tmp)< 10 ) && (LOW(IR_Code_tmp)!=0x3F) ) |
1826: 80 91 b7 00 lds r24, 0x00B7 |
182a: 8a 30 cpi r24, 0x0A ; 10 |
182c: d8 f4 brcc .+54 ; 0x1864 <__vector_11+0x138> |
182e: 80 91 b6 00 lds r24, 0x00B6 |
1832: 8f 33 cpi r24, 0x3F ; 63 |
1834: b9 f0 breq .+46 ; 0x1864 <__vector_11+0x138> |
{ // nur erlaubt Adressen werden akzepetiert |
IR_Code=IR_Code_tmp; // IR-Wort in die globale Variable schreiben |
1836: 80 91 b6 00 lds r24, 0x00B6 |
183a: 90 91 b7 00 lds r25, 0x00B7 |
183e: 90 93 c8 01 sts 0x01C8, r25 |
1842: 80 93 c7 01 sts 0x01C7, r24 |
New_IR_Code = 1; // Es ist ein neues Zeichen eingetragen worden |
1846: 81 e0 ldi r24, 0x01 ; 1 |
1848: 80 93 c6 01 sts 0x01C6, r24 |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
184c: 84 e0 ldi r24, 0x04 ; 4 |
184e: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
1852: 8b b7 in r24, 0x3b ; 59 |
1854: 80 64 ori r24, 0x40 ; 64 |
1856: 8b bf out 0x3b, r24 ; 59 |
LoescheIrCodeTimer = 250; |
1858: 8a ef ldi r24, 0xFA ; 250 |
185a: 90 e0 ldi r25, 0x00 ; 0 |
185c: 90 93 7d 00 sts 0x007D, r25 |
1860: 80 93 7c 00 sts 0x007C, r24 |
} |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
1864: 84 e0 ldi r24, 0x04 ; 4 |
1866: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
186a: 8b b7 in r24, 0x3b ; 59 |
186c: 80 64 ori r24, 0x40 ; 64 |
186e: 8b bf out 0x3b, r24 ; 59 |
1870: 9f 91 pop r25 |
1872: 8f 91 pop r24 |
1874: 4f 91 pop r20 |
1876: 3f 91 pop r19 |
1878: 2f 91 pop r18 |
187a: 0f 90 pop r0 |
187c: 0f be out 0x3f, r0 ; 63 |
187e: 0f 90 pop r0 |
1880: 1f 90 pop r1 |
1882: 18 95 reti |
00001884 <ADC_Init>: |
// --------------------------------------------------------------------------------------- |
void ADC_Init(void) |
{ |
ADMUX = 0; |
1884: 17 b8 out 0x07, r1 ; 7 |
ADCSRA = 0x86; |
1886: 86 e8 ldi r24, 0x86 ; 134 |
1888: 86 b9 out 0x06, r24 ; 6 |
188a: 08 95 ret |
0000188c <ReadADC>: |
} |
// --------------------------------------------------------------------------------------- |
unsigned int ReadADC(unsigned char adc_input) |
{ |
ADMUX = adc_input; |
188c: 87 b9 out 0x07, r24 ; 7 |
ADCSRA |= 0x40; |
188e: 36 9a sbi 0x06, 6 ; 6 |
//Delay_ms(10); |
while ((ADCSRA & 0x10) == 0); |
1890: 34 9b sbis 0x06, 4 ; 6 |
1892: fe cf rjmp .-4 ; 0x1890 <ReadADC+0x4> |
ADCSRA |= 0x10; |
1894: 34 9a sbi 0x06, 4 ; 6 |
return ADCW; // read ad and calc. temp. |
1896: 84 b1 in r24, 0x04 ; 4 |
1898: 95 b1 in r25, 0x05 ; 5 |
189a: 08 95 ret |
0000189c <GetAnalogWerte>: |
} |
void GetAnalogWerte(void) |
{ |
AnalogWerte[0] = ReadADC(0); |
189c: 80 e0 ldi r24, 0x00 ; 0 |
189e: 0e 94 46 0c call 0x188c <ReadADC> |
18a2: 90 93 cb 01 sts 0x01CB, r25 |
18a6: 80 93 ca 01 sts 0x01CA, r24 |
AnalogWerte[1] = ReadADC(1); |
18aa: 81 e0 ldi r24, 0x01 ; 1 |
18ac: 0e 94 46 0c call 0x188c <ReadADC> |
18b0: 90 93 cd 01 sts 0x01CD, r25 |
18b4: 80 93 cc 01 sts 0x01CC, r24 |
AnalogWerte[2] = ReadADC(2); |
18b8: 82 e0 ldi r24, 0x02 ; 2 |
18ba: 0e 94 46 0c call 0x188c <ReadADC> |
18be: 90 93 cf 01 sts 0x01CF, r25 |
18c2: 80 93 ce 01 sts 0x01CE, r24 |
18c6: 08 95 ret |
000018c8 <memchr>: |
18c8: fc 01 movw r30, r24 |
18ca: 41 50 subi r20, 0x01 ; 1 |
18cc: 50 40 sbci r21, 0x00 ; 0 |
18ce: 30 f0 brcs .+12 ; 0x18dc <memchr+0x14> |
18d0: 01 90 ld r0, Z+ |
18d2: 06 16 cp r0, r22 |
18d4: d1 f7 brne .-12 ; 0x18ca <memchr+0x2> |
18d6: 31 97 sbiw r30, 0x01 ; 1 |
18d8: cf 01 movw r24, r30 |
18da: 08 95 ret |
18dc: 88 27 eor r24, r24 |
18de: 99 27 eor r25, r25 |
18e0: 08 95 ret |
000018e2 <fdevopen>: |
18e2: 0f 93 push r16 |
18e4: 1f 93 push r17 |
18e6: cf 93 push r28 |
18e8: df 93 push r29 |
18ea: 8c 01 movw r16, r24 |
18ec: eb 01 movw r28, r22 |
18ee: 00 97 sbiw r24, 0x00 ; 0 |
18f0: 11 f4 brne .+4 ; 0x18f6 <fdevopen+0x14> |
18f2: 67 2b or r22, r23 |
18f4: c1 f1 breq .+112 ; 0x1966 <fdevopen+0x84> |
18f6: 6e e0 ldi r22, 0x0E ; 14 |
18f8: 70 e0 ldi r23, 0x00 ; 0 |
18fa: 81 e0 ldi r24, 0x01 ; 1 |
18fc: 90 e0 ldi r25, 0x00 ; 0 |
18fe: 0e 94 b8 0c call 0x1970 <calloc> |
1902: fc 01 movw r30, r24 |
1904: 89 2b or r24, r25 |
1906: 71 f1 breq .+92 ; 0x1964 <fdevopen+0x82> |
1908: 80 e8 ldi r24, 0x80 ; 128 |
190a: 83 83 std Z+3, r24 ; 0x03 |
190c: 20 97 sbiw r28, 0x00 ; 0 |
190e: 71 f0 breq .+28 ; 0x192c <fdevopen+0x4a> |
1910: d3 87 std Z+11, r29 ; 0x0b |
1912: c2 87 std Z+10, r28 ; 0x0a |
1914: 81 e8 ldi r24, 0x81 ; 129 |
1916: 83 83 std Z+3, r24 ; 0x03 |
1918: 80 91 d0 01 lds r24, 0x01D0 |
191c: 90 91 d1 01 lds r25, 0x01D1 |
1920: 89 2b or r24, r25 |
1922: 21 f4 brne .+8 ; 0x192c <fdevopen+0x4a> |
1924: f0 93 d1 01 sts 0x01D1, r31 |
1928: e0 93 d0 01 sts 0x01D0, r30 |
192c: 01 15 cp r16, r1 |
192e: 11 05 cpc r17, r1 |
1930: c9 f0 breq .+50 ; 0x1964 <fdevopen+0x82> |
1932: 11 87 std Z+9, r17 ; 0x09 |
1934: 00 87 std Z+8, r16 ; 0x08 |
1936: 83 81 ldd r24, Z+3 ; 0x03 |
1938: 82 60 ori r24, 0x02 ; 2 |
193a: 83 83 std Z+3, r24 ; 0x03 |
193c: 80 91 d2 01 lds r24, 0x01D2 |
1940: 90 91 d3 01 lds r25, 0x01D3 |
1944: 89 2b or r24, r25 |
1946: 71 f4 brne .+28 ; 0x1964 <fdevopen+0x82> |
1948: f0 93 d3 01 sts 0x01D3, r31 |
194c: e0 93 d2 01 sts 0x01D2, r30 |
1950: 80 91 d4 01 lds r24, 0x01D4 |
1954: 90 91 d5 01 lds r25, 0x01D5 |
1958: 89 2b or r24, r25 |
195a: 21 f4 brne .+8 ; 0x1964 <fdevopen+0x82> |
195c: f0 93 d5 01 sts 0x01D5, r31 |
1960: e0 93 d4 01 sts 0x01D4, r30 |
1964: cf 01 movw r24, r30 |
1966: df 91 pop r29 |
1968: cf 91 pop r28 |
196a: 1f 91 pop r17 |
196c: 0f 91 pop r16 |
196e: 08 95 ret |
00001970 <calloc>: |
1970: 0f 93 push r16 |
1972: 1f 93 push r17 |
1974: cf 93 push r28 |
1976: df 93 push r29 |
1978: 86 9f mul r24, r22 |
197a: 80 01 movw r16, r0 |
197c: 87 9f mul r24, r23 |
197e: 10 0d add r17, r0 |
1980: 96 9f mul r25, r22 |
1982: 10 0d add r17, r0 |
1984: 11 24 eor r1, r1 |
1986: c8 01 movw r24, r16 |
1988: 0e 94 d4 0c call 0x19a8 <malloc> |
198c: ec 01 movw r28, r24 |
198e: 00 97 sbiw r24, 0x00 ; 0 |
1990: 29 f0 breq .+10 ; 0x199c <calloc+0x2c> |
1992: a8 01 movw r20, r16 |
1994: 60 e0 ldi r22, 0x00 ; 0 |
1996: 70 e0 ldi r23, 0x00 ; 0 |
1998: 0e 94 ca 0d call 0x1b94 <memset> |
199c: ce 01 movw r24, r28 |
199e: df 91 pop r29 |
19a0: cf 91 pop r28 |
19a2: 1f 91 pop r17 |
19a4: 0f 91 pop r16 |
19a6: 08 95 ret |
000019a8 <malloc>: |
19a8: cf 93 push r28 |
19aa: df 93 push r29 |
19ac: ac 01 movw r20, r24 |
19ae: 02 97 sbiw r24, 0x02 ; 2 |
19b0: 10 f4 brcc .+4 ; 0x19b6 <malloc+0xe> |
19b2: 42 e0 ldi r20, 0x02 ; 2 |
19b4: 50 e0 ldi r21, 0x00 ; 0 |
19b6: 20 e0 ldi r18, 0x00 ; 0 |
19b8: 30 e0 ldi r19, 0x00 ; 0 |
19ba: a0 91 d8 01 lds r26, 0x01D8 |
19be: b0 91 d9 01 lds r27, 0x01D9 |
19c2: bd 01 movw r22, r26 |
19c4: f9 01 movw r30, r18 |
19c6: 10 97 sbiw r26, 0x00 ; 0 |
19c8: 09 f4 brne .+2 ; 0x19cc <malloc+0x24> |
19ca: 4c c0 rjmp .+152 ; 0x1a64 <malloc+0xbc> |
19cc: 8d 91 ld r24, X+ |
19ce: 9c 91 ld r25, X |
19d0: 11 97 sbiw r26, 0x01 ; 1 |
19d2: 84 17 cp r24, r20 |
19d4: 95 07 cpc r25, r21 |
19d6: 31 f1 breq .+76 ; 0x1a24 <malloc+0x7c> |
19d8: 48 17 cp r20, r24 |
19da: 59 07 cpc r21, r25 |
19dc: 38 f4 brcc .+14 ; 0x19ec <malloc+0x44> |
19de: 21 15 cp r18, r1 |
19e0: 31 05 cpc r19, r1 |
19e2: 19 f0 breq .+6 ; 0x19ea <malloc+0x42> |
19e4: 82 17 cp r24, r18 |
19e6: 93 07 cpc r25, r19 |
19e8: 08 f4 brcc .+2 ; 0x19ec <malloc+0x44> |
19ea: 9c 01 movw r18, r24 |
19ec: fd 01 movw r30, r26 |
19ee: a2 81 ldd r26, Z+2 ; 0x02 |
19f0: b3 81 ldd r27, Z+3 ; 0x03 |
19f2: 10 97 sbiw r26, 0x00 ; 0 |
19f4: 59 f7 brne .-42 ; 0x19cc <malloc+0x24> |
19f6: 21 15 cp r18, r1 |
19f8: 31 05 cpc r19, r1 |
19fa: a1 f1 breq .+104 ; 0x1a64 <malloc+0xbc> |
19fc: c9 01 movw r24, r18 |
19fe: 84 1b sub r24, r20 |
1a00: 95 0b sbc r25, r21 |
1a02: 04 97 sbiw r24, 0x04 ; 4 |
1a04: 08 f4 brcc .+2 ; 0x1a08 <malloc+0x60> |
1a06: a9 01 movw r20, r18 |
1a08: db 01 movw r26, r22 |
1a0a: e0 e0 ldi r30, 0x00 ; 0 |
1a0c: f0 e0 ldi r31, 0x00 ; 0 |
1a0e: 10 97 sbiw r26, 0x00 ; 0 |
1a10: 49 f1 breq .+82 ; 0x1a64 <malloc+0xbc> |
1a12: 8d 91 ld r24, X+ |
1a14: 9c 91 ld r25, X |
1a16: 11 97 sbiw r26, 0x01 ; 1 |
1a18: 82 17 cp r24, r18 |
1a1a: 93 07 cpc r25, r19 |
1a1c: f9 f4 brne .+62 ; 0x1a5c <malloc+0xb4> |
1a1e: 42 17 cp r20, r18 |
1a20: 53 07 cpc r21, r19 |
1a22: 79 f4 brne .+30 ; 0x1a42 <malloc+0x9a> |
1a24: ed 01 movw r28, r26 |
1a26: 8a 81 ldd r24, Y+2 ; 0x02 |
1a28: 9b 81 ldd r25, Y+3 ; 0x03 |
1a2a: 30 97 sbiw r30, 0x00 ; 0 |
1a2c: 19 f0 breq .+6 ; 0x1a34 <malloc+0x8c> |
1a2e: 93 83 std Z+3, r25 ; 0x03 |
1a30: 82 83 std Z+2, r24 ; 0x02 |
1a32: 04 c0 rjmp .+8 ; 0x1a3c <malloc+0x94> |
1a34: 90 93 d9 01 sts 0x01D9, r25 |
1a38: 80 93 d8 01 sts 0x01D8, r24 |
1a3c: cd 01 movw r24, r26 |
1a3e: 02 96 adiw r24, 0x02 ; 2 |
1a40: 4a c0 rjmp .+148 ; 0x1ad6 <malloc+0x12e> |
1a42: 24 1b sub r18, r20 |
1a44: 35 0b sbc r19, r21 |
1a46: fd 01 movw r30, r26 |
1a48: e2 0f add r30, r18 |
1a4a: f3 1f adc r31, r19 |
1a4c: 41 93 st Z+, r20 |
1a4e: 51 93 st Z+, r21 |
1a50: 22 50 subi r18, 0x02 ; 2 |
1a52: 30 40 sbci r19, 0x00 ; 0 |
1a54: 2d 93 st X+, r18 |
1a56: 3c 93 st X, r19 |
1a58: cf 01 movw r24, r30 |
1a5a: 3d c0 rjmp .+122 ; 0x1ad6 <malloc+0x12e> |
1a5c: fd 01 movw r30, r26 |
1a5e: a2 81 ldd r26, Z+2 ; 0x02 |
1a60: b3 81 ldd r27, Z+3 ; 0x03 |
1a62: d5 cf rjmp .-86 ; 0x1a0e <malloc+0x66> |
1a64: 80 91 d6 01 lds r24, 0x01D6 |
1a68: 90 91 d7 01 lds r25, 0x01D7 |
1a6c: 89 2b or r24, r25 |
1a6e: 41 f4 brne .+16 ; 0x1a80 <malloc+0xd8> |
1a70: 80 91 80 00 lds r24, 0x0080 |
1a74: 90 91 81 00 lds r25, 0x0081 |
1a78: 90 93 d7 01 sts 0x01D7, r25 |
1a7c: 80 93 d6 01 sts 0x01D6, r24 |
1a80: e0 91 7e 00 lds r30, 0x007E |
1a84: f0 91 7f 00 lds r31, 0x007F |
1a88: 30 97 sbiw r30, 0x00 ; 0 |
1a8a: 41 f4 brne .+16 ; 0x1a9c <malloc+0xf4> |
1a8c: ed b7 in r30, 0x3d ; 61 |
1a8e: fe b7 in r31, 0x3e ; 62 |
1a90: 80 91 82 00 lds r24, 0x0082 |
1a94: 90 91 83 00 lds r25, 0x0083 |
1a98: e8 1b sub r30, r24 |
1a9a: f9 0b sbc r31, r25 |
1a9c: a0 91 d6 01 lds r26, 0x01D6 |
1aa0: b0 91 d7 01 lds r27, 0x01D7 |
1aa4: 9f 01 movw r18, r30 |
1aa6: 2a 1b sub r18, r26 |
1aa8: 3b 0b sbc r19, r27 |
1aaa: 24 17 cp r18, r20 |
1aac: 35 07 cpc r19, r21 |
1aae: 88 f0 brcs .+34 ; 0x1ad2 <malloc+0x12a> |
1ab0: ca 01 movw r24, r20 |
1ab2: 02 96 adiw r24, 0x02 ; 2 |
1ab4: 28 17 cp r18, r24 |
1ab6: 39 07 cpc r19, r25 |
1ab8: 60 f0 brcs .+24 ; 0x1ad2 <malloc+0x12a> |
1aba: cd 01 movw r24, r26 |
1abc: 84 0f add r24, r20 |
1abe: 95 1f adc r25, r21 |
1ac0: 02 96 adiw r24, 0x02 ; 2 |
1ac2: 90 93 d7 01 sts 0x01D7, r25 |
1ac6: 80 93 d6 01 sts 0x01D6, r24 |
1aca: 4d 93 st X+, r20 |
1acc: 5d 93 st X+, r21 |
1ace: cd 01 movw r24, r26 |
1ad0: 02 c0 rjmp .+4 ; 0x1ad6 <malloc+0x12e> |
1ad2: 80 e0 ldi r24, 0x00 ; 0 |
1ad4: 90 e0 ldi r25, 0x00 ; 0 |
1ad6: df 91 pop r29 |
1ad8: cf 91 pop r28 |
1ada: 08 95 ret |
00001adc <free>: |
1adc: cf 93 push r28 |
1ade: df 93 push r29 |
1ae0: 00 97 sbiw r24, 0x00 ; 0 |
1ae2: 09 f4 brne .+2 ; 0x1ae6 <free+0xa> |
1ae4: 54 c0 rjmp .+168 ; 0x1b8e <free+0xb2> |
1ae6: dc 01 movw r26, r24 |
1ae8: 12 97 sbiw r26, 0x02 ; 2 |
1aea: ed 01 movw r28, r26 |
1aec: 1b 82 std Y+3, r1 ; 0x03 |
1aee: 1a 82 std Y+2, r1 ; 0x02 |
1af0: 80 91 d8 01 lds r24, 0x01D8 |
1af4: 90 91 d9 01 lds r25, 0x01D9 |
1af8: 00 97 sbiw r24, 0x00 ; 0 |
1afa: 21 f1 breq .+72 ; 0x1b44 <free+0x68> |
1afc: fc 01 movw r30, r24 |
1afe: 40 e0 ldi r20, 0x00 ; 0 |
1b00: 50 e0 ldi r21, 0x00 ; 0 |
1b02: ea 17 cp r30, r26 |
1b04: fb 07 cpc r31, r27 |
1b06: 18 f1 brcs .+70 ; 0x1b4e <free+0x72> |
1b08: ed 01 movw r28, r26 |
1b0a: fb 83 std Y+3, r31 ; 0x03 |
1b0c: ea 83 std Y+2, r30 ; 0x02 |
1b0e: 2d 91 ld r18, X+ |
1b10: 3c 91 ld r19, X |
1b12: 11 97 sbiw r26, 0x01 ; 1 |
1b14: c2 0f add r28, r18 |
1b16: d3 1f adc r29, r19 |
1b18: ce 01 movw r24, r28 |
1b1a: 02 96 adiw r24, 0x02 ; 2 |
1b1c: 8e 17 cp r24, r30 |
1b1e: 9f 07 cpc r25, r31 |
1b20: 71 f4 brne .+28 ; 0x1b3e <free+0x62> |
1b22: 8a 81 ldd r24, Y+2 ; 0x02 |
1b24: 9b 81 ldd r25, Y+3 ; 0x03 |
1b26: 28 0f add r18, r24 |
1b28: 39 1f adc r19, r25 |
1b2a: 2e 5f subi r18, 0xFE ; 254 |
1b2c: 3f 4f sbci r19, 0xFF ; 255 |
1b2e: 11 96 adiw r26, 0x01 ; 1 |
1b30: 3c 93 st X, r19 |
1b32: 2e 93 st -X, r18 |
1b34: 82 81 ldd r24, Z+2 ; 0x02 |
1b36: 93 81 ldd r25, Z+3 ; 0x03 |
1b38: fd 01 movw r30, r26 |
1b3a: 93 83 std Z+3, r25 ; 0x03 |
1b3c: 82 83 std Z+2, r24 ; 0x02 |
1b3e: 41 15 cp r20, r1 |
1b40: 51 05 cpc r21, r1 |
1b42: 59 f4 brne .+22 ; 0x1b5a <free+0x7e> |
1b44: b0 93 d9 01 sts 0x01D9, r27 |
1b48: a0 93 d8 01 sts 0x01D8, r26 |
1b4c: 20 c0 rjmp .+64 ; 0x1b8e <free+0xb2> |
1b4e: af 01 movw r20, r30 |
1b50: 02 80 ldd r0, Z+2 ; 0x02 |
1b52: f3 81 ldd r31, Z+3 ; 0x03 |
1b54: e0 2d mov r30, r0 |
1b56: 30 97 sbiw r30, 0x00 ; 0 |
1b58: a1 f6 brne .-88 ; 0x1b02 <free+0x26> |
1b5a: ea 01 movw r28, r20 |
1b5c: bb 83 std Y+3, r27 ; 0x03 |
1b5e: aa 83 std Y+2, r26 ; 0x02 |
1b60: ca 01 movw r24, r20 |
1b62: 02 96 adiw r24, 0x02 ; 2 |
1b64: 28 81 ld r18, Y |
1b66: 39 81 ldd r19, Y+1 ; 0x01 |
1b68: 82 0f add r24, r18 |
1b6a: 93 1f adc r25, r19 |
1b6c: 8a 17 cp r24, r26 |
1b6e: 9b 07 cpc r25, r27 |
1b70: 71 f4 brne .+28 ; 0x1b8e <free+0xb2> |
1b72: 8d 91 ld r24, X+ |
1b74: 9c 91 ld r25, X |
1b76: 11 97 sbiw r26, 0x01 ; 1 |
1b78: 28 0f add r18, r24 |
1b7a: 39 1f adc r19, r25 |
1b7c: 2e 5f subi r18, 0xFE ; 254 |
1b7e: 3f 4f sbci r19, 0xFF ; 255 |
1b80: 39 83 std Y+1, r19 ; 0x01 |
1b82: 28 83 st Y, r18 |
1b84: fd 01 movw r30, r26 |
1b86: 82 81 ldd r24, Z+2 ; 0x02 |
1b88: 93 81 ldd r25, Z+3 ; 0x03 |
1b8a: 9b 83 std Y+3, r25 ; 0x03 |
1b8c: 8a 83 std Y+2, r24 ; 0x02 |
1b8e: df 91 pop r29 |
1b90: cf 91 pop r28 |
1b92: 08 95 ret |
00001b94 <memset>: |
1b94: dc 01 movw r26, r24 |
1b96: 40 ff sbrs r20, 0 |
1b98: 03 c0 rjmp .+6 ; 0x1ba0 <memset+0xc> |
1b9a: 01 c0 rjmp .+2 ; 0x1b9e <memset+0xa> |
1b9c: 6d 93 st X+, r22 |
1b9e: 6d 93 st X+, r22 |
1ba0: 42 50 subi r20, 0x02 ; 2 |
1ba2: 50 40 sbci r21, 0x00 ; 0 |
1ba4: d8 f7 brcc .-10 ; 0x1b9c <memset+0x8> |
1ba6: 08 95 ret |
00001ba8 <__udivmodsi4>: |
1ba8: a1 e2 ldi r26, 0x21 ; 33 |
1baa: 1a 2e mov r1, r26 |
1bac: aa 1b sub r26, r26 |
1bae: bb 1b sub r27, r27 |
1bb0: fd 01 movw r30, r26 |
1bb2: 0d c0 rjmp .+26 ; 0x1bce <__udivmodsi4_ep> |
00001bb4 <__udivmodsi4_loop>: |
1bb4: aa 1f adc r26, r26 |
1bb6: bb 1f adc r27, r27 |
1bb8: ee 1f adc r30, r30 |
1bba: ff 1f adc r31, r31 |
1bbc: a2 17 cp r26, r18 |
1bbe: b3 07 cpc r27, r19 |
1bc0: e4 07 cpc r30, r20 |
1bc2: f5 07 cpc r31, r21 |
1bc4: 20 f0 brcs .+8 ; 0x1bce <__udivmodsi4_ep> |
1bc6: a2 1b sub r26, r18 |
1bc8: b3 0b sbc r27, r19 |
1bca: e4 0b sbc r30, r20 |
1bcc: f5 0b sbc r31, r21 |
00001bce <__udivmodsi4_ep>: |
1bce: 66 1f adc r22, r22 |
1bd0: 77 1f adc r23, r23 |
1bd2: 88 1f adc r24, r24 |
1bd4: 99 1f adc r25, r25 |
1bd6: 1a 94 dec r1 |
1bd8: 69 f7 brne .-38 ; 0x1bb4 <__udivmodsi4_loop> |
1bda: 60 95 com r22 |
1bdc: 70 95 com r23 |
1bde: 80 95 com r24 |
1be0: 90 95 com r25 |
1be2: 9b 01 movw r18, r22 |
1be4: ac 01 movw r20, r24 |
1be6: bd 01 movw r22, r26 |
1be8: cf 01 movw r24, r30 |
1bea: 08 95 ret |
/tags/V0.31/main.map |
---|
0,0 → 1,764 |
Archive member included because of file (symbol) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o (__udivmodsi4) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
main.o (__do_copy_data) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
main.o (__do_clear_bss) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o (memchr) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o (fdevopen) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (__iob) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (calloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (malloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (memset) |
Allocating common symbols |
Common symbol size file |
SendeBuffer 0x64 uart.o |
Debug_Timer 0x2 main.o |
Debug_Display_Timer |
0x2 main.o |
__brkval 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
DebugIn 0xb main.o |
VersionInfo 0xa main.o |
New_IR_Code 0x1 ir.o |
RxdBuffer 0x64 uart.o |
AnalogWerte 0x6 analog.o |
IR_Code 0x2 ir.o |
KanalVon 0x8 menu.o |
Decodierung_Lauft 0x1 ir.o |
DebugOut 0x1a main.o |
KanalAn 0x8 menu.o |
__flp 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
PollDisplay 0x1 main.o |
__iob 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
Memory Configuration |
Name Origin Length Attributes |
text 0x00000000 0x00020000 xr |
data 0x00800060 0x0000ffa0 rw !x |
eeprom 0x00810000 0x00010000 rw !x |
*default* 0x00000000 0xffffffff |
Linker script and memory map |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
LOAD main.o |
LOAD uart.o |
LOAD lcd.o |
LOAD printf_P.o |
LOAD timer0.o |
LOAD keyboard.o |
LOAD menu.o |
LOAD ir.o |
LOAD analog.o |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libm.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
.hash |
*(.hash) |
.dynsym |
*(.dynsym) |
.dynstr |
*(.dynstr) |
.gnu.version |
*(.gnu.version) |
.gnu.version_d |
*(.gnu.version_d) |
.gnu.version_r |
*(.gnu.version_r) |
.rel.init |
*(.rel.init) |
.rela.init |
*(.rela.init) |
.rel.text |
*(.rel.text) |
*(.rel.text.*) |
*(.rel.gnu.linkonce.t*) |
.rela.text |
*(.rela.text) |
*(.rela.text.*) |
*(.rela.gnu.linkonce.t*) |
.rel.fini |
*(.rel.fini) |
.rela.fini |
*(.rela.fini) |
.rel.rodata |
*(.rel.rodata) |
*(.rel.rodata.*) |
*(.rel.gnu.linkonce.r*) |
.rela.rodata |
*(.rela.rodata) |
*(.rela.rodata.*) |
*(.rela.gnu.linkonce.r*) |
.rel.data |
*(.rel.data) |
*(.rel.data.*) |
*(.rel.gnu.linkonce.d*) |
.rela.data |
*(.rela.data) |
*(.rela.data.*) |
*(.rela.gnu.linkonce.d*) |
.rel.ctors |
*(.rel.ctors) |
.rela.ctors |
*(.rela.ctors) |
.rel.dtors |
*(.rel.dtors) |
.rela.dtors |
*(.rela.dtors) |
.rel.got |
*(.rel.got) |
.rela.got |
*(.rela.got) |
.rel.bss |
*(.rel.bss) |
.rela.bss |
*(.rela.bss) |
.rel.plt |
*(.rel.plt) |
.rela.plt |
*(.rela.plt) |
.text 0x00000000 0x1c18 |
*(.vectors) |
.vectors 0x00000000 0x54 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000000 __vectors |
0x00000000 __vector_default |
0x00000054 __ctors_start = . |
*(.ctors) |
0x00000054 __ctors_end = . |
0x00000054 __dtors_start = . |
*(.dtors) |
0x00000054 __dtors_end = . |
*(.progmem.gcc*) |
*(.progmem*) |
.progmem.data 0x00000054 0x54 main.o |
.progmem.data 0x000000a8 0xc uart.o |
.progmem.data 0x000000b4 0x56 menu.o |
0x0000010a . = ALIGN (0x2) |
*(.init0) |
*(.init1) |
*(.init2) |
.init2 0x0000010a 0xc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.init3) |
*(.init4) |
.init4 0x00000116 0x16 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
0x00000116 __do_copy_data |
.init4 0x0000012c 0x10 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
0x0000012c __do_clear_bss |
*(.init5) |
*(.init6) |
*(.init7) |
*(.init8) |
*(.init9) |
.init9 0x0000013c 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.text) |
.text 0x00000140 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000140 __vector_12 |
0x00000140 __bad_interrupt |
0x00000140 __vector_6 |
0x00000140 __vector_3 |
0x00000140 __vector_17 |
0x00000140 __vector_19 |
0x00000140 __vector_7 |
0x00000140 __vector_5 |
0x00000140 __vector_4 |
0x00000140 __vector_2 |
0x00000140 __vector_8 |
0x00000140 __vector_14 |
0x00000140 __vector_10 |
0x00000140 __vector_16 |
0x00000140 __vector_18 |
0x00000140 __vector_20 |
.text 0x00000144 0x282 main.o |
0x000001b4 Init |
0x00000156 Sekundentakt |
0x000001ca main |
0x00000144 Sekundentakt_Init |
.text 0x000003c6 0x7e6 uart.o |
0x000009f8 WriteProgramData |
0x00000a16 SendeRemoteTasten |
0x000009fa UART_Init |
0x00000430 __vector_13 |
0x0000080a BearbeiteRxDaten |
0x00000abe ClearIntervalle |
0x00000a76 SendIntervalle |
0x000005de AddCRC |
0x00000b04 DatenUebertragung |
0x00000732 Decode64 |
0x000003c6 __vector_15 |
0x0000064a SendOutData |
0x000009dc uart_putchar |
.text 0x00000bac 0x1b2 lcd.o |
0x00000cc4 LCD_Gotoxy |
0x00000c4e my_pput |
0x00000c08 _lcd_write_4bit |
0x00000bcc _short_delay |
0x00000c26 lcd_write_byte |
0x00000bdc _lcd_write_command |
0x00000c58 LCD_Init |
0x00000d48 LCD_Putchar |
0x00000d12 LCD_Write |
0x00000bac _long_delay |
.text 0x00000d5e 0x58a printf_P.o |
0x00000de0 _printf_P |
0x00000dc8 PAD_0 |
0x00000d86 PRINTP |
0x00000d5e PRINT |
0x00000db0 PAD_SP |
.text 0x000012e8 0xd6 timer0.o |
0x0000137c SetDelay |
0x0000138e CheckDelay |
0x000013a4 Delay_ms |
0x000012e8 __vector_9 |
0x00001368 Timer1_Init |
.text 0x000013be 0x136 keyboard.o |
0x000014da GetKeyboard2 |
0x000013be Keyboard_Init |
0x000013d0 GetKeyboard |
.text 0x000014f4 0x206 menu.o |
0x000014f4 Menu |
.text 0x000016fa 0x1b6 ir.o |
0x00001728 __vector_1 |
0x00001758 __vector_11 |
0x000016fa InitIR |
.text 0x000018b0 0x44 analog.o |
0x000018c8 GetAnalogWerte |
0x000018b8 ReadADC |
0x000018b0 ADC_Init |
.text 0x000018f4 0x1a C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
0x000018f4 memchr |
.text 0x0000190e 0x8e C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
0x0000190e fdevopen |
.text 0x0000199c 0x38 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
0x0000199c calloc |
.text 0x000019d4 0x1ec C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x000019d4 malloc |
0x00001b08 free |
.text 0x00001bc0 0x14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
0x00001bc0 memset |
0x00001bd4 . = ALIGN (0x2) |
*(.text.*) |
.text.libgcc 0x00001bd4 0x44 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
0x00001bd4 __udivmodsi4 |
0x00001c18 . = ALIGN (0x2) |
*(.fini9) |
*(.fini8) |
*(.fini7) |
*(.fini6) |
*(.fini5) |
*(.fini4) |
*(.fini3) |
*(.fini2) |
*(.fini1) |
*(.fini0) |
0x00001c18 _etext = . |
.data 0x00800060 0x24 load address 0x00001c18 |
0x00800060 PROVIDE (__data_start, .) |
*(.data) |
.data 0x00800060 0xc main.o |
0x00800065 DisplayZeilen |
0x00800064 SlaveAdresse |
0x00800066 CntDatensaetzeProSekunde |
0x00800062 IntervallDebug |
0x00800060 IntervallDisplay |
.data 0x0080006c 0x5 uart.o |
0x0080006e UebertragungAbgeschlossen |
0x0080006c AnzahlTeilnehmer |
0x0080006d ErwarteAntwort |
.data 0x00800071 0xb menu.o |
0x00800071 Array |
.data 0x0080007c 0x2 ir.o |
0x0080007c LoescheIrCodeTimer |
.data 0x0080007e 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x00800080 __malloc_heap_start |
0x0080007e __malloc_heap_end |
0x00800082 __malloc_margin |
*(.gnu.linkonce.d*) |
0x00800084 . = ALIGN (0x2) |
0x00800084 _edata = . |
0x00800084 PROVIDE (__data_end, .) |
.bss 0x00800084 0x157 |
0x00800084 PROVIDE (__bss_start, .) |
*(.bss) |
.bss 0x00800084 0xe main.o |
0x00800087 DebugGetAnforderung |
0x00800088 Debug_Display_Intervall |
0x00800086 GetVersionAnforderung |
0x0080008d Sekunde |
0x00800085 SendeDummyDaten |
0x0080008e _TastTimer |
0x0080008c Minute |
0x0080008a Debug_Timer_Intervall |
0x00800084 UebertragungUnterbrochen |
0x00800090 _SekTimer |
.bss 0x00800092 0x14 uart.o |
0x0080009d SioTmp |
0x00800098 PC_DebugTimeout |
0x0080009c NeuerDatensatzEmpfangen |
0x0080009a CntCrcError |
0x00800097 TX_DigTransferKanalL |
0x00800094 DisplayBusy |
0x00800092 WaitTXD |
0x00800099 AnzahlEmpfangsBytes |
0x00800095 TX_DigTransferKanalDaten |
0x00800093 AntwortEingetroffen |
0x00800096 TX_DigTransferKanalH |
.bss 0x008000a6 0x3 timer0.o |
0x008000a6 CountMilliseconds |
.bss 0x008000a9 0x7 keyboard.o |
0x008000a9 KeyTimer |
.bss 0x008000b0 0x5 menu.o |
0x008000b0 TestInt |
.bss 0x008000b5 0x6 ir.o |
*(COMMON) |
COMMON 0x008000bb 0x34 main.o |
0x008000bb Debug_Timer |
0x008000bd Debug_Display_Timer |
0x008000bf DebugIn |
0x008000ca VersionInfo |
0x008000d4 DebugOut |
0x008000ee PollDisplay |
COMMON 0x008000ef 0xc8 uart.o |
0x008000ef SendeBuffer |
0x00800153 RxdBuffer |
COMMON 0x008001b7 0x10 menu.o |
0x008001b7 KanalVon |
0x008001bf KanalAn |
COMMON 0x008001c7 0x4 ir.o |
0x008001c7 New_IR_Code |
0x008001c8 IR_Code |
0x008001ca Decodierung_Lauft |
COMMON 0x008001cb 0x6 analog.o |
0x008001cb AnalogWerte |
COMMON 0x008001d1 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
0x008001d1 __iob |
COMMON 0x008001d7 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x008001d7 __brkval |
0x008001d9 __flp |
0x008001db PROVIDE (__bss_end, .) |
0x00001c18 __data_load_start = LOADADDR (.data) |
0x00001c3c __data_load_end = (__data_load_start + SIZEOF (.data)) |
.noinit 0x008001db 0x0 |
0x008001db PROVIDE (__noinit_start, .) |
*(.noinit*) |
0x008001db PROVIDE (__noinit_end, .) |
0x008001db _end = . |
0x008001db PROVIDE (__heap_start, .) |
.eeprom 0x00810000 0x0 |
*(.eeprom*) |
0x00810000 __eeprom_end = . |
.stab 0x00000000 0x36c |
*(.stab) |
.stab 0x00000000 0x36c C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stabstr 0x00000000 0x84 |
*(.stabstr) |
.stabstr 0x00000000 0x84 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stab.excl |
*(.stab.excl) |
.stab.exclstr |
*(.stab.exclstr) |
.stab.index |
*(.stab.index) |
.stab.indexstr |
*(.stab.indexstr) |
.comment |
*(.comment) |
.debug |
*(.debug) |
.line |
*(.line) |
.debug_srcinfo |
*(.debug_srcinfo) |
.debug_sfnames |
*(.debug_sfnames) |
.debug_aranges 0x00000000 0xb4 |
*(.debug_aranges) |
.debug_aranges |
0x00000000 0x14 main.o |
.debug_aranges |
0x00000014 0x14 uart.o |
.debug_aranges |
0x00000028 0x14 lcd.o |
.debug_aranges |
0x0000003c 0x14 printf_P.o |
.debug_aranges |
0x00000050 0x14 timer0.o |
.debug_aranges |
0x00000064 0x14 keyboard.o |
.debug_aranges |
0x00000078 0x14 menu.o |
.debug_aranges |
0x0000008c 0x14 ir.o |
.debug_aranges |
0x000000a0 0x14 analog.o |
.debug_pubnames |
0x00000000 0x701 |
*(.debug_pubnames) |
.debug_pubnames |
0x00000000 0x1e1 main.o |
.debug_pubnames |
0x000001e1 0x240 uart.o |
.debug_pubnames |
0x00000421 0xb7 lcd.o |
.debug_pubnames |
0x000004d8 0x4a printf_P.o |
.debug_pubnames |
0x00000522 0x70 timer0.o |
.debug_pubnames |
0x00000592 0x52 keyboard.o |
.debug_pubnames |
0x000005e4 0x4a menu.o |
.debug_pubnames |
0x0000062e 0x85 ir.o |
.debug_pubnames |
0x000006b3 0x4e analog.o |
.debug_info 0x00000000 0x1a6c |
*(.debug_info) |
.debug_info 0x00000000 0x469 main.o |
.debug_info 0x00000469 0x7ba uart.o |
.debug_info 0x00000c23 0x260 lcd.o |
.debug_info 0x00000e83 0x45d printf_P.o |
.debug_info 0x000012e0 0x1d7 timer0.o |
.debug_info 0x000014b7 0x177 keyboard.o |
.debug_info 0x0000162e 0x1a7 menu.o |
.debug_info 0x000017d5 0x171 ir.o |
.debug_info 0x00001946 0x126 analog.o |
*(.gnu.linkonce.wi.*) |
.debug_abbrev 0x00000000 0x774 |
*(.debug_abbrev) |
.debug_abbrev 0x00000000 0x10c main.o |
.debug_abbrev 0x0000010c 0x178 uart.o |
.debug_abbrev 0x00000284 0xbc lcd.o |
.debug_abbrev 0x00000340 0x132 printf_P.o |
.debug_abbrev 0x00000472 0xc5 timer0.o |
.debug_abbrev 0x00000537 0x87 keyboard.o |
.debug_abbrev 0x000005be 0xb6 menu.o |
.debug_abbrev 0x00000674 0x76 ir.o |
.debug_abbrev 0x000006ea 0x8a analog.o |
.debug_line 0x00000000 0x16a3 |
*(.debug_line) |
.debug_line 0x00000000 0x2aa main.o |
.debug_line 0x000002aa 0x4c4 uart.o |
.debug_line 0x0000076e 0x279 lcd.o |
.debug_line 0x000009e7 0x4e2 printf_P.o |
.debug_line 0x00000ec9 0x180 timer0.o |
.debug_line 0x00001049 0x170 keyboard.o |
.debug_line 0x000011b9 0x19a menu.o |
.debug_line 0x00001353 0x212 ir.o |
.debug_line 0x00001565 0x13e analog.o |
.debug_frame |
*(.debug_frame) |
.debug_str 0x00000000 0x889 |
*(.debug_str) |
.debug_str 0x00000000 0x2e2 main.o |
0x371 (size before relaxing) |
.debug_str 0x000002e2 0x26b uart.o |
0x423 (size before relaxing) |
.debug_str 0x0000054d 0x9a lcd.o |
0x17b (size before relaxing) |
.debug_str 0x000005e7 0xf9 printf_P.o |
0x1bd (size before relaxing) |
.debug_str 0x000006e0 0x6b timer0.o |
0x168 (size before relaxing) |
.debug_str 0x0000074b 0x5e keyboard.o |
0x13f (size before relaxing) |
.debug_str 0x000007a9 0x40 menu.o |
0x15e (size before relaxing) |
.debug_str 0x000007e9 0x6d ir.o |
0x169 (size before relaxing) |
.debug_str 0x00000856 0x33 analog.o |
0x120 (size before relaxing) |
.debug_loc |
*(.debug_loc) |
.debug_macinfo |
*(.debug_macinfo) |
OUTPUT(main.elf elf32-avr) |
Cross Reference Table |
Symbol File |
ADC_Init analog.o |
main.o |
AddCRC uart.o |
AnalogWerte analog.o |
uart.o |
AntwortEingetroffen uart.o |
AnzahlEmpfangsBytes uart.o |
AnzahlTeilnehmer uart.o |
menu.o |
Array menu.o |
BearbeiteRxDaten uart.o |
main.o |
CheckDelay timer0.o |
keyboard.o |
main.o |
ClearIntervalle uart.o |
main.o |
CntCrcError uart.o |
menu.o |
CntDatensaetzeProSekunde main.o |
uart.o |
CountMilliseconds timer0.o |
DatenUebertragung uart.o |
main.o |
DebugGetAnforderung main.o |
DebugIn uart.o |
main.o |
DebugOut uart.o |
main.o |
Debug_Display_Intervall main.o |
Debug_Display_Timer main.o |
Debug_Timer main.o |
Debug_Timer_Intervall main.o |
Decode64 uart.o |
Decodierung_Lauft ir.o |
Delay_ms timer0.o |
main.o |
DisplayBusy uart.o |
timer0.o |
DisplayZeilen main.o |
menu.o |
uart.o |
ErwarteAntwort uart.o |
GetAnalogWerte analog.o |
main.o |
GetKeyboard keyboard.o |
main.o |
GetKeyboard2 keyboard.o |
main.o |
GetVersionAnforderung main.o |
IR_Code ir.o |
timer0.o |
uart.o |
Init main.o |
InitIR ir.o |
main.o |
IntervallDebug main.o |
IntervallDisplay main.o |
KanalAn menu.o |
KanalVon menu.o |
KeyTimer keyboard.o |
Keyboard_Init keyboard.o |
main.o |
LCD_Gotoxy lcd.o |
menu.o |
uart.o |
main.o |
LCD_Init lcd.o |
main.o |
LCD_Putchar lcd.o |
printf_P.o |
LCD_Write lcd.o |
LoescheIrCodeTimer ir.o |
timer0.o |
Menu menu.o |
main.o |
Minute main.o |
NeuerDatensatzEmpfangen uart.o |
New_IR_Code ir.o |
PAD_0 printf_P.o |
PAD_SP printf_P.o |
PC_DebugTimeout uart.o |
PRINT printf_P.o |
PRINTP printf_P.o |
PollDisplay uart.o |
main.o |
ReadADC analog.o |
RxdBuffer uart.o |
Sekunde main.o |
Sekundentakt main.o |
Sekundentakt_Init main.o |
SendIntervalle uart.o |
SendOutData uart.o |
SendeBuffer uart.o |
SendeDummyDaten main.o |
SendeRemoteTasten uart.o |
SetDelay timer0.o |
keyboard.o |
main.o |
SioTmp uart.o |
SlaveAdresse main.o |
menu.o |
uart.o |
TX_DigTransferKanalDaten uart.o |
TX_DigTransferKanalH uart.o |
TX_DigTransferKanalL uart.o |
TestInt menu.o |
Timer1_Init timer0.o |
main.o |
UART_Init uart.o |
main.o |
UebertragungAbgeschlossen uart.o |
UebertragungUnterbrochen main.o |
VersionInfo main.o |
WaitTXD uart.o |
timer0.o |
WriteProgramData uart.o |
_SekTimer main.o |
_TastTimer main.o |
__bad_interrupt C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__brkval C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__bss_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__bss_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__data_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_load_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__do_clear_bss C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__do_copy_data C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__flp C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__init C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__iob C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
__malloc_heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_margin C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__stack C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
main.o |
__udivmodsi4 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o |
__vector_1 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_10 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_11 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_12 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_13 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_15 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_16 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_17 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_18 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_19 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_20 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_3 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_5 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_7 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_8 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_9 timer0.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_default C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vectors C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
_lcd_write_4bit lcd.o |
_lcd_write_command lcd.o |
menu.o |
main.o |
_long_delay lcd.o |
menu.o |
main.o |
_printf_P printf_P.o |
menu.o |
uart.o |
main.o |
_short_delay lcd.o |
calloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
fdevopen C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o |
free C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
lcd_write_byte lcd.o |
main main.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
malloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
memchr C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o |
memset C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
my_pput lcd.o |
uart_putchar uart.o |
/tags/V0.31/main.sym |
---|
0,0 → 1,253 |
00000000 W __heap_end |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 W __vector_default |
00000000 T __vectors |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
00000054 t __c.0 |
00000054 T __ctors_end |
00000054 T __ctors_start |
00000054 T __dtors_end |
00000054 T __dtors_start |
00000069 t __c.1 |
0000007e t __c.2 |
00000093 t __c.3 |
000000a8 t __c.2 |
000000ab t __c.3 |
000000ae t __c.4 |
000000b1 t __c.5 |
000000b4 t __c.3 |
000000c2 t __c.4 |
000000d0 t __c.5 |
000000dc t __c.6 |
000000e1 t __c.7 |
000000ea t __c.8 |
000000f6 t __c.9 |
000000fe t __c.10 |
0000010a W __init |
00000116 T __do_copy_data |
00000122 t .do_copy_data_loop |
00000126 t .do_copy_data_start |
0000012c T __do_clear_bss |
00000134 t .do_clear_bss_loop |
00000136 t .do_clear_bss_start |
00000140 T __bad_interrupt |
00000140 W __vector_10 |
00000140 W __vector_12 |
00000140 W __vector_14 |
00000140 W __vector_16 |
00000140 W __vector_17 |
00000140 W __vector_18 |
00000140 W __vector_19 |
00000140 W __vector_2 |
00000140 W __vector_20 |
00000140 W __vector_3 |
00000140 W __vector_4 |
00000140 W __vector_5 |
00000140 W __vector_6 |
00000140 W __vector_7 |
00000140 W __vector_8 |
00000144 T Sekundentakt_Init |
00000156 T Sekundentakt |
000001b4 T Init |
000001ca T main |
000003c6 T __vector_15 |
00000430 T __vector_13 |
000005de T AddCRC |
0000063c T SendOutData |
00000724 T Decode64 |
000007fc T BearbeiteRxDaten |
0000085f W __stack |
0000097a T uart_putchar |
00000996 T WriteProgramData |
00000998 T UART_Init |
000009b4 T SendeRemoteTasten |
00000a14 T SendIntervalle |
00000a5c T ClearIntervalle |
00000aa2 T DatenUebertragung |
00000b92 T _long_delay |
00000bb2 T _short_delay |
00000bc2 T _lcd_write_command |
00000bee T _lcd_write_4bit |
00000c0c T lcd_write_byte |
00000c34 T my_pput |
00000c3e T LCD_Init |
00000caa T LCD_Gotoxy |
00000cf8 T LCD_Write |
00000d2e T LCD_Putchar |
00000d44 T PRINT |
00000d6c T PRINTP |
00000d96 T PAD_SP |
00000dae T PAD_0 |
00000dc6 T _printf_P |
000012ce T __vector_9 |
0000133c T Timer1_Init |
00001350 T SetDelay |
00001362 T CheckDelay |
00001378 T Delay_ms |
00001392 T Keyboard_Init |
000013a4 T GetKeyboard |
000014ae T GetKeyboard2 |
000014c8 T Menu |
000016ce T InitIR |
000016fc T __vector_1 |
0000172c T __vector_11 |
00001884 T ADC_Init |
0000188c T ReadADC |
0000189c T GetAnalogWerte |
000018c8 T memchr |
000018e2 T fdevopen |
00001970 T calloc |
000019a8 T malloc |
00001adc T free |
00001b94 T memset |
00001ba8 T __udivmodsi4 |
00001bb4 t __udivmodsi4_loop |
00001bce t __udivmodsi4_ep |
00001bec A __data_load_start |
00001bec T _etext |
00001c10 A __data_load_end |
00800060 D __data_start |
00800060 D IntervallDisplay |
00800062 D IntervallDebug |
00800064 D SlaveAdresse |
00800065 D DisplayZeilen |
00800066 D CntDatensaetzeProSekunde |
0080006c D AnzahlTeilnehmer |
0080006d D ErwarteAntwort |
0080006e D UebertragungAbgeschlossen |
0080006f d state.0 |
00800070 d KanalSlave.1 |
00800071 D Array |
0080007b d MaxMenue.1 |
0080007c D LoescheIrCodeTimer |
0080007e D __malloc_heap_end |
00800080 D __malloc_heap_start |
00800082 D __malloc_margin |
00800084 B __bss_start |
00800084 D __data_end |
00800084 D _edata |
00800084 B UebertragungUnterbrochen |
00800085 B SendeDummyDaten |
00800086 B GetVersionAnforderung |
00800087 B DebugGetAnforderung |
00800088 B Debug_Display_Intervall |
0080008a B Debug_Timer_Intervall |
0080008c B Minute |
0080008d B Sekunde |
0080008e B _TastTimer |
00800090 B _SekTimer |
00800092 B AntwortEingetroffen |
00800093 B DisplayBusy |
00800094 B TX_DigTransferKanalDaten |
00800095 B TX_DigTransferKanalH |
00800096 B TX_DigTransferKanalL |
00800097 B PC_DebugTimeout |
00800098 B AnzahlEmpfangsBytes |
00800099 B CntCrcError |
0080009b B NeuerDatensatzEmpfangen |
0080009c B SioTmp |
0080009d b ptr.11 |
0080009f b crc.6 |
008000a1 b crc1.7 |
008000a2 b crc2.8 |
008000a3 b buf_ptr.9 |
008000a4 b UartState.10 |
008000a5 B CountMilliseconds |
008000a7 b cnt_10ms.0 |
008000a8 B KeyTimer |
008000aa b taste1.0 |
008000ab b taste2.1 |
008000ac b taste3.2 |
008000ad b taste4.3 |
008000ae b taste5.4 |
008000af B TestInt |
008000b1 b arr.0 |
008000b3 b MenuePunkt.2 |
008000b4 b Shift.0 |
008000b6 b IR_Code_tmp.1 |
008000b8 b IR_Zaehler.2 |
008000b9 b IRSperrCounter.3 |
008000ba B Debug_Timer |
008000bc B Debug_Display_Timer |
008000be B DebugIn |
008000c9 B VersionInfo |
008000d3 B DebugOut |
008000ed B PollDisplay |
008000ee B SendeBuffer |
00800152 B RxdBuffer |
008001b6 B KanalVon |
008001be B KanalAn |
008001c6 B New_IR_Code |
008001c7 B IR_Code |
008001c9 B Decodierung_Lauft |
008001ca B AnalogWerte |
008001d0 B __iob |
008001d6 B __brkval |
008001d8 B __flp |
008001da B __bss_end |
008001da ? __heap_start |
008001da ? _end |
00810000 ? __eeprom_end |
/tags/V0.31/makefile |
---|
0,0 → 1,386 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega8 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 31 |
#------------------------------------------------------------------- |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
TARGET = BrushLess-Ctrl_V$(HAUPT_VERSION)_$(NEBEN_VERSION) |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c timer0.c analog.c PPM_Decode.c twislave.c BLMC.c |
#printf_P.c |
########################################################################################################## |
# If there is more than one source file, append them above, or modify and |
# uncomment the following: |
#SRC += foo.c bar.c |
# You can also wrap lines by appending a backslash to the end of the line: |
#SRC += baz.c \ |
#xyzzy.c |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -g -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) |
ifeq ($(AVR_CTRL_PLATINE), 1) |
CFLAGS += -DAVR_CTRL_PLATINE=$(AVR_CTRL_PLATINE) |
endif |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
#AVRDUDE_FLAGS += -V -E noreset |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
# $(REMOVE) $(TARGET).eep |
# $(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/tags/V0.31/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/tags/V0.31/timer0.c |
---|
0,0 → 1,59 |
/***************************************************************************** |
*****************************************************************************/ |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile unsigned char Timer0Overflow; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL(SIG_OVERFLOW0) |
{ |
static unsigned char cnt; |
Timer0Overflow++; |
if(!cnt--) |
{ |
cnt = 3; |
CountMilliseconds += 1; |
if(I2C_Timeout) I2C_Timeout--; |
if(PPM_Timeout) PPM_Timeout--; |
if(SIO_Timeout) SIO_Timeout--; |
} |
} |
void Timer0_Init(void) |
{ |
TCCR0 = TIMER_TEILER; |
// TCNT0 = -TIMER_RELOAD_VALUE; // reload |
TIM0_START; |
TIMER2_INT_ENABLE; |
} |
unsigned int SetDelay(unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
} |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
} |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
/tags/V0.31/timer0.h |
---|
0,0 → 1,15 |
#if defined (__AVR_ATmega8__) |
#define TIMER_TEILER CK8 |
//#define TIMER_RELOAD_VALUE 125 |
#endif |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char Timer0Overflow; |
void Timer1_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
/tags/V0.31/twislave.c |
---|
0,0 → 1,75 |
/*############################################################################ |
Slaveadr = 0x52 = Vorne, 0x54 = Hinten, 0x56 = Rechts, 0x58 = Links |
############################################################################*/ |
#include <avr/io.h> |
#include <util/twi.h> |
#include "main.h" |
unsigned char I2C_RXBuffer; |
unsigned char Byte_Counter=0; |
//############################################################################ |
//I2C (TWI) Interface Init |
void InitIC2_Slave(uint8_t adr) |
//############################################################################ |
{ |
TWAR = adr + (2*MOTORADRESSE); // Eigene Adresse setzen |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
//############################################################################ |
//ISR, die bei einem Ereignis auf dem Bus ausgelöst wird. Im Register TWSR befindet |
//sich dann ein Statuscode, anhand dessen die Situation festgestellt werden kann. |
ISR (TWI_vect) |
//############################################################################ |
{ |
switch (TWSR & 0xF8) |
{ |
case SR_SLA_ACK: |
TWCR |= (1<<TWINT); |
Byte_Counter=0; |
return; |
// Daten Empfangen |
case SR_PREV_ACK: |
I2C_RXBuffer = TWDR; |
I2C_Timeout = 500; |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_SLA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_DATA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_2: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_1: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
} |
TWCR =(1<<TWEA) | (1<<TWINT) | (1<<TWEN) | (1<<TWIE); // TWI Reset |
} |
/tags/V0.31/twislave.h |
---|
0,0 → 1,32 |
#ifndef _TWI_SLAVE_H_ |
#define _TWI_SLAVE_H_ |
extern unsigned char I2C_RXBuffer; |
extern unsigned char Byte_Counter; |
extern void InitIC2_Slave (uint8_t adr); |
#define TWI_BUS_ERR_1 0x00 |
#define TWI_BUS_ERR_2 0xF8 |
// Status Slave RX Mode |
#define SR_SLA_ACK 0x60 |
#define SR_LOST_ACK 0x68 |
#define SR_GEN_CALL_ACK 0x70 |
#define GEN_LOST_ACK 0x78 |
#define SR_PREV_ACK 0x80 |
#define SR_PREV_NACK 0x88 |
#define GEN_PREV_ACK 0x90 |
#define GEN_PREV_NACK 0x98 |
#define STOP_CONDITION 0xA0 |
#define REPEATED_START 0xA0 |
// Status Slave TX mode |
#define SW_SLA_ACK 0xA8 |
#define SW_LOST_ACK 0xB0 |
#define SW_DATA_ACK 0xB8 |
#define SW_DATA_NACK 0xC0 |
#define SW_LAST_ACK 0xC8 |
#endif |
/tags/V0.31/uart.c |
---|
0,0 → 1,185 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + (c) 01.2007 Holger Buss |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Keine Garantie auf Fehlerfreiheit |
// + Kommerzielle Nutzung nur mit meiner Zustimmung |
// + Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
// + www.mikrocontroller.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
#define MAX_SENDE_BUFF 100 |
#define MAX_EMPFANGS_BUFF 100 |
unsigned volatile char SIO_Sollwert = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned char MeineSlaveAdresse; |
struct str_DebugOut DebugOut; |
int Debug_Timer; |
SIGNAL(INT_VEC_TX) |
{ |
} |
void SendUart(void) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!(UCSRA & 0x40)) return; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
USR |= (1<TXC); |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
static unsigned char serPacketCounter = 100; |
SioTmp = UDR; |
#if X3D_SIO == 1 |
if(SioTmp == 0xF5) // Startzeichen |
{ |
serPacketCounter = 0; |
} |
else |
{ |
if(++serPacketCounter == MOTORADRESSE) // (1-4) |
{ |
SIO_Sollwert = SioTmp; |
SIO_Timeout = 200; // werte für 200ms gültig |
} |
else |
{ |
if(serPacketCounter > 100) serPacketCounter = 100; |
} |
} |
#endif |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
#if X3D_SIO == 1 |
UCSRB |= (1<<RXCIE); // serieller Empfangsinterrupt |
#endif |
// TX-Interrupt Freigabe |
// UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR= (SYSCLK / (BAUD_RATE * 8L) -1 ); |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
Debug_Timer = SetDelay(200); |
UDR = '*'; |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen)) // im Singlestep-Betrieb in jedem Schtitt senden |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
Debug_Timer = SetDelay(50); // Sendeintervall |
} |
} |
/tags/V0.31/uart.h |
---|
0,0 → 1,81 |
#ifndef _UART_H |
#define _UART_H |
extern unsigned volatile char SIO_Sollwert; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned char MeineSlaveAdresse; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void SendUart(void); |
struct str_DebugOut |
{ |
unsigned char Digital[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned int Analog[8]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
//Die Baud_Rate der Seriellen Schnittstelle |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
#if X3D_SIO == 1 |
#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#else |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
#endif |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega8__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/tags/V0.33/BLMC.c |
---|
0,0 → 1,196 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned char Phase = 0,ShadowTCCR1A = 0; |
volatile unsigned char CompFreigabeTimer = 100; |
volatile unsigned char CompInterruptFreigabe = 0; |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW2) |
//############################################################################ |
{ |
} |
//############################################################################ |
// + Interruptroutine |
// + Wird durch den Analogkomperator ausgelöst |
// + Dadurch wird das Kommutieren erzeugt |
SIGNAL(SIG_COMPARATOR) |
//############################################################################ |
{ |
unsigned char sense = 0; |
do |
{ |
if(SENSE_H) sense = 1; else sense = 0; |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
if(sense) |
{ |
STEUER_C_L; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_FALLING_INT; |
SENSE_B; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_L; |
} |
break; |
case 1: |
STEUER_C_L; |
if(!sense) |
{ |
STEUER_B_H; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_H; |
} |
break; |
case 2: |
STEUER_B_H; |
if(sense) |
{ |
STEUER_A_L; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_L; |
} |
break; |
case 3: |
STEUER_A_L; |
if(!sense) |
{ |
STEUER_C_H; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_B; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_H; |
} |
break; |
case 4: |
STEUER_C_H; |
if(sense) |
{ |
STEUER_B_L; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_L; |
} |
break; |
case 5: |
STEUER_B_L; |
if(!sense) |
{ |
STEUER_A_H; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_RISING_INT; |
Phase = 0; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_H; |
} |
break; |
} |
} |
while((SENSE_L && sense) || (SENSE_H && !sense)); |
ZeitZumAdWandeln = 0; |
} |
//############################################################################ |
// |
void Manuell(void) |
//############################################################################ |
{ |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
STEUER_B_L; |
SENSE_C; |
SENSE_RISING_INT; |
break; |
case 1: |
STEUER_A_H; |
STEUER_C_L; |
SENSE_B; |
SENSE_FALLING_INT; |
break; |
case 2: |
STEUER_B_H; |
STEUER_C_L; |
SENSE_A; |
SENSE_RISING_INT; |
break; |
case 3: |
STEUER_B_H; |
STEUER_A_L; |
SENSE_C; |
SENSE_FALLING_INT; |
break; |
case 4: |
STEUER_C_H; |
STEUER_A_L; |
SENSE_B; |
SENSE_RISING_INT; |
break; |
case 5: |
STEUER_C_H; |
STEUER_B_L; |
SENSE_A; |
SENSE_FALLING_INT; |
break; |
} |
} |
/tags/V0.33/BLMC.h |
---|
0,0 → 1,55 |
/*############################################################################ |
############################################################################*/ |
#ifndef BLMC_H_ |
#define BLMC_H_ |
extern volatile unsigned char Phase; |
extern volatile unsigned char ShadowTCCR1A; |
extern volatile unsigned char CompInterruptFreigabe; |
void Blc(void); |
void Manuell(void); |
#ifdef _32KHZ |
#define PWM_C_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xAD; TCCR2 = 0x69;DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x0D; TCCR2 = 0x49;PORTC &= ~0x0E;} |
#endif |
#ifdef _16KHZ |
#define PWM_C_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xA2; TCCR2 = 0x61; DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x02; TCCR2 = 0x41;PORTC &= ~0x0E;} |
#endif |
#define STEUER_A_H {PWM_A_ON} |
#define STEUER_B_H {PWM_B_ON} |
#define STEUER_C_H {PWM_C_ON} |
#define STEUER_A_L {PORTD &= ~0x30; PORTD |= 0x08;} |
#define STEUER_B_L {PORTD &= ~0x28; PORTD |= 0x10;} |
#define STEUER_C_L {PORTD &= ~0x18; PORTD |= 0x20;} |
#define STEUER_OFF {PORTD &= ~0x38; PWM_OFF;} |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
#define ENABLE_SENSE_INT {CompInterruptFreigabe = 1;ACSR |= 0x0A; } |
#define DISABLE_SENSE_INT {CompInterruptFreigabe = 0; ACSR &= ~0x08; } |
#define SENSE_FALLING_INT ACSR &= ~0x01 |
#define SENSE_RISING_INT ACSR |= 0x03 |
#define SENSE_TOGGLE_INT ACSR &= ~0x03 |
#endif //BLMC_H_ |
/tags/V0.33/BL_Ctrl.pnproj |
---|
0,0 → 1,0 |
<Project name="avr_ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="analog.h"></File><File path="analog.c"></File><File path="PPM_Decode.c"></File><File path="PPM_Decode.h"></File><File path="twislave.c"></File><File path="twislave.h"></File><File path="BLMC.c"></File><File path="BLMC.h"></File></Project> |
/tags/V0.33/BL_Ctrl.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="avr_ctrl" x="true"></e></ViewState></pd> |
/tags/V0.33/Doku/Bestueckt_BL-Ctrl_V1_1/BootLoader_MEGA8_8MHZ_V0_1.hex |
---|
0,0 → 1,53 |
:101C000011241FBECFE5D4E0DEBFCDBF10E0A0E6BB |
:101C1000B0E0EAE2FFE102C005900D92A036B10704 |
:101C2000D9F710E0A0E6B0E001C01D92A23AB107DA |
:101C3000E1F714C000C008955D9BFECF8CB90895F4 |
:101C40005F9BFECF8CB1992708958DE4F5DF8BE47F |
:101C5000F3DF82E4F1DF8CE4EFDF0895CFE5D4E039 |
:101C6000DEBFCDBFE0E0F0E004917F01992490BC9D |
:101C700080E189B9599A88E18AB986E880BDEF0187 |
:101C8000192D5F9B0BC0113029F48CB18A3A49F1B0 |
:101C900010E004C08CB18B3109F411E0CE01219623 |
:101CA00084369105C8F00F3F41F0002331F0E091F8 |
:101CB0006000F091610009950FC08AE0BDDF8DE002 |
:101CC000BBDF86E5B9DF80E3B7DF8EE2B5DF81E316 |
:101CD000B3DF8AE3B1DF05C080E29EE40197F1F74C |
:101CE000D0CFB3DFADDF813611F489E51CC181347B |
:101CF00061F4A6DFE82EFF24FE2CEE24A1DF992755 |
:101D0000E82AF92AF694E794E1C0823631F489E5AD |
:101D100093DF80E091DF80E406C1823409F070C077 |
:101D20008FDF8EDFD82E8CDF082FB2E6AB2EB0E02F |
:101D3000BB2E10E0E5010894A11CB11C1D1510F488 |
:101D40007FDF01C08FEF88831F5F103498F336E781 |
:101D5000931609F0C9C0063409F03CC08FEFE816AD |
:101D60008BE1F80608F033C0CD2DA7016627772751 |
:101D7000440F551F661F771F6A017B01A2E6B0E082 |
:101D800011E08D9199272D913327322F2227822B15 |
:101D9000932B0C01FA0110935700E89511244E5F24 |
:101DA0005F4F6F4F7F4FC25061F785E0F601809320 |
:101DB0005700E89507B600FCFDCF81E180935700FE |
:101DC000E89576956795579547957A017FC080E0AD |
:101DD00033DF7CC0053409F079C0F7012D2DA2E670 |
:101DE000B0E0EEBB8F2F99278FBB8D918DBB3196C5 |
:101DF000E29AE19AE199FECF215099F77F0166C0FE |
:101E00008736B9F51DDF1CDFC82F1ADF863409F5C8 |
:101E1000C701AA27BB276C017D01CC0CDD1CEE1C81 |
:101E2000FF1CF60105911491802F06DF812F992761 |
:101E300003DF82E090E0A0E0B0E0C80ED91EEA1E09 |
:101E4000FB1EC25071F7F694E794D794C7947601BD |
:101E500049CF853409F046CFEEBA8F2D99278FBB35 |
:101E6000E09A0894E11CF11C8DB3E6DEC150A1F7A5 |
:101E700039CF853601F596E7991641F580E090E077 |
:101E8000A0E0B0E023E0FC0120935700E89507B6FE |
:101E900000FCFDCF805C9F4FAF4FBF4F8F3F3BE1BA |
:101EA000930730E0A30730E0B30768F381E1809344 |
:101EB0005700E8950BC0853459F488E190E02CE098 |
:101EC0000FB6F894A89581BD0FBE21BD8DE02BC043 |
:101ED0008035E1F38C34D1F3803711F483E523C0EE |
:101EE000843721F486E7A8DE80E01DC0843519F42C |
:101EF000A7DE982EEBCF8B3109F4F3CE8A3A09F4A2 |
:101F0000F0CE863521F480E397DE81E30CC0833781 |
:101F100031F487E091DE83E98FDE8EE104C08B31FE |
:0A1F200009F4E0CE8FE388DEDDCE89 |
:0400000300001C00DD |
:00000001FF |
/tags/V0.33/Doku/Bestueckt_BL-Ctrl_V1_1/BrushLess-Ctrl_V0_33_for_BL-Ctrl_V1_1.hex |
---|
0,0 → 1,331 |
:1000000012C0C3C62AC029C02CC72BC626C025C013 |
:1000100017C65AC522C083C320C0D7C21EC01DC088 |
:100020002AC7CAC61AC011241FBECFE5D4E0DEBF5E |
:10003000CDBF10E0A0E6B0E0EAE8F4E102C0059030 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92AF39B107E1F73CC1D2CF20918300A7 |
:1000600080916200821710F4282FAB9A8091810052 |
:1000700090918200893C910560F01BBC1ABC19BCB0 |
:1000800018BC13BCAB9A01979093820080938100B7 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C1092A3004398E9 |
:1000F00085E090E09093840080938300AFDFC0D7C9 |
:1001000088EC90E043D5C12FDD27D0938400C093C5 |
:100110008300EE24FF248701EA14FB040C051D056F |
:1001200078F480916700882311F459D201C0B2D4C9 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E07CD9A21AB2 |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F089D78091EF |
:10017000A5008F5F8093A5008091A50066E043D91C |
:100180009093A50014D5D0938400C093830066DFBC |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089580917B0090917C00892B09F08D |
:1001C0004EC04091790050917A004115510571F06F |
:1001D00090918E008FEF989FC001112468EC70E021 |
:1001E0001ED9709386006093850041C080919A006B |
:1001F000882341F120919C0030919D0081E02D32B7 |
:10020000380708F09A01293C310510F028EC30E05D |
:100210002B30310528F4509386004093850026C08A |
:100220008CEF90E0289FA001299F500D389F500D22 |
:100230001124CA01885D994064EB70E0F0D8CB01CD |
:10024000039610C08091850090918600009729F058 |
:1002500001979093860080938500AB9A08C08091A7 |
:10026000940399279093860080938500AB988091A2 |
:100270008500909186008F3F910539F030F08FEF27 |
:1002800090E0909386008093850080918500992767 |
:1002900008958091810090918200909384038093CF |
:1002A000830380917F009927909386038093850331 |
:1002B00080917000909171009093880380938703E0 |
:1002C00080919C0090919D0090938A038093890374 |
:1002D0000895CFE5D4E0DEBFCDBFEE2488E084BB37 |
:1002E00085BB8AEB81BBE2BA8EE087BB81E388BB2A |
:1002F00088B3806C88BBC3EFD1E0E297D7FFFDCF16 |
:10030000B69B06C0B79B02C081E007C082E005C073 |
:10031000B79B02C083E001C084E08093600087D374 |
:1003200018D47894C0E0D0E0809160009927C81775 |
:10033000D90709F4979A86E990E028D497988AEF2C |
:1003400090E024D42196C530D10574F384EF91E078 |
:100350001DD4A9DE80E528D566D485E690E002D4D8 |
:1003600086E690E0FFD387E690E0FCD3EC018EEFC9 |
:1003700090E0F8D35C018DEE93E0F4D38C018EEE27 |
:1003800093E0F0D36C01CE01F6D38823E1F3979A82 |
:10039000109284001092830061DE88E080BF81E0CB |
:1003A00087B98AE090E0DED3EC0181E090E09093A1 |
:1003B00086038093850310929D0010929C00FADEC4 |
:1003C000992790938400809383008091A5008E15D7 |
:1003D00051F0109263001092640082E390E0C2D367 |
:1003E000EC01E090A5008091830090918400892B1E |
:1003F000C9F41092740010926400C401BCD3882325 |
:10040000E1F01092A300439881E08093630082B3EF |
:10041000877C82BB82E08FBD81E485BD85B3817F0F |
:1004200085BB0BC080916300882319F081E0809325 |
:1004300074008CED95E096D34C0180916300882385 |
:1004400021F0109284001092830008DE80916400F5 |
:100450008F5F80936400813009F0B1CF8091630099 |
:100460008111979AC50187D3882339F182E390E0FF |
:1004700079D35C0180917F00482F5527209181001E |
:10048000309182004217530710F48F5F04C0241785 |
:10049000350718F4815080937F0080917F00909100 |
:1004A0006200893728F0915090936200AB9A05C0A2 |
:1004B0009F3F19F09F5F90936200C8015CD388232F |
:1004C00019F18AE090E04ED38C01209172003091B6 |
:1004D0007300C901880F991F880F991F820F931FFE |
:1004E000820F931F66E070E09AD77093710060935B |
:1004F0007000109273001092720080919A0088230D |
:1005000019F481E080936100C60135D3882321F07E |
:100510008CED95E027D36C01CE012DD3882331F0EB |
:100520008091700090917100892B29F08091740066 |
:10053000882309F444CF21E0F22EF0926300109258 |
:10054000A300439884E690E00DD3EC018091740001 |
:10055000882309F434CFAB98109274008AE0B4DD9C |
:10056000979A109263008091A50081508093A50016 |
:1005700081E090E090938400809383006FDD88B1E8 |
:100580008C7F88B9F092A30088B18A6088B984E131 |
:1005900090E0E8D2EC01CE01EED28823E1F38FE0C7 |
:1005A00090E0909384008093830058DD8CE291E08A |
:1005B000D9D2EC01CE01DFD28823E1F382E390E0CF |
:1005C000D1D28C0197E0E92EFACE1F920F920FB68E |
:1005D0000F9211240F900FBE0F901F9018955E9BE5 |
:1005E00024C0809167008823E1F480918F0090916E |
:1005F000900001969093900080938F00FC01E95544 |
:10060000FD4FE081ED3019F08436910539F41092F8 |
:10061000900010928F0081E080936700589AECB9A7 |
:1006200008951092900010928F0008951F93CF9319 |
:10063000DF93EC0110E0662309F460C0A22FBB2712 |
:100640001297E42FFF27E35FFC4F30813D534F5F4C |
:10065000E42FFF27E35FFC4F50815D534F5FE42F92 |
:10066000FF27E35FFC4F70817D534F5FE42FFF272F |
:10067000E35FFC4FE081ED534F5F842F9927A8176C |
:10068000B907E4F1832F9927880F991F880F991FC5 |
:10069000352F32953F70382B852F99278F709070AA |
:1006A00054E0880F991F5A95E1F7572F56955695A4 |
:1006B000582B872F99278370907026E0880F991FF9 |
:1006C0002A95E1F78E2B61506F3FC1F0FE01E10FDB |
:1006D000F11D30831F5F61506F3F81F0FE01E10F1C |
:1006E000F11D50831F5F61506F3F41F0FE01E10F2C |
:1006F000F11D80831F5F662309F0A3CFDF91CF91A7 |
:100700001F910895CF93C82F8A3011F48DE0FADF3E |
:100710005D9BFECFCCB980E090E0CF9108951F9211 |
:100720000F920FB60F9211242F933F934F935F9325 |
:100730006F937F938F939F93AF93BF93CF93DF93E9 |
:10074000EF93FF938CB180938D00409195004436D8 |
:1007500010F01092960050918D005D3009F064C049 |
:1007600080919600823009F05FC010929600A42F0D |
:10077000BB27A35FBC4FFD01329780812091910080 |
:1007800030919200281B3109ED0121978881281BA7 |
:100790003109C9019F70909392008093910066E0A7 |
:1007A000969587956A95E1F7982F935C90939300BF |
:1007B0002F733070235C209394008081981709F088 |
:1007C00082C08881281709F07EC0409387005C931F |
:1007D00080910F03823549F488E190E02CE00FB658 |
:1007E000F894A89581BD0FBE21BD80910F038ADFCB |
:1007F00080910F03843709F066C02091870043E0A1 |
:1008000064E088E890E012DF80916000E82FFF2725 |
:10081000E957FF4F808180938E0084EF91E09093A1 |
:100820007A00809379004FC020919600822F9927FB |
:1008300081309105F9F0823091051CF4892B21F06B |
:1008400040C0029711F13DC080918D00833239F490 |
:1008500080918C00882319F481E080939600809128 |
:100860008D0080930D0381E08093950080918D0031 |
:10087000992722C02F5F20939600E42FFF27E35F84 |
:10088000FC4F80918D00808309C0E42FFF27E35F38 |
:10089000FC4F80918D008083443620F44F5F40935D |
:1008A000950002C01092960020918D0080919100D9 |
:1008B00090919200820F911D9093920080939100ED |
:1008C00002C010929600FF91EF91DF91CF91BF91FE |
:1008D000AF919F918F917F916F915F914F913F91D8 |
:1008E0002F910F900FBE0F901F901895AC01A0E0B4 |
:1008F000B0E09D01A817B90748F4E7EAF2E081915A |
:10090000280F311D1196A417B507C8F33F70FD01DC |
:10091000E955FD4FC90176E0969587957A95E1F7FF |
:10092000835C80831196FD01E955FD4F2F73307074 |
:10093000822F835C8083A855BD4F8DE08C931092ED |
:1009400067008091A7028CB908951F93CF93DF931E |
:10095000382FEA01722F10E083E28093A7026093A0 |
:10096000A8023093A902A3E0B0E0772309F458C0AD |
:10097000772311F4972F07C0FE01E10FF11D1F5FD0 |
:100980009081715011F4472F0EC0FE01E10FF11D4F |
:100990001F5F4081715039F0FE01E10FF11D1F5FB3 |
:1009A0006081715001C0672FFD01E955FD4F892F0E |
:1009B00086958695835C80831196FD01E955FD4FF0 |
:1009C000892F99278370907024E0880F991F2A95AA |
:1009D000E1F755279A0194E0369527959A95E1F726 |
:1009E000822B835C80831196FD01E955FD4F4F708A |
:1009F0005070440F551F440F551F862F992726E02E |
:100A0000969587952A95E1F7842B835C80831196D0 |
:100A1000FD01E955FD4F6F73635C60831196A5CFAF |
:100A2000CD0164DFDF91CF911F910895089588E192 |
:100A30008AB9599A579A80E189B960E070E082E8F2 |
:100A400093E084D388EC90E08DD090930C03809356 |
:100A50000B038AE057DE82E455DE8CE453DE8AE342 |
:100A600051DE86E54FDE80E34DDE8EE24BDE83E332 |
:100A700049DE82E347DE8AE045DE81E443DE84E44A |
:100A800041DE82E53FDE8AE33DDE80916000805DED |
:100A900039DE089580910B0390910C036CD088236C |
:100AA00091F080916700882371F022E241E753E0E2 |
:100AB0006091A60284E449DF82E390E053D09093F2 |
:100AC0000C0380930B0308951F920F920FB60F92A1 |
:100AD00011248F939F93809193038F5F809393034F |
:100AE000809199008150809399008F3F59F583E060 |
:100AF000809399008091970090919800019690932F |
:100B000098008093970080917B0090917C000097E3 |
:100B100029F0019790937C0080937B0080919A004C |
:100B2000882329F080919A00815080939A008091C7 |
:100B3000790090917A00009729F0019790937A00BC |
:100B4000809379009F918F910F900FBE0F901F900F |
:100B5000189582E083BF89B7816089BF89B78064B7 |
:100B600089BF08952091970030919800280F391F70 |
:100B7000C901019708952091970030919800821B38 |
:100B8000930B892F9927807899270895CF93DF9326 |
:100B9000E9DFEC01CE01EFDF8823E1F3DF91CF91B4 |
:100BA000089586EA86B987E087B9369A089527B10D |
:100BB00096E097B910BE83ED86B9349A97B9369A04 |
:100BC000349BFECF27B944B155B1440F551F440F94 |
:100BD000551F493C510510F048EC50E02091810030 |
:100BE00030918200C90163E0880F991F6A95E1F78F |
:100BF000821B930B840F951F23E0969587952A956A |
:100C0000E1F7909382008093810020918000332748 |
:100C10002817390720F4809181008093800016B84E |
:100C200088E080BF08958EB5806C8EBD8EB58064DF |
:100C30008EBD89B7806289BF89B7846089BF0895F6 |
:100C40001F920F920FB60F9211248F9380919B00E9 |
:100C50008F5F80939B008F910F900FBE0F901F901E |
:100C600018951F920F920FB60F9211242F933F9356 |
:100C70008F939F930EB406FE0FC010929B0086B513 |
:100C800097B590939F0080939E008EB58F7B8EBD0D |
:100C900084E680939A0070C08EB580648EBD26B5C0 |
:100CA00037B580919E0090919F00281B390B809151 |
:100CB0009B009927982F8827990F280F391F689430 |
:100CC00014F8369527951694E1F73093A1002093F8 |
:100CD000A0002851314030F488E191E09093A100C8 |
:100CE0008093A0002091A0003091A10028513140B4 |
:100CF0003093A1002093A00080919C0090919D00D2 |
:100D00008217930730F480919C0090919D0001968A |
:100D10000CC080919C0090919D002817390748F4E1 |
:100D200080919C0090919D00019790939D008093ED |
:100D30009C0020919C0030919D00C901880F991F53 |
:100D4000880F991F880F991F821B930B2091A00079 |
:100D50003091A100820F931F23E0969587952A95E5 |
:100D6000E1F79093A1008093A00090939D00809361 |
:100D70009C0081E0809361009F918F913F912F9122 |
:100D80000F900FBE0F901F9018951F920F920FB6E5 |
:100D90000F9211248F938AB78F7B8ABF8F910F9008 |
:100DA0000FBE0F901F90189590916000990F980FAB |
:100DB00092B985EC86BF08951F920F920FB60F92DD |
:100DC00011248F939F9381B19927887F90708038E9 |
:100DD0009105E9F08138910534F40097B1F180363E |
:100DE000910579F035C0883B9105D9F0893B910593 |
:100DF00024F4883A9105A9F02BC0883F910511F1A0 |
:100E000027C086B7806886BF1092A20023C083B136 |
:100E10008093940384EF91E090937C0080937B0017 |
:100E20000EC09091A200992339F480917F0083B97C |
:100E30009F5F9093A20003C08091620083B986B740 |
:100E4000806807C086B7806986BF86B7806986BF1D |
:100E500085EC86BF9F918F910F900FBE0F901F90D2 |
:100E600018951F920F920FB60F9211240F900FBE7C |
:100E70000F901F9018951F920F920FB60F9211248A |
:100E80001F932F933F934F935F936F937F938F9312 |
:100E90009F93AF93BF93CF93EF93FF93459B02C074 |
:100EA00011E001C010E08091A500992782309105E2 |
:100EB00009F450C0833091052CF4009779F0019724 |
:100EC00039F1BFC08430910509F478C084309105B0 |
:100ED0000CF45AC0059709F48BC0B3C082EA8FBDE9 |
:100EE00081E685BD88E087BB112369F082B3877EE8 |
:100EF00082BB959AC1E0C4BD80916100811157DE2B |
:100F00004098C7B91BC082B3877D82BB949A99C0B1 |
:100F100082B3877E82BB959A1123B1F482EA8FBD9A |
:100F200081E485BD8CE087BB81E084BD8091610058 |
:100F300081113DDE17B988B1836088B98091A50021 |
:100F40008F5F8093A5006DC082EA8FBD81E685BD6D |
:100F500088E076C082EA8FBD81E485BD8CE087BBE6 |
:100F6000112369F082B38F7C82BB939A81E084BDA8 |
:100F70008091610081111BDE82E087B932C082B3AB |
:100F8000877E82BB959A5DC082B38F7C82BB939A29 |
:100F9000112371F482EA8FBD81E485BD8AE087BBAD |
:100FA000C1E0C4BD80916100811101DEC7B9C3CF2A |
:100FB00082EA8FBD81E485BD8CE042C082EA8FBDAC |
:100FC00081E485BD8AE087BB112369F082B3877D08 |
:100FD00082BB949A81E084BD809161008111E7DD3C |
:100FE00017B84098ABCF82B38F7C82BB939A29C04D |
:100FF00082B3877D82BB949A1123E9F482EA8FBD84 |
:1010000081E685BD88E087BB81E084BD8091610079 |
:101010008111CDDD82E087B988B1836088B91093F2 |
:10102000A5008091720090917300019690937300D7 |
:101030008093720006C082EA8FBD81E485BD8AE09C |
:1010400087BB459903C0112309F028CF459B03C0F6 |
:10105000112309F423CF10926100FF91EF91CF91FA |
:10106000BF91AF919F918F917F916F915F914F91C0 |
:101070003F912F911F910F900FBE0F901F901895C9 |
:101080008091A50099278230910551F18330910517 |
:101090002CF4009769F00197B9F008958430910518 |
:1010A000E1F1843091055CF1059709F443C008959E |
:1010B00082EA8FBD81E685BD88E087BB82B3877DEC |
:1010C00082BB949A82E034C082EA8FBD81E685BDFE |
:1010D00088E087BB82B3877E82BB959A81E01AC085 |
:1010E00082EA8FBD81E485BD8CE087BB82B3877EB9 |
:1010F00082BB959A17B888B1836088B9089582EA4F |
:101100008FBD81E485BD8CE087BB82B38F7C82BBC1 |
:10111000939A82E087B94098089582EA8FBD81E46E |
:1011200085BD8AE087BB82B38F7C82BB939A81E0C6 |
:1011300087B9E1CF82EA8FBD81E485BD8AE087BBB4 |
:1011400082B3877D82BB949A17B8E5CF0F931F9324 |
:10115000CF93DF938C01EB01009711F4672BB9F16A |
:101160006EE070E081E090E037D0FC01892B71F1F6 |
:1011700080E88383209771F0D387C28781E88383D7 |
:101180008091950390919603892B21F4F093960317 |
:10119000E093950301151105C9F01187008783813C |
:1011A000826083838091970390919803892B71F4D7 |
:1011B000F0939803E09397038091990390919A0399 |
:1011C000892B21F4F0939A03E0939903CF01DF91E7 |
:1011D000CF911F910F9108950F931F93CF93DF939A |
:1011E000869F8001879F100D969F100D1124C801C6 |
:1011F0000DD0EC01009721F0A80160E070E0FCD078 |
:10120000CE01DF91CF911F910F910895CF93DF937E |
:10121000AC01029710F442E050E020E030E0A091F1 |
:101220009D03B0919E03BD01F901109709F44CC0D4 |
:101230008D919C9111978417950731F148175907A3 |
:1012400038F42115310519F08217930708F49C0131 |
:10125000FD01A281B381109759F721153105A1F144 |
:10126000C901841B950B049708F4A901DB01E0E098 |
:10127000F0E0109749F18D919C9111978217930797 |
:10128000F9F44217530779F4ED018A819B81309775 |
:1012900019F09383828304C090939E0380939D03EF |
:1012A000CD0102964AC0241B350BFD01E20FF31F4E |
:1012B00041935193225030402D933C93CF013DC038 |
:1012C000FD01A281B381D5CF80919B0390919C03B6 |
:1012D000892B41F480916B0090916C0090939C035A |
:1012E00080939B03E0916900F0916A00309741F48C |
:1012F000EDB7FEB780916D0090916E00E81BF90B81 |
:10130000A0919B03B0919C039F012A1B3B0B2417C8 |
:10131000350788F0CA0102962817390760F0CD0119 |
:10132000840F951F029690939C0380939B034D938B |
:101330005D93CD0102C080E090E0DF91CF910895F0 |
:10134000CF93DF93009709F454C0DC011297ED01AD |
:101350001B821A8280919D0390919E03009721F138 |
:10136000FC0140E050E0EA17FB0718F1ED01FB83B8 |
:10137000EA832D913C911197C20FD31FCE010296A3 |
:101380008E179F0771F48A819B81280F391F2E5F6A |
:101390003F4F11963C932E9382819381FD0193835D |
:1013A00082834115510559F4B0939E03A0939D0388 |
:1013B00020C0AF010280F381E02D3097A1F6EA0151 |
:1013C000BB83AA83CA01029628813981820F931FA9 |
:1013D0008A179B0771F48D919C911197280F391FE3 |
:1013E0002E5F3F4F39832883FD01828193819B8348 |
:1013F0008A83DF91CF910895DC0101C06D93415044 |
:101400005040E0F70895991B79E004C0991F9617A2 |
:1014100008F0961B881F7A95C9F780950895AA1B36 |
:10142000BB1B51E107C0AA1FBB1FA617B70710F0CF |
:10143000A61BB70B881F991F5A95A9F78095909501 |
:10144000BC01CD010895A1E21A2EAA1BBB1BFD0110 |
:101450000DC0AA1FBB1FEE1FFF1FA217B307E40793 |
:10146000F50720F0A21BB30BE40BF50B661F771FEB |
:10147000881F991F1A9469F76095709580959095CB |
:0A1480009B01AC01BD01CF010895EE |
:10148A000101FF01010A00016400009F032000001E |
:00000001FF |
/tags/V0.33/Doku/Selbstbau_BL-Ctrl/BootLoader_MEGA8_8MHZ_V0_1.hex |
---|
0,0 → 1,53 |
:101C000011241FBECFE5D4E0DEBFCDBF10E0A0E6BB |
:101C1000B0E0EAE2FFE102C005900D92A036B10704 |
:101C2000D9F710E0A0E6B0E001C01D92A23AB107DA |
:101C3000E1F714C000C008955D9BFECF8CB90895F4 |
:101C40005F9BFECF8CB1992708958DE4F5DF8BE47F |
:101C5000F3DF82E4F1DF8CE4EFDF0895CFE5D4E039 |
:101C6000DEBFCDBFE0E0F0E004917F01992490BC9D |
:101C700080E189B9599A88E18AB986E880BDEF0187 |
:101C8000192D5F9B0BC0113029F48CB18A3A49F1B0 |
:101C900010E004C08CB18B3109F411E0CE01219623 |
:101CA00084369105C8F00F3F41F0002331F0E091F8 |
:101CB0006000F091610009950FC08AE0BDDF8DE002 |
:101CC000BBDF86E5B9DF80E3B7DF8EE2B5DF81E316 |
:101CD000B3DF8AE3B1DF05C080E29EE40197F1F74C |
:101CE000D0CFB3DFADDF813611F489E51CC181347B |
:101CF00061F4A6DFE82EFF24FE2CEE24A1DF992755 |
:101D0000E82AF92AF694E794E1C0823631F489E5AD |
:101D100093DF80E091DF80E406C1823409F070C077 |
:101D20008FDF8EDFD82E8CDF082FB2E6AB2EB0E02F |
:101D3000BB2E10E0E5010894A11CB11C1D1510F488 |
:101D40007FDF01C08FEF88831F5F103498F336E781 |
:101D5000931609F0C9C0063409F03CC08FEFE816AD |
:101D60008BE1F80608F033C0CD2DA7016627772751 |
:101D7000440F551F661F771F6A017B01A2E6B0E082 |
:101D800011E08D9199272D913327322F2227822B15 |
:101D9000932B0C01FA0110935700E89511244E5F24 |
:101DA0005F4F6F4F7F4FC25061F785E0F601809320 |
:101DB0005700E89507B600FCFDCF81E180935700FE |
:101DC000E89576956795579547957A017FC080E0AD |
:101DD00033DF7CC0053409F079C0F7012D2DA2E670 |
:101DE000B0E0EEBB8F2F99278FBB8D918DBB3196C5 |
:101DF000E29AE19AE199FECF215099F77F0166C0FE |
:101E00008736B9F51DDF1CDFC82F1ADF863409F5C8 |
:101E1000C701AA27BB276C017D01CC0CDD1CEE1C81 |
:101E2000FF1CF60105911491802F06DF812F992761 |
:101E300003DF82E090E0A0E0B0E0C80ED91EEA1E09 |
:101E4000FB1EC25071F7F694E794D794C7947601BD |
:101E500049CF853409F046CFEEBA8F2D99278FBB35 |
:101E6000E09A0894E11CF11C8DB3E6DEC150A1F7A5 |
:101E700039CF853601F596E7991641F580E090E077 |
:101E8000A0E0B0E023E0FC0120935700E89507B6FE |
:101E900000FCFDCF805C9F4FAF4FBF4F8F3F3BE1BA |
:101EA000930730E0A30730E0B30768F381E1809344 |
:101EB0005700E8950BC0853459F488E190E02CE098 |
:101EC0000FB6F894A89581BD0FBE21BD8DE02BC043 |
:101ED0008035E1F38C34D1F3803711F483E523C0EE |
:101EE000843721F486E7A8DE80E01DC0843519F42C |
:101EF000A7DE982EEBCF8B3109F4F3CE8A3A09F4A2 |
:101F0000F0CE863521F480E397DE81E30CC0833781 |
:101F100031F487E091DE83E98FDE8EE104C08B31FE |
:0A1F200009F4E0CE8FE388DEDDCE89 |
:0400000300001C00DD |
:00000001FF |
/tags/V0.33/Doku/Selbstbau_BL-Ctrl/Fuses_Mega8_8MHZ_Intern_MIT_Bootloader.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.33/Doku/Selbstbau_BL-Ctrl/Fuses_Mega8_8MHZ_Intern_OHNE_Bootloader.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.33/Doku/Selbstbau_BL-Ctrl/SET_BrushLess-Ctrl_V0_33_Adr_1-4.zip |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.33/Doku/Selbstbau_BL-Ctrl/SET_BrushLess-Ctrl_V0_33_Adr_1-4_10A.zip |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.33/Doku/Selbstbau_BL-Ctrl/Test_Manuell_BL-Ctrl_V0_32.hex |
---|
0,0 → 1,330 |
:1000000012C0B9C62AC029C022C721C626C025C031 |
:100010000DC650C522C079C320C0CDC21EC01DC0B0 |
:1000200020C7C0C61AC011241FBECFE5D4E0DEBF72 |
:10003000CDBF10E0A0E6B0E0E6E7F4E102C0059035 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92AF39B107E1F736C1D2CF20918300AD |
:1000600080916200821710F4282FAB9A8091810052 |
:1000700090918200893C910560F01BBC1ABC19BCB0 |
:1000800018BC13BCAB9A01979093820080938100B7 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F9CE221 |
:1000E000A92E91E0B92EC12CD12C1092A3004398D7 |
:1000F00085E090E09093840080938300AFDFB6D7D3 |
:1001000088EC90E039D5C12FDD27D0938400C093CF |
:100110008300EE24FF248701EA14FB040C051D056F |
:1001200078F480916700882311F44FD201C0A8D4DD |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E072D9A21ABC |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D10428F489E1A82EBC |
:10017000B12CC12CD12C7AD78091A5008F5F8093B0 |
:10018000A5008091A50066E034D99093A50005D51F |
:10019000D0938400C093830061DF449BBACF82B3C5 |
:1001A00090E8892782BBB5CF80917B0090917C003D |
:1001B000892B09F04EC04091790050917A00411589 |
:1001C000510571F090918E008FEF989FC00111241E |
:1001D00068EC70E01AD9709386006093850041C086 |
:1001E00080919A00882341F120919C0030919D00DC |
:1001F00081E02D32380708F09A01293C310510F0D2 |
:1002000028EC30E02B30310528F4509386004093E1 |
:10021000850026C08CEF90E0289FA001299F500DFB |
:10022000389F500D1124CA01885D994064EB70E03D |
:10023000ECD8CB01039610C0809185009091860088 |
:10024000009729F001979093860080938500AB9AE0 |
:1002500008C080919403992790938600809385002D |
:10026000AB9880918500909186008F3F910539F081 |
:1002700030F08FEF90E0909386008093850080911E |
:100280008500992708958091810090918200909334 |
:1002900084038093830380917F0099279093860342 |
:1002A00080938503809170009091710090938803F2 |
:1002B0008093870380919C0090919D0090938A0386 |
:1002C000809389030895CFE5D4E0DEBFCDBF00E081 |
:1002D00088E084BB85BB8AEB81BB80E882BB8EE073 |
:1002E00087BB81E388BB88B3806C88BBB69B06C0A4 |
:1002F000B79B02C081E007C082E005C0B79B02C087 |
:1003000083E001C084E08093600087D318D47894A0 |
:10031000C0E0D0E0809160009927C817D90709F4A0 |
:10032000979A86E990E028D497988AEF90E024D4B1 |
:100330002196C530D10574F384EF91E01DD4B3DE6E |
:1003400080E528D566D485E690E002D486E690E084 |
:10035000FFD387E690E0FCD3EC018EEF90E0F8D37A |
:100360005C018DEE93E0F4D37C018EEE93E0F0D34C |
:100370006C01CE01F6D38823E1F3979A10928400A2 |
:10038000109283006BDE88E080BF11E017B98AE02D |
:1003900090E0DED3EC0181E090E0909386038093BF |
:1003A000850310929D0010929C00812F8DDEFCDE53 |
:1003B000992790938400809383008091A5008017F3 |
:1003C00051F0109263001092640082E390E0C0D379 |
:1003D000EC010091A5008091830090918400892B0D |
:1003E000C9F41092740010926400C401BAD3882337 |
:1003F000E1F01092A300439881E08093630082B300 |
:10040000877C82BB82E08FBD81E485BD85B3817F1F |
:1004100085BB0BC080916300882319F081E0809335 |
:1004200074008CED95E094D34C0180916300882397 |
:1004300021F0109284001092830010DE80916400FD |
:100440008F5F80936400813009F0B1CF80916300A9 |
:100450008111979AC50185D3882339F182E390E011 |
:1004600077D35C0180917F00482F55272091810030 |
:10047000309182004217530710F48F5F04C0241795 |
:10048000350718F4815080937F0080917F00909110 |
:100490006200893728F0915090936200AB9A05C0B2 |
:1004A0009F3F19F09F5F90936200C7015AD3882342 |
:1004B00019F18AE090E04CD37C01209172003091D8 |
:1004C0007300C901880F991F880F991F820F931F0E |
:1004D000820F931F66E070E098D77093710060936D |
:1004E0007000109273001092720080919A0088231D |
:1004F00019F481E080936100C60133D3882321F091 |
:100500008CED95E025D36C01CE012BD3882331F0FF |
:100510008091700090917100892B29F08091740076 |
:10052000882309F444CF11E0109363001092A300D4 |
:10053000439884E690E00CD3EC018091740088230A |
:1005400009F435CFAB98109274008AE0BDDD979A1C |
:10055000109263008091A50081508093A50081E0F6 |
:1005600090E0909384008093830078DD88B18C7F45 |
:1005700088B91093A30088B18A6088B984E690E0B6 |
:10058000E7D2EC01CE01EDD28823E1F38AE090E0DE |
:10059000909384008093830061DD88EC90E0D8D252 |
:1005A000EC01CE01DED28823E1F382E390E0D0D2E9 |
:1005B0007C0107E0FCCE1F920F920FB60F92112420 |
:1005C0000F900FBE0F901F9018955E9B24C08091D6 |
:1005D00067008823E1F480918F009091900001964C |
:1005E0009093900080938F00FC01E955FD4FE081CE |
:1005F000ED3019F08436910539F410929000109284 |
:100600008F0081E080936700589AECB908951092AA |
:10061000900010928F0008951F93CF93DF93EC0109 |
:1006200010E0662309F460C0A22FBB271297E42FC5 |
:10063000FF27E35FFC4F30813D534F5FE42FFF27DF |
:10064000E35FFC4F50815D534F5FE42FFF27E35F73 |
:10065000FC4F70817D534F5FE42FFF27E35FFC4F1A |
:10066000E081ED534F5F842F9927A817B907E4F174 |
:10067000832F9927880F991F880F991F352F32953F |
:100680003F70382B852F99278F70907054E0880F1A |
:10069000991F5A95E1F7572F56955695582B872F46 |
:1006A00099278370907026E0880F991F2A95E1F7AB |
:1006B0008E2B61506F3FC1F0FE01E10FF11D3083C1 |
:1006C0001F5F61506F3F81F0FE01E10FF11D50830C |
:1006D0001F5F61506F3F41F0FE01E10FF11D80830C |
:1006E0001F5F662309F0A3CFDF91CF911F9108957B |
:1006F000CF93C82F8A3011F48DE0FADF5D9BFECFD7 |
:10070000CCB980E090E0CF9108951F920F920FB680 |
:100710000F9211242F933F934F935F936F937F9387 |
:100720008F939F93AF93BF93CF93DF93EF93FF93F9 |
:100730008CB180938D0040919500443610F010925A |
:10074000960050918D005D3009F064C08091960054 |
:10075000823009F05FC010929600A42FBB27A35FE0 |
:10076000BC4FFD0132978081209191003091920021 |
:10077000281B3109ED0121978881281B3109C90106 |
:100780009F70909392008093910066E09695879574 |
:100790006A95E1F7982F935C909393002F733070D4 |
:1007A000235C209394008081981709F082C088818F |
:1007B000281709F07EC0409387005C9380910F0357 |
:1007C000823549F488E190E02CE00FB6F894A895C2 |
:1007D00081BD0FBE21BD80910F038ADF80910F0381 |
:1007E000843709F066C02091870043E064E088E820 |
:1007F00090E012DF80916000E82FFF27E957FF4F5C |
:10080000808180938E0084EF91E090937A008093B2 |
:1008100079004FC020919600822F99278130910551 |
:10082000F9F0823091051CF4892B21F040C0029729 |
:1008300011F13DC080918D00833239F480918C009C |
:10084000882319F481E08093960080918D00809335 |
:100850000D0381E08093950080918D00992722C03F |
:100860002F5F20939600E42FFF27E35FFC4F8091DA |
:100870008D00808309C0E42FFF27E35FFC4F809148 |
:100880008D008083443620F44F5F4093950002C072 |
:100890001092960020918D0080919100909192008D |
:1008A000820F911D909392008093910002C010924C |
:1008B0009600FF91EF91DF91CF91BF91AF919F9102 |
:1008C0008F917F916F915F914F913F912F910F90F9 |
:1008D0000FBE0F901F901895AC01A0E0B0E09D01F5 |
:1008E000A817B90748F4E7EAF2E08191280F311D13 |
:1008F0001196A417B507C8F33F70FD01E955FD4FE8 |
:10090000C90176E0969587957A95E1F7835C8083B7 |
:100910001196FD01E955FD4F2F733070822F835CD6 |
:100920008083A855BD4F8DE08C9310926700809115 |
:10093000A7028CB908951F93CF93DF93382FEA0154 |
:10094000722F10E083E28093A7026093A802309395 |
:10095000A902A3E0B0E0772309F458C0772311F48B |
:10096000972F07C0FE01E10FF11D1F5F90817150AD |
:1009700011F4472F0EC0FE01E10FF11D1F5F4081F2 |
:10098000715039F0FE01E10FF11D1F5F6081715060 |
:1009900001C0672FFD01E955FD4F892F869586958A |
:1009A000835C80831196FD01E955FD4F892F9927BE |
:1009B0008370907024E0880F991F2A95E1F75527DE |
:1009C0009A0194E0369527959A95E1F7822B835CFE |
:1009D00080831196FD01E955FD4F4F705070440F13 |
:1009E000551F440F551F862F992726E0969587950A |
:1009F0002A95E1F7842B835C80831196FD01E955EC |
:100A0000FD4F6F73635C60831196A5CFCD0164DFEA |
:100A1000DF91CF911F910895089588E18AB9599A7D |
:100A2000579A80E189B960E070E088E793E084D369 |
:100A300088EC90E08DD090930C0380930B038AE0B8 |
:100A400057DE82E455DE8CE453DE8AE351DE86E530 |
:100A50004FDE80E34DDE8EE24BDE83E349DE82E350 |
:100A600047DE8AE045DE81E443DE84E441DE82E560 |
:100A70003FDE8AE33DDE80916000805D39DE0895CF |
:100A800080910B0390910C036CD0882391F080919E |
:100A90006700882371F022E241E753E06091A602EB |
:100AA00084E449DF82E390E053D090930C03809379 |
:100AB0000B0308951F920F920FB60F9211248F937C |
:100AC0009F93809193038F5F80939303809199000C |
:100AD0008150809399008F3F59F583E0809399006E |
:100AE0008091970090919800019690939800809340 |
:100AF000970080917B0090917C00009729F00197EE |
:100B000090937C0080937B0080919A00882329F049 |
:100B100080919A00815080939A0080917900909101 |
:100B20007A00009729F0019790937A0080937900DA |
:100B30009F918F910F900FBE0F901F90189582E09C |
:100B400083BF89B7816089BF89B7806489BF0895F1 |
:100B50002091970030919800280F391FC901019703 |
:100B600008952091970030919800821B930B892F54 |
:100B70009927807899270895CF93DF93E9DFEC01D7 |
:100B8000CE01EFDF8823E1F3DF91CF91089586EA6C |
:100B900086B987E087B9369A089527B196E097B964 |
:100BA00010BE83ED86B9349A97B9369A349BFECF3E |
:100BB00027B944B155B1440F551F440F551F493C47 |
:100BC000510510F048EC50E02091810030918200F6 |
:100BD000C90163E0880F991F6A95E1F7821B930BA7 |
:100BE000840F951F23E0969587952A95E1F79093BA |
:100BF00082008093810020918000332728173907D5 |
:100C000020F4809181008093800016B888E080BF36 |
:100C100008958EB5806C8EBD8EB580648EBD89B70B |
:100C2000806289BF89B7846089BF08951F920F923F |
:100C30000FB60F9211248F9380919B008F5F80934A |
:100C40009B008F910F900FBE0F901F9018951F92D1 |
:100C50000F920FB60F9211242F933F938F939F9370 |
:100C60000EB406FE0FC010929B0086B597B5909308 |
:100C70009F0080939E008EB58F7B8EBD84E680930F |
:100C80009A0070C08EB580648EBD26B537B5809150 |
:100C90009E0090919F00281B390B80919B00992703 |
:100CA000982F8827990F280F391F689414F83695C4 |
:100CB00027951694E1F73093A1002093A0002851C6 |
:100CC000314030F488E191E09093A1008093A0003E |
:100CD0002091A0003091A100285131403093A10013 |
:100CE0002093A00080919C0090919D008217930713 |
:100CF00030F480919C0090919D0001960CC08091F1 |
:100D00009C0090919D002817390748F480919C0021 |
:100D100090919D00019790939D0080939C0020915D |
:100D20009C0030919D00C901880F991F880F991F61 |
:100D3000880F991F821B930B2091A0003091A10076 |
:100D4000820F931F23E0969587952A95E1F790935C |
:100D5000A1008093A00090939D0080939C0081E06F |
:100D6000809361009F918F913F912F910F900FBEC3 |
:100D70000F901F9018951F920F920FB60F9211248B |
:100D80008F938AB78F7B8ABF8F910F900FBE0F9082 |
:100D90001F90189590916000990F980F92B985EC6B |
:100DA00086BF08951F920F920FB60F9211248F9352 |
:100DB0009F9381B19927887F907080389105E9F0E1 |
:100DC0008138910534F40097B1F18036910579F0BE |
:100DD00035C0883B9105D9F0893B910524F4883AC8 |
:100DE0009105A9F02BC0883F910511F127C086B766 |
:100DF000806886BF1092A20023C083B180939403C1 |
:100E000084EF91E090937C0080937B000EC09091E2 |
:100E1000A200992339F480917F0083B99F5F90935A |
:100E2000A20003C08091620083B986B7806807C0C2 |
:100E300086B7806986BF86B7806986BF85EC86BF26 |
:100E40009F918F910F900FBE0F901F9018951F923A |
:100E50000F920FB60F9211240F900FBE0F901F909C |
:100E600018951F920F920FB60F9211241F932F9374 |
:100E70003F934F935F936F937F938F939F93AF9322 |
:100E8000BF93CF93EF93FF93459B02C011E001C046 |
:100E900010E08091A50099278230910509F450C097 |
:100EA000833091052CF4009779F0019739F1BFC098 |
:100EB0008430910509F478C0843091050CF45AC04F |
:100EC000059709F48BC0B3C082EA8FBD81E685BD6A |
:100ED00088E087BB112369F082B3877E82BB959A35 |
:100EE000C1E0C4BD80916100811157DE4098C7B94F |
:100EF0001BC082B3877D82BB949A99C082B3877EE0 |
:100F000082BB959A1123B1F482EA8FBD81E485BD3D |
:100F10008CE087BB81E084BD8091610081113DDE62 |
:100F200017B988B1836088B98091A5008F5F8093DD |
:100F3000A5006DC082EA8FBD81E685BD88E076C0E0 |
:100F400082EA8FBD81E485BD8CE087BB112369F007 |
:100F500082B38F7C82BB939A81E084BD80916100D3 |
:100F600081111BDE82E087B932C082B3877E82BBEB |
:100F7000959A5DC082B38F7C82BB939A112371F4E2 |
:100F800082EA8FBD81E485BD8AE087BBC1E0C4BD34 |
:100F900080916100811101DEC7B9C3CF82EA8FBDA4 |
:100FA00081E485BD8CE042C082EA8FBD81E485BDCD |
:100FB0008AE087BB112369F082B3877D82BB949A54 |
:100FC00081E084BD809161008111E7DD17B8409810 |
:100FD000ABCF82B38F7C82BB939A29C082B3877DCB |
:100FE00082BB949A1123E9F482EA8FBD81E685BD24 |
:100FF00088E087BB81E084BD809161008111CDDDF7 |
:1010000082E087B988B1836088B91093A500809188 |
:101010007200909173000196909373008093720018 |
:1010200006C082EA8FBD81E485BD8AE087BB459911 |
:1010300003C0112309F028CF459B03C0112309F4F5 |
:1010400023CF10926100FF91EF91CF91BF91AF91AB |
:101050009F918F917F916F915F914F913F912F91D0 |
:101060001F910F900FBE0F901F9018958091A500B3 |
:1010700099278230910551F1833091052CF4009726 |
:1010800069F00197B9F0089584309105E1F1843059 |
:1010900091055CF1059709F443C0089582EA8FBD7C |
:1010A00081E685BD88E087BB82B3877D82BB949A49 |
:1010B00082E034C082EA8FBD81E685BD88E087BBCF |
:1010C00082B3877E82BB959A81E01AC082EA8FBD87 |
:1010D00081E485BD8CE087BB82B3877E82BB959A15 |
:1010E00017B888B1836088B9089582EA8FBD81E41A |
:1010F00085BD8CE087BB82B38F7C82BB939A82E0F4 |
:1011000087B94098089582EA8FBD81E485BD8AE061 |
:1011100087BB82B38F7C82BB939A81E087B9E1CF92 |
:1011200082EA8FBD81E485BD8AE087BB82B3877D7B |
:1011300082BB949A17B8E5CF0F931F93CF93DF9399 |
:101140008C01EB01009711F4672BB9F16EE070E0B0 |
:1011500081E090E037D0FC01892B71F180E8838336 |
:10116000209771F0D387C28781E8838380919503AC |
:1011700090919603892B21F4F0939603E0939503C5 |
:1011800001151105C9F0118700878381826083836F |
:101190008091970390919803892B71F4F0939803B1 |
:1011A000E09397038091990390919A03892B21F4FE |
:1011B000F0939A03E0939903CF01DF91CF911F91B0 |
:1011C0000F9108950F931F93CF93DF93869F800114 |
:1011D000879F100D969F100D1124C8010DD0EC01B2 |
:1011E000009721F0A80160E070E0FCD0CE01DF9113 |
:1011F000CF911F910F910895CF93DF93AC01029788 |
:1012000010F442E050E020E030E0A0919D03B09166 |
:101210009E03BD01F901109709F44CC08D919C917A |
:1012200011978417950731F14817590738F421159C |
:10123000310519F08217930708F49C01FD01A28182 |
:10124000B381109759F721153105A1F1C901841B0C |
:10125000950B049708F4A901DB01E0E0F0E010979A |
:1012600049F18D919C91119782179307F9F44217D8 |
:10127000530779F4ED018A819B81309719F09383AC |
:10128000828304C090939E0380939D03CD010296B8 |
:101290004AC0241B350BFD01E20FF31F419351930C |
:1012A000225030402D933C93CF013DC0FD01A281DF |
:1012B000B381D5CF80919B0390919C03892B41F4FE |
:1012C00080916B0090916C0090939C0380939B03A2 |
:1012D000E0916900F0916A00309741F4EDB7FEB7F4 |
:1012E00080916D0090916E00E81BF90BA0919B031B |
:1012F000B0919C039F012A1B3B0B2417350788F0F4 |
:10130000CA0102962817390760F0CD01840F951F96 |
:10131000029690939C0380939B034D935D93CD0124 |
:1013200002C080E090E0DF91CF910895CF93DF93EA |
:10133000009709F454C0DC011297ED011B821A8258 |
:1013400080919D0390919E03009721F1FC0140E064 |
:1013500050E0EA17FB0718F1ED01FB83EA832D91BA |
:101360003C911197C20FD31FCE0102968E179F0793 |
:1013700071F48A819B81280F391F2E5F3F4F119690 |
:101380003C932E9382819381FD0193838283411547 |
:10139000510559F4B0939E03A0939D0320C0AF0163 |
:1013A0000280F381E02D3097A1F6EA01BB83AA8386 |
:1013B000CA01029628813981820F931F8A179B07E1 |
:1013C00071F48D919C911197280F391F2E5F3F4F1B |
:1013D00039832883FD01828193819B838A83DF91F6 |
:1013E000CF910895DC0101C06D9341505040E0F76A |
:1013F0000895991B79E004C0991F961708F0961B71 |
:10140000881F7A95C9F780950895AA1BBB1B51E1E7 |
:1014100007C0AA1FBB1FA617B70710F0A61BB70B64 |
:10142000881F991F5A95A9F780959095BC01CD0109 |
:101430000895A1E21A2EAA1BBB1BFD010DC0AA1F15 |
:10144000BB1FEE1FFF1FA217B307E407F50720F02D |
:10145000A21BB30BE40BF50B661F771F881F991FA8 |
:101460001A9469F760957095809590959B01AC01F1 |
:06147000BD01CF0108954B |
:101476000101FF01010A00016400009F0320000032 |
:00000001FF |
/tags/V0.33/Doku/Selbstbau_BL-Ctrl/Test_Schub_BrushLess-Ctrl_V0_32.hex |
---|
0,0 → 1,333 |
:1000000012C0D3C62AC029C03CC73BC626C025C0E3 |
:1000100027C66AC522C093C320C0E7C21EC01DC048 |
:100020003AC7DAC61AC011241FBECFE5D4E0DEBF3E |
:10003000CDBF10E0A0E6B0E0EAEAF4E102C005902E |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92AF39B107E1F731C1D2CF20918300B2 |
:1000600080916200821710F4282FAB9A8091810052 |
:1000700090918200893C910560F01BBC1ABC19BCB0 |
:1000800018BC13BCAB9A01979093820080938100B7 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C1092A3004398E9 |
:1000F00085E090E09093840080938300AFDFD0D7B9 |
:1001000088EC90E053D5C12FDD27D0938400C093B5 |
:100110008300EE24FF248701EA14FB040C051D056F |
:1001200078F480916700882311F469D201C0C2D4A9 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E08CD9A21AA2 |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F099D78091DF |
:10017000A5008F5F8093A5008091A50066E053D90C |
:100180009093A50024D5D0938400C093830066DFAC |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089580917B0090917C00892B09F08D |
:1001C00043C04091790050917A004115510571F07A |
:1001D00090918E008FEF989FC001112468EC70E021 |
:1001E0002ED9709386006093850036C080919A0066 |
:1001F000882341F120919C0030919D0081E02D32B7 |
:10020000380708F09A01293C310510F028EC30E05D |
:100210002B30310528F450938600409385001BC095 |
:100220008CEF90E0289FA001299F500D389F500D22 |
:100230001124CA01885D994064EB70E000D9CB01BC |
:10024000039605C0AB9A08C08091940399279093B8 |
:10025000860080938500AB98809185009091860000 |
:100260008F3F910539F030F08FEF90E0909386004A |
:100270008093850080918500992708958091810061 |
:1002800090918200909384038093830380917F00F8 |
:1002900099279093860380938503809170009091B5 |
:1002A0007100909388038093870380919C009091C4 |
:1002B0009D0090938A03809389030895CFE5D4E04D |
:1002C000DEBFCDBFCC2488E084BB85BB8AEB81BB7D |
:1002D00080E882BB8EE087BB81E388BB88B3806CFB |
:1002E00088BBB69B06C0B79B02C081E007C082E016 |
:1002F00005C0B79B02C083E001C084E0809360002A |
:10030000A6D337D47894C0E0D0E0809160009927DC |
:10031000C817D90709F4979A86E990E047D49798C7 |
:100320008AEF90E043D42196C530D10574F3C5E03F |
:10033000D0E084EF91E03AD4B6DE80E545D583D4B1 |
:1003400085E690E01FD486E690E01CD487E690E036 |
:1003500019D48C018EEF90E015D44C018DEE93E012 |
:1003600011D47C018EEE93E00DD45C01C80113D44E |
:100370008823E1F3979A10928400109283006EDE36 |
:1003800088E080BF81E087B98AE090E0FBD38C01F0 |
:1003900081E090E0909386038093850310929D0006 |
:1003A00010929C008091A5008C1551F01092630072 |
:1003B0001092640082E390E0E5D38C01C090A50028 |
:1003C0008091830090918400892BC9F4109274006D |
:1003D00010926400C301DFD38823E1F01092A300E0 |
:1003E000439881E08093630082B3877C82BB82E084 |
:1003F0008FBD81E485BD85B3817F85BB0BC08091B6 |
:100400006300882319F081E0809374008CED95E0FF |
:10041000B9D33C0123DE809164008F5F8093640038 |
:10042000813009F0BFCF809163008111979AC40198 |
:10043000B2D3882339F182E390E0A4D34C018091B8 |
:100440007F00482F5527209181003091820042176C |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937F0080917F0090916200893728F00F |
:10047000915090936200AB9A05C09F3F19F09F5F27 |
:1004800090936200C70187D3882319F18AE090E036 |
:1004900079D37C012091720030917300C901880FDB |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E0C5D770937100609370001092730064 |
:1004C0001092720080919A00882319F481E0809341 |
:1004D0006100C50160D3882379F18CED95E052D39A |
:1004E0005C01C230D105A9F0C330D10534F42097A6 |
:1004F00051F0C130D10551F01DC0C330D10561F0BC |
:10050000249791F017C082E390E008C082E890E061 |
:1005100005C08CE390E002C08CE890E090938400EA |
:1005200080938300219608C086E990E09093840030 |
:1005300080938300C0E0D0E0C8012DD3882331F040 |
:100540008091700090917100892B29F08091740046 |
:10055000882309F427CF21E0D22ED0926300109295 |
:10056000A300439884E690E00DD38C018091740041 |
:10057000882309F417CFAB98109274008AE0A4DDA9 |
:10058000979A109263008091A50081508093A500F6 |
:1005900081E090E090938400809383005FDD88B1D8 |
:1005A0008C7F88B9D092A30088B18A6088B984E62C |
:1005B00090E0E8D28C01C801EED28823E1F38AE012 |
:1005C00090E0909384008093830048DD88EC90E075 |
:1005D000D9D28C01C801DFD28823E1F382E390E015 |
:1005E000D1D27C0197E0C92EDDCE1F920F920FB6BB |
:1005F0000F9211240F900FBE0F901F9018955E9BC5 |
:1006000024C0809167008823E1F480918F0090914D |
:10061000900001969093900080938F00FC01E95523 |
:10062000FD4FE081ED3019F08436910539F41092D8 |
:10063000900010928F0081E080936700589AECB987 |
:1006400008951092900010928F0008951F93CF93F9 |
:10065000DF93EC0110E0662309F460C0A22FBB27F2 |
:100660001297E42FFF27E35FFC4F30813D534F5F2C |
:10067000E42FFF27E35FFC4F50815D534F5FE42F72 |
:10068000FF27E35FFC4F70817D534F5FE42FFF270F |
:10069000E35FFC4FE081ED534F5F842F9927A8174C |
:1006A000B907E4F1832F9927880F991F880F991FA5 |
:1006B000352F32953F70382B852F99278F7090708A |
:1006C00054E0880F991F5A95E1F7572F5695569584 |
:1006D000582B872F99278370907026E0880F991FD9 |
:1006E0002A95E1F78E2B61506F3FC1F0FE01E10FBB |
:1006F000F11D30831F5F61506F3F81F0FE01E10FFC |
:10070000F11D50831F5F61506F3F41F0FE01E10F0B |
:10071000F11D80831F5F662309F0A3CFDF91CF9186 |
:100720001F910895CF93C82F8A3011F48DE0FADF1E |
:100730005D9BFECFCCB980E090E0CF9108951F92F1 |
:100740000F920FB60F9211242F933F934F935F9305 |
:100750006F937F938F939F93AF93BF93CF93DF93C9 |
:10076000EF93FF938CB180938D00409195004436B8 |
:1007700010F01092960050918D005D3009F064C029 |
:1007800080919600823009F05FC010929600A42FED |
:10079000BB27A35FBC4FFD01329780812091910060 |
:1007A00030919200281B3109ED0121978881281B87 |
:1007B0003109C9019F70909392008093910066E087 |
:1007C000969587956A95E1F7982F935C909393009F |
:1007D0002F733070235C209394008081981709F068 |
:1007E00082C08881281709F07EC0409387005C93FF |
:1007F00080910F03823549F488E190E02CE00FB638 |
:10080000F894A89581BD0FBE21BD80910F038ADFAA |
:1008100080910F03843709F066C02091870043E080 |
:1008200064E088E890E012DF80916000E82FFF2705 |
:10083000E957FF4F808180938E0084EF91E0909381 |
:100840007A00809379004FC020919600822F9927DB |
:1008500081309105F9F0823091051CF4892B21F04B |
:1008600040C0029711F13DC080918D00833239F470 |
:1008700080918C00882319F481E080939600809108 |
:100880008D0080930D0381E08093950080918D0011 |
:10089000992722C02F5F20939600E42FFF27E35F64 |
:1008A000FC4F80918D00808309C0E42FFF27E35F18 |
:1008B000FC4F80918D008083443620F44F5F40933D |
:1008C000950002C01092960020918D0080919100B9 |
:1008D00090919200820F911D9093920080939100CD |
:1008E00002C010929600FF91EF91DF91CF91BF91DE |
:1008F000AF919F918F917F916F915F914F913F91B8 |
:100900002F910F900FBE0F901F901895AC01A0E093 |
:10091000B0E09D01A817B90748F4E7EAF2E0819139 |
:10092000280F311D1196A417B507C8F33F70FD01BC |
:10093000E955FD4FC90176E0969587957A95E1F7DF |
:10094000835C80831196FD01E955FD4F2F73307054 |
:10095000822F835C8083A855BD4F8DE08C931092CD |
:1009600067008091A7028CB908951F93CF93DF93FE |
:10097000382FEA01722F10E083E28093A702609380 |
:10098000A8023093A902A3E0B0E0772309F458C08D |
:10099000772311F4972F07C0FE01E10FF11D1F5FB0 |
:1009A0009081715011F4472F0EC0FE01E10FF11D2F |
:1009B0001F5F4081715039F0FE01E10FF11D1F5F93 |
:1009C0006081715001C0672FFD01E955FD4F892FEE |
:1009D00086958695835C80831196FD01E955FD4FD0 |
:1009E000892F99278370907024E0880F991F2A958A |
:1009F000E1F755279A0194E0369527959A95E1F706 |
:100A0000822B835C80831196FD01E955FD4F4F7069 |
:100A10005070440F551F440F551F862F992726E00D |
:100A2000969587952A95E1F7842B835C80831196B0 |
:100A3000FD01E955FD4F6F73635C60831196A5CF8F |
:100A4000CD0164DFDF91CF911F910895089588E172 |
:100A50008AB9599A579A80E189B960E070E082E9D1 |
:100A600093E084D388EC90E08DD090930C03809336 |
:100A70000B038AE057DE82E455DE8CE453DE8AE322 |
:100A800051DE86E54FDE80E34DDE8EE24BDE83E312 |
:100A900049DE82E347DE8AE045DE81E443DE84E42A |
:100AA00041DE82E53FDE8AE33DDE80916000805DCD |
:100AB00039DE089580910B0390910C036CD088234C |
:100AC00091F080916700882371F022E241E753E0C2 |
:100AD0006091A60284E449DF82E390E053D09093D2 |
:100AE0000C0380930B0308951F920F920FB60F9281 |
:100AF00011248F939F93809193038F5F809393032F |
:100B0000809199008150809399008F3F59F583E03F |
:100B1000809399008091970090919800019690930E |
:100B200098008093970080917B0090917C000097C3 |
:100B300029F0019790937C0080937B0080919A002C |
:100B4000882329F080919A00815080939A008091A7 |
:100B5000790090917A00009729F0019790937A009C |
:100B6000809379009F918F910F900FBE0F901F90EF |
:100B7000189582E083BF89B7816089BF89B7806497 |
:100B800089BF08952091970030919800280F391F50 |
:100B9000C901019708952091970030919800821B18 |
:100BA000930B892F9927807899270895CF93DF9306 |
:100BB000E9DFEC01CE01EFDF8823E1F3DF91CF9194 |
:100BC000089586EA86B987E087B9369A089527B1ED |
:100BD00096E097B910BE83ED86B9349A97B9369AE4 |
:100BE000349BFECF27B944B155B1440F551F440F74 |
:100BF000551F493C510510F048EC50E02091810010 |
:100C000030918200C90163E0880F991F6A95E1F76E |
:100C1000821B930B840F951F23E0969587952A9549 |
:100C2000E1F7909382008093810020918000332728 |
:100C30002817390720F4809181008093800016B82E |
:100C400088E080BF08958EB5806C8EBD8EB58064BF |
:100C50008EBD89B7806289BF89B7846089BF0895D6 |
:100C60001F920F920FB60F9211248F9380919B00C9 |
:100C70008F5F80939B008F910F900FBE0F901F90FE |
:100C800018951F920F920FB60F9211242F933F9336 |
:100C90008F939F930EB406FE0FC010929B0086B5F3 |
:100CA00097B590939F0080939E008EB58F7B8EBDED |
:100CB00084E680939A0070C08EB580648EBD26B5A0 |
:100CC00037B580919E0090919F00281B390B809131 |
:100CD0009B009927982F8827990F280F391F689410 |
:100CE00014F8369527951694E1F73093A1002093D8 |
:100CF000A0002851314030F488E191E09093A100A8 |
:100D00008093A0002091A0003091A1002851314093 |
:100D10003093A1002093A00080919C0090919D00B1 |
:100D20008217930730F480919C0090919D0001966A |
:100D30000CC080919C0090919D002817390748F4C1 |
:100D400080919C0090919D00019790939D008093CD |
:100D50009C0020919C0030919D00C901880F991F33 |
:100D6000880F991F880F991F821B930B2091A00059 |
:100D70003091A100820F931F23E0969587952A95C5 |
:100D8000E1F79093A1008093A00090939D00809341 |
:100D90009C0081E0809361009F918F913F912F9102 |
:100DA0000F900FBE0F901F9018951F920F920FB6C5 |
:100DB0000F9211248F938AB78F7B8ABF8F910F90E8 |
:100DC0000FBE0F901F90189590916000990F980F8B |
:100DD00092B985EC86BF08951F920F920FB60F92BD |
:100DE00011248F939F9381B19927887F90708038C9 |
:100DF0009105E9F08138910534F40097B1F180361E |
:100E0000910579F035C0883B9105D9F0893B910572 |
:100E100024F4883A9105A9F02BC0883F910511F17F |
:100E200027C086B7806886BF1092A20023C083B116 |
:100E30008093940384EF91E090937C0080937B00F7 |
:100E40000EC09091A200992339F480917F0083B95C |
:100E50009F5F9093A20003C08091620083B986B720 |
:100E6000806807C086B7806986BF86B7806986BFFD |
:100E700085EC86BF9F918F910F900FBE0F901F90B2 |
:100E800018951F920F920FB60F9211240F900FBE5C |
:100E90000F901F9018951F920F920FB60F9211246A |
:100EA0001F932F933F934F935F936F937F938F93F2 |
:100EB0009F93AF93BF93CF93EF93FF93459B02C054 |
:100EC00011E001C010E08091A500992782309105C2 |
:100ED00009F450C0833091052CF4009779F0019704 |
:100EE00039F1BFC08430910509F478C08430910590 |
:100EF0000CF45AC0059709F48BC0B3C082EA8FBDC9 |
:100F000081E685BD88E087BB112369F082B3877EC7 |
:100F100082BB959AC1E0C4BD80916100811157DE0A |
:100F20004098C7B91BC082B3877D82BB949A99C091 |
:100F300082B3877E82BB959A1123B1F482EA8FBD7A |
:100F400081E485BD8CE087BB81E084BD8091610038 |
:100F500081113DDE17B988B1836088B98091A50001 |
:100F60008F5F8093A5006DC082EA8FBD81E685BD4D |
:100F700088E076C082EA8FBD81E485BD8CE087BBC6 |
:100F8000112369F082B38F7C82BB939A81E084BD88 |
:100F90008091610081111BDE82E087B932C082B38B |
:100FA000877E82BB959A5DC082B38F7C82BB939A09 |
:100FB000112371F482EA8FBD81E485BD8AE087BB8D |
:100FC000C1E0C4BD80916100811101DEC7B9C3CF0A |
:100FD00082EA8FBD81E485BD8CE042C082EA8FBD8C |
:100FE00081E485BD8AE087BB112369F082B3877DE8 |
:100FF00082BB949A81E084BD809161008111E7DD1C |
:1010000017B84098ABCF82B38F7C82BB939A29C02C |
:1010100082B3877D82BB949A1123E9F482EA8FBD63 |
:1010200081E685BD88E087BB81E084BD8091610059 |
:101030008111CDDD82E087B988B1836088B91093D2 |
:10104000A5008091720090917300019690937300B7 |
:101050008093720006C082EA8FBD81E485BD8AE07C |
:1010600087BB459903C0112309F028CF459B03C0D6 |
:10107000112309F423CF10926100FF91EF91CF91DA |
:10108000BF91AF919F918F917F916F915F914F91A0 |
:101090003F912F911F910F900FBE0F901F901895A9 |
:1010A0008091A50099278230910551F183309105F7 |
:1010B0002CF4009769F00197B9F0089584309105F8 |
:1010C000E1F1843091055CF1059709F443C008957E |
:1010D00082EA8FBD81E685BD88E087BB82B3877DCC |
:1010E00082BB949A82E034C082EA8FBD81E685BDDE |
:1010F00088E087BB82B3877E82BB959A81E01AC065 |
:1011000082EA8FBD81E485BD8CE087BB82B3877E98 |
:1011100082BB959A17B888B1836088B9089582EA2E |
:101120008FBD81E485BD8CE087BB82B38F7C82BBA1 |
:10113000939A82E087B94098089582EA8FBD81E44E |
:1011400085BD8AE087BB82B38F7C82BB939A81E0A6 |
:1011500087B9E1CF82EA8FBD81E485BD8AE087BB94 |
:1011600082B3877D82BB949A17B8E5CF0F931F9304 |
:10117000CF93DF938C01EB01009711F4672BB9F14A |
:101180006EE070E081E090E037D0FC01892B71F1D6 |
:1011900080E88383209771F0D387C28781E88383B7 |
:1011A0008091950390919603892B21F4F0939603F7 |
:1011B000E093950301151105C9F01187008783811C |
:1011C000826083838091970390919803892B71F4B7 |
:1011D000F0939803E09397038091990390919A0379 |
:1011E000892B21F4F0939A03E0939903CF01DF91C7 |
:1011F000CF911F910F9108950F931F93CF93DF937A |
:10120000869F8001879F100D969F100D1124C801A5 |
:101210000DD0EC01009721F0A80160E070E0FCD057 |
:10122000CE01DF91CF911F910F910895CF93DF935E |
:10123000AC01029710F442E050E020E030E0A091D1 |
:101240009D03B0919E03BD01F901109709F44CC0B4 |
:101250008D919C9111978417950731F14817590783 |
:1012600038F42115310519F08217930708F49C0111 |
:10127000FD01A281B381109759F721153105A1F124 |
:10128000C901841B950B049708F4A901DB01E0E078 |
:10129000F0E0109749F18D919C9111978217930777 |
:1012A000F9F44217530779F4ED018A819B81309755 |
:1012B00019F09383828304C090939E0380939D03CF |
:1012C000CD0102964AC0241B350BFD01E20FF31F2E |
:1012D00041935193225030402D933C93CF013DC018 |
:1012E000FD01A281B381D5CF80919B0390919C0396 |
:1012F000892B41F480916B0090916C0090939C033A |
:1013000080939B03E0916900F0916A00309741F46B |
:10131000EDB7FEB780916D0090916E00E81BF90B60 |
:10132000A0919B03B0919C039F012A1B3B0B2417A8 |
:10133000350788F0CA0102962817390760F0CD01F9 |
:10134000840F951F029690939C0380939B034D936B |
:101350005D93CD0102C080E090E0DF91CF910895D0 |
:10136000CF93DF93009709F454C0DC011297ED018D |
:101370001B821A8280919D0390919E03009721F118 |
:10138000FC0140E050E0EA17FB0718F1ED01FB8398 |
:10139000EA832D913C911197C20FD31FCE01029683 |
:1013A0008E179F0771F48A819B81280F391F2E5F4A |
:1013B0003F4F11963C932E9382819381FD0193833D |
:1013C00082834115510559F4B0939E03A0939D0368 |
:1013D00020C0AF010280F381E02D3097A1F6EA0131 |
:1013E000BB83AA83CA01029628813981820F931F89 |
:1013F0008A179B0771F48D919C911197280F391FC3 |
:101400002E5F3F4F39832883FD01828193819B8327 |
:101410008A83DF91CF910895DC0101C06D93415023 |
:101420005040E0F70895991B79E004C0991F961782 |
:1014300008F0961B881F7A95C9F780950895AA1B16 |
:10144000BB1B51E107C0AA1FBB1FA617B70710F0AF |
:10145000A61BB70B881F991F5A95A9F780959095E1 |
:10146000BC01CD010895A1E21A2EAA1BBB1BFD01F0 |
:101470000DC0AA1FBB1FEE1FFF1FA217B307E40773 |
:10148000F50720F0A21BB30BE40BF50B661F771FCB |
:10149000881F991F1A9469F76095709580959095AB |
:0A14A0009B01AC01BD01CF010895CE |
:1014AA000101FF01010A00016400009F03200000FE |
:00000001FF |
/tags/V0.33/Doku/_BL_Ctrl_History.txt |
---|
0,0 → 1,41 |
+++++++++++++++++++++++++++++++++++ |
Brushless-Control |
Holger Buss |
buss@Mikrocontroller.com |
+++++++++++++++++++++++++++++++++++ |
V0.21 13.01.2007 |
- Erste offizielle Version |
- Unterstützt I2C und PPM |
V0.23 |
- Bei niedrigen PWM-Werten, kam es am Motor zu einem "Knackgeräusch" (besonders in der 16kHz-Variante). |
- Manchmal reagierte der Regler nicht gleich auf das PPM-Einschalt-Signal, wenn der Regler länger auf 0% war |
- Die Kommutierungserkennung läuft jetzt im Interrupt |
- Komponenten zur Drehzahlregelung wieder entfernt, weil sie den Code unleserlich machten |
Kommt in einer späteren Version wahrscheinlich wieder rein |
V0.25 |
- Es wurden zu viele Kommutierungs-Interrupts ausgelöst |
V0.27 02.02.2007 |
- X3D-Protokoll implementiert (für eine Sonderversion des X3D mit serieller Ausgabe) |
V0.31 22.2.2007 |
- Das I2C-Bus Protokoll wurde geändert: |
Jeder Motor wird jetzt mit einem eigenen Datensatz angesprochen |
Aus den Motorreglern kann jetzt Strom und MaxPWM ausgelesen werden |
- Es hatte sich ein Fehler in der Umrechnung des seriellen Wertes (X-3D) eingeschlichen; das ist hier behoben |
Mittels eines PC-Programms (SimTxData.exe) kann das X-3D-Protokoll simuliert und so die Motoren angefahren werden |
V0.32 22.8.2007 - IB |
- Serielle Empfangsroutine eingefügt |
es wird das Resetkommando für ein Bootloader-Update ausgeführt |
- Timerabfragen korrigiert (Wiederanlauf) |
- Versionsausgabe beim Start |
- Screenshot für PonyProg aktualisert (jetzt mit 2,7V Brownout) |
- Adress-Jumper auf BL-Ctrl-Platine V1.1 wird ausgewertet (#define MOTORADRESSE dann auf 0) ! |
- Ausgabe der aktuellen Adresse (seriell) |
V0.33 18.9.2007 - HB |
- Zeitverzögerung bei Lesen der Adresse (für BL-Ctrl V1.1) |
/tags/V0.33/Doku/_Files.txt |
---|
0,0 → 1,19 |
Dateien: |
-------- |
BrushLess-Ctrl_V0_33_for_BL-Ctrl_V1_1.hex --> Hexfile für BL-Ctrl V1.1 |
BootLoader_MEGA8_8MHZ_Vx_y.hex --> Bootloader für BL-Ctrl (Fusebits beachten !) |
BrushLess-Ctrl_ADR_Vx_xx.hex --> Software für ADR=Motorposition(1 bis 4) |
BrushLess-Ctrl_ADR_Vx_xx_10A.hex --> Software für ADR=Motorposition(1 bis 4) 10A-Stromgrenze |
Testprogramme (Achtung: Motor läuft an!) |
----------------------------------------- |
Test_Manuell_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft ungeregelt mit fester Frequenz |
Test_Schub_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft mit unterschiedlichen Leistungen |
Test_Sollwert_Fix_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft fix mit 7,8% PWM |
Sonstiges: |
---------- |
Fuses_Mega8_8MHZ_*.gif --> Fusebits von Ponyprog (mit und ohne Bootloader) |
/tags/V0.33/PPM_Decode.c |
---|
0,0 → 1,76 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned int PPM_Signal = 0; |
volatile unsigned char Timer1Overflow = 0; |
volatile unsigned char PPM_Timeout = 0; // Ungültig, wenn Null |
//############################################################################ |
// |
void InitPPM(void) |
//############################################################################ |
{ |
TCCR1B |= (1<<ICES1)|(1<<ICNC1); |
ICP_POS_FLANKE; |
ICP_INT_ENABLE; |
TIMER1_INT_ENABLE; |
} |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW1) |
//############################################################################ |
{ |
Timer1Overflow++; |
} |
//############################################################################ |
// |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int tim_alt; |
static unsigned int ppm; |
if(TCCR1B & (1<<ICES1)) // Positive Flanke |
{ |
Timer1Overflow = 0; |
tim_alt = ICR1; |
ICP_NEG_FLANKE; |
PPM_Timeout = 100; |
} |
else // Negative Flanke |
{ |
ICP_POS_FLANKE; |
#ifdef _32KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 32; |
#endif |
#ifdef _16KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 32; |
#endif |
if(ppm < 280) ppm = 280; |
ppm -= 280; |
if(PPM_Signal < ppm) PPM_Signal++; |
else if(PPM_Signal > ppm) PPM_Signal--; |
if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern |
PPM_Signal = ppm; |
ZeitZumAdWandeln = 1; |
} |
} |
//############################################################################ |
// |
SIGNAL(SIG_INTERRUPT0) |
//############################################################################ |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
} |
/tags/V0.33/PPM_Decode.h |
---|
0,0 → 1,27 |
/*############################################################################ |
############################################################################*/ |
extern volatile unsigned int PPM_Signal; |
extern volatile unsigned char PPM_Timeout; |
void InitPPM(void); |
#define INT0_ENABLE GIMSK |= 0x40 |
#define INT0_DISABLE GIMSK &= ~0x40 |
#define TIM0_START TIMSK |= 0x01 |
#define TIM0_STOPP TIMSK &= ~0x01 |
#define ICP_INT_ENABLE TIMSK |= 0x20 |
#define ICP_INT_DISABLE TIMSK &= ~0x20 |
#define TIMER1_INT_ENABLE TIMSK |= 0x04 |
#define TIMER1_INT_DISABLE TIMSK &= ~0x04 |
#define TIMER2_INT_ENABLE TIMSK |= 0x40 |
#define TIMER2_INT_DISABLE TIMSK &= ~0x40 |
#define INT0_POS_FLANKE MCUCR |= 0x01 |
#define INT0_ANY_FLANKE MCUCR |= 0x01 |
#define INT0_NEG_FLANKE MCUCR &= ~0x01 |
#define CLR_INT0_FLAG GIFR &= ~0x40 |
#define INIT_INT0_FLANKE MCUCR &= ~0x03; MCUCR |= 0x02; |
#define TIMER0_PRESCALER TCCR0 |
#define ICP_POS_FLANKE TCCR1B |= (1<<ICES1) |
#define ICP_NEG_FLANKE TCCR1B &= ~(1<<ICES1) |
/tags/V0.33/analog.c |
---|
0,0 → 1,40 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
//############################################################################ |
//Init ADC |
void ADC_Init(void) |
//############################################################################ |
{ |
ADCSRA = 0xA6; // Free Run & 1MHZ |
ADMUX = 7; // Kanal 7 |
ADCSRA |= 0x40; // Start |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void AdConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = 0x06; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = 0x06; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
i = ADCW * 4; |
if(i > 200) i = 200; |
Strom = (i + Strom * 7) / 8; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
/tags/V0.33/analog.h |
---|
0,0 → 1,5 |
extern void ADC_Init(void); |
extern void GetAnalogWerte(void); |
extern void AdConvert(void); |
/tags/V0.33/avr.mak |
---|
0,0 → 1,129 |
# TASKING EDE (Windows based integrated Embedded Development Environment) |
# |
# This makefile has been generated by TASKING EDE |
# |
# Toolchain: TASKING C for C166/ST10 v6.0 r4 |
# |
BINDIR = c:\c166\bin |
INCDIR = c:\c166\include |
LIBDIR = c:\c166\lib |
M166INC = c:\c166\include |
export M166INC |
CC166BIN = c:\c166\bin |
export CC166BIN |
PROJ = avr |
PROJDIR = c:\winavr\projects\flug\bl_mc_0_14 |
PRODDIR = c:\c166 |
OUTDIR = |
OPT_CC = -Ic:\c166\include -xmifp -Ms -FFSC -Ot -OB -OE -zautobitastruct-4 -zautobita-0 -zswitch_tabmem_default -s -wstrict -g -zvolatile_union -A1 -O1 |
OPT_MPP = DEF(_CPU,167) DEF(_EXT,1) DEF(__XPEN,0) DEF(__WRCFG,0) DEF(__CLKEN,0) DEF(__BYTDIS,0) DEF(__ROMEN,0) DEF(__RDYEN0,0) DEF(__SGTDIS,0) DEF(__STKSZ,0) DEF(__MCTC,1) DEF(__RWDC0,0) DEF(__MTTC0,0) DEF(__ALECTL0,0) DEF(__BUSACT0,1) DEF(__RDYEN0,0) DEF(__CSREN0,0) DEF(__CSWEN0,0) DEF(__BUSACT1,0) DEF(__BUSACT2,0) DEF(__BUSACT3,0) DEF(__BUSACT4,0) DEF(EVA,1) DEF(EX_AB,0) DEF(FLOAT,1) DEF(BIT_INIT,0) DEF(MODEL,SMALL) DEF(_USRSTACK,0) DEF(_SINGLE_FP,0) WA(1) |
OPT_AS = PL(60) PW(132) TA(8) WA(1) CHECKCPU16 CHECKBUS18 EX NOM166 SN(reg167.def) |
OPT_LC = _avr.ilo -cf -Ms -xmifp |
OPT_XVW = --single_instance -tcfg sim167.cfg -i -a 100 -b 200 -c 32 -s 26 |
all : "$(PROJ).abs" |
"uart.src" : "uart.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"uart.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "uart.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"uart.obj" : "uart.src" |
"c:\c166\bin\a166.exe" "uart.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"analog.src" : "analog.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"analog.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "analog.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"analog.obj" : "analog.src" |
"c:\c166\bin\a166.exe" "analog.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"interrupt4.src" : "interrupt4.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"interrupt4.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "interrupt4.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"interrupt4.obj" : "interrupt4.src" |
"c:\c166\bin\a166.exe" "interrupt4.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"main.src" : "main.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"main.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "main.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"main.obj" : "main.src" |
"c:\c166\bin\a166.exe" "main.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"ppm_decode.src" : "ppm_decode.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"ppm_decode.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "ppm_decode.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"ppm_decode.obj" : "ppm_decode.src" |
"c:\c166\bin\a166.exe" "ppm_decode.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"printf_p.src" : "printf_p.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"printf_p.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "printf_p.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"printf_p.obj" : "printf_p.src" |
"c:\c166\bin\a166.exe" "printf_p.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"timer0.src" : "timer0.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"timer0.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "timer0.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"timer0.obj" : "timer0.src" |
"c:\c166\bin\a166.exe" "timer0.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"twislave.src" : "twislave.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"twislave.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "twislave.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"twislave.obj" : "twislave.src" |
"c:\c166\bin\a166.exe" "twislave.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"$(PROJ).out" : "uart.obj" "analog.obj" "interrupt4.obj" "main.obj" "ppm_decode.obj" |
"$(PROJ).out" : "printf_p.obj" "timer0.obj" "twislave.obj" "_avr.ilo" |
"c:\c166\bin\cc166.exe" -o $@ -f <<EOF |
${separate "\n" $(match .obj $!) $(match .lno $!) $(match .lib $!) $(OPT_LC)} |
EOF |
"$(PROJ).abs" : "$(PROJ).out" |
"c:\c166\bin\ieee166.exe" $! $@ |
# Copyright (c) 2001 Altium, Ltd. |
# Serial: 979910-094 |
# EDE Version: 2.7 r5 |
/tags/V0.33/avr.opm |
---|
0,0 → 1,4 |
-G "C:\WinAVR\Projects\Flug\BL_MC_0_14\" |
-err "avr.err" |
-r |
-f "avr.mak" |
/tags/V0.33/avr_ctrl.psp |
---|
0,0 → 1,18 |
;Codewright Project Space File (do not remove or modify this line) |
[State] |
StateWindowFrame=10,18,939,1018,0x43097fca |
_StateHistory=PROJECTS,'..\Flight-Ctrl_V0_05\AVR.pjt','.\avr.pjt' |
_RestoreProject='.\avr.pjt' |
ProjSpaceFlags=0x00000000, 1 |
ProjViewSetShow=Abcccccbcccccc |
[Project] |
ConfigSetUserWorkspace='' |
ConfigSetUserWorkspaceParser='' |
ConfigSetUserWorkspaceTimeStamp=0 |
ConfigSetUserWorkspaceAutoSync=0 |
[Project.".\avr.pjt"] |
[Project."..\Flight-Ctrl_V0_05\AVR.pjt"] |
/tags/V0.33/main.c |
---|
0,0 → 1,368 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
/############################################################################*/ |
#include "main.h" |
unsigned int PWM = 0; |
unsigned int Strom = 0; //ca. in 0,1A |
unsigned char Strom_max = 0; |
unsigned char Mittelstrom = 0; |
unsigned int Drehzahl = 0; // in 100UPM 60 = 6000 |
unsigned int KommutierDelay = 10; |
unsigned int I2C_Timeout = 0; |
unsigned int SIO_Timeout = 0; |
unsigned int SollDrehzahl = 0; |
unsigned int IstDrehzahl = 0; |
unsigned int DrehZahlTabelle[256];//vorberechnete Werte zur Drehzahlerfassung |
unsigned char ZeitFuerBerechnungen = 1; |
unsigned char MotorAnwerfen = 0; |
unsigned char MotorGestoppt = 1; |
unsigned char MaxPWM = MAX_PWM; |
unsigned int CntKommutierungen = 0; |
unsigned int SIO_Drehzahl = 0; |
unsigned char ZeitZumAdWandeln = 1; |
unsigned char MotorAdresse = 1; |
//############################################################################ |
// |
void SetPWM(void) |
//############################################################################ |
{ |
unsigned char tmp_pwm; |
tmp_pwm = PWM; |
if(tmp_pwm > MaxPWM) // Strombegrenzung |
{ |
tmp_pwm = MaxPWM; |
PORTC |= ROT; |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
PORTC |= ROT; |
Strom--; |
} |
else |
{ |
#ifdef _32KHZ |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
#ifdef _16KHZ |
OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
#endif |
} |
} |
//############################################################################ |
// |
void PWM_Init(void) |
//############################################################################ |
{ |
PWM_OFF; |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
} |
//############################################################################ |
// |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
while((TCNT0 - dauer) & 0x80); |
} |
//############################################################################ |
// |
void Anwerfen(unsigned char pwm) |
//############################################################################ |
{ |
unsigned long timer = 300,i; |
DISABLE_SENSE_INT; |
PWM = 5; |
SetPWM(); |
Manuell(); |
Delay_ms(200); |
PWM = pwm; |
while(1) |
{ |
for(i=0;i<timer; i++) |
{ |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
Wait(100); // warten |
} |
timer-= timer/15+1; |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return; } |
Manuell(); |
Phase++; |
Phase %= 6; |
AdConvert(); |
PWM = pwm; |
SetPWM(); |
if(SENSE) |
{ |
PORTD ^= GRUEN; |
} |
} |
} |
//############################################################################ |
// |
unsigned char SollwertErmittlung(void) |
//############################################################################ |
{ |
static unsigned int sollwert = 0; |
unsigned int ppm; |
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
} |
else |
if(PPM_Timeout) // es gibt gültige PPM-Daten |
{ |
ppm = PPM_Signal; |
if(ppm > 300) ppm = 0; // ungültiges Signal |
if(ppm > 200) ppm = 200; |
if(ppm <= MIN_PPM) sollwert = 0; |
else |
{ |
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM); |
} |
PORTC &= ~ROT; |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
PORTC |= ROT; |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
PORTC &= ~ROT; |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
return(sollwert); |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
char altPhase = 0; |
int test = 0; |
unsigned int MinUpmPulse,Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
DDRC = 0x08; |
PORTC = 0x08; |
DDRD = 0xBA; |
PORTD = 0x00; |
DDRB = 0x0E; |
PORTB = 0x31; |
#if (MOTORADRESSE == 0) |
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl |
for(test=0;test<500;test++); |
if (PINB & ADR1) |
{ |
if (PINB & ADR2) MotorAdresse = 1; |
else MotorAdresse = 2; |
} |
else |
{ |
if (PINB & ADR2) MotorAdresse = 3; |
else MotorAdresse = 4; |
} |
#else |
MotorAdresse = MOTORADRESSE; |
#endif |
UART_Init(); |
Timer0_Init(); |
sei ();//Globale Interrupts Einschalten |
// Am Blinken erkennt man die richtige Motoradresse |
for(test=0;test<5;test++) |
{ |
if(test == MotorAdresse) PORTD |= GRUEN; |
Delay_ms(150); |
PORTD &= ~GRUEN; |
Delay_ms(250); |
} |
Delay_ms(500); |
// UART_Init(); // war doppelt |
PWM_Init(); |
InitIC2_Slave(0x50); |
InitPPM(); |
Blink = SetDelay(101); |
Blink2 = SetDelay(102); |
MinUpmPulse = SetDelay(103); |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)); |
PORTD |= GRUEN; |
PWM = 0; |
SetPWM(); |
SFIOR = 0x08; // Analog Comperator ein |
ADMUX = 1; |
MinUpmPulse = SetDelay(10); |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung |
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder |
while (1) |
{ |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt |
{ |
MotorGestoppt = 0; |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
MinUpmPulse = SetDelay(50); // Timeout, falls ein Motor stehen bleibt |
altPhase = Phase; |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!PWM) // Sollwert == 0 |
{ |
MotorAnwerfen = 0; // kein Startversuch |
ZeitFuerBerechnungen = 0; |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(MotorGestopptTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
STEUER_OFF; |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
MotorGestopptTimer = SetDelay(1500); |
} |
if(MotorGestoppt && !TEST_SCHUB) PWM = 0; |
SetPWM(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
{ |
if(MotorGestoppt) PORTD |= GRUEN; //else PORTD &= ~GRUEN; |
if(SIO_DEBUG) |
{ |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
} |
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung |
if(CheckDelay(MittelstromTimer)) |
{ |
MittelstromTimer = SetDelay(50); // alle 50ms |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
else if(Mittelstrom > Strom) Mittelstrom--; |
if(Mittelstrom > LIMIT_STROM)// Strom am Limit? |
{ |
MaxPWM--;// dann die Maximale PWM herunterfahren |
PORTC |= ROT; |
} |
else |
{ |
if(MaxPWM < MAX_PWM) MaxPWM++; |
} |
} |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
{ |
DrehzahlMessTimer = SetDelay(10); |
SIO_Drehzahl = (6 * CntKommutierungen) / (POLANZAHL / 2); |
CntKommutierungen = 0; |
if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
} |
if(CheckDelay(TestschubTimer)) |
{ |
TestschubTimer = SetDelay(1500); |
if(TEST_SCHUB) |
{ |
switch(test) |
{ |
case 0: PWM = 50; test++; break; |
case 1: PWM = 130; test++; break; |
case 2: PWM = 60; test++; break; |
case 3: PWM = 140; test++; break; |
case 4: PWM = 150; test = 0; break; |
default: test = 0; |
} |
} |
} |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
{ |
MotorGestoppt = 1; |
DISABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
if(MotorAnwerfen) |
{ |
PORTC &= ~ROT; |
MotorAnwerfen = 0; |
Anwerfen(10); |
PORTD |= GRUEN; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(20); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 15; |
SetPWM(); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)); // kurz Durchstarten |
// Drehzahlmessung wieder aufsetzen |
DrehzahlMessTimer = SetDelay(50); |
altPhase = 7; |
} |
} |
} // ZeitFuerBerechnungen |
} // while(1) - Hauptschleife |
} |
/tags/V0.33/main.elf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.33/main.h |
---|
0,0 → 1,137 |
#ifndef _MAIN_H |
#define _MAIN_H |
#define MOTORADRESSE 0 // Adresse (1-4) 0 = Motoradresse über Lötjumper auf BL-Ctrl V1.1 |
#define MANUELL_PWM 0 // zur manuellen Vorgabe der PWM Werte: 0-255 |
#define TEST_MANUELL 0 // zum Testen der Hardware ohne Kommutierungsdetektion Werte: 0-255 (PWM) |
#define TEST_SCHUB 0 // Erzeugt ein Schubmuster Werte: 0 = normal 1 = Test |
#define POLANZAHL 12 // Anzahl der Pole (Magnete) Wird nur zur Drehzahlausgabe über Debug gebraucht |
#define MAX_PWM 255 |
#define MIN_PWM 3 |
#define MIN_PPM 10 // ab hier (PPM-Signal) schaltet der Regler erst ein |
#define FILTER_PPM 7 // wie stark soll das PPM-Signal gefiltert werden (Werte: 0-30)? |
#define SIO_DEBUG 0 // Testwertausgaben auf der seriellen Schnittstelle |
#define X3D_SIO 0 // serielles Protokoll des X3D (38400Bd) Achtung: dann muss SIO_DEBUG = 0 sein |
#define _16KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define _32KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
#define FDD6637_IRLR7843 1 // bessere MosFet bestückt? bewirkt höhere Stromgrenzen |
#ifdef _16KHZ |
#ifdef FDD6637_IRLR7843 // bessere Fets = mehr Strom zulassen |
#define MAX_STROM 200 // ab ca. 20A PWM ausschalten |
#define LIMIT_STROM 120 // ab ca. 12A PWM begrenzen |
#else |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 65 // ab ca. 6,5A PWM begrenzen |
#endif |
#endif |
#ifdef _32KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 50 // ab ca. 5,0A PWM begrenzen |
#endif |
#define SYSCLK 8000000L //Quarz Frequenz in Hz |
//Robbe Roxxy 2824-34 mit Todd 10x4,5 bei 16kHz |
//PWM Strom Schub |
//10 0,18A 21g |
//20 0,30A 38g |
//30 0,40A 49g |
//40 0,54A 60g |
//50 0,70A 83g |
//60 0,95A 102g |
//70 1,25A 128g |
//80 1,50A 151g |
//90 1,83A 175g |
//100 2,25A 206g |
//110 2,66A 228g |
//120 3,10A 257g |
//130 3,55A 278g |
//140 4,00A 305g |
//150 4,50A 330g |
//160 5,30A 355g |
//170 5,85A 387g |
//180 6,40A 400g |
//190 7,10A 425g |
//200 7,60A 460g |
//0,5A 63g 14% |
//1,0A 110g 24% |
//1,5A 170g 32% |
//2,0A 195g 37% |
//2,5A 230g 41% |
//3,0A 260g 46% |
//3,5A 290g 50% |
//4,0A 310g 53% |
//4,5A 340g 58% |
//5,0A 360g 63% |
//5,5A 380g 67% |
//6,0A 400g 68% |
//6,5A 420g 70% |
//7,0A 450g 75% |
//7,5A 460g 78% |
//8,0A 475g 82% |
//9,0A 550g 86% |
//11 A 600g 100% |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "twislave.h" |
#include "old_macros.h" |
#include "analog.h" |
#include "uart.h" |
#include "timer0.h" |
#include "BLMC.h" |
#include "PPM_Decode.h" |
extern unsigned int I2C_Timeout; |
extern unsigned int SIO_Timeout; |
extern unsigned int PWM; |
extern unsigned int Strom; //ca. in 0,1A |
extern unsigned char Strom_max; |
extern unsigned char Mittelstrom; |
extern unsigned int CntKommutierungen; |
extern unsigned char MotorAnwerfen; |
extern unsigned char MotorGestoppt; |
extern unsigned char ZeitZumAdWandeln; |
extern unsigned char MaxPWM; |
extern unsigned char MotorAdresse; |
#define ROT 0x08 |
#define GRUEN 0x80 |
#define ADR1 0x40 // für Motoradresswahl |
#define ADR2 0x80 // |
#if defined(__AVR_ATmega8__) |
# define OC1 PB1 |
# define DDROC DDRB |
# define OCR OCR1A |
# define PWM10 WGM10 |
# define PWM11 WGM11 |
#endif |
#endif //_MAIN_H |
/tags/V0.33/main.lss |
---|
0,0 → 1,4534 |
main.elf: file format elf32-avr |
Sections: |
Idx Name Size VMA LMA File off Algn |
0 .text 00001bec 00000000 00000000 00000094 2**0 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
1 .data 00000024 00800060 00001bec 00001c80 2**0 |
CONTENTS, ALLOC, LOAD, DATA |
2 .bss 00000156 00800084 00800084 00001ca4 2**0 |
ALLOC |
3 .noinit 00000000 008001da 008001da 00001ca4 2**0 |
CONTENTS |
4 .eeprom 00000000 00810000 00810000 00001ca4 2**0 |
CONTENTS |
5 .stab 0000036c 00000000 00000000 00001ca4 2**2 |
CONTENTS, READONLY, DEBUGGING |
6 .stabstr 00000084 00000000 00000000 00002010 2**0 |
CONTENTS, READONLY, DEBUGGING |
7 .debug_aranges 000000b4 00000000 00000000 00002094 2**0 |
CONTENTS, READONLY, DEBUGGING |
8 .debug_pubnames 000006f5 00000000 00000000 00002148 2**0 |
CONTENTS, READONLY, DEBUGGING |
9 .debug_info 00001a41 00000000 00000000 0000283d 2**0 |
CONTENTS, READONLY, DEBUGGING |
10 .debug_abbrev 00000774 00000000 00000000 0000427e 2**0 |
CONTENTS, READONLY, DEBUGGING |
11 .debug_line 0000169d 00000000 00000000 000049f2 2**0 |
CONTENTS, READONLY, DEBUGGING |
12 .debug_str 00000874 00000000 00000000 0000608f 2**0 |
CONTENTS, READONLY, DEBUGGING |
Disassembly of section .text: |
00000000 <__vectors>: |
0: 0c 94 85 00 jmp 0x10a <__init> |
4: 0c 94 7e 0b jmp 0x16fc <__vector_1> |
8: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
10: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
14: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
18: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
1c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
20: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
24: 0c 94 67 09 jmp 0x12ce <__vector_9> |
28: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
2c: 0c 94 96 0b jmp 0x172c <__vector_11> |
30: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
34: 0c 94 18 02 jmp 0x430 <__vector_13> |
38: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
3c: 0c 94 e3 01 jmp 0x3c6 <__vector_15> |
40: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
44: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
48: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
4c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
50: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
00000054 <__ctors_end>: |
54: 20 2d mov r18, r0 |
56: 2d 20 and r2, r13 |
58: 52 65 ori r21, 0x52 ; 82 |
5a: 6d 6f ori r22, 0xFD ; 253 |
5c: 74 65 ori r23, 0x54 ; 84 |
5e: 20 20 and r2, r0 |
60: 2d 2d mov r18, r13 |
62: 20 20 and r2, r0 |
64: 20 20 and r2, r0 |
66: 20 20 and r2, r0 |
... |
00000069 <__c.1>: |
69: 20 2d 2d 20 44 69 73 70 6c 61 79 20 2d 2d 20 20 -- Display -- |
79: 20 20 20 20 00 . |
0000007e <__c.2>: |
7e: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |
8e: 20 20 20 20 00 . |
00000093 <__c.3>: |
93: 20 20 77 77 77 2e 4d 69 63 72 6f 53 50 53 2e 63 www.MicroSPS.c |
a3: 6f 6d 20 20 00 om . |
000000a8 <__c.2>: |
a8: 25 73 00 %s. |
000000ab <__c.3>: |
ab: 25 73 00 %s. |
000000ae <__c.4>: |
ae: 25 73 00 %s. |
000000b1 <__c.5>: |
b1: 25 73 00 %s. |
000000b4 <__c.3>: |
b4: 56 65 72 62 69 6e 64 65 6e 20 6d 69 74 00 Verbinden mit. |
000000c2 <__c.4>: |
c2: 4d 69 63 72 6f 53 50 53 3a 25 32 69 20 00 MicroSPS:%2i . |
000000d0 <__c.5>: |
d0: 4d 61 78 20 41 64 72 65 73 73 65 00 Max Adresse. |
000000dc <__c.6>: |
dc: 25 32 69 20 00 %2i . |
000000e1 <__c.7>: |
e1: 43 68 65 63 6b 73 75 6d 00 Checksum. |
000000ea <__c.8>: |
ea: 45 72 72 6f 72 73 3a 25 35 69 20 00 Errors:%5i . |
000000f6 <__c.9>: |
f6: 44 69 73 70 6c 61 79 00 Display. |
000000fe <__c.10>: |
fe: 5a 65 69 6c 65 6e 3a 25 31 69 20 00 Zeilen:%1i . |
0000010a <__init>: |
10a: 11 24 eor r1, r1 |
10c: 1f be out 0x3f, r1 ; 63 |
10e: cf e5 ldi r28, 0x5F ; 95 |
110: d8 e0 ldi r29, 0x08 ; 8 |
112: de bf out 0x3e, r29 ; 62 |
114: cd bf out 0x3d, r28 ; 61 |
00000116 <__do_copy_data>: |
116: 10 e0 ldi r17, 0x00 ; 0 |
118: a0 e6 ldi r26, 0x60 ; 96 |
11a: b0 e0 ldi r27, 0x00 ; 0 |
11c: ec ee ldi r30, 0xEC ; 236 |
11e: fb e1 ldi r31, 0x1B ; 27 |
120: 02 c0 rjmp .+4 ; 0x126 <.do_copy_data_start> |
00000122 <.do_copy_data_loop>: |
122: 05 90 lpm r0, Z+ |
124: 0d 92 st X+, r0 |
00000126 <.do_copy_data_start>: |
126: a4 38 cpi r26, 0x84 ; 132 |
128: b1 07 cpc r27, r17 |
12a: d9 f7 brne .-10 ; 0x122 <.do_copy_data_loop> |
0000012c <__do_clear_bss>: |
12c: 11 e0 ldi r17, 0x01 ; 1 |
12e: a4 e8 ldi r26, 0x84 ; 132 |
130: b0 e0 ldi r27, 0x00 ; 0 |
132: 01 c0 rjmp .+2 ; 0x136 <.do_clear_bss_start> |
00000134 <.do_clear_bss_loop>: |
134: 1d 92 st X+, r1 |
00000136 <.do_clear_bss_start>: |
136: aa 3d cpi r26, 0xDA ; 218 |
138: b1 07 cpc r27, r17 |
13a: e1 f7 brne .-8 ; 0x134 <.do_clear_bss_loop> |
13c: 0c 94 e5 00 jmp 0x1ca <main> |
00000140 <__bad_interrupt>: |
140: 0c 94 00 00 jmp 0x0 <__vectors> |
00000144 <Sekundentakt_Init>: |
unsigned int IntervallDebug = 250, IntervallDisplay = 120; |
void Sekundentakt_Init(void) |
{ |
_SekTimer = SetDelay(1000); |
144: 88 ee ldi r24, 0xE8 ; 232 |
146: 93 e0 ldi r25, 0x03 ; 3 |
148: 0e 94 a8 09 call 0x1350 <SetDelay> |
14c: 90 93 91 00 sts 0x0091, r25 |
150: 80 93 90 00 sts 0x0090, r24 |
154: 08 95 ret |
00000156 <Sekundentakt>: |
} |
void Sekundentakt(void) |
{ |
if(CheckDelay(_SekTimer)) |
156: 80 91 90 00 lds r24, 0x0090 |
15a: 90 91 91 00 lds r25, 0x0091 |
15e: 0e 94 b1 09 call 0x1362 <CheckDelay> |
162: 88 23 and r24, r24 |
164: 31 f1 breq .+76 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
GetKeyboard(); |
166: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
_SekTimer += 1000; |
16a: 80 91 90 00 lds r24, 0x0090 |
16e: 90 91 91 00 lds r25, 0x0091 |
172: 88 51 subi r24, 0x18 ; 24 |
174: 9c 4f sbci r25, 0xFC ; 252 |
176: 90 93 91 00 sts 0x0091, r25 |
17a: 80 93 90 00 sts 0x0090, r24 |
if(!CntDatensaetzeProSekunde) UebertragungUnterbrochen = 1; else UebertragungUnterbrochen = 0; |
17e: 80 91 66 00 lds r24, 0x0066 |
182: 88 23 and r24, r24 |
184: 21 f4 brne .+8 ; 0x18e <Sekundentakt+0x38> |
186: 81 e0 ldi r24, 0x01 ; 1 |
188: 80 93 84 00 sts 0x0084, r24 |
18c: 02 c0 rjmp .+4 ; 0x192 <Sekundentakt+0x3c> |
18e: 10 92 84 00 sts 0x0084, r1 |
CntDatensaetzeProSekunde = 0; |
192: 10 92 66 00 sts 0x0066, r1 |
if(++Sekunde == 60) |
196: 80 91 8d 00 lds r24, 0x008D |
19a: 8f 5f subi r24, 0xFF ; 255 |
19c: 80 93 8d 00 sts 0x008D, r24 |
1a0: 8c 33 cpi r24, 0x3C ; 60 |
1a2: 39 f4 brne .+14 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
Sekunde = 0; |
1a4: 10 92 8d 00 sts 0x008D, r1 |
Minute++; |
1a8: 80 91 8c 00 lds r24, 0x008C |
1ac: 8f 5f subi r24, 0xFF ; 255 |
1ae: 80 93 8c 00 sts 0x008C, r24 |
1b2: 08 95 ret |
000001b4 <Init>: |
} |
} |
} |
void Init(void) |
{ |
VersionInfo.Hauptversion = 0; |
1b4: 10 92 c9 00 sts 0x00C9, r1 |
VersionInfo.Nebenversion = 99; |
1b8: 83 e6 ldi r24, 0x63 ; 99 |
1ba: 80 93 ca 00 sts 0x00CA, r24 |
VersionInfo.PCKompatibel = 1; |
1be: 81 e0 ldi r24, 0x01 ; 1 |
1c0: 80 93 cb 00 sts 0x00CB, r24 |
VersionInfo.Commercial = 0x00; |
1c4: 10 92 cc 00 sts 0x00CC, r1 |
1c8: 08 95 ret |
000001ca <main>: |
} |
#define MENU 0 |
#define REMOTE 1 |
//############################################################################ |
//Hauptprogramm |
void main (void) |
//############################################################################ |
{ |
1ca: ca e5 ldi r28, 0x5A ; 90 |
1cc: d8 e0 ldi r29, 0x08 ; 8 |
1ce: de bf out 0x3e, r29 ; 62 |
1d0: cd bf out 0x3d, r28 ; 61 |
char z,txt[]= {"Moin"},key,key_old = 255; |
1d2: de 01 movw r26, r28 |
1d4: 11 96 adiw r26, 0x01 ; 1 |
1d6: e7 e6 ldi r30, 0x67 ; 103 |
1d8: f0 e0 ldi r31, 0x00 ; 0 |
1da: 85 e0 ldi r24, 0x05 ; 5 |
1dc: 01 90 ld r0, Z+ |
1de: 0d 92 st X+, r0 |
1e0: 81 50 subi r24, 0x01 ; 1 |
1e2: e1 f7 brne .-8 ; 0x1dc <main+0x12> |
int test = 0; |
unsigned int DelayTast; |
unsigned int DelayDaten,DelayDisplay; |
unsigned char mode = REMOTE; |
1e4: 91 e0 ldi r25, 0x01 ; 1 |
1e6: b9 2e mov r11, r25 |
unsigned char neueDatenuebertragung = 1; |
UART_Init(); |
1e8: 0e 94 cc 04 call 0x998 <UART_Init> |
LCD_Init(); |
1ec: 0e 94 1f 06 call 0xc3e <LCD_Init> |
UART_Init(); |
1f0: 0e 94 cc 04 call 0x998 <UART_Init> |
Timer1_Init(); |
1f4: 0e 94 9e 09 call 0x133c <Timer1_Init> |
Keyboard_Init(); |
1f8: 0e 94 c9 09 call 0x1392 <Keyboard_Init> |
Sekundentakt_Init(); |
1fc: 0e 94 a2 00 call 0x144 <Sekundentakt_Init> |
InitIR(); |
200: 0e 94 67 0b call 0x16ce <InitIR> |
ADC_Init(); |
204: 0e 94 42 0c call 0x1884 <ADC_Init> |
Init(); |
208: 0e 94 da 00 call 0x1b4 <Init> |
sei ();//Globale Interrupts Einschalten |
20c: 78 94 sei |
DDRB = 0xff; |
20e: 8f ef ldi r24, 0xFF ; 255 |
210: 87 bb out 0x17, r24 ; 23 |
PORTB = 0x00; |
212: 18 ba out 0x18, r1 ; 24 |
LCD_Clear; |
214: 81 e0 ldi r24, 0x01 ; 1 |
216: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
21a: 0e 94 c9 05 call 0xb92 <_long_delay> |
/* while(1) |
*/ |
DelayTast = SetDelay(80); |
21e: 80 e5 ldi r24, 0x50 ; 80 |
220: 90 e0 ldi r25, 0x00 ; 0 |
222: 0e 94 a8 09 call 0x1350 <SetDelay> |
226: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
228: 88 ec ldi r24, 0xC8 ; 200 |
22a: 90 e0 ldi r25, 0x00 ; 0 |
22c: 0e 94 a8 09 call 0x1350 <SetDelay> |
230: 8c 01 movw r16, r24 |
DelayDisplay = SetDelay(300); |
232: 8c e2 ldi r24, 0x2C ; 44 |
234: 91 e0 ldi r25, 0x01 ; 1 |
236: 0e 94 a8 09 call 0x1350 <SetDelay> |
23a: 6c 01 movw r12, r24 |
ClearIntervalle(); |
23c: 0e 94 2e 05 call 0xa5c <ClearIntervalle> |
while (1) |
{ |
if(mode == MENU) |
240: bb 20 and r11, r11 |
242: 11 f5 brne .+68 ; 0x288 <main+0xbe> |
{ |
Delay_ms(10); |
244: 8a e0 ldi r24, 0x0A ; 10 |
246: 90 e0 ldi r25, 0x00 ; 0 |
248: 0e 94 bc 09 call 0x1378 <Delay_ms> |
key = GetKeyboard(); |
24c: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
Menu(key); |
250: 99 27 eor r25, r25 |
252: 0e 94 64 0a call 0x14c8 <Menu> |
if(_TASTE5) |
256: cb 9b sbis 0x19, 3 ; 25 |
258: f5 cf rjmp .-22 ; 0x244 <main+0x7a> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
25a: 8a e0 ldi r24, 0x0A ; 10 |
25c: 90 e0 ldi r25, 0x00 ; 0 |
25e: 0e 94 bc 09 call 0x1378 <Delay_ms> |
262: cb 99 sbic 0x19, 3 ; 25 |
264: fa cf rjmp .-12 ; 0x25a <main+0x90> |
mode = REMOTE; |
266: 81 e0 ldi r24, 0x01 ; 1 |
268: b8 2e mov r11, r24 |
DelayTast = SetDelay(100); |
26a: 84 e6 ldi r24, 0x64 ; 100 |
26c: 90 e0 ldi r25, 0x00 ; 0 |
26e: 0e 94 a8 09 call 0x1350 <SetDelay> |
272: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
274: 88 ec ldi r24, 0xC8 ; 200 |
276: 90 e0 ldi r25, 0x00 ; 0 |
278: 0e 94 a8 09 call 0x1350 <SetDelay> |
27c: 8c 01 movw r16, r24 |
LCD_Clear; |
27e: 8b 2d mov r24, r11 |
280: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
284: 0e 94 c9 05 call 0xb92 <_long_delay> |
} |
} |
else |
if(mode == REMOTE) |
288: 81 e0 ldi r24, 0x01 ; 1 |
28a: b8 16 cp r11, r24 |
28c: c9 f6 brne .-78 ; 0x240 <main+0x76> |
{ |
BearbeiteRxDaten(); |
28e: 0e 94 fe 03 call 0x7fc <BearbeiteRxDaten> |
if(CheckDelay(DelayDaten)) |
292: c8 01 movw r24, r16 |
294: 0e 94 b1 09 call 0x1362 <CheckDelay> |
298: 88 23 and r24, r24 |
29a: c9 f3 breq .-14 ; 0x28e <main+0xc4> |
{ |
Sekundentakt(); |
29c: 0e 94 ab 00 call 0x156 <Sekundentakt> |
DelayDaten = SetDelay(10); |
2a0: 8a e0 ldi r24, 0x0A ; 10 |
2a2: 90 e0 ldi r25, 0x00 ; 0 |
2a4: 0e 94 a8 09 call 0x1350 <SetDelay> |
2a8: 8c 01 movw r16, r24 |
if(CheckDelay(DelayDisplay)) |
2aa: c6 01 movw r24, r12 |
2ac: 0e 94 b1 09 call 0x1362 <CheckDelay> |
2b0: 88 23 and r24, r24 |
2b2: 39 f0 breq .+14 ; 0x2c2 <main+0xf8> |
{ |
DelayDisplay = SetDelay(300); |
2b4: 8c e2 ldi r24, 0x2C ; 44 |
2b6: 91 e0 ldi r25, 0x01 ; 1 |
2b8: 0e 94 a8 09 call 0x1350 <SetDelay> |
2bc: 6c 01 movw r12, r24 |
PollDisplay = 1; |
2be: b0 92 ed 00 sts 0x00ED, r11 |
} |
key = GetKeyboard2(); |
2c2: 0e 94 57 0a call 0x14ae <GetKeyboard2> |
DatenUebertragung(key); |
2c6: 99 27 eor r25, r25 |
2c8: 0e 94 51 05 call 0xaa2 <DatenUebertragung> |
if(UebertragungUnterbrochen) |
2cc: 80 91 84 00 lds r24, 0x0084 |
2d0: 88 23 and r24, r24 |
2d2: 81 f1 breq .+96 ; 0x334 <main+0x16a> |
{ |
//01234567890123456789 |
LCD_printfxy(0,0," -- Remote -- "); |
2d4: 60 e0 ldi r22, 0x00 ; 0 |
2d6: 86 2f mov r24, r22 |
2d8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2dc: 84 e5 ldi r24, 0x54 ; 84 |
2de: 90 e0 ldi r25, 0x00 ; 0 |
2e0: 9f 93 push r25 |
2e2: 8f 93 push r24 |
2e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1," -- Display -- "); |
2e8: 61 e0 ldi r22, 0x01 ; 1 |
2ea: 80 e0 ldi r24, 0x00 ; 0 |
2ec: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2f0: 0f 90 pop r0 |
2f2: 0f 90 pop r0 |
2f4: 89 e6 ldi r24, 0x69 ; 105 |
2f6: 90 e0 ldi r25, 0x00 ; 0 |
2f8: 9f 93 push r25 |
2fa: 8f 93 push r24 |
2fc: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,2," "); |
300: 62 e0 ldi r22, 0x02 ; 2 |
302: 80 e0 ldi r24, 0x00 ; 0 |
304: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
308: 0f 90 pop r0 |
30a: 0f 90 pop r0 |
30c: 8e e7 ldi r24, 0x7E ; 126 |
30e: 90 e0 ldi r25, 0x00 ; 0 |
310: 9f 93 push r25 |
312: 8f 93 push r24 |
314: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,3," www.MicroSPS.com "); |
318: 63 e0 ldi r22, 0x03 ; 3 |
31a: 80 e0 ldi r24, 0x00 ; 0 |
31c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
320: 0f 90 pop r0 |
322: 0f 90 pop r0 |
324: 83 e9 ldi r24, 0x93 ; 147 |
326: 90 e0 ldi r25, 0x00 ; 0 |
328: 9f 93 push r25 |
32a: 8f 93 push r24 |
32c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
330: 0f 90 pop r0 |
332: 0f 90 pop r0 |
} |
if(CheckDelay(DelayTast)) |
334: c7 01 movw r24, r14 |
336: 0e 94 b1 09 call 0x1362 <CheckDelay> |
33a: 88 23 and r24, r24 |
33c: 09 f4 brne .+2 ; 0x340 <main+0x176> |
33e: a7 cf rjmp .-178 ; 0x28e <main+0xc4> |
{ |
DelayTast = SetDelay(100); |
340: 84 e6 ldi r24, 0x64 ; 100 |
342: 90 e0 ldi r25, 0x00 ; 0 |
344: 0e 94 a8 09 call 0x1350 <SetDelay> |
348: 7c 01 movw r14, r24 |
if(_TASTE5) |
34a: cb 9b sbis 0x19, 3 ; 25 |
34c: 0c c0 rjmp .+24 ; 0x366 <main+0x19c> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
34e: 8a e0 ldi r24, 0x0A ; 10 |
350: 90 e0 ldi r25, 0x00 ; 0 |
352: 0e 94 bc 09 call 0x1378 <Delay_ms> |
356: cb 99 sbic 0x19, 3 ; 25 |
358: fa cf rjmp .-12 ; 0x34e <main+0x184> |
mode = MENU; |
35a: bb 24 eor r11, r11 |
LCD_Clear; |
35c: 81 e0 ldi r24, 0x01 ; 1 |
35e: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
362: 0e 94 c9 05 call 0xb92 <_long_delay> |
366: 80 91 be 00 lds r24, 0x00BE |
} |
// if(key & 0x10) DebugIn.Digital[0] |= 0x01; else DebugIn.Digital[0] &= ~0x01; |
if(PIND & 0x08) DebugIn.Digital[0] |= 0x02; else DebugIn.Digital[0] &= ~0x02; |
36a: 83 9b sbis 0x10, 3 ; 16 |
36c: 02 c0 rjmp .+4 ; 0x372 <main+0x1a8> |
36e: 82 60 ori r24, 0x02 ; 2 |
370: 01 c0 rjmp .+2 ; 0x374 <main+0x1aa> |
372: 8d 7f andi r24, 0xFD ; 253 |
374: 80 93 be 00 sts 0x00BE, r24 |
378: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x10) DebugIn.Digital[0] |= 0x04; else DebugIn.Digital[0] &= ~0x04; |
37c: 84 9b sbis 0x10, 4 ; 16 |
37e: 02 c0 rjmp .+4 ; 0x384 <main+0x1ba> |
380: 84 60 ori r24, 0x04 ; 4 |
382: 01 c0 rjmp .+2 ; 0x386 <main+0x1bc> |
384: 8b 7f andi r24, 0xFB ; 251 |
386: 80 93 be 00 sts 0x00BE, r24 |
38a: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x20) DebugIn.Digital[0] |= 0x08; else DebugIn.Digital[0] &= ~0x08; |
38e: 85 9b sbis 0x10, 5 ; 16 |
390: 02 c0 rjmp .+4 ; 0x396 <main+0x1cc> |
392: 88 60 ori r24, 0x08 ; 8 |
394: 01 c0 rjmp .+2 ; 0x398 <main+0x1ce> |
396: 87 7f andi r24, 0xF7 ; 247 |
398: 80 93 be 00 sts 0x00BE, r24 |
39c: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x40) DebugIn.Digital[0] |= 0x10; else DebugIn.Digital[0] &= ~0x10; |
3a0: 86 9b sbis 0x10, 6 ; 16 |
3a2: 02 c0 rjmp .+4 ; 0x3a8 <main+0x1de> |
3a4: 80 61 ori r24, 0x10 ; 16 |
3a6: 01 c0 rjmp .+2 ; 0x3aa <main+0x1e0> |
3a8: 8f 7e andi r24, 0xEF ; 239 |
3aa: 80 93 be 00 sts 0x00BE, r24 |
3ae: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x80) DebugIn.Digital[0] |= 0x20; else DebugIn.Digital[0] &= ~0x20; |
3b2: 87 9b sbis 0x10, 7 ; 16 |
3b4: 02 c0 rjmp .+4 ; 0x3ba <main+0x1f0> |
3b6: 80 62 ori r24, 0x20 ; 32 |
3b8: 01 c0 rjmp .+2 ; 0x3bc <main+0x1f2> |
3ba: 8f 7d andi r24, 0xDF ; 223 |
3bc: 80 93 be 00 sts 0x00BE, r24 |
GetAnalogWerte(); |
3c0: 0e 94 4e 0c call 0x189c <GetAnalogWerte> |
3c4: 3d cf rjmp .-390 ; 0x240 <main+0x76> |
000003c6 <__vector_15>: |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
3c6: 1f 92 push r1 |
3c8: 0f 92 push r0 |
3ca: 0f b6 in r0, 0x3f ; 63 |
3cc: 0f 92 push r0 |
3ce: 11 24 eor r1, r1 |
3d0: 8f 93 push r24 |
3d2: 9f 93 push r25 |
3d4: ef 93 push r30 |
3d6: ff 93 push r31 |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
3d8: 80 91 6e 00 lds r24, 0x006E |
3dc: 88 23 and r24, r24 |
3de: d9 f4 brne .+54 ; 0x416 <__vector_15+0x50> |
{ |
ptr++; // die [0] wurde schon gesendet |
3e0: 80 91 9d 00 lds r24, 0x009D |
3e4: 90 91 9e 00 lds r25, 0x009E |
3e8: 01 96 adiw r24, 0x01 ; 1 |
3ea: 90 93 9e 00 sts 0x009E, r25 |
3ee: 80 93 9d 00 sts 0x009D, r24 |
tmp_tx = SendeBuffer[ptr]; |
3f2: fc 01 movw r30, r24 |
3f4: e2 51 subi r30, 0x12 ; 18 |
3f6: ff 4f sbci r31, 0xFF ; 255 |
3f8: e0 81 ld r30, Z |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
3fa: ed 30 cpi r30, 0x0D ; 13 |
3fc: 19 f0 breq .+6 ; 0x404 <__vector_15+0x3e> |
3fe: 84 36 cpi r24, 0x64 ; 100 |
400: 91 05 cpc r25, r1 |
402: 39 f4 brne .+14 ; 0x412 <__vector_15+0x4c> |
{ |
ptr = 0; |
404: 10 92 9e 00 sts 0x009E, r1 |
408: 10 92 9d 00 sts 0x009D, r1 |
UebertragungAbgeschlossen = 1; |
40c: 81 e0 ldi r24, 0x01 ; 1 |
40e: 80 93 6e 00 sts 0x006E, r24 |
} |
UDR = tmp_tx; |
412: ec b9 out 0x0c, r30 ; 12 |
414: 04 c0 rjmp .+8 ; 0x41e <__vector_15+0x58> |
} |
else ptr = 0; |
416: 10 92 9e 00 sts 0x009E, r1 |
41a: 10 92 9d 00 sts 0x009D, r1 |
41e: ff 91 pop r31 |
420: ef 91 pop r30 |
422: 9f 91 pop r25 |
424: 8f 91 pop r24 |
426: 0f 90 pop r0 |
428: 0f be out 0x3f, r0 ; 63 |
42a: 0f 90 pop r0 |
42c: 1f 90 pop r1 |
42e: 18 95 reti |
00000430 <__vector_13>: |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
430: 1f 92 push r1 |
432: 0f 92 push r0 |
434: 0f b6 in r0, 0x3f ; 63 |
436: 0f 92 push r0 |
438: 11 24 eor r1, r1 |
43a: 2f 93 push r18 |
43c: 3f 93 push r19 |
43e: 4f 93 push r20 |
440: 5f 93 push r21 |
442: 8f 93 push r24 |
444: 9f 93 push r25 |
446: af 93 push r26 |
448: bf 93 push r27 |
44a: ef 93 push r30 |
44c: ff 93 push r31 |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
44e: 20 e0 ldi r18, 0x00 ; 0 |
SioTmp = UDR; |
450: 8c b1 in r24, 0x0c ; 12 |
452: 80 93 9c 00 sts 0x009C, r24 |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
456: 50 91 a3 00 lds r21, 0x00A3 |
45a: 54 36 cpi r21, 0x64 ; 100 |
45c: 10 f0 brcs .+4 ; 0x462 <__vector_13+0x32> |
45e: 20 93 a4 00 sts 0x00A4, r18 |
if(SioTmp == '\r' && UartState == 2) |
462: 80 91 9c 00 lds r24, 0x009C |
466: 8d 30 cpi r24, 0x0D ; 13 |
468: 09 f0 breq .+2 ; 0x46c <__vector_13+0x3c> |
46a: 5b c0 rjmp .+182 ; 0x522 <__vector_13+0xf2> |
46c: 80 91 a4 00 lds r24, 0x00A4 |
470: 82 30 cpi r24, 0x02 ; 2 |
472: 09 f0 breq .+2 ; 0x476 <__vector_13+0x46> |
474: 56 c0 rjmp .+172 ; 0x522 <__vector_13+0xf2> |
{ |
UartState = 0; |
476: 20 93 a4 00 sts 0x00A4, r18 |
crc -= RxdBuffer[buf_ptr-2]; |
47a: 85 2f mov r24, r21 |
47c: 99 27 eor r25, r25 |
47e: 8e 5a subi r24, 0xAE ; 174 |
480: 9e 4f sbci r25, 0xFE ; 254 |
482: fc 01 movw r30, r24 |
484: 32 97 sbiw r30, 0x02 ; 2 |
486: 40 81 ld r20, Z |
488: 20 91 9f 00 lds r18, 0x009F |
48c: 30 91 a0 00 lds r19, 0x00A0 |
490: 24 1b sub r18, r20 |
492: 31 09 sbc r19, r1 |
crc -= RxdBuffer[buf_ptr-1]; |
494: dc 01 movw r26, r24 |
496: 11 97 sbiw r26, 0x01 ; 1 |
498: 8c 91 ld r24, X |
49a: 28 1b sub r18, r24 |
49c: 31 09 sbc r19, r1 |
crc %= 4096; |
49e: c9 01 movw r24, r18 |
4a0: 9f 70 andi r25, 0x0F ; 15 |
4a2: 90 93 a0 00 sts 0x00A0, r25 |
4a6: 80 93 9f 00 sts 0x009F, r24 |
crc1 = '=' + crc / 64; |
4aa: 46 e0 ldi r20, 0x06 ; 6 |
4ac: 96 95 lsr r25 |
4ae: 87 95 ror r24 |
4b0: 4a 95 dec r20 |
4b2: e1 f7 brne .-8 ; 0x4ac <__vector_13+0x7c> |
4b4: 98 2f mov r25, r24 |
4b6: 93 5c subi r25, 0xC3 ; 195 |
4b8: 90 93 a1 00 sts 0x00A1, r25 |
crc2 = '=' + crc % 64; |
4bc: 2f 73 andi r18, 0x3F ; 63 |
4be: 30 70 andi r19, 0x00 ; 0 |
4c0: 23 5c subi r18, 0xC3 ; 195 |
4c2: 20 93 a2 00 sts 0x00A2, r18 |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
4c6: 80 81 ld r24, Z |
4c8: 98 17 cp r25, r24 |
4ca: 29 f4 brne .+10 ; 0x4d6 <__vector_13+0xa6> |
4cc: 8c 91 ld r24, X |
4ce: 28 17 cp r18, r24 |
4d0: 11 f4 brne .+4 ; 0x4d6 <__vector_13+0xa6> |
4d2: 21 e0 ldi r18, 0x01 ; 1 |
4d4: 0a c0 rjmp .+20 ; 0x4ea <__vector_13+0xba> |
4d6: 20 e0 ldi r18, 0x00 ; 0 |
4d8: 80 91 99 00 lds r24, 0x0099 |
4dc: 90 91 9a 00 lds r25, 0x009A |
4e0: 01 96 adiw r24, 0x01 ; 1 |
4e2: 90 93 9a 00 sts 0x009A, r25 |
4e6: 80 93 99 00 sts 0x0099, r24 |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
4ea: 80 91 9b 00 lds r24, 0x009B |
4ee: 88 23 and r24, r24 |
4f0: 09 f0 breq .+2 ; 0x4f4 <__vector_13+0xc4> |
4f2: 66 c0 rjmp .+204 ; 0x5c0 <__vector_13+0x190> |
4f4: 22 23 and r18, r18 |
4f6: 09 f4 brne .+2 ; 0x4fa <__vector_13+0xca> |
4f8: 63 c0 rjmp .+198 ; 0x5c0 <__vector_13+0x190> |
{ |
CntDatensaetzeProSekunde++; |
4fa: 80 91 66 00 lds r24, 0x0066 |
4fe: 8f 5f subi r24, 0xFF ; 255 |
500: 80 93 66 00 sts 0x0066, r24 |
PC_DebugTimeout = 10; |
504: 8a e0 ldi r24, 0x0A ; 10 |
506: 80 93 97 00 sts 0x0097, r24 |
NeuerDatensatzEmpfangen = 1; |
50a: 81 e0 ldi r24, 0x01 ; 1 |
50c: 80 93 9b 00 sts 0x009B, r24 |
AnzahlEmpfangsBytes = buf_ptr; |
510: 50 93 98 00 sts 0x0098, r21 |
RxdBuffer[buf_ptr] = '\r'; |
514: e5 2f mov r30, r21 |
516: ff 27 eor r31, r31 |
518: ee 5a subi r30, 0xAE ; 174 |
51a: fe 4f sbci r31, 0xFE ; 254 |
51c: 8d e0 ldi r24, 0x0D ; 13 |
51e: 80 83 st Z, r24 |
520: 4f c0 rjmp .+158 ; 0x5c0 <__vector_13+0x190> |
// if((RxdBuffer[1] == 's') && (RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
522: 20 91 a4 00 lds r18, 0x00A4 |
526: 82 2f mov r24, r18 |
528: 99 27 eor r25, r25 |
52a: 81 30 cpi r24, 0x01 ; 1 |
52c: 91 05 cpc r25, r1 |
52e: f9 f0 breq .+62 ; 0x56e <__vector_13+0x13e> |
530: 82 30 cpi r24, 0x02 ; 2 |
532: 91 05 cpc r25, r1 |
534: 1c f4 brge .+6 ; 0x53c <__vector_13+0x10c> |
536: 89 2b or r24, r25 |
538: 21 f0 breq .+8 ; 0x542 <__vector_13+0x112> |
53a: 40 c0 rjmp .+128 ; 0x5bc <__vector_13+0x18c> |
53c: 02 97 sbiw r24, 0x02 ; 2 |
53e: 11 f1 breq .+68 ; 0x584 <__vector_13+0x154> |
540: 3d c0 rjmp .+122 ; 0x5bc <__vector_13+0x18c> |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
542: 80 91 9c 00 lds r24, 0x009C |
546: 83 32 cpi r24, 0x23 ; 35 |
548: 39 f4 brne .+14 ; 0x558 <__vector_13+0x128> |
54a: 80 91 9b 00 lds r24, 0x009B |
54e: 88 23 and r24, r24 |
550: 19 f4 brne .+6 ; 0x558 <__vector_13+0x128> |
552: 81 e0 ldi r24, 0x01 ; 1 |
554: 80 93 a4 00 sts 0x00A4, r24 |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
558: 80 91 9c 00 lds r24, 0x009C |
55c: 80 93 52 01 sts 0x0152, r24 |
560: 81 e0 ldi r24, 0x01 ; 1 |
562: 80 93 a3 00 sts 0x00A3, r24 |
crc = SioTmp; |
566: 80 91 9c 00 lds r24, 0x009C |
56a: 99 27 eor r25, r25 |
56c: 22 c0 rjmp .+68 ; 0x5b2 <__vector_13+0x182> |
break; |
case 1: // Adresse auswerten |
UartState++; |
56e: 2f 5f subi r18, 0xFF ; 255 |
570: 20 93 a4 00 sts 0x00A4, r18 |
RxdBuffer[buf_ptr++] = SioTmp; |
574: e5 2f mov r30, r21 |
576: ff 27 eor r31, r31 |
578: ee 5a subi r30, 0xAE ; 174 |
57a: fe 4f sbci r31, 0xFE ; 254 |
57c: 80 91 9c 00 lds r24, 0x009C |
580: 80 83 st Z, r24 |
582: 09 c0 rjmp .+18 ; 0x596 <__vector_13+0x166> |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
584: e5 2f mov r30, r21 |
586: ff 27 eor r31, r31 |
588: ee 5a subi r30, 0xAE ; 174 |
58a: fe 4f sbci r31, 0xFE ; 254 |
58c: 80 91 9c 00 lds r24, 0x009C |
590: 80 83 st Z, r24 |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
592: 54 36 cpi r21, 0x64 ; 100 |
594: 20 f4 brcc .+8 ; 0x59e <__vector_13+0x16e> |
596: 5f 5f subi r21, 0xFF ; 255 |
598: 50 93 a3 00 sts 0x00A3, r21 |
59c: 02 c0 rjmp .+4 ; 0x5a2 <__vector_13+0x172> |
else UartState = 0; |
59e: 10 92 a4 00 sts 0x00A4, r1 |
crc += SioTmp; |
5a2: 20 91 9c 00 lds r18, 0x009C |
5a6: 80 91 9f 00 lds r24, 0x009F |
5aa: 90 91 a0 00 lds r25, 0x00A0 |
5ae: 82 0f add r24, r18 |
5b0: 91 1d adc r25, r1 |
5b2: 90 93 a0 00 sts 0x00A0, r25 |
5b6: 80 93 9f 00 sts 0x009F, r24 |
break; |
5ba: 02 c0 rjmp .+4 ; 0x5c0 <__vector_13+0x190> |
default: |
UartState = 0; |
5bc: 10 92 a4 00 sts 0x00A4, r1 |
5c0: ff 91 pop r31 |
5c2: ef 91 pop r30 |
5c4: bf 91 pop r27 |
5c6: af 91 pop r26 |
5c8: 9f 91 pop r25 |
5ca: 8f 91 pop r24 |
5cc: 5f 91 pop r21 |
5ce: 4f 91 pop r20 |
5d0: 3f 91 pop r19 |
5d2: 2f 91 pop r18 |
5d4: 0f 90 pop r0 |
5d6: 0f be out 0x3f, r0 ; 63 |
5d8: 0f 90 pop r0 |
5da: 1f 90 pop r1 |
5dc: 18 95 reti |
000005de <AddCRC>: |
break; |
} |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
5de: ac 01 movw r20, r24 |
unsigned int tmpCRC = 0,i; |
5e0: a0 e0 ldi r26, 0x00 ; 0 |
5e2: b0 e0 ldi r27, 0x00 ; 0 |
for(i = 0; i < wieviele;i++) |
5e4: 9d 01 movw r18, r26 |
5e6: a8 17 cp r26, r24 |
5e8: b9 07 cpc r27, r25 |
5ea: 48 f4 brcc .+18 ; 0x5fe <AddCRC+0x20> |
5ec: ee ee ldi r30, 0xEE ; 238 |
5ee: f0 e0 ldi r31, 0x00 ; 0 |
{ |
tmpCRC += SendeBuffer[i]; |
5f0: 81 91 ld r24, Z+ |
5f2: 28 0f add r18, r24 |
5f4: 31 1d adc r19, r1 |
5f6: 11 96 adiw r26, 0x01 ; 1 |
5f8: a4 17 cp r26, r20 |
5fa: b5 07 cpc r27, r21 |
5fc: c8 f3 brcs .-14 ; 0x5f0 <AddCRC+0x12> |
} |
tmpCRC %= 4096; |
5fe: 3f 70 andi r19, 0x0F ; 15 |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
600: fd 01 movw r30, r26 |
602: e2 51 subi r30, 0x12 ; 18 |
604: ff 4f sbci r31, 0xFF ; 255 |
606: c9 01 movw r24, r18 |
608: 56 e0 ldi r21, 0x06 ; 6 |
60a: 96 95 lsr r25 |
60c: 87 95 ror r24 |
60e: 5a 95 dec r21 |
610: e1 f7 brne .-8 ; 0x60a <AddCRC+0x2c> |
612: 83 5c subi r24, 0xC3 ; 195 |
614: 80 83 st Z, r24 |
616: 11 96 adiw r26, 0x01 ; 1 |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
618: fd 01 movw r30, r26 |
61a: e2 51 subi r30, 0x12 ; 18 |
61c: ff 4f sbci r31, 0xFF ; 255 |
61e: 2f 73 andi r18, 0x3F ; 63 |
620: 30 70 andi r19, 0x00 ; 0 |
622: 82 2f mov r24, r18 |
624: 83 5c subi r24, 0xC3 ; 195 |
626: 80 83 st Z, r24 |
SendeBuffer[i++] = '\r'; |
628: a1 51 subi r26, 0x11 ; 17 |
62a: bf 4f sbci r27, 0xFF ; 255 |
62c: 8d e0 ldi r24, 0x0D ; 13 |
62e: 8c 93 st X, r24 |
UebertragungAbgeschlossen = 0; |
630: 10 92 6e 00 sts 0x006E, r1 |
UDR = SendeBuffer[0]; |
634: 80 91 ee 00 lds r24, 0x00EE |
638: 8c b9 out 0x0c, r24 ; 12 |
63a: 08 95 ret |
0000063c <SendOutData>: |
// PrintSendeBuffer(); |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
63c: 1f 93 push r17 |
63e: cf 93 push r28 |
640: df 93 push r29 |
642: 38 2f mov r19, r24 |
644: 96 2f mov r25, r22 |
646: ea 01 movw r28, r20 |
648: 72 2f mov r23, r18 |
unsigned int pt = 0,i; |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
64a: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
//while(!UebertragungAbgeschlossen); |
SendeBuffer[pt++] = '#'; // Startzeichen |
64c: 83 e2 ldi r24, 0x23 ; 35 |
64e: 80 93 ee 00 sts 0x00EE, r24 |
SendeBuffer[pt++] = modul+'a'; // Adresse (a=0; b=1,...) |
652: 9f 59 subi r25, 0x9F ; 159 |
654: 90 93 ef 00 sts 0x00EF, r25 |
SendeBuffer[pt++] = cmd; // Commando |
658: 30 93 f0 00 sts 0x00F0, r19 |
65c: a3 e0 ldi r26, 0x03 ; 3 |
65e: b0 e0 ldi r27, 0x00 ; 0 |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
660: 77 23 and r23, r23 |
662: 09 f4 brne .+2 ; 0x666 <SendOutData+0x2a> |
664: 58 c0 rjmp .+176 ; 0x716 <SendOutData+0xda> |
666: 77 23 and r23, r23 |
668: 11 f4 brne .+4 ; 0x66e <SendOutData+0x32> |
66a: 97 2f mov r25, r23 |
66c: 07 c0 rjmp .+14 ; 0x67c <SendOutData+0x40> |
66e: fe 01 movw r30, r28 |
670: e1 0f add r30, r17 |
672: f1 1d adc r31, r1 |
674: 1f 5f subi r17, 0xFF ; 255 |
676: 90 81 ld r25, Z |
678: 71 50 subi r23, 0x01 ; 1 |
67a: 11 f4 brne .+4 ; 0x680 <SendOutData+0x44> |
67c: 47 2f mov r20, r23 |
67e: 0e c0 rjmp .+28 ; 0x69c <SendOutData+0x60> |
680: fe 01 movw r30, r28 |
682: e1 0f add r30, r17 |
684: f1 1d adc r31, r1 |
686: 1f 5f subi r17, 0xFF ; 255 |
688: 40 81 ld r20, Z |
68a: 71 50 subi r23, 0x01 ; 1 |
68c: 39 f0 breq .+14 ; 0x69c <SendOutData+0x60> |
68e: fe 01 movw r30, r28 |
690: e1 0f add r30, r17 |
692: f1 1d adc r31, r1 |
694: 1f 5f subi r17, 0xFF ; 255 |
696: 60 81 ld r22, Z |
698: 71 50 subi r23, 0x01 ; 1 |
69a: 01 c0 rjmp .+2 ; 0x69e <SendOutData+0x62> |
69c: 67 2f mov r22, r23 |
69e: fd 01 movw r30, r26 |
6a0: e2 51 subi r30, 0x12 ; 18 |
6a2: ff 4f sbci r31, 0xFF ; 255 |
6a4: 89 2f mov r24, r25 |
6a6: 86 95 lsr r24 |
6a8: 86 95 lsr r24 |
6aa: 83 5c subi r24, 0xC3 ; 195 |
6ac: 80 83 st Z, r24 |
6ae: 11 96 adiw r26, 0x01 ; 1 |
6b0: fd 01 movw r30, r26 |
6b2: e2 51 subi r30, 0x12 ; 18 |
6b4: ff 4f sbci r31, 0xFF ; 255 |
6b6: 89 2f mov r24, r25 |
6b8: 99 27 eor r25, r25 |
6ba: 83 70 andi r24, 0x03 ; 3 |
6bc: 90 70 andi r25, 0x00 ; 0 |
6be: 24 e0 ldi r18, 0x04 ; 4 |
6c0: 88 0f add r24, r24 |
6c2: 99 1f adc r25, r25 |
6c4: 2a 95 dec r18 |
6c6: e1 f7 brne .-8 ; 0x6c0 <SendOutData+0x84> |
6c8: 55 27 eor r21, r21 |
6ca: 9a 01 movw r18, r20 |
6cc: 94 e0 ldi r25, 0x04 ; 4 |
6ce: 36 95 lsr r19 |
6d0: 27 95 ror r18 |
6d2: 9a 95 dec r25 |
6d4: e1 f7 brne .-8 ; 0x6ce <SendOutData+0x92> |
6d6: 82 2b or r24, r18 |
6d8: 83 5c subi r24, 0xC3 ; 195 |
6da: 80 83 st Z, r24 |
6dc: 11 96 adiw r26, 0x01 ; 1 |
6de: fd 01 movw r30, r26 |
6e0: e2 51 subi r30, 0x12 ; 18 |
6e2: ff 4f sbci r31, 0xFF ; 255 |
6e4: 4f 70 andi r20, 0x0F ; 15 |
6e6: 50 70 andi r21, 0x00 ; 0 |
6e8: 44 0f add r20, r20 |
6ea: 55 1f adc r21, r21 |
6ec: 44 0f add r20, r20 |
6ee: 55 1f adc r21, r21 |
6f0: 86 2f mov r24, r22 |
6f2: 99 27 eor r25, r25 |
6f4: 26 e0 ldi r18, 0x06 ; 6 |
6f6: 96 95 lsr r25 |
6f8: 87 95 ror r24 |
6fa: 2a 95 dec r18 |
6fc: e1 f7 brne .-8 ; 0x6f6 <SendOutData+0xba> |
6fe: 84 2b or r24, r20 |
700: 83 5c subi r24, 0xC3 ; 195 |
702: 80 83 st Z, r24 |
704: 11 96 adiw r26, 0x01 ; 1 |
706: fd 01 movw r30, r26 |
708: e2 51 subi r30, 0x12 ; 18 |
70a: ff 4f sbci r31, 0xFF ; 255 |
70c: 6f 73 andi r22, 0x3F ; 63 |
70e: 63 5c subi r22, 0xC3 ; 195 |
710: 60 83 st Z, r22 |
712: 11 96 adiw r26, 0x01 ; 1 |
714: a5 cf rjmp .-182 ; 0x660 <SendOutData+0x24> |
} |
AddCRC(pt); |
716: cd 01 movw r24, r26 |
718: 0e 94 ef 02 call 0x5de <AddCRC> |
71c: df 91 pop r29 |
71e: cf 91 pop r28 |
720: 1f 91 pop r17 |
722: 08 95 ret |
00000724 <Decode64>: |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
724: 1f 93 push r17 |
726: cf 93 push r28 |
728: df 93 push r29 |
72a: ec 01 movw r28, r24 |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
72c: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
72e: 66 23 and r22, r22 |
730: 09 f4 brne .+2 ; 0x734 <Decode64+0x10> |
732: 60 c0 rjmp .+192 ; 0x7f4 <Decode64+0xd0> |
734: a2 2f mov r26, r18 |
736: bb 27 eor r27, r27 |
738: 12 97 sbiw r26, 0x02 ; 2 |
73a: e4 2f mov r30, r20 |
73c: ff 27 eor r31, r31 |
73e: ee 5a subi r30, 0xAE ; 174 |
740: fe 4f sbci r31, 0xFE ; 254 |
742: 30 81 ld r19, Z |
744: 3d 53 subi r19, 0x3D ; 61 |
746: 4f 5f subi r20, 0xFF ; 255 |
748: e4 2f mov r30, r20 |
74a: ff 27 eor r31, r31 |
74c: ee 5a subi r30, 0xAE ; 174 |
74e: fe 4f sbci r31, 0xFE ; 254 |
750: 50 81 ld r21, Z |
752: 5d 53 subi r21, 0x3D ; 61 |
754: 4f 5f subi r20, 0xFF ; 255 |
756: e4 2f mov r30, r20 |
758: ff 27 eor r31, r31 |
75a: ee 5a subi r30, 0xAE ; 174 |
75c: fe 4f sbci r31, 0xFE ; 254 |
75e: 70 81 ld r23, Z |
760: 7d 53 subi r23, 0x3D ; 61 |
762: 4f 5f subi r20, 0xFF ; 255 |
764: e4 2f mov r30, r20 |
766: ff 27 eor r31, r31 |
768: ee 5a subi r30, 0xAE ; 174 |
76a: fe 4f sbci r31, 0xFE ; 254 |
76c: e0 81 ld r30, Z |
76e: ed 53 subi r30, 0x3D ; 61 |
770: 4f 5f subi r20, 0xFF ; 255 |
772: 84 2f mov r24, r20 |
774: 99 27 eor r25, r25 |
776: a8 17 cp r26, r24 |
778: b9 07 cpc r27, r25 |
77a: e4 f1 brlt .+120 ; 0x7f4 <Decode64+0xd0> |
77c: 83 2f mov r24, r19 |
77e: 99 27 eor r25, r25 |
780: 88 0f add r24, r24 |
782: 99 1f adc r25, r25 |
784: 88 0f add r24, r24 |
786: 99 1f adc r25, r25 |
788: 35 2f mov r19, r21 |
78a: 32 95 swap r19 |
78c: 3f 70 andi r19, 0x0F ; 15 |
78e: 38 2b or r19, r24 |
790: 85 2f mov r24, r21 |
792: 99 27 eor r25, r25 |
794: 8f 70 andi r24, 0x0F ; 15 |
796: 90 70 andi r25, 0x00 ; 0 |
798: f4 e0 ldi r31, 0x04 ; 4 |
79a: 88 0f add r24, r24 |
79c: 99 1f adc r25, r25 |
79e: fa 95 dec r31 |
7a0: e1 f7 brne .-8 ; 0x79a <Decode64+0x76> |
7a2: 57 2f mov r21, r23 |
7a4: 56 95 lsr r21 |
7a6: 56 95 lsr r21 |
7a8: 58 2b or r21, r24 |
7aa: 87 2f mov r24, r23 |
7ac: 99 27 eor r25, r25 |
7ae: 83 70 andi r24, 0x03 ; 3 |
7b0: 90 70 andi r25, 0x00 ; 0 |
7b2: 76 e0 ldi r23, 0x06 ; 6 |
7b4: 88 0f add r24, r24 |
7b6: 99 1f adc r25, r25 |
7b8: 7a 95 dec r23 |
7ba: e1 f7 brne .-8 ; 0x7b4 <Decode64+0x90> |
7bc: 8e 2b or r24, r30 |
7be: 61 50 subi r22, 0x01 ; 1 |
7c0: 6f 3f cpi r22, 0xFF ; 255 |
7c2: c1 f0 breq .+48 ; 0x7f4 <Decode64+0xd0> |
7c4: fe 01 movw r30, r28 |
7c6: e1 0f add r30, r17 |
7c8: f1 1d adc r31, r1 |
7ca: 30 83 st Z, r19 |
7cc: 1f 5f subi r17, 0xFF ; 255 |
7ce: 61 50 subi r22, 0x01 ; 1 |
7d0: 6f 3f cpi r22, 0xFF ; 255 |
7d2: 81 f0 breq .+32 ; 0x7f4 <Decode64+0xd0> |
7d4: fe 01 movw r30, r28 |
7d6: e1 0f add r30, r17 |
7d8: f1 1d adc r31, r1 |
7da: 50 83 st Z, r21 |
7dc: 1f 5f subi r17, 0xFF ; 255 |
7de: 61 50 subi r22, 0x01 ; 1 |
7e0: 6f 3f cpi r22, 0xFF ; 255 |
7e2: 41 f0 breq .+16 ; 0x7f4 <Decode64+0xd0> |
7e4: fe 01 movw r30, r28 |
7e6: e1 0f add r30, r17 |
7e8: f1 1d adc r31, r1 |
7ea: 80 83 st Z, r24 |
7ec: 1f 5f subi r17, 0xFF ; 255 |
7ee: 66 23 and r22, r22 |
7f0: 09 f0 breq .+2 ; 0x7f4 <Decode64+0xd0> |
7f2: a3 cf rjmp .-186 ; 0x73a <Decode64+0x16> |
7f4: df 91 pop r29 |
7f6: cf 91 pop r28 |
7f8: 1f 91 pop r17 |
7fa: 08 95 ret |
000007fc <BearbeiteRxDaten>: |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
7fc: cf 93 push r28 |
7fe: df 93 push r29 |
800: cd b7 in r28, 0x3d ; 61 |
802: de b7 in r29, 0x3e ; 62 |
804: ad 97 sbiw r28, 0x2d ; 45 |
806: 0f b6 in r0, 0x3f ; 63 |
808: f8 94 cli |
80a: de bf out 0x3e, r29 ; 62 |
80c: 0f be out 0x3f, r0 ; 63 |
80e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr1[1]; |
unsigned int tmp_int_arr2[2]; |
unsigned int tmp_int_arr20[21]; |
unsigned char tmp_char_arr3[3]; |
// unsigned int tmp_int_arr4[4]; |
if(!NeuerDatensatzEmpfangen) return; |
810: 80 91 9b 00 lds r24, 0x009B |
814: 88 23 and r24, r24 |
816: 09 f4 brne .+2 ; 0x81a <BearbeiteRxDaten+0x1e> |
818: a7 c0 rjmp .+334 ; 0x968 <__stack+0x109> |
NeuerDatensatzEmpfangen = 0; |
81a: 10 92 9b 00 sts 0x009B, r1 |
if(ErwarteAntwort == RxdBuffer[2]) AntwortEingetroffen = 1; |
81e: 90 91 6d 00 lds r25, 0x006D |
822: 80 91 54 01 lds r24, 0x0154 |
826: 98 17 cp r25, r24 |
828: 19 f4 brne .+6 ; 0x830 <BearbeiteRxDaten+0x34> |
82a: 81 e0 ldi r24, 0x01 ; 1 |
82c: 80 93 92 00 sts 0x0092, r24 |
switch(RxdBuffer[2]) |
830: 80 91 54 01 lds r24, 0x0154 |
834: 99 27 eor r25, r25 |
836: 82 33 cpi r24, 0x32 ; 50 |
838: 91 05 cpc r25, r1 |
83a: 09 f4 brne .+2 ; 0x83e <BearbeiteRxDaten+0x42> |
83c: 46 c0 rjmp .+140 ; 0x8ca <__stack+0x6b> |
83e: 83 33 cpi r24, 0x33 ; 51 |
840: 91 05 cpc r25, r1 |
842: 34 f4 brge .+12 ; 0x850 <BearbeiteRxDaten+0x54> |
844: 80 33 cpi r24, 0x30 ; 48 |
846: 91 05 cpc r25, r1 |
848: 99 f0 breq .+38 ; 0x870 <__stack+0x11> |
84a: c1 97 sbiw r24, 0x31 ; 49 |
84c: 49 f1 breq .+82 ; 0x8a0 <__stack+0x41> |
84e: 8c c0 rjmp .+280 ; 0x968 <__stack+0x109> |
850: 84 34 cpi r24, 0x44 ; 68 |
852: 91 05 cpc r25, r1 |
854: 09 f4 brne .+2 ; 0x858 <BearbeiteRxDaten+0x5c> |
856: 6b c0 rjmp .+214 ; 0x92e <__stack+0xcf> |
858: 85 34 cpi r24, 0x45 ; 69 |
85a: 91 05 cpc r25, r1 |
85c: 24 f4 brge .+8 ; 0x866 <__stack+0x7> |
85e: c3 97 sbiw r24, 0x33 ; 51 |
860: 09 f4 brne .+2 ; 0x864 <__stack+0x5> |
862: 48 c0 rjmp .+144 ; 0x8f4 <__stack+0x95> |
864: 81 c0 rjmp .+258 ; 0x968 <__stack+0x109> |
866: 8b 34 cpi r24, 0x4B ; 75 |
868: 91 05 cpc r25, r1 |
86a: 09 f4 brne .+2 ; 0x86e <__stack+0xf> |
86c: 6c c0 rjmp .+216 ; 0x946 <__stack+0xe7> |
86e: 7c c0 rjmp .+248 ; 0x968 <__stack+0x109> |
{ |
case '0':// LCD-Zeile0 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
870: 20 91 98 00 lds r18, 0x0098 |
874: 43 e0 ldi r20, 0x03 ; 3 |
876: 6a e2 ldi r22, 0x2A ; 42 |
878: ce 01 movw r24, r28 |
87a: 01 96 adiw r24, 0x01 ; 1 |
87c: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
880: 1a a6 std Y+42, r1 ; 0x2a |
882: 19 a6 std Y+41, r1 ; 0x29 |
DisplayBusy = 1; |
884: 81 e0 ldi r24, 0x01 ; 1 |
886: 80 93 93 00 sts 0x0093, r24 |
LCD_printfxy(0,0,"%s",tmp_int_arr20); |
88a: 60 e0 ldi r22, 0x00 ; 0 |
88c: 86 2f mov r24, r22 |
88e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
892: ce 01 movw r24, r28 |
894: 01 96 adiw r24, 0x01 ; 1 |
896: 9f 93 push r25 |
898: 8f 93 push r24 |
89a: 88 ea ldi r24, 0xA8 ; 168 |
89c: 90 e0 ldi r25, 0x00 ; 0 |
89e: 3e c0 rjmp .+124 ; 0x91c <__stack+0xbd> |
break; |
case '1':// LCD-Zeile1 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8a0: 20 91 98 00 lds r18, 0x0098 |
8a4: 43 e0 ldi r20, 0x03 ; 3 |
8a6: 6a e2 ldi r22, 0x2A ; 42 |
8a8: ce 01 movw r24, r28 |
8aa: 01 96 adiw r24, 0x01 ; 1 |
8ac: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8b0: 1a a6 std Y+42, r1 ; 0x2a |
8b2: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,1,"%s",tmp_int_arr20); |
8b4: 61 e0 ldi r22, 0x01 ; 1 |
8b6: 80 e0 ldi r24, 0x00 ; 0 |
8b8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8bc: ce 01 movw r24, r28 |
8be: 01 96 adiw r24, 0x01 ; 1 |
8c0: 9f 93 push r25 |
8c2: 8f 93 push r24 |
8c4: 8b ea ldi r24, 0xAB ; 171 |
8c6: 90 e0 ldi r25, 0x00 ; 0 |
8c8: 29 c0 rjmp .+82 ; 0x91c <__stack+0xbd> |
break; |
case '2':// LCD-Zeile2 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8ca: 20 91 98 00 lds r18, 0x0098 |
8ce: 43 e0 ldi r20, 0x03 ; 3 |
8d0: 6a e2 ldi r22, 0x2A ; 42 |
8d2: ce 01 movw r24, r28 |
8d4: 01 96 adiw r24, 0x01 ; 1 |
8d6: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8da: 1a a6 std Y+42, r1 ; 0x2a |
8dc: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,2,"%s",tmp_int_arr20); |
8de: 62 e0 ldi r22, 0x02 ; 2 |
8e0: 80 e0 ldi r24, 0x00 ; 0 |
8e2: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8e6: ce 01 movw r24, r28 |
8e8: 01 96 adiw r24, 0x01 ; 1 |
8ea: 9f 93 push r25 |
8ec: 8f 93 push r24 |
8ee: 8e ea ldi r24, 0xAE ; 174 |
8f0: 90 e0 ldi r25, 0x00 ; 0 |
8f2: 14 c0 rjmp .+40 ; 0x91c <__stack+0xbd> |
break; |
case '3':// LCD-Zeile3 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8f4: 20 91 98 00 lds r18, 0x0098 |
8f8: 43 e0 ldi r20, 0x03 ; 3 |
8fa: 6a e2 ldi r22, 0x2A ; 42 |
8fc: ce 01 movw r24, r28 |
8fe: 01 96 adiw r24, 0x01 ; 1 |
900: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
904: 1a a6 std Y+42, r1 ; 0x2a |
906: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,3,"%s",tmp_int_arr20); |
908: 63 e0 ldi r22, 0x03 ; 3 |
90a: 80 e0 ldi r24, 0x00 ; 0 |
90c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
910: ce 01 movw r24, r28 |
912: 01 96 adiw r24, 0x01 ; 1 |
914: 9f 93 push r25 |
916: 8f 93 push r24 |
918: 81 eb ldi r24, 0xB1 ; 177 |
91a: 90 e0 ldi r25, 0x00 ; 0 |
91c: 9f 93 push r25 |
91e: 8f 93 push r24 |
920: 0e 94 e3 06 call 0xdc6 <_printf_P> |
break; |
924: 0f 90 pop r0 |
926: 0f 90 pop r0 |
928: 0f 90 pop r0 |
92a: 0f 90 pop r0 |
92c: 1d c0 rjmp .+58 ; 0x968 <__stack+0x109> |
case 'D': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugOut,sizeof(DebugOut),3,AnzahlEmpfangsBytes); |
92e: 20 91 98 00 lds r18, 0x0098 |
932: 43 e0 ldi r20, 0x03 ; 3 |
934: 6a e1 ldi r22, 0x1A ; 26 |
936: 83 ed ldi r24, 0xD3 ; 211 |
938: 90 e0 ldi r25, 0x00 ; 0 |
93a: 0e 94 92 03 call 0x724 <Decode64> |
PORTB = DebugOut.Digital[1]; |
93e: 80 91 d4 00 lds r24, 0x00D4 |
942: 88 bb out 0x18, r24 ; 24 |
break; |
944: 11 c0 rjmp .+34 ; 0x968 <__stack+0x109> |
case 'K': // Debug Eingangsdaten |
Decode64(tmp_char_arr3,sizeof(tmp_char_arr3),3,AnzahlEmpfangsBytes); |
946: 20 91 98 00 lds r18, 0x0098 |
94a: 43 e0 ldi r20, 0x03 ; 3 |
94c: 64 2f mov r22, r20 |
94e: ce 01 movw r24, r28 |
950: 8b 96 adiw r24, 0x2b ; 43 |
952: 0e 94 92 03 call 0x724 <Decode64> |
TX_DigTransferKanalL = tmp_char_arr3[0]; |
956: 8b a5 ldd r24, Y+43 ; 0x2b |
958: 80 93 96 00 sts 0x0096, r24 |
TX_DigTransferKanalH = tmp_char_arr3[1]; |
95c: 8c a5 ldd r24, Y+44 ; 0x2c |
95e: 80 93 95 00 sts 0x0095, r24 |
TX_DigTransferKanalDaten = tmp_char_arr3[2]; |
962: 8d a5 ldd r24, Y+45 ; 0x2d |
964: 80 93 94 00 sts 0x0094, r24 |
968: ad 96 adiw r28, 0x2d ; 45 |
96a: 0f b6 in r0, 0x3f ; 63 |
96c: f8 94 cli |
96e: de bf out 0x3e, r29 ; 62 |
970: 0f be out 0x3f, r0 ; 63 |
972: cd bf out 0x3d, r28 ; 61 |
974: df 91 pop r29 |
976: cf 91 pop r28 |
978: 08 95 ret |
0000097a <uart_putchar>: |
//if(RxdBuffer[1] == 'b') LCD_printfxy(0,0,"b:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
//if(RxdBuffer[1] == 'c') LCD_printfxy(0,1,"c:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
break; |
/* |
unsigned char Digital[13]; // 0 = Taster, Hauptkarte |
// 1 + 2 = Debugkanäle |
// 3 = Digin, Hauptkarte |
// 4 = Relais, Hauptkarte |
// 5 + 6 = Extern IO1 (12Bit ein 4 Bit aus) |
// 7 + 8 = Extern IO2 (12Bit ein 4 Bit aus) |
// 9 + 10 = Extern IO3 (12Bit ein 4 Bit aus) |
// 11 + 12= Extern IO4 (12Bit ein 4 Bit aus) |
*/ |
/* case 'd': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
} |
break; |
case 'g': // "Get"-Anforderung für Debug-Daten // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'u': // Uhr stellen |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
ZEITWERT = tmp_int_arr2[0]; |
SEK = tmp_int_arr2[1]; |
make_time_variables(ZEITWERT); |
RTC_SetTime(STD, MIN, SEK); |
RTC_SetWDay(TAG); |
break; |
case 'i': // Intervalle für die Datenübertragung |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
Debug_Timer_Intervall = tmp_int_arr2[0]; |
Debug_Display_Intervall = tmp_int_arr2[1]; |
SendeDummyDaten = 1; |
break; |
case 's': // single Step 1 = Stop 2 = noch einen Zyklus 3 = noch 2 Zyklen |
Decode64((unsigned char *) &tmp_int_arr1[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
SingleStep = tmp_int_arr1[0]; |
break; |
*/ |
} |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
97a: cf 93 push r28 |
97c: c8 2f mov r28, r24 |
if (c == '\n') |
97e: 8a 30 cpi r24, 0x0A ; 10 |
980: 19 f4 brne .+6 ; 0x988 <uart_putchar+0xe> |
uart_putchar('\r'); |
982: 8d e0 ldi r24, 0x0D ; 13 |
984: 0e 94 bd 04 call 0x97a <uart_putchar> |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
988: 5d 9b sbis 0x0b, 5 ; 11 |
98a: fe cf rjmp .-4 ; 0x988 <uart_putchar+0xe> |
//Ausgabe des Zeichens |
UDR = c; |
98c: cc b9 out 0x0c, r28 ; 12 |
return (0); |
} |
98e: 80 e0 ldi r24, 0x00 ; 0 |
990: 90 e0 ldi r25, 0x00 ; 0 |
992: cf 91 pop r28 |
994: 08 95 ret |
00000996 <WriteProgramData>: |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
996: 08 95 ret |
00000998 <UART_Init>: |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
998: 88 e1 ldi r24, 0x18 ; 24 |
99a: 8a b9 out 0x0a, r24 ; 10 |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
99c: 59 9a sbi 0x0b, 1 ; 11 |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
99e: 57 9a sbi 0x0a, 7 ; 10 |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
9a0: 56 9a sbi 0x0a, 6 ; 10 |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
9a2: 81 e2 ldi r24, 0x21 ; 33 |
9a4: 89 b9 out 0x09, r24 ; 9 |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
9a6: 60 e0 ldi r22, 0x00 ; 0 |
9a8: 70 e0 ldi r23, 0x00 ; 0 |
9aa: 8d eb ldi r24, 0xBD ; 189 |
9ac: 94 e0 ldi r25, 0x04 ; 4 |
9ae: 0e 94 71 0c call 0x18e2 <fdevopen> |
9b2: 08 95 ret |
000009b4 <SendeRemoteTasten>: |
//sbi(PORTD,4); |
} |
/* |
struct str_DebugIn |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
unsigned int Analog[4]; |
}; |
*/ |
void SendeRemoteTasten(unsigned char keys) |
{ |
9b4: 98 2f mov r25, r24 |
while(!UebertragungAbgeschlossen); // evtl warten |
9b6: 80 91 6e 00 lds r24, 0x006E |
9ba: 88 23 and r24, r24 |
9bc: e1 f3 breq .-8 ; 0x9b6 <SendeRemoteTasten+0x2> |
DebugIn.RemoteTasten = keys; |
9be: 90 93 c0 00 sts 0x00C0, r25 |
DebugIn.Analog[0] = AnalogWerte[0]; |
9c2: 80 91 ca 01 lds r24, 0x01CA |
9c6: 90 91 cb 01 lds r25, 0x01CB |
9ca: 90 93 c2 00 sts 0x00C2, r25 |
9ce: 80 93 c1 00 sts 0x00C1, r24 |
DebugIn.Analog[1] = AnalogWerte[1]; |
9d2: 80 91 cc 01 lds r24, 0x01CC |
9d6: 90 91 cd 01 lds r25, 0x01CD |
9da: 90 93 c4 00 sts 0x00C4, r25 |
9de: 80 93 c3 00 sts 0x00C3, r24 |
DebugIn.Analog[2] = AnalogWerte[2]; |
9e2: 80 91 ce 01 lds r24, 0x01CE |
9e6: 90 91 cf 01 lds r25, 0x01CF |
9ea: 90 93 c6 00 sts 0x00C6, r25 |
9ee: 80 93 c5 00 sts 0x00C5, r24 |
DebugIn.Analog[3] = IR_Code; |
9f2: 80 91 c7 01 lds r24, 0x01C7 |
9f6: 90 91 c8 01 lds r25, 0x01C8 |
9fa: 90 93 c8 00 sts 0x00C8, r25 |
9fe: 80 93 c7 00 sts 0x00C7, r24 |
SendOutData('d',SlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
a02: 2b e0 ldi r18, 0x0B ; 11 |
a04: 4e eb ldi r20, 0xBE ; 190 |
a06: 50 e0 ldi r21, 0x00 ; 0 |
a08: 60 91 64 00 lds r22, 0x0064 |
a0c: 84 e6 ldi r24, 0x64 ; 100 |
a0e: 0e 94 1e 03 call 0x63c <SendOutData> |
a12: 08 95 ret |
00000a14 <SendIntervalle>: |
} |
void SendIntervalle(unsigned int debug, unsigned int disp) |
{ |
a14: cf 93 push r28 |
a16: df 93 push r29 |
a18: cd b7 in r28, 0x3d ; 61 |
a1a: de b7 in r29, 0x3e ; 62 |
a1c: 24 97 sbiw r28, 0x04 ; 4 |
a1e: 0f b6 in r0, 0x3f ; 63 |
a20: f8 94 cli |
a22: de bf out 0x3e, r29 ; 62 |
a24: 0f be out 0x3f, r0 ; 63 |
a26: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = debug; |
a28: 9a 83 std Y+2, r25 ; 0x02 |
a2a: 89 83 std Y+1, r24 ; 0x01 |
tmp_int_arr2[1] = disp; |
a2c: 7c 83 std Y+4, r23 ; 0x04 |
a2e: 6b 83 std Y+3, r22 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a30: 80 91 6e 00 lds r24, 0x006E |
a34: 88 23 and r24, r24 |
a36: e1 f3 breq .-8 ; 0xa30 <SendIntervalle+0x1c> |
SendOutData('i',SlaveAdresse,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); |
a38: 24 e0 ldi r18, 0x04 ; 4 |
a3a: ae 01 movw r20, r28 |
a3c: 4f 5f subi r20, 0xFF ; 255 |
a3e: 5f 4f sbci r21, 0xFF ; 255 |
a40: 60 91 64 00 lds r22, 0x0064 |
a44: 89 e6 ldi r24, 0x69 ; 105 |
a46: 0e 94 1e 03 call 0x63c <SendOutData> |
a4a: 24 96 adiw r28, 0x04 ; 4 |
a4c: 0f b6 in r0, 0x3f ; 63 |
a4e: f8 94 cli |
a50: de bf out 0x3e, r29 ; 62 |
a52: 0f be out 0x3f, r0 ; 63 |
a54: cd bf out 0x3d, r28 ; 61 |
a56: df 91 pop r29 |
a58: cf 91 pop r28 |
a5a: 08 95 ret |
00000a5c <ClearIntervalle>: |
} |
void ClearIntervalle(void) |
{ |
a5c: cf 93 push r28 |
a5e: df 93 push r29 |
a60: cd b7 in r28, 0x3d ; 61 |
a62: de b7 in r29, 0x3e ; 62 |
a64: 24 97 sbiw r28, 0x04 ; 4 |
a66: 0f b6 in r0, 0x3f ; 63 |
a68: f8 94 cli |
a6a: de bf out 0x3e, r29 ; 62 |
a6c: 0f be out 0x3f, r0 ; 63 |
a6e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = 0; |
a70: 1a 82 std Y+2, r1 ; 0x02 |
a72: 19 82 std Y+1, r1 ; 0x01 |
tmp_int_arr2[1] = 0; |
a74: 1c 82 std Y+4, r1 ; 0x04 |
a76: 1b 82 std Y+3, r1 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a78: 80 91 6e 00 lds r24, 0x006E |
a7c: 88 23 and r24, r24 |
a7e: e1 f3 breq .-8 ; 0xa78 <ClearIntervalle+0x1c> |
SendOutData('i',0,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); // 0= an alle |
a80: 24 e0 ldi r18, 0x04 ; 4 |
a82: ae 01 movw r20, r28 |
a84: 4f 5f subi r20, 0xFF ; 255 |
a86: 5f 4f sbci r21, 0xFF ; 255 |
a88: 60 e0 ldi r22, 0x00 ; 0 |
a8a: 89 e6 ldi r24, 0x69 ; 105 |
a8c: 0e 94 1e 03 call 0x63c <SendOutData> |
a90: 24 96 adiw r28, 0x04 ; 4 |
a92: 0f b6 in r0, 0x3f ; 63 |
a94: f8 94 cli |
a96: de bf out 0x3e, r29 ; 62 |
a98: 0f be out 0x3f, r0 ; 63 |
a9a: cd bf out 0x3d, r28 ; 61 |
a9c: df 91 pop r29 |
a9e: cf 91 pop r28 |
aa0: 08 95 ret |
00000aa2 <DatenUebertragung>: |
} |
void DatenUebertragung(unsigned char key) |
{ |
aa2: cf 93 push r28 |
aa4: df 93 push r29 |
aa6: cd b7 in r28, 0x3d ; 61 |
aa8: de b7 in r29, 0x3e ; 62 |
aaa: 25 97 sbiw r28, 0x05 ; 5 |
aac: 0f b6 in r0, 0x3f ; 63 |
aae: f8 94 cli |
ab0: de bf out 0x3e, r29 ; 62 |
ab2: 0f be out 0x3f, r0 ; 63 |
ab4: cd bf out 0x3d, r28 ; 61 |
ab6: 98 2f mov r25, r24 |
static unsigned char state = 1; |
unsigned char temp_1[1]; |
unsigned char temp_2[2]; |
unsigned char temp_3[3]; |
unsigned int tmp_int_arr2[2]; |
while(!UebertragungAbgeschlossen); // evtl warten |
ab8: 80 91 6e 00 lds r24, 0x006E |
abc: 88 23 and r24, r24 |
abe: e1 f3 breq .-8 ; 0xab8 <DatenUebertragung+0x16> |
static unsigned char KanalSlave = 1; |
if(PollDisplay) |
ac0: 80 91 ed 00 lds r24, 0x00ED |
ac4: 88 23 and r24, r24 |
ac6: e1 f0 breq .+56 ; 0xb00 <DatenUebertragung+0x5e> |
{ |
temp_2[0] = key; |
ac8: 9c 83 std Y+4, r25 ; 0x04 |
temp_2[1] = 6; |
aca: 86 e0 ldi r24, 0x06 ; 6 |
acc: 8d 83 std Y+5, r24 ; 0x05 |
if(DisplayZeilen == 4) temp_2[1] = 4 + 9; // anzahl Zeilen --> + 8 bedeutet: ersten Pollingzyklus freilassen |
ace: 80 91 65 00 lds r24, 0x0065 |
ad2: 84 30 cpi r24, 0x04 ; 4 |
ad4: 11 f4 brne .+4 ; 0xada <DatenUebertragung+0x38> |
ad6: 8d e0 ldi r24, 0x0D ; 13 |
ad8: 01 c0 rjmp .+2 ; 0xadc <DatenUebertragung+0x3a> |
else temp_2[1] = 2 + 9; |
ada: 8b e0 ldi r24, 0x0B ; 11 |
adc: 8d 83 std Y+5, r24 ; 0x05 |
SendOutData('h',SlaveAdresse,(unsigned char *) &temp_2,sizeof(temp_2)); |
ade: 22 e0 ldi r18, 0x02 ; 2 |
ae0: ae 01 movw r20, r28 |
ae2: 4c 5f subi r20, 0xFC ; 252 |
ae4: 5f 4f sbci r21, 0xFF ; 255 |
ae6: 60 91 64 00 lds r22, 0x0064 |
aea: 88 e6 ldi r24, 0x68 ; 104 |
aec: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = '0'; |
af0: 80 e3 ldi r24, 0x30 ; 48 |
af2: 80 93 6d 00 sts 0x006D, r24 |
DisplayBusy = 90; |
af6: 8a e5 ldi r24, 0x5A ; 90 |
af8: 80 93 93 00 sts 0x0093, r24 |
PollDisplay = 0; |
afc: 10 92 ed 00 sts 0x00ED, r1 |
} |
if(!DisplayBusy) |
b00: 60 91 93 00 lds r22, 0x0093 |
b04: 66 23 and r22, r22 |
b06: e1 f5 brne .+120 ; 0xb80 <DatenUebertragung+0xde> |
switch(state) |
b08: 80 91 6f 00 lds r24, 0x006F |
b0c: 99 27 eor r25, r25 |
b0e: 81 30 cpi r24, 0x01 ; 1 |
b10: 91 05 cpc r25, r1 |
b12: 19 f0 breq .+6 ; 0xb1a <DatenUebertragung+0x78> |
b14: 02 97 sbiw r24, 0x02 ; 2 |
b16: e9 f0 breq .+58 ; 0xb52 <DatenUebertragung+0xb0> |
b18: 30 c0 rjmp .+96 ; 0xb7a <DatenUebertragung+0xd8> |
{ |
case 1:// Display |
SendOutData('k',KanalSlave,(unsigned char *) &temp_3,sizeof(temp_3)); |
b1a: 23 e0 ldi r18, 0x03 ; 3 |
b1c: ae 01 movw r20, r28 |
b1e: 4f 5f subi r20, 0xFF ; 255 |
b20: 5f 4f sbci r21, 0xFF ; 255 |
b22: 60 91 70 00 lds r22, 0x0070 |
b26: 8b e6 ldi r24, 0x6B ; 107 |
b28: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = 'K'; |
b2c: 8b e4 ldi r24, 0x4B ; 75 |
b2e: 80 93 6d 00 sts 0x006D, r24 |
if(++KanalSlave > AnzahlTeilnehmer) KanalSlave = 1; |
b32: 80 91 70 00 lds r24, 0x0070 |
b36: 8f 5f subi r24, 0xFF ; 255 |
b38: 80 93 70 00 sts 0x0070, r24 |
b3c: 90 91 6c 00 lds r25, 0x006C |
b40: 98 17 cp r25, r24 |
b42: 18 f4 brcc .+6 ; 0xb4a <DatenUebertragung+0xa8> |
b44: 81 e0 ldi r24, 0x01 ; 1 |
b46: 80 93 70 00 sts 0x0070, r24 |
state++; |
b4a: 80 91 6f 00 lds r24, 0x006F |
b4e: 8f 5f subi r24, 0xFF ; 255 |
b50: 15 c0 rjmp .+42 ; 0xb7c <DatenUebertragung+0xda> |
break; |
case 2: |
temp_3[0] = TX_DigTransferKanalL; |
b52: 80 91 96 00 lds r24, 0x0096 |
b56: 89 83 std Y+1, r24 ; 0x01 |
temp_3[1] = TX_DigTransferKanalH; |
b58: 80 91 95 00 lds r24, 0x0095 |
b5c: 8a 83 std Y+2, r24 ; 0x02 |
temp_3[2] = TX_DigTransferKanalDaten; |
b5e: 80 91 94 00 lds r24, 0x0094 |
b62: 8b 83 std Y+3, r24 ; 0x03 |
SendOutData('l',0,(unsigned char *) &temp_3,sizeof(temp_3)); |
b64: 23 e0 ldi r18, 0x03 ; 3 |
b66: ae 01 movw r20, r28 |
b68: 4f 5f subi r20, 0xFF ; 255 |
b6a: 5f 4f sbci r21, 0xFF ; 255 |
b6c: 8c e6 ldi r24, 0x6C ; 108 |
b6e: 0e 94 1e 03 call 0x63c <SendOutData> |
AntwortEingetroffen = 1; // erwarte keine Antwort |
b72: 81 e0 ldi r24, 0x01 ; 1 |
b74: 80 93 92 00 sts 0x0092, r24 |
b78: 01 c0 rjmp .+2 ; 0xb7c <DatenUebertragung+0xda> |
state = 1; |
break; |
default: state = 1; |
b7a: 81 e0 ldi r24, 0x01 ; 1 |
b7c: 80 93 6f 00 sts 0x006F, r24 |
b80: 25 96 adiw r28, 0x05 ; 5 |
b82: 0f b6 in r0, 0x3f ; 63 |
b84: f8 94 cli |
b86: de bf out 0x3e, r29 ; 62 |
b88: 0f be out 0x3f, r0 ; 63 |
b8a: cd bf out 0x3d, r28 ; 61 |
b8c: df 91 pop r29 |
b8e: cf 91 pop r28 |
b90: 08 95 ret |
00000b92 <_long_delay>: |
#include "main.h" |
void _long_delay(void) |
{ |
long t = 5000; |
b92: 88 e8 ldi r24, 0x88 ; 136 |
b94: 93 e1 ldi r25, 0x13 ; 19 |
b96: a0 e0 ldi r26, 0x00 ; 0 |
b98: b0 e0 ldi r27, 0x00 ; 0 |
while (t--); |
b9a: 03 97 sbiw r24, 0x03 ; 3 |
b9c: a1 09 sbc r26, r1 |
b9e: b1 09 sbc r27, r1 |
ba0: 8f 3f cpi r24, 0xFF ; 255 |
ba2: 2f ef ldi r18, 0xFF ; 255 |
ba4: 92 07 cpc r25, r18 |
ba6: 2f ef ldi r18, 0xFF ; 255 |
ba8: a2 07 cpc r26, r18 |
baa: 2f ef ldi r18, 0xFF ; 255 |
bac: b2 07 cpc r27, r18 |
bae: a9 f7 brne .-22 ; 0xb9a <_long_delay+0x8> |
bb0: 08 95 ret |
00000bb2 <_short_delay>: |
} |
void _short_delay(void) |
{ |
int t = 500; |
bb2: 84 ef ldi r24, 0xF4 ; 244 |
bb4: 91 e0 ldi r25, 0x01 ; 1 |
while (t--); |
bb6: 03 97 sbiw r24, 0x03 ; 3 |
bb8: 2f ef ldi r18, 0xFF ; 255 |
bba: 8f 3f cpi r24, 0xFF ; 255 |
bbc: 92 07 cpc r25, r18 |
bbe: d9 f7 brne .-10 ; 0xbb6 <_short_delay+0x4> |
bc0: 08 95 ret |
00000bc2 <_lcd_write_command>: |
} |
void _lcd_write_command(unsigned char data) |
{ |
bc2: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bc4: 80 7f andi r24, 0xF0 ; 240 |
bc6: 98 2f mov r25, r24 |
bc8: 94 60 ori r25, 0x04 ; 4 |
bca: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bcc: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bce: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bd0: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bd2: 82 2f mov r24, r18 |
bd4: 99 27 eor r25, r25 |
bd6: 34 e0 ldi r19, 0x04 ; 4 |
bd8: 88 0f add r24, r24 |
bda: 99 1f adc r25, r25 |
bdc: 3a 95 dec r19 |
bde: e1 f7 brne .-8 ; 0xbd8 <_lcd_write_command+0x16> |
be0: 84 60 ori r24, 0x04 ; 4 |
be2: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
be4: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4); |
be6: 22 95 swap r18 |
be8: 20 7f andi r18, 0xF0 ; 240 |
bea: 25 bb out 0x15, r18 ; 21 |
bec: 08 95 ret |
00000bee <_lcd_write_4bit>: |
} |
void _lcd_write_4bit(unsigned char data) |
{ |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bee: 28 2f mov r18, r24 |
bf0: 33 27 eor r19, r19 |
bf2: 44 e0 ldi r20, 0x04 ; 4 |
bf4: 22 0f add r18, r18 |
bf6: 33 1f adc r19, r19 |
bf8: 4a 95 dec r20 |
bfa: e1 f7 brne .-8 ; 0xbf4 <_lcd_write_4bit+0x6> |
bfc: 92 2f mov r25, r18 |
bfe: 94 60 ori r25, 0x04 ; 4 |
c00: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
c02: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4); |
c04: 82 95 swap r24 |
c06: 80 7f andi r24, 0xF0 ; 240 |
c08: 85 bb out 0x15, r24 ; 21 |
c0a: 08 95 ret |
00000c0c <lcd_write_byte>: |
} |
void lcd_write_byte(unsigned char data) |
{ |
c0c: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN | DISPLAY_RS; |
c0e: 80 7f andi r24, 0xF0 ; 240 |
c10: 98 2f mov r25, r24 |
c12: 95 60 ori r25, 0x05 ; 5 |
c14: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_RS; |
c16: 81 60 ori r24, 0x01 ; 1 |
c18: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN | DISPLAY_RS; |
c1a: 82 2f mov r24, r18 |
c1c: 99 27 eor r25, r25 |
c1e: 54 e0 ldi r21, 0x04 ; 4 |
c20: 88 0f add r24, r24 |
c22: 99 1f adc r25, r25 |
c24: 5a 95 dec r21 |
c26: e1 f7 brne .-8 ; 0xc20 <lcd_write_byte+0x14> |
c28: 28 2f mov r18, r24 |
c2a: 25 60 ori r18, 0x05 ; 5 |
c2c: 25 bb out 0x15, r18 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_RS; |
c2e: 81 60 ori r24, 0x01 ; 1 |
c30: 85 bb out 0x15, r24 ; 21 |
c32: 08 95 ret |
00000c34 <my_pput>: |
} |
int my_pput(int zeichen) |
{ |
lcd_write_byte((char) zeichen); |
c34: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
c38: 81 e0 ldi r24, 0x01 ; 1 |
c3a: 90 e0 ldi r25, 0x00 ; 0 |
c3c: 08 95 ret |
00000c3e <LCD_Init>: |
// initialize the LCD controller |
void LCD_Init(void) |
{ |
LCD_PORT_DDR = 0xff;//0xf0 | DISPLAY_RS | DISPLAY_EN; |
c3e: 8f ef ldi r24, 0xFF ; 255 |
c40: 84 bb out 0x14, r24 ; 20 |
_long_delay(); |
c42: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c46: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c4a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c4e: 83 e0 ldi r24, 0x03 ; 3 |
c50: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c54: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c58: 83 e0 ldi r24, 0x03 ; 3 |
c5a: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c5e: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c62: 83 e0 ldi r24, 0x03 ; 3 |
c64: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c68: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x02); // jetzt 4 Bit |
c6c: 82 e0 ldi r24, 0x02 ; 2 |
c6e: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c72: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x28); // 4 Bit Zweizeilig |
c76: 88 e2 ldi r24, 0x28 ; 40 |
c78: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c7c: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08); // Display aus |
c80: 88 e0 ldi r24, 0x08 ; 8 |
c82: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c86: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x01); // Clear |
c8a: 81 e0 ldi r24, 0x01 ; 1 |
c8c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c90: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x06); //Entry mode |
c94: 86 e0 ldi r24, 0x06 ; 6 |
c96: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c9a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08 + 4); // Display an |
c9e: 8c e0 ldi r24, 0x0C ; 12 |
ca0: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
ca4: 0e 94 c9 05 call 0xb92 <_long_delay> |
ca8: 08 95 ret |
00000caa <LCD_Gotoxy>: |
} |
void LCD_Gotoxy(unsigned char x , unsigned char y) |
{ |
caa: 1f 93 push r17 |
cac: cf 93 push r28 |
cae: c8 2f mov r28, r24 |
cb0: 16 2f mov r17, r22 |
_short_delay(); |
cb2: 0e 94 d9 05 call 0xbb2 <_short_delay> |
switch(y) |
cb6: 81 2f mov r24, r17 |
cb8: 99 27 eor r25, r25 |
cba: 81 30 cpi r24, 0x01 ; 1 |
cbc: 91 05 cpc r25, r1 |
cbe: 79 f0 breq .+30 ; 0xcde <LCD_Gotoxy+0x34> |
cc0: 82 30 cpi r24, 0x02 ; 2 |
cc2: 91 05 cpc r25, r1 |
cc4: 1c f4 brge .+6 ; 0xccc <LCD_Gotoxy+0x22> |
cc6: 89 2b or r24, r25 |
cc8: 39 f0 breq .+14 ; 0xcd8 <LCD_Gotoxy+0x2e> |
cca: 13 c0 rjmp .+38 ; 0xcf2 <LCD_Gotoxy+0x48> |
ccc: 82 30 cpi r24, 0x02 ; 2 |
cce: 91 05 cpc r25, r1 |
cd0: 49 f0 breq .+18 ; 0xce4 <LCD_Gotoxy+0x3a> |
cd2: 03 97 sbiw r24, 0x03 ; 3 |
cd4: 51 f0 breq .+20 ; 0xcea <LCD_Gotoxy+0x40> |
cd6: 0d c0 rjmp .+26 ; 0xcf2 <LCD_Gotoxy+0x48> |
{ case 0 : _lcd_write_command(x + 0x80); break; |
cd8: 8c 2f mov r24, r28 |
cda: 80 58 subi r24, 0x80 ; 128 |
cdc: 08 c0 rjmp .+16 ; 0xcee <LCD_Gotoxy+0x44> |
case 1 : _lcd_write_command(x + 0xC0); break; |
cde: 8c 2f mov r24, r28 |
ce0: 80 54 subi r24, 0x40 ; 64 |
ce2: 05 c0 rjmp .+10 ; 0xcee <LCD_Gotoxy+0x44> |
case 2 : _lcd_write_command(x + (0x80 + 20)); break; |
ce4: 8c 2f mov r24, r28 |
ce6: 8c 56 subi r24, 0x6C ; 108 |
ce8: 02 c0 rjmp .+4 ; 0xcee <LCD_Gotoxy+0x44> |
case 3 : _lcd_write_command(x + (0xC0 + 20)); break; |
cea: 8c 2f mov r24, r28 |
cec: 8c 52 subi r24, 0x2C ; 44 |
cee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
cf2: cf 91 pop r28 |
cf4: 1f 91 pop r17 |
cf6: 08 95 ret |
00000cf8 <LCD_Write>: |
} |
} |
void LCD_Write(unsigned char *this_text) |
{ |
cf8: 1f 93 push r17 |
cfa: cf 93 push r28 |
cfc: df 93 push r29 |
cfe: ec 01 movw r28, r24 |
unsigned char i = 0; |
d00: 10 e0 ldi r17, 0x00 ; 0 |
while(this_text[i] != 0) |
{ |
lcd_write_byte(this_text[i++]); |
_long_delay(); |
d02: 88 81 ld r24, Y |
d04: 88 23 and r24, r24 |
d06: 79 f0 breq .+30 ; 0xd26 <LCD_Write+0x2e> |
d08: fe 01 movw r30, r28 |
d0a: e1 0f add r30, r17 |
d0c: f1 1d adc r31, r1 |
d0e: 1f 5f subi r17, 0xFF ; 255 |
d10: 80 81 ld r24, Z |
d12: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
d16: 0e 94 c9 05 call 0xb92 <_long_delay> |
d1a: fe 01 movw r30, r28 |
d1c: e1 0f add r30, r17 |
d1e: f1 1d adc r31, r1 |
d20: 80 81 ld r24, Z |
d22: 88 23 and r24, r24 |
d24: 89 f7 brne .-30 ; 0xd08 <LCD_Write+0x10> |
d26: df 91 pop r29 |
d28: cf 91 pop r28 |
d2a: 1f 91 pop r17 |
d2c: 08 95 ret |
00000d2e <LCD_Putchar>: |
} |
} |
char LCD_Putchar(char zeichen) |
{ |
d2e: 1f 93 push r17 |
d30: 18 2f mov r17, r24 |
_short_delay(); |
d32: 0e 94 d9 05 call 0xbb2 <_short_delay> |
lcd_write_byte((char) zeichen); |
d36: 81 2f mov r24, r17 |
d38: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
d3c: 81 e0 ldi r24, 0x01 ; 1 |
d3e: 90 e0 ldi r25, 0x00 ; 0 |
d40: 1f 91 pop r17 |
d42: 08 95 ret |
00000d44 <PRINT>: |
#include "old_macros.h" |
//#define LIGHTPRINTF |
void PRINT(const char * ptr, unsigned int len) { |
d44: 0f 93 push r16 |
d46: 1f 93 push r17 |
d48: cf 93 push r28 |
d4a: df 93 push r29 |
d4c: 8c 01 movw r16, r24 |
d4e: eb 01 movw r28, r22 |
for(;len;len--) |
d50: 67 2b or r22, r23 |
d52: 39 f0 breq .+14 ; 0xd62 <PRINT+0x1e> |
LCD_Putchar(*ptr++); |
d54: f8 01 movw r30, r16 |
d56: 81 91 ld r24, Z+ |
d58: 8f 01 movw r16, r30 |
d5a: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d5e: 21 97 sbiw r28, 0x01 ; 1 |
d60: c9 f7 brne .-14 ; 0xd54 <PRINT+0x10> |
d62: df 91 pop r29 |
d64: cf 91 pop r28 |
d66: 1f 91 pop r17 |
d68: 0f 91 pop r16 |
d6a: 08 95 ret |
00000d6c <PRINTP>: |
} |
void PRINTP(const char * ptr, unsigned int len) { |
d6c: 0f 93 push r16 |
d6e: 1f 93 push r17 |
d70: cf 93 push r28 |
d72: df 93 push r29 |
d74: 8c 01 movw r16, r24 |
d76: eb 01 movw r28, r22 |
for(;len;len--) |
d78: 67 2b or r22, r23 |
d7a: 41 f0 breq .+16 ; 0xd8c <PRINTP+0x20> |
// LCD_Putchar(PRG_RDB(ptr++)); |
LCD_Putchar(pgm_read_byte(ptr++)); |
d7c: f8 01 movw r30, r16 |
d7e: 0f 5f subi r16, 0xFF ; 255 |
d80: 1f 4f sbci r17, 0xFF ; 255 |
d82: 84 91 lpm r24, Z |
d84: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d88: 21 97 sbiw r28, 0x01 ; 1 |
d8a: c1 f7 brne .-16 ; 0xd7c <PRINTP+0x10> |
d8c: df 91 pop r29 |
d8e: cf 91 pop r28 |
d90: 1f 91 pop r17 |
d92: 0f 91 pop r16 |
d94: 08 95 ret |
00000d96 <PAD_SP>: |
} |
void PAD_SP(signed char howmany) { |
d96: cf 93 push r28 |
d98: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
d9a: 18 16 cp r1, r24 |
d9c: 34 f4 brge .+12 ; 0xdaa <PAD_SP+0x14> |
LCD_Putchar(' '); |
d9e: 80 e2 ldi r24, 0x20 ; 32 |
da0: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
da4: c1 50 subi r28, 0x01 ; 1 |
da6: 1c 16 cp r1, r28 |
da8: d4 f3 brlt .-12 ; 0xd9e <PAD_SP+0x8> |
daa: cf 91 pop r28 |
dac: 08 95 ret |
00000dae <PAD_0>: |
} |
void PAD_0(signed char howmany) { |
dae: cf 93 push r28 |
db0: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
db2: 18 16 cp r1, r24 |
db4: 34 f4 brge .+12 ; 0xdc2 <PAD_0+0x14> |
LCD_Putchar('0'); |
db6: 80 e3 ldi r24, 0x30 ; 48 |
db8: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
dbc: c1 50 subi r28, 0x01 ; 1 |
dbe: 1c 16 cp r1, r28 |
dc0: d4 f3 brlt .-12 ; 0xdb6 <PAD_0+0x8> |
dc2: cf 91 pop r28 |
dc4: 08 95 ret |
00000dc6 <_printf_P>: |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
dc6: 2f 92 push r2 |
dc8: 3f 92 push r3 |
dca: 4f 92 push r4 |
dcc: 5f 92 push r5 |
dce: 6f 92 push r6 |
dd0: 7f 92 push r7 |
dd2: 8f 92 push r8 |
dd4: 9f 92 push r9 |
dd6: af 92 push r10 |
dd8: bf 92 push r11 |
dda: cf 92 push r12 |
ddc: df 92 push r13 |
dde: ef 92 push r14 |
de0: ff 92 push r15 |
de2: 0f 93 push r16 |
de4: 1f 93 push r17 |
de6: cf 93 push r28 |
de8: df 93 push r29 |
dea: cd b7 in r28, 0x3d ; 61 |
dec: de b7 in r29, 0x3e ; 62 |
dee: e0 97 sbiw r28, 0x30 ; 48 |
df0: 0f b6 in r0, 0x3f ; 63 |
df2: f8 94 cli |
df4: de bf out 0x3e, r29 ; 62 |
df6: 0f be out 0x3f, r0 ; 63 |
df8: cd bf out 0x3d, r28 ; 61 |
dfa: a5 e4 ldi r26, 0x45 ; 69 |
dfc: 6a 2e mov r6, r26 |
dfe: 71 2c mov r7, r1 |
e00: 6c 0e add r6, r28 |
e02: 7d 1e adc r7, r29 |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
e04: 1c a6 std Y+44, r1 ; 0x2c |
e06: 1d a6 std Y+45, r1 ; 0x2d |
e08: 1e a6 std Y+46, r1 ; 0x2e |
e0a: 1f a6 std Y+47, r1 ; 0x2f |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
va_start(ap, fmt0); |
fmt = fmt0; |
e0c: d3 01 movw r26, r6 |
e0e: ad 90 ld r10, X+ |
e10: bd 90 ld r11, X+ |
e12: 3d 01 movw r6, r26 |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
e14: c5 01 movw r24, r10 |
e16: 05 c0 rjmp .+10 ; 0xe22 <_printf_P+0x5c> |
e18: 05 32 cpi r16, 0x25 ; 37 |
e1a: 39 f0 breq .+14 ; 0xe2a <_printf_P+0x64> |
e1c: 08 94 sec |
e1e: a1 1c adc r10, r1 |
e20: b1 1c adc r11, r1 |
e22: f5 01 movw r30, r10 |
e24: 04 91 lpm r16, Z |
e26: 00 23 and r16, r16 |
e28: b9 f7 brne .-18 ; 0xe18 <_printf_P+0x52> |
/* void */; |
if ((n = fmt - fmark) != 0) { |
e2a: b5 01 movw r22, r10 |
e2c: 68 1b sub r22, r24 |
e2e: 79 0b sbc r23, r25 |
e30: 11 f0 breq .+4 ; 0xe36 <_printf_P+0x70> |
PRINTP(fmark, n); |
e32: 0e 94 b6 06 call 0xd6c <PRINTP> |
} |
if (ch == '\0') |
e36: 00 23 and r16, r16 |
e38: 09 f4 brne .+2 ; 0xe3c <_printf_P+0x76> |
e3a: 30 c2 rjmp .+1120 ; 0x129c <_printf_P+0x4d6> |
goto done; |
fmt++; /* skip over '%' */ |
e3c: 08 94 sec |
e3e: a1 1c adc r10, r1 |
e40: b1 1c adc r11, r1 |
flags = 0; |
e42: 55 24 eor r5, r5 |
dprec = 0; |
e44: 58 aa std Y+48, r5 ; 0x30 |
width = 0; |
e46: 25 2c mov r2, r5 |
prec = -1; |
e48: 1f ef ldi r17, 0xFF ; 255 |
sign = '\0'; |
e4a: 59 a6 std Y+41, r5 ; 0x29 |
rflag: ch = PRG_RDB(fmt++); |
e4c: f5 01 movw r30, r10 |
e4e: 08 94 sec |
e50: a1 1c adc r10, r1 |
e52: b1 1c adc r11, r1 |
e54: 04 91 lpm r16, Z |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
e56: 05 37 cpi r16, 0x75 ; 117 |
e58: 21 f0 breq .+8 ; 0xe62 <_printf_P+0x9c> |
e5a: 80 2f mov r24, r16 |
e5c: 80 62 ori r24, 0x20 ; 32 |
e5e: 88 37 cpi r24, 0x78 ; 120 |
e60: f1 f4 brne .+60 ; 0xe9e <_printf_P+0xd8> |
#endif |
if (flags&LONGINT) { |
e62: 50 fe sbrs r5, 0 |
e64: 0e c0 rjmp .+28 ; 0xe82 <_printf_P+0xbc> |
_ulong=va_arg(ap, unsigned long); |
e66: f3 01 movw r30, r6 |
e68: 24 e0 ldi r18, 0x04 ; 4 |
e6a: 30 e0 ldi r19, 0x00 ; 0 |
e6c: 62 0e add r6, r18 |
e6e: 73 1e adc r7, r19 |
e70: 80 81 ld r24, Z |
e72: 91 81 ldd r25, Z+1 ; 0x01 |
e74: a2 81 ldd r26, Z+2 ; 0x02 |
e76: b3 81 ldd r27, Z+3 ; 0x03 |
e78: 8c a7 std Y+44, r24 ; 0x2c |
e7a: 9d a7 std Y+45, r25 ; 0x2d |
e7c: ae a7 std Y+46, r26 ; 0x2e |
e7e: bf a7 std Y+47, r27 ; 0x2f |
e80: 0e c0 rjmp .+28 ; 0xe9e <_printf_P+0xd8> |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
e82: f3 01 movw r30, r6 |
e84: a2 e0 ldi r26, 0x02 ; 2 |
e86: b0 e0 ldi r27, 0x00 ; 0 |
e88: 6a 0e add r6, r26 |
e8a: 7b 1e adc r7, r27 |
e8c: 80 81 ld r24, Z |
e8e: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
e90: 9c 01 movw r18, r24 |
e92: 44 27 eor r20, r20 |
e94: 55 27 eor r21, r21 |
e96: 2c a7 std Y+44, r18 ; 0x2c |
e98: 3d a7 std Y+45, r19 ; 0x2d |
e9a: 4e a7 std Y+46, r20 ; 0x2e |
e9c: 5f a7 std Y+47, r21 ; 0x2f |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
e9e: 00 32 cpi r16, 0x20 ; 32 |
ea0: 21 f4 brne .+8 ; 0xeaa <_printf_P+0xe4> |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
ea2: 89 a5 ldd r24, Y+41 ; 0x29 |
ea4: 88 23 and r24, r24 |
ea6: 91 f6 brne .-92 ; 0xe4c <_printf_P+0x86> |
ea8: 1b c0 rjmp .+54 ; 0xee0 <_printf_P+0x11a> |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
eaa: 03 32 cpi r16, 0x23 ; 35 |
eac: 11 f4 brne .+4 ; 0xeb2 <_printf_P+0xec> |
flags |= ALT; |
eae: 38 e0 ldi r19, 0x08 ; 8 |
eb0: 81 c0 rjmp .+258 ; 0xfb4 <_printf_P+0x1ee> |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
eb2: 0a 32 cpi r16, 0x2A ; 42 |
eb4: 11 f0 breq .+4 ; 0xeba <_printf_P+0xf4> |
eb6: 0d 32 cpi r16, 0x2D ; 45 |
eb8: 89 f4 brne .+34 ; 0xedc <_printf_P+0x116> |
if (ch=='*') { |
eba: 0a 32 cpi r16, 0x2A ; 42 |
ebc: 51 f4 brne .+20 ; 0xed2 <_printf_P+0x10c> |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
ebe: f3 01 movw r30, r6 |
ec0: 42 e0 ldi r20, 0x02 ; 2 |
ec2: 50 e0 ldi r21, 0x00 ; 0 |
ec4: 64 0e add r6, r20 |
ec6: 75 1e adc r7, r21 |
ec8: 20 80 ld r2, Z |
eca: 22 20 and r2, r2 |
ecc: 0c f0 brlt .+2 ; 0xed0 <_printf_P+0x10a> |
ece: be cf rjmp .-132 ; 0xe4c <_printf_P+0x86> |
goto rflag; |
width = -width; |
ed0: 21 94 neg r2 |
} |
flags |= LADJUST; |
ed2: 50 e1 ldi r21, 0x10 ; 16 |
ed4: 55 2a or r5, r21 |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
ed6: 8f ed ldi r24, 0xDF ; 223 |
ed8: 58 22 and r5, r24 |
goto rflag; |
eda: b8 cf rjmp .-144 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='+') { |
edc: 0b 32 cpi r16, 0x2B ; 43 |
ede: 11 f4 brne .+4 ; 0xee4 <_printf_P+0x11e> |
sign = '+'; |
ee0: 09 a7 std Y+41, r16 ; 0x29 |
goto rflag; |
ee2: b4 cf rjmp .-152 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='.') { |
ee4: 0e 32 cpi r16, 0x2E ; 46 |
ee6: c1 f5 brne .+112 ; 0xf58 <_printf_P+0x192> |
if ((ch = PRG_RDB(fmt++)) == '*') { |
ee8: f5 01 movw r30, r10 |
eea: 08 94 sec |
eec: a1 1c adc r10, r1 |
eee: b1 1c adc r11, r1 |
ef0: 04 91 lpm r16, Z |
ef2: 0a 32 cpi r16, 0x2A ; 42 |
ef4: 79 f4 brne .+30 ; 0xf14 <_printf_P+0x14e> |
n = va_arg(ap, int); |
ef6: f3 01 movw r30, r6 |
ef8: a2 e0 ldi r26, 0x02 ; 2 |
efa: b0 e0 ldi r27, 0x00 ; 0 |
efc: 6a 0e add r6, r26 |
efe: 7b 1e adc r7, r27 |
f00: 60 81 ld r22, Z |
f02: 71 81 ldd r23, Z+1 ; 0x01 |
prec = n < 0 ? -1 : n; |
f04: bf ef ldi r27, 0xFF ; 255 |
f06: 6f 3f cpi r22, 0xFF ; 255 |
f08: 7b 07 cpc r23, r27 |
f0a: 14 f4 brge .+4 ; 0xf10 <_printf_P+0x14a> |
f0c: 6f ef ldi r22, 0xFF ; 255 |
f0e: 7f ef ldi r23, 0xFF ; 255 |
f10: 16 2f mov r17, r22 |
goto rflag; |
f12: 9c cf rjmp .-200 ; 0xe4c <_printf_P+0x86> |
} |
n = 0; |
f14: 60 e0 ldi r22, 0x00 ; 0 |
f16: 70 e0 ldi r23, 0x00 ; 0 |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
f18: 80 2f mov r24, r16 |
f1a: 80 53 subi r24, 0x30 ; 48 |
f1c: 8a 30 cpi r24, 0x0A ; 10 |
f1e: a0 f4 brcc .+40 ; 0xf48 <_printf_P+0x182> |
f20: cb 01 movw r24, r22 |
f22: f3 e0 ldi r31, 0x03 ; 3 |
f24: 88 0f add r24, r24 |
f26: 99 1f adc r25, r25 |
f28: fa 95 dec r31 |
f2a: e1 f7 brne .-8 ; 0xf24 <_printf_P+0x15e> |
f2c: 86 0f add r24, r22 |
f2e: 97 1f adc r25, r23 |
f30: 68 0f add r22, r24 |
f32: 79 1f adc r23, r25 |
f34: 60 0f add r22, r16 |
f36: 71 1d adc r23, r1 |
f38: 60 53 subi r22, 0x30 ; 48 |
f3a: 70 40 sbci r23, 0x00 ; 0 |
f3c: f5 01 movw r30, r10 |
f3e: 08 94 sec |
f40: a1 1c adc r10, r1 |
f42: b1 1c adc r11, r1 |
f44: 04 91 lpm r16, Z |
f46: e8 cf rjmp .-48 ; 0xf18 <_printf_P+0x152> |
} |
prec = n < 0 ? -1 : n; |
f48: ef ef ldi r30, 0xFF ; 255 |
f4a: 6f 3f cpi r22, 0xFF ; 255 |
f4c: 7e 07 cpc r23, r30 |
f4e: 14 f4 brge .+4 ; 0xf54 <_printf_P+0x18e> |
f50: 6f ef ldi r22, 0xFF ; 255 |
f52: 7f ef ldi r23, 0xFF ; 255 |
f54: 16 2f mov r17, r22 |
goto reswitch; |
f56: 7f cf rjmp .-258 ; 0xe56 <_printf_P+0x90> |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
f58: 00 33 cpi r16, 0x30 ; 48 |
f5a: 29 f4 brne .+10 ; 0xf66 <_printf_P+0x1a0> |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
f5c: 54 fc sbrc r5, 4 |
f5e: 76 cf rjmp .-276 ; 0xe4c <_printf_P+0x86> |
flags |= ZEROPAD; /* '-' disables '0' */ |
f60: f0 e2 ldi r31, 0x20 ; 32 |
f62: 5f 2a or r5, r31 |
goto rflag; |
f64: 73 cf rjmp .-282 ; 0xe4c <_printf_P+0x86> |
} else if (ch>='1' && ch<='9') { |
f66: 80 2f mov r24, r16 |
f68: 81 53 subi r24, 0x31 ; 49 |
f6a: 89 30 cpi r24, 0x09 ; 9 |
f6c: d8 f4 brcc .+54 ; 0xfa4 <_printf_P+0x1de> |
n = 0; |
f6e: 60 e0 ldi r22, 0x00 ; 0 |
f70: 70 e0 ldi r23, 0x00 ; 0 |
do { |
n = 10 * n + to_digit(ch); |
f72: cb 01 movw r24, r22 |
f74: e3 e0 ldi r30, 0x03 ; 3 |
f76: 88 0f add r24, r24 |
f78: 99 1f adc r25, r25 |
f7a: ea 95 dec r30 |
f7c: e1 f7 brne .-8 ; 0xf76 <_printf_P+0x1b0> |
f7e: 86 0f add r24, r22 |
f80: 97 1f adc r25, r23 |
f82: 68 0f add r22, r24 |
f84: 79 1f adc r23, r25 |
f86: 60 0f add r22, r16 |
f88: 71 1d adc r23, r1 |
f8a: 60 53 subi r22, 0x30 ; 48 |
f8c: 70 40 sbci r23, 0x00 ; 0 |
ch = PRG_RDB(fmt++); |
f8e: f5 01 movw r30, r10 |
f90: 08 94 sec |
f92: a1 1c adc r10, r1 |
f94: b1 1c adc r11, r1 |
f96: 04 91 lpm r16, Z |
} while (is_digit(ch)); |
f98: 80 2f mov r24, r16 |
f9a: 80 53 subi r24, 0x30 ; 48 |
f9c: 8a 30 cpi r24, 0x0A ; 10 |
f9e: 48 f3 brcs .-46 ; 0xf72 <_printf_P+0x1ac> |
width = n; |
fa0: 26 2e mov r2, r22 |
goto reswitch; |
fa2: 59 cf rjmp .-334 ; 0xe56 <_printf_P+0x90> |
} else if (ch=='h') { |
fa4: 08 36 cpi r16, 0x68 ; 104 |
fa6: 19 f4 brne .+6 ; 0xfae <_printf_P+0x1e8> |
flags |= SHORTINT; |
fa8: 24 e0 ldi r18, 0x04 ; 4 |
faa: 52 2a or r5, r18 |
goto rflag; |
fac: 4f cf rjmp .-354 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='l') { |
fae: 0c 36 cpi r16, 0x6C ; 108 |
fb0: 19 f4 brne .+6 ; 0xfb8 <_printf_P+0x1f2> |
flags |= LONGINT; |
fb2: 31 e0 ldi r19, 0x01 ; 1 |
fb4: 53 2a or r5, r19 |
goto rflag; |
fb6: 4a cf rjmp .-364 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='c') { |
fb8: 03 36 cpi r16, 0x63 ; 99 |
fba: 61 f4 brne .+24 ; 0xfd4 <_printf_P+0x20e> |
*(cp = buf) = va_arg(ap, int); |
fbc: 4e 01 movw r8, r28 |
fbe: 08 94 sec |
fc0: 81 1c adc r8, r1 |
fc2: 91 1c adc r9, r1 |
fc4: f3 01 movw r30, r6 |
fc6: 42 e0 ldi r20, 0x02 ; 2 |
fc8: 50 e0 ldi r21, 0x00 ; 0 |
fca: 64 0e add r6, r20 |
fcc: 75 1e adc r7, r21 |
fce: 80 81 ld r24, Z |
fd0: 89 83 std Y+1, r24 ; 0x01 |
fd2: 1b c1 rjmp .+566 ; 0x120a <_printf_P+0x444> |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
fd4: 04 34 cpi r16, 0x44 ; 68 |
fd6: 21 f0 breq .+8 ; 0xfe0 <_printf_P+0x21a> |
fd8: 04 36 cpi r16, 0x64 ; 100 |
fda: 11 f0 breq .+4 ; 0xfe0 <_printf_P+0x21a> |
fdc: 09 36 cpi r16, 0x69 ; 105 |
fde: b1 f5 brne .+108 ; 0x104c <_printf_P+0x286> |
if(ch=='D') |
fe0: 04 34 cpi r16, 0x44 ; 68 |
fe2: 11 f4 brne .+4 ; 0xfe8 <_printf_P+0x222> |
flags |= LONGINT; |
fe4: 51 e0 ldi r21, 0x01 ; 1 |
fe6: 55 2a or r5, r21 |
if (flags&LONGINT) { |
fe8: 50 fe sbrs r5, 0 |
fea: 0a c0 rjmp .+20 ; 0x1000 <_printf_P+0x23a> |
_ulong=va_arg(ap, long); |
fec: f3 01 movw r30, r6 |
fee: 84 e0 ldi r24, 0x04 ; 4 |
ff0: 90 e0 ldi r25, 0x00 ; 0 |
ff2: 68 0e add r6, r24 |
ff4: 79 1e adc r7, r25 |
ff6: 20 81 ld r18, Z |
ff8: 31 81 ldd r19, Z+1 ; 0x01 |
ffa: 42 81 ldd r20, Z+2 ; 0x02 |
ffc: 53 81 ldd r21, Z+3 ; 0x03 |
ffe: 0c c0 rjmp .+24 ; 0x1018 <_printf_P+0x252> |
} else { |
register int _d; |
_d=va_arg(ap, int); |
1000: f3 01 movw r30, r6 |
1002: 42 e0 ldi r20, 0x02 ; 2 |
1004: 50 e0 ldi r21, 0x00 ; 0 |
1006: 64 0e add r6, r20 |
1008: 75 1e adc r7, r21 |
100a: 80 81 ld r24, Z |
100c: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
100e: 9c 01 movw r18, r24 |
1010: 44 27 eor r20, r20 |
1012: 37 fd sbrc r19, 7 |
1014: 40 95 com r20 |
1016: 54 2f mov r21, r20 |
1018: 2c a7 std Y+44, r18 ; 0x2c |
101a: 3d a7 std Y+45, r19 ; 0x2d |
101c: 4e a7 std Y+46, r20 ; 0x2e |
101e: 5f a7 std Y+47, r21 ; 0x2f |
} |
if ((long)_ulong < 0) { |
1020: 8c a5 ldd r24, Y+44 ; 0x2c |
1022: 9d a5 ldd r25, Y+45 ; 0x2d |
1024: ae a5 ldd r26, Y+46 ; 0x2e |
1026: bf a5 ldd r27, Y+47 ; 0x2f |
1028: b7 ff sbrs r27, 7 |
102a: 0d c0 rjmp .+26 ; 0x1046 <_printf_P+0x280> |
_ulong = -_ulong; |
102c: b0 95 com r27 |
102e: a0 95 com r26 |
1030: 90 95 com r25 |
1032: 81 95 neg r24 |
1034: 9f 4f sbci r25, 0xFF ; 255 |
1036: af 4f sbci r26, 0xFF ; 255 |
1038: bf 4f sbci r27, 0xFF ; 255 |
103a: 8c a7 std Y+44, r24 ; 0x2c |
103c: 9d a7 std Y+45, r25 ; 0x2d |
103e: ae a7 std Y+46, r26 ; 0x2e |
1040: bf a7 std Y+47, r27 ; 0x2f |
sign = '-'; |
1042: 8d e2 ldi r24, 0x2D ; 45 |
1044: 89 a7 std Y+41, r24 ; 0x29 |
} |
base = DEC; |
1046: 7a e0 ldi r23, 0x0A ; 10 |
1048: 47 2e mov r4, r23 |
goto number; |
104a: 7b c0 rjmp .+246 ; 0x1142 <_printf_P+0x37c> |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
104c: 0f 34 cpi r16, 0x4F ; 79 |
104e: 11 f0 breq .+4 ; 0x1054 <_printf_P+0x28e> |
1050: 0f 36 cpi r16, 0x6F ; 111 |
1052: 39 f4 brne .+14 ; 0x1062 <_printf_P+0x29c> |
if (ch=='O') |
1054: 0f 34 cpi r16, 0x4F ; 79 |
1056: 11 f4 brne .+4 ; 0x105c <_printf_P+0x296> |
flags |= LONGINT; |
1058: 91 e0 ldi r25, 0x01 ; 1 |
105a: 59 2a or r5, r25 |
base = OCT; |
105c: 68 e0 ldi r22, 0x08 ; 8 |
105e: 46 2e mov r4, r22 |
goto nosign; |
1060: 6f c0 rjmp .+222 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='p') { |
1062: 00 37 cpi r16, 0x70 ; 112 |
1064: a1 f4 brne .+40 ; 0x108e <_printf_P+0x2c8> |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
1066: f3 01 movw r30, r6 |
1068: a2 e0 ldi r26, 0x02 ; 2 |
106a: b0 e0 ldi r27, 0x00 ; 0 |
106c: 6a 0e add r6, r26 |
106e: 7b 1e adc r7, r27 |
1070: 80 81 ld r24, Z |
1072: 91 81 ldd r25, Z+1 ; 0x01 |
1074: 9c 01 movw r18, r24 |
1076: 44 27 eor r20, r20 |
1078: 55 27 eor r21, r21 |
107a: 2c a7 std Y+44, r18 ; 0x2c |
107c: 3d a7 std Y+45, r19 ; 0x2d |
107e: 4e a7 std Y+46, r20 ; 0x2e |
1080: 5f a7 std Y+47, r21 ; 0x2f |
base = HEX; |
1082: 50 e1 ldi r21, 0x10 ; 16 |
1084: 45 2e mov r4, r21 |
flags |= HEXPREFIX; |
1086: 30 e4 ldi r19, 0x40 ; 64 |
1088: 53 2a or r5, r19 |
ch = 'x'; |
108a: 08 e7 ldi r16, 0x78 ; 120 |
goto nosign; |
108c: 59 c0 rjmp .+178 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='s') { // print a string from RAM |
108e: 03 37 cpi r16, 0x73 ; 115 |
1090: c1 f5 brne .+112 ; 0x1102 <_printf_P+0x33c> |
if ((cp = va_arg(ap, char *)) == NULL) { |
1092: f3 01 movw r30, r6 |
1094: 42 e0 ldi r20, 0x02 ; 2 |
1096: 50 e0 ldi r21, 0x00 ; 0 |
1098: 64 0e add r6, r20 |
109a: 75 1e adc r7, r21 |
109c: 80 80 ld r8, Z |
109e: 91 80 ldd r9, Z+1 ; 0x01 |
10a0: 81 14 cp r8, r1 |
10a2: 91 04 cpc r9, r1 |
10a4: 89 f4 brne .+34 ; 0x10c8 <_printf_P+0x302> |
cp=buf; |
10a6: 4e 01 movw r8, r28 |
10a8: 08 94 sec |
10aa: 81 1c adc r8, r1 |
10ac: 91 1c adc r9, r1 |
cp[0] = '('; |
10ae: 88 e2 ldi r24, 0x28 ; 40 |
10b0: 89 83 std Y+1, r24 ; 0x01 |
cp[1] = 'n'; |
10b2: 8e e6 ldi r24, 0x6E ; 110 |
10b4: f4 01 movw r30, r8 |
10b6: 81 83 std Z+1, r24 ; 0x01 |
cp[2] = 'u'; |
10b8: 85 e7 ldi r24, 0x75 ; 117 |
10ba: 8b 83 std Y+3, r24 ; 0x03 |
cp[4] = cp[3] = 'l'; |
10bc: 8c e6 ldi r24, 0x6C ; 108 |
10be: 8c 83 std Y+4, r24 ; 0x04 |
10c0: 8d 83 std Y+5, r24 ; 0x05 |
cp[5] = ')'; |
10c2: 89 e2 ldi r24, 0x29 ; 41 |
10c4: 8e 83 std Y+6, r24 ; 0x06 |
cp[6] = '\0'; |
10c6: 1f 82 std Y+7, r1 ; 0x07 |
} |
if (prec >= 0) { |
10c8: 17 fd sbrc r17, 7 |
10ca: 13 c0 rjmp .+38 ; 0x10f2 <_printf_P+0x32c> |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
10cc: 81 2f mov r24, r17 |
10ce: 99 27 eor r25, r25 |
10d0: 87 fd sbrc r24, 7 |
10d2: 90 95 com r25 |
10d4: ac 01 movw r20, r24 |
10d6: 60 e0 ldi r22, 0x00 ; 0 |
10d8: 70 e0 ldi r23, 0x00 ; 0 |
10da: c4 01 movw r24, r8 |
10dc: 0e 94 64 0c call 0x18c8 <memchr> |
if (p != NULL) { |
10e0: 00 97 sbiw r24, 0x00 ; 0 |
10e2: 29 f0 breq .+10 ; 0x10ee <_printf_P+0x328> |
size = p - cp; |
10e4: d8 2e mov r13, r24 |
10e6: d8 18 sub r13, r8 |
if (size > prec) |
10e8: 1d 15 cp r17, r13 |
10ea: 0c f0 brlt .+2 ; 0x10ee <_printf_P+0x328> |
10ec: 90 c0 rjmp .+288 ; 0x120e <_printf_P+0x448> |
size = prec; |
} else |
size = prec; |
10ee: d1 2e mov r13, r17 |
10f0: 8e c0 rjmp .+284 ; 0x120e <_printf_P+0x448> |
} else |
size = strlen(cp); |
10f2: f4 01 movw r30, r8 |
10f4: 01 90 ld r0, Z+ |
10f6: 00 20 and r0, r0 |
10f8: e9 f7 brne .-6 ; 0x10f4 <_printf_P+0x32e> |
10fa: 31 97 sbiw r30, 0x01 ; 1 |
10fc: de 2e mov r13, r30 |
10fe: d8 18 sub r13, r8 |
1100: 86 c0 rjmp .+268 ; 0x120e <_printf_P+0x448> |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
1102: 05 35 cpi r16, 0x55 ; 85 |
1104: 11 f0 breq .+4 ; 0x110a <_printf_P+0x344> |
1106: 05 37 cpi r16, 0x75 ; 117 |
1108: 39 f4 brne .+14 ; 0x1118 <_printf_P+0x352> |
if (ch=='U') |
110a: 05 35 cpi r16, 0x55 ; 85 |
110c: 11 f4 brne .+4 ; 0x1112 <_printf_P+0x34c> |
flags |= LONGINT; |
110e: f1 e0 ldi r31, 0x01 ; 1 |
1110: 5f 2a or r5, r31 |
base = DEC; |
1112: 4a e0 ldi r20, 0x0A ; 10 |
1114: 44 2e mov r4, r20 |
goto nosign; |
1116: 14 c0 rjmp .+40 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='X'||ch=='x') { |
1118: 08 35 cpi r16, 0x58 ; 88 |
111a: 19 f0 breq .+6 ; 0x1122 <_printf_P+0x35c> |
111c: 08 37 cpi r16, 0x78 ; 120 |
111e: 09 f0 breq .+2 ; 0x1122 <_printf_P+0x35c> |
1120: 6c c0 rjmp .+216 ; 0x11fa <_printf_P+0x434> |
base = HEX; |
1122: 30 e1 ldi r19, 0x10 ; 16 |
1124: 43 2e mov r4, r19 |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
1126: 53 fe sbrs r5, 3 |
1128: 0b c0 rjmp .+22 ; 0x1140 <_printf_P+0x37a> |
112a: 2c a5 ldd r18, Y+44 ; 0x2c |
112c: 3d a5 ldd r19, Y+45 ; 0x2d |
112e: 4e a5 ldd r20, Y+46 ; 0x2e |
1130: 5f a5 ldd r21, Y+47 ; 0x2f |
1132: 21 15 cp r18, r1 |
1134: 31 05 cpc r19, r1 |
1136: 41 05 cpc r20, r1 |
1138: 51 05 cpc r21, r1 |
113a: 11 f0 breq .+4 ; 0x1140 <_printf_P+0x37a> |
flags |= HEXPREFIX; |
113c: 30 e4 ldi r19, 0x40 ; 64 |
113e: 53 2a or r5, r19 |
/* unsigned conversions */ |
nosign: sign = '\0'; |
1140: 19 a6 std Y+41, r1 ; 0x29 |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
1142: 18 ab std Y+48, r17 ; 0x30 |
1144: 17 fd sbrc r17, 7 |
1146: 02 c0 rjmp .+4 ; 0x114c <_printf_P+0x386> |
flags &= ~ZEROPAD; |
1148: 4f ed ldi r20, 0xDF ; 223 |
114a: 54 22 and r5, r20 |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
114c: 29 e2 ldi r18, 0x29 ; 41 |
114e: 82 2e mov r8, r18 |
1150: 91 2c mov r9, r1 |
1152: 8c 0e add r8, r28 |
1154: 9d 1e adc r9, r29 |
if (_ulong != 0 || prec != 0) { |
1156: 8c a5 ldd r24, Y+44 ; 0x2c |
1158: 9d a5 ldd r25, Y+45 ; 0x2d |
115a: ae a5 ldd r26, Y+46 ; 0x2e |
115c: bf a5 ldd r27, Y+47 ; 0x2f |
115e: 00 97 sbiw r24, 0x00 ; 0 |
1160: a1 05 cpc r26, r1 |
1162: b1 05 cpc r27, r1 |
1164: 21 f4 brne .+8 ; 0x116e <_printf_P+0x3a8> |
1166: 98 a9 ldd r25, Y+48 ; 0x30 |
1168: 99 23 and r25, r25 |
116a: 09 f4 brne .+2 ; 0x116e <_printf_P+0x3a8> |
116c: 3f c0 rjmp .+126 ; 0x11ec <_printf_P+0x426> |
116e: c4 2c mov r12, r4 |
1170: dd 24 eor r13, r13 |
1172: ee 24 eor r14, r14 |
1174: ff 24 eor r15, r15 |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
1176: 33 24 eor r3, r3 |
1178: 2c a5 ldd r18, Y+44 ; 0x2c |
117a: 3d a5 ldd r19, Y+45 ; 0x2d |
117c: 4e a5 ldd r20, Y+46 ; 0x2e |
117e: 5f a5 ldd r21, Y+47 ; 0x2f |
1180: 2c 15 cp r18, r12 |
1182: 3d 05 cpc r19, r13 |
1184: 4e 05 cpc r20, r14 |
1186: 5f 05 cpc r21, r15 |
1188: 10 f0 brcs .+4 ; 0x118e <_printf_P+0x3c8> |
118a: 91 e0 ldi r25, 0x01 ; 1 |
118c: 39 2e mov r3, r25 |
_d = _ulong % base; |
118e: 6c a5 ldd r22, Y+44 ; 0x2c |
1190: 7d a5 ldd r23, Y+45 ; 0x2d |
1192: 8e a5 ldd r24, Y+46 ; 0x2e |
1194: 9f a5 ldd r25, Y+47 ; 0x2f |
1196: a7 01 movw r20, r14 |
1198: 96 01 movw r18, r12 |
119a: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
119e: dc 01 movw r26, r24 |
11a0: cb 01 movw r24, r22 |
11a2: 18 2f mov r17, r24 |
if (_d<10) { |
11a4: 8a 30 cpi r24, 0x0A ; 10 |
11a6: 10 f4 brcc .+4 ; 0x11ac <_printf_P+0x3e6> |
_d+='0'; |
11a8: 10 5d subi r17, 0xD0 ; 208 |
11aa: 04 c0 rjmp .+8 ; 0x11b4 <_printf_P+0x3ee> |
} else { |
_d+='a'-10; |
11ac: 19 5a subi r17, 0xA9 ; 169 |
if (ch=='X') _d&=~0x20; |
11ae: 08 35 cpi r16, 0x58 ; 88 |
11b0: 09 f4 brne .+2 ; 0x11b4 <_printf_P+0x3ee> |
11b2: 1f 7d andi r17, 0xDF ; 223 |
} |
*--cp=_d; |
11b4: d4 01 movw r26, r8 |
11b6: 1e 93 st -X, r17 |
11b8: 4d 01 movw r8, r26 |
_ulong /= base; |
11ba: 6c a5 ldd r22, Y+44 ; 0x2c |
11bc: 7d a5 ldd r23, Y+45 ; 0x2d |
11be: 8e a5 ldd r24, Y+46 ; 0x2e |
11c0: 9f a5 ldd r25, Y+47 ; 0x2f |
11c2: a7 01 movw r20, r14 |
11c4: 96 01 movw r18, r12 |
11c6: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
11ca: 2c a7 std Y+44, r18 ; 0x2c |
11cc: 3d a7 std Y+45, r19 ; 0x2d |
11ce: 4e a7 std Y+46, r20 ; 0x2e |
11d0: 5f a7 std Y+47, r21 ; 0x2f |
} while (notlastdigit); |
11d2: 33 20 and r3, r3 |
11d4: 81 f6 brne .-96 ; 0x1176 <_printf_P+0x3b0> |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
11d6: b8 e0 ldi r27, 0x08 ; 8 |
11d8: 4b 16 cp r4, r27 |
11da: 41 f4 brne .+16 ; 0x11ec <_printf_P+0x426> |
11dc: 53 fe sbrs r5, 3 |
11de: 06 c0 rjmp .+12 ; 0x11ec <_printf_P+0x426> |
11e0: 10 33 cpi r17, 0x30 ; 48 |
11e2: 21 f0 breq .+8 ; 0x11ec <_printf_P+0x426> |
*--cp = '0'; |
11e4: 80 e3 ldi r24, 0x30 ; 48 |
11e6: f4 01 movw r30, r8 |
11e8: 82 93 st -Z, r24 |
11ea: 4f 01 movw r8, r30 |
#endif |
} |
size = buf + BUF - cp; |
11ec: ce 01 movw r24, r28 |
11ee: 01 96 adiw r24, 0x01 ; 1 |
11f0: d8 2e mov r13, r24 |
11f2: d8 18 sub r13, r8 |
11f4: f8 e2 ldi r31, 0x28 ; 40 |
11f6: df 0e add r13, r31 |
11f8: 0b c0 rjmp .+22 ; 0x1210 <_printf_P+0x44a> |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
11fa: 00 23 and r16, r16 |
11fc: 09 f4 brne .+2 ; 0x1200 <_printf_P+0x43a> |
11fe: 4e c0 rjmp .+156 ; 0x129c <_printf_P+0x4d6> |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
1200: 4e 01 movw r8, r28 |
1202: 08 94 sec |
1204: 81 1c adc r8, r1 |
1206: 91 1c adc r9, r1 |
*cp = ch; |
1208: 09 83 std Y+1, r16 ; 0x01 |
size = 1; |
120a: 81 e0 ldi r24, 0x01 ; 1 |
120c: d8 2e mov r13, r24 |
sign = '\0'; |
120e: 19 a6 std Y+41, r1 ; 0x29 |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
1210: 1d 2d mov r17, r13 |
dpad = dprec - size; |
1212: c8 a8 ldd r12, Y+48 ; 0x30 |
1214: cd 18 sub r12, r13 |
if (dpad < 0) |
1216: c7 fc sbrc r12, 7 |
dpad = 0; |
1218: cc 24 eor r12, r12 |
if (sign) |
121a: 89 a5 ldd r24, Y+41 ; 0x29 |
121c: 88 23 and r24, r24 |
121e: 11 f0 breq .+4 ; 0x1224 <_printf_P+0x45e> |
fieldsz++; |
1220: 1f 5f subi r17, 0xFF ; 255 |
1222: 02 c0 rjmp .+4 ; 0x1228 <_printf_P+0x462> |
else if (flags & HEXPREFIX) |
1224: 56 fc sbrc r5, 6 |
fieldsz += 2; |
1226: 1e 5f subi r17, 0xFE ; 254 |
fieldsz += dpad; |
1228: 1c 0d add r17, r12 |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
122a: e5 2c mov r14, r5 |
122c: ff 24 eor r15, r15 |
122e: c7 01 movw r24, r14 |
1230: 80 73 andi r24, 0x30 ; 48 |
1232: 90 70 andi r25, 0x00 ; 0 |
1234: 89 2b or r24, r25 |
1236: 21 f4 brne .+8 ; 0x1240 <_printf_P+0x47a> |
PAD_SP(width - fieldsz); |
1238: 82 2d mov r24, r2 |
123a: 81 1b sub r24, r17 |
123c: 0e 94 cb 06 call 0xd96 <PAD_SP> |
/* prefix */ |
if (sign) { |
1240: 89 a5 ldd r24, Y+41 ; 0x29 |
1242: 88 23 and r24, r24 |
1244: 29 f0 breq .+10 ; 0x1250 <_printf_P+0x48a> |
PRINT(&sign, 1); |
1246: 61 e0 ldi r22, 0x01 ; 1 |
1248: 70 e0 ldi r23, 0x00 ; 0 |
124a: ce 01 movw r24, r28 |
124c: 89 96 adiw r24, 0x29 ; 41 |
124e: 09 c0 rjmp .+18 ; 0x1262 <_printf_P+0x49c> |
} else if (flags & HEXPREFIX) { |
1250: e6 fe sbrs r14, 6 |
1252: 09 c0 rjmp .+18 ; 0x1266 <_printf_P+0x4a0> |
ox[0] = '0'; |
1254: 80 e3 ldi r24, 0x30 ; 48 |
1256: 8a a7 std Y+42, r24 ; 0x2a |
ox[1] = ch; |
1258: 0b a7 std Y+43, r16 ; 0x2b |
PRINT(ox, 2); |
125a: 62 e0 ldi r22, 0x02 ; 2 |
125c: 70 e0 ldi r23, 0x00 ; 0 |
125e: ce 01 movw r24, r28 |
1260: 8a 96 adiw r24, 0x2a ; 42 |
1262: 0e 94 a2 06 call 0xd44 <PRINT> |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
1266: c7 01 movw r24, r14 |
1268: 80 73 andi r24, 0x30 ; 48 |
126a: 90 70 andi r25, 0x00 ; 0 |
126c: 80 97 sbiw r24, 0x20 ; 32 |
126e: 21 f4 brne .+8 ; 0x1278 <_printf_P+0x4b2> |
PAD_0(width - fieldsz); |
1270: 82 2d mov r24, r2 |
1272: 81 1b sub r24, r17 |
1274: 0e 94 d7 06 call 0xdae <PAD_0> |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
1278: 8c 2d mov r24, r12 |
127a: 0e 94 d7 06 call 0xdae <PAD_0> |
/* the string or number proper */ |
PRINT(cp, size); |
127e: 8d 2d mov r24, r13 |
1280: 99 27 eor r25, r25 |
1282: 87 fd sbrc r24, 7 |
1284: 90 95 com r25 |
1286: bc 01 movw r22, r24 |
1288: c4 01 movw r24, r8 |
128a: 0e 94 a2 06 call 0xd44 <PRINT> |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
128e: e4 fe sbrs r14, 4 |
1290: c1 cd rjmp .-1150 ; 0xe14 <_printf_P+0x4e> |
PAD_SP(width - fieldsz); |
1292: 82 2d mov r24, r2 |
1294: 81 1b sub r24, r17 |
1296: 0e 94 cb 06 call 0xd96 <PAD_SP> |
129a: bc cd rjmp .-1160 ; 0xe14 <_printf_P+0x4e> |
129c: e0 96 adiw r28, 0x30 ; 48 |
129e: 0f b6 in r0, 0x3f ; 63 |
12a0: f8 94 cli |
12a2: de bf out 0x3e, r29 ; 62 |
12a4: 0f be out 0x3f, r0 ; 63 |
12a6: cd bf out 0x3d, r28 ; 61 |
12a8: df 91 pop r29 |
12aa: cf 91 pop r28 |
12ac: 1f 91 pop r17 |
12ae: 0f 91 pop r16 |
12b0: ff 90 pop r15 |
12b2: ef 90 pop r14 |
12b4: df 90 pop r13 |
12b6: cf 90 pop r12 |
12b8: bf 90 pop r11 |
12ba: af 90 pop r10 |
12bc: 9f 90 pop r9 |
12be: 8f 90 pop r8 |
12c0: 7f 90 pop r7 |
12c2: 6f 90 pop r6 |
12c4: 5f 90 pop r5 |
12c6: 4f 90 pop r4 |
12c8: 3f 90 pop r3 |
12ca: 2f 90 pop r2 |
12cc: 08 95 ret |
000012ce <__vector_9>: |
}; |
SIGNAL (SIG_OVERFLOW1) |
{ |
12ce: 1f 92 push r1 |
12d0: 0f 92 push r0 |
12d2: 0f b6 in r0, 0x3f ; 63 |
12d4: 0f 92 push r0 |
12d6: 11 24 eor r1, r1 |
12d8: 8f 93 push r24 |
12da: 9f 93 push r25 |
static unsigned char cnt_10ms = 0; |
TCNT1 -= TIMER_RELOAD_VALUE; |
12dc: 8c b5 in r24, 0x2c ; 44 |
12de: 9d b5 in r25, 0x2d ; 45 |
12e0: 8a 5f subi r24, 0xFA ; 250 |
12e2: 90 40 sbci r25, 0x00 ; 0 |
12e4: 9d bd out 0x2d, r25 ; 45 |
12e6: 8c bd out 0x2c, r24 ; 44 |
CountMilliseconds++; |
12e8: 80 91 a5 00 lds r24, 0x00A5 |
12ec: 90 91 a6 00 lds r25, 0x00A6 |
12f0: 01 96 adiw r24, 0x01 ; 1 |
12f2: 90 93 a6 00 sts 0x00A6, r25 |
12f6: 80 93 a5 00 sts 0x00A5, r24 |
if(DisplayBusy) DisplayBusy--; |
12fa: 80 91 93 00 lds r24, 0x0093 |
12fe: 88 23 and r24, r24 |
1300: 29 f0 breq .+10 ; 0x130c <__vector_9+0x3e> |
1302: 80 91 93 00 lds r24, 0x0093 |
1306: 81 50 subi r24, 0x01 ; 1 |
1308: 80 93 93 00 sts 0x0093, r24 |
if(LoescheIrCodeTimer) |
130c: 80 91 7c 00 lds r24, 0x007C |
1310: 90 91 7d 00 lds r25, 0x007D |
1314: 00 97 sbiw r24, 0x00 ; 0 |
1316: 59 f0 breq .+22 ; 0x132e <__vector_9+0x60> |
{ |
if(--LoescheIrCodeTimer == 0) IR_Code = 0; |
1318: 01 97 sbiw r24, 0x01 ; 1 |
131a: 90 93 7d 00 sts 0x007D, r25 |
131e: 80 93 7c 00 sts 0x007C, r24 |
1322: 00 97 sbiw r24, 0x00 ; 0 |
1324: 21 f4 brne .+8 ; 0x132e <__vector_9+0x60> |
1326: 90 93 c8 01 sts 0x01C8, r25 |
132a: 80 93 c7 01 sts 0x01C7, r24 |
132e: 9f 91 pop r25 |
1330: 8f 91 pop r24 |
1332: 0f 90 pop r0 |
1334: 0f be out 0x3f, r0 ; 63 |
1336: 0f 90 pop r0 |
1338: 1f 90 pop r1 |
133a: 18 95 reti |
0000133c <Timer1_Init>: |
} |
} |
void Timer1_Init(void) |
{ |
TCCR1B = TIMER_TEILER; |
133c: 83 e0 ldi r24, 0x03 ; 3 |
133e: 8e bd out 0x2e, r24 ; 46 |
TCNT1 = -TIMER_RELOAD_VALUE; // reload |
1340: 86 e0 ldi r24, 0x06 ; 6 |
1342: 9f ef ldi r25, 0xFF ; 255 |
1344: 9d bd out 0x2d, r25 ; 45 |
1346: 8c bd out 0x2c, r24 ; 44 |
//OCR1 = 0x00; |
// Timer(s)/Counter(s) Interrupt(s) initialization |
#if defined (__AVR_ATmega32__) |
TIMSK |= 0x04; |
1348: 89 b7 in r24, 0x39 ; 57 |
134a: 84 60 ori r24, 0x04 ; 4 |
134c: 89 bf out 0x39, r24 ; 57 |
134e: 08 95 ret |
00001350 <SetDelay>: |
#endif |
#if defined (__AVR_ATmega644__) |
TIMSK1 |= _BV(TOIE1); |
#endif |
} |
unsigned int SetDelay (unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
1350: 20 91 a5 00 lds r18, 0x00A5 |
1354: 30 91 a6 00 lds r19, 0x00A6 |
1358: 28 0f add r18, r24 |
135a: 39 1f adc r19, r25 |
} |
135c: c9 01 movw r24, r18 |
135e: 01 97 sbiw r24, 0x01 ; 1 |
1360: 08 95 ret |
00001362 <CheckDelay>: |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
1362: 20 91 a5 00 lds r18, 0x00A5 |
1366: 30 91 a6 00 lds r19, 0x00A6 |
136a: 82 1b sub r24, r18 |
136c: 93 0b sbc r25, r19 |
136e: 89 2f mov r24, r25 |
1370: 99 27 eor r25, r25 |
1372: 80 78 andi r24, 0x80 ; 128 |
} |
1374: 99 27 eor r25, r25 |
1376: 08 95 ret |
00001378 <Delay_ms>: |
void Delay_ms(unsigned int w) |
{ |
1378: cf 93 push r28 |
137a: df 93 push r29 |
unsigned int akt; |
akt = SetDelay(w); |
137c: 0e 94 a8 09 call 0x1350 <SetDelay> |
1380: ec 01 movw r28, r24 |
while (!CheckDelay(akt)); |
1382: ce 01 movw r24, r28 |
1384: 0e 94 b1 09 call 0x1362 <CheckDelay> |
1388: 88 23 and r24, r24 |
138a: d9 f3 breq .-10 ; 0x1382 <Delay_ms+0xa> |
138c: df 91 pop r29 |
138e: cf 91 pop r28 |
1390: 08 95 ret |
00001392 <Keyboard_Init>: |
unsigned int KeyTimer = 0; |
void Keyboard_Init(void) |
{ |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1392: 82 e3 ldi r24, 0x32 ; 50 |
1394: 90 e0 ldi r25, 0x00 ; 0 |
1396: 0e 94 a8 09 call 0x1350 <SetDelay> |
139a: 90 93 a9 00 sts 0x00A9, r25 |
139e: 80 93 a8 00 sts 0x00A8, r24 |
13a2: 08 95 ret |
000013a4 <GetKeyboard>: |
} |
unsigned char GetKeyboard(void) |
{ |
13a4: cf 93 push r28 |
static char taste1 = 0, taste2 = 0,taste3 = 0,taste4 = 0,taste5 = 0; |
unsigned char ret = 0; |
13a6: c0 e0 ldi r28, 0x00 ; 0 |
if(CheckDelay(KeyTimer)) |
13a8: 80 91 a8 00 lds r24, 0x00A8 |
13ac: 90 91 a9 00 lds r25, 0x00A9 |
13b0: 0e 94 b1 09 call 0x1362 <CheckDelay> |
13b4: 88 23 and r24, r24 |
13b6: 09 f4 brne .+2 ; 0x13ba <GetKeyboard+0x16> |
13b8: 76 c0 rjmp .+236 ; 0x14a6 <GetKeyboard+0x102> |
{ |
if(_TASTE1) { if(taste1++ == 0 || taste1 == CNT_TASTE) ret |= KEY1; if(taste1 == CNT_TASTE) taste1 = CNT_TASTE-CNT_TASTE/3;} else taste1 = 0; |
13ba: cf 9b sbis 0x19, 7 ; 25 |
13bc: 12 c0 rjmp .+36 ; 0x13e2 <GetKeyboard+0x3e> |
13be: 80 91 aa 00 lds r24, 0x00AA |
13c2: 8f 5f subi r24, 0xFF ; 255 |
13c4: 80 93 aa 00 sts 0x00AA, r24 |
13c8: 81 30 cpi r24, 0x01 ; 1 |
13ca: 11 f0 breq .+4 ; 0x13d0 <GetKeyboard+0x2c> |
13cc: 8a 30 cpi r24, 0x0A ; 10 |
13ce: 09 f4 brne .+2 ; 0x13d2 <GetKeyboard+0x2e> |
13d0: c1 e0 ldi r28, 0x01 ; 1 |
13d2: 80 91 aa 00 lds r24, 0x00AA |
13d6: 8a 30 cpi r24, 0x0A ; 10 |
13d8: 31 f4 brne .+12 ; 0x13e6 <GetKeyboard+0x42> |
13da: 87 e0 ldi r24, 0x07 ; 7 |
13dc: 80 93 aa 00 sts 0x00AA, r24 |
13e0: 02 c0 rjmp .+4 ; 0x13e6 <GetKeyboard+0x42> |
13e2: c0 93 aa 00 sts 0x00AA, r28 |
if(_TASTE2) { if(taste2++ == 0 || taste2 == CNT_TASTE) ret |= KEY2; if(taste2 == CNT_TASTE) taste2 = CNT_TASTE-CNT_TASTE/3;} else taste2 = 0; |
13e6: ce 9b sbis 0x19, 6 ; 25 |
13e8: 12 c0 rjmp .+36 ; 0x140e <GetKeyboard+0x6a> |
13ea: 80 91 ab 00 lds r24, 0x00AB |
13ee: 8f 5f subi r24, 0xFF ; 255 |
13f0: 80 93 ab 00 sts 0x00AB, r24 |
13f4: 81 30 cpi r24, 0x01 ; 1 |
13f6: 11 f0 breq .+4 ; 0x13fc <GetKeyboard+0x58> |
13f8: 8a 30 cpi r24, 0x0A ; 10 |
13fa: 09 f4 brne .+2 ; 0x13fe <GetKeyboard+0x5a> |
13fc: c2 60 ori r28, 0x02 ; 2 |
13fe: 80 91 ab 00 lds r24, 0x00AB |
1402: 8a 30 cpi r24, 0x0A ; 10 |
1404: 31 f4 brne .+12 ; 0x1412 <GetKeyboard+0x6e> |
1406: 87 e0 ldi r24, 0x07 ; 7 |
1408: 80 93 ab 00 sts 0x00AB, r24 |
140c: 02 c0 rjmp .+4 ; 0x1412 <GetKeyboard+0x6e> |
140e: 10 92 ab 00 sts 0x00AB, r1 |
if(_TASTE3) { if(taste3++ == 0 || taste3 == CNT_TASTE) ret |= KEY3; if(taste3 == CNT_TASTE) taste3 = CNT_TASTE-CNT_TASTE/3;} else taste3 = 0; |
1412: cd 9b sbis 0x19, 5 ; 25 |
1414: 12 c0 rjmp .+36 ; 0x143a <GetKeyboard+0x96> |
1416: 80 91 ac 00 lds r24, 0x00AC |
141a: 8f 5f subi r24, 0xFF ; 255 |
141c: 80 93 ac 00 sts 0x00AC, r24 |
1420: 81 30 cpi r24, 0x01 ; 1 |
1422: 11 f0 breq .+4 ; 0x1428 <GetKeyboard+0x84> |
1424: 8a 30 cpi r24, 0x0A ; 10 |
1426: 09 f4 brne .+2 ; 0x142a <GetKeyboard+0x86> |
1428: c4 60 ori r28, 0x04 ; 4 |
142a: 80 91 ac 00 lds r24, 0x00AC |
142e: 8a 30 cpi r24, 0x0A ; 10 |
1430: 31 f4 brne .+12 ; 0x143e <GetKeyboard+0x9a> |
1432: 87 e0 ldi r24, 0x07 ; 7 |
1434: 80 93 ac 00 sts 0x00AC, r24 |
1438: 02 c0 rjmp .+4 ; 0x143e <GetKeyboard+0x9a> |
143a: 10 92 ac 00 sts 0x00AC, r1 |
if(_TASTE4) { if(taste4++ == 0 || taste4 == CNT_TASTE) ret |= KEY4; if(taste4 == CNT_TASTE) taste4 = CNT_TASTE-CNT_TASTE/3;} else taste4 = 0; |
143e: cc 9b sbis 0x19, 4 ; 25 |
1440: 12 c0 rjmp .+36 ; 0x1466 <GetKeyboard+0xc2> |
1442: 80 91 ad 00 lds r24, 0x00AD |
1446: 8f 5f subi r24, 0xFF ; 255 |
1448: 80 93 ad 00 sts 0x00AD, r24 |
144c: 81 30 cpi r24, 0x01 ; 1 |
144e: 11 f0 breq .+4 ; 0x1454 <GetKeyboard+0xb0> |
1450: 8a 30 cpi r24, 0x0A ; 10 |
1452: 09 f4 brne .+2 ; 0x1456 <GetKeyboard+0xb2> |
1454: c8 60 ori r28, 0x08 ; 8 |
1456: 80 91 ad 00 lds r24, 0x00AD |
145a: 8a 30 cpi r24, 0x0A ; 10 |
145c: 31 f4 brne .+12 ; 0x146a <GetKeyboard+0xc6> |
145e: 87 e0 ldi r24, 0x07 ; 7 |
1460: 80 93 ad 00 sts 0x00AD, r24 |
1464: 02 c0 rjmp .+4 ; 0x146a <GetKeyboard+0xc6> |
1466: 10 92 ad 00 sts 0x00AD, r1 |
if(_TASTE5) { if(taste5++ == 0 || taste5 == CNT_TASTE) ret |= KEY5; if(taste5 == CNT_TASTE) taste5 = CNT_TASTE-CNT_TASTE/3;} else taste5 = 0; |
146a: cb 9b sbis 0x19, 3 ; 25 |
146c: 12 c0 rjmp .+36 ; 0x1492 <GetKeyboard+0xee> |
146e: 80 91 ae 00 lds r24, 0x00AE |
1472: 8f 5f subi r24, 0xFF ; 255 |
1474: 80 93 ae 00 sts 0x00AE, r24 |
1478: 81 30 cpi r24, 0x01 ; 1 |
147a: 11 f0 breq .+4 ; 0x1480 <GetKeyboard+0xdc> |
147c: 8a 30 cpi r24, 0x0A ; 10 |
147e: 09 f4 brne .+2 ; 0x1482 <GetKeyboard+0xde> |
1480: c0 61 ori r28, 0x10 ; 16 |
1482: 80 91 ae 00 lds r24, 0x00AE |
1486: 8a 30 cpi r24, 0x0A ; 10 |
1488: 31 f4 brne .+12 ; 0x1496 <GetKeyboard+0xf2> |
148a: 87 e0 ldi r24, 0x07 ; 7 |
148c: 80 93 ae 00 sts 0x00AE, r24 |
1490: 02 c0 rjmp .+4 ; 0x1496 <GetKeyboard+0xf2> |
1492: 10 92 ae 00 sts 0x00AE, r1 |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1496: 82 e3 ldi r24, 0x32 ; 50 |
1498: 90 e0 ldi r25, 0x00 ; 0 |
149a: 0e 94 a8 09 call 0x1350 <SetDelay> |
149e: 90 93 a9 00 sts 0x00A9, r25 |
14a2: 80 93 a8 00 sts 0x00A8, r24 |
} |
return(ret); |
} |
14a6: 8c 2f mov r24, r28 |
14a8: 99 27 eor r25, r25 |
14aa: cf 91 pop r28 |
14ac: 08 95 ret |
000014ae <GetKeyboard2>: |
unsigned char GetKeyboard2(void) |
{ |
unsigned char ret = 0; |
14ae: 80 e0 ldi r24, 0x00 ; 0 |
if(_TASTE1) ret |= KEY1; |
14b0: cf 99 sbic 0x19, 7 ; 25 |
14b2: 81 e0 ldi r24, 0x01 ; 1 |
if(_TASTE2) ret |= KEY2; |
14b4: ce 99 sbic 0x19, 6 ; 25 |
14b6: 82 60 ori r24, 0x02 ; 2 |
if(_TASTE3) ret |= KEY3; |
14b8: cd 99 sbic 0x19, 5 ; 25 |
14ba: 84 60 ori r24, 0x04 ; 4 |
if(_TASTE4) ret |= KEY4; |
14bc: cc 99 sbic 0x19, 4 ; 25 |
14be: 88 60 ori r24, 0x08 ; 8 |
if(_TASTE5) ret |= KEY5; |
14c0: cb 99 sbic 0x19, 3 ; 25 |
14c2: 80 61 ori r24, 0x10 ; 16 |
return(ret); |
} |
14c4: 99 27 eor r25, r25 |
14c6: 08 95 ret |
000014c8 <Menu>: |
unsigned char KanalVon[MAX_KANAL]; |
unsigned char KanalAn[MAX_KANAL]; |
void Menu(unsigned char key) |
{ |
14c8: 0f 93 push r16 |
14ca: 1f 93 push r17 |
14cc: cf 93 push r28 |
14ce: df 93 push r29 |
static unsigned int arr = 0; |
static unsigned char MaxMenue = 2,MenuePunkt=0; |
unsigned char kanal = 0; |
if(key & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LCD_Clear; } |
14d0: c8 2f mov r28, r24 |
14d2: dd 27 eor r29, r29 |
14d4: c0 ff sbrs r28, 0 |
14d6: 0f c0 rjmp .+30 ; 0x14f6 <Menu+0x2e> |
14d8: 80 91 b3 00 lds r24, 0x00B3 |
14dc: 88 23 and r24, r24 |
14de: 11 f0 breq .+4 ; 0x14e4 <Menu+0x1c> |
14e0: 81 50 subi r24, 0x01 ; 1 |
14e2: 02 c0 rjmp .+4 ; 0x14e8 <Menu+0x20> |
14e4: 80 91 7b 00 lds r24, 0x007B |
14e8: 80 93 b3 00 sts 0x00B3, r24 |
14ec: 81 e0 ldi r24, 0x01 ; 1 |
14ee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
14f2: 0e 94 c9 05 call 0xb92 <_long_delay> |
if(key & KEY2) { MenuePunkt++; LCD_Clear; } |
14f6: 8e 01 movw r16, r28 |
14f8: 02 70 andi r16, 0x02 ; 2 |
14fa: 10 70 andi r17, 0x00 ; 0 |
14fc: c1 ff sbrs r28, 1 |
14fe: 0a c0 rjmp .+20 ; 0x1514 <Menu+0x4c> |
1500: 80 91 b3 00 lds r24, 0x00B3 |
1504: 8f 5f subi r24, 0xFF ; 255 |
1506: 80 93 b3 00 sts 0x00B3, r24 |
150a: 81 e0 ldi r24, 0x01 ; 1 |
150c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
1510: 0e 94 c9 05 call 0xb92 <_long_delay> |
if((key & KEY1) && (key & KEY2)) MenuePunkt = 0; |
1514: c0 ff sbrs r28, 0 |
1516: 04 c0 rjmp .+8 ; 0x1520 <Menu+0x58> |
1518: 01 2b or r16, r17 |
151a: 11 f0 breq .+4 ; 0x1520 <Menu+0x58> |
151c: 10 92 b3 00 sts 0x00B3, r1 |
// LCD_printfxy(13,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
1520: 20 91 b3 00 lds r18, 0x00B3 |
1524: 82 2f mov r24, r18 |
1526: 99 27 eor r25, r25 |
1528: 81 30 cpi r24, 0x01 ; 1 |
152a: 91 05 cpc r25, r1 |
152c: 09 f4 brne .+2 ; 0x1530 <Menu+0x68> |
152e: 41 c0 rjmp .+130 ; 0x15b2 <Menu+0xea> |
1530: 82 30 cpi r24, 0x02 ; 2 |
1532: 91 05 cpc r25, r1 |
1534: 1c f4 brge .+6 ; 0x153c <Menu+0x74> |
1536: 89 2b or r24, r25 |
1538: 49 f0 breq .+18 ; 0x154c <Menu+0x84> |
153a: bf c0 rjmp .+382 ; 0x16ba <Menu+0x1f2> |
153c: 82 30 cpi r24, 0x02 ; 2 |
153e: 91 05 cpc r25, r1 |
1540: 09 f4 brne .+2 ; 0x1544 <Menu+0x7c> |
1542: 6a c0 rjmp .+212 ; 0x1618 <Menu+0x150> |
1544: 03 97 sbiw r24, 0x03 ; 3 |
1546: 09 f4 brne .+2 ; 0x154a <Menu+0x82> |
1548: 8e c0 rjmp .+284 ; 0x1666 <Menu+0x19e> |
154a: b7 c0 rjmp .+366 ; 0x16ba <Menu+0x1f2> |
{ |
case 0: |
LCD_printfxy(0,0,"Verbinden mit"); |
154c: 60 e0 ldi r22, 0x00 ; 0 |
154e: 86 2f mov r24, r22 |
1550: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1554: 84 eb ldi r24, 0xB4 ; 180 |
1556: 90 e0 ldi r25, 0x00 ; 0 |
1558: 9f 93 push r25 |
155a: 8f 93 push r24 |
155c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"MicroSPS:%2i ",SlaveAdresse); |
1560: 61 e0 ldi r22, 0x01 ; 1 |
1562: 80 e0 ldi r24, 0x00 ; 0 |
1564: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1568: 0f 90 pop r0 |
156a: 0f 90 pop r0 |
156c: 80 91 64 00 lds r24, 0x0064 |
1570: 99 27 eor r25, r25 |
1572: 9f 93 push r25 |
1574: 8f 93 push r24 |
1576: 82 ec ldi r24, 0xC2 ; 194 |
1578: 90 e0 ldi r25, 0x00 ; 0 |
157a: 9f 93 push r25 |
157c: 8f 93 push r24 |
157e: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && SlaveAdresse > 1) SlaveAdresse--; |
1582: 0f 90 pop r0 |
1584: 0f 90 pop r0 |
1586: 0f 90 pop r0 |
1588: 0f 90 pop r0 |
158a: c2 ff sbrs r28, 2 |
158c: 07 c0 rjmp .+14 ; 0x159c <Menu+0xd4> |
158e: 80 91 64 00 lds r24, 0x0064 |
1592: 82 30 cpi r24, 0x02 ; 2 |
1594: 18 f0 brcs .+6 ; 0x159c <Menu+0xd4> |
1596: 81 50 subi r24, 0x01 ; 1 |
1598: 80 93 64 00 sts 0x0064, r24 |
if(key & KEY4 && SlaveAdresse < 26) SlaveAdresse++; |
159c: c3 ff sbrs r28, 3 |
159e: 92 c0 rjmp .+292 ; 0x16c4 <Menu+0x1fc> |
15a0: 80 91 64 00 lds r24, 0x0064 |
15a4: 8a 31 cpi r24, 0x1A ; 26 |
15a6: 08 f0 brcs .+2 ; 0x15aa <Menu+0xe2> |
15a8: 8d c0 rjmp .+282 ; 0x16c4 <Menu+0x1fc> |
15aa: 8f 5f subi r24, 0xFF ; 255 |
15ac: 80 93 64 00 sts 0x0064, r24 |
break; |
15b0: 89 c0 rjmp .+274 ; 0x16c4 <Menu+0x1fc> |
case 1: |
LCD_printfxy(0,0,"Max Adresse"); |
15b2: 60 e0 ldi r22, 0x00 ; 0 |
15b4: 86 2f mov r24, r22 |
15b6: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ba: 80 ed ldi r24, 0xD0 ; 208 |
15bc: 90 e0 ldi r25, 0x00 ; 0 |
15be: 9f 93 push r25 |
15c0: 8f 93 push r24 |
15c2: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"%2i ",AnzahlTeilnehmer); |
15c6: 61 e0 ldi r22, 0x01 ; 1 |
15c8: 80 e0 ldi r24, 0x00 ; 0 |
15ca: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ce: 0f 90 pop r0 |
15d0: 0f 90 pop r0 |
15d2: 80 91 6c 00 lds r24, 0x006C |
15d6: 99 27 eor r25, r25 |
15d8: 9f 93 push r25 |
15da: 8f 93 push r24 |
15dc: 8c ed ldi r24, 0xDC ; 220 |
15de: 90 e0 ldi r25, 0x00 ; 0 |
15e0: 9f 93 push r25 |
15e2: 8f 93 push r24 |
15e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && AnzahlTeilnehmer > 1) AnzahlTeilnehmer--; |
15e8: 0f 90 pop r0 |
15ea: 0f 90 pop r0 |
15ec: 0f 90 pop r0 |
15ee: 0f 90 pop r0 |
15f0: c2 ff sbrs r28, 2 |
15f2: 07 c0 rjmp .+14 ; 0x1602 <Menu+0x13a> |
15f4: 80 91 6c 00 lds r24, 0x006C |
15f8: 82 30 cpi r24, 0x02 ; 2 |
15fa: 18 f0 brcs .+6 ; 0x1602 <Menu+0x13a> |
15fc: 81 50 subi r24, 0x01 ; 1 |
15fe: 80 93 6c 00 sts 0x006C, r24 |
if(key & KEY4 && AnzahlTeilnehmer < 26) AnzahlTeilnehmer++; |
1602: c3 ff sbrs r28, 3 |
1604: 5f c0 rjmp .+190 ; 0x16c4 <Menu+0x1fc> |
1606: 80 91 6c 00 lds r24, 0x006C |
160a: 8a 31 cpi r24, 0x1A ; 26 |
160c: 08 f0 brcs .+2 ; 0x1610 <Menu+0x148> |
160e: 5a c0 rjmp .+180 ; 0x16c4 <Menu+0x1fc> |
1610: 8f 5f subi r24, 0xFF ; 255 |
1612: 80 93 6c 00 sts 0x006C, r24 |
break; |
1616: 56 c0 rjmp .+172 ; 0x16c4 <Menu+0x1fc> |
case 2: |
LCD_printfxy(0,0,"Checksum"); |
1618: 60 e0 ldi r22, 0x00 ; 0 |
161a: 86 2f mov r24, r22 |
161c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1620: 81 ee ldi r24, 0xE1 ; 225 |
1622: 90 e0 ldi r25, 0x00 ; 0 |
1624: 9f 93 push r25 |
1626: 8f 93 push r24 |
1628: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Errors:%5i ",CntCrcError); |
162c: 61 e0 ldi r22, 0x01 ; 1 |
162e: 80 e0 ldi r24, 0x00 ; 0 |
1630: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1634: 0f 90 pop r0 |
1636: 0f 90 pop r0 |
1638: 80 91 99 00 lds r24, 0x0099 |
163c: 90 91 9a 00 lds r25, 0x009A |
1640: 9f 93 push r25 |
1642: 8f 93 push r24 |
1644: 8a ee ldi r24, 0xEA ; 234 |
1646: 90 e0 ldi r25, 0x00 ; 0 |
1648: 9f 93 push r25 |
164a: 8f 93 push r24 |
164c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) CntCrcError = 0; |
1650: 0f 90 pop r0 |
1652: 0f 90 pop r0 |
1654: 0f 90 pop r0 |
1656: 0f 90 pop r0 |
1658: c2 ff sbrs r28, 2 |
165a: 34 c0 rjmp .+104 ; 0x16c4 <Menu+0x1fc> |
165c: 10 92 9a 00 sts 0x009A, r1 |
1660: 10 92 99 00 sts 0x0099, r1 |
break; |
1664: 2f c0 rjmp .+94 ; 0x16c4 <Menu+0x1fc> |
case 3: |
LCD_printfxy(0,0,"Display"); |
1666: 60 e0 ldi r22, 0x00 ; 0 |
1668: 86 2f mov r24, r22 |
166a: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
166e: 86 ef ldi r24, 0xF6 ; 246 |
1670: 90 e0 ldi r25, 0x00 ; 0 |
1672: 9f 93 push r25 |
1674: 8f 93 push r24 |
1676: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Zeilen:%1i ",DisplayZeilen); |
167a: 61 e0 ldi r22, 0x01 ; 1 |
167c: 80 e0 ldi r24, 0x00 ; 0 |
167e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1682: 0f 90 pop r0 |
1684: 0f 90 pop r0 |
1686: 80 91 65 00 lds r24, 0x0065 |
168a: 99 27 eor r25, r25 |
168c: 9f 93 push r25 |
168e: 8f 93 push r24 |
1690: 8e ef ldi r24, 0xFE ; 254 |
1692: 90 e0 ldi r25, 0x00 ; 0 |
1694: 9f 93 push r25 |
1696: 8f 93 push r24 |
1698: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) DisplayZeilen = 4; |
169c: 0f 90 pop r0 |
169e: 0f 90 pop r0 |
16a0: 0f 90 pop r0 |
16a2: 0f 90 pop r0 |
16a4: c2 ff sbrs r28, 2 |
16a6: 03 c0 rjmp .+6 ; 0x16ae <Menu+0x1e6> |
16a8: 84 e0 ldi r24, 0x04 ; 4 |
16aa: 80 93 65 00 sts 0x0065, r24 |
if(key & KEY4) DisplayZeilen = 2; |
16ae: c3 ff sbrs r28, 3 |
16b0: 09 c0 rjmp .+18 ; 0x16c4 <Menu+0x1fc> |
16b2: 82 e0 ldi r24, 0x02 ; 2 |
16b4: 80 93 65 00 sts 0x0065, r24 |
break; |
16b8: 05 c0 rjmp .+10 ; 0x16c4 <Menu+0x1fc> |
/* case 1: |
case 2: |
case 3: |
case 4: |
kanal = MenuePunkt - 1; |
LCD_printfxy(0,0,"Datenkanal:%2i",kanal); |
LCD_printfxy(0,1,"Von:%2i an %2i ",KanalVon[kanal],KanalAn[kanal]); |
if(key & KEY3) KanalVon[kanal]++; |
if(key & KEY4) KanalAn[kanal]++; |
KanalVon[kanal] % MAX_KANAL; |
KanalAn[kanal] % MAX_KANAL; |
break; |
*/ |
/* |
case 1: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Display:%3ims ",IntervallDisplay); |
if(key & KEY3 && IntervallDisplay > 25) IntervallDisplay -= 5; |
if(key & KEY4 && IntervallDisplay < 990) IntervallDisplay += 5; |
break; |
case 2: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Debug:%3ims ",IntervallDebug); |
if(key & KEY3 && IntervallDebug > 25) IntervallDebug -= 5; |
if(key & KEY4 && IntervallDebug < 990) IntervallDebug += 5; |
break; |
case 1: |
LCD_printfxy(0,0,"Time"); |
LCD_printfxy(0,1,"%3i:%02i",Minute,Sekunde); |
if(key & KEY3) if(Minute) Minute--; |
if(key & KEY4) Minute++; |
if(key & KEY5) Sekunde = 0; |
break; |
case 2: |
LCD_printfxy(0,0,"Testvariable"); |
LCD_printfxy(0,1,"TestInt:%5i",TestInt); |
if(key & KEY3) TestInt--; |
if(key & KEY4) TestInt++; |
break; |
case 3: |
LCD_printfxy(0,0,"Testarray"); |
LCD_printfxy(0,1,"Array[%i]=%3i",arr,Array[arr]); |
if(key & KEY5) if(++arr == ARRAYGROESSE) arr = 0; |
if(key & KEY3) Array[arr]--; |
if(key & KEY4) Array[arr]++; |
break; |
case 4: |
LCD_printfxy(0,0,"Infrarot RC5:"); |
LCD_printfxy(0,1,"Adr:%2i Cmd:%3i",(IR_Code >> 8), IR_Code & 0xff); |
break; |
*/ |
default: MaxMenue = MenuePunkt - 1; |
16ba: 21 50 subi r18, 0x01 ; 1 |
16bc: 20 93 7b 00 sts 0x007B, r18 |
MenuePunkt = 0; |
16c0: 10 92 b3 00 sts 0x00B3, r1 |
16c4: df 91 pop r29 |
16c6: cf 91 pop r28 |
16c8: 1f 91 pop r17 |
16ca: 0f 91 pop r16 |
16cc: 08 95 ret |
000016ce <InitIR>: |
// Init IR |
// ************************************************************************ |
void InitIR(void) |
{ |
INT0_ENABLE; // ext. Int0 enable |
16ce: 8b b7 in r24, 0x3b ; 59 |
16d0: 80 64 ori r24, 0x40 ; 64 |
16d2: 8b bf out 0x3b, r24 ; 59 |
CLR_INT0_FLAG; // war |= 0x40 |
16d4: 8a b7 in r24, 0x3a ; 58 |
16d6: 8f 7b andi r24, 0xBF ; 191 |
16d8: 8a bf out 0x3a, r24 ; 58 |
INIT_INT0_FLANKE; |
16da: 85 b7 in r24, 0x35 ; 53 |
16dc: 8c 7f andi r24, 0xFC ; 252 |
16de: 85 bf out 0x35, r24 ; 53 |
16e0: 85 b7 in r24, 0x35 ; 53 |
16e2: 82 60 ori r24, 0x02 ; 2 |
16e4: 85 bf out 0x35, r24 ; 53 |
TIMER0_PRESCALER = 0x04; // Timer0: Clk div 256 |
16e6: 84 e0 ldi r24, 0x04 ; 4 |
16e8: 83 bf out 0x33, r24 ; 51 |
Decodierung_Lauft = 0; |
16ea: 10 92 c9 01 sts 0x01C9, r1 |
New_IR_Code = 0; |
16ee: 10 92 c6 01 sts 0x01C6, r1 |
IR_Code = 0; |
16f2: 10 92 c8 01 sts 0x01C8, r1 |
16f6: 10 92 c7 01 sts 0x01C7, r1 |
16fa: 08 95 ret |
000016fc <__vector_1>: |
} |
// ************************************************************************** |
// * aufgerufen durch: externer Interrupt |
// ************************************************************************** |
// * Die Funktion wird durch einen externen Interrupt aufgerufen. |
// * Sie dient nur zum Starten der Abtastsequenz und zum Triggern auf die |
// * Signalflanken in der Mitte der Daten. |
// ************************************************************************** |
SIGNAL (SIG_INTERRUPT0) |
{ |
16fc: 1f 92 push r1 |
16fe: 0f 92 push r0 |
1700: 0f b6 in r0, 0x3f ; 63 |
1702: 0f 92 push r0 |
1704: 11 24 eor r1, r1 |
1706: 8f 93 push r24 |
// Zeitbasis fuer Timer einstellen |
// Entspricht 1,5 mal einer Bitlaenge |
// PORTB++; |
TCNT0 = -41; |
1708: 87 ed ldi r24, 0xD7 ; 215 |
170a: 82 bf out 0x32, r24 ; 50 |
TIM0_START; // Timer 0 starten, |
170c: 89 b7 in r24, 0x39 ; 57 |
170e: 81 60 ori r24, 0x01 ; 1 |
1710: 89 bf out 0x39, r24 ; 57 |
if(Decodierung_Lauft) INT0_DISABLE; // die erneute Int.-Auslsung soll |
1712: 80 91 c9 01 lds r24, 0x01C9 |
1716: 88 23 and r24, r24 |
1718: 19 f0 breq .+6 ; 0x1720 <__vector_1+0x24> |
171a: 8b b7 in r24, 0x3b ; 59 |
171c: 8f 7b andi r24, 0xBF ; 191 |
171e: 8b bf out 0x3b, r24 ; 59 |
1720: 8f 91 pop r24 |
1722: 0f 90 pop r0 |
1724: 0f be out 0x3f, r0 ; 63 |
1726: 0f 90 pop r0 |
1728: 1f 90 pop r1 |
172a: 18 95 reti |
0000172c <__vector_11>: |
// nur die Timer-Routine erlauben |
} |
// ************************************************************************** |
// * aufgerufen durch: Timerueberlauf Timer 0 |
// ************************************************************************** |
// * Die Funktion wird durch einen Timer0-Interrupt aufgerufen. |
// * Der Timer wird vom ext. Int0 gestartet. |
// * Das Infrarotsignal wird hier abgetastet und die Wertigkeiten der |
// * Bits entsprechend aufaddiert. Das empfangende Zeichen wird in der |
// * globalen Variablen IR_Code gespeichert. Nach Empfang wird das Bit |
// * Neues_Zeichen gesetzt. |
// ************************************************************************** |
SIGNAL (SIG_OVERFLOW0) |
{ |
172c: 1f 92 push r1 |
172e: 0f 92 push r0 |
1730: 0f b6 in r0, 0x3f ; 63 |
1732: 0f 92 push r0 |
1734: 11 24 eor r1, r1 |
1736: 2f 93 push r18 |
1738: 3f 93 push r19 |
173a: 4f 93 push r20 |
173c: 8f 93 push r24 |
173e: 9f 93 push r25 |
static unsigned int Shift,IR_Code_tmp; |
static unsigned char IR_Zaehler=0,IRSperrCounter=0; |
// Reinitialize Timer's 0 value |
TCNT1 = -41; |
1740: 87 ed ldi r24, 0xD7 ; 215 |
1742: 9f ef ldi r25, 0xFF ; 255 |
1744: 9d bd out 0x2d, r25 ; 45 |
1746: 8c bd out 0x2c, r24 ; 44 |
if (IRSperrCounter) |
1748: 80 91 b9 00 lds r24, 0x00B9 |
174c: 88 23 and r24, r24 |
174e: 69 f0 breq .+26 ; 0x176a <__vector_11+0x3e> |
{ IRSperrCounter--; |
1750: 81 50 subi r24, 0x01 ; 1 |
1752: 80 93 b9 00 sts 0x00B9, r24 |
if (!IRSperrCounter) |
1756: 88 23 and r24, r24 |
1758: 09 f0 breq .+2 ; 0x175c <__vector_11+0x30> |
175a: 8a c0 rjmp .+276 ; 0x1870 <__vector_11+0x144> |
{ |
TIM0_STOPP; // Timer0 sperre wird durch ExtInt0 gestartet |
175c: 89 b7 in r24, 0x39 ; 57 |
175e: 8e 7f andi r24, 0xFE ; 254 |
1760: 89 bf out 0x39, r24 ; 57 |
CLR_INT0_FLAG; // IntFlag Loeschen |
1762: 8a b7 in r24, 0x3a ; 58 |
1764: 8f 7b andi r24, 0xBF ; 191 |
1766: 8a bf out 0x3a, r24 ; 58 |
1768: 80 c0 rjmp .+256 ; 0x186a <__vector_11+0x13e> |
INT0_ENABLE; // externen Interrupt wieder freigenben |
} |
} |
else |
{ |
if(IR_Zaehler > 1) |
176a: 40 91 b8 00 lds r20, 0x00B8 |
176e: 42 30 cpi r20, 0x02 ; 2 |
1770: 88 f0 brcs .+34 ; 0x1794 <__vector_11+0x68> |
{ |
Decodierung_Lauft = 1; |
1772: 81 e0 ldi r24, 0x01 ; 1 |
1774: 80 93 c9 01 sts 0x01C9, r24 |
{ |
CLR_INT0_FLAG; // Interrupt Flag loeschen |
1778: 8a b7 in r24, 0x3a ; 58 |
177a: 8f 7b andi r24, 0xBF ; 191 |
177c: 8a bf out 0x3a, r24 ; 58 |
if(IR_PP) INT0_NEG_FLANKE; // naechste fallende Flanke soll Int0 ausloesen |
177e: 82 9b sbis 0x10, 2 ; 16 |
1780: 03 c0 rjmp .+6 ; 0x1788 <__vector_11+0x5c> |
1782: 85 b7 in r24, 0x35 ; 53 |
1784: 8e 7f andi r24, 0xFE ; 254 |
1786: 02 c0 rjmp .+4 ; 0x178c <__vector_11+0x60> |
else INT0_POS_FLANKE; // naechste steigende Flanke soll Int0 ausloesen |
1788: 85 b7 in r24, 0x35 ; 53 |
178a: 81 60 ori r24, 0x01 ; 1 |
178c: 85 bf out 0x35, r24 ; 53 |
INT0_ENABLE; // externen Int frei |
178e: 8b b7 in r24, 0x3b ; 59 |
1790: 80 64 ori r24, 0x40 ; 64 |
1792: 8b bf out 0x3b, r24 ; 59 |
} |
} |
if(!IR_Zaehler) // es beginnt eine neue Abtastung |
1794: 44 23 and r20, r20 |
1796: 59 f4 brne .+22 ; 0x17ae <__vector_11+0x82> |
{ // es handelt sich um das 1. Sync-Bit |
IR_Code_tmp=0; // Merker löschen |
1798: 10 92 b7 00 sts 0x00B7, r1 |
179c: 10 92 b6 00 sts 0x00B6, r1 |
Shift=0x8000; //;8192; // Maske auf MSB |
17a0: 80 e0 ldi r24, 0x00 ; 0 |
17a2: 90 e8 ldi r25, 0x80 ; 128 |
17a4: 90 93 b5 00 sts 0x00B5, r25 |
17a8: 80 93 b4 00 sts 0x00B4, r24 |
17ac: 14 c0 rjmp .+40 ; 0x17d6 <__vector_11+0xaa> |
} |
else |
if(IR_PP==1) // das empfangende Bit ist logisch High |
17ae: 82 9b sbis 0x10, 2 ; 16 |
17b0: 10 c0 rjmp .+32 ; 0x17d2 <__vector_11+0xa6> |
{ if(IR_Zaehler>2) // (IR_Zaehler ist gleich 1 beim 2. Sync-Bit) |
17b2: 43 30 cpi r20, 0x03 ; 3 |
17b4: 70 f0 brcs .+28 ; 0x17d2 <__vector_11+0xa6> |
{ // 2 --> Toggle-Bit (wird übersprungen) |
IR_Code_tmp |= Shift; // entsprechendse Bit setzen |
17b6: 80 91 b6 00 lds r24, 0x00B6 |
17ba: 90 91 b7 00 lds r25, 0x00B7 |
17be: 20 91 b4 00 lds r18, 0x00B4 |
17c2: 30 91 b5 00 lds r19, 0x00B5 |
17c6: 82 2b or r24, r18 |
17c8: 93 2b or r25, r19 |
17ca: 90 93 b7 00 sts 0x00B7, r25 |
17ce: 80 93 b6 00 sts 0x00B6, r24 |
} |
} |
if ((IR_Zaehler < 2) && !(IR_PP==1)) // startbits überprüfen |
17d2: 42 30 cpi r20, 0x02 ; 2 |
17d4: 20 f4 brcc .+8 ; 0x17de <__vector_11+0xb2> |
17d6: 82 99 sbic 0x10, 2 ; 16 |
17d8: 02 c0 rjmp .+4 ; 0x17de <__vector_11+0xb2> |
{ |
IR_Zaehler = 0; |
17da: 10 92 b8 00 sts 0x00B8, r1 |
} |
Shift >>=1; // Shiftregister um 1 nach rechts schieben |
17de: 80 91 b4 00 lds r24, 0x00B4 |
17e2: 90 91 b5 00 lds r25, 0x00B5 |
17e6: 96 95 lsr r25 |
17e8: 87 95 ror r24 |
17ea: 90 93 b5 00 sts 0x00B5, r25 |
17ee: 80 93 b4 00 sts 0x00B4, r24 |
// (für das nächste empf. Bit |
if (Shift == 128) Shift = 32; // Adresse ins HighByte, Kommando ins LowByte |
17f2: 80 38 cpi r24, 0x80 ; 128 |
17f4: 91 05 cpc r25, r1 |
17f6: 31 f4 brne .+12 ; 0x1804 <__vector_11+0xd8> |
17f8: 80 e2 ldi r24, 0x20 ; 32 |
17fa: 90 e0 ldi r25, 0x00 ; 0 |
17fc: 90 93 b5 00 sts 0x00B5, r25 |
1800: 80 93 b4 00 sts 0x00B4, r24 |
if(IR_Zaehler++==15) // Das IR-Wort wurde vollstaendig abgetastet |
1804: 80 91 b8 00 lds r24, 0x00B8 |
1808: 8f 5f subi r24, 0xFF ; 255 |
180a: 80 93 b8 00 sts 0x00B8, r24 |
180e: 80 31 cpi r24, 0x10 ; 16 |
1810: 79 f5 brne .+94 ; 0x1870 <__vector_11+0x144> |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
1812: 8a b7 in r24, 0x3a ; 58 |
1814: 8f 7b andi r24, 0xBF ; 191 |
1816: 8a bf out 0x3a, r24 ; 58 |
INT0_NEG_FLANKE; // fallende Flanke |
1818: 85 b7 in r24, 0x35 ; 53 |
181a: 8e 7f andi r24, 0xFE ; 254 |
181c: 85 bf out 0x35, r24 ; 53 |
IR_Zaehler = 0; |
181e: 10 92 b8 00 sts 0x00B8, r1 |
Decodierung_Lauft=0; |
1822: 10 92 c9 01 sts 0x01C9, r1 |
/* if ((HIGH(IR_Code_tmp)==ALLOWED1)|| (HIGH(IR_Code_tmp)==ALLOWED2)|| |
(HIGH(IR_Code_tmp)==ALLOWED3)||(HIGH(IR_Code_tmp)==ALLOWED4)|| |
(HIGH(IR_Code_tmp)==ALLOWED5) ) |
if ((HIGH(IR_Code_tmp)< 10))*/ |
if ((HIGH(IR_Code_tmp)< 10 ) && (LOW(IR_Code_tmp)!=0x3F) ) |
1826: 80 91 b7 00 lds r24, 0x00B7 |
182a: 8a 30 cpi r24, 0x0A ; 10 |
182c: d8 f4 brcc .+54 ; 0x1864 <__vector_11+0x138> |
182e: 80 91 b6 00 lds r24, 0x00B6 |
1832: 8f 33 cpi r24, 0x3F ; 63 |
1834: b9 f0 breq .+46 ; 0x1864 <__vector_11+0x138> |
{ // nur erlaubt Adressen werden akzepetiert |
IR_Code=IR_Code_tmp; // IR-Wort in die globale Variable schreiben |
1836: 80 91 b6 00 lds r24, 0x00B6 |
183a: 90 91 b7 00 lds r25, 0x00B7 |
183e: 90 93 c8 01 sts 0x01C8, r25 |
1842: 80 93 c7 01 sts 0x01C7, r24 |
New_IR_Code = 1; // Es ist ein neues Zeichen eingetragen worden |
1846: 81 e0 ldi r24, 0x01 ; 1 |
1848: 80 93 c6 01 sts 0x01C6, r24 |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
184c: 84 e0 ldi r24, 0x04 ; 4 |
184e: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
1852: 8b b7 in r24, 0x3b ; 59 |
1854: 80 64 ori r24, 0x40 ; 64 |
1856: 8b bf out 0x3b, r24 ; 59 |
LoescheIrCodeTimer = 250; |
1858: 8a ef ldi r24, 0xFA ; 250 |
185a: 90 e0 ldi r25, 0x00 ; 0 |
185c: 90 93 7d 00 sts 0x007D, r25 |
1860: 80 93 7c 00 sts 0x007C, r24 |
} |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
1864: 84 e0 ldi r24, 0x04 ; 4 |
1866: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
186a: 8b b7 in r24, 0x3b ; 59 |
186c: 80 64 ori r24, 0x40 ; 64 |
186e: 8b bf out 0x3b, r24 ; 59 |
1870: 9f 91 pop r25 |
1872: 8f 91 pop r24 |
1874: 4f 91 pop r20 |
1876: 3f 91 pop r19 |
1878: 2f 91 pop r18 |
187a: 0f 90 pop r0 |
187c: 0f be out 0x3f, r0 ; 63 |
187e: 0f 90 pop r0 |
1880: 1f 90 pop r1 |
1882: 18 95 reti |
00001884 <ADC_Init>: |
// --------------------------------------------------------------------------------------- |
void ADC_Init(void) |
{ |
ADMUX = 0; |
1884: 17 b8 out 0x07, r1 ; 7 |
ADCSRA = 0x86; |
1886: 86 e8 ldi r24, 0x86 ; 134 |
1888: 86 b9 out 0x06, r24 ; 6 |
188a: 08 95 ret |
0000188c <ReadADC>: |
} |
// --------------------------------------------------------------------------------------- |
unsigned int ReadADC(unsigned char adc_input) |
{ |
ADMUX = adc_input; |
188c: 87 b9 out 0x07, r24 ; 7 |
ADCSRA |= 0x40; |
188e: 36 9a sbi 0x06, 6 ; 6 |
//Delay_ms(10); |
while ((ADCSRA & 0x10) == 0); |
1890: 34 9b sbis 0x06, 4 ; 6 |
1892: fe cf rjmp .-4 ; 0x1890 <ReadADC+0x4> |
ADCSRA |= 0x10; |
1894: 34 9a sbi 0x06, 4 ; 6 |
return ADCW; // read ad and calc. temp. |
1896: 84 b1 in r24, 0x04 ; 4 |
1898: 95 b1 in r25, 0x05 ; 5 |
189a: 08 95 ret |
0000189c <GetAnalogWerte>: |
} |
void GetAnalogWerte(void) |
{ |
AnalogWerte[0] = ReadADC(0); |
189c: 80 e0 ldi r24, 0x00 ; 0 |
189e: 0e 94 46 0c call 0x188c <ReadADC> |
18a2: 90 93 cb 01 sts 0x01CB, r25 |
18a6: 80 93 ca 01 sts 0x01CA, r24 |
AnalogWerte[1] = ReadADC(1); |
18aa: 81 e0 ldi r24, 0x01 ; 1 |
18ac: 0e 94 46 0c call 0x188c <ReadADC> |
18b0: 90 93 cd 01 sts 0x01CD, r25 |
18b4: 80 93 cc 01 sts 0x01CC, r24 |
AnalogWerte[2] = ReadADC(2); |
18b8: 82 e0 ldi r24, 0x02 ; 2 |
18ba: 0e 94 46 0c call 0x188c <ReadADC> |
18be: 90 93 cf 01 sts 0x01CF, r25 |
18c2: 80 93 ce 01 sts 0x01CE, r24 |
18c6: 08 95 ret |
000018c8 <memchr>: |
18c8: fc 01 movw r30, r24 |
18ca: 41 50 subi r20, 0x01 ; 1 |
18cc: 50 40 sbci r21, 0x00 ; 0 |
18ce: 30 f0 brcs .+12 ; 0x18dc <memchr+0x14> |
18d0: 01 90 ld r0, Z+ |
18d2: 06 16 cp r0, r22 |
18d4: d1 f7 brne .-12 ; 0x18ca <memchr+0x2> |
18d6: 31 97 sbiw r30, 0x01 ; 1 |
18d8: cf 01 movw r24, r30 |
18da: 08 95 ret |
18dc: 88 27 eor r24, r24 |
18de: 99 27 eor r25, r25 |
18e0: 08 95 ret |
000018e2 <fdevopen>: |
18e2: 0f 93 push r16 |
18e4: 1f 93 push r17 |
18e6: cf 93 push r28 |
18e8: df 93 push r29 |
18ea: 8c 01 movw r16, r24 |
18ec: eb 01 movw r28, r22 |
18ee: 00 97 sbiw r24, 0x00 ; 0 |
18f0: 11 f4 brne .+4 ; 0x18f6 <fdevopen+0x14> |
18f2: 67 2b or r22, r23 |
18f4: c1 f1 breq .+112 ; 0x1966 <fdevopen+0x84> |
18f6: 6e e0 ldi r22, 0x0E ; 14 |
18f8: 70 e0 ldi r23, 0x00 ; 0 |
18fa: 81 e0 ldi r24, 0x01 ; 1 |
18fc: 90 e0 ldi r25, 0x00 ; 0 |
18fe: 0e 94 b8 0c call 0x1970 <calloc> |
1902: fc 01 movw r30, r24 |
1904: 89 2b or r24, r25 |
1906: 71 f1 breq .+92 ; 0x1964 <fdevopen+0x82> |
1908: 80 e8 ldi r24, 0x80 ; 128 |
190a: 83 83 std Z+3, r24 ; 0x03 |
190c: 20 97 sbiw r28, 0x00 ; 0 |
190e: 71 f0 breq .+28 ; 0x192c <fdevopen+0x4a> |
1910: d3 87 std Z+11, r29 ; 0x0b |
1912: c2 87 std Z+10, r28 ; 0x0a |
1914: 81 e8 ldi r24, 0x81 ; 129 |
1916: 83 83 std Z+3, r24 ; 0x03 |
1918: 80 91 d0 01 lds r24, 0x01D0 |
191c: 90 91 d1 01 lds r25, 0x01D1 |
1920: 89 2b or r24, r25 |
1922: 21 f4 brne .+8 ; 0x192c <fdevopen+0x4a> |
1924: f0 93 d1 01 sts 0x01D1, r31 |
1928: e0 93 d0 01 sts 0x01D0, r30 |
192c: 01 15 cp r16, r1 |
192e: 11 05 cpc r17, r1 |
1930: c9 f0 breq .+50 ; 0x1964 <fdevopen+0x82> |
1932: 11 87 std Z+9, r17 ; 0x09 |
1934: 00 87 std Z+8, r16 ; 0x08 |
1936: 83 81 ldd r24, Z+3 ; 0x03 |
1938: 82 60 ori r24, 0x02 ; 2 |
193a: 83 83 std Z+3, r24 ; 0x03 |
193c: 80 91 d2 01 lds r24, 0x01D2 |
1940: 90 91 d3 01 lds r25, 0x01D3 |
1944: 89 2b or r24, r25 |
1946: 71 f4 brne .+28 ; 0x1964 <fdevopen+0x82> |
1948: f0 93 d3 01 sts 0x01D3, r31 |
194c: e0 93 d2 01 sts 0x01D2, r30 |
1950: 80 91 d4 01 lds r24, 0x01D4 |
1954: 90 91 d5 01 lds r25, 0x01D5 |
1958: 89 2b or r24, r25 |
195a: 21 f4 brne .+8 ; 0x1964 <fdevopen+0x82> |
195c: f0 93 d5 01 sts 0x01D5, r31 |
1960: e0 93 d4 01 sts 0x01D4, r30 |
1964: cf 01 movw r24, r30 |
1966: df 91 pop r29 |
1968: cf 91 pop r28 |
196a: 1f 91 pop r17 |
196c: 0f 91 pop r16 |
196e: 08 95 ret |
00001970 <calloc>: |
1970: 0f 93 push r16 |
1972: 1f 93 push r17 |
1974: cf 93 push r28 |
1976: df 93 push r29 |
1978: 86 9f mul r24, r22 |
197a: 80 01 movw r16, r0 |
197c: 87 9f mul r24, r23 |
197e: 10 0d add r17, r0 |
1980: 96 9f mul r25, r22 |
1982: 10 0d add r17, r0 |
1984: 11 24 eor r1, r1 |
1986: c8 01 movw r24, r16 |
1988: 0e 94 d4 0c call 0x19a8 <malloc> |
198c: ec 01 movw r28, r24 |
198e: 00 97 sbiw r24, 0x00 ; 0 |
1990: 29 f0 breq .+10 ; 0x199c <calloc+0x2c> |
1992: a8 01 movw r20, r16 |
1994: 60 e0 ldi r22, 0x00 ; 0 |
1996: 70 e0 ldi r23, 0x00 ; 0 |
1998: 0e 94 ca 0d call 0x1b94 <memset> |
199c: ce 01 movw r24, r28 |
199e: df 91 pop r29 |
19a0: cf 91 pop r28 |
19a2: 1f 91 pop r17 |
19a4: 0f 91 pop r16 |
19a6: 08 95 ret |
000019a8 <malloc>: |
19a8: cf 93 push r28 |
19aa: df 93 push r29 |
19ac: ac 01 movw r20, r24 |
19ae: 02 97 sbiw r24, 0x02 ; 2 |
19b0: 10 f4 brcc .+4 ; 0x19b6 <malloc+0xe> |
19b2: 42 e0 ldi r20, 0x02 ; 2 |
19b4: 50 e0 ldi r21, 0x00 ; 0 |
19b6: 20 e0 ldi r18, 0x00 ; 0 |
19b8: 30 e0 ldi r19, 0x00 ; 0 |
19ba: a0 91 d8 01 lds r26, 0x01D8 |
19be: b0 91 d9 01 lds r27, 0x01D9 |
19c2: bd 01 movw r22, r26 |
19c4: f9 01 movw r30, r18 |
19c6: 10 97 sbiw r26, 0x00 ; 0 |
19c8: 09 f4 brne .+2 ; 0x19cc <malloc+0x24> |
19ca: 4c c0 rjmp .+152 ; 0x1a64 <malloc+0xbc> |
19cc: 8d 91 ld r24, X+ |
19ce: 9c 91 ld r25, X |
19d0: 11 97 sbiw r26, 0x01 ; 1 |
19d2: 84 17 cp r24, r20 |
19d4: 95 07 cpc r25, r21 |
19d6: 31 f1 breq .+76 ; 0x1a24 <malloc+0x7c> |
19d8: 48 17 cp r20, r24 |
19da: 59 07 cpc r21, r25 |
19dc: 38 f4 brcc .+14 ; 0x19ec <malloc+0x44> |
19de: 21 15 cp r18, r1 |
19e0: 31 05 cpc r19, r1 |
19e2: 19 f0 breq .+6 ; 0x19ea <malloc+0x42> |
19e4: 82 17 cp r24, r18 |
19e6: 93 07 cpc r25, r19 |
19e8: 08 f4 brcc .+2 ; 0x19ec <malloc+0x44> |
19ea: 9c 01 movw r18, r24 |
19ec: fd 01 movw r30, r26 |
19ee: a2 81 ldd r26, Z+2 ; 0x02 |
19f0: b3 81 ldd r27, Z+3 ; 0x03 |
19f2: 10 97 sbiw r26, 0x00 ; 0 |
19f4: 59 f7 brne .-42 ; 0x19cc <malloc+0x24> |
19f6: 21 15 cp r18, r1 |
19f8: 31 05 cpc r19, r1 |
19fa: a1 f1 breq .+104 ; 0x1a64 <malloc+0xbc> |
19fc: c9 01 movw r24, r18 |
19fe: 84 1b sub r24, r20 |
1a00: 95 0b sbc r25, r21 |
1a02: 04 97 sbiw r24, 0x04 ; 4 |
1a04: 08 f4 brcc .+2 ; 0x1a08 <malloc+0x60> |
1a06: a9 01 movw r20, r18 |
1a08: db 01 movw r26, r22 |
1a0a: e0 e0 ldi r30, 0x00 ; 0 |
1a0c: f0 e0 ldi r31, 0x00 ; 0 |
1a0e: 10 97 sbiw r26, 0x00 ; 0 |
1a10: 49 f1 breq .+82 ; 0x1a64 <malloc+0xbc> |
1a12: 8d 91 ld r24, X+ |
1a14: 9c 91 ld r25, X |
1a16: 11 97 sbiw r26, 0x01 ; 1 |
1a18: 82 17 cp r24, r18 |
1a1a: 93 07 cpc r25, r19 |
1a1c: f9 f4 brne .+62 ; 0x1a5c <malloc+0xb4> |
1a1e: 42 17 cp r20, r18 |
1a20: 53 07 cpc r21, r19 |
1a22: 79 f4 brne .+30 ; 0x1a42 <malloc+0x9a> |
1a24: ed 01 movw r28, r26 |
1a26: 8a 81 ldd r24, Y+2 ; 0x02 |
1a28: 9b 81 ldd r25, Y+3 ; 0x03 |
1a2a: 30 97 sbiw r30, 0x00 ; 0 |
1a2c: 19 f0 breq .+6 ; 0x1a34 <malloc+0x8c> |
1a2e: 93 83 std Z+3, r25 ; 0x03 |
1a30: 82 83 std Z+2, r24 ; 0x02 |
1a32: 04 c0 rjmp .+8 ; 0x1a3c <malloc+0x94> |
1a34: 90 93 d9 01 sts 0x01D9, r25 |
1a38: 80 93 d8 01 sts 0x01D8, r24 |
1a3c: cd 01 movw r24, r26 |
1a3e: 02 96 adiw r24, 0x02 ; 2 |
1a40: 4a c0 rjmp .+148 ; 0x1ad6 <malloc+0x12e> |
1a42: 24 1b sub r18, r20 |
1a44: 35 0b sbc r19, r21 |
1a46: fd 01 movw r30, r26 |
1a48: e2 0f add r30, r18 |
1a4a: f3 1f adc r31, r19 |
1a4c: 41 93 st Z+, r20 |
1a4e: 51 93 st Z+, r21 |
1a50: 22 50 subi r18, 0x02 ; 2 |
1a52: 30 40 sbci r19, 0x00 ; 0 |
1a54: 2d 93 st X+, r18 |
1a56: 3c 93 st X, r19 |
1a58: cf 01 movw r24, r30 |
1a5a: 3d c0 rjmp .+122 ; 0x1ad6 <malloc+0x12e> |
1a5c: fd 01 movw r30, r26 |
1a5e: a2 81 ldd r26, Z+2 ; 0x02 |
1a60: b3 81 ldd r27, Z+3 ; 0x03 |
1a62: d5 cf rjmp .-86 ; 0x1a0e <malloc+0x66> |
1a64: 80 91 d6 01 lds r24, 0x01D6 |
1a68: 90 91 d7 01 lds r25, 0x01D7 |
1a6c: 89 2b or r24, r25 |
1a6e: 41 f4 brne .+16 ; 0x1a80 <malloc+0xd8> |
1a70: 80 91 80 00 lds r24, 0x0080 |
1a74: 90 91 81 00 lds r25, 0x0081 |
1a78: 90 93 d7 01 sts 0x01D7, r25 |
1a7c: 80 93 d6 01 sts 0x01D6, r24 |
1a80: e0 91 7e 00 lds r30, 0x007E |
1a84: f0 91 7f 00 lds r31, 0x007F |
1a88: 30 97 sbiw r30, 0x00 ; 0 |
1a8a: 41 f4 brne .+16 ; 0x1a9c <malloc+0xf4> |
1a8c: ed b7 in r30, 0x3d ; 61 |
1a8e: fe b7 in r31, 0x3e ; 62 |
1a90: 80 91 82 00 lds r24, 0x0082 |
1a94: 90 91 83 00 lds r25, 0x0083 |
1a98: e8 1b sub r30, r24 |
1a9a: f9 0b sbc r31, r25 |
1a9c: a0 91 d6 01 lds r26, 0x01D6 |
1aa0: b0 91 d7 01 lds r27, 0x01D7 |
1aa4: 9f 01 movw r18, r30 |
1aa6: 2a 1b sub r18, r26 |
1aa8: 3b 0b sbc r19, r27 |
1aaa: 24 17 cp r18, r20 |
1aac: 35 07 cpc r19, r21 |
1aae: 88 f0 brcs .+34 ; 0x1ad2 <malloc+0x12a> |
1ab0: ca 01 movw r24, r20 |
1ab2: 02 96 adiw r24, 0x02 ; 2 |
1ab4: 28 17 cp r18, r24 |
1ab6: 39 07 cpc r19, r25 |
1ab8: 60 f0 brcs .+24 ; 0x1ad2 <malloc+0x12a> |
1aba: cd 01 movw r24, r26 |
1abc: 84 0f add r24, r20 |
1abe: 95 1f adc r25, r21 |
1ac0: 02 96 adiw r24, 0x02 ; 2 |
1ac2: 90 93 d7 01 sts 0x01D7, r25 |
1ac6: 80 93 d6 01 sts 0x01D6, r24 |
1aca: 4d 93 st X+, r20 |
1acc: 5d 93 st X+, r21 |
1ace: cd 01 movw r24, r26 |
1ad0: 02 c0 rjmp .+4 ; 0x1ad6 <malloc+0x12e> |
1ad2: 80 e0 ldi r24, 0x00 ; 0 |
1ad4: 90 e0 ldi r25, 0x00 ; 0 |
1ad6: df 91 pop r29 |
1ad8: cf 91 pop r28 |
1ada: 08 95 ret |
00001adc <free>: |
1adc: cf 93 push r28 |
1ade: df 93 push r29 |
1ae0: 00 97 sbiw r24, 0x00 ; 0 |
1ae2: 09 f4 brne .+2 ; 0x1ae6 <free+0xa> |
1ae4: 54 c0 rjmp .+168 ; 0x1b8e <free+0xb2> |
1ae6: dc 01 movw r26, r24 |
1ae8: 12 97 sbiw r26, 0x02 ; 2 |
1aea: ed 01 movw r28, r26 |
1aec: 1b 82 std Y+3, r1 ; 0x03 |
1aee: 1a 82 std Y+2, r1 ; 0x02 |
1af0: 80 91 d8 01 lds r24, 0x01D8 |
1af4: 90 91 d9 01 lds r25, 0x01D9 |
1af8: 00 97 sbiw r24, 0x00 ; 0 |
1afa: 21 f1 breq .+72 ; 0x1b44 <free+0x68> |
1afc: fc 01 movw r30, r24 |
1afe: 40 e0 ldi r20, 0x00 ; 0 |
1b00: 50 e0 ldi r21, 0x00 ; 0 |
1b02: ea 17 cp r30, r26 |
1b04: fb 07 cpc r31, r27 |
1b06: 18 f1 brcs .+70 ; 0x1b4e <free+0x72> |
1b08: ed 01 movw r28, r26 |
1b0a: fb 83 std Y+3, r31 ; 0x03 |
1b0c: ea 83 std Y+2, r30 ; 0x02 |
1b0e: 2d 91 ld r18, X+ |
1b10: 3c 91 ld r19, X |
1b12: 11 97 sbiw r26, 0x01 ; 1 |
1b14: c2 0f add r28, r18 |
1b16: d3 1f adc r29, r19 |
1b18: ce 01 movw r24, r28 |
1b1a: 02 96 adiw r24, 0x02 ; 2 |
1b1c: 8e 17 cp r24, r30 |
1b1e: 9f 07 cpc r25, r31 |
1b20: 71 f4 brne .+28 ; 0x1b3e <free+0x62> |
1b22: 8a 81 ldd r24, Y+2 ; 0x02 |
1b24: 9b 81 ldd r25, Y+3 ; 0x03 |
1b26: 28 0f add r18, r24 |
1b28: 39 1f adc r19, r25 |
1b2a: 2e 5f subi r18, 0xFE ; 254 |
1b2c: 3f 4f sbci r19, 0xFF ; 255 |
1b2e: 11 96 adiw r26, 0x01 ; 1 |
1b30: 3c 93 st X, r19 |
1b32: 2e 93 st -X, r18 |
1b34: 82 81 ldd r24, Z+2 ; 0x02 |
1b36: 93 81 ldd r25, Z+3 ; 0x03 |
1b38: fd 01 movw r30, r26 |
1b3a: 93 83 std Z+3, r25 ; 0x03 |
1b3c: 82 83 std Z+2, r24 ; 0x02 |
1b3e: 41 15 cp r20, r1 |
1b40: 51 05 cpc r21, r1 |
1b42: 59 f4 brne .+22 ; 0x1b5a <free+0x7e> |
1b44: b0 93 d9 01 sts 0x01D9, r27 |
1b48: a0 93 d8 01 sts 0x01D8, r26 |
1b4c: 20 c0 rjmp .+64 ; 0x1b8e <free+0xb2> |
1b4e: af 01 movw r20, r30 |
1b50: 02 80 ldd r0, Z+2 ; 0x02 |
1b52: f3 81 ldd r31, Z+3 ; 0x03 |
1b54: e0 2d mov r30, r0 |
1b56: 30 97 sbiw r30, 0x00 ; 0 |
1b58: a1 f6 brne .-88 ; 0x1b02 <free+0x26> |
1b5a: ea 01 movw r28, r20 |
1b5c: bb 83 std Y+3, r27 ; 0x03 |
1b5e: aa 83 std Y+2, r26 ; 0x02 |
1b60: ca 01 movw r24, r20 |
1b62: 02 96 adiw r24, 0x02 ; 2 |
1b64: 28 81 ld r18, Y |
1b66: 39 81 ldd r19, Y+1 ; 0x01 |
1b68: 82 0f add r24, r18 |
1b6a: 93 1f adc r25, r19 |
1b6c: 8a 17 cp r24, r26 |
1b6e: 9b 07 cpc r25, r27 |
1b70: 71 f4 brne .+28 ; 0x1b8e <free+0xb2> |
1b72: 8d 91 ld r24, X+ |
1b74: 9c 91 ld r25, X |
1b76: 11 97 sbiw r26, 0x01 ; 1 |
1b78: 28 0f add r18, r24 |
1b7a: 39 1f adc r19, r25 |
1b7c: 2e 5f subi r18, 0xFE ; 254 |
1b7e: 3f 4f sbci r19, 0xFF ; 255 |
1b80: 39 83 std Y+1, r19 ; 0x01 |
1b82: 28 83 st Y, r18 |
1b84: fd 01 movw r30, r26 |
1b86: 82 81 ldd r24, Z+2 ; 0x02 |
1b88: 93 81 ldd r25, Z+3 ; 0x03 |
1b8a: 9b 83 std Y+3, r25 ; 0x03 |
1b8c: 8a 83 std Y+2, r24 ; 0x02 |
1b8e: df 91 pop r29 |
1b90: cf 91 pop r28 |
1b92: 08 95 ret |
00001b94 <memset>: |
1b94: dc 01 movw r26, r24 |
1b96: 40 ff sbrs r20, 0 |
1b98: 03 c0 rjmp .+6 ; 0x1ba0 <memset+0xc> |
1b9a: 01 c0 rjmp .+2 ; 0x1b9e <memset+0xa> |
1b9c: 6d 93 st X+, r22 |
1b9e: 6d 93 st X+, r22 |
1ba0: 42 50 subi r20, 0x02 ; 2 |
1ba2: 50 40 sbci r21, 0x00 ; 0 |
1ba4: d8 f7 brcc .-10 ; 0x1b9c <memset+0x8> |
1ba6: 08 95 ret |
00001ba8 <__udivmodsi4>: |
1ba8: a1 e2 ldi r26, 0x21 ; 33 |
1baa: 1a 2e mov r1, r26 |
1bac: aa 1b sub r26, r26 |
1bae: bb 1b sub r27, r27 |
1bb0: fd 01 movw r30, r26 |
1bb2: 0d c0 rjmp .+26 ; 0x1bce <__udivmodsi4_ep> |
00001bb4 <__udivmodsi4_loop>: |
1bb4: aa 1f adc r26, r26 |
1bb6: bb 1f adc r27, r27 |
1bb8: ee 1f adc r30, r30 |
1bba: ff 1f adc r31, r31 |
1bbc: a2 17 cp r26, r18 |
1bbe: b3 07 cpc r27, r19 |
1bc0: e4 07 cpc r30, r20 |
1bc2: f5 07 cpc r31, r21 |
1bc4: 20 f0 brcs .+8 ; 0x1bce <__udivmodsi4_ep> |
1bc6: a2 1b sub r26, r18 |
1bc8: b3 0b sbc r27, r19 |
1bca: e4 0b sbc r30, r20 |
1bcc: f5 0b sbc r31, r21 |
00001bce <__udivmodsi4_ep>: |
1bce: 66 1f adc r22, r22 |
1bd0: 77 1f adc r23, r23 |
1bd2: 88 1f adc r24, r24 |
1bd4: 99 1f adc r25, r25 |
1bd6: 1a 94 dec r1 |
1bd8: 69 f7 brne .-38 ; 0x1bb4 <__udivmodsi4_loop> |
1bda: 60 95 com r22 |
1bdc: 70 95 com r23 |
1bde: 80 95 com r24 |
1be0: 90 95 com r25 |
1be2: 9b 01 movw r18, r22 |
1be4: ac 01 movw r20, r24 |
1be6: bd 01 movw r22, r26 |
1be8: cf 01 movw r24, r30 |
1bea: 08 95 ret |
/tags/V0.33/main.map |
---|
0,0 → 1,764 |
Archive member included because of file (symbol) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o (__udivmodsi4) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
main.o (__do_copy_data) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
main.o (__do_clear_bss) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o (memchr) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o (fdevopen) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (__iob) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (calloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (malloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (memset) |
Allocating common symbols |
Common symbol size file |
SendeBuffer 0x64 uart.o |
Debug_Timer 0x2 main.o |
Debug_Display_Timer |
0x2 main.o |
__brkval 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
DebugIn 0xb main.o |
VersionInfo 0xa main.o |
New_IR_Code 0x1 ir.o |
RxdBuffer 0x64 uart.o |
AnalogWerte 0x6 analog.o |
IR_Code 0x2 ir.o |
KanalVon 0x8 menu.o |
Decodierung_Lauft 0x1 ir.o |
DebugOut 0x1a main.o |
KanalAn 0x8 menu.o |
__flp 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
PollDisplay 0x1 main.o |
__iob 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
Memory Configuration |
Name Origin Length Attributes |
text 0x00000000 0x00020000 xr |
data 0x00800060 0x0000ffa0 rw !x |
eeprom 0x00810000 0x00010000 rw !x |
*default* 0x00000000 0xffffffff |
Linker script and memory map |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
LOAD main.o |
LOAD uart.o |
LOAD lcd.o |
LOAD printf_P.o |
LOAD timer0.o |
LOAD keyboard.o |
LOAD menu.o |
LOAD ir.o |
LOAD analog.o |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libm.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
.hash |
*(.hash) |
.dynsym |
*(.dynsym) |
.dynstr |
*(.dynstr) |
.gnu.version |
*(.gnu.version) |
.gnu.version_d |
*(.gnu.version_d) |
.gnu.version_r |
*(.gnu.version_r) |
.rel.init |
*(.rel.init) |
.rela.init |
*(.rela.init) |
.rel.text |
*(.rel.text) |
*(.rel.text.*) |
*(.rel.gnu.linkonce.t*) |
.rela.text |
*(.rela.text) |
*(.rela.text.*) |
*(.rela.gnu.linkonce.t*) |
.rel.fini |
*(.rel.fini) |
.rela.fini |
*(.rela.fini) |
.rel.rodata |
*(.rel.rodata) |
*(.rel.rodata.*) |
*(.rel.gnu.linkonce.r*) |
.rela.rodata |
*(.rela.rodata) |
*(.rela.rodata.*) |
*(.rela.gnu.linkonce.r*) |
.rel.data |
*(.rel.data) |
*(.rel.data.*) |
*(.rel.gnu.linkonce.d*) |
.rela.data |
*(.rela.data) |
*(.rela.data.*) |
*(.rela.gnu.linkonce.d*) |
.rel.ctors |
*(.rel.ctors) |
.rela.ctors |
*(.rela.ctors) |
.rel.dtors |
*(.rel.dtors) |
.rela.dtors |
*(.rela.dtors) |
.rel.got |
*(.rel.got) |
.rela.got |
*(.rela.got) |
.rel.bss |
*(.rel.bss) |
.rela.bss |
*(.rela.bss) |
.rel.plt |
*(.rel.plt) |
.rela.plt |
*(.rela.plt) |
.text 0x00000000 0x1c18 |
*(.vectors) |
.vectors 0x00000000 0x54 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000000 __vectors |
0x00000000 __vector_default |
0x00000054 __ctors_start = . |
*(.ctors) |
0x00000054 __ctors_end = . |
0x00000054 __dtors_start = . |
*(.dtors) |
0x00000054 __dtors_end = . |
*(.progmem.gcc*) |
*(.progmem*) |
.progmem.data 0x00000054 0x54 main.o |
.progmem.data 0x000000a8 0xc uart.o |
.progmem.data 0x000000b4 0x56 menu.o |
0x0000010a . = ALIGN (0x2) |
*(.init0) |
*(.init1) |
*(.init2) |
.init2 0x0000010a 0xc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.init3) |
*(.init4) |
.init4 0x00000116 0x16 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
0x00000116 __do_copy_data |
.init4 0x0000012c 0x10 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
0x0000012c __do_clear_bss |
*(.init5) |
*(.init6) |
*(.init7) |
*(.init8) |
*(.init9) |
.init9 0x0000013c 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.text) |
.text 0x00000140 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000140 __vector_12 |
0x00000140 __bad_interrupt |
0x00000140 __vector_6 |
0x00000140 __vector_3 |
0x00000140 __vector_17 |
0x00000140 __vector_19 |
0x00000140 __vector_7 |
0x00000140 __vector_5 |
0x00000140 __vector_4 |
0x00000140 __vector_2 |
0x00000140 __vector_8 |
0x00000140 __vector_14 |
0x00000140 __vector_10 |
0x00000140 __vector_16 |
0x00000140 __vector_18 |
0x00000140 __vector_20 |
.text 0x00000144 0x282 main.o |
0x000001b4 Init |
0x00000156 Sekundentakt |
0x000001ca main |
0x00000144 Sekundentakt_Init |
.text 0x000003c6 0x7e6 uart.o |
0x000009f8 WriteProgramData |
0x00000a16 SendeRemoteTasten |
0x000009fa UART_Init |
0x00000430 __vector_13 |
0x0000080a BearbeiteRxDaten |
0x00000abe ClearIntervalle |
0x00000a76 SendIntervalle |
0x000005de AddCRC |
0x00000b04 DatenUebertragung |
0x00000732 Decode64 |
0x000003c6 __vector_15 |
0x0000064a SendOutData |
0x000009dc uart_putchar |
.text 0x00000bac 0x1b2 lcd.o |
0x00000cc4 LCD_Gotoxy |
0x00000c4e my_pput |
0x00000c08 _lcd_write_4bit |
0x00000bcc _short_delay |
0x00000c26 lcd_write_byte |
0x00000bdc _lcd_write_command |
0x00000c58 LCD_Init |
0x00000d48 LCD_Putchar |
0x00000d12 LCD_Write |
0x00000bac _long_delay |
.text 0x00000d5e 0x58a printf_P.o |
0x00000de0 _printf_P |
0x00000dc8 PAD_0 |
0x00000d86 PRINTP |
0x00000d5e PRINT |
0x00000db0 PAD_SP |
.text 0x000012e8 0xd6 timer0.o |
0x0000137c SetDelay |
0x0000138e CheckDelay |
0x000013a4 Delay_ms |
0x000012e8 __vector_9 |
0x00001368 Timer1_Init |
.text 0x000013be 0x136 keyboard.o |
0x000014da GetKeyboard2 |
0x000013be Keyboard_Init |
0x000013d0 GetKeyboard |
.text 0x000014f4 0x206 menu.o |
0x000014f4 Menu |
.text 0x000016fa 0x1b6 ir.o |
0x00001728 __vector_1 |
0x00001758 __vector_11 |
0x000016fa InitIR |
.text 0x000018b0 0x44 analog.o |
0x000018c8 GetAnalogWerte |
0x000018b8 ReadADC |
0x000018b0 ADC_Init |
.text 0x000018f4 0x1a C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
0x000018f4 memchr |
.text 0x0000190e 0x8e C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
0x0000190e fdevopen |
.text 0x0000199c 0x38 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
0x0000199c calloc |
.text 0x000019d4 0x1ec C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x000019d4 malloc |
0x00001b08 free |
.text 0x00001bc0 0x14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
0x00001bc0 memset |
0x00001bd4 . = ALIGN (0x2) |
*(.text.*) |
.text.libgcc 0x00001bd4 0x44 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
0x00001bd4 __udivmodsi4 |
0x00001c18 . = ALIGN (0x2) |
*(.fini9) |
*(.fini8) |
*(.fini7) |
*(.fini6) |
*(.fini5) |
*(.fini4) |
*(.fini3) |
*(.fini2) |
*(.fini1) |
*(.fini0) |
0x00001c18 _etext = . |
.data 0x00800060 0x24 load address 0x00001c18 |
0x00800060 PROVIDE (__data_start, .) |
*(.data) |
.data 0x00800060 0xc main.o |
0x00800065 DisplayZeilen |
0x00800064 SlaveAdresse |
0x00800066 CntDatensaetzeProSekunde |
0x00800062 IntervallDebug |
0x00800060 IntervallDisplay |
.data 0x0080006c 0x5 uart.o |
0x0080006e UebertragungAbgeschlossen |
0x0080006c AnzahlTeilnehmer |
0x0080006d ErwarteAntwort |
.data 0x00800071 0xb menu.o |
0x00800071 Array |
.data 0x0080007c 0x2 ir.o |
0x0080007c LoescheIrCodeTimer |
.data 0x0080007e 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x00800080 __malloc_heap_start |
0x0080007e __malloc_heap_end |
0x00800082 __malloc_margin |
*(.gnu.linkonce.d*) |
0x00800084 . = ALIGN (0x2) |
0x00800084 _edata = . |
0x00800084 PROVIDE (__data_end, .) |
.bss 0x00800084 0x157 |
0x00800084 PROVIDE (__bss_start, .) |
*(.bss) |
.bss 0x00800084 0xe main.o |
0x00800087 DebugGetAnforderung |
0x00800088 Debug_Display_Intervall |
0x00800086 GetVersionAnforderung |
0x0080008d Sekunde |
0x00800085 SendeDummyDaten |
0x0080008e _TastTimer |
0x0080008c Minute |
0x0080008a Debug_Timer_Intervall |
0x00800084 UebertragungUnterbrochen |
0x00800090 _SekTimer |
.bss 0x00800092 0x14 uart.o |
0x0080009d SioTmp |
0x00800098 PC_DebugTimeout |
0x0080009c NeuerDatensatzEmpfangen |
0x0080009a CntCrcError |
0x00800097 TX_DigTransferKanalL |
0x00800094 DisplayBusy |
0x00800092 WaitTXD |
0x00800099 AnzahlEmpfangsBytes |
0x00800095 TX_DigTransferKanalDaten |
0x00800093 AntwortEingetroffen |
0x00800096 TX_DigTransferKanalH |
.bss 0x008000a6 0x3 timer0.o |
0x008000a6 CountMilliseconds |
.bss 0x008000a9 0x7 keyboard.o |
0x008000a9 KeyTimer |
.bss 0x008000b0 0x5 menu.o |
0x008000b0 TestInt |
.bss 0x008000b5 0x6 ir.o |
*(COMMON) |
COMMON 0x008000bb 0x34 main.o |
0x008000bb Debug_Timer |
0x008000bd Debug_Display_Timer |
0x008000bf DebugIn |
0x008000ca VersionInfo |
0x008000d4 DebugOut |
0x008000ee PollDisplay |
COMMON 0x008000ef 0xc8 uart.o |
0x008000ef SendeBuffer |
0x00800153 RxdBuffer |
COMMON 0x008001b7 0x10 menu.o |
0x008001b7 KanalVon |
0x008001bf KanalAn |
COMMON 0x008001c7 0x4 ir.o |
0x008001c7 New_IR_Code |
0x008001c8 IR_Code |
0x008001ca Decodierung_Lauft |
COMMON 0x008001cb 0x6 analog.o |
0x008001cb AnalogWerte |
COMMON 0x008001d1 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
0x008001d1 __iob |
COMMON 0x008001d7 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x008001d7 __brkval |
0x008001d9 __flp |
0x008001db PROVIDE (__bss_end, .) |
0x00001c18 __data_load_start = LOADADDR (.data) |
0x00001c3c __data_load_end = (__data_load_start + SIZEOF (.data)) |
.noinit 0x008001db 0x0 |
0x008001db PROVIDE (__noinit_start, .) |
*(.noinit*) |
0x008001db PROVIDE (__noinit_end, .) |
0x008001db _end = . |
0x008001db PROVIDE (__heap_start, .) |
.eeprom 0x00810000 0x0 |
*(.eeprom*) |
0x00810000 __eeprom_end = . |
.stab 0x00000000 0x36c |
*(.stab) |
.stab 0x00000000 0x36c C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stabstr 0x00000000 0x84 |
*(.stabstr) |
.stabstr 0x00000000 0x84 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stab.excl |
*(.stab.excl) |
.stab.exclstr |
*(.stab.exclstr) |
.stab.index |
*(.stab.index) |
.stab.indexstr |
*(.stab.indexstr) |
.comment |
*(.comment) |
.debug |
*(.debug) |
.line |
*(.line) |
.debug_srcinfo |
*(.debug_srcinfo) |
.debug_sfnames |
*(.debug_sfnames) |
.debug_aranges 0x00000000 0xb4 |
*(.debug_aranges) |
.debug_aranges |
0x00000000 0x14 main.o |
.debug_aranges |
0x00000014 0x14 uart.o |
.debug_aranges |
0x00000028 0x14 lcd.o |
.debug_aranges |
0x0000003c 0x14 printf_P.o |
.debug_aranges |
0x00000050 0x14 timer0.o |
.debug_aranges |
0x00000064 0x14 keyboard.o |
.debug_aranges |
0x00000078 0x14 menu.o |
.debug_aranges |
0x0000008c 0x14 ir.o |
.debug_aranges |
0x000000a0 0x14 analog.o |
.debug_pubnames |
0x00000000 0x701 |
*(.debug_pubnames) |
.debug_pubnames |
0x00000000 0x1e1 main.o |
.debug_pubnames |
0x000001e1 0x240 uart.o |
.debug_pubnames |
0x00000421 0xb7 lcd.o |
.debug_pubnames |
0x000004d8 0x4a printf_P.o |
.debug_pubnames |
0x00000522 0x70 timer0.o |
.debug_pubnames |
0x00000592 0x52 keyboard.o |
.debug_pubnames |
0x000005e4 0x4a menu.o |
.debug_pubnames |
0x0000062e 0x85 ir.o |
.debug_pubnames |
0x000006b3 0x4e analog.o |
.debug_info 0x00000000 0x1a6c |
*(.debug_info) |
.debug_info 0x00000000 0x469 main.o |
.debug_info 0x00000469 0x7ba uart.o |
.debug_info 0x00000c23 0x260 lcd.o |
.debug_info 0x00000e83 0x45d printf_P.o |
.debug_info 0x000012e0 0x1d7 timer0.o |
.debug_info 0x000014b7 0x177 keyboard.o |
.debug_info 0x0000162e 0x1a7 menu.o |
.debug_info 0x000017d5 0x171 ir.o |
.debug_info 0x00001946 0x126 analog.o |
*(.gnu.linkonce.wi.*) |
.debug_abbrev 0x00000000 0x774 |
*(.debug_abbrev) |
.debug_abbrev 0x00000000 0x10c main.o |
.debug_abbrev 0x0000010c 0x178 uart.o |
.debug_abbrev 0x00000284 0xbc lcd.o |
.debug_abbrev 0x00000340 0x132 printf_P.o |
.debug_abbrev 0x00000472 0xc5 timer0.o |
.debug_abbrev 0x00000537 0x87 keyboard.o |
.debug_abbrev 0x000005be 0xb6 menu.o |
.debug_abbrev 0x00000674 0x76 ir.o |
.debug_abbrev 0x000006ea 0x8a analog.o |
.debug_line 0x00000000 0x16a3 |
*(.debug_line) |
.debug_line 0x00000000 0x2aa main.o |
.debug_line 0x000002aa 0x4c4 uart.o |
.debug_line 0x0000076e 0x279 lcd.o |
.debug_line 0x000009e7 0x4e2 printf_P.o |
.debug_line 0x00000ec9 0x180 timer0.o |
.debug_line 0x00001049 0x170 keyboard.o |
.debug_line 0x000011b9 0x19a menu.o |
.debug_line 0x00001353 0x212 ir.o |
.debug_line 0x00001565 0x13e analog.o |
.debug_frame |
*(.debug_frame) |
.debug_str 0x00000000 0x889 |
*(.debug_str) |
.debug_str 0x00000000 0x2e2 main.o |
0x371 (size before relaxing) |
.debug_str 0x000002e2 0x26b uart.o |
0x423 (size before relaxing) |
.debug_str 0x0000054d 0x9a lcd.o |
0x17b (size before relaxing) |
.debug_str 0x000005e7 0xf9 printf_P.o |
0x1bd (size before relaxing) |
.debug_str 0x000006e0 0x6b timer0.o |
0x168 (size before relaxing) |
.debug_str 0x0000074b 0x5e keyboard.o |
0x13f (size before relaxing) |
.debug_str 0x000007a9 0x40 menu.o |
0x15e (size before relaxing) |
.debug_str 0x000007e9 0x6d ir.o |
0x169 (size before relaxing) |
.debug_str 0x00000856 0x33 analog.o |
0x120 (size before relaxing) |
.debug_loc |
*(.debug_loc) |
.debug_macinfo |
*(.debug_macinfo) |
OUTPUT(main.elf elf32-avr) |
Cross Reference Table |
Symbol File |
ADC_Init analog.o |
main.o |
AddCRC uart.o |
AnalogWerte analog.o |
uart.o |
AntwortEingetroffen uart.o |
AnzahlEmpfangsBytes uart.o |
AnzahlTeilnehmer uart.o |
menu.o |
Array menu.o |
BearbeiteRxDaten uart.o |
main.o |
CheckDelay timer0.o |
keyboard.o |
main.o |
ClearIntervalle uart.o |
main.o |
CntCrcError uart.o |
menu.o |
CntDatensaetzeProSekunde main.o |
uart.o |
CountMilliseconds timer0.o |
DatenUebertragung uart.o |
main.o |
DebugGetAnforderung main.o |
DebugIn uart.o |
main.o |
DebugOut uart.o |
main.o |
Debug_Display_Intervall main.o |
Debug_Display_Timer main.o |
Debug_Timer main.o |
Debug_Timer_Intervall main.o |
Decode64 uart.o |
Decodierung_Lauft ir.o |
Delay_ms timer0.o |
main.o |
DisplayBusy uart.o |
timer0.o |
DisplayZeilen main.o |
menu.o |
uart.o |
ErwarteAntwort uart.o |
GetAnalogWerte analog.o |
main.o |
GetKeyboard keyboard.o |
main.o |
GetKeyboard2 keyboard.o |
main.o |
GetVersionAnforderung main.o |
IR_Code ir.o |
timer0.o |
uart.o |
Init main.o |
InitIR ir.o |
main.o |
IntervallDebug main.o |
IntervallDisplay main.o |
KanalAn menu.o |
KanalVon menu.o |
KeyTimer keyboard.o |
Keyboard_Init keyboard.o |
main.o |
LCD_Gotoxy lcd.o |
menu.o |
uart.o |
main.o |
LCD_Init lcd.o |
main.o |
LCD_Putchar lcd.o |
printf_P.o |
LCD_Write lcd.o |
LoescheIrCodeTimer ir.o |
timer0.o |
Menu menu.o |
main.o |
Minute main.o |
NeuerDatensatzEmpfangen uart.o |
New_IR_Code ir.o |
PAD_0 printf_P.o |
PAD_SP printf_P.o |
PC_DebugTimeout uart.o |
PRINT printf_P.o |
PRINTP printf_P.o |
PollDisplay uart.o |
main.o |
ReadADC analog.o |
RxdBuffer uart.o |
Sekunde main.o |
Sekundentakt main.o |
Sekundentakt_Init main.o |
SendIntervalle uart.o |
SendOutData uart.o |
SendeBuffer uart.o |
SendeDummyDaten main.o |
SendeRemoteTasten uart.o |
SetDelay timer0.o |
keyboard.o |
main.o |
SioTmp uart.o |
SlaveAdresse main.o |
menu.o |
uart.o |
TX_DigTransferKanalDaten uart.o |
TX_DigTransferKanalH uart.o |
TX_DigTransferKanalL uart.o |
TestInt menu.o |
Timer1_Init timer0.o |
main.o |
UART_Init uart.o |
main.o |
UebertragungAbgeschlossen uart.o |
UebertragungUnterbrochen main.o |
VersionInfo main.o |
WaitTXD uart.o |
timer0.o |
WriteProgramData uart.o |
_SekTimer main.o |
_TastTimer main.o |
__bad_interrupt C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__brkval C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__bss_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__bss_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__data_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_load_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__do_clear_bss C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__do_copy_data C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__flp C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__init C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__iob C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
__malloc_heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_margin C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__stack C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
main.o |
__udivmodsi4 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o |
__vector_1 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_10 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_11 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_12 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_13 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_15 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_16 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_17 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_18 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_19 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_20 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_3 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_5 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_7 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_8 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_9 timer0.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_default C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vectors C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
_lcd_write_4bit lcd.o |
_lcd_write_command lcd.o |
menu.o |
main.o |
_long_delay lcd.o |
menu.o |
main.o |
_printf_P printf_P.o |
menu.o |
uart.o |
main.o |
_short_delay lcd.o |
calloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
fdevopen C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o |
free C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
lcd_write_byte lcd.o |
main main.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
malloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
memchr C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o |
memset C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
my_pput lcd.o |
uart_putchar uart.o |
/tags/V0.33/main.sym |
---|
0,0 → 1,253 |
00000000 W __heap_end |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 W __vector_default |
00000000 T __vectors |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
00000054 t __c.0 |
00000054 T __ctors_end |
00000054 T __ctors_start |
00000054 T __dtors_end |
00000054 T __dtors_start |
00000069 t __c.1 |
0000007e t __c.2 |
00000093 t __c.3 |
000000a8 t __c.2 |
000000ab t __c.3 |
000000ae t __c.4 |
000000b1 t __c.5 |
000000b4 t __c.3 |
000000c2 t __c.4 |
000000d0 t __c.5 |
000000dc t __c.6 |
000000e1 t __c.7 |
000000ea t __c.8 |
000000f6 t __c.9 |
000000fe t __c.10 |
0000010a W __init |
00000116 T __do_copy_data |
00000122 t .do_copy_data_loop |
00000126 t .do_copy_data_start |
0000012c T __do_clear_bss |
00000134 t .do_clear_bss_loop |
00000136 t .do_clear_bss_start |
00000140 T __bad_interrupt |
00000140 W __vector_10 |
00000140 W __vector_12 |
00000140 W __vector_14 |
00000140 W __vector_16 |
00000140 W __vector_17 |
00000140 W __vector_18 |
00000140 W __vector_19 |
00000140 W __vector_2 |
00000140 W __vector_20 |
00000140 W __vector_3 |
00000140 W __vector_4 |
00000140 W __vector_5 |
00000140 W __vector_6 |
00000140 W __vector_7 |
00000140 W __vector_8 |
00000144 T Sekundentakt_Init |
00000156 T Sekundentakt |
000001b4 T Init |
000001ca T main |
000003c6 T __vector_15 |
00000430 T __vector_13 |
000005de T AddCRC |
0000063c T SendOutData |
00000724 T Decode64 |
000007fc T BearbeiteRxDaten |
0000085f W __stack |
0000097a T uart_putchar |
00000996 T WriteProgramData |
00000998 T UART_Init |
000009b4 T SendeRemoteTasten |
00000a14 T SendIntervalle |
00000a5c T ClearIntervalle |
00000aa2 T DatenUebertragung |
00000b92 T _long_delay |
00000bb2 T _short_delay |
00000bc2 T _lcd_write_command |
00000bee T _lcd_write_4bit |
00000c0c T lcd_write_byte |
00000c34 T my_pput |
00000c3e T LCD_Init |
00000caa T LCD_Gotoxy |
00000cf8 T LCD_Write |
00000d2e T LCD_Putchar |
00000d44 T PRINT |
00000d6c T PRINTP |
00000d96 T PAD_SP |
00000dae T PAD_0 |
00000dc6 T _printf_P |
000012ce T __vector_9 |
0000133c T Timer1_Init |
00001350 T SetDelay |
00001362 T CheckDelay |
00001378 T Delay_ms |
00001392 T Keyboard_Init |
000013a4 T GetKeyboard |
000014ae T GetKeyboard2 |
000014c8 T Menu |
000016ce T InitIR |
000016fc T __vector_1 |
0000172c T __vector_11 |
00001884 T ADC_Init |
0000188c T ReadADC |
0000189c T GetAnalogWerte |
000018c8 T memchr |
000018e2 T fdevopen |
00001970 T calloc |
000019a8 T malloc |
00001adc T free |
00001b94 T memset |
00001ba8 T __udivmodsi4 |
00001bb4 t __udivmodsi4_loop |
00001bce t __udivmodsi4_ep |
00001bec A __data_load_start |
00001bec T _etext |
00001c10 A __data_load_end |
00800060 D __data_start |
00800060 D IntervallDisplay |
00800062 D IntervallDebug |
00800064 D SlaveAdresse |
00800065 D DisplayZeilen |
00800066 D CntDatensaetzeProSekunde |
0080006c D AnzahlTeilnehmer |
0080006d D ErwarteAntwort |
0080006e D UebertragungAbgeschlossen |
0080006f d state.0 |
00800070 d KanalSlave.1 |
00800071 D Array |
0080007b d MaxMenue.1 |
0080007c D LoescheIrCodeTimer |
0080007e D __malloc_heap_end |
00800080 D __malloc_heap_start |
00800082 D __malloc_margin |
00800084 B __bss_start |
00800084 D __data_end |
00800084 D _edata |
00800084 B UebertragungUnterbrochen |
00800085 B SendeDummyDaten |
00800086 B GetVersionAnforderung |
00800087 B DebugGetAnforderung |
00800088 B Debug_Display_Intervall |
0080008a B Debug_Timer_Intervall |
0080008c B Minute |
0080008d B Sekunde |
0080008e B _TastTimer |
00800090 B _SekTimer |
00800092 B AntwortEingetroffen |
00800093 B DisplayBusy |
00800094 B TX_DigTransferKanalDaten |
00800095 B TX_DigTransferKanalH |
00800096 B TX_DigTransferKanalL |
00800097 B PC_DebugTimeout |
00800098 B AnzahlEmpfangsBytes |
00800099 B CntCrcError |
0080009b B NeuerDatensatzEmpfangen |
0080009c B SioTmp |
0080009d b ptr.11 |
0080009f b crc.6 |
008000a1 b crc1.7 |
008000a2 b crc2.8 |
008000a3 b buf_ptr.9 |
008000a4 b UartState.10 |
008000a5 B CountMilliseconds |
008000a7 b cnt_10ms.0 |
008000a8 B KeyTimer |
008000aa b taste1.0 |
008000ab b taste2.1 |
008000ac b taste3.2 |
008000ad b taste4.3 |
008000ae b taste5.4 |
008000af B TestInt |
008000b1 b arr.0 |
008000b3 b MenuePunkt.2 |
008000b4 b Shift.0 |
008000b6 b IR_Code_tmp.1 |
008000b8 b IR_Zaehler.2 |
008000b9 b IRSperrCounter.3 |
008000ba B Debug_Timer |
008000bc B Debug_Display_Timer |
008000be B DebugIn |
008000c9 B VersionInfo |
008000d3 B DebugOut |
008000ed B PollDisplay |
008000ee B SendeBuffer |
00800152 B RxdBuffer |
008001b6 B KanalVon |
008001be B KanalAn |
008001c6 B New_IR_Code |
008001c7 B IR_Code |
008001c9 B Decodierung_Lauft |
008001ca B AnalogWerte |
008001d0 B __iob |
008001d6 B __brkval |
008001d8 B __flp |
008001da B __bss_end |
008001da ? __heap_start |
008001da ? _end |
00810000 ? __eeprom_end |
/tags/V0.33/makefile |
---|
0,0 → 1,386 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega8 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 33 |
#------------------------------------------------------------------- |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
TARGET = BrushLess-Ctrl_V$(HAUPT_VERSION)_$(NEBEN_VERSION) |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c timer0.c analog.c PPM_Decode.c twislave.c BLMC.c |
#printf_P.c |
########################################################################################################## |
# If there is more than one source file, append them above, or modify and |
# uncomment the following: |
#SRC += foo.c bar.c |
# You can also wrap lines by appending a backslash to the end of the line: |
#SRC += baz.c \ |
#xyzzy.c |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -g -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) |
ifeq ($(AVR_CTRL_PLATINE), 1) |
CFLAGS += -DAVR_CTRL_PLATINE=$(AVR_CTRL_PLATINE) |
endif |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
#AVRDUDE_FLAGS += -V -E noreset |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
# $(REMOVE) $(TARGET).eep |
# $(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/tags/V0.33/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/tags/V0.33/timer0.c |
---|
0,0 → 1,59 |
/***************************************************************************** |
*****************************************************************************/ |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile unsigned char Timer0Overflow; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL(SIG_OVERFLOW0) |
{ |
static unsigned char cnt; |
Timer0Overflow++; |
if(!cnt--) |
{ |
cnt = 3; |
CountMilliseconds += 1; |
if(I2C_Timeout) I2C_Timeout--; |
if(PPM_Timeout) PPM_Timeout--; |
if(SIO_Timeout) SIO_Timeout--; |
} |
} |
void Timer0_Init(void) |
{ |
TCCR0 = TIMER_TEILER; |
// TCNT0 = -TIMER_RELOAD_VALUE; // reload |
TIM0_START; |
TIMER2_INT_ENABLE; |
} |
unsigned int SetDelay(unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
} |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
} |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
/tags/V0.33/timer0.h |
---|
0,0 → 1,15 |
#if defined (__AVR_ATmega8__) |
#define TIMER_TEILER CK8 |
//#define TIMER_RELOAD_VALUE 125 |
#endif |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char Timer0Overflow; |
void Timer1_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
/tags/V0.33/twislave.c |
---|
0,0 → 1,75 |
/*############################################################################ |
Slaveadr = 0x52 = Vorne, 0x54 = Hinten, 0x56 = Rechts, 0x58 = Links |
############################################################################*/ |
#include <avr/io.h> |
#include <util/twi.h> |
#include "main.h" |
unsigned char I2C_RXBuffer; |
unsigned char Byte_Counter=0; |
//############################################################################ |
//I2C (TWI) Interface Init |
void InitIC2_Slave(uint8_t adr) |
//############################################################################ |
{ |
TWAR = adr + (2*MotorAdresse); // Eigene Adresse setzen |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
//############################################################################ |
//ISR, die bei einem Ereignis auf dem Bus ausgelöst wird. Im Register TWSR befindet |
//sich dann ein Statuscode, anhand dessen die Situation festgestellt werden kann. |
ISR (TWI_vect) |
//############################################################################ |
{ |
switch (TWSR & 0xF8) |
{ |
case SR_SLA_ACK: |
TWCR |= (1<<TWINT); |
Byte_Counter=0; |
return; |
// Daten Empfangen |
case SR_PREV_ACK: |
I2C_RXBuffer = TWDR; |
I2C_Timeout = 500; |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_SLA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_DATA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_2: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_1: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
} |
TWCR =(1<<TWEA) | (1<<TWINT) | (1<<TWEN) | (1<<TWIE); // TWI Reset |
} |
/tags/V0.33/twislave.h |
---|
0,0 → 1,32 |
#ifndef _TWI_SLAVE_H_ |
#define _TWI_SLAVE_H_ |
extern unsigned char I2C_RXBuffer; |
extern unsigned char Byte_Counter; |
extern void InitIC2_Slave (uint8_t adr); |
#define TWI_BUS_ERR_1 0x00 |
#define TWI_BUS_ERR_2 0xF8 |
// Status Slave RX Mode |
#define SR_SLA_ACK 0x60 |
#define SR_LOST_ACK 0x68 |
#define SR_GEN_CALL_ACK 0x70 |
#define GEN_LOST_ACK 0x78 |
#define SR_PREV_ACK 0x80 |
#define SR_PREV_NACK 0x88 |
#define GEN_PREV_ACK 0x90 |
#define GEN_PREV_NACK 0x98 |
#define STOP_CONDITION 0xA0 |
#define REPEATED_START 0xA0 |
// Status Slave TX mode |
#define SW_SLA_ACK 0xA8 |
#define SW_LOST_ACK 0xB0 |
#define SW_DATA_ACK 0xB8 |
#define SW_DATA_NACK 0xC0 |
#define SW_LAST_ACK 0xC8 |
#endif |
/tags/V0.33/uart.c |
---|
0,0 → 1,277 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + (c) 01.2007 Holger Buss |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Keine Garantie auf Fehlerfreiheit |
// + Kommerzielle Nutzung nur mit meiner Zustimmung |
// + Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
// + www.mikrocontroller.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
#define MAX_SENDE_BUFF 100 |
#define MAX_EMPFANGS_BUFF 100 |
unsigned volatile char SIO_Sollwert = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned char MeineSlaveAdresse; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
struct str_DebugOut DebugOut; |
int Debug_Timer; |
SIGNAL(INT_VEC_TX) |
{ |
} |
void SendUart(void) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!(UCSRA & 0x40)) return; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
USR |= (1<TXC); |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
#if X3D_SIO == 1 |
static unsigned char serPacketCounter = 100; |
SioTmp = UDR; |
if(SioTmp == 0xF5) // Startzeichen |
{ |
serPacketCounter = 0; |
} |
else |
{ |
if(++serPacketCounter == MotorAdresse) // (1-4) |
{ |
SIO_Sollwert = SioTmp; |
SIO_Timeout = 200; // werte für 200ms gültig |
} |
else |
{ |
if(serPacketCounter > 100) serPacketCounter = 100; |
} |
} |
#else |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; }; |
if(CrcOkay) // Datensatz schon verarbeitet |
{ |
//NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
uart_putchar(RxdBuffer[2]); |
if (RxdBuffer[2] == 't') // Motortest |
{ Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
SIO_Sollwert = MotorTest[MotorAdresse - 1]; |
SIO_Timeout = 500; // werte für 500ms gültig |
} |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
#endif |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); // serieller Empfangsinterrupt |
// TX-Interrupt Freigabe |
// UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR= (SYSCLK / (BAUD_RATE * 8L) -1 ); |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
Debug_Timer = SetDelay(200); |
// Version beim Start ausgeben (nicht schön, aber geht... ) |
uart_putchar ('\n');uart_putchar ('B');uart_putchar ('L');uart_putchar (':'); |
uart_putchar ('V');uart_putchar (0x30 + VERSION_HAUPTVERSION);uart_putchar ('.');uart_putchar (0x30 + VERSION_NEBENVERSION/10); uart_putchar (0x30 + VERSION_NEBENVERSION%10); |
uart_putchar ('\n');uart_putchar ('A');uart_putchar ('D');uart_putchar ('R'); uart_putchar (':'); uart_putchar (0x30 + MotorAdresse); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen)) // im Singlestep-Betrieb in jedem Schtitt senden |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
Debug_Timer = SetDelay(50); // Sendeintervall |
} |
} |
/tags/V0.33/uart.h |
---|
0,0 → 1,81 |
#ifndef _UART_H |
#define _UART_H |
extern unsigned volatile char SIO_Sollwert; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned char MeineSlaveAdresse; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void SendUart(void); |
struct str_DebugOut |
{ |
unsigned char Digital[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned int Analog[8]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
//Die Baud_Rate der Seriellen Schnittstelle |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
#if X3D_SIO == 1 |
#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#else |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
#endif |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega8__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/tags/V0.35/BLMC.c |
---|
0,0 → 1,202 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned char Phase = 0,ShadowTCCR1A = 0; |
volatile unsigned char CompFreigabeTimer = 100; |
volatile unsigned char CompInterruptFreigabe = 0; |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW2) |
//############################################################################ |
{ |
} |
//############################################################################ |
// + Interruptroutine |
// + Wird durch den Analogkomperator ausgelöst |
// + Dadurch wird das Kommutieren erzeugt |
SIGNAL(SIG_COMPARATOR) |
//############################################################################ |
{ |
unsigned char sense = 0; |
do |
{ |
if(SENSE_H) sense = 1; else sense = 0; |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
if(sense) |
{ |
STEUER_C_L; |
if(!PPM_Betrieb) TCNT1 = 1; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_FALLING_INT; |
SENSE_B; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_L; |
} |
break; |
case 1: |
STEUER_C_L; |
if(!sense) |
{ |
STEUER_B_H; |
if(!PPM_Betrieb) TCNT1 = 1; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_H; |
} |
break; |
case 2: |
STEUER_B_H; |
if(sense) |
{ |
STEUER_A_L; |
if(!PPM_Betrieb) TCNT1 = 1; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_L; |
} |
break; |
case 3: |
STEUER_A_L; |
if(!sense) |
{ |
STEUER_C_H; |
if(!PPM_Betrieb) TCNT1 = 1; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_B; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_H; |
} |
break; |
case 4: |
STEUER_C_H; |
if(sense) |
{ |
STEUER_B_L; |
if(!PPM_Betrieb) TCNT1 = 1; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_L; |
} |
break; |
case 5: |
STEUER_B_L; |
if(!sense) |
{ |
STEUER_A_H; |
if(!PPM_Betrieb) TCNT1 = 1; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_RISING_INT; |
Phase = 0; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_H; |
} |
break; |
} |
} |
while((SENSE_L && sense) || (SENSE_H && !sense)); |
ZeitZumAdWandeln = 0; |
} |
//############################################################################ |
// |
void Manuell(void) |
//############################################################################ |
{ |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
STEUER_B_L; |
SENSE_C; |
SENSE_RISING_INT; |
break; |
case 1: |
STEUER_A_H; |
STEUER_C_L; |
SENSE_B; |
SENSE_FALLING_INT; |
break; |
case 2: |
STEUER_B_H; |
STEUER_C_L; |
SENSE_A; |
SENSE_RISING_INT; |
break; |
case 3: |
STEUER_B_H; |
STEUER_A_L; |
SENSE_C; |
SENSE_FALLING_INT; |
break; |
case 4: |
STEUER_C_H; |
STEUER_A_L; |
SENSE_B; |
SENSE_RISING_INT; |
break; |
case 5: |
STEUER_C_H; |
STEUER_B_L; |
SENSE_A; |
SENSE_FALLING_INT; |
break; |
} |
} |
/tags/V0.35/BLMC.h |
---|
0,0 → 1,93 |
/*############################################################################ |
############################################################################*/ |
#ifndef BLMC_H_ |
#define BLMC_H_ |
extern volatile unsigned char Phase; |
extern volatile unsigned char ShadowTCCR1A; |
extern volatile unsigned char CompInterruptFreigabe; |
void Blc(void); |
void Manuell(void); |
// anselm |
/* |
#define COM1A ((0 << COM1A0) | (1 << COM1A1)) // COM1A-> OC1A non inverting mode |
#define COM1B ((0 << COM1B0) | (1 << COM1B1)) // COM1B-> OC1B non inverting mode |
#define COM2 ((0 << COM20) | (1 << COM21)) // COM2-> OC2 non inverting mode |
#ifdef _32KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> fast PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (1 << WGM21) | (1 << CS20)) // WGM20:21-> fast PWM, no prescale |
#endif |
#ifdef _16KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> phase corr, PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (0 << WGM21) | (1 << CS20)) // WGM20:21-> phase corr. PWM, no prescale |
#endif |
#define PWM_C_ON {TCCR1A = COM1A | WGM1 | COM1B; TCCR2 = WGMCS2; |
DDRB = 0x02;} // Steuer_C+ output |
#define PWM_B_ON {TCCR1A = COM1B | WGM1 | COM1A; TCCR2 = WGMCS2; \ |
DDRB = 0x04;} // Steuer_B+ output |
#define PWM_A_ON {TCCR1A = WGM1; TCCR2 = COM2 | WGMCS2; \ |
DDRB = 0x08;} // Steuer_A+ output |
#define PWM_OFF {TCCR1A = WGM1; \ |
TCCR2 = WGMCS2; \ |
PORTB &= ~0x0E; DDRB = 0x0E;} // OC1x & OC2 disconnected, Steuer_X+ output low |
// anselm |
*/ |
#ifdef _32KHZ |
#define PWM_C_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xAD; TCCR2 = 0x69;DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x0D; TCCR2 = 0x49;PORTC &= ~0x0E;} |
#endif |
#ifdef _16KHZ |
// #define PWM_C_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0A;} |
// #define PWM_B_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0C;} |
// #define PWM_A_ON {TCCR1A = 0xA2; TCCR2 = 0x61; DDRB = 0x08;} |
#define PWM_C_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0A;} else { TCCR1A = 0x81; DDRB = 0x0E;}} |
#define PWM_B_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0C;} else { TCCR1A = 0x21; DDRB = 0x0E;}} |
#define PWM_A_ON {TCCR2 = 0x61; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x08;} else { TCCR1A = 0x01; DDRB = 0x0E;}} |
// #define PWM_C_ON {TCCR1A = 0x82; TCCR2 = 0x41; PORTB &= ~0x04; DDRB = 0x0E;} |
// #define PWM_B_ON {TCCR1A = 0x22; TCCR2 = 0x41; PORTB &= ~0x02; DDRB = 0x0E;} |
// #define PWM_A_ON {TCCR1A = 0x02; TCCR2 = 0x61; PORTB &= ~0x06; DDRB = 0x0E;} |
#define PWM_OFF {TCCR1A = 0x01; TCCR2 = 0x41; DDRB = 0x0E; PORTB &= ~0x0E;} |
#endif |
#define STEUER_A_H {PWM_A_ON} |
#define STEUER_B_H {PWM_B_ON} |
#define STEUER_C_H {PWM_C_ON} |
#define STEUER_A_L {PORTD &= ~0x30; PORTD |= 0x08;} |
#define STEUER_B_L {PORTD &= ~0x28; PORTD |= 0x10;} |
#define STEUER_C_L {PORTD &= ~0x18; PORTD |= 0x20;} |
#define STEUER_OFF {PORTD &= ~0x38; PWM_OFF; } |
#define FETS_OFF {PORTD &= ~0x38; PORTB &= ~0x0E; } |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
#define ENABLE_SENSE_INT {CompInterruptFreigabe = 1;ACSR |= 0x0A; } |
#define DISABLE_SENSE_INT {CompInterruptFreigabe = 0; ACSR &= ~0x08; } |
#define SENSE_FALLING_INT ACSR &= ~0x01 |
#define SENSE_RISING_INT ACSR |= 0x03 |
#define SENSE_TOGGLE_INT ACSR &= ~0x03 |
#endif //BLMC_H_ |
/tags/V0.35/BL_Ctrl.pnproj |
---|
0,0 → 1,0 |
<Project name="avr_ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="analog.h"></File><File path="analog.c"></File><File path="PPM_Decode.c"></File><File path="PPM_Decode.h"></File><File path="twislave.c"></File><File path="twislave.h"></File><File path="BLMC.c"></File><File path="BLMC.h"></File></Project> |
/tags/V0.35/BL_Ctrl.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="avr_ctrl" x="true"></e></ViewState></pd> |
/tags/V0.35/Doku/Bestueckt_BL-Ctrl_V1_1/BootLoader_MEGA8_8MHZ_V0_2.hex |
---|
0,0 → 1,53 |
:101C000011241FBECFE5D4E0DEBFCDBF10E0A0E6BB |
:101C1000B0E0E0E3FFE102C005900D92A036B1070D |
:101C2000D9F710E0A0E6B0E001C01D92A23AB107DA |
:101C3000E1F714C000C008955D9BFECF8CB90895F4 |
:101C40005F9BFECF8CB1992708958DE4F5DF8BE47F |
:101C5000F3DF82E4F1DF8CE4EFDF0895CFE5D4E039 |
:101C6000DEBFCDBFE0E0F0E004917F01992481B7B1 |
:101C7000885081BF90BC80E189B9599A88E18AB9BE |
:101C800086E880BDEF01192D5F9B0BC0113029F450 |
:101C90008CB18A3A49F110E004C08CB18B3109F45F |
:101CA00011E0CE01219684369105C8F00F3F41F036 |
:101CB000002331F0E0916000F091610009950FC0C0 |
:101CC0008AE0BADF8DE0B8DF86E5B6DF80E3B4DF17 |
:101CD0008EE2B2DF82E3B0DF8AE3AEDF05C080E2EE |
:101CE0009EE40197F1F7D0CFB0DFAADF813611F47F |
:101CF00089E51CC1813461F4A3DFE82EFF24FE2CAA |
:101D0000EE249EDF9927E82AF92AF694E794E1C0A9 |
:101D1000823631F489E590DF80E08EDF80E406C111 |
:101D2000823409F070C08CDF8BDFD82E89DF082F5A |
:101D3000B2E6AB2EB0E0BB2E10E0E5010894A11C8A |
:101D4000B11C1D1510F47CDF01C08FEF88831F5F6D |
:101D5000103498F336E7931609F0C9C0063409F039 |
:101D60003CC08FEFE8168BE1F80608F033C0CD2DAC |
:101D7000A70166277727440F551F661F771F6A0143 |
:101D80007B01A2E6B0E011E08D9199272D913327D8 |
:101D9000322F2227822B932B0C01FA01109357002C |
:101DA000E89511244E5F5F4F6F4F7F4FC25061F730 |
:101DB00085E0F60180935700E89507B600FCFDCF5B |
:101DC00081E180935700E8957695679557954795FB |
:101DD0007A017FC080E030DF7CC0053409F079C033 |
:101DE000F7012D2DA2E6B0E0EEBB8F2F99278FBB18 |
:101DF0008D918DBB3196E29AE19AE199FECF215007 |
:101E000099F77F0166C08736B9F51ADF19DFC82F49 |
:101E100017DF863409F5C701AA27BB276C017D01AE |
:101E2000CC0CDD1CEE1CFF1CF60105911491802FDB |
:101E300003DF812F992700DF82E090E0A0E0B0E08F |
:101E4000C80ED91EEA1EFB1EC25071F7F694E79425 |
:101E5000D794C794760149CF853409F046CFEEBABE |
:101E60008F2D99278FBBE09A0894E11CF11C8DB34C |
:101E7000E3DEC150A1F739CF853601F596E7991613 |
:101E800041F580E090E0A0E0B0E023E0FC01209389 |
:101E90005700E89507B600FCFDCF805C9F4FAF4F21 |
:101EA000BF4F8F3F3BE1930730E0A30730E0B3071C |
:101EB00068F381E180935700E8950BC0853459F4AD |
:101EC00088E190E02CE00FB6F894A89581BD0FBE94 |
:101ED00021BD8DE02BC08035E1F38C34D1F3803708 |
:101EE00011F483E523C0843721F486E7A5DE80E082 |
:101EF0001DC0843519F4A4DE982EEBCF8B3109F484 |
:101F0000F3CE8A3A09F4F0CE863521F480E394DEEC |
:101F100082E30CC0833731F487E08EDE83E98CDE08 |
:101F20008EE104C08B3109F4E0CE8FE385DEDDCE97 |
:0400000300001C00DD |
:00000001FF |
/tags/V0.35/Doku/Bestueckt_BL-Ctrl_V1_1/BrushLess-Ctrl_V0_35_for_BL-Ctrl_V1_1.hex |
---|
0,0 → 1,445 |
:1000000012C0B5C92AC029C01ECA14C926C025C03D |
:1000100000C910C822C039C620C08DC51EC01DC071 |
:100020001CCABCC91AC011241FBECFE5D4E0DEBF74 |
:10003000CDBF10E0A0E6B0E0E2E9FBE102C0059030 |
:100040000D92A637B107D9F713E0A6E7B0E001C0DB |
:100050001D92A63AB107E1F700C4D2CF20918900E2 |
:1000600080916300821710F4282FAB9A809187004B |
:1000700090918800893C910560F01BBC1ABC19BCAA |
:1000800018BC13BCAB9A01979093880080938700AB |
:100090000895822F99279BBD8ABD99BD88BD23BD38 |
:1000A000089591E09FBD81E485BD8EE087BB88B354 |
:1000B000817F88BB9EBD089592B7980F82B7891B38 |
:1000C00087FDFCCF0895AF92BF92CF92DF92EF925F |
:1000D000FF920F931F93CF93DF93182F8CE2A82EDC |
:1000E00081E0B82EC12CD12C1092AA00439885E053 |
:1000F00090E090938A0080938900B0DF12DB88EC57 |
:1001000090E0FDD7C12FDD27D0938A00C0938900EE |
:10011000EE24FF248701EA14FB040C051D0578F486 |
:1001200080916D00882311F410D501C069D784E651 |
:10013000C3DF0894E11CF11C011D111DECCFC601A9 |
:10014000B5012FE030E040E050E001DDA21AB30A33 |
:10015000C40AD50A0894A108B108C108D10889E1E8 |
:10016000A816B104C104D104C8F0DBDA8091AC0058 |
:100170008F5F8093AC008091AC0066E0C8DC909308 |
:10018000AC00CED7D0938A00C093890067DF449B30 |
:10019000BFCF82B390E8892782BBBACFDF91CF91DE |
:1001A0001F910F91FF90EF90DF90CF90BF90AF9095 |
:1001B0000895CF93C82F7894C150CF3F49F0AB9AA0 |
:1001C0008CE291E09CD7AB988CE291E098D7F4CF89 |
:1001D00088EE93E094D7CF910895CF93DF93EC010D |
:1001E00021978FEFCF3FD80789F0E8D7809187001C |
:1001F000909188008B35910598F382B3877C82BB00 |
:1002000088B3817F88BB81E090E002C080E090E00D |
:10021000DF91CF91089501972FEF8F3F9207D9F784 |
:1002200080E090E00895459B02C0AB9A0895AB989A |
:100230000895AF92BF92CF92DF92EF92FF920F9309 |
:100240001F93CF93DF93CDB7DEB725970FB6F89402 |
:10025000DEBF0FBECDBF5E010894A11CB11CD5014D |
:10026000E8E6F0E085E001900D928150E1F7C82EBC |
:10027000D82EAB9880916100F501E80FF11D8081C7 |
:10028000282F33278CE291E0289FA001299F500D51 |
:10029000389F500D1124CA0132D7C092AA0043984A |
:1002A000F8948AE0E5D482B3877C82BB11E01FBD5D |
:1002B00081E485BD8EE087BB88B3817F88BB1092C7 |
:1002C000880010928700949AC39A83E090E085DFBB |
:1002D000882319F0C12E81E3CBD482B3877C82BB03 |
:1002E00088B3817F88BB88EE93E095DF1092880009 |
:1002F00010928700939AC29A83E090E06EDF882381 |
:1003000021F082E0C82E82E3B3D482B3877C82BB23 |
:1003100088B3817F88BB88EE93E07DDF10928800F0 |
:1003200010928700949AC19A83E090E056DF882368 |
:1003300021F003E0C02E83E39BD482B3877C82BB91 |
:1003400088B3817F88BB88EE93E065DF939AC19A7A |
:1003500083E090E042DF882321F013E0C12E87E3A1 |
:1003600087D482B3877C82BB88B3817F88BB80E1DE |
:1003700097E233DFCC2019F08C2D1BDFFDCF8CB141 |
:100380008032A9F4BFEFEB2EFB2E8FE571D413C0A2 |
:10039000A4E0CA2E84E36CD43AC0F5E0CF2E85E306 |
:1003A00067D465C0E6E0CE2E86E362D490C078EED6 |
:1003B000E72E73E0F72E109288001092870000E07D |
:1003C00010E00E151F0518F5939A81E090E005DF07 |
:1003D00082B3877C82BB88B3817F88BB85E090E055 |
:1003E0001ADFC39A81E090E0F8DE82B3877C82BB9B |
:1003F00088B3817F88BB809187009091880089971E |
:1004000038F685E090E007DF0F5F1F4FDACF80E11D |
:1004100097E201DF109288001092870000E010E060 |
:100420000E151F0520F5949A81E090E0D6DE82B388 |
:10043000877C82BB88B3817F88BB85E090E0EBDE60 |
:10044000C29A81E090E0C9DE82B3877C82BB88B328 |
:10045000817F88BB8091870090918800899708F000 |
:100460009CCF85E090E0D7DE0F5F1F4FD9CF109271 |
:1004700088001092870080E197E2CDDE00E010E076 |
:100480000E151F0520F5959A81E090E0A6DE82B357 |
:10049000877C82BB88B3817F88BB85E090E0BBDE30 |
:1004A000C19A81E090E099DE82B3877C82BB88B3F9 |
:1004B000817F88BB8091870090918800899708F0A0 |
:1004C00071CF85E090E0A7DE0F5F1F4FD9CF17B83F |
:1004D00082B3877C82BB88B3817F88BB949A959ACC |
:1004E000109288001092870008E710E0C39A82E01B |
:1004F00090E091DE80E090E04FD6C3971CF051E091 |
:10050000D52A02C08EEFD82218BA8CE291E083DEA1 |
:100510000150104017FFEACF82B3877C82BB88B3BB |
:10052000817F88BB81E087B9939A959A04E810E0AF |
:10053000C29A82E090E06FDE81E090E02DD6C39712 |
:100540001CF0E2E0DE2A02C0FDEFDF2218BA8CE2E6 |
:1005500091E061DE0150104017FFEACF82B3877C43 |
:1005600082BB88B3817F88BB82E087B9939A949AD3 |
:100570000EE610E0C19A82E090E04DDE82E090E06D |
:100580000BD6C3971CF044E0D42A02C05BEFD522FF |
:1005900018BA8AE491E03FDE0150104017FFEACF1D |
:1005A00082B3877C82BB88B3817F88BB81E087B9B7 |
:1005B000939A0FE410E0C29A82E090E02CDE80E093 |
:1005C00090E0EAD5C3971CF087EFD82202C0E8E09C |
:1005D000DE2A18BA84EF91E01EDE0150104017FFAA |
:1005E000EACF959A04E810E0C29A82E090E013DE28 |
:1005F00082E090E0D1D5C3971CF0FFEDDF2202C06E |
:1006000040E2D42A18BA88E691E005DE0150104095 |
:1006100017FFEACF82B3877C82BB88B3817F88BB18 |
:1006200082B3877C82BB88B3817F88BB949A0EE6B5 |
:1006300010E0C19A82E090E0EEDD81E090E0ACD580 |
:10064000C3971CF05FEED52202C080E1D82A18BA09 |
:1006500088E691E0E0DD0150104017FFEACF82B359 |
:10066000877C82BB88B3817F88BB78948D2D992746 |
:1006700080FD04C061E0C62E81E41DC081FD04C080 |
:1006800052E0C52E82E417C082FD04C043E0C42EB0 |
:1006900083E411C083FD04C034E0C32E81E60BC0A7 |
:1006A00084FD04C025E0C22E82E605C085FD04C09D |
:1006B00096E0C92E83E6DCD280916100A80EB11CC1 |
:1006C000F501208184E090E0821B91092CE231E069 |
:1006D000829FA001839F500D929F500D1124CA014B |
:1006E0000ED55FE3D51619F088EE93E008D58C2D72 |
:1006F00060DD8EE2BDD225960FB6F894DEBF0FBE48 |
:10070000CDBFDF91CF911F910F91FF90EF90DF90C0 |
:10071000CF90BF90AF90089580918100909182001A |
:10072000892B09F05BC040917F00509180004115FA |
:10073000510599F0909194008FEF989FC00111247A |
:1007400068EC70E0F0D970938C0060938B0010928D |
:10075000600089B78F7D89BF32C08091A00085314C |
:1007600080F181E0809360002091A3003091A4008B |
:1007700081E02D32380708F09A01293C310510F04C |
:1007800028EC30E02B30310528F450938C00409356 |
:100790008B0015C08CEF90E0289FA001299F500D81 |
:1007A000389F500D1124CA01885D994064EB70E0B8 |
:1007B000BAD9CB01039690938C0080938B00AB98B1 |
:1007C0001AC080918B0090918C00009729F00197BE |
:1007D00090938C0080938B00AB9A0DC080919B030B |
:1007E000992790938C0080938B0010926000AB98B7 |
:1007F00089B78F7D89BF80918B0090918C008F3F4E |
:10080000910539F030F08FEF90E090938C00809359 |
:100810008B0080918B00992708958091870090919B |
:10082000880090938B0380938A0380918500992799 |
:1008300090938D0380938C03809176009091770044 |
:1008400090938F0380938E038091A3009091A400D6 |
:1008500090939103809390030895CFE5D4E0DEBF99 |
:10086000CDBFEE2488E084BB85BB8AEB81BBE2BAB6 |
:100870008EE087BB81E388BB88B3806C88BB83EF45 |
:1008800091E0C29797FFFDCFB69B06C0B79B02C011 |
:1008900081E007C082E005C0B79B02C083E001C0D1 |
:1008A00084E08093610079D30DD47894FADB80E5FD |
:1008B0006DD5A2D485E690E00ED486E690E00BD408 |
:1008C00087E690E008D4EC018EEF90E004D45C0160 |
:1008D0008DEE93E000D48C018EEE93E0FCD36C019E |
:1008E00003C01ADF882321F4CE01FED38823C9F385 |
:1008F000979A10928A0010928900B0DB88E080BF3E |
:1009000081E087B98AE090E0E6D3EC0181E090E0F5 |
:1009100090938D0380938C031092A4001092A300F7 |
:10092000FBDE882309F485DCF7DE992790938A00A3 |
:10093000809389008091AC008E1551F01092640074 |
:100940001092650082E390E0C6D3EC01E090AC0029 |
:100950008091890090918A00892BD1F410927A00BD |
:1009600010926500C401C0D38823E9F01092AA0058 |
:10097000439891E09093640082B3877C82BB9FBDD3 |
:1009800081E485BD8EE087BB88B3817F88BB0BC0C7 |
:1009900080916400882319F081E080937A008CEDC7 |
:1009A00095E099D34C0180916400882321F0109246 |
:1009B0008A001092890052DB809165008F5F8093DE |
:1009C0006500813009F0B0CF809164008111979A61 |
:1009D000C5018AD3882339F182E390E07CD35C019E |
:1009E00080918500482F55272091870030918800FD |
:1009F0004217530710F48F5F04C02417350718F40B |
:100A000081508093850080918500909163008937A3 |
:100A100028F0915090936300AB9A05C09F3F19F066 |
:100A20009F5F90936300C8015FD3882319F18AE028 |
:100A300090E051D38C012091780030917900C90168 |
:100A4000880F991F880F991F820F931F820F931F82 |
:100A500066E070E068D8709377006093760010923B |
:100A60007900109278008091A100882319F481E028 |
:100A700080936200C60138D3882321F08CED95E085 |
:100A80002AD36C01CE0130D3882331F080917600D7 |
:100A900090917700892B29F080917A00882309F4BE |
:100AA00043CF21E0F22EF09264001092AA00439806 |
:100AB00084E690E010D3EC0180917A00882309F459 |
:100AC00033CFAB9810927A008AE0FDDA979A1092B1 |
:100AD00064008091AC0081508093AC0081E090E094 |
:100AE00090938A0080938900B9DA88B18C7F88B9A5 |
:100AF000F092AA0088B18A6088B984E190E0EBD2D4 |
:100B0000EC01CE01F1D28823E1F38FE090E09093E5 |
:100B10008A0080938900A2DA8CE291E0DCD2EC01B9 |
:100B2000CE01E2D28823E1F382E390E0D4D28C01BB |
:100B300097E0E92EF9CE1F920F920FB60F92112473 |
:100B40000F900FBE0F901F9018955E9B24C0809150 |
:100B50006D008823E1F480919500909196000196B4 |
:100B60009093960080939500FC01E255FD4FE08143 |
:100B7000ED3019F08436910539F4109296001092F8 |
:100B8000950081E080936D00589AECB90895109219 |
:100B900096001092950008951F93CF93DF93EC0178 |
:100BA00010E0662309F460C0A22FBB271297E42F40 |
:100BB000FF27EC5EFC4F30813D534F5FE42FFF2752 |
:100BC000EC5EFC4F50815D534F5FE42FFF27EC5EDE |
:100BD000FC4F70817D534F5FE42FFF27EC5EFC4F8D |
:100BE000E081ED534F5F842F9927A817B907E4F1EF |
:100BF000832F9927880F991F880F991F352F3295BA |
:100C00003F70382B852F99278F70907054E0880F94 |
:100C1000991F5A95E1F7572F56955695582B872FC0 |
:100C200099278370907026E0880F991F2A95E1F725 |
:100C30008E2B61506F3FC1F0FE01E10FF11D30833B |
:100C40001F5F61506F3F81F0FE01E10FF11D508386 |
:100C50001F5F61506F3F41F0FE01E10FF11D808386 |
:100C60001F5F662309F0A3CFDF91CF911F910895F5 |
:100C7000CF93C82F8A3011F48DE0FADF5D9BFECF51 |
:100C8000CCB980E090E0CF9108951F920F920FB6FB |
:100C90000F9211242F933F934F935F936F937F9302 |
:100CA0008F939F93AF93BF93CF93DF93EF93FF9374 |
:100CB0008CB18093930040919B00443610F01092C9 |
:100CC0009C00509193005D3009F064C080919C00BD |
:100CD000823009F05FC010929C00A42FBB27AC5E4D |
:100CE000BC4FFD0132978081209197003091980090 |
:100CF000281B3109ED0121978881281B3109C90181 |
:100D00009F70909398008093970066E096958795E2 |
:100D10006A95E1F7982F935C909399002F73307048 |
:100D2000235C20939A008081981709F082C0888103 |
:100D3000281709F07EC040938D005C9380911603C4 |
:100D4000823549F488E190E02CE00FB6F894A8953C |
:100D500081BD0FBE21BD809116038ADF80911603ED |
:100D6000843709F066C020918D0043E064E08EE88E |
:100D700090E012DF80916100E82FFF27E357FF4FDB |
:100D800080818093940084EF91E090938000809321 |
:100D90007F004FC020919C00822F992781309105C0 |
:100DA000F9F0823091051CF4892B21F040C00297A4 |
:100DB00011F13DC080919300833239F4809192000B |
:100DC000882319F481E080939C00809193008093A4 |
:100DD000140381E080939B0080919300992722C0A7 |
:100DE0002F5F20939C00E42FFF27EC5EFC4F809147 |
:100DF0009300808309C0E42FFF27EC5EFC4F8091B5 |
:100E000093008083443620F44F5F40939B0002C0E0 |
:100E100010929C00209193008091970090919800EF |
:100E2000820F911D909398008093970002C01092BA |
:100E30009C00FF91EF91DF91CF91BF91AF919F9176 |
:100E40008F917F916F915F914F913F912F910F9073 |
:100E50000FBE0F901F901895AC01A0E0B0E09D016F |
:100E6000A817B90748F4EEEAF2E08191280F311D86 |
:100E70001196A417B507C8F33F70FD01E255FD4F69 |
:100E8000C90176E0969587957A95E1F7835C808332 |
:100E90001196FD01E255FD4F2F733070822F835C58 |
:100EA0008083A155BD4F8DE08C9310926D00809191 |
:100EB000AE028CB908951F93CF93DF93382FEA01C8 |
:100EC000722F10E083E28093AE026093AF02309302 |
:100ED000B002A3E0B0E0772309F458C0772311F4FF |
:100EE000972F07C0FE01E10FF11D1F5F9081715028 |
:100EF00011F4472F0EC0FE01E10FF11D1F5F40816D |
:100F0000715039F0FE01E10FF11D1F5F60817150DA |
:100F100001C0672FFD01E255FD4F892F869586950B |
:100F2000835C80831196FD01E255FD4F892F99273F |
:100F30008370907024E0880F991F2A95E1F7552758 |
:100F40009A0194E0369527959A95E1F7822B835C78 |
:100F500080831196FD01E255FD4F4F705070440F94 |
:100F6000551F440F551F862F992726E09695879584 |
:100F70002A95E1F7842B835C80831196FD01E2556D |
:100F8000FD4F6F73635C60831196A5CFCD0164DF65 |
:100F9000DF91CF911F910895089588E18AB9599AF8 |
:100FA000579A80E189B960E070E088E396E052D416 |
:100FB00088EC90E090D090931303809312038AE022 |
:100FC00057DE82E455DE8CE453DE8AE351DE86E5AB |
:100FD0004FDE80E34DDE8EE24BDE83E349DE85E3C8 |
:100FE00047DE8AE045DE81E443DE84E441DE82E5DB |
:100FF0003FDE8AE33DDE80916100805D39DE089549 |
:1010000080911203909113036FD0882391F0809107 |
:101010006D00882371F022E248E753E06091AD0251 |
:1010200084E449DF82E390E056D0909313038093E9 |
:10103000120308951F920F920FB60F9211248F93EF |
:101040009F9380919A038F5F80939A0380919F0072 |
:10105000815080939F008F3F71F583E080939F00C4 |
:1010600080919D0090919E00019690939E008093A8 |
:101070009D008091810090918200009729F0019756 |
:1010800090938200809381008091A100882331F0A9 |
:101090008091A10081508093A10002C08093A000A4 |
:1010A00080917F0090918000009729F001979093A4 |
:1010B000800080937F009F918F910F900FBE0F90C3 |
:1010C0001F90189582E083BF89B7816089BF89B777 |
:1010D000806489BF089520919D0030919E00280F63 |
:1010E000391FC9010197089520919D0030919E00FC |
:1010F000821B930B892F9927807899270895CF9386 |
:10110000DF93E9DFEC01CE01EFDF8823E1F3DF912C |
:10111000CF91089586EA86B987E087B9369A08950F |
:1011200027B196E097B910BE83ED86B9349A97B986 |
:10113000369A349BFECF27B944B155B1440F551FA1 |
:10114000440F551F493C510510F048EC50E02091E8 |
:10115000870030918800C90163E0880F991F6A9564 |
:10116000E1F7821B930B840F951F23E096958795DB |
:101170002A95E1F79093880080938700209186005C |
:1011800033272817390720F4809187008093860041 |
:1011900016B888E080BF0895982F27B187B910BE90 |
:1011A00083ED86B9349A97B9369A349BFECF27B926 |
:1011B00016B888E080BF84B195B1089586E0ECDF71 |
:1011C0009C01220F331F220F331F293C310510F0E1 |
:1011D00028EC30E0309388002093870080918600CF |
:1011E00099278217930720F48091870080938600C7 |
:1011F00016B888E080BF08958EB5806C8EBD8EB520 |
:1012000080648EBD89B7806289BF89B7846089BFD9 |
:1012100008951F920F920FB60F9211248F93809111 |
:10122000A2008F5F8093A2008F910F900FBE0F904E |
:101230001F9018951F920F920FB60F9211242F93A3 |
:101240003F938F939F930EB406FE0FC01092A2009F |
:1012500086B597B59093A6008093A5008EB58F7B39 |
:101260008EBD84E68093A10079C08EB580648EBD6A |
:1012700026B537B58091A5009091A600281B390BA3 |
:101280008091A2009927982F8827990F280F391F3E |
:10129000689414F8369527951694E1F73093A800D2 |
:1012A0002093A7002851314030F488E191E09093D9 |
:1012B000A8008093A7002091A7003091A800285192 |
:1012C00031403093A8002093A7008091A300909113 |
:1012D000A4008217930730F48091A3009091A4009A |
:1012E00001960CC08091A3009091A40028173907A3 |
:1012F00048F48091A3009091A40001979093A400DA |
:101300008093A3002091A3003091A400C901880F0D |
:10131000991F880F991F880F991F821B930B20918B |
:10132000A7003091A800820F931F23E09695879520 |
:101330002A95E1F79093A8008093A7009093A400CA |
:101340008093A3008091A0008F3F29F08091A0009E |
:101350008F5F8093A00081E0809362009F918F91C6 |
:101360003F912F910F900FBE0F901F9018951F92D5 |
:101370000F920FB60F9211248F938AB78F7B8ABF7B |
:101380008F910F900FBE0F901F9018959091610054 |
:10139000990F980F92B985EC86BF08951F920F920E |
:1013A0000FB60F9211248F939F9381B19927887F55 |
:1013B000907080389105E9F08138910534F40097F8 |
:1013C000B1F18036910579F035C0883B9105D9F0AF |
:1013D000893B910524F4883A9105A9F02BC0883FF8 |
:1013E000910511F127C086B7806886BF1092A900C9 |
:1013F00023C083B180939B0384EF91E0909382009C |
:10140000809381000EC09091A900992339F48091B6 |
:10141000850083B99F5F9093A90003C0809163000A |
:1014200083B986B7806807C086B7806986BF86B7EC |
:10143000806986BF85EC86BF9F918F910F900FBE0C |
:101440000F901F9018951F920F920FB60F921124B4 |
:101450000F900FBE0F901F9018951F920F920FB60E |
:101460000F9211241F932F933F934F935F936F938A |
:101470007F938F939F93AF93BF93CF93EF93FF93FC |
:10148000459B02C011E001C010E08091AC0099279B |
:101490008230910509F46FC0833091052CF40097D8 |
:1014A00079F00197A9F11EC18430910509F4B6C005 |
:1014B000843091050CF487C0059709F4D7C012C198 |
:1014C00081E685BD90916000992321F081EA8FBD6E |
:1014D00088E003C081E08FBD8EE087BB112399F0C7 |
:1014E00082B3877E82BB959A992321F481E090E0B4 |
:1014F0009DBD8CBDC1E0C4BD80916200811110DE34 |
:101500004098C7B928C082B3877D82BB949AEAC04D |
:1015100082B3877E82BB959A90916000112309F572 |
:1015200081E485BD992329F081EA8FBD8CE087BBDA |
:1015300008C081E28FBD8EE087BB81E090E09DBD59 |
:101540008CBD81E084BD809162008111E9DD17B816 |
:1015500088B1836088B98091AC008F5F8093AC00C4 |
:10156000ABC081E685BD992321F081EA8FBD88E07B |
:10157000B8C081E0B4C081E485BD9091600099233A |
:1015800021F081EA8FBD8CE003C081E28FBD8EE047 |
:1015900087BB112399F082B38F7C82BB939A9923E6 |
:1015A00021F481E090E09DBD8CBD81E084BD8091FF |
:1015B00062008111B5DD82E087B951C082B3877EB8 |
:1015C00082BB959A8FC082B38F7C82BB939A909195 |
:1015D00060001123C9F481E485BD992329F081EAD3 |
:1015E0008FBD8AE087BB08C081E88FBD8EE087BBD6 |
:1015F00081E090E09DBD8CBDC1E0C4BD80916200E2 |
:1016000081118EDDC7B9A4CF81E485BD992321F076 |
:1016100081EA8FBD8CE065C081E261C081E485BD57 |
:1016200090916000992321F081EA8FBD8AE003C088 |
:1016300081E88FBD8EE087BB112399F082B3877D4F |
:1016400082BB949A992321F481E090E09DBD8CBDEA |
:1016500081E084BD80916200811162DD17B84098FD |
:101660007ACF82B38F7C82BB939A3CC082B3877D52 |
:1016700082BB949A90916000112341F581E685BD6B |
:10168000992329F081EA8FBD88E087BB08C081E0FB |
:101690008FBD8EE087BB81E090E09DBD8CBD81E079 |
:1016A00084BD8091620081113BDD82E087B988B101 |
:1016B000836088B91092AC00809178009091790095 |
:1016C000019690937900809378000CC081E485BDE9 |
:1016D000992321F081EA8FBD8AE003C081E88FBDA4 |
:1016E0008EE087BB459903C0112309F0C9CE459B05 |
:1016F00003C0112309F4C4CE10926200FF91EF9150 |
:10170000CF91BF91AF919F918F917F916F915F9199 |
:101710004F913F912F911F910F900FBE0F901F90EF |
:1017200018958091AC0099278230910509F43DC04D |
:10173000833091052CF4009779F0019711F1089509 |
:101740008430910509F45EC0843091050CF444C0E6 |
:10175000059709F46BC0089581E685BD809160000E |
:10176000882321F081EA8FBD88E003C081E08FBD2E |
:101770008EE087BB82B3877D82BB949A82E087B973 |
:1017800027C081E685BD80916000882321F081EA31 |
:101790008FBD88E003C081E08FBD8EE087BB82B340 |
:1017A000877E82BB959A81E02AC081E485BD8091C5 |
:1017B0006000882321F081EA8FBD8CE003C081E2C4 |
:1017C0008FBD8EE087BB82B3877E82BB959A17B8A8 |
:1017D00088B1836088B9089581E485BD80916000F7 |
:1017E000882321F081EA8FBD8CE003C081E28FBDA8 |
:1017F0008EE087BB82B38F7C82BB939A82E087B9ED |
:101800004098089581E485BD80916000882321F08F |
:1018100081EA8FBD8AE003C081E88FBD8EE087BB7F |
:1018200082B38F7C82BB939A81E0A9CF81E485BD8E |
:1018300080916000882321F081EA8FBD8AE003C097 |
:1018400081E88FBD8EE087BB82B3877D82BB949A8F |
:1018500017B8D6CF0F931F93CF93DF938C01EB0173 |
:10186000009711F4672BB9F16EE070E081E090E031 |
:1018700037D0FC01892B71F180E88383209771F0C8 |
:10188000D387C28781E8838380919C0390919D03D5 |
:10189000892B21F4F0939D03E0939C03011511051E |
:1018A000C9F01187008783818260838380919E03C2 |
:1018B00090919F03892B71F4F0939F03E0939E0313 |
:1018C0008091A0039091A103892B21F4F093A103AF |
:1018D000E093A003CF01DF91CF911F910F91089565 |
:1018E0000F931F93CF93DF93869F8001879F100DE7 |
:1018F000969F100D1124C8010DD0EC01009721F026 |
:10190000A80160E070E0FCD0CE01DF91CF911F9183 |
:101910000F910895CF93DF93AC01029710F442E04A |
:1019200050E020E030E0A091A403B091A503BD01F8 |
:10193000F901109709F44CC08D919C91119784176F |
:10194000950731F14817590738F42115310519F079 |
:101950008217930708F49C01FD01A281B3811097BF |
:1019600059F721153105A1F1C901841B950B049785 |
:1019700008F4A901DB01E0E0F0E0109749F18D9156 |
:101980009C91119782179307F9F44217530779F442 |
:10199000ED018A819B81309719F09383828304C083 |
:1019A0009093A5038093A403CD0102964AC0241B03 |
:1019B000350BFD01E20FF31F41935193225030404C |
:1019C0002D933C93CF013DC0FD01A281B381D5CFC2 |
:1019D0008091A2039091A303892B41F4809171001F |
:1019E000909172009093A3038093A203E0916F0003 |
:1019F000F0917000309741F4EDB7FEB7809173001D |
:101A000090917400E81BF90BA091A203B091A3037D |
:101A10009F012A1B3B0B2417350788F0CA01029649 |
:101A20002817390760F0CD01840F951F0296909317 |
:101A3000A3038093A2034D935D93CD0102C080E088 |
:101A400090E0DF91CF910895CF93DF93009709F451 |
:101A500054C0DC011297ED011B821A828091A4030D |
:101A60009091A503009721F1FC0140E050E0EA17B6 |
:101A7000FB0718F1ED01FB83EA832D913C9111974F |
:101A8000C20FD31FCE0102968E179F0771F48A8171 |
:101A90009B81280F391F2E5F3F4F11963C932E9349 |
:101AA00082819381FD01938382834115510559F40D |
:101AB000B093A503A093A40320C0AF010280F381DB |
:101AC000E02D3097A1F6EA01BB83AA83CA010296F2 |
:101AD00028813981820F931F8A179B0771F48D919A |
:101AE0009C911197280F391F2E5F3F4F3983288310 |
:101AF000FD01828193819B838A83DF91CF91089539 |
:101B0000DC0101C06D9341505040E0F70895991BEE |
:101B100079E004C0991F961708F0961B881F7A95E4 |
:101B2000C9F780950895AA1BBB1B51E107C0AA1FE6 |
:101B3000BB1FA617B70710F0A61BB70B881F991F6E |
:101B40005A95A9F780959095BC01CD010895A1E221 |
:101B50001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F27 |
:101B6000FF1FA217B307E407F50720F0A21BB30B72 |
:101B7000E40BF50B661F771F881F991F1A9469F7EE |
:101B800060957095809590959B01AC01BD01CF014A |
:021B90000895B6 |
:101B9200010101FF01010A000000020103016400CA |
:061BA20000A60320000074 |
:00000001FF |
/tags/V0.35/Doku/Selbstbau_BL-Ctrl/BootLoader_MEGA8_8MHZ_V0_2.hex |
---|
0,0 → 1,53 |
:101C000011241FBECFE5D4E0DEBFCDBF10E0A0E6BB |
:101C1000B0E0E0E3FFE102C005900D92A036B1070D |
:101C2000D9F710E0A0E6B0E001C01D92A23AB107DA |
:101C3000E1F714C000C008955D9BFECF8CB90895F4 |
:101C40005F9BFECF8CB1992708958DE4F5DF8BE47F |
:101C5000F3DF82E4F1DF8CE4EFDF0895CFE5D4E039 |
:101C6000DEBFCDBFE0E0F0E004917F01992481B7B1 |
:101C7000885081BF90BC80E189B9599A88E18AB9BE |
:101C800086E880BDEF01192D5F9B0BC0113029F450 |
:101C90008CB18A3A49F110E004C08CB18B3109F45F |
:101CA00011E0CE01219684369105C8F00F3F41F036 |
:101CB000002331F0E0916000F091610009950FC0C0 |
:101CC0008AE0BADF8DE0B8DF86E5B6DF80E3B4DF17 |
:101CD0008EE2B2DF82E3B0DF8AE3AEDF05C080E2EE |
:101CE0009EE40197F1F7D0CFB0DFAADF813611F47F |
:101CF00089E51CC1813461F4A3DFE82EFF24FE2CAA |
:101D0000EE249EDF9927E82AF92AF694E794E1C0A9 |
:101D1000823631F489E590DF80E08EDF80E406C111 |
:101D2000823409F070C08CDF8BDFD82E89DF082F5A |
:101D3000B2E6AB2EB0E0BB2E10E0E5010894A11C8A |
:101D4000B11C1D1510F47CDF01C08FEF88831F5F6D |
:101D5000103498F336E7931609F0C9C0063409F039 |
:101D60003CC08FEFE8168BE1F80608F033C0CD2DAC |
:101D7000A70166277727440F551F661F771F6A0143 |
:101D80007B01A2E6B0E011E08D9199272D913327D8 |
:101D9000322F2227822B932B0C01FA01109357002C |
:101DA000E89511244E5F5F4F6F4F7F4FC25061F730 |
:101DB00085E0F60180935700E89507B600FCFDCF5B |
:101DC00081E180935700E8957695679557954795FB |
:101DD0007A017FC080E030DF7CC0053409F079C033 |
:101DE000F7012D2DA2E6B0E0EEBB8F2F99278FBB18 |
:101DF0008D918DBB3196E29AE19AE199FECF215007 |
:101E000099F77F0166C08736B9F51ADF19DFC82F49 |
:101E100017DF863409F5C701AA27BB276C017D01AE |
:101E2000CC0CDD1CEE1CFF1CF60105911491802FDB |
:101E300003DF812F992700DF82E090E0A0E0B0E08F |
:101E4000C80ED91EEA1EFB1EC25071F7F694E79425 |
:101E5000D794C794760149CF853409F046CFEEBABE |
:101E60008F2D99278FBBE09A0894E11CF11C8DB34C |
:101E7000E3DEC150A1F739CF853601F596E7991613 |
:101E800041F580E090E0A0E0B0E023E0FC01209389 |
:101E90005700E89507B600FCFDCF805C9F4FAF4F21 |
:101EA000BF4F8F3F3BE1930730E0A30730E0B3071C |
:101EB00068F381E180935700E8950BC0853459F4AD |
:101EC00088E190E02CE00FB6F894A89581BD0FBE94 |
:101ED00021BD8DE02BC08035E1F38C34D1F3803708 |
:101EE00011F483E523C0843721F486E7A5DE80E082 |
:101EF0001DC0843519F4A4DE982EEBCF8B3109F484 |
:101F0000F3CE8A3A09F4F0CE863521F480E394DEEC |
:101F100082E30CC0833731F487E08EDE83E98CDE08 |
:101F20008EE104C08B3109F4E0CE8FE385DEDDCE97 |
:0400000300001C00DD |
:00000001FF |
/tags/V0.35/Doku/Selbstbau_BL-Ctrl/Fuses_Mega8_8MHZ_Intern_MIT_Bootloader.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.35/Doku/Selbstbau_BL-Ctrl/Fuses_Mega8_8MHZ_Intern_OHNE_Bootloader.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.35/Doku/Selbstbau_BL-Ctrl/SET_BrushLess-Ctrl_V0_35_Adr_1-4.zip |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.35/Doku/Selbstbau_BL-Ctrl/SET_BrushLess-Ctrl_V0_35_Adr_1-4_10A.zip |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.35/Doku/Selbstbau_BL-Ctrl/Test_Manuell_BL-Ctrl_V0_32.hex |
---|
0,0 → 1,330 |
:1000000012C0B9C62AC029C022C721C626C025C031 |
:100010000DC650C522C079C320C0CDC21EC01DC0B0 |
:1000200020C7C0C61AC011241FBECFE5D4E0DEBF72 |
:10003000CDBF10E0A0E6B0E0E6E7F4E102C0059035 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92AF39B107E1F736C1D2CF20918300AD |
:1000600080916200821710F4282FAB9A8091810052 |
:1000700090918200893C910560F01BBC1ABC19BCB0 |
:1000800018BC13BCAB9A01979093820080938100B7 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F9CE221 |
:1000E000A92E91E0B92EC12CD12C1092A3004398D7 |
:1000F00085E090E09093840080938300AFDFB6D7D3 |
:1001000088EC90E039D5C12FDD27D0938400C093CF |
:100110008300EE24FF248701EA14FB040C051D056F |
:1001200078F480916700882311F44FD201C0A8D4DD |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E072D9A21ABC |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D10428F489E1A82EBC |
:10017000B12CC12CD12C7AD78091A5008F5F8093B0 |
:10018000A5008091A50066E034D99093A50005D51F |
:10019000D0938400C093830061DF449BBACF82B3C5 |
:1001A00090E8892782BBB5CF80917B0090917C003D |
:1001B000892B09F04EC04091790050917A00411589 |
:1001C000510571F090918E008FEF989FC00111241E |
:1001D00068EC70E01AD9709386006093850041C086 |
:1001E00080919A00882341F120919C0030919D00DC |
:1001F00081E02D32380708F09A01293C310510F0D2 |
:1002000028EC30E02B30310528F4509386004093E1 |
:10021000850026C08CEF90E0289FA001299F500DFB |
:10022000389F500D1124CA01885D994064EB70E03D |
:10023000ECD8CB01039610C0809185009091860088 |
:10024000009729F001979093860080938500AB9AE0 |
:1002500008C080919403992790938600809385002D |
:10026000AB9880918500909186008F3F910539F081 |
:1002700030F08FEF90E0909386008093850080911E |
:100280008500992708958091810090918200909334 |
:1002900084038093830380917F0099279093860342 |
:1002A00080938503809170009091710090938803F2 |
:1002B0008093870380919C0090919D0090938A0386 |
:1002C000809389030895CFE5D4E0DEBFCDBF00E081 |
:1002D00088E084BB85BB8AEB81BB80E882BB8EE073 |
:1002E00087BB81E388BB88B3806C88BBB69B06C0A4 |
:1002F000B79B02C081E007C082E005C0B79B02C087 |
:1003000083E001C084E08093600087D318D47894A0 |
:10031000C0E0D0E0809160009927C817D90709F4A0 |
:10032000979A86E990E028D497988AEF90E024D4B1 |
:100330002196C530D10574F384EF91E01DD4B3DE6E |
:1003400080E528D566D485E690E002D486E690E084 |
:10035000FFD387E690E0FCD3EC018EEF90E0F8D37A |
:100360005C018DEE93E0F4D37C018EEE93E0F0D34C |
:100370006C01CE01F6D38823E1F3979A10928400A2 |
:10038000109283006BDE88E080BF11E017B98AE02D |
:1003900090E0DED3EC0181E090E0909386038093BF |
:1003A000850310929D0010929C00812F8DDEFCDE53 |
:1003B000992790938400809383008091A5008017F3 |
:1003C00051F0109263001092640082E390E0C0D379 |
:1003D000EC010091A5008091830090918400892B0D |
:1003E000C9F41092740010926400C401BAD3882337 |
:1003F000E1F01092A300439881E08093630082B300 |
:10040000877C82BB82E08FBD81E485BD85B3817F1F |
:1004100085BB0BC080916300882319F081E0809335 |
:1004200074008CED95E094D34C0180916300882397 |
:1004300021F0109284001092830010DE80916400FD |
:100440008F5F80936400813009F0B1CF80916300A9 |
:100450008111979AC50185D3882339F182E390E011 |
:1004600077D35C0180917F00482F55272091810030 |
:10047000309182004217530710F48F5F04C0241795 |
:10048000350718F4815080937F0080917F00909110 |
:100490006200893728F0915090936200AB9A05C0B2 |
:1004A0009F3F19F09F5F90936200C7015AD3882342 |
:1004B00019F18AE090E04CD37C01209172003091D8 |
:1004C0007300C901880F991F880F991F820F931F0E |
:1004D000820F931F66E070E098D77093710060936D |
:1004E0007000109273001092720080919A0088231D |
:1004F00019F481E080936100C60133D3882321F091 |
:100500008CED95E025D36C01CE012BD3882331F0FF |
:100510008091700090917100892B29F08091740076 |
:10052000882309F444CF11E0109363001092A300D4 |
:10053000439884E690E00CD3EC018091740088230A |
:1005400009F435CFAB98109274008AE0BDDD979A1C |
:10055000109263008091A50081508093A50081E0F6 |
:1005600090E0909384008093830078DD88B18C7F45 |
:1005700088B91093A30088B18A6088B984E690E0B6 |
:10058000E7D2EC01CE01EDD28823E1F38AE090E0DE |
:10059000909384008093830061DD88EC90E0D8D252 |
:1005A000EC01CE01DED28823E1F382E390E0D0D2E9 |
:1005B0007C0107E0FCCE1F920F920FB60F92112420 |
:1005C0000F900FBE0F901F9018955E9B24C08091D6 |
:1005D00067008823E1F480918F009091900001964C |
:1005E0009093900080938F00FC01E955FD4FE081CE |
:1005F000ED3019F08436910539F410929000109284 |
:100600008F0081E080936700589AECB908951092AA |
:10061000900010928F0008951F93CF93DF93EC0109 |
:1006200010E0662309F460C0A22FBB271297E42FC5 |
:10063000FF27E35FFC4F30813D534F5FE42FFF27DF |
:10064000E35FFC4F50815D534F5FE42FFF27E35F73 |
:10065000FC4F70817D534F5FE42FFF27E35FFC4F1A |
:10066000E081ED534F5F842F9927A817B907E4F174 |
:10067000832F9927880F991F880F991F352F32953F |
:100680003F70382B852F99278F70907054E0880F1A |
:10069000991F5A95E1F7572F56955695582B872F46 |
:1006A00099278370907026E0880F991F2A95E1F7AB |
:1006B0008E2B61506F3FC1F0FE01E10FF11D3083C1 |
:1006C0001F5F61506F3F81F0FE01E10FF11D50830C |
:1006D0001F5F61506F3F41F0FE01E10FF11D80830C |
:1006E0001F5F662309F0A3CFDF91CF911F9108957B |
:1006F000CF93C82F8A3011F48DE0FADF5D9BFECFD7 |
:10070000CCB980E090E0CF9108951F920F920FB680 |
:100710000F9211242F933F934F935F936F937F9387 |
:100720008F939F93AF93BF93CF93DF93EF93FF93F9 |
:100730008CB180938D0040919500443610F010925A |
:10074000960050918D005D3009F064C08091960054 |
:10075000823009F05FC010929600A42FBB27A35FE0 |
:10076000BC4FFD0132978081209191003091920021 |
:10077000281B3109ED0121978881281B3109C90106 |
:100780009F70909392008093910066E09695879574 |
:100790006A95E1F7982F935C909393002F733070D4 |
:1007A000235C209394008081981709F082C088818F |
:1007B000281709F07EC0409387005C9380910F0357 |
:1007C000823549F488E190E02CE00FB6F894A895C2 |
:1007D00081BD0FBE21BD80910F038ADF80910F0381 |
:1007E000843709F066C02091870043E064E088E820 |
:1007F00090E012DF80916000E82FFF27E957FF4F5C |
:10080000808180938E0084EF91E090937A008093B2 |
:1008100079004FC020919600822F99278130910551 |
:10082000F9F0823091051CF4892B21F040C0029729 |
:1008300011F13DC080918D00833239F480918C009C |
:10084000882319F481E08093960080918D00809335 |
:100850000D0381E08093950080918D00992722C03F |
:100860002F5F20939600E42FFF27E35FFC4F8091DA |
:100870008D00808309C0E42FFF27E35FFC4F809148 |
:100880008D008083443620F44F5F4093950002C072 |
:100890001092960020918D0080919100909192008D |
:1008A000820F911D909392008093910002C010924C |
:1008B0009600FF91EF91DF91CF91BF91AF919F9102 |
:1008C0008F917F916F915F914F913F912F910F90F9 |
:1008D0000FBE0F901F901895AC01A0E0B0E09D01F5 |
:1008E000A817B90748F4E7EAF2E08191280F311D13 |
:1008F0001196A417B507C8F33F70FD01E955FD4FE8 |
:10090000C90176E0969587957A95E1F7835C8083B7 |
:100910001196FD01E955FD4F2F733070822F835CD6 |
:100920008083A855BD4F8DE08C9310926700809115 |
:10093000A7028CB908951F93CF93DF93382FEA0154 |
:10094000722F10E083E28093A7026093A802309395 |
:10095000A902A3E0B0E0772309F458C0772311F48B |
:10096000972F07C0FE01E10FF11D1F5F90817150AD |
:1009700011F4472F0EC0FE01E10FF11D1F5F4081F2 |
:10098000715039F0FE01E10FF11D1F5F6081715060 |
:1009900001C0672FFD01E955FD4F892F869586958A |
:1009A000835C80831196FD01E955FD4F892F9927BE |
:1009B0008370907024E0880F991F2A95E1F75527DE |
:1009C0009A0194E0369527959A95E1F7822B835CFE |
:1009D00080831196FD01E955FD4F4F705070440F13 |
:1009E000551F440F551F862F992726E0969587950A |
:1009F0002A95E1F7842B835C80831196FD01E955EC |
:100A0000FD4F6F73635C60831196A5CFCD0164DFEA |
:100A1000DF91CF911F910895089588E18AB9599A7D |
:100A2000579A80E189B960E070E088E793E084D369 |
:100A300088EC90E08DD090930C0380930B038AE0B8 |
:100A400057DE82E455DE8CE453DE8AE351DE86E530 |
:100A50004FDE80E34DDE8EE24BDE83E349DE82E350 |
:100A600047DE8AE045DE81E443DE84E441DE82E560 |
:100A70003FDE8AE33DDE80916000805D39DE0895CF |
:100A800080910B0390910C036CD0882391F080919E |
:100A90006700882371F022E241E753E06091A602EB |
:100AA00084E449DF82E390E053D090930C03809379 |
:100AB0000B0308951F920F920FB60F9211248F937C |
:100AC0009F93809193038F5F80939303809199000C |
:100AD0008150809399008F3F59F583E0809399006E |
:100AE0008091970090919800019690939800809340 |
:100AF000970080917B0090917C00009729F00197EE |
:100B000090937C0080937B0080919A00882329F049 |
:100B100080919A00815080939A0080917900909101 |
:100B20007A00009729F0019790937A0080937900DA |
:100B30009F918F910F900FBE0F901F90189582E09C |
:100B400083BF89B7816089BF89B7806489BF0895F1 |
:100B50002091970030919800280F391FC901019703 |
:100B600008952091970030919800821B930B892F54 |
:100B70009927807899270895CF93DF93E9DFEC01D7 |
:100B8000CE01EFDF8823E1F3DF91CF91089586EA6C |
:100B900086B987E087B9369A089527B196E097B964 |
:100BA00010BE83ED86B9349A97B9369A349BFECF3E |
:100BB00027B944B155B1440F551F440F551F493C47 |
:100BC000510510F048EC50E02091810030918200F6 |
:100BD000C90163E0880F991F6A95E1F7821B930BA7 |
:100BE000840F951F23E0969587952A95E1F79093BA |
:100BF00082008093810020918000332728173907D5 |
:100C000020F4809181008093800016B888E080BF36 |
:100C100008958EB5806C8EBD8EB580648EBD89B70B |
:100C2000806289BF89B7846089BF08951F920F923F |
:100C30000FB60F9211248F9380919B008F5F80934A |
:100C40009B008F910F900FBE0F901F9018951F92D1 |
:100C50000F920FB60F9211242F933F938F939F9370 |
:100C60000EB406FE0FC010929B0086B597B5909308 |
:100C70009F0080939E008EB58F7B8EBD84E680930F |
:100C80009A0070C08EB580648EBD26B537B5809150 |
:100C90009E0090919F00281B390B80919B00992703 |
:100CA000982F8827990F280F391F689414F83695C4 |
:100CB00027951694E1F73093A1002093A0002851C6 |
:100CC000314030F488E191E09093A1008093A0003E |
:100CD0002091A0003091A100285131403093A10013 |
:100CE0002093A00080919C0090919D008217930713 |
:100CF00030F480919C0090919D0001960CC08091F1 |
:100D00009C0090919D002817390748F480919C0021 |
:100D100090919D00019790939D0080939C0020915D |
:100D20009C0030919D00C901880F991F880F991F61 |
:100D3000880F991F821B930B2091A0003091A10076 |
:100D4000820F931F23E0969587952A95E1F790935C |
:100D5000A1008093A00090939D0080939C0081E06F |
:100D6000809361009F918F913F912F910F900FBEC3 |
:100D70000F901F9018951F920F920FB60F9211248B |
:100D80008F938AB78F7B8ABF8F910F900FBE0F9082 |
:100D90001F90189590916000990F980F92B985EC6B |
:100DA00086BF08951F920F920FB60F9211248F9352 |
:100DB0009F9381B19927887F907080389105E9F0E1 |
:100DC0008138910534F40097B1F18036910579F0BE |
:100DD00035C0883B9105D9F0893B910524F4883AC8 |
:100DE0009105A9F02BC0883F910511F127C086B766 |
:100DF000806886BF1092A20023C083B180939403C1 |
:100E000084EF91E090937C0080937B000EC09091E2 |
:100E1000A200992339F480917F0083B99F5F90935A |
:100E2000A20003C08091620083B986B7806807C0C2 |
:100E300086B7806986BF86B7806986BF85EC86BF26 |
:100E40009F918F910F900FBE0F901F9018951F923A |
:100E50000F920FB60F9211240F900FBE0F901F909C |
:100E600018951F920F920FB60F9211241F932F9374 |
:100E70003F934F935F936F937F938F939F93AF9322 |
:100E8000BF93CF93EF93FF93459B02C011E001C046 |
:100E900010E08091A50099278230910509F450C097 |
:100EA000833091052CF4009779F0019739F1BFC098 |
:100EB0008430910509F478C0843091050CF45AC04F |
:100EC000059709F48BC0B3C082EA8FBD81E685BD6A |
:100ED00088E087BB112369F082B3877E82BB959A35 |
:100EE000C1E0C4BD80916100811157DE4098C7B94F |
:100EF0001BC082B3877D82BB949A99C082B3877EE0 |
:100F000082BB959A1123B1F482EA8FBD81E485BD3D |
:100F10008CE087BB81E084BD8091610081113DDE62 |
:100F200017B988B1836088B98091A5008F5F8093DD |
:100F3000A5006DC082EA8FBD81E685BD88E076C0E0 |
:100F400082EA8FBD81E485BD8CE087BB112369F007 |
:100F500082B38F7C82BB939A81E084BD80916100D3 |
:100F600081111BDE82E087B932C082B3877E82BBEB |
:100F7000959A5DC082B38F7C82BB939A112371F4E2 |
:100F800082EA8FBD81E485BD8AE087BBC1E0C4BD34 |
:100F900080916100811101DEC7B9C3CF82EA8FBDA4 |
:100FA00081E485BD8CE042C082EA8FBD81E485BDCD |
:100FB0008AE087BB112369F082B3877D82BB949A54 |
:100FC00081E084BD809161008111E7DD17B8409810 |
:100FD000ABCF82B38F7C82BB939A29C082B3877DCB |
:100FE00082BB949A1123E9F482EA8FBD81E685BD24 |
:100FF00088E087BB81E084BD809161008111CDDDF7 |
:1010000082E087B988B1836088B91093A500809188 |
:101010007200909173000196909373008093720018 |
:1010200006C082EA8FBD81E485BD8AE087BB459911 |
:1010300003C0112309F028CF459B03C0112309F4F5 |
:1010400023CF10926100FF91EF91CF91BF91AF91AB |
:101050009F918F917F916F915F914F913F912F91D0 |
:101060001F910F900FBE0F901F9018958091A500B3 |
:1010700099278230910551F1833091052CF4009726 |
:1010800069F00197B9F0089584309105E1F1843059 |
:1010900091055CF1059709F443C0089582EA8FBD7C |
:1010A00081E685BD88E087BB82B3877D82BB949A49 |
:1010B00082E034C082EA8FBD81E685BD88E087BBCF |
:1010C00082B3877E82BB959A81E01AC082EA8FBD87 |
:1010D00081E485BD8CE087BB82B3877E82BB959A15 |
:1010E00017B888B1836088B9089582EA8FBD81E41A |
:1010F00085BD8CE087BB82B38F7C82BB939A82E0F4 |
:1011000087B94098089582EA8FBD81E485BD8AE061 |
:1011100087BB82B38F7C82BB939A81E087B9E1CF92 |
:1011200082EA8FBD81E485BD8AE087BB82B3877D7B |
:1011300082BB949A17B8E5CF0F931F93CF93DF9399 |
:101140008C01EB01009711F4672BB9F16EE070E0B0 |
:1011500081E090E037D0FC01892B71F180E8838336 |
:10116000209771F0D387C28781E8838380919503AC |
:1011700090919603892B21F4F0939603E0939503C5 |
:1011800001151105C9F0118700878381826083836F |
:101190008091970390919803892B71F4F0939803B1 |
:1011A000E09397038091990390919A03892B21F4FE |
:1011B000F0939A03E0939903CF01DF91CF911F91B0 |
:1011C0000F9108950F931F93CF93DF93869F800114 |
:1011D000879F100D969F100D1124C8010DD0EC01B2 |
:1011E000009721F0A80160E070E0FCD0CE01DF9113 |
:1011F000CF911F910F910895CF93DF93AC01029788 |
:1012000010F442E050E020E030E0A0919D03B09166 |
:101210009E03BD01F901109709F44CC08D919C917A |
:1012200011978417950731F14817590738F421159C |
:10123000310519F08217930708F49C01FD01A28182 |
:10124000B381109759F721153105A1F1C901841B0C |
:10125000950B049708F4A901DB01E0E0F0E010979A |
:1012600049F18D919C91119782179307F9F44217D8 |
:10127000530779F4ED018A819B81309719F09383AC |
:10128000828304C090939E0380939D03CD010296B8 |
:101290004AC0241B350BFD01E20FF31F419351930C |
:1012A000225030402D933C93CF013DC0FD01A281DF |
:1012B000B381D5CF80919B0390919C03892B41F4FE |
:1012C00080916B0090916C0090939C0380939B03A2 |
:1012D000E0916900F0916A00309741F4EDB7FEB7F4 |
:1012E00080916D0090916E00E81BF90BA0919B031B |
:1012F000B0919C039F012A1B3B0B2417350788F0F4 |
:10130000CA0102962817390760F0CD01840F951F96 |
:10131000029690939C0380939B034D935D93CD0124 |
:1013200002C080E090E0DF91CF910895CF93DF93EA |
:10133000009709F454C0DC011297ED011B821A8258 |
:1013400080919D0390919E03009721F1FC0140E064 |
:1013500050E0EA17FB0718F1ED01FB83EA832D91BA |
:101360003C911197C20FD31FCE0102968E179F0793 |
:1013700071F48A819B81280F391F2E5F3F4F119690 |
:101380003C932E9382819381FD0193838283411547 |
:10139000510559F4B0939E03A0939D0320C0AF0163 |
:1013A0000280F381E02D3097A1F6EA01BB83AA8386 |
:1013B000CA01029628813981820F931F8A179B07E1 |
:1013C00071F48D919C911197280F391F2E5F3F4F1B |
:1013D00039832883FD01828193819B838A83DF91F6 |
:1013E000CF910895DC0101C06D9341505040E0F76A |
:1013F0000895991B79E004C0991F961708F0961B71 |
:10140000881F7A95C9F780950895AA1BBB1B51E1E7 |
:1014100007C0AA1FBB1FA617B70710F0A61BB70B64 |
:10142000881F991F5A95A9F780959095BC01CD0109 |
:101430000895A1E21A2EAA1BBB1BFD010DC0AA1F15 |
:10144000BB1FEE1FFF1FA217B307E407F50720F02D |
:10145000A21BB30BE40BF50B661F771F881F991FA8 |
:101460001A9469F760957095809590959B01AC01F1 |
:06147000BD01CF0108954B |
:101476000101FF01010A00016400009F0320000032 |
:00000001FF |
/tags/V0.35/Doku/Selbstbau_BL-Ctrl/Test_Schub_BrushLess-Ctrl_V0_32.hex |
---|
0,0 → 1,333 |
:1000000012C0D3C62AC029C03CC73BC626C025C0E3 |
:1000100027C66AC522C093C320C0E7C21EC01DC048 |
:100020003AC7DAC61AC011241FBECFE5D4E0DEBF3E |
:10003000CDBF10E0A0E6B0E0EAEAF4E102C005902E |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92AF39B107E1F731C1D2CF20918300B2 |
:1000600080916200821710F4282FAB9A8091810052 |
:1000700090918200893C910560F01BBC1ABC19BCB0 |
:1000800018BC13BCAB9A01979093820080938100B7 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C1092A3004398E9 |
:1000F00085E090E09093840080938300AFDFD0D7B9 |
:1001000088EC90E053D5C12FDD27D0938400C093B5 |
:100110008300EE24FF248701EA14FB040C051D056F |
:1001200078F480916700882311F469D201C0C2D4A9 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E08CD9A21AA2 |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F099D78091DF |
:10017000A5008F5F8093A5008091A50066E053D90C |
:100180009093A50024D5D0938400C093830066DFAC |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089580917B0090917C00892B09F08D |
:1001C00043C04091790050917A004115510571F07A |
:1001D00090918E008FEF989FC001112468EC70E021 |
:1001E0002ED9709386006093850036C080919A0066 |
:1001F000882341F120919C0030919D0081E02D32B7 |
:10020000380708F09A01293C310510F028EC30E05D |
:100210002B30310528F450938600409385001BC095 |
:100220008CEF90E0289FA001299F500D389F500D22 |
:100230001124CA01885D994064EB70E000D9CB01BC |
:10024000039605C0AB9A08C08091940399279093B8 |
:10025000860080938500AB98809185009091860000 |
:100260008F3F910539F030F08FEF90E0909386004A |
:100270008093850080918500992708958091810061 |
:1002800090918200909384038093830380917F00F8 |
:1002900099279093860380938503809170009091B5 |
:1002A0007100909388038093870380919C009091C4 |
:1002B0009D0090938A03809389030895CFE5D4E04D |
:1002C000DEBFCDBFCC2488E084BB85BB8AEB81BB7D |
:1002D00080E882BB8EE087BB81E388BB88B3806CFB |
:1002E00088BBB69B06C0B79B02C081E007C082E016 |
:1002F00005C0B79B02C083E001C084E0809360002A |
:10030000A6D337D47894C0E0D0E0809160009927DC |
:10031000C817D90709F4979A86E990E047D49798C7 |
:100320008AEF90E043D42196C530D10574F3C5E03F |
:10033000D0E084EF91E03AD4B6DE80E545D583D4B1 |
:1003400085E690E01FD486E690E01CD487E690E036 |
:1003500019D48C018EEF90E015D44C018DEE93E012 |
:1003600011D47C018EEE93E00DD45C01C80113D44E |
:100370008823E1F3979A10928400109283006EDE36 |
:1003800088E080BF81E087B98AE090E0FBD38C01F0 |
:1003900081E090E0909386038093850310929D0006 |
:1003A00010929C008091A5008C1551F01092630072 |
:1003B0001092640082E390E0E5D38C01C090A50028 |
:1003C0008091830090918400892BC9F4109274006D |
:1003D00010926400C301DFD38823E1F01092A300E0 |
:1003E000439881E08093630082B3877C82BB82E084 |
:1003F0008FBD81E485BD85B3817F85BB0BC08091B6 |
:100400006300882319F081E0809374008CED95E0FF |
:10041000B9D33C0123DE809164008F5F8093640038 |
:10042000813009F0BFCF809163008111979AC40198 |
:10043000B2D3882339F182E390E0A4D34C018091B8 |
:100440007F00482F5527209181003091820042176C |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937F0080917F0090916200893728F00F |
:10047000915090936200AB9A05C09F3F19F09F5F27 |
:1004800090936200C70187D3882319F18AE090E036 |
:1004900079D37C012091720030917300C901880FDB |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E0C5D770937100609370001092730064 |
:1004C0001092720080919A00882319F481E0809341 |
:1004D0006100C50160D3882379F18CED95E052D39A |
:1004E0005C01C230D105A9F0C330D10534F42097A6 |
:1004F00051F0C130D10551F01DC0C330D10561F0BC |
:10050000249791F017C082E390E008C082E890E061 |
:1005100005C08CE390E002C08CE890E090938400EA |
:1005200080938300219608C086E990E09093840030 |
:1005300080938300C0E0D0E0C8012DD3882331F040 |
:100540008091700090917100892B29F08091740046 |
:10055000882309F427CF21E0D22ED0926300109295 |
:10056000A300439884E690E00DD38C018091740041 |
:10057000882309F417CFAB98109274008AE0A4DDA9 |
:10058000979A109263008091A50081508093A500F6 |
:1005900081E090E090938400809383005FDD88B1D8 |
:1005A0008C7F88B9D092A30088B18A6088B984E62C |
:1005B00090E0E8D28C01C801EED28823E1F38AE012 |
:1005C00090E0909384008093830048DD88EC90E075 |
:1005D000D9D28C01C801DFD28823E1F382E390E015 |
:1005E000D1D27C0197E0C92EDDCE1F920F920FB6BB |
:1005F0000F9211240F900FBE0F901F9018955E9BC5 |
:1006000024C0809167008823E1F480918F0090914D |
:10061000900001969093900080938F00FC01E95523 |
:10062000FD4FE081ED3019F08436910539F41092D8 |
:10063000900010928F0081E080936700589AECB987 |
:1006400008951092900010928F0008951F93CF93F9 |
:10065000DF93EC0110E0662309F460C0A22FBB27F2 |
:100660001297E42FFF27E35FFC4F30813D534F5F2C |
:10067000E42FFF27E35FFC4F50815D534F5FE42F72 |
:10068000FF27E35FFC4F70817D534F5FE42FFF270F |
:10069000E35FFC4FE081ED534F5F842F9927A8174C |
:1006A000B907E4F1832F9927880F991F880F991FA5 |
:1006B000352F32953F70382B852F99278F7090708A |
:1006C00054E0880F991F5A95E1F7572F5695569584 |
:1006D000582B872F99278370907026E0880F991FD9 |
:1006E0002A95E1F78E2B61506F3FC1F0FE01E10FBB |
:1006F000F11D30831F5F61506F3F81F0FE01E10FFC |
:10070000F11D50831F5F61506F3F41F0FE01E10F0B |
:10071000F11D80831F5F662309F0A3CFDF91CF9186 |
:100720001F910895CF93C82F8A3011F48DE0FADF1E |
:100730005D9BFECFCCB980E090E0CF9108951F92F1 |
:100740000F920FB60F9211242F933F934F935F9305 |
:100750006F937F938F939F93AF93BF93CF93DF93C9 |
:10076000EF93FF938CB180938D00409195004436B8 |
:1007700010F01092960050918D005D3009F064C029 |
:1007800080919600823009F05FC010929600A42FED |
:10079000BB27A35FBC4FFD01329780812091910060 |
:1007A00030919200281B3109ED0121978881281B87 |
:1007B0003109C9019F70909392008093910066E087 |
:1007C000969587956A95E1F7982F935C909393009F |
:1007D0002F733070235C209394008081981709F068 |
:1007E00082C08881281709F07EC0409387005C93FF |
:1007F00080910F03823549F488E190E02CE00FB638 |
:10080000F894A89581BD0FBE21BD80910F038ADFAA |
:1008100080910F03843709F066C02091870043E080 |
:1008200064E088E890E012DF80916000E82FFF2705 |
:10083000E957FF4F808180938E0084EF91E0909381 |
:100840007A00809379004FC020919600822F9927DB |
:1008500081309105F9F0823091051CF4892B21F04B |
:1008600040C0029711F13DC080918D00833239F470 |
:1008700080918C00882319F481E080939600809108 |
:100880008D0080930D0381E08093950080918D0011 |
:10089000992722C02F5F20939600E42FFF27E35F64 |
:1008A000FC4F80918D00808309C0E42FFF27E35F18 |
:1008B000FC4F80918D008083443620F44F5F40933D |
:1008C000950002C01092960020918D0080919100B9 |
:1008D00090919200820F911D9093920080939100CD |
:1008E00002C010929600FF91EF91DF91CF91BF91DE |
:1008F000AF919F918F917F916F915F914F913F91B8 |
:100900002F910F900FBE0F901F901895AC01A0E093 |
:10091000B0E09D01A817B90748F4E7EAF2E0819139 |
:10092000280F311D1196A417B507C8F33F70FD01BC |
:10093000E955FD4FC90176E0969587957A95E1F7DF |
:10094000835C80831196FD01E955FD4F2F73307054 |
:10095000822F835C8083A855BD4F8DE08C931092CD |
:1009600067008091A7028CB908951F93CF93DF93FE |
:10097000382FEA01722F10E083E28093A702609380 |
:10098000A8023093A902A3E0B0E0772309F458C08D |
:10099000772311F4972F07C0FE01E10FF11D1F5FB0 |
:1009A0009081715011F4472F0EC0FE01E10FF11D2F |
:1009B0001F5F4081715039F0FE01E10FF11D1F5F93 |
:1009C0006081715001C0672FFD01E955FD4F892FEE |
:1009D00086958695835C80831196FD01E955FD4FD0 |
:1009E000892F99278370907024E0880F991F2A958A |
:1009F000E1F755279A0194E0369527959A95E1F706 |
:100A0000822B835C80831196FD01E955FD4F4F7069 |
:100A10005070440F551F440F551F862F992726E00D |
:100A2000969587952A95E1F7842B835C80831196B0 |
:100A3000FD01E955FD4F6F73635C60831196A5CF8F |
:100A4000CD0164DFDF91CF911F910895089588E172 |
:100A50008AB9599A579A80E189B960E070E082E9D1 |
:100A600093E084D388EC90E08DD090930C03809336 |
:100A70000B038AE057DE82E455DE8CE453DE8AE322 |
:100A800051DE86E54FDE80E34DDE8EE24BDE83E312 |
:100A900049DE82E347DE8AE045DE81E443DE84E42A |
:100AA00041DE82E53FDE8AE33DDE80916000805DCD |
:100AB00039DE089580910B0390910C036CD088234C |
:100AC00091F080916700882371F022E241E753E0C2 |
:100AD0006091A60284E449DF82E390E053D09093D2 |
:100AE0000C0380930B0308951F920F920FB60F9281 |
:100AF00011248F939F93809193038F5F809393032F |
:100B0000809199008150809399008F3F59F583E03F |
:100B1000809399008091970090919800019690930E |
:100B200098008093970080917B0090917C000097C3 |
:100B300029F0019790937C0080937B0080919A002C |
:100B4000882329F080919A00815080939A008091A7 |
:100B5000790090917A00009729F0019790937A009C |
:100B6000809379009F918F910F900FBE0F901F90EF |
:100B7000189582E083BF89B7816089BF89B7806497 |
:100B800089BF08952091970030919800280F391F50 |
:100B9000C901019708952091970030919800821B18 |
:100BA000930B892F9927807899270895CF93DF9306 |
:100BB000E9DFEC01CE01EFDF8823E1F3DF91CF9194 |
:100BC000089586EA86B987E087B9369A089527B1ED |
:100BD00096E097B910BE83ED86B9349A97B9369AE4 |
:100BE000349BFECF27B944B155B1440F551F440F74 |
:100BF000551F493C510510F048EC50E02091810010 |
:100C000030918200C90163E0880F991F6A95E1F76E |
:100C1000821B930B840F951F23E0969587952A9549 |
:100C2000E1F7909382008093810020918000332728 |
:100C30002817390720F4809181008093800016B82E |
:100C400088E080BF08958EB5806C8EBD8EB58064BF |
:100C50008EBD89B7806289BF89B7846089BF0895D6 |
:100C60001F920F920FB60F9211248F9380919B00C9 |
:100C70008F5F80939B008F910F900FBE0F901F90FE |
:100C800018951F920F920FB60F9211242F933F9336 |
:100C90008F939F930EB406FE0FC010929B0086B5F3 |
:100CA00097B590939F0080939E008EB58F7B8EBDED |
:100CB00084E680939A0070C08EB580648EBD26B5A0 |
:100CC00037B580919E0090919F00281B390B809131 |
:100CD0009B009927982F8827990F280F391F689410 |
:100CE00014F8369527951694E1F73093A1002093D8 |
:100CF000A0002851314030F488E191E09093A100A8 |
:100D00008093A0002091A0003091A1002851314093 |
:100D10003093A1002093A00080919C0090919D00B1 |
:100D20008217930730F480919C0090919D0001966A |
:100D30000CC080919C0090919D002817390748F4C1 |
:100D400080919C0090919D00019790939D008093CD |
:100D50009C0020919C0030919D00C901880F991F33 |
:100D6000880F991F880F991F821B930B2091A00059 |
:100D70003091A100820F931F23E0969587952A95C5 |
:100D8000E1F79093A1008093A00090939D00809341 |
:100D90009C0081E0809361009F918F913F912F9102 |
:100DA0000F900FBE0F901F9018951F920F920FB6C5 |
:100DB0000F9211248F938AB78F7B8ABF8F910F90E8 |
:100DC0000FBE0F901F90189590916000990F980F8B |
:100DD00092B985EC86BF08951F920F920FB60F92BD |
:100DE00011248F939F9381B19927887F90708038C9 |
:100DF0009105E9F08138910534F40097B1F180361E |
:100E0000910579F035C0883B9105D9F0893B910572 |
:100E100024F4883A9105A9F02BC0883F910511F17F |
:100E200027C086B7806886BF1092A20023C083B116 |
:100E30008093940384EF91E090937C0080937B00F7 |
:100E40000EC09091A200992339F480917F0083B95C |
:100E50009F5F9093A20003C08091620083B986B720 |
:100E6000806807C086B7806986BF86B7806986BFFD |
:100E700085EC86BF9F918F910F900FBE0F901F90B2 |
:100E800018951F920F920FB60F9211240F900FBE5C |
:100E90000F901F9018951F920F920FB60F9211246A |
:100EA0001F932F933F934F935F936F937F938F93F2 |
:100EB0009F93AF93BF93CF93EF93FF93459B02C054 |
:100EC00011E001C010E08091A500992782309105C2 |
:100ED00009F450C0833091052CF4009779F0019704 |
:100EE00039F1BFC08430910509F478C08430910590 |
:100EF0000CF45AC0059709F48BC0B3C082EA8FBDC9 |
:100F000081E685BD88E087BB112369F082B3877EC7 |
:100F100082BB959AC1E0C4BD80916100811157DE0A |
:100F20004098C7B91BC082B3877D82BB949A99C091 |
:100F300082B3877E82BB959A1123B1F482EA8FBD7A |
:100F400081E485BD8CE087BB81E084BD8091610038 |
:100F500081113DDE17B988B1836088B98091A50001 |
:100F60008F5F8093A5006DC082EA8FBD81E685BD4D |
:100F700088E076C082EA8FBD81E485BD8CE087BBC6 |
:100F8000112369F082B38F7C82BB939A81E084BD88 |
:100F90008091610081111BDE82E087B932C082B38B |
:100FA000877E82BB959A5DC082B38F7C82BB939A09 |
:100FB000112371F482EA8FBD81E485BD8AE087BB8D |
:100FC000C1E0C4BD80916100811101DEC7B9C3CF0A |
:100FD00082EA8FBD81E485BD8CE042C082EA8FBD8C |
:100FE00081E485BD8AE087BB112369F082B3877DE8 |
:100FF00082BB949A81E084BD809161008111E7DD1C |
:1010000017B84098ABCF82B38F7C82BB939A29C02C |
:1010100082B3877D82BB949A1123E9F482EA8FBD63 |
:1010200081E685BD88E087BB81E084BD8091610059 |
:101030008111CDDD82E087B988B1836088B91093D2 |
:10104000A5008091720090917300019690937300B7 |
:101050008093720006C082EA8FBD81E485BD8AE07C |
:1010600087BB459903C0112309F028CF459B03C0D6 |
:10107000112309F423CF10926100FF91EF91CF91DA |
:10108000BF91AF919F918F917F916F915F914F91A0 |
:101090003F912F911F910F900FBE0F901F901895A9 |
:1010A0008091A50099278230910551F183309105F7 |
:1010B0002CF4009769F00197B9F0089584309105F8 |
:1010C000E1F1843091055CF1059709F443C008957E |
:1010D00082EA8FBD81E685BD88E087BB82B3877DCC |
:1010E00082BB949A82E034C082EA8FBD81E685BDDE |
:1010F00088E087BB82B3877E82BB959A81E01AC065 |
:1011000082EA8FBD81E485BD8CE087BB82B3877E98 |
:1011100082BB959A17B888B1836088B9089582EA2E |
:101120008FBD81E485BD8CE087BB82B38F7C82BBA1 |
:10113000939A82E087B94098089582EA8FBD81E44E |
:1011400085BD8AE087BB82B38F7C82BB939A81E0A6 |
:1011500087B9E1CF82EA8FBD81E485BD8AE087BB94 |
:1011600082B3877D82BB949A17B8E5CF0F931F9304 |
:10117000CF93DF938C01EB01009711F4672BB9F14A |
:101180006EE070E081E090E037D0FC01892B71F1D6 |
:1011900080E88383209771F0D387C28781E88383B7 |
:1011A0008091950390919603892B21F4F0939603F7 |
:1011B000E093950301151105C9F01187008783811C |
:1011C000826083838091970390919803892B71F4B7 |
:1011D000F0939803E09397038091990390919A0379 |
:1011E000892B21F4F0939A03E0939903CF01DF91C7 |
:1011F000CF911F910F9108950F931F93CF93DF937A |
:10120000869F8001879F100D969F100D1124C801A5 |
:101210000DD0EC01009721F0A80160E070E0FCD057 |
:10122000CE01DF91CF911F910F910895CF93DF935E |
:10123000AC01029710F442E050E020E030E0A091D1 |
:101240009D03B0919E03BD01F901109709F44CC0B4 |
:101250008D919C9111978417950731F14817590783 |
:1012600038F42115310519F08217930708F49C0111 |
:10127000FD01A281B381109759F721153105A1F124 |
:10128000C901841B950B049708F4A901DB01E0E078 |
:10129000F0E0109749F18D919C9111978217930777 |
:1012A000F9F44217530779F4ED018A819B81309755 |
:1012B00019F09383828304C090939E0380939D03CF |
:1012C000CD0102964AC0241B350BFD01E20FF31F2E |
:1012D00041935193225030402D933C93CF013DC018 |
:1012E000FD01A281B381D5CF80919B0390919C0396 |
:1012F000892B41F480916B0090916C0090939C033A |
:1013000080939B03E0916900F0916A00309741F46B |
:10131000EDB7FEB780916D0090916E00E81BF90B60 |
:10132000A0919B03B0919C039F012A1B3B0B2417A8 |
:10133000350788F0CA0102962817390760F0CD01F9 |
:10134000840F951F029690939C0380939B034D936B |
:101350005D93CD0102C080E090E0DF91CF910895D0 |
:10136000CF93DF93009709F454C0DC011297ED018D |
:101370001B821A8280919D0390919E03009721F118 |
:10138000FC0140E050E0EA17FB0718F1ED01FB8398 |
:10139000EA832D913C911197C20FD31FCE01029683 |
:1013A0008E179F0771F48A819B81280F391F2E5F4A |
:1013B0003F4F11963C932E9382819381FD0193833D |
:1013C00082834115510559F4B0939E03A0939D0368 |
:1013D00020C0AF010280F381E02D3097A1F6EA0131 |
:1013E000BB83AA83CA01029628813981820F931F89 |
:1013F0008A179B0771F48D919C911197280F391FC3 |
:101400002E5F3F4F39832883FD01828193819B8327 |
:101410008A83DF91CF910895DC0101C06D93415023 |
:101420005040E0F70895991B79E004C0991F961782 |
:1014300008F0961B881F7A95C9F780950895AA1B16 |
:10144000BB1B51E107C0AA1FBB1FA617B70710F0AF |
:10145000A61BB70B881F991F5A95A9F780959095E1 |
:10146000BC01CD010895A1E21A2EAA1BBB1BFD01F0 |
:101470000DC0AA1FBB1FEE1FFF1FA217B307E40773 |
:10148000F50720F0A21BB30BE40BF50B661F771FCB |
:10149000881F991F1A9469F76095709580959095AB |
:0A14A0009B01AC01BD01CF010895CE |
:1014AA000101FF01010A00016400009F03200000FE |
:00000001FF |
/tags/V0.35/Doku/_BL_Ctrl_History.txt |
---|
0,0 → 1,69 |
+++++++++++++++++++++++++++++++++++ |
Brushless-Control |
Holger Buss |
buss@Mikrocontroller.com |
+++++++++++++++++++++++++++++++++++ |
V0.21 13.01.2007 |
- Erste offizielle Version |
- Unterstützt I2C und PPM |
V0.23 |
- Bei niedrigen PWM-Werten, kam es am Motor zu einem "Knackgeräusch" (besonders in der 16kHz-Variante). |
- Manchmal reagierte der Regler nicht gleich auf das PPM-Einschalt-Signal, wenn der Regler länger auf 0% war |
- Die Kommutierungserkennung läuft jetzt im Interrupt |
- Komponenten zur Drehzahlregelung wieder entfernt, weil sie den Code unleserlich machten |
Kommt in einer späteren Version wahrscheinlich wieder rein |
V0.25 |
- Es wurden zu viele Kommutierungs-Interrupts ausgelöst |
V0.27 02.02.2007 |
- X3D-Protokoll implementiert (für eine Sonderversion des X3D mit serieller Ausgabe) |
V0.31 22.2.2007 |
- Das I2C-Bus Protokoll wurde geändert: |
Jeder Motor wird jetzt mit einem eigenen Datensatz angesprochen |
Aus den Motorreglern kann jetzt Strom und MaxPWM ausgelesen werden |
- Es hatte sich ein Fehler in der Umrechnung des seriellen Wertes (X-3D) eingeschlichen; das ist hier behoben |
Mittels eines PC-Programms (SimTxData.exe) kann das X-3D-Protokoll simuliert und so die Motoren angefahren werden |
V0.32 22.8.2007 - IB |
- Serielle Empfangsroutine eingefügt |
es wird das Resetkommando für ein Bootloader-Update ausgeführt |
- Timerabfragen korrigiert (Wiederanlauf) |
- Versionsausgabe beim Start |
- Screenshot für PonyProg aktualisert (jetzt mit 2,7V Brownout) |
- Adress-Jumper auf BL-Ctrl-Platine V1.1 wird ausgewertet (#define MOTORADRESSE dann auf 0) ! |
- Ausgabe der aktuellen Adresse (seriell) |
V0.33 18.9.2007 - HB |
- Zeitverzögerung bei Lesen der Adresse (für BL-Ctrl V1.1) |
V0.34 27.09.2007 - HB |
- Endstufentest mit Tonfolge implementiert |
Nach dem Start kommt eine Tonfolge, bei der der Regler seine Endstufe testet. |
Im Falle eines Fehlers, werden Buchstaben ausgegeben, die einen Hinweis auf den Fehlerhaften MosFet geben. |
Falls mehrere Buchstaben auftreten, ist der erste ausschlaggebend. |
Falls das Piepen ausbleibt, handelt es sich um einen Überstrom durch Kurzschluss oder dauerhaft eingeschalteten FET. |
Falls der Motor nach der Testprozedur öfter piept und dabei die rote LED blinkt, schaltet der entsprechende Mosfet nicht durch. |
Dann kann man am Blinken (und Buchstaben) den Fehler erkennen. |
Dabei ist: A=A+ (1) B=B+ (2) C=C+ (3) a=A- (4) b=B- (5) c=C- (6) (in Klammern der Blinkcode) |
V0.34 30.09.2007 - HB |
Endstufentest erweitert. |
Die Fehlercodes sind: |
1: Kurzschluss Phase A (gegen B) |
2: Kurzschluss Phase B (gegen A) |
3: Kurzschluss Phase C (gegen B) |
4: Mosfet NA- schaltet nicht ab |
5: Mosfet NB- schaltet nicht ab |
6: Mosfet NC- schaltet nicht ab |
7: Kurzschluss Phase C (gegen A) |
A: NA+ schaltet nicht ein |
B: NB+ schaltet nicht ein |
C: NC+ schaltet nicht ein |
a: NA- schaltet nicht ein |
b: NB- schaltet nicht ein |
c: NC- schaltet nicht ein |
/tags/V0.35/Doku/_Files.txt |
---|
0,0 → 1,19 |
Dateien: |
-------- |
BrushLess-Ctrl_V0_3xx_for_BL-Ctrl_V1_1.hex --> Hexfile für BL-Ctrl V1.1 |
BootLoader_MEGA8_8MHZ_Vx_y.hex --> Bootloader für BL-Ctrl (Fusebits beachten !) |
BrushLess-Ctrl_ADR_Vx_xx.hex --> Software für ADR=Motorposition(1 bis 4) |
BrushLess-Ctrl_ADR_Vx_xx_10A.hex --> Software für ADR=Motorposition(1 bis 4) 10A-Stromgrenze |
Testprogramme (Achtung: Motor läuft an!) |
----------------------------------------- |
Test_Manuell_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft ungeregelt mit fester Frequenz |
Test_Schub_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft mit unterschiedlichen Leistungen |
Test_Sollwert_Fix_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft fix mit 7,8% PWM |
Sonstiges: |
---------- |
Fuses_Mega8_8MHZ_*.gif --> Fusebits von Ponyprog (mit und ohne Bootloader) |
/tags/V0.35/PPM_Decode.c |
---|
0,0 → 1,76 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned int PPM_Signal = 0; |
volatile unsigned char Timer1Overflow = 0; |
volatile unsigned char PPM_Timeout = 0, anz_ppm_werte = 0; // Ungültig, wenn Null |
//############################################################################ |
// |
void InitPPM(void) |
//############################################################################ |
{ |
TCCR1B |= (1<<ICES1)|(1<<ICNC1); |
ICP_POS_FLANKE; |
ICP_INT_ENABLE; |
TIMER1_INT_ENABLE; |
} |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW1) |
//############################################################################ |
{ |
Timer1Overflow++; |
} |
//############################################################################ |
// |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int tim_alt; |
static unsigned int ppm; |
if(TCCR1B & (1<<ICES1)) // Positive Flanke |
{ |
Timer1Overflow = 0; |
tim_alt = ICR1; |
ICP_NEG_FLANKE; |
PPM_Timeout = 100; |
} |
else // Negative Flanke |
{ |
ICP_POS_FLANKE; |
#ifdef _32KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 32; |
#endif |
#ifdef _16KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 32; |
#endif |
if(ppm < 280) ppm = 280; |
ppm -= 280; |
if(PPM_Signal < ppm) PPM_Signal++; |
else if(PPM_Signal > ppm) PPM_Signal--; |
if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern |
PPM_Signal = ppm; |
if(anz_ppm_werte < 255) anz_ppm_werte++; |
ZeitZumAdWandeln = 1; |
} |
} |
//############################################################################ |
// |
SIGNAL(SIG_INTERRUPT0) |
//############################################################################ |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
} |
/tags/V0.35/PPM_Decode.h |
---|
0,0 → 1,27 |
/*############################################################################ |
############################################################################*/ |
extern volatile unsigned int PPM_Signal; |
extern volatile unsigned char PPM_Timeout, anz_ppm_werte; |
void InitPPM(void); |
#define INT0_ENABLE GIMSK |= 0x40 |
#define INT0_DISABLE GIMSK &= ~0x40 |
#define TIM0_START TIMSK |= 0x01 |
#define TIM0_STOPP TIMSK &= ~0x01 |
#define ICP_INT_ENABLE TIMSK |= 0x20 |
#define ICP_INT_DISABLE TIMSK &= ~0x20 |
#define TIMER1_INT_ENABLE TIMSK |= 0x04 |
#define TIMER1_INT_DISABLE TIMSK &= ~0x04 |
#define TIMER2_INT_ENABLE TIMSK |= 0x40 |
#define TIMER2_INT_DISABLE TIMSK &= ~0x40 |
#define INT0_POS_FLANKE MCUCR |= 0x01 |
#define INT0_ANY_FLANKE MCUCR |= 0x01 |
#define INT0_NEG_FLANKE MCUCR &= ~0x01 |
#define CLR_INT0_FLAG GIFR &= ~0x40 |
#define INIT_INT0_FLANKE MCUCR &= ~0x03; MCUCR |= 0x02; |
#define TIMER0_PRESCALER TCCR0 |
#define ICP_POS_FLANKE TCCR1B |= (1<<ICES1) |
#define ICP_NEG_FLANKE TCCR1B &= ~(1<<ICES1) |
/tags/V0.35/analog.c |
---|
0,0 → 1,78 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
//############################################################################ |
//Init ADC |
void ADC_Init(void) |
//############################################################################ |
{ |
ADCSRA = 0xA6; // Free Run & 1MHZ |
ADMUX = 7; // Kanal 7 |
ADCSRA |= 0x40; // Start |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void AdConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = 0x06; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = 0x06; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
i = ADCW * 4; |
if(i > 200) i = 200; |
Strom = (i + Strom * 7) / 8; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
//############################################################################ |
//Strom Analogwerte lesen |
unsigned int MessAD(unsigned char channel) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = channel; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = channel; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
return(ADCW); |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void FastADConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
i = MessAD(6) * 4; |
// i = ADCW * 4; |
if(i > 200) i = 200; |
Strom = i;//(i + Strom * 1) / 2; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
/tags/V0.35/analog.h |
---|
0,0 → 1,6 |
extern void ADC_Init(void); |
extern void GetAnalogWerte(void); |
extern void AdConvert(void); |
extern void FastADConvert(void); |
/tags/V0.35/avr.mak |
---|
0,0 → 1,129 |
# TASKING EDE (Windows based integrated Embedded Development Environment) |
# |
# This makefile has been generated by TASKING EDE |
# |
# Toolchain: TASKING C for C166/ST10 v6.0 r4 |
# |
BINDIR = c:\c166\bin |
INCDIR = c:\c166\include |
LIBDIR = c:\c166\lib |
M166INC = c:\c166\include |
export M166INC |
CC166BIN = c:\c166\bin |
export CC166BIN |
PROJ = avr |
PROJDIR = c:\winavr\projects\flug\bl_mc_0_14 |
PRODDIR = c:\c166 |
OUTDIR = |
OPT_CC = -Ic:\c166\include -xmifp -Ms -FFSC -Ot -OB -OE -zautobitastruct-4 -zautobita-0 -zswitch_tabmem_default -s -wstrict -g -zvolatile_union -A1 -O1 |
OPT_MPP = DEF(_CPU,167) DEF(_EXT,1) DEF(__XPEN,0) DEF(__WRCFG,0) DEF(__CLKEN,0) DEF(__BYTDIS,0) DEF(__ROMEN,0) DEF(__RDYEN0,0) DEF(__SGTDIS,0) DEF(__STKSZ,0) DEF(__MCTC,1) DEF(__RWDC0,0) DEF(__MTTC0,0) DEF(__ALECTL0,0) DEF(__BUSACT0,1) DEF(__RDYEN0,0) DEF(__CSREN0,0) DEF(__CSWEN0,0) DEF(__BUSACT1,0) DEF(__BUSACT2,0) DEF(__BUSACT3,0) DEF(__BUSACT4,0) DEF(EVA,1) DEF(EX_AB,0) DEF(FLOAT,1) DEF(BIT_INIT,0) DEF(MODEL,SMALL) DEF(_USRSTACK,0) DEF(_SINGLE_FP,0) WA(1) |
OPT_AS = PL(60) PW(132) TA(8) WA(1) CHECKCPU16 CHECKBUS18 EX NOM166 SN(reg167.def) |
OPT_LC = _avr.ilo -cf -Ms -xmifp |
OPT_XVW = --single_instance -tcfg sim167.cfg -i -a 100 -b 200 -c 32 -s 26 |
all : "$(PROJ).abs" |
"uart.src" : "uart.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"uart.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "uart.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"uart.obj" : "uart.src" |
"c:\c166\bin\a166.exe" "uart.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"analog.src" : "analog.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"analog.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "analog.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"analog.obj" : "analog.src" |
"c:\c166\bin\a166.exe" "analog.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"interrupt4.src" : "interrupt4.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"interrupt4.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "interrupt4.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"interrupt4.obj" : "interrupt4.src" |
"c:\c166\bin\a166.exe" "interrupt4.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"main.src" : "main.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"main.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "main.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"main.obj" : "main.src" |
"c:\c166\bin\a166.exe" "main.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"ppm_decode.src" : "ppm_decode.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"ppm_decode.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "ppm_decode.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"ppm_decode.obj" : "ppm_decode.src" |
"c:\c166\bin\a166.exe" "ppm_decode.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"printf_p.src" : "printf_p.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"printf_p.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "printf_p.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"printf_p.obj" : "printf_p.src" |
"c:\c166\bin\a166.exe" "printf_p.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"timer0.src" : "timer0.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"timer0.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "timer0.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"timer0.obj" : "timer0.src" |
"c:\c166\bin\a166.exe" "timer0.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"twislave.src" : "twislave.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"twislave.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "twislave.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"twislave.obj" : "twislave.src" |
"c:\c166\bin\a166.exe" "twislave.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"$(PROJ).out" : "uart.obj" "analog.obj" "interrupt4.obj" "main.obj" "ppm_decode.obj" |
"$(PROJ).out" : "printf_p.obj" "timer0.obj" "twislave.obj" "_avr.ilo" |
"c:\c166\bin\cc166.exe" -o $@ -f <<EOF |
${separate "\n" $(match .obj $!) $(match .lno $!) $(match .lib $!) $(OPT_LC)} |
EOF |
"$(PROJ).abs" : "$(PROJ).out" |
"c:\c166\bin\ieee166.exe" $! $@ |
# Copyright (c) 2001 Altium, Ltd. |
# Serial: 979910-094 |
# EDE Version: 2.7 r5 |
/tags/V0.35/avr.opm |
---|
0,0 → 1,4 |
-G "C:\WinAVR\Projects\Flug\BL_MC_0_14\" |
-err "avr.err" |
-r |
-f "avr.mak" |
/tags/V0.35/avr_ctrl.psp |
---|
0,0 → 1,18 |
;Codewright Project Space File (do not remove or modify this line) |
[State] |
StateWindowFrame=10,18,939,1018,0x43097fca |
_StateHistory=PROJECTS,'..\Flight-Ctrl_V0_05\AVR.pjt','.\avr.pjt' |
_RestoreProject='.\avr.pjt' |
ProjSpaceFlags=0x00000000, 1 |
ProjViewSetShow=Abcccccbcccccc |
[Project] |
ConfigSetUserWorkspace='' |
ConfigSetUserWorkspaceParser='' |
ConfigSetUserWorkspaceTimeStamp=0 |
ConfigSetUserWorkspaceAutoSync=0 |
[Project.".\avr.pjt"] |
[Project."..\Flight-Ctrl_V0_05\AVR.pjt"] |
/tags/V0.35/main.c |
---|
0,0 → 1,673 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
/############################################################################*/ |
#include "main.h" |
unsigned int PWM = 0; |
unsigned int Strom = 0; //ca. in 0,1A |
unsigned char Strom_max = 0; |
unsigned char Mittelstrom = 0; |
unsigned int Drehzahl = 0; // in 100UPM 60 = 6000 |
unsigned int KommutierDelay = 10; |
unsigned int I2C_Timeout = 0; |
unsigned int SIO_Timeout = 0; |
unsigned int SollDrehzahl = 0; |
unsigned int IstDrehzahl = 0; |
unsigned int DrehZahlTabelle[256];//vorberechnete Werte zur Drehzahlerfassung |
unsigned char ZeitFuerBerechnungen = 1; |
unsigned char MotorAnwerfen = 0; |
unsigned char MotorGestoppt = 1; |
unsigned char MaxPWM = MAX_PWM; |
unsigned int CntKommutierungen = 0; |
unsigned int SIO_Drehzahl = 0; |
unsigned char ZeitZumAdWandeln = 1; |
unsigned char MotorAdresse = 1; |
unsigned char PPM_Betrieb = 1; |
//############################################################################ |
// |
void SetPWM(void) |
//############################################################################ |
{ |
unsigned char tmp_pwm; |
tmp_pwm = PWM; |
if(tmp_pwm > MaxPWM) // Strombegrenzung |
{ |
tmp_pwm = MaxPWM; |
PORTC |= ROT; |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
PORTC |= ROT; |
Strom--; |
} |
else |
{ |
#ifdef _32KHZ |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
#ifdef _16KHZ |
//OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
} |
} |
//############################################################################ |
// |
void PWM_Init(void) |
//############################################################################ |
{ |
PWM_OFF; |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
/* TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
*/ |
} |
//############################################################################ |
// |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
while((TCNT0 - dauer) & 0x80); |
} |
//############################################################################ |
// |
void Anwerfen(unsigned char pwm) |
//############################################################################ |
{ |
unsigned long timer = 300,i; |
DISABLE_SENSE_INT; |
PWM = 5; |
SetPWM(); |
Manuell(); |
Delay_ms(200); |
PWM = pwm; |
while(1) |
{ |
for(i=0;i<timer; i++) |
{ |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
Wait(100); // warten |
} |
timer-= timer/15+1; |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return; } |
Manuell(); |
Phase++; |
Phase %= 6; |
AdConvert(); |
PWM = pwm; |
SetPWM(); |
if(SENSE) |
{ |
PORTD ^= GRUEN; |
} |
} |
} |
/* |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
*/ |
void RotBlink(unsigned char anz) |
{ |
sei(); // Interrupts ein |
while(anz--) |
{ |
PORTC |= ROT; |
Delay_ms(300); |
PORTC &= ~ROT; |
Delay_ms(300); |
} |
Delay_ms(1000); |
} |
#define TEST_STROMGRENZE 90 |
unsigned char DelayM(unsigned int timer) |
{ |
while(timer--) |
{ |
FastADConvert(); |
if(Strom > TEST_STROMGRENZE) |
{ |
FETS_OFF; |
return(1); |
} |
} |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
{ |
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
return(0); |
} |
void ShowSense(void) |
{ |
if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
#define HIGH_A_EIN PORTB |= 0x08 |
#define HIGH_B_EIN PORTB |= 0x04 |
#define HIGH_C_EIN PORTB |= 0x02 |
#define LOW_A_EIN PORTD |= 0x08 |
#define LOW_B_EIN PORTD |= 0x10 |
#define LOW_C_EIN PORTD |= 0x20 |
void MotorTon(void) |
//############################################################################ |
{ |
unsigned char ADR_TAB[5] = {0,0,2,1,3}; |
unsigned int timer = 300,i; |
unsigned int t = 0; |
unsigned char MosfetKurzschluss = 0, MosfetOkay = 0,anz = 0; |
PORTC &= ~ROT; |
Delay_ms(300 * ADR_TAB[MotorAdresse]); |
DISABLE_SENSE_INT; |
cli();//Globale Interrupts Ausschalten |
uart_putchar('\n'); |
STEUER_OFF; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Strom = 0; |
LOW_B_EIN; |
HIGH_A_EIN; |
if(DelayM(3)) |
{ |
anz = 1; |
uart_putchar('1'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_A_EIN; |
HIGH_B_EIN; |
if(DelayM(3)) |
{ |
anz = 2; |
uart_putchar('2'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_B_EIN; // Low C ein |
HIGH_C_EIN; // High B ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('3'); |
} |
FETS_OFF; |
Delay(1000); |
LOW_A_EIN; // Low A ein; und A gegen C |
HIGH_C_EIN; // High C ein |
if(DelayM(3)) |
{ |
anz = 3; |
MosfetKurzschluss = 0x01; |
uart_putchar('7'); |
} |
FETS_OFF; |
DelayM(10000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ LOW-Mosfets auf Schalten und Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_A_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_A_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > 40) {anz = 4; uart_putchar('4'); break;} |
Delay(5); |
} |
Delay(10000); |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_B_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_B_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > 40) {anz = 5; uart_putchar('5'); break;} |
Delay(5); |
} |
Strom = 0; |
Delay(10000); |
for(i=0;i<t;i++) |
{ |
LOW_C_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_C_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > 40) {anz = 6; uart_putchar('6'); break;} |
Delay(5); |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_A; |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
LOW_C_EIN; // Low C ein |
Strom = 0; |
#define TONDAUER 40000 |
#define SOUND_E 2 |
#define SOUND1_A 300 |
#define SOUND2_A 330 |
#define SOUND3_A 360 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_A_EIN; // Test A |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
FETS_OFF; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Low-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_B; |
LOW_A_EIN; // Low A ein |
#define SOUND2_A 500 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
//++++++++++++++++++++++++++++++++++++ |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
sei();//Globale Interrupts Einschalten |
// Delay_ms(250 * MotorAdresse); |
/* |
LOW_A_EIN; // Low B ein |
#define SOUND8_A 650 |
for(i=0; i<(TONDAUER / SOUND8_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
PORTB = 0; |
Delay(SOUND8_A); |
} |
*/ |
if(!(MosfetOkay & 0x01)) { anz = 1; uart_putchar('A'); } else |
if(!(MosfetOkay & 0x02)) { anz = 2; uart_putchar('B'); } else |
if(!(MosfetOkay & 0x04)) { anz = 3; uart_putchar('C'); } else |
if(!(MosfetOkay & 0x08)) { anz = 4; uart_putchar('a'); } else |
if(!(MosfetOkay & 0x10)) { anz = 5; uart_putchar('b'); } else |
if(!(MosfetOkay & 0x20)) { anz = 6; uart_putchar('c'); } |
Delay_ms(300 * (4-ADR_TAB[MotorAdresse])); |
if(MosfetOkay != 0x3f) Delay_ms(1000); |
RotBlink(anz); |
uart_putchar('.'); |
} |
//############################################################################ |
// |
unsigned char SollwertErmittlung(void) |
//############################################################################ |
{ |
static unsigned int sollwert = 0; |
unsigned int ppm; |
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
PPM_Betrieb = 0; |
ICP_INT_DISABLE; |
PORTC &= ~ROT; |
} |
else |
if(anz_ppm_werte > 20) // es gibt gültige PPM-Daten |
{ |
PPM_Betrieb = 1; |
ppm = PPM_Signal; |
if(ppm > 300) ppm = 0; // ungültiges Signal |
if(ppm > 200) ppm = 200; |
if(ppm <= MIN_PPM) sollwert = 0; |
else |
{ |
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM); |
} |
PORTC &= ~ROT; |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
PORTC |= ROT; |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
PPM_Betrieb = 0; |
PORTC &= ~ROT; |
ICP_INT_DISABLE; |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
return(sollwert); |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
char altPhase = 0; |
int test = 0; |
unsigned int MinUpmPulse,Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
DDRC = 0x08; |
PORTC = 0x08; |
DDRD = 0xBA; |
PORTD = 0x00; |
DDRB = 0x0E; |
PORTB = 0x31; |
#if (MOTORADRESSE == 0) |
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl |
for(test=0;test<500;test++); |
if (PINB & ADR1) |
{ |
if (PINB & ADR2) MotorAdresse = 1; |
else MotorAdresse = 2; |
} |
else |
{ |
if (PINB & ADR2) MotorAdresse = 3; |
else MotorAdresse = 4; |
} |
#else |
MotorAdresse = MOTORADRESSE; |
#endif |
UART_Init(); |
Timer0_Init(); |
sei();//Globale Interrupts Einschalten |
// Am Blinken erkennt man die richtige Motoradresse |
/* |
for(test=0;test<5;test++) |
{ |
if(test == MotorAdresse) PORTD |= GRUEN; |
Delay_ms(150); |
PORTD &= ~GRUEN; |
Delay_ms(250); |
} |
Delay_ms(500); |
*/ |
// UART_Init(); // war doppelt |
PWM_Init(); |
InitIC2_Slave(0x50); |
InitPPM(); |
Blink = SetDelay(101); |
Blink2 = SetDelay(102); |
MinUpmPulse = SetDelay(103); |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)) |
{ |
if(SollwertErmittlung()) break; |
} |
; |
PORTD |= GRUEN; |
PWM = 0; |
SetPWM(); |
SFIOR = 0x08; // Analog Comperator ein |
ADMUX = 1; |
MinUpmPulse = SetDelay(10); |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
if(!SollwertErmittlung()) MotorTon(); |
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung |
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder |
while (1) |
{ |
//ShowSense(); |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt |
{ |
MotorGestoppt = 0; |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
MinUpmPulse = SetDelay(50); // Timeout, falls ein Motor stehen bleibt |
altPhase = Phase; |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!PWM) // Sollwert == 0 |
{ |
MotorAnwerfen = 0; // kein Startversuch |
ZeitFuerBerechnungen = 0; |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(MotorGestopptTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
STEUER_OFF; |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
MotorGestopptTimer = SetDelay(1500); |
} |
if(MotorGestoppt && !TEST_SCHUB) PWM = 0; |
SetPWM(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
{ |
if(MotorGestoppt) PORTD |= GRUEN; //else PORTD &= ~GRUEN; |
if(SIO_DEBUG) |
{ |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
} |
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung |
if(CheckDelay(MittelstromTimer)) |
{ |
MittelstromTimer = SetDelay(50); // alle 50ms |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
else if(Mittelstrom > Strom) Mittelstrom--; |
if(Mittelstrom > LIMIT_STROM)// Strom am Limit? |
{ |
MaxPWM--;// dann die Maximale PWM herunterfahren |
PORTC |= ROT; |
} |
else |
{ |
if(MaxPWM < MAX_PWM) MaxPWM++; |
} |
} |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
{ |
DrehzahlMessTimer = SetDelay(10); |
SIO_Drehzahl = (6 * CntKommutierungen) / (POLANZAHL / 2); |
CntKommutierungen = 0; |
if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
} |
if(CheckDelay(TestschubTimer)) |
{ |
TestschubTimer = SetDelay(1500); |
if(TEST_SCHUB) |
{ |
switch(test) |
{ |
case 0: PWM = 50; test++; break; |
case 1: PWM = 130; test++; break; |
case 2: PWM = 60; test++; break; |
case 3: PWM = 140; test++; break; |
case 4: PWM = 150; test = 0; break; |
default: test = 0; |
} |
} |
} |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
{ |
MotorGestoppt = 1; |
DISABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
if(MotorAnwerfen) |
{ |
PORTC &= ~ROT; |
MotorAnwerfen = 0; |
Anwerfen(10); |
PORTD |= GRUEN; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(20); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 15; |
SetPWM(); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)); // kurz Durchstarten |
// Drehzahlmessung wieder aufsetzen |
DrehzahlMessTimer = SetDelay(50); |
altPhase = 7; |
} |
} |
} // ZeitFuerBerechnungen |
} // while(1) - Hauptschleife |
} |
/tags/V0.35/main.elf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.35/main.h |
---|
0,0 → 1,138 |
#ifndef _MAIN_H |
#define _MAIN_H |
#define MOTORADRESSE 0 // Adresse (1-4) 0 = Motoradresse über Lötjumper auf BL-Ctrl V1.1 |
#define MANUELL_PWM 0 // zur manuellen Vorgabe der PWM Werte: 0-255 |
#define TEST_MANUELL 0 // zum Testen der Hardware ohne Kommutierungsdetektion Werte: 0-255 (PWM) |
#define TEST_SCHUB 0 // Erzeugt ein Schubmuster Werte: 0 = normal 1 = Test |
#define POLANZAHL 12 // Anzahl der Pole (Magnete) Wird nur zur Drehzahlausgabe über Debug gebraucht |
#define MAX_PWM 255 |
#define MIN_PWM 3 |
#define MIN_PPM 10 // ab hier (PPM-Signal) schaltet der Regler erst ein |
#define FILTER_PPM 7 // wie stark soll das PPM-Signal gefiltert werden (Werte: 0-30)? |
#define SIO_DEBUG 0 // Testwertausgaben auf der seriellen Schnittstelle |
#define X3D_SIO 0 // serielles Protokoll des X3D (38400Bd) Achtung: dann muss SIO_DEBUG = 0 sein |
#define _16KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define _32KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
#define FDD6637_IRLR7843 1 // bessere MosFet bestückt? bewirkt höhere Stromgrenzen |
#ifdef _16KHZ |
#ifdef FDD6637_IRLR7843 // bessere Fets = mehr Strom zulassen |
#define MAX_STROM 200 // ab ca. 20A PWM ausschalten |
#define LIMIT_STROM 120 // ab ca. 12A PWM begrenzen |
#else |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 65 // ab ca. 6,5A PWM begrenzen |
#endif |
#endif |
#ifdef _32KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 50 // ab ca. 5,0A PWM begrenzen |
#endif |
#define SYSCLK 8000000L //Quarz Frequenz in Hz |
//Robbe Roxxy 2824-34 mit Todd 10x4,5 bei 16kHz |
//PWM Strom Schub |
//10 0,18A 21g |
//20 0,30A 38g |
//30 0,40A 49g |
//40 0,54A 60g |
//50 0,70A 83g |
//60 0,95A 102g |
//70 1,25A 128g |
//80 1,50A 151g |
//90 1,83A 175g |
//100 2,25A 206g |
//110 2,66A 228g |
//120 3,10A 257g |
//130 3,55A 278g |
//140 4,00A 305g |
//150 4,50A 330g |
//160 5,30A 355g |
//170 5,85A 387g |
//180 6,40A 400g |
//190 7,10A 425g |
//200 7,60A 460g |
//0,5A 63g 14% |
//1,0A 110g 24% |
//1,5A 170g 32% |
//2,0A 195g 37% |
//2,5A 230g 41% |
//3,0A 260g 46% |
//3,5A 290g 50% |
//4,0A 310g 53% |
//4,5A 340g 58% |
//5,0A 360g 63% |
//5,5A 380g 67% |
//6,0A 400g 68% |
//6,5A 420g 70% |
//7,0A 450g 75% |
//7,5A 460g 78% |
//8,0A 475g 82% |
//9,0A 550g 86% |
//11 A 600g 100% |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "twislave.h" |
#include "old_macros.h" |
#include "analog.h" |
#include "uart.h" |
#include "timer0.h" |
#include "BLMC.h" |
#include "PPM_Decode.h" |
extern unsigned int I2C_Timeout; |
extern unsigned int SIO_Timeout; |
extern unsigned int PWM; |
extern unsigned int Strom; //ca. in 0,1A |
extern unsigned char Strom_max; |
extern unsigned char Mittelstrom; |
extern unsigned int CntKommutierungen; |
extern unsigned char MotorAnwerfen; |
extern unsigned char MotorGestoppt; |
extern unsigned char ZeitZumAdWandeln; |
extern unsigned char MaxPWM; |
extern unsigned char MotorAdresse; |
extern unsigned char PPM_Betrieb; |
#define ROT 0x08 |
#define GRUEN 0x80 |
#define ADR1 0x40 // für Motoradresswahl |
#define ADR2 0x80 // |
#if defined(__AVR_ATmega8__) |
# define OC1 PB1 |
# define DDROC DDRB |
# define OCR OCR1A |
# define PWM10 WGM10 |
# define PWM11 WGM11 |
#endif |
#endif //_MAIN_H |
/tags/V0.35/main.lss |
---|
0,0 → 1,4534 |
main.elf: file format elf32-avr |
Sections: |
Idx Name Size VMA LMA File off Algn |
0 .text 00001bec 00000000 00000000 00000094 2**0 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
1 .data 00000024 00800060 00001bec 00001c80 2**0 |
CONTENTS, ALLOC, LOAD, DATA |
2 .bss 00000156 00800084 00800084 00001ca4 2**0 |
ALLOC |
3 .noinit 00000000 008001da 008001da 00001ca4 2**0 |
CONTENTS |
4 .eeprom 00000000 00810000 00810000 00001ca4 2**0 |
CONTENTS |
5 .stab 0000036c 00000000 00000000 00001ca4 2**2 |
CONTENTS, READONLY, DEBUGGING |
6 .stabstr 00000084 00000000 00000000 00002010 2**0 |
CONTENTS, READONLY, DEBUGGING |
7 .debug_aranges 000000b4 00000000 00000000 00002094 2**0 |
CONTENTS, READONLY, DEBUGGING |
8 .debug_pubnames 000006f5 00000000 00000000 00002148 2**0 |
CONTENTS, READONLY, DEBUGGING |
9 .debug_info 00001a41 00000000 00000000 0000283d 2**0 |
CONTENTS, READONLY, DEBUGGING |
10 .debug_abbrev 00000774 00000000 00000000 0000427e 2**0 |
CONTENTS, READONLY, DEBUGGING |
11 .debug_line 0000169d 00000000 00000000 000049f2 2**0 |
CONTENTS, READONLY, DEBUGGING |
12 .debug_str 00000874 00000000 00000000 0000608f 2**0 |
CONTENTS, READONLY, DEBUGGING |
Disassembly of section .text: |
00000000 <__vectors>: |
0: 0c 94 85 00 jmp 0x10a <__init> |
4: 0c 94 7e 0b jmp 0x16fc <__vector_1> |
8: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
10: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
14: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
18: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
1c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
20: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
24: 0c 94 67 09 jmp 0x12ce <__vector_9> |
28: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
2c: 0c 94 96 0b jmp 0x172c <__vector_11> |
30: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
34: 0c 94 18 02 jmp 0x430 <__vector_13> |
38: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
3c: 0c 94 e3 01 jmp 0x3c6 <__vector_15> |
40: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
44: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
48: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
4c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
50: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
00000054 <__ctors_end>: |
54: 20 2d mov r18, r0 |
56: 2d 20 and r2, r13 |
58: 52 65 ori r21, 0x52 ; 82 |
5a: 6d 6f ori r22, 0xFD ; 253 |
5c: 74 65 ori r23, 0x54 ; 84 |
5e: 20 20 and r2, r0 |
60: 2d 2d mov r18, r13 |
62: 20 20 and r2, r0 |
64: 20 20 and r2, r0 |
66: 20 20 and r2, r0 |
... |
00000069 <__c.1>: |
69: 20 2d 2d 20 44 69 73 70 6c 61 79 20 2d 2d 20 20 -- Display -- |
79: 20 20 20 20 00 . |
0000007e <__c.2>: |
7e: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |
8e: 20 20 20 20 00 . |
00000093 <__c.3>: |
93: 20 20 77 77 77 2e 4d 69 63 72 6f 53 50 53 2e 63 www.MicroSPS.c |
a3: 6f 6d 20 20 00 om . |
000000a8 <__c.2>: |
a8: 25 73 00 %s. |
000000ab <__c.3>: |
ab: 25 73 00 %s. |
000000ae <__c.4>: |
ae: 25 73 00 %s. |
000000b1 <__c.5>: |
b1: 25 73 00 %s. |
000000b4 <__c.3>: |
b4: 56 65 72 62 69 6e 64 65 6e 20 6d 69 74 00 Verbinden mit. |
000000c2 <__c.4>: |
c2: 4d 69 63 72 6f 53 50 53 3a 25 32 69 20 00 MicroSPS:%2i . |
000000d0 <__c.5>: |
d0: 4d 61 78 20 41 64 72 65 73 73 65 00 Max Adresse. |
000000dc <__c.6>: |
dc: 25 32 69 20 00 %2i . |
000000e1 <__c.7>: |
e1: 43 68 65 63 6b 73 75 6d 00 Checksum. |
000000ea <__c.8>: |
ea: 45 72 72 6f 72 73 3a 25 35 69 20 00 Errors:%5i . |
000000f6 <__c.9>: |
f6: 44 69 73 70 6c 61 79 00 Display. |
000000fe <__c.10>: |
fe: 5a 65 69 6c 65 6e 3a 25 31 69 20 00 Zeilen:%1i . |
0000010a <__init>: |
10a: 11 24 eor r1, r1 |
10c: 1f be out 0x3f, r1 ; 63 |
10e: cf e5 ldi r28, 0x5F ; 95 |
110: d8 e0 ldi r29, 0x08 ; 8 |
112: de bf out 0x3e, r29 ; 62 |
114: cd bf out 0x3d, r28 ; 61 |
00000116 <__do_copy_data>: |
116: 10 e0 ldi r17, 0x00 ; 0 |
118: a0 e6 ldi r26, 0x60 ; 96 |
11a: b0 e0 ldi r27, 0x00 ; 0 |
11c: ec ee ldi r30, 0xEC ; 236 |
11e: fb e1 ldi r31, 0x1B ; 27 |
120: 02 c0 rjmp .+4 ; 0x126 <.do_copy_data_start> |
00000122 <.do_copy_data_loop>: |
122: 05 90 lpm r0, Z+ |
124: 0d 92 st X+, r0 |
00000126 <.do_copy_data_start>: |
126: a4 38 cpi r26, 0x84 ; 132 |
128: b1 07 cpc r27, r17 |
12a: d9 f7 brne .-10 ; 0x122 <.do_copy_data_loop> |
0000012c <__do_clear_bss>: |
12c: 11 e0 ldi r17, 0x01 ; 1 |
12e: a4 e8 ldi r26, 0x84 ; 132 |
130: b0 e0 ldi r27, 0x00 ; 0 |
132: 01 c0 rjmp .+2 ; 0x136 <.do_clear_bss_start> |
00000134 <.do_clear_bss_loop>: |
134: 1d 92 st X+, r1 |
00000136 <.do_clear_bss_start>: |
136: aa 3d cpi r26, 0xDA ; 218 |
138: b1 07 cpc r27, r17 |
13a: e1 f7 brne .-8 ; 0x134 <.do_clear_bss_loop> |
13c: 0c 94 e5 00 jmp 0x1ca <main> |
00000140 <__bad_interrupt>: |
140: 0c 94 00 00 jmp 0x0 <__vectors> |
00000144 <Sekundentakt_Init>: |
unsigned int IntervallDebug = 250, IntervallDisplay = 120; |
void Sekundentakt_Init(void) |
{ |
_SekTimer = SetDelay(1000); |
144: 88 ee ldi r24, 0xE8 ; 232 |
146: 93 e0 ldi r25, 0x03 ; 3 |
148: 0e 94 a8 09 call 0x1350 <SetDelay> |
14c: 90 93 91 00 sts 0x0091, r25 |
150: 80 93 90 00 sts 0x0090, r24 |
154: 08 95 ret |
00000156 <Sekundentakt>: |
} |
void Sekundentakt(void) |
{ |
if(CheckDelay(_SekTimer)) |
156: 80 91 90 00 lds r24, 0x0090 |
15a: 90 91 91 00 lds r25, 0x0091 |
15e: 0e 94 b1 09 call 0x1362 <CheckDelay> |
162: 88 23 and r24, r24 |
164: 31 f1 breq .+76 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
GetKeyboard(); |
166: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
_SekTimer += 1000; |
16a: 80 91 90 00 lds r24, 0x0090 |
16e: 90 91 91 00 lds r25, 0x0091 |
172: 88 51 subi r24, 0x18 ; 24 |
174: 9c 4f sbci r25, 0xFC ; 252 |
176: 90 93 91 00 sts 0x0091, r25 |
17a: 80 93 90 00 sts 0x0090, r24 |
if(!CntDatensaetzeProSekunde) UebertragungUnterbrochen = 1; else UebertragungUnterbrochen = 0; |
17e: 80 91 66 00 lds r24, 0x0066 |
182: 88 23 and r24, r24 |
184: 21 f4 brne .+8 ; 0x18e <Sekundentakt+0x38> |
186: 81 e0 ldi r24, 0x01 ; 1 |
188: 80 93 84 00 sts 0x0084, r24 |
18c: 02 c0 rjmp .+4 ; 0x192 <Sekundentakt+0x3c> |
18e: 10 92 84 00 sts 0x0084, r1 |
CntDatensaetzeProSekunde = 0; |
192: 10 92 66 00 sts 0x0066, r1 |
if(++Sekunde == 60) |
196: 80 91 8d 00 lds r24, 0x008D |
19a: 8f 5f subi r24, 0xFF ; 255 |
19c: 80 93 8d 00 sts 0x008D, r24 |
1a0: 8c 33 cpi r24, 0x3C ; 60 |
1a2: 39 f4 brne .+14 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
Sekunde = 0; |
1a4: 10 92 8d 00 sts 0x008D, r1 |
Minute++; |
1a8: 80 91 8c 00 lds r24, 0x008C |
1ac: 8f 5f subi r24, 0xFF ; 255 |
1ae: 80 93 8c 00 sts 0x008C, r24 |
1b2: 08 95 ret |
000001b4 <Init>: |
} |
} |
} |
void Init(void) |
{ |
VersionInfo.Hauptversion = 0; |
1b4: 10 92 c9 00 sts 0x00C9, r1 |
VersionInfo.Nebenversion = 99; |
1b8: 83 e6 ldi r24, 0x63 ; 99 |
1ba: 80 93 ca 00 sts 0x00CA, r24 |
VersionInfo.PCKompatibel = 1; |
1be: 81 e0 ldi r24, 0x01 ; 1 |
1c0: 80 93 cb 00 sts 0x00CB, r24 |
VersionInfo.Commercial = 0x00; |
1c4: 10 92 cc 00 sts 0x00CC, r1 |
1c8: 08 95 ret |
000001ca <main>: |
} |
#define MENU 0 |
#define REMOTE 1 |
//############################################################################ |
//Hauptprogramm |
void main (void) |
//############################################################################ |
{ |
1ca: ca e5 ldi r28, 0x5A ; 90 |
1cc: d8 e0 ldi r29, 0x08 ; 8 |
1ce: de bf out 0x3e, r29 ; 62 |
1d0: cd bf out 0x3d, r28 ; 61 |
char z,txt[]= {"Moin"},key,key_old = 255; |
1d2: de 01 movw r26, r28 |
1d4: 11 96 adiw r26, 0x01 ; 1 |
1d6: e7 e6 ldi r30, 0x67 ; 103 |
1d8: f0 e0 ldi r31, 0x00 ; 0 |
1da: 85 e0 ldi r24, 0x05 ; 5 |
1dc: 01 90 ld r0, Z+ |
1de: 0d 92 st X+, r0 |
1e0: 81 50 subi r24, 0x01 ; 1 |
1e2: e1 f7 brne .-8 ; 0x1dc <main+0x12> |
int test = 0; |
unsigned int DelayTast; |
unsigned int DelayDaten,DelayDisplay; |
unsigned char mode = REMOTE; |
1e4: 91 e0 ldi r25, 0x01 ; 1 |
1e6: b9 2e mov r11, r25 |
unsigned char neueDatenuebertragung = 1; |
UART_Init(); |
1e8: 0e 94 cc 04 call 0x998 <UART_Init> |
LCD_Init(); |
1ec: 0e 94 1f 06 call 0xc3e <LCD_Init> |
UART_Init(); |
1f0: 0e 94 cc 04 call 0x998 <UART_Init> |
Timer1_Init(); |
1f4: 0e 94 9e 09 call 0x133c <Timer1_Init> |
Keyboard_Init(); |
1f8: 0e 94 c9 09 call 0x1392 <Keyboard_Init> |
Sekundentakt_Init(); |
1fc: 0e 94 a2 00 call 0x144 <Sekundentakt_Init> |
InitIR(); |
200: 0e 94 67 0b call 0x16ce <InitIR> |
ADC_Init(); |
204: 0e 94 42 0c call 0x1884 <ADC_Init> |
Init(); |
208: 0e 94 da 00 call 0x1b4 <Init> |
sei ();//Globale Interrupts Einschalten |
20c: 78 94 sei |
DDRB = 0xff; |
20e: 8f ef ldi r24, 0xFF ; 255 |
210: 87 bb out 0x17, r24 ; 23 |
PORTB = 0x00; |
212: 18 ba out 0x18, r1 ; 24 |
LCD_Clear; |
214: 81 e0 ldi r24, 0x01 ; 1 |
216: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
21a: 0e 94 c9 05 call 0xb92 <_long_delay> |
/* while(1) |
*/ |
DelayTast = SetDelay(80); |
21e: 80 e5 ldi r24, 0x50 ; 80 |
220: 90 e0 ldi r25, 0x00 ; 0 |
222: 0e 94 a8 09 call 0x1350 <SetDelay> |
226: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
228: 88 ec ldi r24, 0xC8 ; 200 |
22a: 90 e0 ldi r25, 0x00 ; 0 |
22c: 0e 94 a8 09 call 0x1350 <SetDelay> |
230: 8c 01 movw r16, r24 |
DelayDisplay = SetDelay(300); |
232: 8c e2 ldi r24, 0x2C ; 44 |
234: 91 e0 ldi r25, 0x01 ; 1 |
236: 0e 94 a8 09 call 0x1350 <SetDelay> |
23a: 6c 01 movw r12, r24 |
ClearIntervalle(); |
23c: 0e 94 2e 05 call 0xa5c <ClearIntervalle> |
while (1) |
{ |
if(mode == MENU) |
240: bb 20 and r11, r11 |
242: 11 f5 brne .+68 ; 0x288 <main+0xbe> |
{ |
Delay_ms(10); |
244: 8a e0 ldi r24, 0x0A ; 10 |
246: 90 e0 ldi r25, 0x00 ; 0 |
248: 0e 94 bc 09 call 0x1378 <Delay_ms> |
key = GetKeyboard(); |
24c: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
Menu(key); |
250: 99 27 eor r25, r25 |
252: 0e 94 64 0a call 0x14c8 <Menu> |
if(_TASTE5) |
256: cb 9b sbis 0x19, 3 ; 25 |
258: f5 cf rjmp .-22 ; 0x244 <main+0x7a> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
25a: 8a e0 ldi r24, 0x0A ; 10 |
25c: 90 e0 ldi r25, 0x00 ; 0 |
25e: 0e 94 bc 09 call 0x1378 <Delay_ms> |
262: cb 99 sbic 0x19, 3 ; 25 |
264: fa cf rjmp .-12 ; 0x25a <main+0x90> |
mode = REMOTE; |
266: 81 e0 ldi r24, 0x01 ; 1 |
268: b8 2e mov r11, r24 |
DelayTast = SetDelay(100); |
26a: 84 e6 ldi r24, 0x64 ; 100 |
26c: 90 e0 ldi r25, 0x00 ; 0 |
26e: 0e 94 a8 09 call 0x1350 <SetDelay> |
272: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
274: 88 ec ldi r24, 0xC8 ; 200 |
276: 90 e0 ldi r25, 0x00 ; 0 |
278: 0e 94 a8 09 call 0x1350 <SetDelay> |
27c: 8c 01 movw r16, r24 |
LCD_Clear; |
27e: 8b 2d mov r24, r11 |
280: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
284: 0e 94 c9 05 call 0xb92 <_long_delay> |
} |
} |
else |
if(mode == REMOTE) |
288: 81 e0 ldi r24, 0x01 ; 1 |
28a: b8 16 cp r11, r24 |
28c: c9 f6 brne .-78 ; 0x240 <main+0x76> |
{ |
BearbeiteRxDaten(); |
28e: 0e 94 fe 03 call 0x7fc <BearbeiteRxDaten> |
if(CheckDelay(DelayDaten)) |
292: c8 01 movw r24, r16 |
294: 0e 94 b1 09 call 0x1362 <CheckDelay> |
298: 88 23 and r24, r24 |
29a: c9 f3 breq .-14 ; 0x28e <main+0xc4> |
{ |
Sekundentakt(); |
29c: 0e 94 ab 00 call 0x156 <Sekundentakt> |
DelayDaten = SetDelay(10); |
2a0: 8a e0 ldi r24, 0x0A ; 10 |
2a2: 90 e0 ldi r25, 0x00 ; 0 |
2a4: 0e 94 a8 09 call 0x1350 <SetDelay> |
2a8: 8c 01 movw r16, r24 |
if(CheckDelay(DelayDisplay)) |
2aa: c6 01 movw r24, r12 |
2ac: 0e 94 b1 09 call 0x1362 <CheckDelay> |
2b0: 88 23 and r24, r24 |
2b2: 39 f0 breq .+14 ; 0x2c2 <main+0xf8> |
{ |
DelayDisplay = SetDelay(300); |
2b4: 8c e2 ldi r24, 0x2C ; 44 |
2b6: 91 e0 ldi r25, 0x01 ; 1 |
2b8: 0e 94 a8 09 call 0x1350 <SetDelay> |
2bc: 6c 01 movw r12, r24 |
PollDisplay = 1; |
2be: b0 92 ed 00 sts 0x00ED, r11 |
} |
key = GetKeyboard2(); |
2c2: 0e 94 57 0a call 0x14ae <GetKeyboard2> |
DatenUebertragung(key); |
2c6: 99 27 eor r25, r25 |
2c8: 0e 94 51 05 call 0xaa2 <DatenUebertragung> |
if(UebertragungUnterbrochen) |
2cc: 80 91 84 00 lds r24, 0x0084 |
2d0: 88 23 and r24, r24 |
2d2: 81 f1 breq .+96 ; 0x334 <main+0x16a> |
{ |
//01234567890123456789 |
LCD_printfxy(0,0," -- Remote -- "); |
2d4: 60 e0 ldi r22, 0x00 ; 0 |
2d6: 86 2f mov r24, r22 |
2d8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2dc: 84 e5 ldi r24, 0x54 ; 84 |
2de: 90 e0 ldi r25, 0x00 ; 0 |
2e0: 9f 93 push r25 |
2e2: 8f 93 push r24 |
2e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1," -- Display -- "); |
2e8: 61 e0 ldi r22, 0x01 ; 1 |
2ea: 80 e0 ldi r24, 0x00 ; 0 |
2ec: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2f0: 0f 90 pop r0 |
2f2: 0f 90 pop r0 |
2f4: 89 e6 ldi r24, 0x69 ; 105 |
2f6: 90 e0 ldi r25, 0x00 ; 0 |
2f8: 9f 93 push r25 |
2fa: 8f 93 push r24 |
2fc: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,2," "); |
300: 62 e0 ldi r22, 0x02 ; 2 |
302: 80 e0 ldi r24, 0x00 ; 0 |
304: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
308: 0f 90 pop r0 |
30a: 0f 90 pop r0 |
30c: 8e e7 ldi r24, 0x7E ; 126 |
30e: 90 e0 ldi r25, 0x00 ; 0 |
310: 9f 93 push r25 |
312: 8f 93 push r24 |
314: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,3," www.MicroSPS.com "); |
318: 63 e0 ldi r22, 0x03 ; 3 |
31a: 80 e0 ldi r24, 0x00 ; 0 |
31c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
320: 0f 90 pop r0 |
322: 0f 90 pop r0 |
324: 83 e9 ldi r24, 0x93 ; 147 |
326: 90 e0 ldi r25, 0x00 ; 0 |
328: 9f 93 push r25 |
32a: 8f 93 push r24 |
32c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
330: 0f 90 pop r0 |
332: 0f 90 pop r0 |
} |
if(CheckDelay(DelayTast)) |
334: c7 01 movw r24, r14 |
336: 0e 94 b1 09 call 0x1362 <CheckDelay> |
33a: 88 23 and r24, r24 |
33c: 09 f4 brne .+2 ; 0x340 <main+0x176> |
33e: a7 cf rjmp .-178 ; 0x28e <main+0xc4> |
{ |
DelayTast = SetDelay(100); |
340: 84 e6 ldi r24, 0x64 ; 100 |
342: 90 e0 ldi r25, 0x00 ; 0 |
344: 0e 94 a8 09 call 0x1350 <SetDelay> |
348: 7c 01 movw r14, r24 |
if(_TASTE5) |
34a: cb 9b sbis 0x19, 3 ; 25 |
34c: 0c c0 rjmp .+24 ; 0x366 <main+0x19c> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
34e: 8a e0 ldi r24, 0x0A ; 10 |
350: 90 e0 ldi r25, 0x00 ; 0 |
352: 0e 94 bc 09 call 0x1378 <Delay_ms> |
356: cb 99 sbic 0x19, 3 ; 25 |
358: fa cf rjmp .-12 ; 0x34e <main+0x184> |
mode = MENU; |
35a: bb 24 eor r11, r11 |
LCD_Clear; |
35c: 81 e0 ldi r24, 0x01 ; 1 |
35e: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
362: 0e 94 c9 05 call 0xb92 <_long_delay> |
366: 80 91 be 00 lds r24, 0x00BE |
} |
// if(key & 0x10) DebugIn.Digital[0] |= 0x01; else DebugIn.Digital[0] &= ~0x01; |
if(PIND & 0x08) DebugIn.Digital[0] |= 0x02; else DebugIn.Digital[0] &= ~0x02; |
36a: 83 9b sbis 0x10, 3 ; 16 |
36c: 02 c0 rjmp .+4 ; 0x372 <main+0x1a8> |
36e: 82 60 ori r24, 0x02 ; 2 |
370: 01 c0 rjmp .+2 ; 0x374 <main+0x1aa> |
372: 8d 7f andi r24, 0xFD ; 253 |
374: 80 93 be 00 sts 0x00BE, r24 |
378: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x10) DebugIn.Digital[0] |= 0x04; else DebugIn.Digital[0] &= ~0x04; |
37c: 84 9b sbis 0x10, 4 ; 16 |
37e: 02 c0 rjmp .+4 ; 0x384 <main+0x1ba> |
380: 84 60 ori r24, 0x04 ; 4 |
382: 01 c0 rjmp .+2 ; 0x386 <main+0x1bc> |
384: 8b 7f andi r24, 0xFB ; 251 |
386: 80 93 be 00 sts 0x00BE, r24 |
38a: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x20) DebugIn.Digital[0] |= 0x08; else DebugIn.Digital[0] &= ~0x08; |
38e: 85 9b sbis 0x10, 5 ; 16 |
390: 02 c0 rjmp .+4 ; 0x396 <main+0x1cc> |
392: 88 60 ori r24, 0x08 ; 8 |
394: 01 c0 rjmp .+2 ; 0x398 <main+0x1ce> |
396: 87 7f andi r24, 0xF7 ; 247 |
398: 80 93 be 00 sts 0x00BE, r24 |
39c: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x40) DebugIn.Digital[0] |= 0x10; else DebugIn.Digital[0] &= ~0x10; |
3a0: 86 9b sbis 0x10, 6 ; 16 |
3a2: 02 c0 rjmp .+4 ; 0x3a8 <main+0x1de> |
3a4: 80 61 ori r24, 0x10 ; 16 |
3a6: 01 c0 rjmp .+2 ; 0x3aa <main+0x1e0> |
3a8: 8f 7e andi r24, 0xEF ; 239 |
3aa: 80 93 be 00 sts 0x00BE, r24 |
3ae: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x80) DebugIn.Digital[0] |= 0x20; else DebugIn.Digital[0] &= ~0x20; |
3b2: 87 9b sbis 0x10, 7 ; 16 |
3b4: 02 c0 rjmp .+4 ; 0x3ba <main+0x1f0> |
3b6: 80 62 ori r24, 0x20 ; 32 |
3b8: 01 c0 rjmp .+2 ; 0x3bc <main+0x1f2> |
3ba: 8f 7d andi r24, 0xDF ; 223 |
3bc: 80 93 be 00 sts 0x00BE, r24 |
GetAnalogWerte(); |
3c0: 0e 94 4e 0c call 0x189c <GetAnalogWerte> |
3c4: 3d cf rjmp .-390 ; 0x240 <main+0x76> |
000003c6 <__vector_15>: |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
3c6: 1f 92 push r1 |
3c8: 0f 92 push r0 |
3ca: 0f b6 in r0, 0x3f ; 63 |
3cc: 0f 92 push r0 |
3ce: 11 24 eor r1, r1 |
3d0: 8f 93 push r24 |
3d2: 9f 93 push r25 |
3d4: ef 93 push r30 |
3d6: ff 93 push r31 |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
3d8: 80 91 6e 00 lds r24, 0x006E |
3dc: 88 23 and r24, r24 |
3de: d9 f4 brne .+54 ; 0x416 <__vector_15+0x50> |
{ |
ptr++; // die [0] wurde schon gesendet |
3e0: 80 91 9d 00 lds r24, 0x009D |
3e4: 90 91 9e 00 lds r25, 0x009E |
3e8: 01 96 adiw r24, 0x01 ; 1 |
3ea: 90 93 9e 00 sts 0x009E, r25 |
3ee: 80 93 9d 00 sts 0x009D, r24 |
tmp_tx = SendeBuffer[ptr]; |
3f2: fc 01 movw r30, r24 |
3f4: e2 51 subi r30, 0x12 ; 18 |
3f6: ff 4f sbci r31, 0xFF ; 255 |
3f8: e0 81 ld r30, Z |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
3fa: ed 30 cpi r30, 0x0D ; 13 |
3fc: 19 f0 breq .+6 ; 0x404 <__vector_15+0x3e> |
3fe: 84 36 cpi r24, 0x64 ; 100 |
400: 91 05 cpc r25, r1 |
402: 39 f4 brne .+14 ; 0x412 <__vector_15+0x4c> |
{ |
ptr = 0; |
404: 10 92 9e 00 sts 0x009E, r1 |
408: 10 92 9d 00 sts 0x009D, r1 |
UebertragungAbgeschlossen = 1; |
40c: 81 e0 ldi r24, 0x01 ; 1 |
40e: 80 93 6e 00 sts 0x006E, r24 |
} |
UDR = tmp_tx; |
412: ec b9 out 0x0c, r30 ; 12 |
414: 04 c0 rjmp .+8 ; 0x41e <__vector_15+0x58> |
} |
else ptr = 0; |
416: 10 92 9e 00 sts 0x009E, r1 |
41a: 10 92 9d 00 sts 0x009D, r1 |
41e: ff 91 pop r31 |
420: ef 91 pop r30 |
422: 9f 91 pop r25 |
424: 8f 91 pop r24 |
426: 0f 90 pop r0 |
428: 0f be out 0x3f, r0 ; 63 |
42a: 0f 90 pop r0 |
42c: 1f 90 pop r1 |
42e: 18 95 reti |
00000430 <__vector_13>: |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
430: 1f 92 push r1 |
432: 0f 92 push r0 |
434: 0f b6 in r0, 0x3f ; 63 |
436: 0f 92 push r0 |
438: 11 24 eor r1, r1 |
43a: 2f 93 push r18 |
43c: 3f 93 push r19 |
43e: 4f 93 push r20 |
440: 5f 93 push r21 |
442: 8f 93 push r24 |
444: 9f 93 push r25 |
446: af 93 push r26 |
448: bf 93 push r27 |
44a: ef 93 push r30 |
44c: ff 93 push r31 |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
44e: 20 e0 ldi r18, 0x00 ; 0 |
SioTmp = UDR; |
450: 8c b1 in r24, 0x0c ; 12 |
452: 80 93 9c 00 sts 0x009C, r24 |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
456: 50 91 a3 00 lds r21, 0x00A3 |
45a: 54 36 cpi r21, 0x64 ; 100 |
45c: 10 f0 brcs .+4 ; 0x462 <__vector_13+0x32> |
45e: 20 93 a4 00 sts 0x00A4, r18 |
if(SioTmp == '\r' && UartState == 2) |
462: 80 91 9c 00 lds r24, 0x009C |
466: 8d 30 cpi r24, 0x0D ; 13 |
468: 09 f0 breq .+2 ; 0x46c <__vector_13+0x3c> |
46a: 5b c0 rjmp .+182 ; 0x522 <__vector_13+0xf2> |
46c: 80 91 a4 00 lds r24, 0x00A4 |
470: 82 30 cpi r24, 0x02 ; 2 |
472: 09 f0 breq .+2 ; 0x476 <__vector_13+0x46> |
474: 56 c0 rjmp .+172 ; 0x522 <__vector_13+0xf2> |
{ |
UartState = 0; |
476: 20 93 a4 00 sts 0x00A4, r18 |
crc -= RxdBuffer[buf_ptr-2]; |
47a: 85 2f mov r24, r21 |
47c: 99 27 eor r25, r25 |
47e: 8e 5a subi r24, 0xAE ; 174 |
480: 9e 4f sbci r25, 0xFE ; 254 |
482: fc 01 movw r30, r24 |
484: 32 97 sbiw r30, 0x02 ; 2 |
486: 40 81 ld r20, Z |
488: 20 91 9f 00 lds r18, 0x009F |
48c: 30 91 a0 00 lds r19, 0x00A0 |
490: 24 1b sub r18, r20 |
492: 31 09 sbc r19, r1 |
crc -= RxdBuffer[buf_ptr-1]; |
494: dc 01 movw r26, r24 |
496: 11 97 sbiw r26, 0x01 ; 1 |
498: 8c 91 ld r24, X |
49a: 28 1b sub r18, r24 |
49c: 31 09 sbc r19, r1 |
crc %= 4096; |
49e: c9 01 movw r24, r18 |
4a0: 9f 70 andi r25, 0x0F ; 15 |
4a2: 90 93 a0 00 sts 0x00A0, r25 |
4a6: 80 93 9f 00 sts 0x009F, r24 |
crc1 = '=' + crc / 64; |
4aa: 46 e0 ldi r20, 0x06 ; 6 |
4ac: 96 95 lsr r25 |
4ae: 87 95 ror r24 |
4b0: 4a 95 dec r20 |
4b2: e1 f7 brne .-8 ; 0x4ac <__vector_13+0x7c> |
4b4: 98 2f mov r25, r24 |
4b6: 93 5c subi r25, 0xC3 ; 195 |
4b8: 90 93 a1 00 sts 0x00A1, r25 |
crc2 = '=' + crc % 64; |
4bc: 2f 73 andi r18, 0x3F ; 63 |
4be: 30 70 andi r19, 0x00 ; 0 |
4c0: 23 5c subi r18, 0xC3 ; 195 |
4c2: 20 93 a2 00 sts 0x00A2, r18 |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
4c6: 80 81 ld r24, Z |
4c8: 98 17 cp r25, r24 |
4ca: 29 f4 brne .+10 ; 0x4d6 <__vector_13+0xa6> |
4cc: 8c 91 ld r24, X |
4ce: 28 17 cp r18, r24 |
4d0: 11 f4 brne .+4 ; 0x4d6 <__vector_13+0xa6> |
4d2: 21 e0 ldi r18, 0x01 ; 1 |
4d4: 0a c0 rjmp .+20 ; 0x4ea <__vector_13+0xba> |
4d6: 20 e0 ldi r18, 0x00 ; 0 |
4d8: 80 91 99 00 lds r24, 0x0099 |
4dc: 90 91 9a 00 lds r25, 0x009A |
4e0: 01 96 adiw r24, 0x01 ; 1 |
4e2: 90 93 9a 00 sts 0x009A, r25 |
4e6: 80 93 99 00 sts 0x0099, r24 |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
4ea: 80 91 9b 00 lds r24, 0x009B |
4ee: 88 23 and r24, r24 |
4f0: 09 f0 breq .+2 ; 0x4f4 <__vector_13+0xc4> |
4f2: 66 c0 rjmp .+204 ; 0x5c0 <__vector_13+0x190> |
4f4: 22 23 and r18, r18 |
4f6: 09 f4 brne .+2 ; 0x4fa <__vector_13+0xca> |
4f8: 63 c0 rjmp .+198 ; 0x5c0 <__vector_13+0x190> |
{ |
CntDatensaetzeProSekunde++; |
4fa: 80 91 66 00 lds r24, 0x0066 |
4fe: 8f 5f subi r24, 0xFF ; 255 |
500: 80 93 66 00 sts 0x0066, r24 |
PC_DebugTimeout = 10; |
504: 8a e0 ldi r24, 0x0A ; 10 |
506: 80 93 97 00 sts 0x0097, r24 |
NeuerDatensatzEmpfangen = 1; |
50a: 81 e0 ldi r24, 0x01 ; 1 |
50c: 80 93 9b 00 sts 0x009B, r24 |
AnzahlEmpfangsBytes = buf_ptr; |
510: 50 93 98 00 sts 0x0098, r21 |
RxdBuffer[buf_ptr] = '\r'; |
514: e5 2f mov r30, r21 |
516: ff 27 eor r31, r31 |
518: ee 5a subi r30, 0xAE ; 174 |
51a: fe 4f sbci r31, 0xFE ; 254 |
51c: 8d e0 ldi r24, 0x0D ; 13 |
51e: 80 83 st Z, r24 |
520: 4f c0 rjmp .+158 ; 0x5c0 <__vector_13+0x190> |
// if((RxdBuffer[1] == 's') && (RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
522: 20 91 a4 00 lds r18, 0x00A4 |
526: 82 2f mov r24, r18 |
528: 99 27 eor r25, r25 |
52a: 81 30 cpi r24, 0x01 ; 1 |
52c: 91 05 cpc r25, r1 |
52e: f9 f0 breq .+62 ; 0x56e <__vector_13+0x13e> |
530: 82 30 cpi r24, 0x02 ; 2 |
532: 91 05 cpc r25, r1 |
534: 1c f4 brge .+6 ; 0x53c <__vector_13+0x10c> |
536: 89 2b or r24, r25 |
538: 21 f0 breq .+8 ; 0x542 <__vector_13+0x112> |
53a: 40 c0 rjmp .+128 ; 0x5bc <__vector_13+0x18c> |
53c: 02 97 sbiw r24, 0x02 ; 2 |
53e: 11 f1 breq .+68 ; 0x584 <__vector_13+0x154> |
540: 3d c0 rjmp .+122 ; 0x5bc <__vector_13+0x18c> |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
542: 80 91 9c 00 lds r24, 0x009C |
546: 83 32 cpi r24, 0x23 ; 35 |
548: 39 f4 brne .+14 ; 0x558 <__vector_13+0x128> |
54a: 80 91 9b 00 lds r24, 0x009B |
54e: 88 23 and r24, r24 |
550: 19 f4 brne .+6 ; 0x558 <__vector_13+0x128> |
552: 81 e0 ldi r24, 0x01 ; 1 |
554: 80 93 a4 00 sts 0x00A4, r24 |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
558: 80 91 9c 00 lds r24, 0x009C |
55c: 80 93 52 01 sts 0x0152, r24 |
560: 81 e0 ldi r24, 0x01 ; 1 |
562: 80 93 a3 00 sts 0x00A3, r24 |
crc = SioTmp; |
566: 80 91 9c 00 lds r24, 0x009C |
56a: 99 27 eor r25, r25 |
56c: 22 c0 rjmp .+68 ; 0x5b2 <__vector_13+0x182> |
break; |
case 1: // Adresse auswerten |
UartState++; |
56e: 2f 5f subi r18, 0xFF ; 255 |
570: 20 93 a4 00 sts 0x00A4, r18 |
RxdBuffer[buf_ptr++] = SioTmp; |
574: e5 2f mov r30, r21 |
576: ff 27 eor r31, r31 |
578: ee 5a subi r30, 0xAE ; 174 |
57a: fe 4f sbci r31, 0xFE ; 254 |
57c: 80 91 9c 00 lds r24, 0x009C |
580: 80 83 st Z, r24 |
582: 09 c0 rjmp .+18 ; 0x596 <__vector_13+0x166> |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
584: e5 2f mov r30, r21 |
586: ff 27 eor r31, r31 |
588: ee 5a subi r30, 0xAE ; 174 |
58a: fe 4f sbci r31, 0xFE ; 254 |
58c: 80 91 9c 00 lds r24, 0x009C |
590: 80 83 st Z, r24 |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
592: 54 36 cpi r21, 0x64 ; 100 |
594: 20 f4 brcc .+8 ; 0x59e <__vector_13+0x16e> |
596: 5f 5f subi r21, 0xFF ; 255 |
598: 50 93 a3 00 sts 0x00A3, r21 |
59c: 02 c0 rjmp .+4 ; 0x5a2 <__vector_13+0x172> |
else UartState = 0; |
59e: 10 92 a4 00 sts 0x00A4, r1 |
crc += SioTmp; |
5a2: 20 91 9c 00 lds r18, 0x009C |
5a6: 80 91 9f 00 lds r24, 0x009F |
5aa: 90 91 a0 00 lds r25, 0x00A0 |
5ae: 82 0f add r24, r18 |
5b0: 91 1d adc r25, r1 |
5b2: 90 93 a0 00 sts 0x00A0, r25 |
5b6: 80 93 9f 00 sts 0x009F, r24 |
break; |
5ba: 02 c0 rjmp .+4 ; 0x5c0 <__vector_13+0x190> |
default: |
UartState = 0; |
5bc: 10 92 a4 00 sts 0x00A4, r1 |
5c0: ff 91 pop r31 |
5c2: ef 91 pop r30 |
5c4: bf 91 pop r27 |
5c6: af 91 pop r26 |
5c8: 9f 91 pop r25 |
5ca: 8f 91 pop r24 |
5cc: 5f 91 pop r21 |
5ce: 4f 91 pop r20 |
5d0: 3f 91 pop r19 |
5d2: 2f 91 pop r18 |
5d4: 0f 90 pop r0 |
5d6: 0f be out 0x3f, r0 ; 63 |
5d8: 0f 90 pop r0 |
5da: 1f 90 pop r1 |
5dc: 18 95 reti |
000005de <AddCRC>: |
break; |
} |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
5de: ac 01 movw r20, r24 |
unsigned int tmpCRC = 0,i; |
5e0: a0 e0 ldi r26, 0x00 ; 0 |
5e2: b0 e0 ldi r27, 0x00 ; 0 |
for(i = 0; i < wieviele;i++) |
5e4: 9d 01 movw r18, r26 |
5e6: a8 17 cp r26, r24 |
5e8: b9 07 cpc r27, r25 |
5ea: 48 f4 brcc .+18 ; 0x5fe <AddCRC+0x20> |
5ec: ee ee ldi r30, 0xEE ; 238 |
5ee: f0 e0 ldi r31, 0x00 ; 0 |
{ |
tmpCRC += SendeBuffer[i]; |
5f0: 81 91 ld r24, Z+ |
5f2: 28 0f add r18, r24 |
5f4: 31 1d adc r19, r1 |
5f6: 11 96 adiw r26, 0x01 ; 1 |
5f8: a4 17 cp r26, r20 |
5fa: b5 07 cpc r27, r21 |
5fc: c8 f3 brcs .-14 ; 0x5f0 <AddCRC+0x12> |
} |
tmpCRC %= 4096; |
5fe: 3f 70 andi r19, 0x0F ; 15 |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
600: fd 01 movw r30, r26 |
602: e2 51 subi r30, 0x12 ; 18 |
604: ff 4f sbci r31, 0xFF ; 255 |
606: c9 01 movw r24, r18 |
608: 56 e0 ldi r21, 0x06 ; 6 |
60a: 96 95 lsr r25 |
60c: 87 95 ror r24 |
60e: 5a 95 dec r21 |
610: e1 f7 brne .-8 ; 0x60a <AddCRC+0x2c> |
612: 83 5c subi r24, 0xC3 ; 195 |
614: 80 83 st Z, r24 |
616: 11 96 adiw r26, 0x01 ; 1 |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
618: fd 01 movw r30, r26 |
61a: e2 51 subi r30, 0x12 ; 18 |
61c: ff 4f sbci r31, 0xFF ; 255 |
61e: 2f 73 andi r18, 0x3F ; 63 |
620: 30 70 andi r19, 0x00 ; 0 |
622: 82 2f mov r24, r18 |
624: 83 5c subi r24, 0xC3 ; 195 |
626: 80 83 st Z, r24 |
SendeBuffer[i++] = '\r'; |
628: a1 51 subi r26, 0x11 ; 17 |
62a: bf 4f sbci r27, 0xFF ; 255 |
62c: 8d e0 ldi r24, 0x0D ; 13 |
62e: 8c 93 st X, r24 |
UebertragungAbgeschlossen = 0; |
630: 10 92 6e 00 sts 0x006E, r1 |
UDR = SendeBuffer[0]; |
634: 80 91 ee 00 lds r24, 0x00EE |
638: 8c b9 out 0x0c, r24 ; 12 |
63a: 08 95 ret |
0000063c <SendOutData>: |
// PrintSendeBuffer(); |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
63c: 1f 93 push r17 |
63e: cf 93 push r28 |
640: df 93 push r29 |
642: 38 2f mov r19, r24 |
644: 96 2f mov r25, r22 |
646: ea 01 movw r28, r20 |
648: 72 2f mov r23, r18 |
unsigned int pt = 0,i; |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
64a: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
//while(!UebertragungAbgeschlossen); |
SendeBuffer[pt++] = '#'; // Startzeichen |
64c: 83 e2 ldi r24, 0x23 ; 35 |
64e: 80 93 ee 00 sts 0x00EE, r24 |
SendeBuffer[pt++] = modul+'a'; // Adresse (a=0; b=1,...) |
652: 9f 59 subi r25, 0x9F ; 159 |
654: 90 93 ef 00 sts 0x00EF, r25 |
SendeBuffer[pt++] = cmd; // Commando |
658: 30 93 f0 00 sts 0x00F0, r19 |
65c: a3 e0 ldi r26, 0x03 ; 3 |
65e: b0 e0 ldi r27, 0x00 ; 0 |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
660: 77 23 and r23, r23 |
662: 09 f4 brne .+2 ; 0x666 <SendOutData+0x2a> |
664: 58 c0 rjmp .+176 ; 0x716 <SendOutData+0xda> |
666: 77 23 and r23, r23 |
668: 11 f4 brne .+4 ; 0x66e <SendOutData+0x32> |
66a: 97 2f mov r25, r23 |
66c: 07 c0 rjmp .+14 ; 0x67c <SendOutData+0x40> |
66e: fe 01 movw r30, r28 |
670: e1 0f add r30, r17 |
672: f1 1d adc r31, r1 |
674: 1f 5f subi r17, 0xFF ; 255 |
676: 90 81 ld r25, Z |
678: 71 50 subi r23, 0x01 ; 1 |
67a: 11 f4 brne .+4 ; 0x680 <SendOutData+0x44> |
67c: 47 2f mov r20, r23 |
67e: 0e c0 rjmp .+28 ; 0x69c <SendOutData+0x60> |
680: fe 01 movw r30, r28 |
682: e1 0f add r30, r17 |
684: f1 1d adc r31, r1 |
686: 1f 5f subi r17, 0xFF ; 255 |
688: 40 81 ld r20, Z |
68a: 71 50 subi r23, 0x01 ; 1 |
68c: 39 f0 breq .+14 ; 0x69c <SendOutData+0x60> |
68e: fe 01 movw r30, r28 |
690: e1 0f add r30, r17 |
692: f1 1d adc r31, r1 |
694: 1f 5f subi r17, 0xFF ; 255 |
696: 60 81 ld r22, Z |
698: 71 50 subi r23, 0x01 ; 1 |
69a: 01 c0 rjmp .+2 ; 0x69e <SendOutData+0x62> |
69c: 67 2f mov r22, r23 |
69e: fd 01 movw r30, r26 |
6a0: e2 51 subi r30, 0x12 ; 18 |
6a2: ff 4f sbci r31, 0xFF ; 255 |
6a4: 89 2f mov r24, r25 |
6a6: 86 95 lsr r24 |
6a8: 86 95 lsr r24 |
6aa: 83 5c subi r24, 0xC3 ; 195 |
6ac: 80 83 st Z, r24 |
6ae: 11 96 adiw r26, 0x01 ; 1 |
6b0: fd 01 movw r30, r26 |
6b2: e2 51 subi r30, 0x12 ; 18 |
6b4: ff 4f sbci r31, 0xFF ; 255 |
6b6: 89 2f mov r24, r25 |
6b8: 99 27 eor r25, r25 |
6ba: 83 70 andi r24, 0x03 ; 3 |
6bc: 90 70 andi r25, 0x00 ; 0 |
6be: 24 e0 ldi r18, 0x04 ; 4 |
6c0: 88 0f add r24, r24 |
6c2: 99 1f adc r25, r25 |
6c4: 2a 95 dec r18 |
6c6: e1 f7 brne .-8 ; 0x6c0 <SendOutData+0x84> |
6c8: 55 27 eor r21, r21 |
6ca: 9a 01 movw r18, r20 |
6cc: 94 e0 ldi r25, 0x04 ; 4 |
6ce: 36 95 lsr r19 |
6d0: 27 95 ror r18 |
6d2: 9a 95 dec r25 |
6d4: e1 f7 brne .-8 ; 0x6ce <SendOutData+0x92> |
6d6: 82 2b or r24, r18 |
6d8: 83 5c subi r24, 0xC3 ; 195 |
6da: 80 83 st Z, r24 |
6dc: 11 96 adiw r26, 0x01 ; 1 |
6de: fd 01 movw r30, r26 |
6e0: e2 51 subi r30, 0x12 ; 18 |
6e2: ff 4f sbci r31, 0xFF ; 255 |
6e4: 4f 70 andi r20, 0x0F ; 15 |
6e6: 50 70 andi r21, 0x00 ; 0 |
6e8: 44 0f add r20, r20 |
6ea: 55 1f adc r21, r21 |
6ec: 44 0f add r20, r20 |
6ee: 55 1f adc r21, r21 |
6f0: 86 2f mov r24, r22 |
6f2: 99 27 eor r25, r25 |
6f4: 26 e0 ldi r18, 0x06 ; 6 |
6f6: 96 95 lsr r25 |
6f8: 87 95 ror r24 |
6fa: 2a 95 dec r18 |
6fc: e1 f7 brne .-8 ; 0x6f6 <SendOutData+0xba> |
6fe: 84 2b or r24, r20 |
700: 83 5c subi r24, 0xC3 ; 195 |
702: 80 83 st Z, r24 |
704: 11 96 adiw r26, 0x01 ; 1 |
706: fd 01 movw r30, r26 |
708: e2 51 subi r30, 0x12 ; 18 |
70a: ff 4f sbci r31, 0xFF ; 255 |
70c: 6f 73 andi r22, 0x3F ; 63 |
70e: 63 5c subi r22, 0xC3 ; 195 |
710: 60 83 st Z, r22 |
712: 11 96 adiw r26, 0x01 ; 1 |
714: a5 cf rjmp .-182 ; 0x660 <SendOutData+0x24> |
} |
AddCRC(pt); |
716: cd 01 movw r24, r26 |
718: 0e 94 ef 02 call 0x5de <AddCRC> |
71c: df 91 pop r29 |
71e: cf 91 pop r28 |
720: 1f 91 pop r17 |
722: 08 95 ret |
00000724 <Decode64>: |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
724: 1f 93 push r17 |
726: cf 93 push r28 |
728: df 93 push r29 |
72a: ec 01 movw r28, r24 |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
72c: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
72e: 66 23 and r22, r22 |
730: 09 f4 brne .+2 ; 0x734 <Decode64+0x10> |
732: 60 c0 rjmp .+192 ; 0x7f4 <Decode64+0xd0> |
734: a2 2f mov r26, r18 |
736: bb 27 eor r27, r27 |
738: 12 97 sbiw r26, 0x02 ; 2 |
73a: e4 2f mov r30, r20 |
73c: ff 27 eor r31, r31 |
73e: ee 5a subi r30, 0xAE ; 174 |
740: fe 4f sbci r31, 0xFE ; 254 |
742: 30 81 ld r19, Z |
744: 3d 53 subi r19, 0x3D ; 61 |
746: 4f 5f subi r20, 0xFF ; 255 |
748: e4 2f mov r30, r20 |
74a: ff 27 eor r31, r31 |
74c: ee 5a subi r30, 0xAE ; 174 |
74e: fe 4f sbci r31, 0xFE ; 254 |
750: 50 81 ld r21, Z |
752: 5d 53 subi r21, 0x3D ; 61 |
754: 4f 5f subi r20, 0xFF ; 255 |
756: e4 2f mov r30, r20 |
758: ff 27 eor r31, r31 |
75a: ee 5a subi r30, 0xAE ; 174 |
75c: fe 4f sbci r31, 0xFE ; 254 |
75e: 70 81 ld r23, Z |
760: 7d 53 subi r23, 0x3D ; 61 |
762: 4f 5f subi r20, 0xFF ; 255 |
764: e4 2f mov r30, r20 |
766: ff 27 eor r31, r31 |
768: ee 5a subi r30, 0xAE ; 174 |
76a: fe 4f sbci r31, 0xFE ; 254 |
76c: e0 81 ld r30, Z |
76e: ed 53 subi r30, 0x3D ; 61 |
770: 4f 5f subi r20, 0xFF ; 255 |
772: 84 2f mov r24, r20 |
774: 99 27 eor r25, r25 |
776: a8 17 cp r26, r24 |
778: b9 07 cpc r27, r25 |
77a: e4 f1 brlt .+120 ; 0x7f4 <Decode64+0xd0> |
77c: 83 2f mov r24, r19 |
77e: 99 27 eor r25, r25 |
780: 88 0f add r24, r24 |
782: 99 1f adc r25, r25 |
784: 88 0f add r24, r24 |
786: 99 1f adc r25, r25 |
788: 35 2f mov r19, r21 |
78a: 32 95 swap r19 |
78c: 3f 70 andi r19, 0x0F ; 15 |
78e: 38 2b or r19, r24 |
790: 85 2f mov r24, r21 |
792: 99 27 eor r25, r25 |
794: 8f 70 andi r24, 0x0F ; 15 |
796: 90 70 andi r25, 0x00 ; 0 |
798: f4 e0 ldi r31, 0x04 ; 4 |
79a: 88 0f add r24, r24 |
79c: 99 1f adc r25, r25 |
79e: fa 95 dec r31 |
7a0: e1 f7 brne .-8 ; 0x79a <Decode64+0x76> |
7a2: 57 2f mov r21, r23 |
7a4: 56 95 lsr r21 |
7a6: 56 95 lsr r21 |
7a8: 58 2b or r21, r24 |
7aa: 87 2f mov r24, r23 |
7ac: 99 27 eor r25, r25 |
7ae: 83 70 andi r24, 0x03 ; 3 |
7b0: 90 70 andi r25, 0x00 ; 0 |
7b2: 76 e0 ldi r23, 0x06 ; 6 |
7b4: 88 0f add r24, r24 |
7b6: 99 1f adc r25, r25 |
7b8: 7a 95 dec r23 |
7ba: e1 f7 brne .-8 ; 0x7b4 <Decode64+0x90> |
7bc: 8e 2b or r24, r30 |
7be: 61 50 subi r22, 0x01 ; 1 |
7c0: 6f 3f cpi r22, 0xFF ; 255 |
7c2: c1 f0 breq .+48 ; 0x7f4 <Decode64+0xd0> |
7c4: fe 01 movw r30, r28 |
7c6: e1 0f add r30, r17 |
7c8: f1 1d adc r31, r1 |
7ca: 30 83 st Z, r19 |
7cc: 1f 5f subi r17, 0xFF ; 255 |
7ce: 61 50 subi r22, 0x01 ; 1 |
7d0: 6f 3f cpi r22, 0xFF ; 255 |
7d2: 81 f0 breq .+32 ; 0x7f4 <Decode64+0xd0> |
7d4: fe 01 movw r30, r28 |
7d6: e1 0f add r30, r17 |
7d8: f1 1d adc r31, r1 |
7da: 50 83 st Z, r21 |
7dc: 1f 5f subi r17, 0xFF ; 255 |
7de: 61 50 subi r22, 0x01 ; 1 |
7e0: 6f 3f cpi r22, 0xFF ; 255 |
7e2: 41 f0 breq .+16 ; 0x7f4 <Decode64+0xd0> |
7e4: fe 01 movw r30, r28 |
7e6: e1 0f add r30, r17 |
7e8: f1 1d adc r31, r1 |
7ea: 80 83 st Z, r24 |
7ec: 1f 5f subi r17, 0xFF ; 255 |
7ee: 66 23 and r22, r22 |
7f0: 09 f0 breq .+2 ; 0x7f4 <Decode64+0xd0> |
7f2: a3 cf rjmp .-186 ; 0x73a <Decode64+0x16> |
7f4: df 91 pop r29 |
7f6: cf 91 pop r28 |
7f8: 1f 91 pop r17 |
7fa: 08 95 ret |
000007fc <BearbeiteRxDaten>: |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
7fc: cf 93 push r28 |
7fe: df 93 push r29 |
800: cd b7 in r28, 0x3d ; 61 |
802: de b7 in r29, 0x3e ; 62 |
804: ad 97 sbiw r28, 0x2d ; 45 |
806: 0f b6 in r0, 0x3f ; 63 |
808: f8 94 cli |
80a: de bf out 0x3e, r29 ; 62 |
80c: 0f be out 0x3f, r0 ; 63 |
80e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr1[1]; |
unsigned int tmp_int_arr2[2]; |
unsigned int tmp_int_arr20[21]; |
unsigned char tmp_char_arr3[3]; |
// unsigned int tmp_int_arr4[4]; |
if(!NeuerDatensatzEmpfangen) return; |
810: 80 91 9b 00 lds r24, 0x009B |
814: 88 23 and r24, r24 |
816: 09 f4 brne .+2 ; 0x81a <BearbeiteRxDaten+0x1e> |
818: a7 c0 rjmp .+334 ; 0x968 <__stack+0x109> |
NeuerDatensatzEmpfangen = 0; |
81a: 10 92 9b 00 sts 0x009B, r1 |
if(ErwarteAntwort == RxdBuffer[2]) AntwortEingetroffen = 1; |
81e: 90 91 6d 00 lds r25, 0x006D |
822: 80 91 54 01 lds r24, 0x0154 |
826: 98 17 cp r25, r24 |
828: 19 f4 brne .+6 ; 0x830 <BearbeiteRxDaten+0x34> |
82a: 81 e0 ldi r24, 0x01 ; 1 |
82c: 80 93 92 00 sts 0x0092, r24 |
switch(RxdBuffer[2]) |
830: 80 91 54 01 lds r24, 0x0154 |
834: 99 27 eor r25, r25 |
836: 82 33 cpi r24, 0x32 ; 50 |
838: 91 05 cpc r25, r1 |
83a: 09 f4 brne .+2 ; 0x83e <BearbeiteRxDaten+0x42> |
83c: 46 c0 rjmp .+140 ; 0x8ca <__stack+0x6b> |
83e: 83 33 cpi r24, 0x33 ; 51 |
840: 91 05 cpc r25, r1 |
842: 34 f4 brge .+12 ; 0x850 <BearbeiteRxDaten+0x54> |
844: 80 33 cpi r24, 0x30 ; 48 |
846: 91 05 cpc r25, r1 |
848: 99 f0 breq .+38 ; 0x870 <__stack+0x11> |
84a: c1 97 sbiw r24, 0x31 ; 49 |
84c: 49 f1 breq .+82 ; 0x8a0 <__stack+0x41> |
84e: 8c c0 rjmp .+280 ; 0x968 <__stack+0x109> |
850: 84 34 cpi r24, 0x44 ; 68 |
852: 91 05 cpc r25, r1 |
854: 09 f4 brne .+2 ; 0x858 <BearbeiteRxDaten+0x5c> |
856: 6b c0 rjmp .+214 ; 0x92e <__stack+0xcf> |
858: 85 34 cpi r24, 0x45 ; 69 |
85a: 91 05 cpc r25, r1 |
85c: 24 f4 brge .+8 ; 0x866 <__stack+0x7> |
85e: c3 97 sbiw r24, 0x33 ; 51 |
860: 09 f4 brne .+2 ; 0x864 <__stack+0x5> |
862: 48 c0 rjmp .+144 ; 0x8f4 <__stack+0x95> |
864: 81 c0 rjmp .+258 ; 0x968 <__stack+0x109> |
866: 8b 34 cpi r24, 0x4B ; 75 |
868: 91 05 cpc r25, r1 |
86a: 09 f4 brne .+2 ; 0x86e <__stack+0xf> |
86c: 6c c0 rjmp .+216 ; 0x946 <__stack+0xe7> |
86e: 7c c0 rjmp .+248 ; 0x968 <__stack+0x109> |
{ |
case '0':// LCD-Zeile0 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
870: 20 91 98 00 lds r18, 0x0098 |
874: 43 e0 ldi r20, 0x03 ; 3 |
876: 6a e2 ldi r22, 0x2A ; 42 |
878: ce 01 movw r24, r28 |
87a: 01 96 adiw r24, 0x01 ; 1 |
87c: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
880: 1a a6 std Y+42, r1 ; 0x2a |
882: 19 a6 std Y+41, r1 ; 0x29 |
DisplayBusy = 1; |
884: 81 e0 ldi r24, 0x01 ; 1 |
886: 80 93 93 00 sts 0x0093, r24 |
LCD_printfxy(0,0,"%s",tmp_int_arr20); |
88a: 60 e0 ldi r22, 0x00 ; 0 |
88c: 86 2f mov r24, r22 |
88e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
892: ce 01 movw r24, r28 |
894: 01 96 adiw r24, 0x01 ; 1 |
896: 9f 93 push r25 |
898: 8f 93 push r24 |
89a: 88 ea ldi r24, 0xA8 ; 168 |
89c: 90 e0 ldi r25, 0x00 ; 0 |
89e: 3e c0 rjmp .+124 ; 0x91c <__stack+0xbd> |
break; |
case '1':// LCD-Zeile1 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8a0: 20 91 98 00 lds r18, 0x0098 |
8a4: 43 e0 ldi r20, 0x03 ; 3 |
8a6: 6a e2 ldi r22, 0x2A ; 42 |
8a8: ce 01 movw r24, r28 |
8aa: 01 96 adiw r24, 0x01 ; 1 |
8ac: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8b0: 1a a6 std Y+42, r1 ; 0x2a |
8b2: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,1,"%s",tmp_int_arr20); |
8b4: 61 e0 ldi r22, 0x01 ; 1 |
8b6: 80 e0 ldi r24, 0x00 ; 0 |
8b8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8bc: ce 01 movw r24, r28 |
8be: 01 96 adiw r24, 0x01 ; 1 |
8c0: 9f 93 push r25 |
8c2: 8f 93 push r24 |
8c4: 8b ea ldi r24, 0xAB ; 171 |
8c6: 90 e0 ldi r25, 0x00 ; 0 |
8c8: 29 c0 rjmp .+82 ; 0x91c <__stack+0xbd> |
break; |
case '2':// LCD-Zeile2 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8ca: 20 91 98 00 lds r18, 0x0098 |
8ce: 43 e0 ldi r20, 0x03 ; 3 |
8d0: 6a e2 ldi r22, 0x2A ; 42 |
8d2: ce 01 movw r24, r28 |
8d4: 01 96 adiw r24, 0x01 ; 1 |
8d6: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8da: 1a a6 std Y+42, r1 ; 0x2a |
8dc: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,2,"%s",tmp_int_arr20); |
8de: 62 e0 ldi r22, 0x02 ; 2 |
8e0: 80 e0 ldi r24, 0x00 ; 0 |
8e2: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8e6: ce 01 movw r24, r28 |
8e8: 01 96 adiw r24, 0x01 ; 1 |
8ea: 9f 93 push r25 |
8ec: 8f 93 push r24 |
8ee: 8e ea ldi r24, 0xAE ; 174 |
8f0: 90 e0 ldi r25, 0x00 ; 0 |
8f2: 14 c0 rjmp .+40 ; 0x91c <__stack+0xbd> |
break; |
case '3':// LCD-Zeile3 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8f4: 20 91 98 00 lds r18, 0x0098 |
8f8: 43 e0 ldi r20, 0x03 ; 3 |
8fa: 6a e2 ldi r22, 0x2A ; 42 |
8fc: ce 01 movw r24, r28 |
8fe: 01 96 adiw r24, 0x01 ; 1 |
900: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
904: 1a a6 std Y+42, r1 ; 0x2a |
906: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,3,"%s",tmp_int_arr20); |
908: 63 e0 ldi r22, 0x03 ; 3 |
90a: 80 e0 ldi r24, 0x00 ; 0 |
90c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
910: ce 01 movw r24, r28 |
912: 01 96 adiw r24, 0x01 ; 1 |
914: 9f 93 push r25 |
916: 8f 93 push r24 |
918: 81 eb ldi r24, 0xB1 ; 177 |
91a: 90 e0 ldi r25, 0x00 ; 0 |
91c: 9f 93 push r25 |
91e: 8f 93 push r24 |
920: 0e 94 e3 06 call 0xdc6 <_printf_P> |
break; |
924: 0f 90 pop r0 |
926: 0f 90 pop r0 |
928: 0f 90 pop r0 |
92a: 0f 90 pop r0 |
92c: 1d c0 rjmp .+58 ; 0x968 <__stack+0x109> |
case 'D': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugOut,sizeof(DebugOut),3,AnzahlEmpfangsBytes); |
92e: 20 91 98 00 lds r18, 0x0098 |
932: 43 e0 ldi r20, 0x03 ; 3 |
934: 6a e1 ldi r22, 0x1A ; 26 |
936: 83 ed ldi r24, 0xD3 ; 211 |
938: 90 e0 ldi r25, 0x00 ; 0 |
93a: 0e 94 92 03 call 0x724 <Decode64> |
PORTB = DebugOut.Digital[1]; |
93e: 80 91 d4 00 lds r24, 0x00D4 |
942: 88 bb out 0x18, r24 ; 24 |
break; |
944: 11 c0 rjmp .+34 ; 0x968 <__stack+0x109> |
case 'K': // Debug Eingangsdaten |
Decode64(tmp_char_arr3,sizeof(tmp_char_arr3),3,AnzahlEmpfangsBytes); |
946: 20 91 98 00 lds r18, 0x0098 |
94a: 43 e0 ldi r20, 0x03 ; 3 |
94c: 64 2f mov r22, r20 |
94e: ce 01 movw r24, r28 |
950: 8b 96 adiw r24, 0x2b ; 43 |
952: 0e 94 92 03 call 0x724 <Decode64> |
TX_DigTransferKanalL = tmp_char_arr3[0]; |
956: 8b a5 ldd r24, Y+43 ; 0x2b |
958: 80 93 96 00 sts 0x0096, r24 |
TX_DigTransferKanalH = tmp_char_arr3[1]; |
95c: 8c a5 ldd r24, Y+44 ; 0x2c |
95e: 80 93 95 00 sts 0x0095, r24 |
TX_DigTransferKanalDaten = tmp_char_arr3[2]; |
962: 8d a5 ldd r24, Y+45 ; 0x2d |
964: 80 93 94 00 sts 0x0094, r24 |
968: ad 96 adiw r28, 0x2d ; 45 |
96a: 0f b6 in r0, 0x3f ; 63 |
96c: f8 94 cli |
96e: de bf out 0x3e, r29 ; 62 |
970: 0f be out 0x3f, r0 ; 63 |
972: cd bf out 0x3d, r28 ; 61 |
974: df 91 pop r29 |
976: cf 91 pop r28 |
978: 08 95 ret |
0000097a <uart_putchar>: |
//if(RxdBuffer[1] == 'b') LCD_printfxy(0,0,"b:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
//if(RxdBuffer[1] == 'c') LCD_printfxy(0,1,"c:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
break; |
/* |
unsigned char Digital[13]; // 0 = Taster, Hauptkarte |
// 1 + 2 = Debugkanäle |
// 3 = Digin, Hauptkarte |
// 4 = Relais, Hauptkarte |
// 5 + 6 = Extern IO1 (12Bit ein 4 Bit aus) |
// 7 + 8 = Extern IO2 (12Bit ein 4 Bit aus) |
// 9 + 10 = Extern IO3 (12Bit ein 4 Bit aus) |
// 11 + 12= Extern IO4 (12Bit ein 4 Bit aus) |
*/ |
/* case 'd': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
} |
break; |
case 'g': // "Get"-Anforderung für Debug-Daten // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'u': // Uhr stellen |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
ZEITWERT = tmp_int_arr2[0]; |
SEK = tmp_int_arr2[1]; |
make_time_variables(ZEITWERT); |
RTC_SetTime(STD, MIN, SEK); |
RTC_SetWDay(TAG); |
break; |
case 'i': // Intervalle für die Datenübertragung |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
Debug_Timer_Intervall = tmp_int_arr2[0]; |
Debug_Display_Intervall = tmp_int_arr2[1]; |
SendeDummyDaten = 1; |
break; |
case 's': // single Step 1 = Stop 2 = noch einen Zyklus 3 = noch 2 Zyklen |
Decode64((unsigned char *) &tmp_int_arr1[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
SingleStep = tmp_int_arr1[0]; |
break; |
*/ |
} |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
97a: cf 93 push r28 |
97c: c8 2f mov r28, r24 |
if (c == '\n') |
97e: 8a 30 cpi r24, 0x0A ; 10 |
980: 19 f4 brne .+6 ; 0x988 <uart_putchar+0xe> |
uart_putchar('\r'); |
982: 8d e0 ldi r24, 0x0D ; 13 |
984: 0e 94 bd 04 call 0x97a <uart_putchar> |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
988: 5d 9b sbis 0x0b, 5 ; 11 |
98a: fe cf rjmp .-4 ; 0x988 <uart_putchar+0xe> |
//Ausgabe des Zeichens |
UDR = c; |
98c: cc b9 out 0x0c, r28 ; 12 |
return (0); |
} |
98e: 80 e0 ldi r24, 0x00 ; 0 |
990: 90 e0 ldi r25, 0x00 ; 0 |
992: cf 91 pop r28 |
994: 08 95 ret |
00000996 <WriteProgramData>: |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
996: 08 95 ret |
00000998 <UART_Init>: |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
998: 88 e1 ldi r24, 0x18 ; 24 |
99a: 8a b9 out 0x0a, r24 ; 10 |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
99c: 59 9a sbi 0x0b, 1 ; 11 |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
99e: 57 9a sbi 0x0a, 7 ; 10 |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
9a0: 56 9a sbi 0x0a, 6 ; 10 |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
9a2: 81 e2 ldi r24, 0x21 ; 33 |
9a4: 89 b9 out 0x09, r24 ; 9 |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
9a6: 60 e0 ldi r22, 0x00 ; 0 |
9a8: 70 e0 ldi r23, 0x00 ; 0 |
9aa: 8d eb ldi r24, 0xBD ; 189 |
9ac: 94 e0 ldi r25, 0x04 ; 4 |
9ae: 0e 94 71 0c call 0x18e2 <fdevopen> |
9b2: 08 95 ret |
000009b4 <SendeRemoteTasten>: |
//sbi(PORTD,4); |
} |
/* |
struct str_DebugIn |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
unsigned int Analog[4]; |
}; |
*/ |
void SendeRemoteTasten(unsigned char keys) |
{ |
9b4: 98 2f mov r25, r24 |
while(!UebertragungAbgeschlossen); // evtl warten |
9b6: 80 91 6e 00 lds r24, 0x006E |
9ba: 88 23 and r24, r24 |
9bc: e1 f3 breq .-8 ; 0x9b6 <SendeRemoteTasten+0x2> |
DebugIn.RemoteTasten = keys; |
9be: 90 93 c0 00 sts 0x00C0, r25 |
DebugIn.Analog[0] = AnalogWerte[0]; |
9c2: 80 91 ca 01 lds r24, 0x01CA |
9c6: 90 91 cb 01 lds r25, 0x01CB |
9ca: 90 93 c2 00 sts 0x00C2, r25 |
9ce: 80 93 c1 00 sts 0x00C1, r24 |
DebugIn.Analog[1] = AnalogWerte[1]; |
9d2: 80 91 cc 01 lds r24, 0x01CC |
9d6: 90 91 cd 01 lds r25, 0x01CD |
9da: 90 93 c4 00 sts 0x00C4, r25 |
9de: 80 93 c3 00 sts 0x00C3, r24 |
DebugIn.Analog[2] = AnalogWerte[2]; |
9e2: 80 91 ce 01 lds r24, 0x01CE |
9e6: 90 91 cf 01 lds r25, 0x01CF |
9ea: 90 93 c6 00 sts 0x00C6, r25 |
9ee: 80 93 c5 00 sts 0x00C5, r24 |
DebugIn.Analog[3] = IR_Code; |
9f2: 80 91 c7 01 lds r24, 0x01C7 |
9f6: 90 91 c8 01 lds r25, 0x01C8 |
9fa: 90 93 c8 00 sts 0x00C8, r25 |
9fe: 80 93 c7 00 sts 0x00C7, r24 |
SendOutData('d',SlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
a02: 2b e0 ldi r18, 0x0B ; 11 |
a04: 4e eb ldi r20, 0xBE ; 190 |
a06: 50 e0 ldi r21, 0x00 ; 0 |
a08: 60 91 64 00 lds r22, 0x0064 |
a0c: 84 e6 ldi r24, 0x64 ; 100 |
a0e: 0e 94 1e 03 call 0x63c <SendOutData> |
a12: 08 95 ret |
00000a14 <SendIntervalle>: |
} |
void SendIntervalle(unsigned int debug, unsigned int disp) |
{ |
a14: cf 93 push r28 |
a16: df 93 push r29 |
a18: cd b7 in r28, 0x3d ; 61 |
a1a: de b7 in r29, 0x3e ; 62 |
a1c: 24 97 sbiw r28, 0x04 ; 4 |
a1e: 0f b6 in r0, 0x3f ; 63 |
a20: f8 94 cli |
a22: de bf out 0x3e, r29 ; 62 |
a24: 0f be out 0x3f, r0 ; 63 |
a26: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = debug; |
a28: 9a 83 std Y+2, r25 ; 0x02 |
a2a: 89 83 std Y+1, r24 ; 0x01 |
tmp_int_arr2[1] = disp; |
a2c: 7c 83 std Y+4, r23 ; 0x04 |
a2e: 6b 83 std Y+3, r22 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a30: 80 91 6e 00 lds r24, 0x006E |
a34: 88 23 and r24, r24 |
a36: e1 f3 breq .-8 ; 0xa30 <SendIntervalle+0x1c> |
SendOutData('i',SlaveAdresse,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); |
a38: 24 e0 ldi r18, 0x04 ; 4 |
a3a: ae 01 movw r20, r28 |
a3c: 4f 5f subi r20, 0xFF ; 255 |
a3e: 5f 4f sbci r21, 0xFF ; 255 |
a40: 60 91 64 00 lds r22, 0x0064 |
a44: 89 e6 ldi r24, 0x69 ; 105 |
a46: 0e 94 1e 03 call 0x63c <SendOutData> |
a4a: 24 96 adiw r28, 0x04 ; 4 |
a4c: 0f b6 in r0, 0x3f ; 63 |
a4e: f8 94 cli |
a50: de bf out 0x3e, r29 ; 62 |
a52: 0f be out 0x3f, r0 ; 63 |
a54: cd bf out 0x3d, r28 ; 61 |
a56: df 91 pop r29 |
a58: cf 91 pop r28 |
a5a: 08 95 ret |
00000a5c <ClearIntervalle>: |
} |
void ClearIntervalle(void) |
{ |
a5c: cf 93 push r28 |
a5e: df 93 push r29 |
a60: cd b7 in r28, 0x3d ; 61 |
a62: de b7 in r29, 0x3e ; 62 |
a64: 24 97 sbiw r28, 0x04 ; 4 |
a66: 0f b6 in r0, 0x3f ; 63 |
a68: f8 94 cli |
a6a: de bf out 0x3e, r29 ; 62 |
a6c: 0f be out 0x3f, r0 ; 63 |
a6e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = 0; |
a70: 1a 82 std Y+2, r1 ; 0x02 |
a72: 19 82 std Y+1, r1 ; 0x01 |
tmp_int_arr2[1] = 0; |
a74: 1c 82 std Y+4, r1 ; 0x04 |
a76: 1b 82 std Y+3, r1 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a78: 80 91 6e 00 lds r24, 0x006E |
a7c: 88 23 and r24, r24 |
a7e: e1 f3 breq .-8 ; 0xa78 <ClearIntervalle+0x1c> |
SendOutData('i',0,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); // 0= an alle |
a80: 24 e0 ldi r18, 0x04 ; 4 |
a82: ae 01 movw r20, r28 |
a84: 4f 5f subi r20, 0xFF ; 255 |
a86: 5f 4f sbci r21, 0xFF ; 255 |
a88: 60 e0 ldi r22, 0x00 ; 0 |
a8a: 89 e6 ldi r24, 0x69 ; 105 |
a8c: 0e 94 1e 03 call 0x63c <SendOutData> |
a90: 24 96 adiw r28, 0x04 ; 4 |
a92: 0f b6 in r0, 0x3f ; 63 |
a94: f8 94 cli |
a96: de bf out 0x3e, r29 ; 62 |
a98: 0f be out 0x3f, r0 ; 63 |
a9a: cd bf out 0x3d, r28 ; 61 |
a9c: df 91 pop r29 |
a9e: cf 91 pop r28 |
aa0: 08 95 ret |
00000aa2 <DatenUebertragung>: |
} |
void DatenUebertragung(unsigned char key) |
{ |
aa2: cf 93 push r28 |
aa4: df 93 push r29 |
aa6: cd b7 in r28, 0x3d ; 61 |
aa8: de b7 in r29, 0x3e ; 62 |
aaa: 25 97 sbiw r28, 0x05 ; 5 |
aac: 0f b6 in r0, 0x3f ; 63 |
aae: f8 94 cli |
ab0: de bf out 0x3e, r29 ; 62 |
ab2: 0f be out 0x3f, r0 ; 63 |
ab4: cd bf out 0x3d, r28 ; 61 |
ab6: 98 2f mov r25, r24 |
static unsigned char state = 1; |
unsigned char temp_1[1]; |
unsigned char temp_2[2]; |
unsigned char temp_3[3]; |
unsigned int tmp_int_arr2[2]; |
while(!UebertragungAbgeschlossen); // evtl warten |
ab8: 80 91 6e 00 lds r24, 0x006E |
abc: 88 23 and r24, r24 |
abe: e1 f3 breq .-8 ; 0xab8 <DatenUebertragung+0x16> |
static unsigned char KanalSlave = 1; |
if(PollDisplay) |
ac0: 80 91 ed 00 lds r24, 0x00ED |
ac4: 88 23 and r24, r24 |
ac6: e1 f0 breq .+56 ; 0xb00 <DatenUebertragung+0x5e> |
{ |
temp_2[0] = key; |
ac8: 9c 83 std Y+4, r25 ; 0x04 |
temp_2[1] = 6; |
aca: 86 e0 ldi r24, 0x06 ; 6 |
acc: 8d 83 std Y+5, r24 ; 0x05 |
if(DisplayZeilen == 4) temp_2[1] = 4 + 9; // anzahl Zeilen --> + 8 bedeutet: ersten Pollingzyklus freilassen |
ace: 80 91 65 00 lds r24, 0x0065 |
ad2: 84 30 cpi r24, 0x04 ; 4 |
ad4: 11 f4 brne .+4 ; 0xada <DatenUebertragung+0x38> |
ad6: 8d e0 ldi r24, 0x0D ; 13 |
ad8: 01 c0 rjmp .+2 ; 0xadc <DatenUebertragung+0x3a> |
else temp_2[1] = 2 + 9; |
ada: 8b e0 ldi r24, 0x0B ; 11 |
adc: 8d 83 std Y+5, r24 ; 0x05 |
SendOutData('h',SlaveAdresse,(unsigned char *) &temp_2,sizeof(temp_2)); |
ade: 22 e0 ldi r18, 0x02 ; 2 |
ae0: ae 01 movw r20, r28 |
ae2: 4c 5f subi r20, 0xFC ; 252 |
ae4: 5f 4f sbci r21, 0xFF ; 255 |
ae6: 60 91 64 00 lds r22, 0x0064 |
aea: 88 e6 ldi r24, 0x68 ; 104 |
aec: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = '0'; |
af0: 80 e3 ldi r24, 0x30 ; 48 |
af2: 80 93 6d 00 sts 0x006D, r24 |
DisplayBusy = 90; |
af6: 8a e5 ldi r24, 0x5A ; 90 |
af8: 80 93 93 00 sts 0x0093, r24 |
PollDisplay = 0; |
afc: 10 92 ed 00 sts 0x00ED, r1 |
} |
if(!DisplayBusy) |
b00: 60 91 93 00 lds r22, 0x0093 |
b04: 66 23 and r22, r22 |
b06: e1 f5 brne .+120 ; 0xb80 <DatenUebertragung+0xde> |
switch(state) |
b08: 80 91 6f 00 lds r24, 0x006F |
b0c: 99 27 eor r25, r25 |
b0e: 81 30 cpi r24, 0x01 ; 1 |
b10: 91 05 cpc r25, r1 |
b12: 19 f0 breq .+6 ; 0xb1a <DatenUebertragung+0x78> |
b14: 02 97 sbiw r24, 0x02 ; 2 |
b16: e9 f0 breq .+58 ; 0xb52 <DatenUebertragung+0xb0> |
b18: 30 c0 rjmp .+96 ; 0xb7a <DatenUebertragung+0xd8> |
{ |
case 1:// Display |
SendOutData('k',KanalSlave,(unsigned char *) &temp_3,sizeof(temp_3)); |
b1a: 23 e0 ldi r18, 0x03 ; 3 |
b1c: ae 01 movw r20, r28 |
b1e: 4f 5f subi r20, 0xFF ; 255 |
b20: 5f 4f sbci r21, 0xFF ; 255 |
b22: 60 91 70 00 lds r22, 0x0070 |
b26: 8b e6 ldi r24, 0x6B ; 107 |
b28: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = 'K'; |
b2c: 8b e4 ldi r24, 0x4B ; 75 |
b2e: 80 93 6d 00 sts 0x006D, r24 |
if(++KanalSlave > AnzahlTeilnehmer) KanalSlave = 1; |
b32: 80 91 70 00 lds r24, 0x0070 |
b36: 8f 5f subi r24, 0xFF ; 255 |
b38: 80 93 70 00 sts 0x0070, r24 |
b3c: 90 91 6c 00 lds r25, 0x006C |
b40: 98 17 cp r25, r24 |
b42: 18 f4 brcc .+6 ; 0xb4a <DatenUebertragung+0xa8> |
b44: 81 e0 ldi r24, 0x01 ; 1 |
b46: 80 93 70 00 sts 0x0070, r24 |
state++; |
b4a: 80 91 6f 00 lds r24, 0x006F |
b4e: 8f 5f subi r24, 0xFF ; 255 |
b50: 15 c0 rjmp .+42 ; 0xb7c <DatenUebertragung+0xda> |
break; |
case 2: |
temp_3[0] = TX_DigTransferKanalL; |
b52: 80 91 96 00 lds r24, 0x0096 |
b56: 89 83 std Y+1, r24 ; 0x01 |
temp_3[1] = TX_DigTransferKanalH; |
b58: 80 91 95 00 lds r24, 0x0095 |
b5c: 8a 83 std Y+2, r24 ; 0x02 |
temp_3[2] = TX_DigTransferKanalDaten; |
b5e: 80 91 94 00 lds r24, 0x0094 |
b62: 8b 83 std Y+3, r24 ; 0x03 |
SendOutData('l',0,(unsigned char *) &temp_3,sizeof(temp_3)); |
b64: 23 e0 ldi r18, 0x03 ; 3 |
b66: ae 01 movw r20, r28 |
b68: 4f 5f subi r20, 0xFF ; 255 |
b6a: 5f 4f sbci r21, 0xFF ; 255 |
b6c: 8c e6 ldi r24, 0x6C ; 108 |
b6e: 0e 94 1e 03 call 0x63c <SendOutData> |
AntwortEingetroffen = 1; // erwarte keine Antwort |
b72: 81 e0 ldi r24, 0x01 ; 1 |
b74: 80 93 92 00 sts 0x0092, r24 |
b78: 01 c0 rjmp .+2 ; 0xb7c <DatenUebertragung+0xda> |
state = 1; |
break; |
default: state = 1; |
b7a: 81 e0 ldi r24, 0x01 ; 1 |
b7c: 80 93 6f 00 sts 0x006F, r24 |
b80: 25 96 adiw r28, 0x05 ; 5 |
b82: 0f b6 in r0, 0x3f ; 63 |
b84: f8 94 cli |
b86: de bf out 0x3e, r29 ; 62 |
b88: 0f be out 0x3f, r0 ; 63 |
b8a: cd bf out 0x3d, r28 ; 61 |
b8c: df 91 pop r29 |
b8e: cf 91 pop r28 |
b90: 08 95 ret |
00000b92 <_long_delay>: |
#include "main.h" |
void _long_delay(void) |
{ |
long t = 5000; |
b92: 88 e8 ldi r24, 0x88 ; 136 |
b94: 93 e1 ldi r25, 0x13 ; 19 |
b96: a0 e0 ldi r26, 0x00 ; 0 |
b98: b0 e0 ldi r27, 0x00 ; 0 |
while (t--); |
b9a: 03 97 sbiw r24, 0x03 ; 3 |
b9c: a1 09 sbc r26, r1 |
b9e: b1 09 sbc r27, r1 |
ba0: 8f 3f cpi r24, 0xFF ; 255 |
ba2: 2f ef ldi r18, 0xFF ; 255 |
ba4: 92 07 cpc r25, r18 |
ba6: 2f ef ldi r18, 0xFF ; 255 |
ba8: a2 07 cpc r26, r18 |
baa: 2f ef ldi r18, 0xFF ; 255 |
bac: b2 07 cpc r27, r18 |
bae: a9 f7 brne .-22 ; 0xb9a <_long_delay+0x8> |
bb0: 08 95 ret |
00000bb2 <_short_delay>: |
} |
void _short_delay(void) |
{ |
int t = 500; |
bb2: 84 ef ldi r24, 0xF4 ; 244 |
bb4: 91 e0 ldi r25, 0x01 ; 1 |
while (t--); |
bb6: 03 97 sbiw r24, 0x03 ; 3 |
bb8: 2f ef ldi r18, 0xFF ; 255 |
bba: 8f 3f cpi r24, 0xFF ; 255 |
bbc: 92 07 cpc r25, r18 |
bbe: d9 f7 brne .-10 ; 0xbb6 <_short_delay+0x4> |
bc0: 08 95 ret |
00000bc2 <_lcd_write_command>: |
} |
void _lcd_write_command(unsigned char data) |
{ |
bc2: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bc4: 80 7f andi r24, 0xF0 ; 240 |
bc6: 98 2f mov r25, r24 |
bc8: 94 60 ori r25, 0x04 ; 4 |
bca: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bcc: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bce: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bd0: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bd2: 82 2f mov r24, r18 |
bd4: 99 27 eor r25, r25 |
bd6: 34 e0 ldi r19, 0x04 ; 4 |
bd8: 88 0f add r24, r24 |
bda: 99 1f adc r25, r25 |
bdc: 3a 95 dec r19 |
bde: e1 f7 brne .-8 ; 0xbd8 <_lcd_write_command+0x16> |
be0: 84 60 ori r24, 0x04 ; 4 |
be2: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
be4: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4); |
be6: 22 95 swap r18 |
be8: 20 7f andi r18, 0xF0 ; 240 |
bea: 25 bb out 0x15, r18 ; 21 |
bec: 08 95 ret |
00000bee <_lcd_write_4bit>: |
} |
void _lcd_write_4bit(unsigned char data) |
{ |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bee: 28 2f mov r18, r24 |
bf0: 33 27 eor r19, r19 |
bf2: 44 e0 ldi r20, 0x04 ; 4 |
bf4: 22 0f add r18, r18 |
bf6: 33 1f adc r19, r19 |
bf8: 4a 95 dec r20 |
bfa: e1 f7 brne .-8 ; 0xbf4 <_lcd_write_4bit+0x6> |
bfc: 92 2f mov r25, r18 |
bfe: 94 60 ori r25, 0x04 ; 4 |
c00: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
c02: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4); |
c04: 82 95 swap r24 |
c06: 80 7f andi r24, 0xF0 ; 240 |
c08: 85 bb out 0x15, r24 ; 21 |
c0a: 08 95 ret |
00000c0c <lcd_write_byte>: |
} |
void lcd_write_byte(unsigned char data) |
{ |
c0c: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN | DISPLAY_RS; |
c0e: 80 7f andi r24, 0xF0 ; 240 |
c10: 98 2f mov r25, r24 |
c12: 95 60 ori r25, 0x05 ; 5 |
c14: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_RS; |
c16: 81 60 ori r24, 0x01 ; 1 |
c18: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN | DISPLAY_RS; |
c1a: 82 2f mov r24, r18 |
c1c: 99 27 eor r25, r25 |
c1e: 54 e0 ldi r21, 0x04 ; 4 |
c20: 88 0f add r24, r24 |
c22: 99 1f adc r25, r25 |
c24: 5a 95 dec r21 |
c26: e1 f7 brne .-8 ; 0xc20 <lcd_write_byte+0x14> |
c28: 28 2f mov r18, r24 |
c2a: 25 60 ori r18, 0x05 ; 5 |
c2c: 25 bb out 0x15, r18 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_RS; |
c2e: 81 60 ori r24, 0x01 ; 1 |
c30: 85 bb out 0x15, r24 ; 21 |
c32: 08 95 ret |
00000c34 <my_pput>: |
} |
int my_pput(int zeichen) |
{ |
lcd_write_byte((char) zeichen); |
c34: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
c38: 81 e0 ldi r24, 0x01 ; 1 |
c3a: 90 e0 ldi r25, 0x00 ; 0 |
c3c: 08 95 ret |
00000c3e <LCD_Init>: |
// initialize the LCD controller |
void LCD_Init(void) |
{ |
LCD_PORT_DDR = 0xff;//0xf0 | DISPLAY_RS | DISPLAY_EN; |
c3e: 8f ef ldi r24, 0xFF ; 255 |
c40: 84 bb out 0x14, r24 ; 20 |
_long_delay(); |
c42: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c46: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c4a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c4e: 83 e0 ldi r24, 0x03 ; 3 |
c50: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c54: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c58: 83 e0 ldi r24, 0x03 ; 3 |
c5a: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c5e: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c62: 83 e0 ldi r24, 0x03 ; 3 |
c64: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c68: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x02); // jetzt 4 Bit |
c6c: 82 e0 ldi r24, 0x02 ; 2 |
c6e: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c72: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x28); // 4 Bit Zweizeilig |
c76: 88 e2 ldi r24, 0x28 ; 40 |
c78: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c7c: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08); // Display aus |
c80: 88 e0 ldi r24, 0x08 ; 8 |
c82: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c86: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x01); // Clear |
c8a: 81 e0 ldi r24, 0x01 ; 1 |
c8c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c90: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x06); //Entry mode |
c94: 86 e0 ldi r24, 0x06 ; 6 |
c96: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c9a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08 + 4); // Display an |
c9e: 8c e0 ldi r24, 0x0C ; 12 |
ca0: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
ca4: 0e 94 c9 05 call 0xb92 <_long_delay> |
ca8: 08 95 ret |
00000caa <LCD_Gotoxy>: |
} |
void LCD_Gotoxy(unsigned char x , unsigned char y) |
{ |
caa: 1f 93 push r17 |
cac: cf 93 push r28 |
cae: c8 2f mov r28, r24 |
cb0: 16 2f mov r17, r22 |
_short_delay(); |
cb2: 0e 94 d9 05 call 0xbb2 <_short_delay> |
switch(y) |
cb6: 81 2f mov r24, r17 |
cb8: 99 27 eor r25, r25 |
cba: 81 30 cpi r24, 0x01 ; 1 |
cbc: 91 05 cpc r25, r1 |
cbe: 79 f0 breq .+30 ; 0xcde <LCD_Gotoxy+0x34> |
cc0: 82 30 cpi r24, 0x02 ; 2 |
cc2: 91 05 cpc r25, r1 |
cc4: 1c f4 brge .+6 ; 0xccc <LCD_Gotoxy+0x22> |
cc6: 89 2b or r24, r25 |
cc8: 39 f0 breq .+14 ; 0xcd8 <LCD_Gotoxy+0x2e> |
cca: 13 c0 rjmp .+38 ; 0xcf2 <LCD_Gotoxy+0x48> |
ccc: 82 30 cpi r24, 0x02 ; 2 |
cce: 91 05 cpc r25, r1 |
cd0: 49 f0 breq .+18 ; 0xce4 <LCD_Gotoxy+0x3a> |
cd2: 03 97 sbiw r24, 0x03 ; 3 |
cd4: 51 f0 breq .+20 ; 0xcea <LCD_Gotoxy+0x40> |
cd6: 0d c0 rjmp .+26 ; 0xcf2 <LCD_Gotoxy+0x48> |
{ case 0 : _lcd_write_command(x + 0x80); break; |
cd8: 8c 2f mov r24, r28 |
cda: 80 58 subi r24, 0x80 ; 128 |
cdc: 08 c0 rjmp .+16 ; 0xcee <LCD_Gotoxy+0x44> |
case 1 : _lcd_write_command(x + 0xC0); break; |
cde: 8c 2f mov r24, r28 |
ce0: 80 54 subi r24, 0x40 ; 64 |
ce2: 05 c0 rjmp .+10 ; 0xcee <LCD_Gotoxy+0x44> |
case 2 : _lcd_write_command(x + (0x80 + 20)); break; |
ce4: 8c 2f mov r24, r28 |
ce6: 8c 56 subi r24, 0x6C ; 108 |
ce8: 02 c0 rjmp .+4 ; 0xcee <LCD_Gotoxy+0x44> |
case 3 : _lcd_write_command(x + (0xC0 + 20)); break; |
cea: 8c 2f mov r24, r28 |
cec: 8c 52 subi r24, 0x2C ; 44 |
cee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
cf2: cf 91 pop r28 |
cf4: 1f 91 pop r17 |
cf6: 08 95 ret |
00000cf8 <LCD_Write>: |
} |
} |
void LCD_Write(unsigned char *this_text) |
{ |
cf8: 1f 93 push r17 |
cfa: cf 93 push r28 |
cfc: df 93 push r29 |
cfe: ec 01 movw r28, r24 |
unsigned char i = 0; |
d00: 10 e0 ldi r17, 0x00 ; 0 |
while(this_text[i] != 0) |
{ |
lcd_write_byte(this_text[i++]); |
_long_delay(); |
d02: 88 81 ld r24, Y |
d04: 88 23 and r24, r24 |
d06: 79 f0 breq .+30 ; 0xd26 <LCD_Write+0x2e> |
d08: fe 01 movw r30, r28 |
d0a: e1 0f add r30, r17 |
d0c: f1 1d adc r31, r1 |
d0e: 1f 5f subi r17, 0xFF ; 255 |
d10: 80 81 ld r24, Z |
d12: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
d16: 0e 94 c9 05 call 0xb92 <_long_delay> |
d1a: fe 01 movw r30, r28 |
d1c: e1 0f add r30, r17 |
d1e: f1 1d adc r31, r1 |
d20: 80 81 ld r24, Z |
d22: 88 23 and r24, r24 |
d24: 89 f7 brne .-30 ; 0xd08 <LCD_Write+0x10> |
d26: df 91 pop r29 |
d28: cf 91 pop r28 |
d2a: 1f 91 pop r17 |
d2c: 08 95 ret |
00000d2e <LCD_Putchar>: |
} |
} |
char LCD_Putchar(char zeichen) |
{ |
d2e: 1f 93 push r17 |
d30: 18 2f mov r17, r24 |
_short_delay(); |
d32: 0e 94 d9 05 call 0xbb2 <_short_delay> |
lcd_write_byte((char) zeichen); |
d36: 81 2f mov r24, r17 |
d38: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
d3c: 81 e0 ldi r24, 0x01 ; 1 |
d3e: 90 e0 ldi r25, 0x00 ; 0 |
d40: 1f 91 pop r17 |
d42: 08 95 ret |
00000d44 <PRINT>: |
#include "old_macros.h" |
//#define LIGHTPRINTF |
void PRINT(const char * ptr, unsigned int len) { |
d44: 0f 93 push r16 |
d46: 1f 93 push r17 |
d48: cf 93 push r28 |
d4a: df 93 push r29 |
d4c: 8c 01 movw r16, r24 |
d4e: eb 01 movw r28, r22 |
for(;len;len--) |
d50: 67 2b or r22, r23 |
d52: 39 f0 breq .+14 ; 0xd62 <PRINT+0x1e> |
LCD_Putchar(*ptr++); |
d54: f8 01 movw r30, r16 |
d56: 81 91 ld r24, Z+ |
d58: 8f 01 movw r16, r30 |
d5a: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d5e: 21 97 sbiw r28, 0x01 ; 1 |
d60: c9 f7 brne .-14 ; 0xd54 <PRINT+0x10> |
d62: df 91 pop r29 |
d64: cf 91 pop r28 |
d66: 1f 91 pop r17 |
d68: 0f 91 pop r16 |
d6a: 08 95 ret |
00000d6c <PRINTP>: |
} |
void PRINTP(const char * ptr, unsigned int len) { |
d6c: 0f 93 push r16 |
d6e: 1f 93 push r17 |
d70: cf 93 push r28 |
d72: df 93 push r29 |
d74: 8c 01 movw r16, r24 |
d76: eb 01 movw r28, r22 |
for(;len;len--) |
d78: 67 2b or r22, r23 |
d7a: 41 f0 breq .+16 ; 0xd8c <PRINTP+0x20> |
// LCD_Putchar(PRG_RDB(ptr++)); |
LCD_Putchar(pgm_read_byte(ptr++)); |
d7c: f8 01 movw r30, r16 |
d7e: 0f 5f subi r16, 0xFF ; 255 |
d80: 1f 4f sbci r17, 0xFF ; 255 |
d82: 84 91 lpm r24, Z |
d84: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d88: 21 97 sbiw r28, 0x01 ; 1 |
d8a: c1 f7 brne .-16 ; 0xd7c <PRINTP+0x10> |
d8c: df 91 pop r29 |
d8e: cf 91 pop r28 |
d90: 1f 91 pop r17 |
d92: 0f 91 pop r16 |
d94: 08 95 ret |
00000d96 <PAD_SP>: |
} |
void PAD_SP(signed char howmany) { |
d96: cf 93 push r28 |
d98: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
d9a: 18 16 cp r1, r24 |
d9c: 34 f4 brge .+12 ; 0xdaa <PAD_SP+0x14> |
LCD_Putchar(' '); |
d9e: 80 e2 ldi r24, 0x20 ; 32 |
da0: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
da4: c1 50 subi r28, 0x01 ; 1 |
da6: 1c 16 cp r1, r28 |
da8: d4 f3 brlt .-12 ; 0xd9e <PAD_SP+0x8> |
daa: cf 91 pop r28 |
dac: 08 95 ret |
00000dae <PAD_0>: |
} |
void PAD_0(signed char howmany) { |
dae: cf 93 push r28 |
db0: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
db2: 18 16 cp r1, r24 |
db4: 34 f4 brge .+12 ; 0xdc2 <PAD_0+0x14> |
LCD_Putchar('0'); |
db6: 80 e3 ldi r24, 0x30 ; 48 |
db8: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
dbc: c1 50 subi r28, 0x01 ; 1 |
dbe: 1c 16 cp r1, r28 |
dc0: d4 f3 brlt .-12 ; 0xdb6 <PAD_0+0x8> |
dc2: cf 91 pop r28 |
dc4: 08 95 ret |
00000dc6 <_printf_P>: |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
dc6: 2f 92 push r2 |
dc8: 3f 92 push r3 |
dca: 4f 92 push r4 |
dcc: 5f 92 push r5 |
dce: 6f 92 push r6 |
dd0: 7f 92 push r7 |
dd2: 8f 92 push r8 |
dd4: 9f 92 push r9 |
dd6: af 92 push r10 |
dd8: bf 92 push r11 |
dda: cf 92 push r12 |
ddc: df 92 push r13 |
dde: ef 92 push r14 |
de0: ff 92 push r15 |
de2: 0f 93 push r16 |
de4: 1f 93 push r17 |
de6: cf 93 push r28 |
de8: df 93 push r29 |
dea: cd b7 in r28, 0x3d ; 61 |
dec: de b7 in r29, 0x3e ; 62 |
dee: e0 97 sbiw r28, 0x30 ; 48 |
df0: 0f b6 in r0, 0x3f ; 63 |
df2: f8 94 cli |
df4: de bf out 0x3e, r29 ; 62 |
df6: 0f be out 0x3f, r0 ; 63 |
df8: cd bf out 0x3d, r28 ; 61 |
dfa: a5 e4 ldi r26, 0x45 ; 69 |
dfc: 6a 2e mov r6, r26 |
dfe: 71 2c mov r7, r1 |
e00: 6c 0e add r6, r28 |
e02: 7d 1e adc r7, r29 |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
e04: 1c a6 std Y+44, r1 ; 0x2c |
e06: 1d a6 std Y+45, r1 ; 0x2d |
e08: 1e a6 std Y+46, r1 ; 0x2e |
e0a: 1f a6 std Y+47, r1 ; 0x2f |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
va_start(ap, fmt0); |
fmt = fmt0; |
e0c: d3 01 movw r26, r6 |
e0e: ad 90 ld r10, X+ |
e10: bd 90 ld r11, X+ |
e12: 3d 01 movw r6, r26 |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
e14: c5 01 movw r24, r10 |
e16: 05 c0 rjmp .+10 ; 0xe22 <_printf_P+0x5c> |
e18: 05 32 cpi r16, 0x25 ; 37 |
e1a: 39 f0 breq .+14 ; 0xe2a <_printf_P+0x64> |
e1c: 08 94 sec |
e1e: a1 1c adc r10, r1 |
e20: b1 1c adc r11, r1 |
e22: f5 01 movw r30, r10 |
e24: 04 91 lpm r16, Z |
e26: 00 23 and r16, r16 |
e28: b9 f7 brne .-18 ; 0xe18 <_printf_P+0x52> |
/* void */; |
if ((n = fmt - fmark) != 0) { |
e2a: b5 01 movw r22, r10 |
e2c: 68 1b sub r22, r24 |
e2e: 79 0b sbc r23, r25 |
e30: 11 f0 breq .+4 ; 0xe36 <_printf_P+0x70> |
PRINTP(fmark, n); |
e32: 0e 94 b6 06 call 0xd6c <PRINTP> |
} |
if (ch == '\0') |
e36: 00 23 and r16, r16 |
e38: 09 f4 brne .+2 ; 0xe3c <_printf_P+0x76> |
e3a: 30 c2 rjmp .+1120 ; 0x129c <_printf_P+0x4d6> |
goto done; |
fmt++; /* skip over '%' */ |
e3c: 08 94 sec |
e3e: a1 1c adc r10, r1 |
e40: b1 1c adc r11, r1 |
flags = 0; |
e42: 55 24 eor r5, r5 |
dprec = 0; |
e44: 58 aa std Y+48, r5 ; 0x30 |
width = 0; |
e46: 25 2c mov r2, r5 |
prec = -1; |
e48: 1f ef ldi r17, 0xFF ; 255 |
sign = '\0'; |
e4a: 59 a6 std Y+41, r5 ; 0x29 |
rflag: ch = PRG_RDB(fmt++); |
e4c: f5 01 movw r30, r10 |
e4e: 08 94 sec |
e50: a1 1c adc r10, r1 |
e52: b1 1c adc r11, r1 |
e54: 04 91 lpm r16, Z |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
e56: 05 37 cpi r16, 0x75 ; 117 |
e58: 21 f0 breq .+8 ; 0xe62 <_printf_P+0x9c> |
e5a: 80 2f mov r24, r16 |
e5c: 80 62 ori r24, 0x20 ; 32 |
e5e: 88 37 cpi r24, 0x78 ; 120 |
e60: f1 f4 brne .+60 ; 0xe9e <_printf_P+0xd8> |
#endif |
if (flags&LONGINT) { |
e62: 50 fe sbrs r5, 0 |
e64: 0e c0 rjmp .+28 ; 0xe82 <_printf_P+0xbc> |
_ulong=va_arg(ap, unsigned long); |
e66: f3 01 movw r30, r6 |
e68: 24 e0 ldi r18, 0x04 ; 4 |
e6a: 30 e0 ldi r19, 0x00 ; 0 |
e6c: 62 0e add r6, r18 |
e6e: 73 1e adc r7, r19 |
e70: 80 81 ld r24, Z |
e72: 91 81 ldd r25, Z+1 ; 0x01 |
e74: a2 81 ldd r26, Z+2 ; 0x02 |
e76: b3 81 ldd r27, Z+3 ; 0x03 |
e78: 8c a7 std Y+44, r24 ; 0x2c |
e7a: 9d a7 std Y+45, r25 ; 0x2d |
e7c: ae a7 std Y+46, r26 ; 0x2e |
e7e: bf a7 std Y+47, r27 ; 0x2f |
e80: 0e c0 rjmp .+28 ; 0xe9e <_printf_P+0xd8> |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
e82: f3 01 movw r30, r6 |
e84: a2 e0 ldi r26, 0x02 ; 2 |
e86: b0 e0 ldi r27, 0x00 ; 0 |
e88: 6a 0e add r6, r26 |
e8a: 7b 1e adc r7, r27 |
e8c: 80 81 ld r24, Z |
e8e: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
e90: 9c 01 movw r18, r24 |
e92: 44 27 eor r20, r20 |
e94: 55 27 eor r21, r21 |
e96: 2c a7 std Y+44, r18 ; 0x2c |
e98: 3d a7 std Y+45, r19 ; 0x2d |
e9a: 4e a7 std Y+46, r20 ; 0x2e |
e9c: 5f a7 std Y+47, r21 ; 0x2f |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
e9e: 00 32 cpi r16, 0x20 ; 32 |
ea0: 21 f4 brne .+8 ; 0xeaa <_printf_P+0xe4> |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
ea2: 89 a5 ldd r24, Y+41 ; 0x29 |
ea4: 88 23 and r24, r24 |
ea6: 91 f6 brne .-92 ; 0xe4c <_printf_P+0x86> |
ea8: 1b c0 rjmp .+54 ; 0xee0 <_printf_P+0x11a> |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
eaa: 03 32 cpi r16, 0x23 ; 35 |
eac: 11 f4 brne .+4 ; 0xeb2 <_printf_P+0xec> |
flags |= ALT; |
eae: 38 e0 ldi r19, 0x08 ; 8 |
eb0: 81 c0 rjmp .+258 ; 0xfb4 <_printf_P+0x1ee> |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
eb2: 0a 32 cpi r16, 0x2A ; 42 |
eb4: 11 f0 breq .+4 ; 0xeba <_printf_P+0xf4> |
eb6: 0d 32 cpi r16, 0x2D ; 45 |
eb8: 89 f4 brne .+34 ; 0xedc <_printf_P+0x116> |
if (ch=='*') { |
eba: 0a 32 cpi r16, 0x2A ; 42 |
ebc: 51 f4 brne .+20 ; 0xed2 <_printf_P+0x10c> |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
ebe: f3 01 movw r30, r6 |
ec0: 42 e0 ldi r20, 0x02 ; 2 |
ec2: 50 e0 ldi r21, 0x00 ; 0 |
ec4: 64 0e add r6, r20 |
ec6: 75 1e adc r7, r21 |
ec8: 20 80 ld r2, Z |
eca: 22 20 and r2, r2 |
ecc: 0c f0 brlt .+2 ; 0xed0 <_printf_P+0x10a> |
ece: be cf rjmp .-132 ; 0xe4c <_printf_P+0x86> |
goto rflag; |
width = -width; |
ed0: 21 94 neg r2 |
} |
flags |= LADJUST; |
ed2: 50 e1 ldi r21, 0x10 ; 16 |
ed4: 55 2a or r5, r21 |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
ed6: 8f ed ldi r24, 0xDF ; 223 |
ed8: 58 22 and r5, r24 |
goto rflag; |
eda: b8 cf rjmp .-144 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='+') { |
edc: 0b 32 cpi r16, 0x2B ; 43 |
ede: 11 f4 brne .+4 ; 0xee4 <_printf_P+0x11e> |
sign = '+'; |
ee0: 09 a7 std Y+41, r16 ; 0x29 |
goto rflag; |
ee2: b4 cf rjmp .-152 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='.') { |
ee4: 0e 32 cpi r16, 0x2E ; 46 |
ee6: c1 f5 brne .+112 ; 0xf58 <_printf_P+0x192> |
if ((ch = PRG_RDB(fmt++)) == '*') { |
ee8: f5 01 movw r30, r10 |
eea: 08 94 sec |
eec: a1 1c adc r10, r1 |
eee: b1 1c adc r11, r1 |
ef0: 04 91 lpm r16, Z |
ef2: 0a 32 cpi r16, 0x2A ; 42 |
ef4: 79 f4 brne .+30 ; 0xf14 <_printf_P+0x14e> |
n = va_arg(ap, int); |
ef6: f3 01 movw r30, r6 |
ef8: a2 e0 ldi r26, 0x02 ; 2 |
efa: b0 e0 ldi r27, 0x00 ; 0 |
efc: 6a 0e add r6, r26 |
efe: 7b 1e adc r7, r27 |
f00: 60 81 ld r22, Z |
f02: 71 81 ldd r23, Z+1 ; 0x01 |
prec = n < 0 ? -1 : n; |
f04: bf ef ldi r27, 0xFF ; 255 |
f06: 6f 3f cpi r22, 0xFF ; 255 |
f08: 7b 07 cpc r23, r27 |
f0a: 14 f4 brge .+4 ; 0xf10 <_printf_P+0x14a> |
f0c: 6f ef ldi r22, 0xFF ; 255 |
f0e: 7f ef ldi r23, 0xFF ; 255 |
f10: 16 2f mov r17, r22 |
goto rflag; |
f12: 9c cf rjmp .-200 ; 0xe4c <_printf_P+0x86> |
} |
n = 0; |
f14: 60 e0 ldi r22, 0x00 ; 0 |
f16: 70 e0 ldi r23, 0x00 ; 0 |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
f18: 80 2f mov r24, r16 |
f1a: 80 53 subi r24, 0x30 ; 48 |
f1c: 8a 30 cpi r24, 0x0A ; 10 |
f1e: a0 f4 brcc .+40 ; 0xf48 <_printf_P+0x182> |
f20: cb 01 movw r24, r22 |
f22: f3 e0 ldi r31, 0x03 ; 3 |
f24: 88 0f add r24, r24 |
f26: 99 1f adc r25, r25 |
f28: fa 95 dec r31 |
f2a: e1 f7 brne .-8 ; 0xf24 <_printf_P+0x15e> |
f2c: 86 0f add r24, r22 |
f2e: 97 1f adc r25, r23 |
f30: 68 0f add r22, r24 |
f32: 79 1f adc r23, r25 |
f34: 60 0f add r22, r16 |
f36: 71 1d adc r23, r1 |
f38: 60 53 subi r22, 0x30 ; 48 |
f3a: 70 40 sbci r23, 0x00 ; 0 |
f3c: f5 01 movw r30, r10 |
f3e: 08 94 sec |
f40: a1 1c adc r10, r1 |
f42: b1 1c adc r11, r1 |
f44: 04 91 lpm r16, Z |
f46: e8 cf rjmp .-48 ; 0xf18 <_printf_P+0x152> |
} |
prec = n < 0 ? -1 : n; |
f48: ef ef ldi r30, 0xFF ; 255 |
f4a: 6f 3f cpi r22, 0xFF ; 255 |
f4c: 7e 07 cpc r23, r30 |
f4e: 14 f4 brge .+4 ; 0xf54 <_printf_P+0x18e> |
f50: 6f ef ldi r22, 0xFF ; 255 |
f52: 7f ef ldi r23, 0xFF ; 255 |
f54: 16 2f mov r17, r22 |
goto reswitch; |
f56: 7f cf rjmp .-258 ; 0xe56 <_printf_P+0x90> |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
f58: 00 33 cpi r16, 0x30 ; 48 |
f5a: 29 f4 brne .+10 ; 0xf66 <_printf_P+0x1a0> |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
f5c: 54 fc sbrc r5, 4 |
f5e: 76 cf rjmp .-276 ; 0xe4c <_printf_P+0x86> |
flags |= ZEROPAD; /* '-' disables '0' */ |
f60: f0 e2 ldi r31, 0x20 ; 32 |
f62: 5f 2a or r5, r31 |
goto rflag; |
f64: 73 cf rjmp .-282 ; 0xe4c <_printf_P+0x86> |
} else if (ch>='1' && ch<='9') { |
f66: 80 2f mov r24, r16 |
f68: 81 53 subi r24, 0x31 ; 49 |
f6a: 89 30 cpi r24, 0x09 ; 9 |
f6c: d8 f4 brcc .+54 ; 0xfa4 <_printf_P+0x1de> |
n = 0; |
f6e: 60 e0 ldi r22, 0x00 ; 0 |
f70: 70 e0 ldi r23, 0x00 ; 0 |
do { |
n = 10 * n + to_digit(ch); |
f72: cb 01 movw r24, r22 |
f74: e3 e0 ldi r30, 0x03 ; 3 |
f76: 88 0f add r24, r24 |
f78: 99 1f adc r25, r25 |
f7a: ea 95 dec r30 |
f7c: e1 f7 brne .-8 ; 0xf76 <_printf_P+0x1b0> |
f7e: 86 0f add r24, r22 |
f80: 97 1f adc r25, r23 |
f82: 68 0f add r22, r24 |
f84: 79 1f adc r23, r25 |
f86: 60 0f add r22, r16 |
f88: 71 1d adc r23, r1 |
f8a: 60 53 subi r22, 0x30 ; 48 |
f8c: 70 40 sbci r23, 0x00 ; 0 |
ch = PRG_RDB(fmt++); |
f8e: f5 01 movw r30, r10 |
f90: 08 94 sec |
f92: a1 1c adc r10, r1 |
f94: b1 1c adc r11, r1 |
f96: 04 91 lpm r16, Z |
} while (is_digit(ch)); |
f98: 80 2f mov r24, r16 |
f9a: 80 53 subi r24, 0x30 ; 48 |
f9c: 8a 30 cpi r24, 0x0A ; 10 |
f9e: 48 f3 brcs .-46 ; 0xf72 <_printf_P+0x1ac> |
width = n; |
fa0: 26 2e mov r2, r22 |
goto reswitch; |
fa2: 59 cf rjmp .-334 ; 0xe56 <_printf_P+0x90> |
} else if (ch=='h') { |
fa4: 08 36 cpi r16, 0x68 ; 104 |
fa6: 19 f4 brne .+6 ; 0xfae <_printf_P+0x1e8> |
flags |= SHORTINT; |
fa8: 24 e0 ldi r18, 0x04 ; 4 |
faa: 52 2a or r5, r18 |
goto rflag; |
fac: 4f cf rjmp .-354 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='l') { |
fae: 0c 36 cpi r16, 0x6C ; 108 |
fb0: 19 f4 brne .+6 ; 0xfb8 <_printf_P+0x1f2> |
flags |= LONGINT; |
fb2: 31 e0 ldi r19, 0x01 ; 1 |
fb4: 53 2a or r5, r19 |
goto rflag; |
fb6: 4a cf rjmp .-364 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='c') { |
fb8: 03 36 cpi r16, 0x63 ; 99 |
fba: 61 f4 brne .+24 ; 0xfd4 <_printf_P+0x20e> |
*(cp = buf) = va_arg(ap, int); |
fbc: 4e 01 movw r8, r28 |
fbe: 08 94 sec |
fc0: 81 1c adc r8, r1 |
fc2: 91 1c adc r9, r1 |
fc4: f3 01 movw r30, r6 |
fc6: 42 e0 ldi r20, 0x02 ; 2 |
fc8: 50 e0 ldi r21, 0x00 ; 0 |
fca: 64 0e add r6, r20 |
fcc: 75 1e adc r7, r21 |
fce: 80 81 ld r24, Z |
fd0: 89 83 std Y+1, r24 ; 0x01 |
fd2: 1b c1 rjmp .+566 ; 0x120a <_printf_P+0x444> |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
fd4: 04 34 cpi r16, 0x44 ; 68 |
fd6: 21 f0 breq .+8 ; 0xfe0 <_printf_P+0x21a> |
fd8: 04 36 cpi r16, 0x64 ; 100 |
fda: 11 f0 breq .+4 ; 0xfe0 <_printf_P+0x21a> |
fdc: 09 36 cpi r16, 0x69 ; 105 |
fde: b1 f5 brne .+108 ; 0x104c <_printf_P+0x286> |
if(ch=='D') |
fe0: 04 34 cpi r16, 0x44 ; 68 |
fe2: 11 f4 brne .+4 ; 0xfe8 <_printf_P+0x222> |
flags |= LONGINT; |
fe4: 51 e0 ldi r21, 0x01 ; 1 |
fe6: 55 2a or r5, r21 |
if (flags&LONGINT) { |
fe8: 50 fe sbrs r5, 0 |
fea: 0a c0 rjmp .+20 ; 0x1000 <_printf_P+0x23a> |
_ulong=va_arg(ap, long); |
fec: f3 01 movw r30, r6 |
fee: 84 e0 ldi r24, 0x04 ; 4 |
ff0: 90 e0 ldi r25, 0x00 ; 0 |
ff2: 68 0e add r6, r24 |
ff4: 79 1e adc r7, r25 |
ff6: 20 81 ld r18, Z |
ff8: 31 81 ldd r19, Z+1 ; 0x01 |
ffa: 42 81 ldd r20, Z+2 ; 0x02 |
ffc: 53 81 ldd r21, Z+3 ; 0x03 |
ffe: 0c c0 rjmp .+24 ; 0x1018 <_printf_P+0x252> |
} else { |
register int _d; |
_d=va_arg(ap, int); |
1000: f3 01 movw r30, r6 |
1002: 42 e0 ldi r20, 0x02 ; 2 |
1004: 50 e0 ldi r21, 0x00 ; 0 |
1006: 64 0e add r6, r20 |
1008: 75 1e adc r7, r21 |
100a: 80 81 ld r24, Z |
100c: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
100e: 9c 01 movw r18, r24 |
1010: 44 27 eor r20, r20 |
1012: 37 fd sbrc r19, 7 |
1014: 40 95 com r20 |
1016: 54 2f mov r21, r20 |
1018: 2c a7 std Y+44, r18 ; 0x2c |
101a: 3d a7 std Y+45, r19 ; 0x2d |
101c: 4e a7 std Y+46, r20 ; 0x2e |
101e: 5f a7 std Y+47, r21 ; 0x2f |
} |
if ((long)_ulong < 0) { |
1020: 8c a5 ldd r24, Y+44 ; 0x2c |
1022: 9d a5 ldd r25, Y+45 ; 0x2d |
1024: ae a5 ldd r26, Y+46 ; 0x2e |
1026: bf a5 ldd r27, Y+47 ; 0x2f |
1028: b7 ff sbrs r27, 7 |
102a: 0d c0 rjmp .+26 ; 0x1046 <_printf_P+0x280> |
_ulong = -_ulong; |
102c: b0 95 com r27 |
102e: a0 95 com r26 |
1030: 90 95 com r25 |
1032: 81 95 neg r24 |
1034: 9f 4f sbci r25, 0xFF ; 255 |
1036: af 4f sbci r26, 0xFF ; 255 |
1038: bf 4f sbci r27, 0xFF ; 255 |
103a: 8c a7 std Y+44, r24 ; 0x2c |
103c: 9d a7 std Y+45, r25 ; 0x2d |
103e: ae a7 std Y+46, r26 ; 0x2e |
1040: bf a7 std Y+47, r27 ; 0x2f |
sign = '-'; |
1042: 8d e2 ldi r24, 0x2D ; 45 |
1044: 89 a7 std Y+41, r24 ; 0x29 |
} |
base = DEC; |
1046: 7a e0 ldi r23, 0x0A ; 10 |
1048: 47 2e mov r4, r23 |
goto number; |
104a: 7b c0 rjmp .+246 ; 0x1142 <_printf_P+0x37c> |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
104c: 0f 34 cpi r16, 0x4F ; 79 |
104e: 11 f0 breq .+4 ; 0x1054 <_printf_P+0x28e> |
1050: 0f 36 cpi r16, 0x6F ; 111 |
1052: 39 f4 brne .+14 ; 0x1062 <_printf_P+0x29c> |
if (ch=='O') |
1054: 0f 34 cpi r16, 0x4F ; 79 |
1056: 11 f4 brne .+4 ; 0x105c <_printf_P+0x296> |
flags |= LONGINT; |
1058: 91 e0 ldi r25, 0x01 ; 1 |
105a: 59 2a or r5, r25 |
base = OCT; |
105c: 68 e0 ldi r22, 0x08 ; 8 |
105e: 46 2e mov r4, r22 |
goto nosign; |
1060: 6f c0 rjmp .+222 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='p') { |
1062: 00 37 cpi r16, 0x70 ; 112 |
1064: a1 f4 brne .+40 ; 0x108e <_printf_P+0x2c8> |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
1066: f3 01 movw r30, r6 |
1068: a2 e0 ldi r26, 0x02 ; 2 |
106a: b0 e0 ldi r27, 0x00 ; 0 |
106c: 6a 0e add r6, r26 |
106e: 7b 1e adc r7, r27 |
1070: 80 81 ld r24, Z |
1072: 91 81 ldd r25, Z+1 ; 0x01 |
1074: 9c 01 movw r18, r24 |
1076: 44 27 eor r20, r20 |
1078: 55 27 eor r21, r21 |
107a: 2c a7 std Y+44, r18 ; 0x2c |
107c: 3d a7 std Y+45, r19 ; 0x2d |
107e: 4e a7 std Y+46, r20 ; 0x2e |
1080: 5f a7 std Y+47, r21 ; 0x2f |
base = HEX; |
1082: 50 e1 ldi r21, 0x10 ; 16 |
1084: 45 2e mov r4, r21 |
flags |= HEXPREFIX; |
1086: 30 e4 ldi r19, 0x40 ; 64 |
1088: 53 2a or r5, r19 |
ch = 'x'; |
108a: 08 e7 ldi r16, 0x78 ; 120 |
goto nosign; |
108c: 59 c0 rjmp .+178 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='s') { // print a string from RAM |
108e: 03 37 cpi r16, 0x73 ; 115 |
1090: c1 f5 brne .+112 ; 0x1102 <_printf_P+0x33c> |
if ((cp = va_arg(ap, char *)) == NULL) { |
1092: f3 01 movw r30, r6 |
1094: 42 e0 ldi r20, 0x02 ; 2 |
1096: 50 e0 ldi r21, 0x00 ; 0 |
1098: 64 0e add r6, r20 |
109a: 75 1e adc r7, r21 |
109c: 80 80 ld r8, Z |
109e: 91 80 ldd r9, Z+1 ; 0x01 |
10a0: 81 14 cp r8, r1 |
10a2: 91 04 cpc r9, r1 |
10a4: 89 f4 brne .+34 ; 0x10c8 <_printf_P+0x302> |
cp=buf; |
10a6: 4e 01 movw r8, r28 |
10a8: 08 94 sec |
10aa: 81 1c adc r8, r1 |
10ac: 91 1c adc r9, r1 |
cp[0] = '('; |
10ae: 88 e2 ldi r24, 0x28 ; 40 |
10b0: 89 83 std Y+1, r24 ; 0x01 |
cp[1] = 'n'; |
10b2: 8e e6 ldi r24, 0x6E ; 110 |
10b4: f4 01 movw r30, r8 |
10b6: 81 83 std Z+1, r24 ; 0x01 |
cp[2] = 'u'; |
10b8: 85 e7 ldi r24, 0x75 ; 117 |
10ba: 8b 83 std Y+3, r24 ; 0x03 |
cp[4] = cp[3] = 'l'; |
10bc: 8c e6 ldi r24, 0x6C ; 108 |
10be: 8c 83 std Y+4, r24 ; 0x04 |
10c0: 8d 83 std Y+5, r24 ; 0x05 |
cp[5] = ')'; |
10c2: 89 e2 ldi r24, 0x29 ; 41 |
10c4: 8e 83 std Y+6, r24 ; 0x06 |
cp[6] = '\0'; |
10c6: 1f 82 std Y+7, r1 ; 0x07 |
} |
if (prec >= 0) { |
10c8: 17 fd sbrc r17, 7 |
10ca: 13 c0 rjmp .+38 ; 0x10f2 <_printf_P+0x32c> |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
10cc: 81 2f mov r24, r17 |
10ce: 99 27 eor r25, r25 |
10d0: 87 fd sbrc r24, 7 |
10d2: 90 95 com r25 |
10d4: ac 01 movw r20, r24 |
10d6: 60 e0 ldi r22, 0x00 ; 0 |
10d8: 70 e0 ldi r23, 0x00 ; 0 |
10da: c4 01 movw r24, r8 |
10dc: 0e 94 64 0c call 0x18c8 <memchr> |
if (p != NULL) { |
10e0: 00 97 sbiw r24, 0x00 ; 0 |
10e2: 29 f0 breq .+10 ; 0x10ee <_printf_P+0x328> |
size = p - cp; |
10e4: d8 2e mov r13, r24 |
10e6: d8 18 sub r13, r8 |
if (size > prec) |
10e8: 1d 15 cp r17, r13 |
10ea: 0c f0 brlt .+2 ; 0x10ee <_printf_P+0x328> |
10ec: 90 c0 rjmp .+288 ; 0x120e <_printf_P+0x448> |
size = prec; |
} else |
size = prec; |
10ee: d1 2e mov r13, r17 |
10f0: 8e c0 rjmp .+284 ; 0x120e <_printf_P+0x448> |
} else |
size = strlen(cp); |
10f2: f4 01 movw r30, r8 |
10f4: 01 90 ld r0, Z+ |
10f6: 00 20 and r0, r0 |
10f8: e9 f7 brne .-6 ; 0x10f4 <_printf_P+0x32e> |
10fa: 31 97 sbiw r30, 0x01 ; 1 |
10fc: de 2e mov r13, r30 |
10fe: d8 18 sub r13, r8 |
1100: 86 c0 rjmp .+268 ; 0x120e <_printf_P+0x448> |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
1102: 05 35 cpi r16, 0x55 ; 85 |
1104: 11 f0 breq .+4 ; 0x110a <_printf_P+0x344> |
1106: 05 37 cpi r16, 0x75 ; 117 |
1108: 39 f4 brne .+14 ; 0x1118 <_printf_P+0x352> |
if (ch=='U') |
110a: 05 35 cpi r16, 0x55 ; 85 |
110c: 11 f4 brne .+4 ; 0x1112 <_printf_P+0x34c> |
flags |= LONGINT; |
110e: f1 e0 ldi r31, 0x01 ; 1 |
1110: 5f 2a or r5, r31 |
base = DEC; |
1112: 4a e0 ldi r20, 0x0A ; 10 |
1114: 44 2e mov r4, r20 |
goto nosign; |
1116: 14 c0 rjmp .+40 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='X'||ch=='x') { |
1118: 08 35 cpi r16, 0x58 ; 88 |
111a: 19 f0 breq .+6 ; 0x1122 <_printf_P+0x35c> |
111c: 08 37 cpi r16, 0x78 ; 120 |
111e: 09 f0 breq .+2 ; 0x1122 <_printf_P+0x35c> |
1120: 6c c0 rjmp .+216 ; 0x11fa <_printf_P+0x434> |
base = HEX; |
1122: 30 e1 ldi r19, 0x10 ; 16 |
1124: 43 2e mov r4, r19 |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
1126: 53 fe sbrs r5, 3 |
1128: 0b c0 rjmp .+22 ; 0x1140 <_printf_P+0x37a> |
112a: 2c a5 ldd r18, Y+44 ; 0x2c |
112c: 3d a5 ldd r19, Y+45 ; 0x2d |
112e: 4e a5 ldd r20, Y+46 ; 0x2e |
1130: 5f a5 ldd r21, Y+47 ; 0x2f |
1132: 21 15 cp r18, r1 |
1134: 31 05 cpc r19, r1 |
1136: 41 05 cpc r20, r1 |
1138: 51 05 cpc r21, r1 |
113a: 11 f0 breq .+4 ; 0x1140 <_printf_P+0x37a> |
flags |= HEXPREFIX; |
113c: 30 e4 ldi r19, 0x40 ; 64 |
113e: 53 2a or r5, r19 |
/* unsigned conversions */ |
nosign: sign = '\0'; |
1140: 19 a6 std Y+41, r1 ; 0x29 |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
1142: 18 ab std Y+48, r17 ; 0x30 |
1144: 17 fd sbrc r17, 7 |
1146: 02 c0 rjmp .+4 ; 0x114c <_printf_P+0x386> |
flags &= ~ZEROPAD; |
1148: 4f ed ldi r20, 0xDF ; 223 |
114a: 54 22 and r5, r20 |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
114c: 29 e2 ldi r18, 0x29 ; 41 |
114e: 82 2e mov r8, r18 |
1150: 91 2c mov r9, r1 |
1152: 8c 0e add r8, r28 |
1154: 9d 1e adc r9, r29 |
if (_ulong != 0 || prec != 0) { |
1156: 8c a5 ldd r24, Y+44 ; 0x2c |
1158: 9d a5 ldd r25, Y+45 ; 0x2d |
115a: ae a5 ldd r26, Y+46 ; 0x2e |
115c: bf a5 ldd r27, Y+47 ; 0x2f |
115e: 00 97 sbiw r24, 0x00 ; 0 |
1160: a1 05 cpc r26, r1 |
1162: b1 05 cpc r27, r1 |
1164: 21 f4 brne .+8 ; 0x116e <_printf_P+0x3a8> |
1166: 98 a9 ldd r25, Y+48 ; 0x30 |
1168: 99 23 and r25, r25 |
116a: 09 f4 brne .+2 ; 0x116e <_printf_P+0x3a8> |
116c: 3f c0 rjmp .+126 ; 0x11ec <_printf_P+0x426> |
116e: c4 2c mov r12, r4 |
1170: dd 24 eor r13, r13 |
1172: ee 24 eor r14, r14 |
1174: ff 24 eor r15, r15 |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
1176: 33 24 eor r3, r3 |
1178: 2c a5 ldd r18, Y+44 ; 0x2c |
117a: 3d a5 ldd r19, Y+45 ; 0x2d |
117c: 4e a5 ldd r20, Y+46 ; 0x2e |
117e: 5f a5 ldd r21, Y+47 ; 0x2f |
1180: 2c 15 cp r18, r12 |
1182: 3d 05 cpc r19, r13 |
1184: 4e 05 cpc r20, r14 |
1186: 5f 05 cpc r21, r15 |
1188: 10 f0 brcs .+4 ; 0x118e <_printf_P+0x3c8> |
118a: 91 e0 ldi r25, 0x01 ; 1 |
118c: 39 2e mov r3, r25 |
_d = _ulong % base; |
118e: 6c a5 ldd r22, Y+44 ; 0x2c |
1190: 7d a5 ldd r23, Y+45 ; 0x2d |
1192: 8e a5 ldd r24, Y+46 ; 0x2e |
1194: 9f a5 ldd r25, Y+47 ; 0x2f |
1196: a7 01 movw r20, r14 |
1198: 96 01 movw r18, r12 |
119a: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
119e: dc 01 movw r26, r24 |
11a0: cb 01 movw r24, r22 |
11a2: 18 2f mov r17, r24 |
if (_d<10) { |
11a4: 8a 30 cpi r24, 0x0A ; 10 |
11a6: 10 f4 brcc .+4 ; 0x11ac <_printf_P+0x3e6> |
_d+='0'; |
11a8: 10 5d subi r17, 0xD0 ; 208 |
11aa: 04 c0 rjmp .+8 ; 0x11b4 <_printf_P+0x3ee> |
} else { |
_d+='a'-10; |
11ac: 19 5a subi r17, 0xA9 ; 169 |
if (ch=='X') _d&=~0x20; |
11ae: 08 35 cpi r16, 0x58 ; 88 |
11b0: 09 f4 brne .+2 ; 0x11b4 <_printf_P+0x3ee> |
11b2: 1f 7d andi r17, 0xDF ; 223 |
} |
*--cp=_d; |
11b4: d4 01 movw r26, r8 |
11b6: 1e 93 st -X, r17 |
11b8: 4d 01 movw r8, r26 |
_ulong /= base; |
11ba: 6c a5 ldd r22, Y+44 ; 0x2c |
11bc: 7d a5 ldd r23, Y+45 ; 0x2d |
11be: 8e a5 ldd r24, Y+46 ; 0x2e |
11c0: 9f a5 ldd r25, Y+47 ; 0x2f |
11c2: a7 01 movw r20, r14 |
11c4: 96 01 movw r18, r12 |
11c6: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
11ca: 2c a7 std Y+44, r18 ; 0x2c |
11cc: 3d a7 std Y+45, r19 ; 0x2d |
11ce: 4e a7 std Y+46, r20 ; 0x2e |
11d0: 5f a7 std Y+47, r21 ; 0x2f |
} while (notlastdigit); |
11d2: 33 20 and r3, r3 |
11d4: 81 f6 brne .-96 ; 0x1176 <_printf_P+0x3b0> |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
11d6: b8 e0 ldi r27, 0x08 ; 8 |
11d8: 4b 16 cp r4, r27 |
11da: 41 f4 brne .+16 ; 0x11ec <_printf_P+0x426> |
11dc: 53 fe sbrs r5, 3 |
11de: 06 c0 rjmp .+12 ; 0x11ec <_printf_P+0x426> |
11e0: 10 33 cpi r17, 0x30 ; 48 |
11e2: 21 f0 breq .+8 ; 0x11ec <_printf_P+0x426> |
*--cp = '0'; |
11e4: 80 e3 ldi r24, 0x30 ; 48 |
11e6: f4 01 movw r30, r8 |
11e8: 82 93 st -Z, r24 |
11ea: 4f 01 movw r8, r30 |
#endif |
} |
size = buf + BUF - cp; |
11ec: ce 01 movw r24, r28 |
11ee: 01 96 adiw r24, 0x01 ; 1 |
11f0: d8 2e mov r13, r24 |
11f2: d8 18 sub r13, r8 |
11f4: f8 e2 ldi r31, 0x28 ; 40 |
11f6: df 0e add r13, r31 |
11f8: 0b c0 rjmp .+22 ; 0x1210 <_printf_P+0x44a> |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
11fa: 00 23 and r16, r16 |
11fc: 09 f4 brne .+2 ; 0x1200 <_printf_P+0x43a> |
11fe: 4e c0 rjmp .+156 ; 0x129c <_printf_P+0x4d6> |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
1200: 4e 01 movw r8, r28 |
1202: 08 94 sec |
1204: 81 1c adc r8, r1 |
1206: 91 1c adc r9, r1 |
*cp = ch; |
1208: 09 83 std Y+1, r16 ; 0x01 |
size = 1; |
120a: 81 e0 ldi r24, 0x01 ; 1 |
120c: d8 2e mov r13, r24 |
sign = '\0'; |
120e: 19 a6 std Y+41, r1 ; 0x29 |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
1210: 1d 2d mov r17, r13 |
dpad = dprec - size; |
1212: c8 a8 ldd r12, Y+48 ; 0x30 |
1214: cd 18 sub r12, r13 |
if (dpad < 0) |
1216: c7 fc sbrc r12, 7 |
dpad = 0; |
1218: cc 24 eor r12, r12 |
if (sign) |
121a: 89 a5 ldd r24, Y+41 ; 0x29 |
121c: 88 23 and r24, r24 |
121e: 11 f0 breq .+4 ; 0x1224 <_printf_P+0x45e> |
fieldsz++; |
1220: 1f 5f subi r17, 0xFF ; 255 |
1222: 02 c0 rjmp .+4 ; 0x1228 <_printf_P+0x462> |
else if (flags & HEXPREFIX) |
1224: 56 fc sbrc r5, 6 |
fieldsz += 2; |
1226: 1e 5f subi r17, 0xFE ; 254 |
fieldsz += dpad; |
1228: 1c 0d add r17, r12 |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
122a: e5 2c mov r14, r5 |
122c: ff 24 eor r15, r15 |
122e: c7 01 movw r24, r14 |
1230: 80 73 andi r24, 0x30 ; 48 |
1232: 90 70 andi r25, 0x00 ; 0 |
1234: 89 2b or r24, r25 |
1236: 21 f4 brne .+8 ; 0x1240 <_printf_P+0x47a> |
PAD_SP(width - fieldsz); |
1238: 82 2d mov r24, r2 |
123a: 81 1b sub r24, r17 |
123c: 0e 94 cb 06 call 0xd96 <PAD_SP> |
/* prefix */ |
if (sign) { |
1240: 89 a5 ldd r24, Y+41 ; 0x29 |
1242: 88 23 and r24, r24 |
1244: 29 f0 breq .+10 ; 0x1250 <_printf_P+0x48a> |
PRINT(&sign, 1); |
1246: 61 e0 ldi r22, 0x01 ; 1 |
1248: 70 e0 ldi r23, 0x00 ; 0 |
124a: ce 01 movw r24, r28 |
124c: 89 96 adiw r24, 0x29 ; 41 |
124e: 09 c0 rjmp .+18 ; 0x1262 <_printf_P+0x49c> |
} else if (flags & HEXPREFIX) { |
1250: e6 fe sbrs r14, 6 |
1252: 09 c0 rjmp .+18 ; 0x1266 <_printf_P+0x4a0> |
ox[0] = '0'; |
1254: 80 e3 ldi r24, 0x30 ; 48 |
1256: 8a a7 std Y+42, r24 ; 0x2a |
ox[1] = ch; |
1258: 0b a7 std Y+43, r16 ; 0x2b |
PRINT(ox, 2); |
125a: 62 e0 ldi r22, 0x02 ; 2 |
125c: 70 e0 ldi r23, 0x00 ; 0 |
125e: ce 01 movw r24, r28 |
1260: 8a 96 adiw r24, 0x2a ; 42 |
1262: 0e 94 a2 06 call 0xd44 <PRINT> |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
1266: c7 01 movw r24, r14 |
1268: 80 73 andi r24, 0x30 ; 48 |
126a: 90 70 andi r25, 0x00 ; 0 |
126c: 80 97 sbiw r24, 0x20 ; 32 |
126e: 21 f4 brne .+8 ; 0x1278 <_printf_P+0x4b2> |
PAD_0(width - fieldsz); |
1270: 82 2d mov r24, r2 |
1272: 81 1b sub r24, r17 |
1274: 0e 94 d7 06 call 0xdae <PAD_0> |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
1278: 8c 2d mov r24, r12 |
127a: 0e 94 d7 06 call 0xdae <PAD_0> |
/* the string or number proper */ |
PRINT(cp, size); |
127e: 8d 2d mov r24, r13 |
1280: 99 27 eor r25, r25 |
1282: 87 fd sbrc r24, 7 |
1284: 90 95 com r25 |
1286: bc 01 movw r22, r24 |
1288: c4 01 movw r24, r8 |
128a: 0e 94 a2 06 call 0xd44 <PRINT> |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
128e: e4 fe sbrs r14, 4 |
1290: c1 cd rjmp .-1150 ; 0xe14 <_printf_P+0x4e> |
PAD_SP(width - fieldsz); |
1292: 82 2d mov r24, r2 |
1294: 81 1b sub r24, r17 |
1296: 0e 94 cb 06 call 0xd96 <PAD_SP> |
129a: bc cd rjmp .-1160 ; 0xe14 <_printf_P+0x4e> |
129c: e0 96 adiw r28, 0x30 ; 48 |
129e: 0f b6 in r0, 0x3f ; 63 |
12a0: f8 94 cli |
12a2: de bf out 0x3e, r29 ; 62 |
12a4: 0f be out 0x3f, r0 ; 63 |
12a6: cd bf out 0x3d, r28 ; 61 |
12a8: df 91 pop r29 |
12aa: cf 91 pop r28 |
12ac: 1f 91 pop r17 |
12ae: 0f 91 pop r16 |
12b0: ff 90 pop r15 |
12b2: ef 90 pop r14 |
12b4: df 90 pop r13 |
12b6: cf 90 pop r12 |
12b8: bf 90 pop r11 |
12ba: af 90 pop r10 |
12bc: 9f 90 pop r9 |
12be: 8f 90 pop r8 |
12c0: 7f 90 pop r7 |
12c2: 6f 90 pop r6 |
12c4: 5f 90 pop r5 |
12c6: 4f 90 pop r4 |
12c8: 3f 90 pop r3 |
12ca: 2f 90 pop r2 |
12cc: 08 95 ret |
000012ce <__vector_9>: |
}; |
SIGNAL (SIG_OVERFLOW1) |
{ |
12ce: 1f 92 push r1 |
12d0: 0f 92 push r0 |
12d2: 0f b6 in r0, 0x3f ; 63 |
12d4: 0f 92 push r0 |
12d6: 11 24 eor r1, r1 |
12d8: 8f 93 push r24 |
12da: 9f 93 push r25 |
static unsigned char cnt_10ms = 0; |
TCNT1 -= TIMER_RELOAD_VALUE; |
12dc: 8c b5 in r24, 0x2c ; 44 |
12de: 9d b5 in r25, 0x2d ; 45 |
12e0: 8a 5f subi r24, 0xFA ; 250 |
12e2: 90 40 sbci r25, 0x00 ; 0 |
12e4: 9d bd out 0x2d, r25 ; 45 |
12e6: 8c bd out 0x2c, r24 ; 44 |
CountMilliseconds++; |
12e8: 80 91 a5 00 lds r24, 0x00A5 |
12ec: 90 91 a6 00 lds r25, 0x00A6 |
12f0: 01 96 adiw r24, 0x01 ; 1 |
12f2: 90 93 a6 00 sts 0x00A6, r25 |
12f6: 80 93 a5 00 sts 0x00A5, r24 |
if(DisplayBusy) DisplayBusy--; |
12fa: 80 91 93 00 lds r24, 0x0093 |
12fe: 88 23 and r24, r24 |
1300: 29 f0 breq .+10 ; 0x130c <__vector_9+0x3e> |
1302: 80 91 93 00 lds r24, 0x0093 |
1306: 81 50 subi r24, 0x01 ; 1 |
1308: 80 93 93 00 sts 0x0093, r24 |
if(LoescheIrCodeTimer) |
130c: 80 91 7c 00 lds r24, 0x007C |
1310: 90 91 7d 00 lds r25, 0x007D |
1314: 00 97 sbiw r24, 0x00 ; 0 |
1316: 59 f0 breq .+22 ; 0x132e <__vector_9+0x60> |
{ |
if(--LoescheIrCodeTimer == 0) IR_Code = 0; |
1318: 01 97 sbiw r24, 0x01 ; 1 |
131a: 90 93 7d 00 sts 0x007D, r25 |
131e: 80 93 7c 00 sts 0x007C, r24 |
1322: 00 97 sbiw r24, 0x00 ; 0 |
1324: 21 f4 brne .+8 ; 0x132e <__vector_9+0x60> |
1326: 90 93 c8 01 sts 0x01C8, r25 |
132a: 80 93 c7 01 sts 0x01C7, r24 |
132e: 9f 91 pop r25 |
1330: 8f 91 pop r24 |
1332: 0f 90 pop r0 |
1334: 0f be out 0x3f, r0 ; 63 |
1336: 0f 90 pop r0 |
1338: 1f 90 pop r1 |
133a: 18 95 reti |
0000133c <Timer1_Init>: |
} |
} |
void Timer1_Init(void) |
{ |
TCCR1B = TIMER_TEILER; |
133c: 83 e0 ldi r24, 0x03 ; 3 |
133e: 8e bd out 0x2e, r24 ; 46 |
TCNT1 = -TIMER_RELOAD_VALUE; // reload |
1340: 86 e0 ldi r24, 0x06 ; 6 |
1342: 9f ef ldi r25, 0xFF ; 255 |
1344: 9d bd out 0x2d, r25 ; 45 |
1346: 8c bd out 0x2c, r24 ; 44 |
//OCR1 = 0x00; |
// Timer(s)/Counter(s) Interrupt(s) initialization |
#if defined (__AVR_ATmega32__) |
TIMSK |= 0x04; |
1348: 89 b7 in r24, 0x39 ; 57 |
134a: 84 60 ori r24, 0x04 ; 4 |
134c: 89 bf out 0x39, r24 ; 57 |
134e: 08 95 ret |
00001350 <SetDelay>: |
#endif |
#if defined (__AVR_ATmega644__) |
TIMSK1 |= _BV(TOIE1); |
#endif |
} |
unsigned int SetDelay (unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
1350: 20 91 a5 00 lds r18, 0x00A5 |
1354: 30 91 a6 00 lds r19, 0x00A6 |
1358: 28 0f add r18, r24 |
135a: 39 1f adc r19, r25 |
} |
135c: c9 01 movw r24, r18 |
135e: 01 97 sbiw r24, 0x01 ; 1 |
1360: 08 95 ret |
00001362 <CheckDelay>: |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
1362: 20 91 a5 00 lds r18, 0x00A5 |
1366: 30 91 a6 00 lds r19, 0x00A6 |
136a: 82 1b sub r24, r18 |
136c: 93 0b sbc r25, r19 |
136e: 89 2f mov r24, r25 |
1370: 99 27 eor r25, r25 |
1372: 80 78 andi r24, 0x80 ; 128 |
} |
1374: 99 27 eor r25, r25 |
1376: 08 95 ret |
00001378 <Delay_ms>: |
void Delay_ms(unsigned int w) |
{ |
1378: cf 93 push r28 |
137a: df 93 push r29 |
unsigned int akt; |
akt = SetDelay(w); |
137c: 0e 94 a8 09 call 0x1350 <SetDelay> |
1380: ec 01 movw r28, r24 |
while (!CheckDelay(akt)); |
1382: ce 01 movw r24, r28 |
1384: 0e 94 b1 09 call 0x1362 <CheckDelay> |
1388: 88 23 and r24, r24 |
138a: d9 f3 breq .-10 ; 0x1382 <Delay_ms+0xa> |
138c: df 91 pop r29 |
138e: cf 91 pop r28 |
1390: 08 95 ret |
00001392 <Keyboard_Init>: |
unsigned int KeyTimer = 0; |
void Keyboard_Init(void) |
{ |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1392: 82 e3 ldi r24, 0x32 ; 50 |
1394: 90 e0 ldi r25, 0x00 ; 0 |
1396: 0e 94 a8 09 call 0x1350 <SetDelay> |
139a: 90 93 a9 00 sts 0x00A9, r25 |
139e: 80 93 a8 00 sts 0x00A8, r24 |
13a2: 08 95 ret |
000013a4 <GetKeyboard>: |
} |
unsigned char GetKeyboard(void) |
{ |
13a4: cf 93 push r28 |
static char taste1 = 0, taste2 = 0,taste3 = 0,taste4 = 0,taste5 = 0; |
unsigned char ret = 0; |
13a6: c0 e0 ldi r28, 0x00 ; 0 |
if(CheckDelay(KeyTimer)) |
13a8: 80 91 a8 00 lds r24, 0x00A8 |
13ac: 90 91 a9 00 lds r25, 0x00A9 |
13b0: 0e 94 b1 09 call 0x1362 <CheckDelay> |
13b4: 88 23 and r24, r24 |
13b6: 09 f4 brne .+2 ; 0x13ba <GetKeyboard+0x16> |
13b8: 76 c0 rjmp .+236 ; 0x14a6 <GetKeyboard+0x102> |
{ |
if(_TASTE1) { if(taste1++ == 0 || taste1 == CNT_TASTE) ret |= KEY1; if(taste1 == CNT_TASTE) taste1 = CNT_TASTE-CNT_TASTE/3;} else taste1 = 0; |
13ba: cf 9b sbis 0x19, 7 ; 25 |
13bc: 12 c0 rjmp .+36 ; 0x13e2 <GetKeyboard+0x3e> |
13be: 80 91 aa 00 lds r24, 0x00AA |
13c2: 8f 5f subi r24, 0xFF ; 255 |
13c4: 80 93 aa 00 sts 0x00AA, r24 |
13c8: 81 30 cpi r24, 0x01 ; 1 |
13ca: 11 f0 breq .+4 ; 0x13d0 <GetKeyboard+0x2c> |
13cc: 8a 30 cpi r24, 0x0A ; 10 |
13ce: 09 f4 brne .+2 ; 0x13d2 <GetKeyboard+0x2e> |
13d0: c1 e0 ldi r28, 0x01 ; 1 |
13d2: 80 91 aa 00 lds r24, 0x00AA |
13d6: 8a 30 cpi r24, 0x0A ; 10 |
13d8: 31 f4 brne .+12 ; 0x13e6 <GetKeyboard+0x42> |
13da: 87 e0 ldi r24, 0x07 ; 7 |
13dc: 80 93 aa 00 sts 0x00AA, r24 |
13e0: 02 c0 rjmp .+4 ; 0x13e6 <GetKeyboard+0x42> |
13e2: c0 93 aa 00 sts 0x00AA, r28 |
if(_TASTE2) { if(taste2++ == 0 || taste2 == CNT_TASTE) ret |= KEY2; if(taste2 == CNT_TASTE) taste2 = CNT_TASTE-CNT_TASTE/3;} else taste2 = 0; |
13e6: ce 9b sbis 0x19, 6 ; 25 |
13e8: 12 c0 rjmp .+36 ; 0x140e <GetKeyboard+0x6a> |
13ea: 80 91 ab 00 lds r24, 0x00AB |
13ee: 8f 5f subi r24, 0xFF ; 255 |
13f0: 80 93 ab 00 sts 0x00AB, r24 |
13f4: 81 30 cpi r24, 0x01 ; 1 |
13f6: 11 f0 breq .+4 ; 0x13fc <GetKeyboard+0x58> |
13f8: 8a 30 cpi r24, 0x0A ; 10 |
13fa: 09 f4 brne .+2 ; 0x13fe <GetKeyboard+0x5a> |
13fc: c2 60 ori r28, 0x02 ; 2 |
13fe: 80 91 ab 00 lds r24, 0x00AB |
1402: 8a 30 cpi r24, 0x0A ; 10 |
1404: 31 f4 brne .+12 ; 0x1412 <GetKeyboard+0x6e> |
1406: 87 e0 ldi r24, 0x07 ; 7 |
1408: 80 93 ab 00 sts 0x00AB, r24 |
140c: 02 c0 rjmp .+4 ; 0x1412 <GetKeyboard+0x6e> |
140e: 10 92 ab 00 sts 0x00AB, r1 |
if(_TASTE3) { if(taste3++ == 0 || taste3 == CNT_TASTE) ret |= KEY3; if(taste3 == CNT_TASTE) taste3 = CNT_TASTE-CNT_TASTE/3;} else taste3 = 0; |
1412: cd 9b sbis 0x19, 5 ; 25 |
1414: 12 c0 rjmp .+36 ; 0x143a <GetKeyboard+0x96> |
1416: 80 91 ac 00 lds r24, 0x00AC |
141a: 8f 5f subi r24, 0xFF ; 255 |
141c: 80 93 ac 00 sts 0x00AC, r24 |
1420: 81 30 cpi r24, 0x01 ; 1 |
1422: 11 f0 breq .+4 ; 0x1428 <GetKeyboard+0x84> |
1424: 8a 30 cpi r24, 0x0A ; 10 |
1426: 09 f4 brne .+2 ; 0x142a <GetKeyboard+0x86> |
1428: c4 60 ori r28, 0x04 ; 4 |
142a: 80 91 ac 00 lds r24, 0x00AC |
142e: 8a 30 cpi r24, 0x0A ; 10 |
1430: 31 f4 brne .+12 ; 0x143e <GetKeyboard+0x9a> |
1432: 87 e0 ldi r24, 0x07 ; 7 |
1434: 80 93 ac 00 sts 0x00AC, r24 |
1438: 02 c0 rjmp .+4 ; 0x143e <GetKeyboard+0x9a> |
143a: 10 92 ac 00 sts 0x00AC, r1 |
if(_TASTE4) { if(taste4++ == 0 || taste4 == CNT_TASTE) ret |= KEY4; if(taste4 == CNT_TASTE) taste4 = CNT_TASTE-CNT_TASTE/3;} else taste4 = 0; |
143e: cc 9b sbis 0x19, 4 ; 25 |
1440: 12 c0 rjmp .+36 ; 0x1466 <GetKeyboard+0xc2> |
1442: 80 91 ad 00 lds r24, 0x00AD |
1446: 8f 5f subi r24, 0xFF ; 255 |
1448: 80 93 ad 00 sts 0x00AD, r24 |
144c: 81 30 cpi r24, 0x01 ; 1 |
144e: 11 f0 breq .+4 ; 0x1454 <GetKeyboard+0xb0> |
1450: 8a 30 cpi r24, 0x0A ; 10 |
1452: 09 f4 brne .+2 ; 0x1456 <GetKeyboard+0xb2> |
1454: c8 60 ori r28, 0x08 ; 8 |
1456: 80 91 ad 00 lds r24, 0x00AD |
145a: 8a 30 cpi r24, 0x0A ; 10 |
145c: 31 f4 brne .+12 ; 0x146a <GetKeyboard+0xc6> |
145e: 87 e0 ldi r24, 0x07 ; 7 |
1460: 80 93 ad 00 sts 0x00AD, r24 |
1464: 02 c0 rjmp .+4 ; 0x146a <GetKeyboard+0xc6> |
1466: 10 92 ad 00 sts 0x00AD, r1 |
if(_TASTE5) { if(taste5++ == 0 || taste5 == CNT_TASTE) ret |= KEY5; if(taste5 == CNT_TASTE) taste5 = CNT_TASTE-CNT_TASTE/3;} else taste5 = 0; |
146a: cb 9b sbis 0x19, 3 ; 25 |
146c: 12 c0 rjmp .+36 ; 0x1492 <GetKeyboard+0xee> |
146e: 80 91 ae 00 lds r24, 0x00AE |
1472: 8f 5f subi r24, 0xFF ; 255 |
1474: 80 93 ae 00 sts 0x00AE, r24 |
1478: 81 30 cpi r24, 0x01 ; 1 |
147a: 11 f0 breq .+4 ; 0x1480 <GetKeyboard+0xdc> |
147c: 8a 30 cpi r24, 0x0A ; 10 |
147e: 09 f4 brne .+2 ; 0x1482 <GetKeyboard+0xde> |
1480: c0 61 ori r28, 0x10 ; 16 |
1482: 80 91 ae 00 lds r24, 0x00AE |
1486: 8a 30 cpi r24, 0x0A ; 10 |
1488: 31 f4 brne .+12 ; 0x1496 <GetKeyboard+0xf2> |
148a: 87 e0 ldi r24, 0x07 ; 7 |
148c: 80 93 ae 00 sts 0x00AE, r24 |
1490: 02 c0 rjmp .+4 ; 0x1496 <GetKeyboard+0xf2> |
1492: 10 92 ae 00 sts 0x00AE, r1 |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1496: 82 e3 ldi r24, 0x32 ; 50 |
1498: 90 e0 ldi r25, 0x00 ; 0 |
149a: 0e 94 a8 09 call 0x1350 <SetDelay> |
149e: 90 93 a9 00 sts 0x00A9, r25 |
14a2: 80 93 a8 00 sts 0x00A8, r24 |
} |
return(ret); |
} |
14a6: 8c 2f mov r24, r28 |
14a8: 99 27 eor r25, r25 |
14aa: cf 91 pop r28 |
14ac: 08 95 ret |
000014ae <GetKeyboard2>: |
unsigned char GetKeyboard2(void) |
{ |
unsigned char ret = 0; |
14ae: 80 e0 ldi r24, 0x00 ; 0 |
if(_TASTE1) ret |= KEY1; |
14b0: cf 99 sbic 0x19, 7 ; 25 |
14b2: 81 e0 ldi r24, 0x01 ; 1 |
if(_TASTE2) ret |= KEY2; |
14b4: ce 99 sbic 0x19, 6 ; 25 |
14b6: 82 60 ori r24, 0x02 ; 2 |
if(_TASTE3) ret |= KEY3; |
14b8: cd 99 sbic 0x19, 5 ; 25 |
14ba: 84 60 ori r24, 0x04 ; 4 |
if(_TASTE4) ret |= KEY4; |
14bc: cc 99 sbic 0x19, 4 ; 25 |
14be: 88 60 ori r24, 0x08 ; 8 |
if(_TASTE5) ret |= KEY5; |
14c0: cb 99 sbic 0x19, 3 ; 25 |
14c2: 80 61 ori r24, 0x10 ; 16 |
return(ret); |
} |
14c4: 99 27 eor r25, r25 |
14c6: 08 95 ret |
000014c8 <Menu>: |
unsigned char KanalVon[MAX_KANAL]; |
unsigned char KanalAn[MAX_KANAL]; |
void Menu(unsigned char key) |
{ |
14c8: 0f 93 push r16 |
14ca: 1f 93 push r17 |
14cc: cf 93 push r28 |
14ce: df 93 push r29 |
static unsigned int arr = 0; |
static unsigned char MaxMenue = 2,MenuePunkt=0; |
unsigned char kanal = 0; |
if(key & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LCD_Clear; } |
14d0: c8 2f mov r28, r24 |
14d2: dd 27 eor r29, r29 |
14d4: c0 ff sbrs r28, 0 |
14d6: 0f c0 rjmp .+30 ; 0x14f6 <Menu+0x2e> |
14d8: 80 91 b3 00 lds r24, 0x00B3 |
14dc: 88 23 and r24, r24 |
14de: 11 f0 breq .+4 ; 0x14e4 <Menu+0x1c> |
14e0: 81 50 subi r24, 0x01 ; 1 |
14e2: 02 c0 rjmp .+4 ; 0x14e8 <Menu+0x20> |
14e4: 80 91 7b 00 lds r24, 0x007B |
14e8: 80 93 b3 00 sts 0x00B3, r24 |
14ec: 81 e0 ldi r24, 0x01 ; 1 |
14ee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
14f2: 0e 94 c9 05 call 0xb92 <_long_delay> |
if(key & KEY2) { MenuePunkt++; LCD_Clear; } |
14f6: 8e 01 movw r16, r28 |
14f8: 02 70 andi r16, 0x02 ; 2 |
14fa: 10 70 andi r17, 0x00 ; 0 |
14fc: c1 ff sbrs r28, 1 |
14fe: 0a c0 rjmp .+20 ; 0x1514 <Menu+0x4c> |
1500: 80 91 b3 00 lds r24, 0x00B3 |
1504: 8f 5f subi r24, 0xFF ; 255 |
1506: 80 93 b3 00 sts 0x00B3, r24 |
150a: 81 e0 ldi r24, 0x01 ; 1 |
150c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
1510: 0e 94 c9 05 call 0xb92 <_long_delay> |
if((key & KEY1) && (key & KEY2)) MenuePunkt = 0; |
1514: c0 ff sbrs r28, 0 |
1516: 04 c0 rjmp .+8 ; 0x1520 <Menu+0x58> |
1518: 01 2b or r16, r17 |
151a: 11 f0 breq .+4 ; 0x1520 <Menu+0x58> |
151c: 10 92 b3 00 sts 0x00B3, r1 |
// LCD_printfxy(13,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
1520: 20 91 b3 00 lds r18, 0x00B3 |
1524: 82 2f mov r24, r18 |
1526: 99 27 eor r25, r25 |
1528: 81 30 cpi r24, 0x01 ; 1 |
152a: 91 05 cpc r25, r1 |
152c: 09 f4 brne .+2 ; 0x1530 <Menu+0x68> |
152e: 41 c0 rjmp .+130 ; 0x15b2 <Menu+0xea> |
1530: 82 30 cpi r24, 0x02 ; 2 |
1532: 91 05 cpc r25, r1 |
1534: 1c f4 brge .+6 ; 0x153c <Menu+0x74> |
1536: 89 2b or r24, r25 |
1538: 49 f0 breq .+18 ; 0x154c <Menu+0x84> |
153a: bf c0 rjmp .+382 ; 0x16ba <Menu+0x1f2> |
153c: 82 30 cpi r24, 0x02 ; 2 |
153e: 91 05 cpc r25, r1 |
1540: 09 f4 brne .+2 ; 0x1544 <Menu+0x7c> |
1542: 6a c0 rjmp .+212 ; 0x1618 <Menu+0x150> |
1544: 03 97 sbiw r24, 0x03 ; 3 |
1546: 09 f4 brne .+2 ; 0x154a <Menu+0x82> |
1548: 8e c0 rjmp .+284 ; 0x1666 <Menu+0x19e> |
154a: b7 c0 rjmp .+366 ; 0x16ba <Menu+0x1f2> |
{ |
case 0: |
LCD_printfxy(0,0,"Verbinden mit"); |
154c: 60 e0 ldi r22, 0x00 ; 0 |
154e: 86 2f mov r24, r22 |
1550: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1554: 84 eb ldi r24, 0xB4 ; 180 |
1556: 90 e0 ldi r25, 0x00 ; 0 |
1558: 9f 93 push r25 |
155a: 8f 93 push r24 |
155c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"MicroSPS:%2i ",SlaveAdresse); |
1560: 61 e0 ldi r22, 0x01 ; 1 |
1562: 80 e0 ldi r24, 0x00 ; 0 |
1564: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1568: 0f 90 pop r0 |
156a: 0f 90 pop r0 |
156c: 80 91 64 00 lds r24, 0x0064 |
1570: 99 27 eor r25, r25 |
1572: 9f 93 push r25 |
1574: 8f 93 push r24 |
1576: 82 ec ldi r24, 0xC2 ; 194 |
1578: 90 e0 ldi r25, 0x00 ; 0 |
157a: 9f 93 push r25 |
157c: 8f 93 push r24 |
157e: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && SlaveAdresse > 1) SlaveAdresse--; |
1582: 0f 90 pop r0 |
1584: 0f 90 pop r0 |
1586: 0f 90 pop r0 |
1588: 0f 90 pop r0 |
158a: c2 ff sbrs r28, 2 |
158c: 07 c0 rjmp .+14 ; 0x159c <Menu+0xd4> |
158e: 80 91 64 00 lds r24, 0x0064 |
1592: 82 30 cpi r24, 0x02 ; 2 |
1594: 18 f0 brcs .+6 ; 0x159c <Menu+0xd4> |
1596: 81 50 subi r24, 0x01 ; 1 |
1598: 80 93 64 00 sts 0x0064, r24 |
if(key & KEY4 && SlaveAdresse < 26) SlaveAdresse++; |
159c: c3 ff sbrs r28, 3 |
159e: 92 c0 rjmp .+292 ; 0x16c4 <Menu+0x1fc> |
15a0: 80 91 64 00 lds r24, 0x0064 |
15a4: 8a 31 cpi r24, 0x1A ; 26 |
15a6: 08 f0 brcs .+2 ; 0x15aa <Menu+0xe2> |
15a8: 8d c0 rjmp .+282 ; 0x16c4 <Menu+0x1fc> |
15aa: 8f 5f subi r24, 0xFF ; 255 |
15ac: 80 93 64 00 sts 0x0064, r24 |
break; |
15b0: 89 c0 rjmp .+274 ; 0x16c4 <Menu+0x1fc> |
case 1: |
LCD_printfxy(0,0,"Max Adresse"); |
15b2: 60 e0 ldi r22, 0x00 ; 0 |
15b4: 86 2f mov r24, r22 |
15b6: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ba: 80 ed ldi r24, 0xD0 ; 208 |
15bc: 90 e0 ldi r25, 0x00 ; 0 |
15be: 9f 93 push r25 |
15c0: 8f 93 push r24 |
15c2: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"%2i ",AnzahlTeilnehmer); |
15c6: 61 e0 ldi r22, 0x01 ; 1 |
15c8: 80 e0 ldi r24, 0x00 ; 0 |
15ca: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ce: 0f 90 pop r0 |
15d0: 0f 90 pop r0 |
15d2: 80 91 6c 00 lds r24, 0x006C |
15d6: 99 27 eor r25, r25 |
15d8: 9f 93 push r25 |
15da: 8f 93 push r24 |
15dc: 8c ed ldi r24, 0xDC ; 220 |
15de: 90 e0 ldi r25, 0x00 ; 0 |
15e0: 9f 93 push r25 |
15e2: 8f 93 push r24 |
15e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && AnzahlTeilnehmer > 1) AnzahlTeilnehmer--; |
15e8: 0f 90 pop r0 |
15ea: 0f 90 pop r0 |
15ec: 0f 90 pop r0 |
15ee: 0f 90 pop r0 |
15f0: c2 ff sbrs r28, 2 |
15f2: 07 c0 rjmp .+14 ; 0x1602 <Menu+0x13a> |
15f4: 80 91 6c 00 lds r24, 0x006C |
15f8: 82 30 cpi r24, 0x02 ; 2 |
15fa: 18 f0 brcs .+6 ; 0x1602 <Menu+0x13a> |
15fc: 81 50 subi r24, 0x01 ; 1 |
15fe: 80 93 6c 00 sts 0x006C, r24 |
if(key & KEY4 && AnzahlTeilnehmer < 26) AnzahlTeilnehmer++; |
1602: c3 ff sbrs r28, 3 |
1604: 5f c0 rjmp .+190 ; 0x16c4 <Menu+0x1fc> |
1606: 80 91 6c 00 lds r24, 0x006C |
160a: 8a 31 cpi r24, 0x1A ; 26 |
160c: 08 f0 brcs .+2 ; 0x1610 <Menu+0x148> |
160e: 5a c0 rjmp .+180 ; 0x16c4 <Menu+0x1fc> |
1610: 8f 5f subi r24, 0xFF ; 255 |
1612: 80 93 6c 00 sts 0x006C, r24 |
break; |
1616: 56 c0 rjmp .+172 ; 0x16c4 <Menu+0x1fc> |
case 2: |
LCD_printfxy(0,0,"Checksum"); |
1618: 60 e0 ldi r22, 0x00 ; 0 |
161a: 86 2f mov r24, r22 |
161c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1620: 81 ee ldi r24, 0xE1 ; 225 |
1622: 90 e0 ldi r25, 0x00 ; 0 |
1624: 9f 93 push r25 |
1626: 8f 93 push r24 |
1628: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Errors:%5i ",CntCrcError); |
162c: 61 e0 ldi r22, 0x01 ; 1 |
162e: 80 e0 ldi r24, 0x00 ; 0 |
1630: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1634: 0f 90 pop r0 |
1636: 0f 90 pop r0 |
1638: 80 91 99 00 lds r24, 0x0099 |
163c: 90 91 9a 00 lds r25, 0x009A |
1640: 9f 93 push r25 |
1642: 8f 93 push r24 |
1644: 8a ee ldi r24, 0xEA ; 234 |
1646: 90 e0 ldi r25, 0x00 ; 0 |
1648: 9f 93 push r25 |
164a: 8f 93 push r24 |
164c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) CntCrcError = 0; |
1650: 0f 90 pop r0 |
1652: 0f 90 pop r0 |
1654: 0f 90 pop r0 |
1656: 0f 90 pop r0 |
1658: c2 ff sbrs r28, 2 |
165a: 34 c0 rjmp .+104 ; 0x16c4 <Menu+0x1fc> |
165c: 10 92 9a 00 sts 0x009A, r1 |
1660: 10 92 99 00 sts 0x0099, r1 |
break; |
1664: 2f c0 rjmp .+94 ; 0x16c4 <Menu+0x1fc> |
case 3: |
LCD_printfxy(0,0,"Display"); |
1666: 60 e0 ldi r22, 0x00 ; 0 |
1668: 86 2f mov r24, r22 |
166a: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
166e: 86 ef ldi r24, 0xF6 ; 246 |
1670: 90 e0 ldi r25, 0x00 ; 0 |
1672: 9f 93 push r25 |
1674: 8f 93 push r24 |
1676: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Zeilen:%1i ",DisplayZeilen); |
167a: 61 e0 ldi r22, 0x01 ; 1 |
167c: 80 e0 ldi r24, 0x00 ; 0 |
167e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1682: 0f 90 pop r0 |
1684: 0f 90 pop r0 |
1686: 80 91 65 00 lds r24, 0x0065 |
168a: 99 27 eor r25, r25 |
168c: 9f 93 push r25 |
168e: 8f 93 push r24 |
1690: 8e ef ldi r24, 0xFE ; 254 |
1692: 90 e0 ldi r25, 0x00 ; 0 |
1694: 9f 93 push r25 |
1696: 8f 93 push r24 |
1698: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) DisplayZeilen = 4; |
169c: 0f 90 pop r0 |
169e: 0f 90 pop r0 |
16a0: 0f 90 pop r0 |
16a2: 0f 90 pop r0 |
16a4: c2 ff sbrs r28, 2 |
16a6: 03 c0 rjmp .+6 ; 0x16ae <Menu+0x1e6> |
16a8: 84 e0 ldi r24, 0x04 ; 4 |
16aa: 80 93 65 00 sts 0x0065, r24 |
if(key & KEY4) DisplayZeilen = 2; |
16ae: c3 ff sbrs r28, 3 |
16b0: 09 c0 rjmp .+18 ; 0x16c4 <Menu+0x1fc> |
16b2: 82 e0 ldi r24, 0x02 ; 2 |
16b4: 80 93 65 00 sts 0x0065, r24 |
break; |
16b8: 05 c0 rjmp .+10 ; 0x16c4 <Menu+0x1fc> |
/* case 1: |
case 2: |
case 3: |
case 4: |
kanal = MenuePunkt - 1; |
LCD_printfxy(0,0,"Datenkanal:%2i",kanal); |
LCD_printfxy(0,1,"Von:%2i an %2i ",KanalVon[kanal],KanalAn[kanal]); |
if(key & KEY3) KanalVon[kanal]++; |
if(key & KEY4) KanalAn[kanal]++; |
KanalVon[kanal] % MAX_KANAL; |
KanalAn[kanal] % MAX_KANAL; |
break; |
*/ |
/* |
case 1: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Display:%3ims ",IntervallDisplay); |
if(key & KEY3 && IntervallDisplay > 25) IntervallDisplay -= 5; |
if(key & KEY4 && IntervallDisplay < 990) IntervallDisplay += 5; |
break; |
case 2: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Debug:%3ims ",IntervallDebug); |
if(key & KEY3 && IntervallDebug > 25) IntervallDebug -= 5; |
if(key & KEY4 && IntervallDebug < 990) IntervallDebug += 5; |
break; |
case 1: |
LCD_printfxy(0,0,"Time"); |
LCD_printfxy(0,1,"%3i:%02i",Minute,Sekunde); |
if(key & KEY3) if(Minute) Minute--; |
if(key & KEY4) Minute++; |
if(key & KEY5) Sekunde = 0; |
break; |
case 2: |
LCD_printfxy(0,0,"Testvariable"); |
LCD_printfxy(0,1,"TestInt:%5i",TestInt); |
if(key & KEY3) TestInt--; |
if(key & KEY4) TestInt++; |
break; |
case 3: |
LCD_printfxy(0,0,"Testarray"); |
LCD_printfxy(0,1,"Array[%i]=%3i",arr,Array[arr]); |
if(key & KEY5) if(++arr == ARRAYGROESSE) arr = 0; |
if(key & KEY3) Array[arr]--; |
if(key & KEY4) Array[arr]++; |
break; |
case 4: |
LCD_printfxy(0,0,"Infrarot RC5:"); |
LCD_printfxy(0,1,"Adr:%2i Cmd:%3i",(IR_Code >> 8), IR_Code & 0xff); |
break; |
*/ |
default: MaxMenue = MenuePunkt - 1; |
16ba: 21 50 subi r18, 0x01 ; 1 |
16bc: 20 93 7b 00 sts 0x007B, r18 |
MenuePunkt = 0; |
16c0: 10 92 b3 00 sts 0x00B3, r1 |
16c4: df 91 pop r29 |
16c6: cf 91 pop r28 |
16c8: 1f 91 pop r17 |
16ca: 0f 91 pop r16 |
16cc: 08 95 ret |
000016ce <InitIR>: |
// Init IR |
// ************************************************************************ |
void InitIR(void) |
{ |
INT0_ENABLE; // ext. Int0 enable |
16ce: 8b b7 in r24, 0x3b ; 59 |
16d0: 80 64 ori r24, 0x40 ; 64 |
16d2: 8b bf out 0x3b, r24 ; 59 |
CLR_INT0_FLAG; // war |= 0x40 |
16d4: 8a b7 in r24, 0x3a ; 58 |
16d6: 8f 7b andi r24, 0xBF ; 191 |
16d8: 8a bf out 0x3a, r24 ; 58 |
INIT_INT0_FLANKE; |
16da: 85 b7 in r24, 0x35 ; 53 |
16dc: 8c 7f andi r24, 0xFC ; 252 |
16de: 85 bf out 0x35, r24 ; 53 |
16e0: 85 b7 in r24, 0x35 ; 53 |
16e2: 82 60 ori r24, 0x02 ; 2 |
16e4: 85 bf out 0x35, r24 ; 53 |
TIMER0_PRESCALER = 0x04; // Timer0: Clk div 256 |
16e6: 84 e0 ldi r24, 0x04 ; 4 |
16e8: 83 bf out 0x33, r24 ; 51 |
Decodierung_Lauft = 0; |
16ea: 10 92 c9 01 sts 0x01C9, r1 |
New_IR_Code = 0; |
16ee: 10 92 c6 01 sts 0x01C6, r1 |
IR_Code = 0; |
16f2: 10 92 c8 01 sts 0x01C8, r1 |
16f6: 10 92 c7 01 sts 0x01C7, r1 |
16fa: 08 95 ret |
000016fc <__vector_1>: |
} |
// ************************************************************************** |
// * aufgerufen durch: externer Interrupt |
// ************************************************************************** |
// * Die Funktion wird durch einen externen Interrupt aufgerufen. |
// * Sie dient nur zum Starten der Abtastsequenz und zum Triggern auf die |
// * Signalflanken in der Mitte der Daten. |
// ************************************************************************** |
SIGNAL (SIG_INTERRUPT0) |
{ |
16fc: 1f 92 push r1 |
16fe: 0f 92 push r0 |
1700: 0f b6 in r0, 0x3f ; 63 |
1702: 0f 92 push r0 |
1704: 11 24 eor r1, r1 |
1706: 8f 93 push r24 |
// Zeitbasis fuer Timer einstellen |
// Entspricht 1,5 mal einer Bitlaenge |
// PORTB++; |
TCNT0 = -41; |
1708: 87 ed ldi r24, 0xD7 ; 215 |
170a: 82 bf out 0x32, r24 ; 50 |
TIM0_START; // Timer 0 starten, |
170c: 89 b7 in r24, 0x39 ; 57 |
170e: 81 60 ori r24, 0x01 ; 1 |
1710: 89 bf out 0x39, r24 ; 57 |
if(Decodierung_Lauft) INT0_DISABLE; // die erneute Int.-Auslsung soll |
1712: 80 91 c9 01 lds r24, 0x01C9 |
1716: 88 23 and r24, r24 |
1718: 19 f0 breq .+6 ; 0x1720 <__vector_1+0x24> |
171a: 8b b7 in r24, 0x3b ; 59 |
171c: 8f 7b andi r24, 0xBF ; 191 |
171e: 8b bf out 0x3b, r24 ; 59 |
1720: 8f 91 pop r24 |
1722: 0f 90 pop r0 |
1724: 0f be out 0x3f, r0 ; 63 |
1726: 0f 90 pop r0 |
1728: 1f 90 pop r1 |
172a: 18 95 reti |
0000172c <__vector_11>: |
// nur die Timer-Routine erlauben |
} |
// ************************************************************************** |
// * aufgerufen durch: Timerueberlauf Timer 0 |
// ************************************************************************** |
// * Die Funktion wird durch einen Timer0-Interrupt aufgerufen. |
// * Der Timer wird vom ext. Int0 gestartet. |
// * Das Infrarotsignal wird hier abgetastet und die Wertigkeiten der |
// * Bits entsprechend aufaddiert. Das empfangende Zeichen wird in der |
// * globalen Variablen IR_Code gespeichert. Nach Empfang wird das Bit |
// * Neues_Zeichen gesetzt. |
// ************************************************************************** |
SIGNAL (SIG_OVERFLOW0) |
{ |
172c: 1f 92 push r1 |
172e: 0f 92 push r0 |
1730: 0f b6 in r0, 0x3f ; 63 |
1732: 0f 92 push r0 |
1734: 11 24 eor r1, r1 |
1736: 2f 93 push r18 |
1738: 3f 93 push r19 |
173a: 4f 93 push r20 |
173c: 8f 93 push r24 |
173e: 9f 93 push r25 |
static unsigned int Shift,IR_Code_tmp; |
static unsigned char IR_Zaehler=0,IRSperrCounter=0; |
// Reinitialize Timer's 0 value |
TCNT1 = -41; |
1740: 87 ed ldi r24, 0xD7 ; 215 |
1742: 9f ef ldi r25, 0xFF ; 255 |
1744: 9d bd out 0x2d, r25 ; 45 |
1746: 8c bd out 0x2c, r24 ; 44 |
if (IRSperrCounter) |
1748: 80 91 b9 00 lds r24, 0x00B9 |
174c: 88 23 and r24, r24 |
174e: 69 f0 breq .+26 ; 0x176a <__vector_11+0x3e> |
{ IRSperrCounter--; |
1750: 81 50 subi r24, 0x01 ; 1 |
1752: 80 93 b9 00 sts 0x00B9, r24 |
if (!IRSperrCounter) |
1756: 88 23 and r24, r24 |
1758: 09 f0 breq .+2 ; 0x175c <__vector_11+0x30> |
175a: 8a c0 rjmp .+276 ; 0x1870 <__vector_11+0x144> |
{ |
TIM0_STOPP; // Timer0 sperre wird durch ExtInt0 gestartet |
175c: 89 b7 in r24, 0x39 ; 57 |
175e: 8e 7f andi r24, 0xFE ; 254 |
1760: 89 bf out 0x39, r24 ; 57 |
CLR_INT0_FLAG; // IntFlag Loeschen |
1762: 8a b7 in r24, 0x3a ; 58 |
1764: 8f 7b andi r24, 0xBF ; 191 |
1766: 8a bf out 0x3a, r24 ; 58 |
1768: 80 c0 rjmp .+256 ; 0x186a <__vector_11+0x13e> |
INT0_ENABLE; // externen Interrupt wieder freigenben |
} |
} |
else |
{ |
if(IR_Zaehler > 1) |
176a: 40 91 b8 00 lds r20, 0x00B8 |
176e: 42 30 cpi r20, 0x02 ; 2 |
1770: 88 f0 brcs .+34 ; 0x1794 <__vector_11+0x68> |
{ |
Decodierung_Lauft = 1; |
1772: 81 e0 ldi r24, 0x01 ; 1 |
1774: 80 93 c9 01 sts 0x01C9, r24 |
{ |
CLR_INT0_FLAG; // Interrupt Flag loeschen |
1778: 8a b7 in r24, 0x3a ; 58 |
177a: 8f 7b andi r24, 0xBF ; 191 |
177c: 8a bf out 0x3a, r24 ; 58 |
if(IR_PP) INT0_NEG_FLANKE; // naechste fallende Flanke soll Int0 ausloesen |
177e: 82 9b sbis 0x10, 2 ; 16 |
1780: 03 c0 rjmp .+6 ; 0x1788 <__vector_11+0x5c> |
1782: 85 b7 in r24, 0x35 ; 53 |
1784: 8e 7f andi r24, 0xFE ; 254 |
1786: 02 c0 rjmp .+4 ; 0x178c <__vector_11+0x60> |
else INT0_POS_FLANKE; // naechste steigende Flanke soll Int0 ausloesen |
1788: 85 b7 in r24, 0x35 ; 53 |
178a: 81 60 ori r24, 0x01 ; 1 |
178c: 85 bf out 0x35, r24 ; 53 |
INT0_ENABLE; // externen Int frei |
178e: 8b b7 in r24, 0x3b ; 59 |
1790: 80 64 ori r24, 0x40 ; 64 |
1792: 8b bf out 0x3b, r24 ; 59 |
} |
} |
if(!IR_Zaehler) // es beginnt eine neue Abtastung |
1794: 44 23 and r20, r20 |
1796: 59 f4 brne .+22 ; 0x17ae <__vector_11+0x82> |
{ // es handelt sich um das 1. Sync-Bit |
IR_Code_tmp=0; // Merker löschen |
1798: 10 92 b7 00 sts 0x00B7, r1 |
179c: 10 92 b6 00 sts 0x00B6, r1 |
Shift=0x8000; //;8192; // Maske auf MSB |
17a0: 80 e0 ldi r24, 0x00 ; 0 |
17a2: 90 e8 ldi r25, 0x80 ; 128 |
17a4: 90 93 b5 00 sts 0x00B5, r25 |
17a8: 80 93 b4 00 sts 0x00B4, r24 |
17ac: 14 c0 rjmp .+40 ; 0x17d6 <__vector_11+0xaa> |
} |
else |
if(IR_PP==1) // das empfangende Bit ist logisch High |
17ae: 82 9b sbis 0x10, 2 ; 16 |
17b0: 10 c0 rjmp .+32 ; 0x17d2 <__vector_11+0xa6> |
{ if(IR_Zaehler>2) // (IR_Zaehler ist gleich 1 beim 2. Sync-Bit) |
17b2: 43 30 cpi r20, 0x03 ; 3 |
17b4: 70 f0 brcs .+28 ; 0x17d2 <__vector_11+0xa6> |
{ // 2 --> Toggle-Bit (wird übersprungen) |
IR_Code_tmp |= Shift; // entsprechendse Bit setzen |
17b6: 80 91 b6 00 lds r24, 0x00B6 |
17ba: 90 91 b7 00 lds r25, 0x00B7 |
17be: 20 91 b4 00 lds r18, 0x00B4 |
17c2: 30 91 b5 00 lds r19, 0x00B5 |
17c6: 82 2b or r24, r18 |
17c8: 93 2b or r25, r19 |
17ca: 90 93 b7 00 sts 0x00B7, r25 |
17ce: 80 93 b6 00 sts 0x00B6, r24 |
} |
} |
if ((IR_Zaehler < 2) && !(IR_PP==1)) // startbits überprüfen |
17d2: 42 30 cpi r20, 0x02 ; 2 |
17d4: 20 f4 brcc .+8 ; 0x17de <__vector_11+0xb2> |
17d6: 82 99 sbic 0x10, 2 ; 16 |
17d8: 02 c0 rjmp .+4 ; 0x17de <__vector_11+0xb2> |
{ |
IR_Zaehler = 0; |
17da: 10 92 b8 00 sts 0x00B8, r1 |
} |
Shift >>=1; // Shiftregister um 1 nach rechts schieben |
17de: 80 91 b4 00 lds r24, 0x00B4 |
17e2: 90 91 b5 00 lds r25, 0x00B5 |
17e6: 96 95 lsr r25 |
17e8: 87 95 ror r24 |
17ea: 90 93 b5 00 sts 0x00B5, r25 |
17ee: 80 93 b4 00 sts 0x00B4, r24 |
// (für das nächste empf. Bit |
if (Shift == 128) Shift = 32; // Adresse ins HighByte, Kommando ins LowByte |
17f2: 80 38 cpi r24, 0x80 ; 128 |
17f4: 91 05 cpc r25, r1 |
17f6: 31 f4 brne .+12 ; 0x1804 <__vector_11+0xd8> |
17f8: 80 e2 ldi r24, 0x20 ; 32 |
17fa: 90 e0 ldi r25, 0x00 ; 0 |
17fc: 90 93 b5 00 sts 0x00B5, r25 |
1800: 80 93 b4 00 sts 0x00B4, r24 |
if(IR_Zaehler++==15) // Das IR-Wort wurde vollstaendig abgetastet |
1804: 80 91 b8 00 lds r24, 0x00B8 |
1808: 8f 5f subi r24, 0xFF ; 255 |
180a: 80 93 b8 00 sts 0x00B8, r24 |
180e: 80 31 cpi r24, 0x10 ; 16 |
1810: 79 f5 brne .+94 ; 0x1870 <__vector_11+0x144> |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
1812: 8a b7 in r24, 0x3a ; 58 |
1814: 8f 7b andi r24, 0xBF ; 191 |
1816: 8a bf out 0x3a, r24 ; 58 |
INT0_NEG_FLANKE; // fallende Flanke |
1818: 85 b7 in r24, 0x35 ; 53 |
181a: 8e 7f andi r24, 0xFE ; 254 |
181c: 85 bf out 0x35, r24 ; 53 |
IR_Zaehler = 0; |
181e: 10 92 b8 00 sts 0x00B8, r1 |
Decodierung_Lauft=0; |
1822: 10 92 c9 01 sts 0x01C9, r1 |
/* if ((HIGH(IR_Code_tmp)==ALLOWED1)|| (HIGH(IR_Code_tmp)==ALLOWED2)|| |
(HIGH(IR_Code_tmp)==ALLOWED3)||(HIGH(IR_Code_tmp)==ALLOWED4)|| |
(HIGH(IR_Code_tmp)==ALLOWED5) ) |
if ((HIGH(IR_Code_tmp)< 10))*/ |
if ((HIGH(IR_Code_tmp)< 10 ) && (LOW(IR_Code_tmp)!=0x3F) ) |
1826: 80 91 b7 00 lds r24, 0x00B7 |
182a: 8a 30 cpi r24, 0x0A ; 10 |
182c: d8 f4 brcc .+54 ; 0x1864 <__vector_11+0x138> |
182e: 80 91 b6 00 lds r24, 0x00B6 |
1832: 8f 33 cpi r24, 0x3F ; 63 |
1834: b9 f0 breq .+46 ; 0x1864 <__vector_11+0x138> |
{ // nur erlaubt Adressen werden akzepetiert |
IR_Code=IR_Code_tmp; // IR-Wort in die globale Variable schreiben |
1836: 80 91 b6 00 lds r24, 0x00B6 |
183a: 90 91 b7 00 lds r25, 0x00B7 |
183e: 90 93 c8 01 sts 0x01C8, r25 |
1842: 80 93 c7 01 sts 0x01C7, r24 |
New_IR_Code = 1; // Es ist ein neues Zeichen eingetragen worden |
1846: 81 e0 ldi r24, 0x01 ; 1 |
1848: 80 93 c6 01 sts 0x01C6, r24 |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
184c: 84 e0 ldi r24, 0x04 ; 4 |
184e: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
1852: 8b b7 in r24, 0x3b ; 59 |
1854: 80 64 ori r24, 0x40 ; 64 |
1856: 8b bf out 0x3b, r24 ; 59 |
LoescheIrCodeTimer = 250; |
1858: 8a ef ldi r24, 0xFA ; 250 |
185a: 90 e0 ldi r25, 0x00 ; 0 |
185c: 90 93 7d 00 sts 0x007D, r25 |
1860: 80 93 7c 00 sts 0x007C, r24 |
} |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
1864: 84 e0 ldi r24, 0x04 ; 4 |
1866: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
186a: 8b b7 in r24, 0x3b ; 59 |
186c: 80 64 ori r24, 0x40 ; 64 |
186e: 8b bf out 0x3b, r24 ; 59 |
1870: 9f 91 pop r25 |
1872: 8f 91 pop r24 |
1874: 4f 91 pop r20 |
1876: 3f 91 pop r19 |
1878: 2f 91 pop r18 |
187a: 0f 90 pop r0 |
187c: 0f be out 0x3f, r0 ; 63 |
187e: 0f 90 pop r0 |
1880: 1f 90 pop r1 |
1882: 18 95 reti |
00001884 <ADC_Init>: |
// --------------------------------------------------------------------------------------- |
void ADC_Init(void) |
{ |
ADMUX = 0; |
1884: 17 b8 out 0x07, r1 ; 7 |
ADCSRA = 0x86; |
1886: 86 e8 ldi r24, 0x86 ; 134 |
1888: 86 b9 out 0x06, r24 ; 6 |
188a: 08 95 ret |
0000188c <ReadADC>: |
} |
// --------------------------------------------------------------------------------------- |
unsigned int ReadADC(unsigned char adc_input) |
{ |
ADMUX = adc_input; |
188c: 87 b9 out 0x07, r24 ; 7 |
ADCSRA |= 0x40; |
188e: 36 9a sbi 0x06, 6 ; 6 |
//Delay_ms(10); |
while ((ADCSRA & 0x10) == 0); |
1890: 34 9b sbis 0x06, 4 ; 6 |
1892: fe cf rjmp .-4 ; 0x1890 <ReadADC+0x4> |
ADCSRA |= 0x10; |
1894: 34 9a sbi 0x06, 4 ; 6 |
return ADCW; // read ad and calc. temp. |
1896: 84 b1 in r24, 0x04 ; 4 |
1898: 95 b1 in r25, 0x05 ; 5 |
189a: 08 95 ret |
0000189c <GetAnalogWerte>: |
} |
void GetAnalogWerte(void) |
{ |
AnalogWerte[0] = ReadADC(0); |
189c: 80 e0 ldi r24, 0x00 ; 0 |
189e: 0e 94 46 0c call 0x188c <ReadADC> |
18a2: 90 93 cb 01 sts 0x01CB, r25 |
18a6: 80 93 ca 01 sts 0x01CA, r24 |
AnalogWerte[1] = ReadADC(1); |
18aa: 81 e0 ldi r24, 0x01 ; 1 |
18ac: 0e 94 46 0c call 0x188c <ReadADC> |
18b0: 90 93 cd 01 sts 0x01CD, r25 |
18b4: 80 93 cc 01 sts 0x01CC, r24 |
AnalogWerte[2] = ReadADC(2); |
18b8: 82 e0 ldi r24, 0x02 ; 2 |
18ba: 0e 94 46 0c call 0x188c <ReadADC> |
18be: 90 93 cf 01 sts 0x01CF, r25 |
18c2: 80 93 ce 01 sts 0x01CE, r24 |
18c6: 08 95 ret |
000018c8 <memchr>: |
18c8: fc 01 movw r30, r24 |
18ca: 41 50 subi r20, 0x01 ; 1 |
18cc: 50 40 sbci r21, 0x00 ; 0 |
18ce: 30 f0 brcs .+12 ; 0x18dc <memchr+0x14> |
18d0: 01 90 ld r0, Z+ |
18d2: 06 16 cp r0, r22 |
18d4: d1 f7 brne .-12 ; 0x18ca <memchr+0x2> |
18d6: 31 97 sbiw r30, 0x01 ; 1 |
18d8: cf 01 movw r24, r30 |
18da: 08 95 ret |
18dc: 88 27 eor r24, r24 |
18de: 99 27 eor r25, r25 |
18e0: 08 95 ret |
000018e2 <fdevopen>: |
18e2: 0f 93 push r16 |
18e4: 1f 93 push r17 |
18e6: cf 93 push r28 |
18e8: df 93 push r29 |
18ea: 8c 01 movw r16, r24 |
18ec: eb 01 movw r28, r22 |
18ee: 00 97 sbiw r24, 0x00 ; 0 |
18f0: 11 f4 brne .+4 ; 0x18f6 <fdevopen+0x14> |
18f2: 67 2b or r22, r23 |
18f4: c1 f1 breq .+112 ; 0x1966 <fdevopen+0x84> |
18f6: 6e e0 ldi r22, 0x0E ; 14 |
18f8: 70 e0 ldi r23, 0x00 ; 0 |
18fa: 81 e0 ldi r24, 0x01 ; 1 |
18fc: 90 e0 ldi r25, 0x00 ; 0 |
18fe: 0e 94 b8 0c call 0x1970 <calloc> |
1902: fc 01 movw r30, r24 |
1904: 89 2b or r24, r25 |
1906: 71 f1 breq .+92 ; 0x1964 <fdevopen+0x82> |
1908: 80 e8 ldi r24, 0x80 ; 128 |
190a: 83 83 std Z+3, r24 ; 0x03 |
190c: 20 97 sbiw r28, 0x00 ; 0 |
190e: 71 f0 breq .+28 ; 0x192c <fdevopen+0x4a> |
1910: d3 87 std Z+11, r29 ; 0x0b |
1912: c2 87 std Z+10, r28 ; 0x0a |
1914: 81 e8 ldi r24, 0x81 ; 129 |
1916: 83 83 std Z+3, r24 ; 0x03 |
1918: 80 91 d0 01 lds r24, 0x01D0 |
191c: 90 91 d1 01 lds r25, 0x01D1 |
1920: 89 2b or r24, r25 |
1922: 21 f4 brne .+8 ; 0x192c <fdevopen+0x4a> |
1924: f0 93 d1 01 sts 0x01D1, r31 |
1928: e0 93 d0 01 sts 0x01D0, r30 |
192c: 01 15 cp r16, r1 |
192e: 11 05 cpc r17, r1 |
1930: c9 f0 breq .+50 ; 0x1964 <fdevopen+0x82> |
1932: 11 87 std Z+9, r17 ; 0x09 |
1934: 00 87 std Z+8, r16 ; 0x08 |
1936: 83 81 ldd r24, Z+3 ; 0x03 |
1938: 82 60 ori r24, 0x02 ; 2 |
193a: 83 83 std Z+3, r24 ; 0x03 |
193c: 80 91 d2 01 lds r24, 0x01D2 |
1940: 90 91 d3 01 lds r25, 0x01D3 |
1944: 89 2b or r24, r25 |
1946: 71 f4 brne .+28 ; 0x1964 <fdevopen+0x82> |
1948: f0 93 d3 01 sts 0x01D3, r31 |
194c: e0 93 d2 01 sts 0x01D2, r30 |
1950: 80 91 d4 01 lds r24, 0x01D4 |
1954: 90 91 d5 01 lds r25, 0x01D5 |
1958: 89 2b or r24, r25 |
195a: 21 f4 brne .+8 ; 0x1964 <fdevopen+0x82> |
195c: f0 93 d5 01 sts 0x01D5, r31 |
1960: e0 93 d4 01 sts 0x01D4, r30 |
1964: cf 01 movw r24, r30 |
1966: df 91 pop r29 |
1968: cf 91 pop r28 |
196a: 1f 91 pop r17 |
196c: 0f 91 pop r16 |
196e: 08 95 ret |
00001970 <calloc>: |
1970: 0f 93 push r16 |
1972: 1f 93 push r17 |
1974: cf 93 push r28 |
1976: df 93 push r29 |
1978: 86 9f mul r24, r22 |
197a: 80 01 movw r16, r0 |
197c: 87 9f mul r24, r23 |
197e: 10 0d add r17, r0 |
1980: 96 9f mul r25, r22 |
1982: 10 0d add r17, r0 |
1984: 11 24 eor r1, r1 |
1986: c8 01 movw r24, r16 |
1988: 0e 94 d4 0c call 0x19a8 <malloc> |
198c: ec 01 movw r28, r24 |
198e: 00 97 sbiw r24, 0x00 ; 0 |
1990: 29 f0 breq .+10 ; 0x199c <calloc+0x2c> |
1992: a8 01 movw r20, r16 |
1994: 60 e0 ldi r22, 0x00 ; 0 |
1996: 70 e0 ldi r23, 0x00 ; 0 |
1998: 0e 94 ca 0d call 0x1b94 <memset> |
199c: ce 01 movw r24, r28 |
199e: df 91 pop r29 |
19a0: cf 91 pop r28 |
19a2: 1f 91 pop r17 |
19a4: 0f 91 pop r16 |
19a6: 08 95 ret |
000019a8 <malloc>: |
19a8: cf 93 push r28 |
19aa: df 93 push r29 |
19ac: ac 01 movw r20, r24 |
19ae: 02 97 sbiw r24, 0x02 ; 2 |
19b0: 10 f4 brcc .+4 ; 0x19b6 <malloc+0xe> |
19b2: 42 e0 ldi r20, 0x02 ; 2 |
19b4: 50 e0 ldi r21, 0x00 ; 0 |
19b6: 20 e0 ldi r18, 0x00 ; 0 |
19b8: 30 e0 ldi r19, 0x00 ; 0 |
19ba: a0 91 d8 01 lds r26, 0x01D8 |
19be: b0 91 d9 01 lds r27, 0x01D9 |
19c2: bd 01 movw r22, r26 |
19c4: f9 01 movw r30, r18 |
19c6: 10 97 sbiw r26, 0x00 ; 0 |
19c8: 09 f4 brne .+2 ; 0x19cc <malloc+0x24> |
19ca: 4c c0 rjmp .+152 ; 0x1a64 <malloc+0xbc> |
19cc: 8d 91 ld r24, X+ |
19ce: 9c 91 ld r25, X |
19d0: 11 97 sbiw r26, 0x01 ; 1 |
19d2: 84 17 cp r24, r20 |
19d4: 95 07 cpc r25, r21 |
19d6: 31 f1 breq .+76 ; 0x1a24 <malloc+0x7c> |
19d8: 48 17 cp r20, r24 |
19da: 59 07 cpc r21, r25 |
19dc: 38 f4 brcc .+14 ; 0x19ec <malloc+0x44> |
19de: 21 15 cp r18, r1 |
19e0: 31 05 cpc r19, r1 |
19e2: 19 f0 breq .+6 ; 0x19ea <malloc+0x42> |
19e4: 82 17 cp r24, r18 |
19e6: 93 07 cpc r25, r19 |
19e8: 08 f4 brcc .+2 ; 0x19ec <malloc+0x44> |
19ea: 9c 01 movw r18, r24 |
19ec: fd 01 movw r30, r26 |
19ee: a2 81 ldd r26, Z+2 ; 0x02 |
19f0: b3 81 ldd r27, Z+3 ; 0x03 |
19f2: 10 97 sbiw r26, 0x00 ; 0 |
19f4: 59 f7 brne .-42 ; 0x19cc <malloc+0x24> |
19f6: 21 15 cp r18, r1 |
19f8: 31 05 cpc r19, r1 |
19fa: a1 f1 breq .+104 ; 0x1a64 <malloc+0xbc> |
19fc: c9 01 movw r24, r18 |
19fe: 84 1b sub r24, r20 |
1a00: 95 0b sbc r25, r21 |
1a02: 04 97 sbiw r24, 0x04 ; 4 |
1a04: 08 f4 brcc .+2 ; 0x1a08 <malloc+0x60> |
1a06: a9 01 movw r20, r18 |
1a08: db 01 movw r26, r22 |
1a0a: e0 e0 ldi r30, 0x00 ; 0 |
1a0c: f0 e0 ldi r31, 0x00 ; 0 |
1a0e: 10 97 sbiw r26, 0x00 ; 0 |
1a10: 49 f1 breq .+82 ; 0x1a64 <malloc+0xbc> |
1a12: 8d 91 ld r24, X+ |
1a14: 9c 91 ld r25, X |
1a16: 11 97 sbiw r26, 0x01 ; 1 |
1a18: 82 17 cp r24, r18 |
1a1a: 93 07 cpc r25, r19 |
1a1c: f9 f4 brne .+62 ; 0x1a5c <malloc+0xb4> |
1a1e: 42 17 cp r20, r18 |
1a20: 53 07 cpc r21, r19 |
1a22: 79 f4 brne .+30 ; 0x1a42 <malloc+0x9a> |
1a24: ed 01 movw r28, r26 |
1a26: 8a 81 ldd r24, Y+2 ; 0x02 |
1a28: 9b 81 ldd r25, Y+3 ; 0x03 |
1a2a: 30 97 sbiw r30, 0x00 ; 0 |
1a2c: 19 f0 breq .+6 ; 0x1a34 <malloc+0x8c> |
1a2e: 93 83 std Z+3, r25 ; 0x03 |
1a30: 82 83 std Z+2, r24 ; 0x02 |
1a32: 04 c0 rjmp .+8 ; 0x1a3c <malloc+0x94> |
1a34: 90 93 d9 01 sts 0x01D9, r25 |
1a38: 80 93 d8 01 sts 0x01D8, r24 |
1a3c: cd 01 movw r24, r26 |
1a3e: 02 96 adiw r24, 0x02 ; 2 |
1a40: 4a c0 rjmp .+148 ; 0x1ad6 <malloc+0x12e> |
1a42: 24 1b sub r18, r20 |
1a44: 35 0b sbc r19, r21 |
1a46: fd 01 movw r30, r26 |
1a48: e2 0f add r30, r18 |
1a4a: f3 1f adc r31, r19 |
1a4c: 41 93 st Z+, r20 |
1a4e: 51 93 st Z+, r21 |
1a50: 22 50 subi r18, 0x02 ; 2 |
1a52: 30 40 sbci r19, 0x00 ; 0 |
1a54: 2d 93 st X+, r18 |
1a56: 3c 93 st X, r19 |
1a58: cf 01 movw r24, r30 |
1a5a: 3d c0 rjmp .+122 ; 0x1ad6 <malloc+0x12e> |
1a5c: fd 01 movw r30, r26 |
1a5e: a2 81 ldd r26, Z+2 ; 0x02 |
1a60: b3 81 ldd r27, Z+3 ; 0x03 |
1a62: d5 cf rjmp .-86 ; 0x1a0e <malloc+0x66> |
1a64: 80 91 d6 01 lds r24, 0x01D6 |
1a68: 90 91 d7 01 lds r25, 0x01D7 |
1a6c: 89 2b or r24, r25 |
1a6e: 41 f4 brne .+16 ; 0x1a80 <malloc+0xd8> |
1a70: 80 91 80 00 lds r24, 0x0080 |
1a74: 90 91 81 00 lds r25, 0x0081 |
1a78: 90 93 d7 01 sts 0x01D7, r25 |
1a7c: 80 93 d6 01 sts 0x01D6, r24 |
1a80: e0 91 7e 00 lds r30, 0x007E |
1a84: f0 91 7f 00 lds r31, 0x007F |
1a88: 30 97 sbiw r30, 0x00 ; 0 |
1a8a: 41 f4 brne .+16 ; 0x1a9c <malloc+0xf4> |
1a8c: ed b7 in r30, 0x3d ; 61 |
1a8e: fe b7 in r31, 0x3e ; 62 |
1a90: 80 91 82 00 lds r24, 0x0082 |
1a94: 90 91 83 00 lds r25, 0x0083 |
1a98: e8 1b sub r30, r24 |
1a9a: f9 0b sbc r31, r25 |
1a9c: a0 91 d6 01 lds r26, 0x01D6 |
1aa0: b0 91 d7 01 lds r27, 0x01D7 |
1aa4: 9f 01 movw r18, r30 |
1aa6: 2a 1b sub r18, r26 |
1aa8: 3b 0b sbc r19, r27 |
1aaa: 24 17 cp r18, r20 |
1aac: 35 07 cpc r19, r21 |
1aae: 88 f0 brcs .+34 ; 0x1ad2 <malloc+0x12a> |
1ab0: ca 01 movw r24, r20 |
1ab2: 02 96 adiw r24, 0x02 ; 2 |
1ab4: 28 17 cp r18, r24 |
1ab6: 39 07 cpc r19, r25 |
1ab8: 60 f0 brcs .+24 ; 0x1ad2 <malloc+0x12a> |
1aba: cd 01 movw r24, r26 |
1abc: 84 0f add r24, r20 |
1abe: 95 1f adc r25, r21 |
1ac0: 02 96 adiw r24, 0x02 ; 2 |
1ac2: 90 93 d7 01 sts 0x01D7, r25 |
1ac6: 80 93 d6 01 sts 0x01D6, r24 |
1aca: 4d 93 st X+, r20 |
1acc: 5d 93 st X+, r21 |
1ace: cd 01 movw r24, r26 |
1ad0: 02 c0 rjmp .+4 ; 0x1ad6 <malloc+0x12e> |
1ad2: 80 e0 ldi r24, 0x00 ; 0 |
1ad4: 90 e0 ldi r25, 0x00 ; 0 |
1ad6: df 91 pop r29 |
1ad8: cf 91 pop r28 |
1ada: 08 95 ret |
00001adc <free>: |
1adc: cf 93 push r28 |
1ade: df 93 push r29 |
1ae0: 00 97 sbiw r24, 0x00 ; 0 |
1ae2: 09 f4 brne .+2 ; 0x1ae6 <free+0xa> |
1ae4: 54 c0 rjmp .+168 ; 0x1b8e <free+0xb2> |
1ae6: dc 01 movw r26, r24 |
1ae8: 12 97 sbiw r26, 0x02 ; 2 |
1aea: ed 01 movw r28, r26 |
1aec: 1b 82 std Y+3, r1 ; 0x03 |
1aee: 1a 82 std Y+2, r1 ; 0x02 |
1af0: 80 91 d8 01 lds r24, 0x01D8 |
1af4: 90 91 d9 01 lds r25, 0x01D9 |
1af8: 00 97 sbiw r24, 0x00 ; 0 |
1afa: 21 f1 breq .+72 ; 0x1b44 <free+0x68> |
1afc: fc 01 movw r30, r24 |
1afe: 40 e0 ldi r20, 0x00 ; 0 |
1b00: 50 e0 ldi r21, 0x00 ; 0 |
1b02: ea 17 cp r30, r26 |
1b04: fb 07 cpc r31, r27 |
1b06: 18 f1 brcs .+70 ; 0x1b4e <free+0x72> |
1b08: ed 01 movw r28, r26 |
1b0a: fb 83 std Y+3, r31 ; 0x03 |
1b0c: ea 83 std Y+2, r30 ; 0x02 |
1b0e: 2d 91 ld r18, X+ |
1b10: 3c 91 ld r19, X |
1b12: 11 97 sbiw r26, 0x01 ; 1 |
1b14: c2 0f add r28, r18 |
1b16: d3 1f adc r29, r19 |
1b18: ce 01 movw r24, r28 |
1b1a: 02 96 adiw r24, 0x02 ; 2 |
1b1c: 8e 17 cp r24, r30 |
1b1e: 9f 07 cpc r25, r31 |
1b20: 71 f4 brne .+28 ; 0x1b3e <free+0x62> |
1b22: 8a 81 ldd r24, Y+2 ; 0x02 |
1b24: 9b 81 ldd r25, Y+3 ; 0x03 |
1b26: 28 0f add r18, r24 |
1b28: 39 1f adc r19, r25 |
1b2a: 2e 5f subi r18, 0xFE ; 254 |
1b2c: 3f 4f sbci r19, 0xFF ; 255 |
1b2e: 11 96 adiw r26, 0x01 ; 1 |
1b30: 3c 93 st X, r19 |
1b32: 2e 93 st -X, r18 |
1b34: 82 81 ldd r24, Z+2 ; 0x02 |
1b36: 93 81 ldd r25, Z+3 ; 0x03 |
1b38: fd 01 movw r30, r26 |
1b3a: 93 83 std Z+3, r25 ; 0x03 |
1b3c: 82 83 std Z+2, r24 ; 0x02 |
1b3e: 41 15 cp r20, r1 |
1b40: 51 05 cpc r21, r1 |
1b42: 59 f4 brne .+22 ; 0x1b5a <free+0x7e> |
1b44: b0 93 d9 01 sts 0x01D9, r27 |
1b48: a0 93 d8 01 sts 0x01D8, r26 |
1b4c: 20 c0 rjmp .+64 ; 0x1b8e <free+0xb2> |
1b4e: af 01 movw r20, r30 |
1b50: 02 80 ldd r0, Z+2 ; 0x02 |
1b52: f3 81 ldd r31, Z+3 ; 0x03 |
1b54: e0 2d mov r30, r0 |
1b56: 30 97 sbiw r30, 0x00 ; 0 |
1b58: a1 f6 brne .-88 ; 0x1b02 <free+0x26> |
1b5a: ea 01 movw r28, r20 |
1b5c: bb 83 std Y+3, r27 ; 0x03 |
1b5e: aa 83 std Y+2, r26 ; 0x02 |
1b60: ca 01 movw r24, r20 |
1b62: 02 96 adiw r24, 0x02 ; 2 |
1b64: 28 81 ld r18, Y |
1b66: 39 81 ldd r19, Y+1 ; 0x01 |
1b68: 82 0f add r24, r18 |
1b6a: 93 1f adc r25, r19 |
1b6c: 8a 17 cp r24, r26 |
1b6e: 9b 07 cpc r25, r27 |
1b70: 71 f4 brne .+28 ; 0x1b8e <free+0xb2> |
1b72: 8d 91 ld r24, X+ |
1b74: 9c 91 ld r25, X |
1b76: 11 97 sbiw r26, 0x01 ; 1 |
1b78: 28 0f add r18, r24 |
1b7a: 39 1f adc r19, r25 |
1b7c: 2e 5f subi r18, 0xFE ; 254 |
1b7e: 3f 4f sbci r19, 0xFF ; 255 |
1b80: 39 83 std Y+1, r19 ; 0x01 |
1b82: 28 83 st Y, r18 |
1b84: fd 01 movw r30, r26 |
1b86: 82 81 ldd r24, Z+2 ; 0x02 |
1b88: 93 81 ldd r25, Z+3 ; 0x03 |
1b8a: 9b 83 std Y+3, r25 ; 0x03 |
1b8c: 8a 83 std Y+2, r24 ; 0x02 |
1b8e: df 91 pop r29 |
1b90: cf 91 pop r28 |
1b92: 08 95 ret |
00001b94 <memset>: |
1b94: dc 01 movw r26, r24 |
1b96: 40 ff sbrs r20, 0 |
1b98: 03 c0 rjmp .+6 ; 0x1ba0 <memset+0xc> |
1b9a: 01 c0 rjmp .+2 ; 0x1b9e <memset+0xa> |
1b9c: 6d 93 st X+, r22 |
1b9e: 6d 93 st X+, r22 |
1ba0: 42 50 subi r20, 0x02 ; 2 |
1ba2: 50 40 sbci r21, 0x00 ; 0 |
1ba4: d8 f7 brcc .-10 ; 0x1b9c <memset+0x8> |
1ba6: 08 95 ret |
00001ba8 <__udivmodsi4>: |
1ba8: a1 e2 ldi r26, 0x21 ; 33 |
1baa: 1a 2e mov r1, r26 |
1bac: aa 1b sub r26, r26 |
1bae: bb 1b sub r27, r27 |
1bb0: fd 01 movw r30, r26 |
1bb2: 0d c0 rjmp .+26 ; 0x1bce <__udivmodsi4_ep> |
00001bb4 <__udivmodsi4_loop>: |
1bb4: aa 1f adc r26, r26 |
1bb6: bb 1f adc r27, r27 |
1bb8: ee 1f adc r30, r30 |
1bba: ff 1f adc r31, r31 |
1bbc: a2 17 cp r26, r18 |
1bbe: b3 07 cpc r27, r19 |
1bc0: e4 07 cpc r30, r20 |
1bc2: f5 07 cpc r31, r21 |
1bc4: 20 f0 brcs .+8 ; 0x1bce <__udivmodsi4_ep> |
1bc6: a2 1b sub r26, r18 |
1bc8: b3 0b sbc r27, r19 |
1bca: e4 0b sbc r30, r20 |
1bcc: f5 0b sbc r31, r21 |
00001bce <__udivmodsi4_ep>: |
1bce: 66 1f adc r22, r22 |
1bd0: 77 1f adc r23, r23 |
1bd2: 88 1f adc r24, r24 |
1bd4: 99 1f adc r25, r25 |
1bd6: 1a 94 dec r1 |
1bd8: 69 f7 brne .-38 ; 0x1bb4 <__udivmodsi4_loop> |
1bda: 60 95 com r22 |
1bdc: 70 95 com r23 |
1bde: 80 95 com r24 |
1be0: 90 95 com r25 |
1be2: 9b 01 movw r18, r22 |
1be4: ac 01 movw r20, r24 |
1be6: bd 01 movw r22, r26 |
1be8: cf 01 movw r24, r30 |
1bea: 08 95 ret |
/tags/V0.35/main.map |
---|
0,0 → 1,764 |
Archive member included because of file (symbol) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o (__udivmodsi4) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
main.o (__do_copy_data) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
main.o (__do_clear_bss) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o (memchr) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o (fdevopen) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (__iob) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (calloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (malloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (memset) |
Allocating common symbols |
Common symbol size file |
SendeBuffer 0x64 uart.o |
Debug_Timer 0x2 main.o |
Debug_Display_Timer |
0x2 main.o |
__brkval 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
DebugIn 0xb main.o |
VersionInfo 0xa main.o |
New_IR_Code 0x1 ir.o |
RxdBuffer 0x64 uart.o |
AnalogWerte 0x6 analog.o |
IR_Code 0x2 ir.o |
KanalVon 0x8 menu.o |
Decodierung_Lauft 0x1 ir.o |
DebugOut 0x1a main.o |
KanalAn 0x8 menu.o |
__flp 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
PollDisplay 0x1 main.o |
__iob 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
Memory Configuration |
Name Origin Length Attributes |
text 0x00000000 0x00020000 xr |
data 0x00800060 0x0000ffa0 rw !x |
eeprom 0x00810000 0x00010000 rw !x |
*default* 0x00000000 0xffffffff |
Linker script and memory map |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
LOAD main.o |
LOAD uart.o |
LOAD lcd.o |
LOAD printf_P.o |
LOAD timer0.o |
LOAD keyboard.o |
LOAD menu.o |
LOAD ir.o |
LOAD analog.o |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libm.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
.hash |
*(.hash) |
.dynsym |
*(.dynsym) |
.dynstr |
*(.dynstr) |
.gnu.version |
*(.gnu.version) |
.gnu.version_d |
*(.gnu.version_d) |
.gnu.version_r |
*(.gnu.version_r) |
.rel.init |
*(.rel.init) |
.rela.init |
*(.rela.init) |
.rel.text |
*(.rel.text) |
*(.rel.text.*) |
*(.rel.gnu.linkonce.t*) |
.rela.text |
*(.rela.text) |
*(.rela.text.*) |
*(.rela.gnu.linkonce.t*) |
.rel.fini |
*(.rel.fini) |
.rela.fini |
*(.rela.fini) |
.rel.rodata |
*(.rel.rodata) |
*(.rel.rodata.*) |
*(.rel.gnu.linkonce.r*) |
.rela.rodata |
*(.rela.rodata) |
*(.rela.rodata.*) |
*(.rela.gnu.linkonce.r*) |
.rel.data |
*(.rel.data) |
*(.rel.data.*) |
*(.rel.gnu.linkonce.d*) |
.rela.data |
*(.rela.data) |
*(.rela.data.*) |
*(.rela.gnu.linkonce.d*) |
.rel.ctors |
*(.rel.ctors) |
.rela.ctors |
*(.rela.ctors) |
.rel.dtors |
*(.rel.dtors) |
.rela.dtors |
*(.rela.dtors) |
.rel.got |
*(.rel.got) |
.rela.got |
*(.rela.got) |
.rel.bss |
*(.rel.bss) |
.rela.bss |
*(.rela.bss) |
.rel.plt |
*(.rel.plt) |
.rela.plt |
*(.rela.plt) |
.text 0x00000000 0x1c18 |
*(.vectors) |
.vectors 0x00000000 0x54 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000000 __vectors |
0x00000000 __vector_default |
0x00000054 __ctors_start = . |
*(.ctors) |
0x00000054 __ctors_end = . |
0x00000054 __dtors_start = . |
*(.dtors) |
0x00000054 __dtors_end = . |
*(.progmem.gcc*) |
*(.progmem*) |
.progmem.data 0x00000054 0x54 main.o |
.progmem.data 0x000000a8 0xc uart.o |
.progmem.data 0x000000b4 0x56 menu.o |
0x0000010a . = ALIGN (0x2) |
*(.init0) |
*(.init1) |
*(.init2) |
.init2 0x0000010a 0xc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.init3) |
*(.init4) |
.init4 0x00000116 0x16 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
0x00000116 __do_copy_data |
.init4 0x0000012c 0x10 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
0x0000012c __do_clear_bss |
*(.init5) |
*(.init6) |
*(.init7) |
*(.init8) |
*(.init9) |
.init9 0x0000013c 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.text) |
.text 0x00000140 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000140 __vector_12 |
0x00000140 __bad_interrupt |
0x00000140 __vector_6 |
0x00000140 __vector_3 |
0x00000140 __vector_17 |
0x00000140 __vector_19 |
0x00000140 __vector_7 |
0x00000140 __vector_5 |
0x00000140 __vector_4 |
0x00000140 __vector_2 |
0x00000140 __vector_8 |
0x00000140 __vector_14 |
0x00000140 __vector_10 |
0x00000140 __vector_16 |
0x00000140 __vector_18 |
0x00000140 __vector_20 |
.text 0x00000144 0x282 main.o |
0x000001b4 Init |
0x00000156 Sekundentakt |
0x000001ca main |
0x00000144 Sekundentakt_Init |
.text 0x000003c6 0x7e6 uart.o |
0x000009f8 WriteProgramData |
0x00000a16 SendeRemoteTasten |
0x000009fa UART_Init |
0x00000430 __vector_13 |
0x0000080a BearbeiteRxDaten |
0x00000abe ClearIntervalle |
0x00000a76 SendIntervalle |
0x000005de AddCRC |
0x00000b04 DatenUebertragung |
0x00000732 Decode64 |
0x000003c6 __vector_15 |
0x0000064a SendOutData |
0x000009dc uart_putchar |
.text 0x00000bac 0x1b2 lcd.o |
0x00000cc4 LCD_Gotoxy |
0x00000c4e my_pput |
0x00000c08 _lcd_write_4bit |
0x00000bcc _short_delay |
0x00000c26 lcd_write_byte |
0x00000bdc _lcd_write_command |
0x00000c58 LCD_Init |
0x00000d48 LCD_Putchar |
0x00000d12 LCD_Write |
0x00000bac _long_delay |
.text 0x00000d5e 0x58a printf_P.o |
0x00000de0 _printf_P |
0x00000dc8 PAD_0 |
0x00000d86 PRINTP |
0x00000d5e PRINT |
0x00000db0 PAD_SP |
.text 0x000012e8 0xd6 timer0.o |
0x0000137c SetDelay |
0x0000138e CheckDelay |
0x000013a4 Delay_ms |
0x000012e8 __vector_9 |
0x00001368 Timer1_Init |
.text 0x000013be 0x136 keyboard.o |
0x000014da GetKeyboard2 |
0x000013be Keyboard_Init |
0x000013d0 GetKeyboard |
.text 0x000014f4 0x206 menu.o |
0x000014f4 Menu |
.text 0x000016fa 0x1b6 ir.o |
0x00001728 __vector_1 |
0x00001758 __vector_11 |
0x000016fa InitIR |
.text 0x000018b0 0x44 analog.o |
0x000018c8 GetAnalogWerte |
0x000018b8 ReadADC |
0x000018b0 ADC_Init |
.text 0x000018f4 0x1a C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
0x000018f4 memchr |
.text 0x0000190e 0x8e C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
0x0000190e fdevopen |
.text 0x0000199c 0x38 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
0x0000199c calloc |
.text 0x000019d4 0x1ec C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x000019d4 malloc |
0x00001b08 free |
.text 0x00001bc0 0x14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
0x00001bc0 memset |
0x00001bd4 . = ALIGN (0x2) |
*(.text.*) |
.text.libgcc 0x00001bd4 0x44 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
0x00001bd4 __udivmodsi4 |
0x00001c18 . = ALIGN (0x2) |
*(.fini9) |
*(.fini8) |
*(.fini7) |
*(.fini6) |
*(.fini5) |
*(.fini4) |
*(.fini3) |
*(.fini2) |
*(.fini1) |
*(.fini0) |
0x00001c18 _etext = . |
.data 0x00800060 0x24 load address 0x00001c18 |
0x00800060 PROVIDE (__data_start, .) |
*(.data) |
.data 0x00800060 0xc main.o |
0x00800065 DisplayZeilen |
0x00800064 SlaveAdresse |
0x00800066 CntDatensaetzeProSekunde |
0x00800062 IntervallDebug |
0x00800060 IntervallDisplay |
.data 0x0080006c 0x5 uart.o |
0x0080006e UebertragungAbgeschlossen |
0x0080006c AnzahlTeilnehmer |
0x0080006d ErwarteAntwort |
.data 0x00800071 0xb menu.o |
0x00800071 Array |
.data 0x0080007c 0x2 ir.o |
0x0080007c LoescheIrCodeTimer |
.data 0x0080007e 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x00800080 __malloc_heap_start |
0x0080007e __malloc_heap_end |
0x00800082 __malloc_margin |
*(.gnu.linkonce.d*) |
0x00800084 . = ALIGN (0x2) |
0x00800084 _edata = . |
0x00800084 PROVIDE (__data_end, .) |
.bss 0x00800084 0x157 |
0x00800084 PROVIDE (__bss_start, .) |
*(.bss) |
.bss 0x00800084 0xe main.o |
0x00800087 DebugGetAnforderung |
0x00800088 Debug_Display_Intervall |
0x00800086 GetVersionAnforderung |
0x0080008d Sekunde |
0x00800085 SendeDummyDaten |
0x0080008e _TastTimer |
0x0080008c Minute |
0x0080008a Debug_Timer_Intervall |
0x00800084 UebertragungUnterbrochen |
0x00800090 _SekTimer |
.bss 0x00800092 0x14 uart.o |
0x0080009d SioTmp |
0x00800098 PC_DebugTimeout |
0x0080009c NeuerDatensatzEmpfangen |
0x0080009a CntCrcError |
0x00800097 TX_DigTransferKanalL |
0x00800094 DisplayBusy |
0x00800092 WaitTXD |
0x00800099 AnzahlEmpfangsBytes |
0x00800095 TX_DigTransferKanalDaten |
0x00800093 AntwortEingetroffen |
0x00800096 TX_DigTransferKanalH |
.bss 0x008000a6 0x3 timer0.o |
0x008000a6 CountMilliseconds |
.bss 0x008000a9 0x7 keyboard.o |
0x008000a9 KeyTimer |
.bss 0x008000b0 0x5 menu.o |
0x008000b0 TestInt |
.bss 0x008000b5 0x6 ir.o |
*(COMMON) |
COMMON 0x008000bb 0x34 main.o |
0x008000bb Debug_Timer |
0x008000bd Debug_Display_Timer |
0x008000bf DebugIn |
0x008000ca VersionInfo |
0x008000d4 DebugOut |
0x008000ee PollDisplay |
COMMON 0x008000ef 0xc8 uart.o |
0x008000ef SendeBuffer |
0x00800153 RxdBuffer |
COMMON 0x008001b7 0x10 menu.o |
0x008001b7 KanalVon |
0x008001bf KanalAn |
COMMON 0x008001c7 0x4 ir.o |
0x008001c7 New_IR_Code |
0x008001c8 IR_Code |
0x008001ca Decodierung_Lauft |
COMMON 0x008001cb 0x6 analog.o |
0x008001cb AnalogWerte |
COMMON 0x008001d1 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
0x008001d1 __iob |
COMMON 0x008001d7 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x008001d7 __brkval |
0x008001d9 __flp |
0x008001db PROVIDE (__bss_end, .) |
0x00001c18 __data_load_start = LOADADDR (.data) |
0x00001c3c __data_load_end = (__data_load_start + SIZEOF (.data)) |
.noinit 0x008001db 0x0 |
0x008001db PROVIDE (__noinit_start, .) |
*(.noinit*) |
0x008001db PROVIDE (__noinit_end, .) |
0x008001db _end = . |
0x008001db PROVIDE (__heap_start, .) |
.eeprom 0x00810000 0x0 |
*(.eeprom*) |
0x00810000 __eeprom_end = . |
.stab 0x00000000 0x36c |
*(.stab) |
.stab 0x00000000 0x36c C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stabstr 0x00000000 0x84 |
*(.stabstr) |
.stabstr 0x00000000 0x84 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stab.excl |
*(.stab.excl) |
.stab.exclstr |
*(.stab.exclstr) |
.stab.index |
*(.stab.index) |
.stab.indexstr |
*(.stab.indexstr) |
.comment |
*(.comment) |
.debug |
*(.debug) |
.line |
*(.line) |
.debug_srcinfo |
*(.debug_srcinfo) |
.debug_sfnames |
*(.debug_sfnames) |
.debug_aranges 0x00000000 0xb4 |
*(.debug_aranges) |
.debug_aranges |
0x00000000 0x14 main.o |
.debug_aranges |
0x00000014 0x14 uart.o |
.debug_aranges |
0x00000028 0x14 lcd.o |
.debug_aranges |
0x0000003c 0x14 printf_P.o |
.debug_aranges |
0x00000050 0x14 timer0.o |
.debug_aranges |
0x00000064 0x14 keyboard.o |
.debug_aranges |
0x00000078 0x14 menu.o |
.debug_aranges |
0x0000008c 0x14 ir.o |
.debug_aranges |
0x000000a0 0x14 analog.o |
.debug_pubnames |
0x00000000 0x701 |
*(.debug_pubnames) |
.debug_pubnames |
0x00000000 0x1e1 main.o |
.debug_pubnames |
0x000001e1 0x240 uart.o |
.debug_pubnames |
0x00000421 0xb7 lcd.o |
.debug_pubnames |
0x000004d8 0x4a printf_P.o |
.debug_pubnames |
0x00000522 0x70 timer0.o |
.debug_pubnames |
0x00000592 0x52 keyboard.o |
.debug_pubnames |
0x000005e4 0x4a menu.o |
.debug_pubnames |
0x0000062e 0x85 ir.o |
.debug_pubnames |
0x000006b3 0x4e analog.o |
.debug_info 0x00000000 0x1a6c |
*(.debug_info) |
.debug_info 0x00000000 0x469 main.o |
.debug_info 0x00000469 0x7ba uart.o |
.debug_info 0x00000c23 0x260 lcd.o |
.debug_info 0x00000e83 0x45d printf_P.o |
.debug_info 0x000012e0 0x1d7 timer0.o |
.debug_info 0x000014b7 0x177 keyboard.o |
.debug_info 0x0000162e 0x1a7 menu.o |
.debug_info 0x000017d5 0x171 ir.o |
.debug_info 0x00001946 0x126 analog.o |
*(.gnu.linkonce.wi.*) |
.debug_abbrev 0x00000000 0x774 |
*(.debug_abbrev) |
.debug_abbrev 0x00000000 0x10c main.o |
.debug_abbrev 0x0000010c 0x178 uart.o |
.debug_abbrev 0x00000284 0xbc lcd.o |
.debug_abbrev 0x00000340 0x132 printf_P.o |
.debug_abbrev 0x00000472 0xc5 timer0.o |
.debug_abbrev 0x00000537 0x87 keyboard.o |
.debug_abbrev 0x000005be 0xb6 menu.o |
.debug_abbrev 0x00000674 0x76 ir.o |
.debug_abbrev 0x000006ea 0x8a analog.o |
.debug_line 0x00000000 0x16a3 |
*(.debug_line) |
.debug_line 0x00000000 0x2aa main.o |
.debug_line 0x000002aa 0x4c4 uart.o |
.debug_line 0x0000076e 0x279 lcd.o |
.debug_line 0x000009e7 0x4e2 printf_P.o |
.debug_line 0x00000ec9 0x180 timer0.o |
.debug_line 0x00001049 0x170 keyboard.o |
.debug_line 0x000011b9 0x19a menu.o |
.debug_line 0x00001353 0x212 ir.o |
.debug_line 0x00001565 0x13e analog.o |
.debug_frame |
*(.debug_frame) |
.debug_str 0x00000000 0x889 |
*(.debug_str) |
.debug_str 0x00000000 0x2e2 main.o |
0x371 (size before relaxing) |
.debug_str 0x000002e2 0x26b uart.o |
0x423 (size before relaxing) |
.debug_str 0x0000054d 0x9a lcd.o |
0x17b (size before relaxing) |
.debug_str 0x000005e7 0xf9 printf_P.o |
0x1bd (size before relaxing) |
.debug_str 0x000006e0 0x6b timer0.o |
0x168 (size before relaxing) |
.debug_str 0x0000074b 0x5e keyboard.o |
0x13f (size before relaxing) |
.debug_str 0x000007a9 0x40 menu.o |
0x15e (size before relaxing) |
.debug_str 0x000007e9 0x6d ir.o |
0x169 (size before relaxing) |
.debug_str 0x00000856 0x33 analog.o |
0x120 (size before relaxing) |
.debug_loc |
*(.debug_loc) |
.debug_macinfo |
*(.debug_macinfo) |
OUTPUT(main.elf elf32-avr) |
Cross Reference Table |
Symbol File |
ADC_Init analog.o |
main.o |
AddCRC uart.o |
AnalogWerte analog.o |
uart.o |
AntwortEingetroffen uart.o |
AnzahlEmpfangsBytes uart.o |
AnzahlTeilnehmer uart.o |
menu.o |
Array menu.o |
BearbeiteRxDaten uart.o |
main.o |
CheckDelay timer0.o |
keyboard.o |
main.o |
ClearIntervalle uart.o |
main.o |
CntCrcError uart.o |
menu.o |
CntDatensaetzeProSekunde main.o |
uart.o |
CountMilliseconds timer0.o |
DatenUebertragung uart.o |
main.o |
DebugGetAnforderung main.o |
DebugIn uart.o |
main.o |
DebugOut uart.o |
main.o |
Debug_Display_Intervall main.o |
Debug_Display_Timer main.o |
Debug_Timer main.o |
Debug_Timer_Intervall main.o |
Decode64 uart.o |
Decodierung_Lauft ir.o |
Delay_ms timer0.o |
main.o |
DisplayBusy uart.o |
timer0.o |
DisplayZeilen main.o |
menu.o |
uart.o |
ErwarteAntwort uart.o |
GetAnalogWerte analog.o |
main.o |
GetKeyboard keyboard.o |
main.o |
GetKeyboard2 keyboard.o |
main.o |
GetVersionAnforderung main.o |
IR_Code ir.o |
timer0.o |
uart.o |
Init main.o |
InitIR ir.o |
main.o |
IntervallDebug main.o |
IntervallDisplay main.o |
KanalAn menu.o |
KanalVon menu.o |
KeyTimer keyboard.o |
Keyboard_Init keyboard.o |
main.o |
LCD_Gotoxy lcd.o |
menu.o |
uart.o |
main.o |
LCD_Init lcd.o |
main.o |
LCD_Putchar lcd.o |
printf_P.o |
LCD_Write lcd.o |
LoescheIrCodeTimer ir.o |
timer0.o |
Menu menu.o |
main.o |
Minute main.o |
NeuerDatensatzEmpfangen uart.o |
New_IR_Code ir.o |
PAD_0 printf_P.o |
PAD_SP printf_P.o |
PC_DebugTimeout uart.o |
PRINT printf_P.o |
PRINTP printf_P.o |
PollDisplay uart.o |
main.o |
ReadADC analog.o |
RxdBuffer uart.o |
Sekunde main.o |
Sekundentakt main.o |
Sekundentakt_Init main.o |
SendIntervalle uart.o |
SendOutData uart.o |
SendeBuffer uart.o |
SendeDummyDaten main.o |
SendeRemoteTasten uart.o |
SetDelay timer0.o |
keyboard.o |
main.o |
SioTmp uart.o |
SlaveAdresse main.o |
menu.o |
uart.o |
TX_DigTransferKanalDaten uart.o |
TX_DigTransferKanalH uart.o |
TX_DigTransferKanalL uart.o |
TestInt menu.o |
Timer1_Init timer0.o |
main.o |
UART_Init uart.o |
main.o |
UebertragungAbgeschlossen uart.o |
UebertragungUnterbrochen main.o |
VersionInfo main.o |
WaitTXD uart.o |
timer0.o |
WriteProgramData uart.o |
_SekTimer main.o |
_TastTimer main.o |
__bad_interrupt C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__brkval C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__bss_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__bss_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__data_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_load_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__do_clear_bss C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__do_copy_data C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__flp C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__init C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__iob C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
__malloc_heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_margin C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__stack C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
main.o |
__udivmodsi4 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o |
__vector_1 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_10 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_11 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_12 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_13 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_15 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_16 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_17 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_18 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_19 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_20 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_3 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_5 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_7 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_8 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_9 timer0.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_default C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vectors C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
_lcd_write_4bit lcd.o |
_lcd_write_command lcd.o |
menu.o |
main.o |
_long_delay lcd.o |
menu.o |
main.o |
_printf_P printf_P.o |
menu.o |
uart.o |
main.o |
_short_delay lcd.o |
calloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
fdevopen C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o |
free C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
lcd_write_byte lcd.o |
main main.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
malloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
memchr C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o |
memset C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
my_pput lcd.o |
uart_putchar uart.o |
/tags/V0.35/main.sym |
---|
0,0 → 1,253 |
00000000 W __heap_end |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 W __vector_default |
00000000 T __vectors |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
00000054 t __c.0 |
00000054 T __ctors_end |
00000054 T __ctors_start |
00000054 T __dtors_end |
00000054 T __dtors_start |
00000069 t __c.1 |
0000007e t __c.2 |
00000093 t __c.3 |
000000a8 t __c.2 |
000000ab t __c.3 |
000000ae t __c.4 |
000000b1 t __c.5 |
000000b4 t __c.3 |
000000c2 t __c.4 |
000000d0 t __c.5 |
000000dc t __c.6 |
000000e1 t __c.7 |
000000ea t __c.8 |
000000f6 t __c.9 |
000000fe t __c.10 |
0000010a W __init |
00000116 T __do_copy_data |
00000122 t .do_copy_data_loop |
00000126 t .do_copy_data_start |
0000012c T __do_clear_bss |
00000134 t .do_clear_bss_loop |
00000136 t .do_clear_bss_start |
00000140 T __bad_interrupt |
00000140 W __vector_10 |
00000140 W __vector_12 |
00000140 W __vector_14 |
00000140 W __vector_16 |
00000140 W __vector_17 |
00000140 W __vector_18 |
00000140 W __vector_19 |
00000140 W __vector_2 |
00000140 W __vector_20 |
00000140 W __vector_3 |
00000140 W __vector_4 |
00000140 W __vector_5 |
00000140 W __vector_6 |
00000140 W __vector_7 |
00000140 W __vector_8 |
00000144 T Sekundentakt_Init |
00000156 T Sekundentakt |
000001b4 T Init |
000001ca T main |
000003c6 T __vector_15 |
00000430 T __vector_13 |
000005de T AddCRC |
0000063c T SendOutData |
00000724 T Decode64 |
000007fc T BearbeiteRxDaten |
0000085f W __stack |
0000097a T uart_putchar |
00000996 T WriteProgramData |
00000998 T UART_Init |
000009b4 T SendeRemoteTasten |
00000a14 T SendIntervalle |
00000a5c T ClearIntervalle |
00000aa2 T DatenUebertragung |
00000b92 T _long_delay |
00000bb2 T _short_delay |
00000bc2 T _lcd_write_command |
00000bee T _lcd_write_4bit |
00000c0c T lcd_write_byte |
00000c34 T my_pput |
00000c3e T LCD_Init |
00000caa T LCD_Gotoxy |
00000cf8 T LCD_Write |
00000d2e T LCD_Putchar |
00000d44 T PRINT |
00000d6c T PRINTP |
00000d96 T PAD_SP |
00000dae T PAD_0 |
00000dc6 T _printf_P |
000012ce T __vector_9 |
0000133c T Timer1_Init |
00001350 T SetDelay |
00001362 T CheckDelay |
00001378 T Delay_ms |
00001392 T Keyboard_Init |
000013a4 T GetKeyboard |
000014ae T GetKeyboard2 |
000014c8 T Menu |
000016ce T InitIR |
000016fc T __vector_1 |
0000172c T __vector_11 |
00001884 T ADC_Init |
0000188c T ReadADC |
0000189c T GetAnalogWerte |
000018c8 T memchr |
000018e2 T fdevopen |
00001970 T calloc |
000019a8 T malloc |
00001adc T free |
00001b94 T memset |
00001ba8 T __udivmodsi4 |
00001bb4 t __udivmodsi4_loop |
00001bce t __udivmodsi4_ep |
00001bec A __data_load_start |
00001bec T _etext |
00001c10 A __data_load_end |
00800060 D __data_start |
00800060 D IntervallDisplay |
00800062 D IntervallDebug |
00800064 D SlaveAdresse |
00800065 D DisplayZeilen |
00800066 D CntDatensaetzeProSekunde |
0080006c D AnzahlTeilnehmer |
0080006d D ErwarteAntwort |
0080006e D UebertragungAbgeschlossen |
0080006f d state.0 |
00800070 d KanalSlave.1 |
00800071 D Array |
0080007b d MaxMenue.1 |
0080007c D LoescheIrCodeTimer |
0080007e D __malloc_heap_end |
00800080 D __malloc_heap_start |
00800082 D __malloc_margin |
00800084 B __bss_start |
00800084 D __data_end |
00800084 D _edata |
00800084 B UebertragungUnterbrochen |
00800085 B SendeDummyDaten |
00800086 B GetVersionAnforderung |
00800087 B DebugGetAnforderung |
00800088 B Debug_Display_Intervall |
0080008a B Debug_Timer_Intervall |
0080008c B Minute |
0080008d B Sekunde |
0080008e B _TastTimer |
00800090 B _SekTimer |
00800092 B AntwortEingetroffen |
00800093 B DisplayBusy |
00800094 B TX_DigTransferKanalDaten |
00800095 B TX_DigTransferKanalH |
00800096 B TX_DigTransferKanalL |
00800097 B PC_DebugTimeout |
00800098 B AnzahlEmpfangsBytes |
00800099 B CntCrcError |
0080009b B NeuerDatensatzEmpfangen |
0080009c B SioTmp |
0080009d b ptr.11 |
0080009f b crc.6 |
008000a1 b crc1.7 |
008000a2 b crc2.8 |
008000a3 b buf_ptr.9 |
008000a4 b UartState.10 |
008000a5 B CountMilliseconds |
008000a7 b cnt_10ms.0 |
008000a8 B KeyTimer |
008000aa b taste1.0 |
008000ab b taste2.1 |
008000ac b taste3.2 |
008000ad b taste4.3 |
008000ae b taste5.4 |
008000af B TestInt |
008000b1 b arr.0 |
008000b3 b MenuePunkt.2 |
008000b4 b Shift.0 |
008000b6 b IR_Code_tmp.1 |
008000b8 b IR_Zaehler.2 |
008000b9 b IRSperrCounter.3 |
008000ba B Debug_Timer |
008000bc B Debug_Display_Timer |
008000be B DebugIn |
008000c9 B VersionInfo |
008000d3 B DebugOut |
008000ed B PollDisplay |
008000ee B SendeBuffer |
00800152 B RxdBuffer |
008001b6 B KanalVon |
008001be B KanalAn |
008001c6 B New_IR_Code |
008001c7 B IR_Code |
008001c9 B Decodierung_Lauft |
008001ca B AnalogWerte |
008001d0 B __iob |
008001d6 B __brkval |
008001d8 B __flp |
008001da B __bss_end |
008001da ? __heap_start |
008001da ? _end |
00810000 ? __eeprom_end |
/tags/V0.35/makefile |
---|
0,0 → 1,386 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega8 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 35 |
#------------------------------------------------------------------- |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
TARGET = BrushLess-Ctrl_V$(HAUPT_VERSION)_$(NEBEN_VERSION) |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c timer0.c analog.c PPM_Decode.c twislave.c BLMC.c |
#printf_P.c |
########################################################################################################## |
# If there is more than one source file, append them above, or modify and |
# uncomment the following: |
#SRC += foo.c bar.c |
# You can also wrap lines by appending a backslash to the end of the line: |
#SRC += baz.c \ |
#xyzzy.c |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -g -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) |
ifeq ($(AVR_CTRL_PLATINE), 1) |
CFLAGS += -DAVR_CTRL_PLATINE=$(AVR_CTRL_PLATINE) |
endif |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
#AVRDUDE_FLAGS += -V -E noreset |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
# $(REMOVE) $(TARGET).eep |
# $(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/tags/V0.35/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/tags/V0.35/timer0.c |
---|
0,0 → 1,59 |
/***************************************************************************** |
*****************************************************************************/ |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile unsigned char Timer0Overflow; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL(SIG_OVERFLOW0) |
{ |
static unsigned char cnt; |
Timer0Overflow++; |
if(!cnt--) |
{ |
cnt = 3; |
CountMilliseconds += 1; |
if(I2C_Timeout) I2C_Timeout--; |
if(PPM_Timeout) PPM_Timeout--; else anz_ppm_werte = 0; |
if(SIO_Timeout) SIO_Timeout--; |
} |
} |
void Timer0_Init(void) |
{ |
TCCR0 = TIMER_TEILER; |
// TCNT0 = -TIMER_RELOAD_VALUE; // reload |
TIM0_START; |
TIMER2_INT_ENABLE; |
} |
unsigned int SetDelay(unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
} |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
} |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
/tags/V0.35/timer0.h |
---|
0,0 → 1,15 |
#if defined (__AVR_ATmega8__) |
#define TIMER_TEILER CK8 |
//#define TIMER_RELOAD_VALUE 125 |
#endif |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char Timer0Overflow; |
void Timer1_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
/tags/V0.35/twislave.c |
---|
0,0 → 1,75 |
/*############################################################################ |
Slaveadr = 0x52 = Vorne, 0x54 = Hinten, 0x56 = Rechts, 0x58 = Links |
############################################################################*/ |
#include <avr/io.h> |
#include <util/twi.h> |
#include "main.h" |
unsigned char I2C_RXBuffer; |
unsigned char Byte_Counter=0; |
//############################################################################ |
//I2C (TWI) Interface Init |
void InitIC2_Slave(uint8_t adr) |
//############################################################################ |
{ |
TWAR = adr + (2*MotorAdresse); // Eigene Adresse setzen |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
//############################################################################ |
//ISR, die bei einem Ereignis auf dem Bus ausgelöst wird. Im Register TWSR befindet |
//sich dann ein Statuscode, anhand dessen die Situation festgestellt werden kann. |
ISR (TWI_vect) |
//############################################################################ |
{ |
switch (TWSR & 0xF8) |
{ |
case SR_SLA_ACK: |
TWCR |= (1<<TWINT); |
Byte_Counter=0; |
return; |
// Daten Empfangen |
case SR_PREV_ACK: |
I2C_RXBuffer = TWDR; |
I2C_Timeout = 500; |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_SLA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_DATA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_2: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_1: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
} |
TWCR =(1<<TWEA) | (1<<TWINT) | (1<<TWEN) | (1<<TWIE); // TWI Reset |
} |
/tags/V0.35/twislave.h |
---|
0,0 → 1,32 |
#ifndef _TWI_SLAVE_H_ |
#define _TWI_SLAVE_H_ |
extern unsigned char I2C_RXBuffer; |
extern unsigned char Byte_Counter; |
extern void InitIC2_Slave (uint8_t adr); |
#define TWI_BUS_ERR_1 0x00 |
#define TWI_BUS_ERR_2 0xF8 |
// Status Slave RX Mode |
#define SR_SLA_ACK 0x60 |
#define SR_LOST_ACK 0x68 |
#define SR_GEN_CALL_ACK 0x70 |
#define GEN_LOST_ACK 0x78 |
#define SR_PREV_ACK 0x80 |
#define SR_PREV_NACK 0x88 |
#define GEN_PREV_ACK 0x90 |
#define GEN_PREV_NACK 0x98 |
#define STOP_CONDITION 0xA0 |
#define REPEATED_START 0xA0 |
// Status Slave TX mode |
#define SW_SLA_ACK 0xA8 |
#define SW_LOST_ACK 0xB0 |
#define SW_DATA_ACK 0xB8 |
#define SW_DATA_NACK 0xC0 |
#define SW_LAST_ACK 0xC8 |
#endif |
/tags/V0.35/uart.c |
---|
0,0 → 1,277 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + (c) 01.2007 Holger Buss |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Keine Garantie auf Fehlerfreiheit |
// + Kommerzielle Nutzung nur mit meiner Zustimmung |
// + Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
// + www.mikrocontroller.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
#define MAX_SENDE_BUFF 100 |
#define MAX_EMPFANGS_BUFF 100 |
unsigned volatile char SIO_Sollwert = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned char MeineSlaveAdresse; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
struct str_DebugOut DebugOut; |
int Debug_Timer; |
SIGNAL(INT_VEC_TX) |
{ |
} |
void SendUart(void) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!(UCSRA & 0x40)) return; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
USR |= (1<TXC); |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
#if X3D_SIO == 1 |
static unsigned char serPacketCounter = 100; |
SioTmp = UDR; |
if(SioTmp == 0xF5) // Startzeichen |
{ |
serPacketCounter = 0; |
} |
else |
{ |
if(++serPacketCounter == MotorAdresse) // (1-4) |
{ |
SIO_Sollwert = SioTmp; |
SIO_Timeout = 200; // werte für 200ms gültig |
} |
else |
{ |
if(serPacketCounter > 100) serPacketCounter = 100; |
} |
} |
#else |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; }; |
if(CrcOkay) // Datensatz schon verarbeitet |
{ |
//NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
uart_putchar(RxdBuffer[2]); |
if (RxdBuffer[2] == 't') // Motortest |
{ Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
SIO_Sollwert = MotorTest[MotorAdresse - 1]; |
SIO_Timeout = 500; // werte für 500ms gültig |
} |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
#endif |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); // serieller Empfangsinterrupt |
// TX-Interrupt Freigabe |
// UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR= (SYSCLK / (BAUD_RATE * 8L) -1 ); |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
Debug_Timer = SetDelay(200); |
// Version beim Start ausgeben (nicht schön, aber geht... ) |
uart_putchar ('\n');uart_putchar ('B');uart_putchar ('L');uart_putchar (':'); |
uart_putchar ('V');uart_putchar (0x30 + VERSION_HAUPTVERSION);uart_putchar ('.');uart_putchar (0x30 + VERSION_NEBENVERSION/10); uart_putchar (0x30 + VERSION_NEBENVERSION%10); |
uart_putchar ('\n');uart_putchar ('A');uart_putchar ('D');uart_putchar ('R'); uart_putchar (':'); uart_putchar (0x30 + MotorAdresse); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen)) // im Singlestep-Betrieb in jedem Schtitt senden |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
Debug_Timer = SetDelay(50); // Sendeintervall |
} |
} |
/tags/V0.35/uart.h |
---|
0,0 → 1,81 |
#ifndef _UART_H |
#define _UART_H |
extern unsigned volatile char SIO_Sollwert; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned char MeineSlaveAdresse; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void SendUart(void); |
struct str_DebugOut |
{ |
unsigned char Digital[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned int Analog[8]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
//Die Baud_Rate der Seriellen Schnittstelle |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
#if X3D_SIO == 1 |
#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#else |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
#endif |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega8__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/tags/V0.36/BLMC.c |
---|
0,0 → 1,247 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Copyright (c) 12.2007 Holger Buss |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung oder Nutzung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile unsigned char Phase = 0,ShadowTCCR1A = 0; |
volatile unsigned char CompFreigabeTimer = 100; |
volatile unsigned char CompInterruptFreigabe = 0; |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW2) |
//############################################################################ |
{ |
} |
//############################################################################ |
// + Interruptroutine |
// + Wird durch den Analogkomperator ausgelöst |
// + Dadurch wird das Kommutieren erzeugt |
SIGNAL(SIG_COMPARATOR) |
//############################################################################ |
{ |
unsigned char sense = 0; |
do |
{ |
if(SENSE_H) sense = 1; else sense = 0; |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
if(sense) |
{ |
STEUER_C_L; |
if(!PPM_Betrieb) TCNT1 = 1; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_FALLING_INT; |
SENSE_B; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_L; |
} |
break; |
case 1: |
STEUER_C_L; |
if(!sense) |
{ |
STEUER_B_H; |
if(!PPM_Betrieb) TCNT1 = 1; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_H; |
} |
break; |
case 2: |
STEUER_B_H; |
if(sense) |
{ |
STEUER_A_L; |
if(!PPM_Betrieb) TCNT1 = 1; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_L; |
} |
break; |
case 3: |
STEUER_A_L; |
if(!sense) |
{ |
STEUER_C_H; |
if(!PPM_Betrieb) TCNT1 = 1; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_B; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_H; |
} |
break; |
case 4: |
STEUER_C_H; |
if(sense) |
{ |
STEUER_B_L; |
if(!PPM_Betrieb) TCNT1 = 1; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_L; |
} |
break; |
case 5: |
STEUER_B_L; |
if(!sense) |
{ |
STEUER_A_H; |
if(!PPM_Betrieb) TCNT1 = 1; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_RISING_INT; |
Phase = 0; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_H; |
} |
break; |
} |
} |
while((SENSE_L && sense) || (SENSE_H && !sense)); |
ZeitZumAdWandeln = 0; |
} |
//############################################################################ |
// |
void Manuell(void) |
//############################################################################ |
{ |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
STEUER_B_L; |
SENSE_C; |
SENSE_RISING_INT; |
break; |
case 1: |
STEUER_A_H; |
STEUER_C_L; |
SENSE_B; |
SENSE_FALLING_INT; |
break; |
case 2: |
STEUER_B_H; |
STEUER_C_L; |
SENSE_A; |
SENSE_RISING_INT; |
break; |
case 3: |
STEUER_B_H; |
STEUER_A_L; |
SENSE_C; |
SENSE_FALLING_INT; |
break; |
case 4: |
STEUER_C_H; |
STEUER_A_L; |
SENSE_B; |
SENSE_RISING_INT; |
break; |
case 5: |
STEUER_C_H; |
STEUER_B_L; |
SENSE_A; |
SENSE_FALLING_INT; |
break; |
} |
} |
/tags/V0.36/BLMC.h |
---|
0,0 → 1,93 |
/*############################################################################ |
############################################################################*/ |
#ifndef BLMC_H_ |
#define BLMC_H_ |
extern volatile unsigned char Phase; |
extern volatile unsigned char ShadowTCCR1A; |
extern volatile unsigned char CompInterruptFreigabe; |
void Blc(void); |
void Manuell(void); |
// anselm |
/* |
#define COM1A ((0 << COM1A0) | (1 << COM1A1)) // COM1A-> OC1A non inverting mode |
#define COM1B ((0 << COM1B0) | (1 << COM1B1)) // COM1B-> OC1B non inverting mode |
#define COM2 ((0 << COM20) | (1 << COM21)) // COM2-> OC2 non inverting mode |
#ifdef _32KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> fast PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (1 << WGM21) | (1 << CS20)) // WGM20:21-> fast PWM, no prescale |
#endif |
#ifdef _16KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> phase corr, PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (0 << WGM21) | (1 << CS20)) // WGM20:21-> phase corr. PWM, no prescale |
#endif |
#define PWM_C_ON {TCCR1A = COM1A | WGM1 | COM1B; TCCR2 = WGMCS2; |
DDRB = 0x02;} // Steuer_C+ output |
#define PWM_B_ON {TCCR1A = COM1B | WGM1 | COM1A; TCCR2 = WGMCS2; \ |
DDRB = 0x04;} // Steuer_B+ output |
#define PWM_A_ON {TCCR1A = WGM1; TCCR2 = COM2 | WGMCS2; \ |
DDRB = 0x08;} // Steuer_A+ output |
#define PWM_OFF {TCCR1A = WGM1; \ |
TCCR2 = WGMCS2; \ |
PORTB &= ~0x0E; DDRB = 0x0E;} // OC1x & OC2 disconnected, Steuer_X+ output low |
// anselm |
*/ |
#ifdef _32KHZ |
#define PWM_C_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xAD; TCCR2 = 0x69;DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x0D; TCCR2 = 0x49;PORTC &= ~0x0E;} |
#endif |
#ifdef _16KHZ |
// #define PWM_C_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0A;} |
// #define PWM_B_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0C;} |
// #define PWM_A_ON {TCCR1A = 0xA2; TCCR2 = 0x61; DDRB = 0x08;} |
#define PWM_C_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0A;} else { TCCR1A = 0x81; DDRB = 0x0E;}} |
#define PWM_B_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0C;} else { TCCR1A = 0x21; DDRB = 0x0E;}} |
#define PWM_A_ON {TCCR2 = 0x61; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x08;} else { TCCR1A = 0x01; DDRB = 0x0E;}} |
// #define PWM_C_ON {TCCR1A = 0x82; TCCR2 = 0x41; PORTB &= ~0x04; DDRB = 0x0E;} |
// #define PWM_B_ON {TCCR1A = 0x22; TCCR2 = 0x41; PORTB &= ~0x02; DDRB = 0x0E;} |
// #define PWM_A_ON {TCCR1A = 0x02; TCCR2 = 0x61; PORTB &= ~0x06; DDRB = 0x0E;} |
#define PWM_OFF {TCCR1A = 0x01; TCCR2 = 0x41; DDRB = 0x0E; PORTB &= ~0x0E;} |
#endif |
#define STEUER_A_H {PWM_A_ON} |
#define STEUER_B_H {PWM_B_ON} |
#define STEUER_C_H {PWM_C_ON} |
#define STEUER_A_L {PORTD &= ~0x30; PORTD |= 0x08;} |
#define STEUER_B_L {PORTD &= ~0x28; PORTD |= 0x10;} |
#define STEUER_C_L {PORTD &= ~0x18; PORTD |= 0x20;} |
#define STEUER_OFF {PORTD &= ~0x38; PWM_OFF; } |
#define FETS_OFF {PORTD &= ~0x38; PORTB &= ~0x0E; } |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
#define ENABLE_SENSE_INT {CompInterruptFreigabe = 1;ACSR |= 0x0A; } |
#define DISABLE_SENSE_INT {CompInterruptFreigabe = 0; ACSR &= ~0x08; } |
#define SENSE_FALLING_INT ACSR &= ~0x01 |
#define SENSE_RISING_INT ACSR |= 0x03 |
#define SENSE_TOGGLE_INT ACSR &= ~0x03 |
#endif //BLMC_H_ |
/tags/V0.36/BL_Ctrl.pnproj |
---|
0,0 → 1,0 |
<Project name="avr_ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="analog.h"></File><File path="analog.c"></File><File path="PPM_Decode.c"></File><File path="PPM_Decode.h"></File><File path="twislave.c"></File><File path="twislave.h"></File><File path="BLMC.c"></File><File path="BLMC.h"></File></Project> |
/tags/V0.36/BL_Ctrl.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="avr_ctrl" x="true"></e></ViewState></pd> |
/tags/V0.36/Hex-Files/BL-Ctrl_V1_0/BootLoader_MEGA8_8MHZ_V0_2.hex |
---|
0,0 → 1,53 |
:101C000011241FBECFE5D4E0DEBFCDBF10E0A0E6BB |
:101C1000B0E0E0E3FFE102C005900D92A036B1070D |
:101C2000D9F710E0A0E6B0E001C01D92A23AB107DA |
:101C3000E1F714C000C008955D9BFECF8CB90895F4 |
:101C40005F9BFECF8CB1992708958DE4F5DF8BE47F |
:101C5000F3DF82E4F1DF8CE4EFDF0895CFE5D4E039 |
:101C6000DEBFCDBFE0E0F0E004917F01992481B7B1 |
:101C7000885081BF90BC80E189B9599A88E18AB9BE |
:101C800086E880BDEF01192D5F9B0BC0113029F450 |
:101C90008CB18A3A49F110E004C08CB18B3109F45F |
:101CA00011E0CE01219684369105C8F00F3F41F036 |
:101CB000002331F0E0916000F091610009950FC0C0 |
:101CC0008AE0BADF8DE0B8DF86E5B6DF80E3B4DF17 |
:101CD0008EE2B2DF82E3B0DF8AE3AEDF05C080E2EE |
:101CE0009EE40197F1F7D0CFB0DFAADF813611F47F |
:101CF00089E51CC1813461F4A3DFE82EFF24FE2CAA |
:101D0000EE249EDF9927E82AF92AF694E794E1C0A9 |
:101D1000823631F489E590DF80E08EDF80E406C111 |
:101D2000823409F070C08CDF8BDFD82E89DF082F5A |
:101D3000B2E6AB2EB0E0BB2E10E0E5010894A11C8A |
:101D4000B11C1D1510F47CDF01C08FEF88831F5F6D |
:101D5000103498F336E7931609F0C9C0063409F039 |
:101D60003CC08FEFE8168BE1F80608F033C0CD2DAC |
:101D7000A70166277727440F551F661F771F6A0143 |
:101D80007B01A2E6B0E011E08D9199272D913327D8 |
:101D9000322F2227822B932B0C01FA01109357002C |
:101DA000E89511244E5F5F4F6F4F7F4FC25061F730 |
:101DB00085E0F60180935700E89507B600FCFDCF5B |
:101DC00081E180935700E8957695679557954795FB |
:101DD0007A017FC080E030DF7CC0053409F079C033 |
:101DE000F7012D2DA2E6B0E0EEBB8F2F99278FBB18 |
:101DF0008D918DBB3196E29AE19AE199FECF215007 |
:101E000099F77F0166C08736B9F51ADF19DFC82F49 |
:101E100017DF863409F5C701AA27BB276C017D01AE |
:101E2000CC0CDD1CEE1CFF1CF60105911491802FDB |
:101E300003DF812F992700DF82E090E0A0E0B0E08F |
:101E4000C80ED91EEA1EFB1EC25071F7F694E79425 |
:101E5000D794C794760149CF853409F046CFEEBABE |
:101E60008F2D99278FBBE09A0894E11CF11C8DB34C |
:101E7000E3DEC150A1F739CF853601F596E7991613 |
:101E800041F580E090E0A0E0B0E023E0FC01209389 |
:101E90005700E89507B600FCFDCF805C9F4FAF4F21 |
:101EA000BF4F8F3F3BE1930730E0A30730E0B3071C |
:101EB00068F381E180935700E8950BC0853459F4AD |
:101EC00088E190E02CE00FB6F894A89581BD0FBE94 |
:101ED00021BD8DE02BC08035E1F38C34D1F3803708 |
:101EE00011F483E523C0843721F486E7A5DE80E082 |
:101EF0001DC0843519F4A4DE982EEBCF8B3109F484 |
:101F0000F3CE8A3A09F4F0CE863521F480E394DEEC |
:101F100082E30CC0833731F487E08EDE83E98CDE08 |
:101F20008EE104C08B3109F4E0CE8FE385DEDDCE97 |
:0400000300001C00DD |
:00000001FF |
/tags/V0.36/Hex-Files/BL-Ctrl_V1_0/Fuses_Mega8_8MHZ_Intern_MIT_Bootloader.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.36/Hex-Files/BL-Ctrl_V1_0/Fuses_Mega8_8MHZ_Intern_OHNE_Bootloader.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.36/Hex-Files/BL-Ctrl_V1_0/SET_BrushLess-Ctrl_V0_36_Adr_1-4.zip |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.36/Hex-Files/BL-Ctrl_V1_0/SET_BrushLess-Ctrl_V0_36_Adr_1-4_10A.zip |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.36/Hex-Files/BL-Ctrl_V1_0/Test_Manuell_BL-Ctrl_V0_32.hex |
---|
0,0 → 1,330 |
:1000000012C0B9C62AC029C022C721C626C025C031 |
:100010000DC650C522C079C320C0CDC21EC01DC0B0 |
:1000200020C7C0C61AC011241FBECFE5D4E0DEBF72 |
:10003000CDBF10E0A0E6B0E0E6E7F4E102C0059035 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92AF39B107E1F736C1D2CF20918300AD |
:1000600080916200821710F4282FAB9A8091810052 |
:1000700090918200893C910560F01BBC1ABC19BCB0 |
:1000800018BC13BCAB9A01979093820080938100B7 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F9CE221 |
:1000E000A92E91E0B92EC12CD12C1092A3004398D7 |
:1000F00085E090E09093840080938300AFDFB6D7D3 |
:1001000088EC90E039D5C12FDD27D0938400C093CF |
:100110008300EE24FF248701EA14FB040C051D056F |
:1001200078F480916700882311F44FD201C0A8D4DD |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E072D9A21ABC |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D10428F489E1A82EBC |
:10017000B12CC12CD12C7AD78091A5008F5F8093B0 |
:10018000A5008091A50066E034D99093A50005D51F |
:10019000D0938400C093830061DF449BBACF82B3C5 |
:1001A00090E8892782BBB5CF80917B0090917C003D |
:1001B000892B09F04EC04091790050917A00411589 |
:1001C000510571F090918E008FEF989FC00111241E |
:1001D00068EC70E01AD9709386006093850041C086 |
:1001E00080919A00882341F120919C0030919D00DC |
:1001F00081E02D32380708F09A01293C310510F0D2 |
:1002000028EC30E02B30310528F4509386004093E1 |
:10021000850026C08CEF90E0289FA001299F500DFB |
:10022000389F500D1124CA01885D994064EB70E03D |
:10023000ECD8CB01039610C0809185009091860088 |
:10024000009729F001979093860080938500AB9AE0 |
:1002500008C080919403992790938600809385002D |
:10026000AB9880918500909186008F3F910539F081 |
:1002700030F08FEF90E0909386008093850080911E |
:100280008500992708958091810090918200909334 |
:1002900084038093830380917F0099279093860342 |
:1002A00080938503809170009091710090938803F2 |
:1002B0008093870380919C0090919D0090938A0386 |
:1002C000809389030895CFE5D4E0DEBFCDBF00E081 |
:1002D00088E084BB85BB8AEB81BB80E882BB8EE073 |
:1002E00087BB81E388BB88B3806C88BBB69B06C0A4 |
:1002F000B79B02C081E007C082E005C0B79B02C087 |
:1003000083E001C084E08093600087D318D47894A0 |
:10031000C0E0D0E0809160009927C817D90709F4A0 |
:10032000979A86E990E028D497988AEF90E024D4B1 |
:100330002196C530D10574F384EF91E01DD4B3DE6E |
:1003400080E528D566D485E690E002D486E690E084 |
:10035000FFD387E690E0FCD3EC018EEF90E0F8D37A |
:100360005C018DEE93E0F4D37C018EEE93E0F0D34C |
:100370006C01CE01F6D38823E1F3979A10928400A2 |
:10038000109283006BDE88E080BF11E017B98AE02D |
:1003900090E0DED3EC0181E090E0909386038093BF |
:1003A000850310929D0010929C00812F8DDEFCDE53 |
:1003B000992790938400809383008091A5008017F3 |
:1003C00051F0109263001092640082E390E0C0D379 |
:1003D000EC010091A5008091830090918400892B0D |
:1003E000C9F41092740010926400C401BAD3882337 |
:1003F000E1F01092A300439881E08093630082B300 |
:10040000877C82BB82E08FBD81E485BD85B3817F1F |
:1004100085BB0BC080916300882319F081E0809335 |
:1004200074008CED95E094D34C0180916300882397 |
:1004300021F0109284001092830010DE80916400FD |
:100440008F5F80936400813009F0B1CF80916300A9 |
:100450008111979AC50185D3882339F182E390E011 |
:1004600077D35C0180917F00482F55272091810030 |
:10047000309182004217530710F48F5F04C0241795 |
:10048000350718F4815080937F0080917F00909110 |
:100490006200893728F0915090936200AB9A05C0B2 |
:1004A0009F3F19F09F5F90936200C7015AD3882342 |
:1004B00019F18AE090E04CD37C01209172003091D8 |
:1004C0007300C901880F991F880F991F820F931F0E |
:1004D000820F931F66E070E098D77093710060936D |
:1004E0007000109273001092720080919A0088231D |
:1004F00019F481E080936100C60133D3882321F091 |
:100500008CED95E025D36C01CE012BD3882331F0FF |
:100510008091700090917100892B29F08091740076 |
:10052000882309F444CF11E0109363001092A300D4 |
:10053000439884E690E00CD3EC018091740088230A |
:1005400009F435CFAB98109274008AE0BDDD979A1C |
:10055000109263008091A50081508093A50081E0F6 |
:1005600090E0909384008093830078DD88B18C7F45 |
:1005700088B91093A30088B18A6088B984E690E0B6 |
:10058000E7D2EC01CE01EDD28823E1F38AE090E0DE |
:10059000909384008093830061DD88EC90E0D8D252 |
:1005A000EC01CE01DED28823E1F382E390E0D0D2E9 |
:1005B0007C0107E0FCCE1F920F920FB60F92112420 |
:1005C0000F900FBE0F901F9018955E9B24C08091D6 |
:1005D00067008823E1F480918F009091900001964C |
:1005E0009093900080938F00FC01E955FD4FE081CE |
:1005F000ED3019F08436910539F410929000109284 |
:100600008F0081E080936700589AECB908951092AA |
:10061000900010928F0008951F93CF93DF93EC0109 |
:1006200010E0662309F460C0A22FBB271297E42FC5 |
:10063000FF27E35FFC4F30813D534F5FE42FFF27DF |
:10064000E35FFC4F50815D534F5FE42FFF27E35F73 |
:10065000FC4F70817D534F5FE42FFF27E35FFC4F1A |
:10066000E081ED534F5F842F9927A817B907E4F174 |
:10067000832F9927880F991F880F991F352F32953F |
:100680003F70382B852F99278F70907054E0880F1A |
:10069000991F5A95E1F7572F56955695582B872F46 |
:1006A00099278370907026E0880F991F2A95E1F7AB |
:1006B0008E2B61506F3FC1F0FE01E10FF11D3083C1 |
:1006C0001F5F61506F3F81F0FE01E10FF11D50830C |
:1006D0001F5F61506F3F41F0FE01E10FF11D80830C |
:1006E0001F5F662309F0A3CFDF91CF911F9108957B |
:1006F000CF93C82F8A3011F48DE0FADF5D9BFECFD7 |
:10070000CCB980E090E0CF9108951F920F920FB680 |
:100710000F9211242F933F934F935F936F937F9387 |
:100720008F939F93AF93BF93CF93DF93EF93FF93F9 |
:100730008CB180938D0040919500443610F010925A |
:10074000960050918D005D3009F064C08091960054 |
:10075000823009F05FC010929600A42FBB27A35FE0 |
:10076000BC4FFD0132978081209191003091920021 |
:10077000281B3109ED0121978881281B3109C90106 |
:100780009F70909392008093910066E09695879574 |
:100790006A95E1F7982F935C909393002F733070D4 |
:1007A000235C209394008081981709F082C088818F |
:1007B000281709F07EC0409387005C9380910F0357 |
:1007C000823549F488E190E02CE00FB6F894A895C2 |
:1007D00081BD0FBE21BD80910F038ADF80910F0381 |
:1007E000843709F066C02091870043E064E088E820 |
:1007F00090E012DF80916000E82FFF27E957FF4F5C |
:10080000808180938E0084EF91E090937A008093B2 |
:1008100079004FC020919600822F99278130910551 |
:10082000F9F0823091051CF4892B21F040C0029729 |
:1008300011F13DC080918D00833239F480918C009C |
:10084000882319F481E08093960080918D00809335 |
:100850000D0381E08093950080918D00992722C03F |
:100860002F5F20939600E42FFF27E35FFC4F8091DA |
:100870008D00808309C0E42FFF27E35FFC4F809148 |
:100880008D008083443620F44F5F4093950002C072 |
:100890001092960020918D0080919100909192008D |
:1008A000820F911D909392008093910002C010924C |
:1008B0009600FF91EF91DF91CF91BF91AF919F9102 |
:1008C0008F917F916F915F914F913F912F910F90F9 |
:1008D0000FBE0F901F901895AC01A0E0B0E09D01F5 |
:1008E000A817B90748F4E7EAF2E08191280F311D13 |
:1008F0001196A417B507C8F33F70FD01E955FD4FE8 |
:10090000C90176E0969587957A95E1F7835C8083B7 |
:100910001196FD01E955FD4F2F733070822F835CD6 |
:100920008083A855BD4F8DE08C9310926700809115 |
:10093000A7028CB908951F93CF93DF93382FEA0154 |
:10094000722F10E083E28093A7026093A802309395 |
:10095000A902A3E0B0E0772309F458C0772311F48B |
:10096000972F07C0FE01E10FF11D1F5F90817150AD |
:1009700011F4472F0EC0FE01E10FF11D1F5F4081F2 |
:10098000715039F0FE01E10FF11D1F5F6081715060 |
:1009900001C0672FFD01E955FD4F892F869586958A |
:1009A000835C80831196FD01E955FD4F892F9927BE |
:1009B0008370907024E0880F991F2A95E1F75527DE |
:1009C0009A0194E0369527959A95E1F7822B835CFE |
:1009D00080831196FD01E955FD4F4F705070440F13 |
:1009E000551F440F551F862F992726E0969587950A |
:1009F0002A95E1F7842B835C80831196FD01E955EC |
:100A0000FD4F6F73635C60831196A5CFCD0164DFEA |
:100A1000DF91CF911F910895089588E18AB9599A7D |
:100A2000579A80E189B960E070E088E793E084D369 |
:100A300088EC90E08DD090930C0380930B038AE0B8 |
:100A400057DE82E455DE8CE453DE8AE351DE86E530 |
:100A50004FDE80E34DDE8EE24BDE83E349DE82E350 |
:100A600047DE8AE045DE81E443DE84E441DE82E560 |
:100A70003FDE8AE33DDE80916000805D39DE0895CF |
:100A800080910B0390910C036CD0882391F080919E |
:100A90006700882371F022E241E753E06091A602EB |
:100AA00084E449DF82E390E053D090930C03809379 |
:100AB0000B0308951F920F920FB60F9211248F937C |
:100AC0009F93809193038F5F80939303809199000C |
:100AD0008150809399008F3F59F583E0809399006E |
:100AE0008091970090919800019690939800809340 |
:100AF000970080917B0090917C00009729F00197EE |
:100B000090937C0080937B0080919A00882329F049 |
:100B100080919A00815080939A0080917900909101 |
:100B20007A00009729F0019790937A0080937900DA |
:100B30009F918F910F900FBE0F901F90189582E09C |
:100B400083BF89B7816089BF89B7806489BF0895F1 |
:100B50002091970030919800280F391FC901019703 |
:100B600008952091970030919800821B930B892F54 |
:100B70009927807899270895CF93DF93E9DFEC01D7 |
:100B8000CE01EFDF8823E1F3DF91CF91089586EA6C |
:100B900086B987E087B9369A089527B196E097B964 |
:100BA00010BE83ED86B9349A97B9369A349BFECF3E |
:100BB00027B944B155B1440F551F440F551F493C47 |
:100BC000510510F048EC50E02091810030918200F6 |
:100BD000C90163E0880F991F6A95E1F7821B930BA7 |
:100BE000840F951F23E0969587952A95E1F79093BA |
:100BF00082008093810020918000332728173907D5 |
:100C000020F4809181008093800016B888E080BF36 |
:100C100008958EB5806C8EBD8EB580648EBD89B70B |
:100C2000806289BF89B7846089BF08951F920F923F |
:100C30000FB60F9211248F9380919B008F5F80934A |
:100C40009B008F910F900FBE0F901F9018951F92D1 |
:100C50000F920FB60F9211242F933F938F939F9370 |
:100C60000EB406FE0FC010929B0086B597B5909308 |
:100C70009F0080939E008EB58F7B8EBD84E680930F |
:100C80009A0070C08EB580648EBD26B537B5809150 |
:100C90009E0090919F00281B390B80919B00992703 |
:100CA000982F8827990F280F391F689414F83695C4 |
:100CB00027951694E1F73093A1002093A0002851C6 |
:100CC000314030F488E191E09093A1008093A0003E |
:100CD0002091A0003091A100285131403093A10013 |
:100CE0002093A00080919C0090919D008217930713 |
:100CF00030F480919C0090919D0001960CC08091F1 |
:100D00009C0090919D002817390748F480919C0021 |
:100D100090919D00019790939D0080939C0020915D |
:100D20009C0030919D00C901880F991F880F991F61 |
:100D3000880F991F821B930B2091A0003091A10076 |
:100D4000820F931F23E0969587952A95E1F790935C |
:100D5000A1008093A00090939D0080939C0081E06F |
:100D6000809361009F918F913F912F910F900FBEC3 |
:100D70000F901F9018951F920F920FB60F9211248B |
:100D80008F938AB78F7B8ABF8F910F900FBE0F9082 |
:100D90001F90189590916000990F980F92B985EC6B |
:100DA00086BF08951F920F920FB60F9211248F9352 |
:100DB0009F9381B19927887F907080389105E9F0E1 |
:100DC0008138910534F40097B1F18036910579F0BE |
:100DD00035C0883B9105D9F0893B910524F4883AC8 |
:100DE0009105A9F02BC0883F910511F127C086B766 |
:100DF000806886BF1092A20023C083B180939403C1 |
:100E000084EF91E090937C0080937B000EC09091E2 |
:100E1000A200992339F480917F0083B99F5F90935A |
:100E2000A20003C08091620083B986B7806807C0C2 |
:100E300086B7806986BF86B7806986BF85EC86BF26 |
:100E40009F918F910F900FBE0F901F9018951F923A |
:100E50000F920FB60F9211240F900FBE0F901F909C |
:100E600018951F920F920FB60F9211241F932F9374 |
:100E70003F934F935F936F937F938F939F93AF9322 |
:100E8000BF93CF93EF93FF93459B02C011E001C046 |
:100E900010E08091A50099278230910509F450C097 |
:100EA000833091052CF4009779F0019739F1BFC098 |
:100EB0008430910509F478C0843091050CF45AC04F |
:100EC000059709F48BC0B3C082EA8FBD81E685BD6A |
:100ED00088E087BB112369F082B3877E82BB959A35 |
:100EE000C1E0C4BD80916100811157DE4098C7B94F |
:100EF0001BC082B3877D82BB949A99C082B3877EE0 |
:100F000082BB959A1123B1F482EA8FBD81E485BD3D |
:100F10008CE087BB81E084BD8091610081113DDE62 |
:100F200017B988B1836088B98091A5008F5F8093DD |
:100F3000A5006DC082EA8FBD81E685BD88E076C0E0 |
:100F400082EA8FBD81E485BD8CE087BB112369F007 |
:100F500082B38F7C82BB939A81E084BD80916100D3 |
:100F600081111BDE82E087B932C082B3877E82BBEB |
:100F7000959A5DC082B38F7C82BB939A112371F4E2 |
:100F800082EA8FBD81E485BD8AE087BBC1E0C4BD34 |
:100F900080916100811101DEC7B9C3CF82EA8FBDA4 |
:100FA00081E485BD8CE042C082EA8FBD81E485BDCD |
:100FB0008AE087BB112369F082B3877D82BB949A54 |
:100FC00081E084BD809161008111E7DD17B8409810 |
:100FD000ABCF82B38F7C82BB939A29C082B3877DCB |
:100FE00082BB949A1123E9F482EA8FBD81E685BD24 |
:100FF00088E087BB81E084BD809161008111CDDDF7 |
:1010000082E087B988B1836088B91093A500809188 |
:101010007200909173000196909373008093720018 |
:1010200006C082EA8FBD81E485BD8AE087BB459911 |
:1010300003C0112309F028CF459B03C0112309F4F5 |
:1010400023CF10926100FF91EF91CF91BF91AF91AB |
:101050009F918F917F916F915F914F913F912F91D0 |
:101060001F910F900FBE0F901F9018958091A500B3 |
:1010700099278230910551F1833091052CF4009726 |
:1010800069F00197B9F0089584309105E1F1843059 |
:1010900091055CF1059709F443C0089582EA8FBD7C |
:1010A00081E685BD88E087BB82B3877D82BB949A49 |
:1010B00082E034C082EA8FBD81E685BD88E087BBCF |
:1010C00082B3877E82BB959A81E01AC082EA8FBD87 |
:1010D00081E485BD8CE087BB82B3877E82BB959A15 |
:1010E00017B888B1836088B9089582EA8FBD81E41A |
:1010F00085BD8CE087BB82B38F7C82BB939A82E0F4 |
:1011000087B94098089582EA8FBD81E485BD8AE061 |
:1011100087BB82B38F7C82BB939A81E087B9E1CF92 |
:1011200082EA8FBD81E485BD8AE087BB82B3877D7B |
:1011300082BB949A17B8E5CF0F931F93CF93DF9399 |
:101140008C01EB01009711F4672BB9F16EE070E0B0 |
:1011500081E090E037D0FC01892B71F180E8838336 |
:10116000209771F0D387C28781E8838380919503AC |
:1011700090919603892B21F4F0939603E0939503C5 |
:1011800001151105C9F0118700878381826083836F |
:101190008091970390919803892B71F4F0939803B1 |
:1011A000E09397038091990390919A03892B21F4FE |
:1011B000F0939A03E0939903CF01DF91CF911F91B0 |
:1011C0000F9108950F931F93CF93DF93869F800114 |
:1011D000879F100D969F100D1124C8010DD0EC01B2 |
:1011E000009721F0A80160E070E0FCD0CE01DF9113 |
:1011F000CF911F910F910895CF93DF93AC01029788 |
:1012000010F442E050E020E030E0A0919D03B09166 |
:101210009E03BD01F901109709F44CC08D919C917A |
:1012200011978417950731F14817590738F421159C |
:10123000310519F08217930708F49C01FD01A28182 |
:10124000B381109759F721153105A1F1C901841B0C |
:10125000950B049708F4A901DB01E0E0F0E010979A |
:1012600049F18D919C91119782179307F9F44217D8 |
:10127000530779F4ED018A819B81309719F09383AC |
:10128000828304C090939E0380939D03CD010296B8 |
:101290004AC0241B350BFD01E20FF31F419351930C |
:1012A000225030402D933C93CF013DC0FD01A281DF |
:1012B000B381D5CF80919B0390919C03892B41F4FE |
:1012C00080916B0090916C0090939C0380939B03A2 |
:1012D000E0916900F0916A00309741F4EDB7FEB7F4 |
:1012E00080916D0090916E00E81BF90BA0919B031B |
:1012F000B0919C039F012A1B3B0B2417350788F0F4 |
:10130000CA0102962817390760F0CD01840F951F96 |
:10131000029690939C0380939B034D935D93CD0124 |
:1013200002C080E090E0DF91CF910895CF93DF93EA |
:10133000009709F454C0DC011297ED011B821A8258 |
:1013400080919D0390919E03009721F1FC0140E064 |
:1013500050E0EA17FB0718F1ED01FB83EA832D91BA |
:101360003C911197C20FD31FCE0102968E179F0793 |
:1013700071F48A819B81280F391F2E5F3F4F119690 |
:101380003C932E9382819381FD0193838283411547 |
:10139000510559F4B0939E03A0939D0320C0AF0163 |
:1013A0000280F381E02D3097A1F6EA01BB83AA8386 |
:1013B000CA01029628813981820F931F8A179B07E1 |
:1013C00071F48D919C911197280F391F2E5F3F4F1B |
:1013D00039832883FD01828193819B838A83DF91F6 |
:1013E000CF910895DC0101C06D9341505040E0F76A |
:1013F0000895991B79E004C0991F961708F0961B71 |
:10140000881F7A95C9F780950895AA1BBB1B51E1E7 |
:1014100007C0AA1FBB1FA617B70710F0A61BB70B64 |
:10142000881F991F5A95A9F780959095BC01CD0109 |
:101430000895A1E21A2EAA1BBB1BFD010DC0AA1F15 |
:10144000BB1FEE1FFF1FA217B307E407F50720F02D |
:10145000A21BB30BE40BF50B661F771F881F991FA8 |
:101460001A9469F760957095809590959B01AC01F1 |
:06147000BD01CF0108954B |
:101476000101FF01010A00016400009F0320000032 |
:00000001FF |
/tags/V0.36/Hex-Files/BL-Ctrl_V1_0/Test_Schub_BrushLess-Ctrl_V0_32.hex |
---|
0,0 → 1,333 |
:1000000012C0D3C62AC029C03CC73BC626C025C0E3 |
:1000100027C66AC522C093C320C0E7C21EC01DC048 |
:100020003AC7DAC61AC011241FBECFE5D4E0DEBF3E |
:10003000CDBF10E0A0E6B0E0EAEAF4E102C005902E |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92AF39B107E1F731C1D2CF20918300B2 |
:1000600080916200821710F4282FAB9A8091810052 |
:1000700090918200893C910560F01BBC1ABC19BCB0 |
:1000800018BC13BCAB9A01979093820080938100B7 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C1092A3004398E9 |
:1000F00085E090E09093840080938300AFDFD0D7B9 |
:1001000088EC90E053D5C12FDD27D0938400C093B5 |
:100110008300EE24FF248701EA14FB040C051D056F |
:1001200078F480916700882311F469D201C0C2D4A9 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E08CD9A21AA2 |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F099D78091DF |
:10017000A5008F5F8093A5008091A50066E053D90C |
:100180009093A50024D5D0938400C093830066DFAC |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089580917B0090917C00892B09F08D |
:1001C00043C04091790050917A004115510571F07A |
:1001D00090918E008FEF989FC001112468EC70E021 |
:1001E0002ED9709386006093850036C080919A0066 |
:1001F000882341F120919C0030919D0081E02D32B7 |
:10020000380708F09A01293C310510F028EC30E05D |
:100210002B30310528F450938600409385001BC095 |
:100220008CEF90E0289FA001299F500D389F500D22 |
:100230001124CA01885D994064EB70E000D9CB01BC |
:10024000039605C0AB9A08C08091940399279093B8 |
:10025000860080938500AB98809185009091860000 |
:100260008F3F910539F030F08FEF90E0909386004A |
:100270008093850080918500992708958091810061 |
:1002800090918200909384038093830380917F00F8 |
:1002900099279093860380938503809170009091B5 |
:1002A0007100909388038093870380919C009091C4 |
:1002B0009D0090938A03809389030895CFE5D4E04D |
:1002C000DEBFCDBFCC2488E084BB85BB8AEB81BB7D |
:1002D00080E882BB8EE087BB81E388BB88B3806CFB |
:1002E00088BBB69B06C0B79B02C081E007C082E016 |
:1002F00005C0B79B02C083E001C084E0809360002A |
:10030000A6D337D47894C0E0D0E0809160009927DC |
:10031000C817D90709F4979A86E990E047D49798C7 |
:100320008AEF90E043D42196C530D10574F3C5E03F |
:10033000D0E084EF91E03AD4B6DE80E545D583D4B1 |
:1003400085E690E01FD486E690E01CD487E690E036 |
:1003500019D48C018EEF90E015D44C018DEE93E012 |
:1003600011D47C018EEE93E00DD45C01C80113D44E |
:100370008823E1F3979A10928400109283006EDE36 |
:1003800088E080BF81E087B98AE090E0FBD38C01F0 |
:1003900081E090E0909386038093850310929D0006 |
:1003A00010929C008091A5008C1551F01092630072 |
:1003B0001092640082E390E0E5D38C01C090A50028 |
:1003C0008091830090918400892BC9F4109274006D |
:1003D00010926400C301DFD38823E1F01092A300E0 |
:1003E000439881E08093630082B3877C82BB82E084 |
:1003F0008FBD81E485BD85B3817F85BB0BC08091B6 |
:100400006300882319F081E0809374008CED95E0FF |
:10041000B9D33C0123DE809164008F5F8093640038 |
:10042000813009F0BFCF809163008111979AC40198 |
:10043000B2D3882339F182E390E0A4D34C018091B8 |
:100440007F00482F5527209181003091820042176C |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937F0080917F0090916200893728F00F |
:10047000915090936200AB9A05C09F3F19F09F5F27 |
:1004800090936200C70187D3882319F18AE090E036 |
:1004900079D37C012091720030917300C901880FDB |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E0C5D770937100609370001092730064 |
:1004C0001092720080919A00882319F481E0809341 |
:1004D0006100C50160D3882379F18CED95E052D39A |
:1004E0005C01C230D105A9F0C330D10534F42097A6 |
:1004F00051F0C130D10551F01DC0C330D10561F0BC |
:10050000249791F017C082E390E008C082E890E061 |
:1005100005C08CE390E002C08CE890E090938400EA |
:1005200080938300219608C086E990E09093840030 |
:1005300080938300C0E0D0E0C8012DD3882331F040 |
:100540008091700090917100892B29F08091740046 |
:10055000882309F427CF21E0D22ED0926300109295 |
:10056000A300439884E690E00DD38C018091740041 |
:10057000882309F417CFAB98109274008AE0A4DDA9 |
:10058000979A109263008091A50081508093A500F6 |
:1005900081E090E090938400809383005FDD88B1D8 |
:1005A0008C7F88B9D092A30088B18A6088B984E62C |
:1005B00090E0E8D28C01C801EED28823E1F38AE012 |
:1005C00090E0909384008093830048DD88EC90E075 |
:1005D000D9D28C01C801DFD28823E1F382E390E015 |
:1005E000D1D27C0197E0C92EDDCE1F920F920FB6BB |
:1005F0000F9211240F900FBE0F901F9018955E9BC5 |
:1006000024C0809167008823E1F480918F0090914D |
:10061000900001969093900080938F00FC01E95523 |
:10062000FD4FE081ED3019F08436910539F41092D8 |
:10063000900010928F0081E080936700589AECB987 |
:1006400008951092900010928F0008951F93CF93F9 |
:10065000DF93EC0110E0662309F460C0A22FBB27F2 |
:100660001297E42FFF27E35FFC4F30813D534F5F2C |
:10067000E42FFF27E35FFC4F50815D534F5FE42F72 |
:10068000FF27E35FFC4F70817D534F5FE42FFF270F |
:10069000E35FFC4FE081ED534F5F842F9927A8174C |
:1006A000B907E4F1832F9927880F991F880F991FA5 |
:1006B000352F32953F70382B852F99278F7090708A |
:1006C00054E0880F991F5A95E1F7572F5695569584 |
:1006D000582B872F99278370907026E0880F991FD9 |
:1006E0002A95E1F78E2B61506F3FC1F0FE01E10FBB |
:1006F000F11D30831F5F61506F3F81F0FE01E10FFC |
:10070000F11D50831F5F61506F3F41F0FE01E10F0B |
:10071000F11D80831F5F662309F0A3CFDF91CF9186 |
:100720001F910895CF93C82F8A3011F48DE0FADF1E |
:100730005D9BFECFCCB980E090E0CF9108951F92F1 |
:100740000F920FB60F9211242F933F934F935F9305 |
:100750006F937F938F939F93AF93BF93CF93DF93C9 |
:10076000EF93FF938CB180938D00409195004436B8 |
:1007700010F01092960050918D005D3009F064C029 |
:1007800080919600823009F05FC010929600A42FED |
:10079000BB27A35FBC4FFD01329780812091910060 |
:1007A00030919200281B3109ED0121978881281B87 |
:1007B0003109C9019F70909392008093910066E087 |
:1007C000969587956A95E1F7982F935C909393009F |
:1007D0002F733070235C209394008081981709F068 |
:1007E00082C08881281709F07EC0409387005C93FF |
:1007F00080910F03823549F488E190E02CE00FB638 |
:10080000F894A89581BD0FBE21BD80910F038ADFAA |
:1008100080910F03843709F066C02091870043E080 |
:1008200064E088E890E012DF80916000E82FFF2705 |
:10083000E957FF4F808180938E0084EF91E0909381 |
:100840007A00809379004FC020919600822F9927DB |
:1008500081309105F9F0823091051CF4892B21F04B |
:1008600040C0029711F13DC080918D00833239F470 |
:1008700080918C00882319F481E080939600809108 |
:100880008D0080930D0381E08093950080918D0011 |
:10089000992722C02F5F20939600E42FFF27E35F64 |
:1008A000FC4F80918D00808309C0E42FFF27E35F18 |
:1008B000FC4F80918D008083443620F44F5F40933D |
:1008C000950002C01092960020918D0080919100B9 |
:1008D00090919200820F911D9093920080939100CD |
:1008E00002C010929600FF91EF91DF91CF91BF91DE |
:1008F000AF919F918F917F916F915F914F913F91B8 |
:100900002F910F900FBE0F901F901895AC01A0E093 |
:10091000B0E09D01A817B90748F4E7EAF2E0819139 |
:10092000280F311D1196A417B507C8F33F70FD01BC |
:10093000E955FD4FC90176E0969587957A95E1F7DF |
:10094000835C80831196FD01E955FD4F2F73307054 |
:10095000822F835C8083A855BD4F8DE08C931092CD |
:1009600067008091A7028CB908951F93CF93DF93FE |
:10097000382FEA01722F10E083E28093A702609380 |
:10098000A8023093A902A3E0B0E0772309F458C08D |
:10099000772311F4972F07C0FE01E10FF11D1F5FB0 |
:1009A0009081715011F4472F0EC0FE01E10FF11D2F |
:1009B0001F5F4081715039F0FE01E10FF11D1F5F93 |
:1009C0006081715001C0672FFD01E955FD4F892FEE |
:1009D00086958695835C80831196FD01E955FD4FD0 |
:1009E000892F99278370907024E0880F991F2A958A |
:1009F000E1F755279A0194E0369527959A95E1F706 |
:100A0000822B835C80831196FD01E955FD4F4F7069 |
:100A10005070440F551F440F551F862F992726E00D |
:100A2000969587952A95E1F7842B835C80831196B0 |
:100A3000FD01E955FD4F6F73635C60831196A5CF8F |
:100A4000CD0164DFDF91CF911F910895089588E172 |
:100A50008AB9599A579A80E189B960E070E082E9D1 |
:100A600093E084D388EC90E08DD090930C03809336 |
:100A70000B038AE057DE82E455DE8CE453DE8AE322 |
:100A800051DE86E54FDE80E34DDE8EE24BDE83E312 |
:100A900049DE82E347DE8AE045DE81E443DE84E42A |
:100AA00041DE82E53FDE8AE33DDE80916000805DCD |
:100AB00039DE089580910B0390910C036CD088234C |
:100AC00091F080916700882371F022E241E753E0C2 |
:100AD0006091A60284E449DF82E390E053D09093D2 |
:100AE0000C0380930B0308951F920F920FB60F9281 |
:100AF00011248F939F93809193038F5F809393032F |
:100B0000809199008150809399008F3F59F583E03F |
:100B1000809399008091970090919800019690930E |
:100B200098008093970080917B0090917C000097C3 |
:100B300029F0019790937C0080937B0080919A002C |
:100B4000882329F080919A00815080939A008091A7 |
:100B5000790090917A00009729F0019790937A009C |
:100B6000809379009F918F910F900FBE0F901F90EF |
:100B7000189582E083BF89B7816089BF89B7806497 |
:100B800089BF08952091970030919800280F391F50 |
:100B9000C901019708952091970030919800821B18 |
:100BA000930B892F9927807899270895CF93DF9306 |
:100BB000E9DFEC01CE01EFDF8823E1F3DF91CF9194 |
:100BC000089586EA86B987E087B9369A089527B1ED |
:100BD00096E097B910BE83ED86B9349A97B9369AE4 |
:100BE000349BFECF27B944B155B1440F551F440F74 |
:100BF000551F493C510510F048EC50E02091810010 |
:100C000030918200C90163E0880F991F6A95E1F76E |
:100C1000821B930B840F951F23E0969587952A9549 |
:100C2000E1F7909382008093810020918000332728 |
:100C30002817390720F4809181008093800016B82E |
:100C400088E080BF08958EB5806C8EBD8EB58064BF |
:100C50008EBD89B7806289BF89B7846089BF0895D6 |
:100C60001F920F920FB60F9211248F9380919B00C9 |
:100C70008F5F80939B008F910F900FBE0F901F90FE |
:100C800018951F920F920FB60F9211242F933F9336 |
:100C90008F939F930EB406FE0FC010929B0086B5F3 |
:100CA00097B590939F0080939E008EB58F7B8EBDED |
:100CB00084E680939A0070C08EB580648EBD26B5A0 |
:100CC00037B580919E0090919F00281B390B809131 |
:100CD0009B009927982F8827990F280F391F689410 |
:100CE00014F8369527951694E1F73093A1002093D8 |
:100CF000A0002851314030F488E191E09093A100A8 |
:100D00008093A0002091A0003091A1002851314093 |
:100D10003093A1002093A00080919C0090919D00B1 |
:100D20008217930730F480919C0090919D0001966A |
:100D30000CC080919C0090919D002817390748F4C1 |
:100D400080919C0090919D00019790939D008093CD |
:100D50009C0020919C0030919D00C901880F991F33 |
:100D6000880F991F880F991F821B930B2091A00059 |
:100D70003091A100820F931F23E0969587952A95C5 |
:100D8000E1F79093A1008093A00090939D00809341 |
:100D90009C0081E0809361009F918F913F912F9102 |
:100DA0000F900FBE0F901F9018951F920F920FB6C5 |
:100DB0000F9211248F938AB78F7B8ABF8F910F90E8 |
:100DC0000FBE0F901F90189590916000990F980F8B |
:100DD00092B985EC86BF08951F920F920FB60F92BD |
:100DE00011248F939F9381B19927887F90708038C9 |
:100DF0009105E9F08138910534F40097B1F180361E |
:100E0000910579F035C0883B9105D9F0893B910572 |
:100E100024F4883A9105A9F02BC0883F910511F17F |
:100E200027C086B7806886BF1092A20023C083B116 |
:100E30008093940384EF91E090937C0080937B00F7 |
:100E40000EC09091A200992339F480917F0083B95C |
:100E50009F5F9093A20003C08091620083B986B720 |
:100E6000806807C086B7806986BF86B7806986BFFD |
:100E700085EC86BF9F918F910F900FBE0F901F90B2 |
:100E800018951F920F920FB60F9211240F900FBE5C |
:100E90000F901F9018951F920F920FB60F9211246A |
:100EA0001F932F933F934F935F936F937F938F93F2 |
:100EB0009F93AF93BF93CF93EF93FF93459B02C054 |
:100EC00011E001C010E08091A500992782309105C2 |
:100ED00009F450C0833091052CF4009779F0019704 |
:100EE00039F1BFC08430910509F478C08430910590 |
:100EF0000CF45AC0059709F48BC0B3C082EA8FBDC9 |
:100F000081E685BD88E087BB112369F082B3877EC7 |
:100F100082BB959AC1E0C4BD80916100811157DE0A |
:100F20004098C7B91BC082B3877D82BB949A99C091 |
:100F300082B3877E82BB959A1123B1F482EA8FBD7A |
:100F400081E485BD8CE087BB81E084BD8091610038 |
:100F500081113DDE17B988B1836088B98091A50001 |
:100F60008F5F8093A5006DC082EA8FBD81E685BD4D |
:100F700088E076C082EA8FBD81E485BD8CE087BBC6 |
:100F8000112369F082B38F7C82BB939A81E084BD88 |
:100F90008091610081111BDE82E087B932C082B38B |
:100FA000877E82BB959A5DC082B38F7C82BB939A09 |
:100FB000112371F482EA8FBD81E485BD8AE087BB8D |
:100FC000C1E0C4BD80916100811101DEC7B9C3CF0A |
:100FD00082EA8FBD81E485BD8CE042C082EA8FBD8C |
:100FE00081E485BD8AE087BB112369F082B3877DE8 |
:100FF00082BB949A81E084BD809161008111E7DD1C |
:1010000017B84098ABCF82B38F7C82BB939A29C02C |
:1010100082B3877D82BB949A1123E9F482EA8FBD63 |
:1010200081E685BD88E087BB81E084BD8091610059 |
:101030008111CDDD82E087B988B1836088B91093D2 |
:10104000A5008091720090917300019690937300B7 |
:101050008093720006C082EA8FBD81E485BD8AE07C |
:1010600087BB459903C0112309F028CF459B03C0D6 |
:10107000112309F423CF10926100FF91EF91CF91DA |
:10108000BF91AF919F918F917F916F915F914F91A0 |
:101090003F912F911F910F900FBE0F901F901895A9 |
:1010A0008091A50099278230910551F183309105F7 |
:1010B0002CF4009769F00197B9F0089584309105F8 |
:1010C000E1F1843091055CF1059709F443C008957E |
:1010D00082EA8FBD81E685BD88E087BB82B3877DCC |
:1010E00082BB949A82E034C082EA8FBD81E685BDDE |
:1010F00088E087BB82B3877E82BB959A81E01AC065 |
:1011000082EA8FBD81E485BD8CE087BB82B3877E98 |
:1011100082BB959A17B888B1836088B9089582EA2E |
:101120008FBD81E485BD8CE087BB82B38F7C82BBA1 |
:10113000939A82E087B94098089582EA8FBD81E44E |
:1011400085BD8AE087BB82B38F7C82BB939A81E0A6 |
:1011500087B9E1CF82EA8FBD81E485BD8AE087BB94 |
:1011600082B3877D82BB949A17B8E5CF0F931F9304 |
:10117000CF93DF938C01EB01009711F4672BB9F14A |
:101180006EE070E081E090E037D0FC01892B71F1D6 |
:1011900080E88383209771F0D387C28781E88383B7 |
:1011A0008091950390919603892B21F4F0939603F7 |
:1011B000E093950301151105C9F01187008783811C |
:1011C000826083838091970390919803892B71F4B7 |
:1011D000F0939803E09397038091990390919A0379 |
:1011E000892B21F4F0939A03E0939903CF01DF91C7 |
:1011F000CF911F910F9108950F931F93CF93DF937A |
:10120000869F8001879F100D969F100D1124C801A5 |
:101210000DD0EC01009721F0A80160E070E0FCD057 |
:10122000CE01DF91CF911F910F910895CF93DF935E |
:10123000AC01029710F442E050E020E030E0A091D1 |
:101240009D03B0919E03BD01F901109709F44CC0B4 |
:101250008D919C9111978417950731F14817590783 |
:1012600038F42115310519F08217930708F49C0111 |
:10127000FD01A281B381109759F721153105A1F124 |
:10128000C901841B950B049708F4A901DB01E0E078 |
:10129000F0E0109749F18D919C9111978217930777 |
:1012A000F9F44217530779F4ED018A819B81309755 |
:1012B00019F09383828304C090939E0380939D03CF |
:1012C000CD0102964AC0241B350BFD01E20FF31F2E |
:1012D00041935193225030402D933C93CF013DC018 |
:1012E000FD01A281B381D5CF80919B0390919C0396 |
:1012F000892B41F480916B0090916C0090939C033A |
:1013000080939B03E0916900F0916A00309741F46B |
:10131000EDB7FEB780916D0090916E00E81BF90B60 |
:10132000A0919B03B0919C039F012A1B3B0B2417A8 |
:10133000350788F0CA0102962817390760F0CD01F9 |
:10134000840F951F029690939C0380939B034D936B |
:101350005D93CD0102C080E090E0DF91CF910895D0 |
:10136000CF93DF93009709F454C0DC011297ED018D |
:101370001B821A8280919D0390919E03009721F118 |
:10138000FC0140E050E0EA17FB0718F1ED01FB8398 |
:10139000EA832D913C911197C20FD31FCE01029683 |
:1013A0008E179F0771F48A819B81280F391F2E5F4A |
:1013B0003F4F11963C932E9382819381FD0193833D |
:1013C00082834115510559F4B0939E03A0939D0368 |
:1013D00020C0AF010280F381E02D3097A1F6EA0131 |
:1013E000BB83AA83CA01029628813981820F931F89 |
:1013F0008A179B0771F48D919C911197280F391FC3 |
:101400002E5F3F4F39832883FD01828193819B8327 |
:101410008A83DF91CF910895DC0101C06D93415023 |
:101420005040E0F70895991B79E004C0991F961782 |
:1014300008F0961B881F7A95C9F780950895AA1B16 |
:10144000BB1B51E107C0AA1FBB1FA617B70710F0AF |
:10145000A61BB70B881F991F5A95A9F780959095E1 |
:10146000BC01CD010895A1E21A2EAA1BBB1BFD01F0 |
:101470000DC0AA1FBB1FEE1FFF1FA217B307E40773 |
:10148000F50720F0A21BB30BE40BF50B661F771FCB |
:10149000881F991F1A9469F76095709580959095AB |
:0A14A0009B01AC01BD01CF010895CE |
:1014AA000101FF01010A00016400009F03200000FE |
:00000001FF |
/tags/V0.36/Hex-Files/BL-Ctrl_V1_1/BootLoader_MEGA8_8MHZ_V0_2.hex |
---|
0,0 → 1,53 |
:101C000011241FBECFE5D4E0DEBFCDBF10E0A0E6BB |
:101C1000B0E0E0E3FFE102C005900D92A036B1070D |
:101C2000D9F710E0A0E6B0E001C01D92A23AB107DA |
:101C3000E1F714C000C008955D9BFECF8CB90895F4 |
:101C40005F9BFECF8CB1992708958DE4F5DF8BE47F |
:101C5000F3DF82E4F1DF8CE4EFDF0895CFE5D4E039 |
:101C6000DEBFCDBFE0E0F0E004917F01992481B7B1 |
:101C7000885081BF90BC80E189B9599A88E18AB9BE |
:101C800086E880BDEF01192D5F9B0BC0113029F450 |
:101C90008CB18A3A49F110E004C08CB18B3109F45F |
:101CA00011E0CE01219684369105C8F00F3F41F036 |
:101CB000002331F0E0916000F091610009950FC0C0 |
:101CC0008AE0BADF8DE0B8DF86E5B6DF80E3B4DF17 |
:101CD0008EE2B2DF82E3B0DF8AE3AEDF05C080E2EE |
:101CE0009EE40197F1F7D0CFB0DFAADF813611F47F |
:101CF00089E51CC1813461F4A3DFE82EFF24FE2CAA |
:101D0000EE249EDF9927E82AF92AF694E794E1C0A9 |
:101D1000823631F489E590DF80E08EDF80E406C111 |
:101D2000823409F070C08CDF8BDFD82E89DF082F5A |
:101D3000B2E6AB2EB0E0BB2E10E0E5010894A11C8A |
:101D4000B11C1D1510F47CDF01C08FEF88831F5F6D |
:101D5000103498F336E7931609F0C9C0063409F039 |
:101D60003CC08FEFE8168BE1F80608F033C0CD2DAC |
:101D7000A70166277727440F551F661F771F6A0143 |
:101D80007B01A2E6B0E011E08D9199272D913327D8 |
:101D9000322F2227822B932B0C01FA01109357002C |
:101DA000E89511244E5F5F4F6F4F7F4FC25061F730 |
:101DB00085E0F60180935700E89507B600FCFDCF5B |
:101DC00081E180935700E8957695679557954795FB |
:101DD0007A017FC080E030DF7CC0053409F079C033 |
:101DE000F7012D2DA2E6B0E0EEBB8F2F99278FBB18 |
:101DF0008D918DBB3196E29AE19AE199FECF215007 |
:101E000099F77F0166C08736B9F51ADF19DFC82F49 |
:101E100017DF863409F5C701AA27BB276C017D01AE |
:101E2000CC0CDD1CEE1CFF1CF60105911491802FDB |
:101E300003DF812F992700DF82E090E0A0E0B0E08F |
:101E4000C80ED91EEA1EFB1EC25071F7F694E79425 |
:101E5000D794C794760149CF853409F046CFEEBABE |
:101E60008F2D99278FBBE09A0894E11CF11C8DB34C |
:101E7000E3DEC150A1F739CF853601F596E7991613 |
:101E800041F580E090E0A0E0B0E023E0FC01209389 |
:101E90005700E89507B600FCFDCF805C9F4FAF4F21 |
:101EA000BF4F8F3F3BE1930730E0A30730E0B3071C |
:101EB00068F381E180935700E8950BC0853459F4AD |
:101EC00088E190E02CE00FB6F894A89581BD0FBE94 |
:101ED00021BD8DE02BC08035E1F38C34D1F3803708 |
:101EE00011F483E523C0843721F486E7A5DE80E082 |
:101EF0001DC0843519F4A4DE982EEBCF8B3109F484 |
:101F0000F3CE8A3A09F4F0CE863521F480E394DEEC |
:101F100082E30CC0833731F487E08EDE83E98CDE08 |
:101F20008EE104C08B3109F4E0CE8FE385DEDDCE97 |
:0400000300001C00DD |
:00000001FF |
/tags/V0.36/Hex-Files/BL-Ctrl_V1_1/BrushLess-Ctrl_V0_36_for_BL-Ctrl_V1_1.hex |
---|
0,0 → 1,448 |
:1000000012C0CFC92AC029C038CA2EC926C025C0EF |
:100010001AC92FC822C058C620C0ACC51EC01DC0FA |
:1000200036CAD6C91AC011241FBECFE5D4E0DEBF40 |
:10003000CDBF10E0A0E6B0E0E6ECFBE102C0059029 |
:100040000D92A637B107D9F713E0A6E7B0E001C0DB |
:100050001D92A83AB107E1F724C4D2CF20918900BC |
:1000600080916300821710F4282FAB9A809187004B |
:1000700090918800893C910560F01BBC1ABC19BCAA |
:1000800018BC13BCAB9A01979093880080938700AB |
:100090000895822F99279BBD8ABD99BD88BD23BD38 |
:1000A000089591E09FBD81E485BD8EE087BB88B354 |
:1000B000817F88BB9EBD089592B7980F82B7891B38 |
:1000C00087FDFCCF0895AF92BF92CF92DF92EF925F |
:1000D000FF920F931F93CF93DF93182F8CE2A82EDC |
:1000E00081E0B82EC12CD12C1092AA00439885E053 |
:1000F00090E090938A0080938900B0DF2CDB88EC3D |
:1001000090E01CD8C12FDD27D0938A00C0938900CE |
:10011000EE24FF248701EA14FB040C051D0578F486 |
:1001200080916D00882311F42FD501C088D784E613 |
:10013000C3DF0894E11CF11C011D111DECCFC601A9 |
:10014000B5012FE030E040E050E01BDDA21AB30A19 |
:10015000C40AD50A0894A108B108C108D10889E1E8 |
:10016000A816B104C104D104C8F0F5DA8091AC003E |
:100170008F5F8093AC008091AC0066E0E2DC9093EE |
:10018000AC00EDD7D0938A00C093890067DF449B11 |
:10019000BFCF82B390E8892782BBBACFDF91CF91DE |
:1001A0001F910F91FF90EF90DF90CF90BF90AF9095 |
:1001B0000895CF93C82F7894C150CF3F49F0AB9AA0 |
:1001C0008CE291E0BBD7AB988CE291E0B7D7F4CF4B |
:1001D00088EE93E0B3D7CF910895CF93DF93EC01EE |
:1001E00021978FEFCF3FD807B9F002D88091AD02A9 |
:1001F0009091AE0288589F4F2091870030918800DF |
:100200008217930768F782B3877C82BB88B3817FAC |
:1002100088BB81E090E002C080E090E0DF91CF9168 |
:10022000089501972FEF8F3F9207D9F780E090E074 |
:1002300008959F92AF92BF92CF92DF92EF92FF927A |
:100240000F931F93CF93DF93CDB7DEB725970FB6EC |
:10025000F894DEBF0FBECDBF5E010894A11CB11C97 |
:10026000D501E8E6F0E085E001900D928150E1F7DC |
:10027000C82ED82E22E3922EAB9880916100F50112 |
:10028000E80FF11D8081282F33278CE291E0289F11 |
:10029000A001299F500D389F500D1124CA014ED73F |
:1002A000C092AA004398F8948AE001D582B3877C73 |
:1002B00082BB11E01FBD81E485BD8EE087BB88B3A2 |
:1002C000817F88BB1092860082E390E086DF809178 |
:1002D000860099279093AE028093AD021092880019 |
:1002E00010928700949AC39A83E090E076DF882387 |
:1002F00019F0C12E81E3DBD482B3877C82BB88B343 |
:10030000817F88BB88EE93E08CDF1092880010928A |
:100310008700939AC29A83E090E05FDF882321F000 |
:1003200092E0C92E82E3C3D482B3877C82BB88B3B8 |
:10033000817F88BB88EE93E074DF10928800109272 |
:100340008700949AC19A83E090E047DF882321F0E8 |
:1003500083E0C82E83E3ABD482B3877C82BB88B3AF |
:10036000817F88BB88EE93E05CDF939AC19A83E03B |
:1003700090E033DF882321F003E0C02E87E397D499 |
:1003800082B3877C82BB88B3817F88BB80E197E2A0 |
:1003900024DFCC2019F08C2D0CDFFDCF8CB1803206 |
:1003A000B9F41FEFE12EF12EB8E29B2E8FE57FD43A |
:1003B00013C0A4E0CA2E84E37AD442C0F5E0CF2E65 |
:1003C00085E375D474C0E6E0CE2E86E370D4A6C073 |
:1003D00078EEE72E73E0F72E1092880010928700D7 |
:1003E00000E010E00E151F0558F5939A81E090E0AB |
:1003F000F4DE82B3877C82BB88B3817F88BB85E0D3 |
:1004000090E00FDFC39A81E090E0E7DE82B3877C63 |
:1004100082BB88B3817F88BB8091AD029091AE0290 |
:10042000890D911D209187003091880082179307D4 |
:1004300008F4BFCF85E090E0F4DE0F5F1F4FD2CF0E |
:1004400080E197E2EEDE109288001092870000E0D3 |
:1004500010E00E151F0558F5949A81E090E0BDDE7E |
:1004600082B3877C82BB88B3817F88BB85E090E0C4 |
:10047000D8DEC29A81E090E0B0DE82B3877C82BB96 |
:1004800088B3817F88BB8091AD029091AE02890DC7 |
:10049000911D20918700309188008217930708F4FE |
:1004A0008DCF85E090E0BDDE0F5F1F4FD2CF109261 |
:1004B00088001092870080E197E2B3DE00E010E050 |
:1004C0000E151F0558F5959A81E090E086DE82B3FF |
:1004D000877C82BB88B3817F88BB85E090E0A1DE0A |
:1004E000C19A81E090E079DE82B3877C82BB88B3D9 |
:1004F000817F88BB8091AD029091AE02890D911DE4 |
:1005000020918700309188008217930708F45BCF11 |
:1005100085E090E086DE0F5F1F4FD2CF17B882B321 |
:10052000877C82BB88B3817F88BB949A959A10920E |
:1005300088001092870008E710E0C39A82E090E0FC |
:1005400070DE80E090E042D6C3971CF051E0D52ADF |
:1005500002C08EEFD82218BA8CE291E062DE015020 |
:10056000104017FFEACF82B3877C82BB88B3817FBC |
:1005700088BB939A959A04E810E0C29A82E090E0D2 |
:1005800050DE81E090E022D6C3971CF0E2E0DE2A44 |
:1005900002C0FDEFDF2218BA8CE291E042DE01508A |
:1005A000104017FFEACF82B3877C82BB88B3817F7C |
:1005B00088BB939A949A0EE610E0C19A82E090E08C |
:1005C00030DE82E090E002D6C3971CF044E0D42AEB |
:1005D00002C05BEFD52218BA8AE491E022DE015016 |
:1005E000104017FFEACF82B3877C82BB88B3817F3C |
:1005F00088BB81E087B9939A08E710E0C29A82E04D |
:1006000090E00FDE80E090E0E1D5C3971CF087EF2B |
:10061000D82202C0E8E0DE2A18BA8AE491E001DEBE |
:100620000150104017FFEACF959A04E810E0C29AF3 |
:1006300082E090E0F6DD82E090E0C8D5C3971CF040 |
:10064000FFEDDF2202C040E2D42A18BA88E691E02A |
:10065000E8DD0150104017FFEACF82B3877C82BBF0 |
:1006600088B3817F88BB82B3877C82BB88B3817F5C |
:1006700088BB949A0EE610E0C19A82E090E0D1DD4A |
:1006800081E090E0A3D5C3971CF05FEED52202C0B5 |
:1006900080E1D82A18BA88E691E0C3DD0150104005 |
:1006A00017FFEACF82B3877C82BB88B3817F88BB88 |
:1006B000789480916100A80EB11CF501208184E03E |
:1006C00090E0821B91092CE231E0829FA001839F80 |
:1006D000500D929F500D1124CA0130D58D2D9927B0 |
:1006E00080FD04C061E0C62E81E405C081FD05C027 |
:1006F00052E0C52E82E48CB91AC082FD04C043E0EA |
:10070000C42E83E4F8CF83FD04C034E0C32E81E619 |
:10071000F2CF84FD04C025E0C22E82E6ECCF85FD39 |
:1007200004C096E0C92E83E6E6CFCC2019F088EE0F |
:1007300093E004D58C2D3DDD8EE2B9D225960FB61F |
:10074000F894DEBF0FBECDBFDF91CF911F910F9107 |
:10075000FF90EF90DF90CF90BF90AF909F90089563 |
:100760008091810090918200892B09F05BC04091BB |
:100770007F00509180004115510599F090919400AF |
:100780008FEF989FC001112468EC70E0E6D9709358 |
:100790008C0060938B001092600089B78F7D89BFB9 |
:1007A00032C08091A000853180F181E080936000AB |
:1007B0002091A3003091A40081E02D32380708F089 |
:1007C0009A01293C310510F028EC30E02B3031053E |
:1007D00028F450938C0040938B0015C08CEF90E070 |
:1007E000289FA001299F500D389F500D1124CA0148 |
:1007F000885D994064EB70E0B0D9CB01039690938B |
:100800008C0080938B00AB981AC080918B009091E4 |
:100810008C00009729F0019790938C0080938B00B7 |
:10082000AB9A0DC080919D03992790938C00809383 |
:100830008B0010926000AB9889B78F7D89BF809143 |
:100840008B0090918C008F3F910539F030F08FEF45 |
:1008500090E090938C0080938B0080918B0099277F |
:100860000895809187009091880090938D038093E4 |
:100870008C0380918500992790938F0380938E033A |
:1008800080917600909177009093910380939003EC |
:100890008091A3009091A40090939303809392037E |
:1008A0000895CFE5D4E0DEBFCDBFEE2488E084BB61 |
:1008B00085BB8AEB81BBE2BA8EE087BB81E388BB54 |
:1008C00088B3806C88BB83EF91E0C29797FFFDCF20 |
:1008D000B69B06C0B79B02C081E007C082E005C09E |
:1008E000B79B02C083E001C084E08093610074D3B1 |
:1008F00008D47894D6DB80E563D598D485E690E07B |
:1009000009D486E690E006D487E690E003D4EC01B3 |
:100910008EEF90E0FFD36C018DEE93E0FBD38C0162 |
:100920008EEE93E0F7D303C01BDF882321F4CE01C2 |
:10093000FAD38823C9F3979A10928A0010928900FB |
:100940008DDB88E080BF81E087B98AE090E0E2D368 |
:10095000EC0181E090E090938F0380938E031092DE |
:10096000A4001092A300FCDE882309F462DC81E37A |
:1009700088BBF6DE992790938A0080938900809146 |
:10098000AC008E1551F010926400109265008AEF51 |
:1009900090E0C0D3EC01E090AC0080918900909190 |
:1009A0008A00892BD1F410927A0010926500C5015B |
:1009B000BAD38823E9F01092AA00439891E090936B |
:1009C000640082B3877C82BB9FBD81E485BD8EE0DD |
:1009D00087BB88B3817F88BB0BC08091640088236C |
:1009E00019F081E080937A008CED95E093D35C015F |
:1009F00080916400882321F010928A00109289006F |
:100A00002DDB809165008F5F80936500813009F058 |
:100A1000B0CF809164008111979AC60184D3882356 |
:100A2000A9F182E390E076D36C0180918500482F94 |
:100A3000552720918700309188004217530710F402 |
:100A40008F5F04C02417350718F481508093850008 |
:100A5000293C310548F080916300982F9295969536 |
:100A60009770891B8093630080918500909163004B |
:100A7000893738F0992319F0915090936300AB9A1D |
:100A800005C09F3F19F09F5F90936300C8014BD34F |
:100A90008823B9F08AE090E03DD38C018091780002 |
:100AA000909179009093770080937600109279006E |
:100AB000109278008091A100882319F481E080933E |
:100AC0006200CE0130D3882331F08091760090917E |
:100AD0007700892B29F080917A00882309F449CF87 |
:100AE00041E0F42EF09264001092AA00439884E64C |
:100AF00090E010D3EC0180917A00882309F439CF7B |
:100B0000AB9810927A008AE0DEDA979A109264002D |
:100B10008091AC0081508093AC0081E090E0909394 |
:100B20008A00809389009ADA88B18C7F88B9F09224 |
:100B3000AA0088B18A6088B984E190E0EBD2EC0128 |
:100B4000CE01F1D28823E1F38FE090E090938A0008 |
:100B50008093890083DA8CE291E0DCD2EC01CE0153 |
:100B6000E2D28823E1F382E390E0D4D28C0137E033 |
:100B7000E32EFFCE1F920F920FB60F9211240F900B |
:100B80000FBE0F901F9018955E9B24C080916D0042 |
:100B90008823E1F4809195009091960001969093BE |
:100BA000960080939500FC01E055FD4FE081ED300B |
:100BB00019F08436910539F4109296001092950040 |
:100BC00081E080936D00589AECB9089510929600D8 |
:100BD0001092950008951F93CF93DF93EC0110E0DE |
:100BE000662309F460C0A22FBB271297E42FFF27CA |
:100BF000EA5EFC4F30813D534F5FE42FFF27EA5EF2 |
:100C0000FC4F50815D534F5FE42FFF27EA5EFC4F9E |
:100C100070817D534F5FE42FFF27EA5EFC4FE08138 |
:100C2000ED534F5F842F9927A817B907E4F1832F5D |
:100C30009927880F991F880F991F352F32953F707C |
:100C4000382B852F99278F70907054E0880F991F4B |
:100C50005A95E1F7572F56955695582B872F992778 |
:100C60008370907026E0880F991F2A95E1F78E2BEC |
:100C700061506F3FC1F0FE01E10FF11D30831F5F36 |
:100C800061506F3F81F0FE01E10FF11D50831F5F46 |
:100C900061506F3F41F0FE01E10FF11D80831F5F46 |
:100CA000662309F0A3CFDF91CF911F910895CF93D1 |
:100CB000C82F8A3011F48DE0FADF5D9BFECFCCB9EE |
:100CC00080E090E0CF9108951F920F920FB60F929F |
:100CD00011242F933F934F935F936F937F938F9341 |
:100CE0009F93AF93BF93CF93DF93EF93FF938CB119 |
:100CF0008093930040919B00443610F010929C002A |
:100D0000509193005D3009F064C080919C00823066 |
:100D100009F05FC010929C00A42FBB27AA5EBC4FB5 |
:100D2000FD01329780812091970030919800281B17 |
:100D30003109ED0121978881281B3109C9019F7074 |
:100D4000909398008093970066E0969587956A95B2 |
:100D5000E1F7982F935C909399002F733070235C88 |
:100D600020939A008081981709F082C08881281703 |
:100D700009F07EC040938D005C938091180382350A |
:100D800049F488E190E02CE00FB6F894A89581BD75 |
:100D90000FBE21BD809118038ADF8091180384372C |
:100DA00009F066C020918D0043E064E08EE890E099 |
:100DB00012DF80916100E82FFF27E357FF4F80810A |
:100DC0008093940084EF91E09093800080937F0063 |
:100DD0004FC020919C00822F992781309105F9F016 |
:100DE000823091051CF4892B21F040C0029711F14B |
:100DF0003DC080919300833239F480919200882322 |
:100E000019F481E080939C008091930080931603F5 |
:100E100081E080939B0080919300992722C02F5FEF |
:100E200020939C00E42FFF27EA5EFC4F8091930003 |
:100E3000808309C0E42FFF27EA5EFC4F8091930076 |
:100E40008083443620F44F5F40939B0002C0109291 |
:100E50009C00209193008091970090919800820FC0 |
:100E6000911D909398008093970002C010929C006F |
:100E7000FF91EF91DF91CF91BF91AF919F918F91B2 |
:100E80007F916F915F914F913F912F910F900FBE86 |
:100E90000F901F901895AC01A0E0B0E09D01A8173D |
:100EA000B90748F4E0EBF2E08191280F311D11966B |
:100EB000A417B507C8F33F70FD01E055FD4FC90108 |
:100EC00076E0969587957A95E1F7835C8083119615 |
:100ED000FD01E055FD4F2F733070822F835C8083BE |
:100EE000AF54BD4F8DE08C9310926D008091B00295 |
:100EF0008CB908951F93CF93DF93382FEA01722F97 |
:100F000010E083E28093B0026093B1023093B202AA |
:100F1000A3E0B0E0772309F458C0772311F4972FAA |
:100F200007C0FE01E10FF11D1F5F9081715011F4A8 |
:100F3000472F0EC0FE01E10FF11D1F5F4081715070 |
:100F400039F0FE01E10FF11D1F5F6081715001C09A |
:100F5000672FFD01E055FD4F892F86958695835CAF |
:100F600080831196FD01E055FD4F892F99278370ED |
:100F7000907024E0880F991F2A95E1F755279A0170 |
:100F800094E0369527959A95E1F7822B835C8083D0 |
:100F90001196FD01E055FD4F4F705070440F551FE5 |
:100FA000440F551F862F992726E0969587952A95F9 |
:100FB000E1F7842B835C80831196FD01E055FD4FA2 |
:100FC0006F73635C60831196A5CFCD0164DFDF9101 |
:100FD000CF911F910895089588E18AB9599A579A37 |
:100FE00080E189B960E070E087E596E04DD488EC57 |
:100FF00090E090D090931503809314038AE057DE1D |
:1010000082E455DE8CE453DE8AE351DE86E54FDE72 |
:1010100080E34DDE8EE24BDE83E349DE86E347DE8E |
:101020008AE045DE81E443DE84E441DE82E53FDEA2 |
:101030008AE33DDE80916100805D39DE0895809114 |
:101040001403909115036FD0882391F080916D0067 |
:10105000882371F022E24AE753E06091AF0284E412 |
:1010600049DF82E390E056D09093150380931403F8 |
:1010700008951F920F920FB60F9211248F939F9392 |
:1010800080919C038F5F80939C0380919F0081508F |
:1010900080939F008F3F71F583E080939F00809144 |
:1010A0009D0090919E00019690939E0080939D00DC |
:1010B0008091810090918200009729F00197909390 |
:1010C0008200809381008091A100882331F080917B |
:1010D000A10081508093A10002C08093A000809164 |
:1010E0007F0090918000009729F0019790938000F5 |
:1010F00080937F009F918F910F900FBE0F901F9054 |
:10110000189582E083BF89B7816089BF89B7806401 |
:1011100089BF089520919D0030919E00280F391FAE |
:10112000C9010197089520919D0030919E00821B76 |
:10113000930B892F9927807899270895CF93DF9370 |
:10114000E9DFEC01CE01EFDF8823E1F3DF91CF91FE |
:10115000089586EA86B987E087B9369A089527B157 |
:1011600096E097B910BE83ED86B9349A97B9369A4E |
:10117000349BFECF27B924B135B1220F331F220F84 |
:10118000331F4091870050918800CA0163E0880FA7 |
:10119000991F6A95E1F7841B950B280F391F83E08F |
:1011A000369527958A95E1F730938800209387003C |
:1011B0008091860099278217930720F480918700F9 |
:1011C0008093860016B888E080BF0895982F27B1D5 |
:1011D00087B910BE83ED86B9349A97B9369A349B95 |
:1011E000FECF27B916B888E080BF84B195B10895C5 |
:1011F00086E0ECDF9C01220F331F220F331F293CB6 |
:10120000310510F028EC30E03093880020938700FF |
:101210008091860099278217930720F48091870098 |
:101220008093860016B888E080BF08958EB5806CE4 |
:101230008EBD8EB580648EBD89B7806289BF89B747 |
:10124000846089BF08951F920F920FB60F921124E8 |
:101250008F938091A2008F5F8093A2008F910F9057 |
:101260000FBE0F901F9018951F920F920FB60F92FE |
:1012700011242F933F938F939F930EB406FE0FC0BC |
:101280001092A20086B597B59093A6008093A50012 |
:101290008EB58F7B8EBD84E68093A10079C08EB51C |
:1012A00080648EBD26B537B58091A5009091A600CB |
:1012B000281B390B8091A2009927982F8827990F16 |
:1012C000280F391F689414F8369527951694E1F77E |
:1012D0003093A8002093A7002851314030F488E1D2 |
:1012E00091E09093A8008093A7002091A7003091EF |
:1012F000A800285131403093A8002093A700809186 |
:10130000A3009091A4008217930730F48091A3006A |
:101310009091A40001960CC08091A3009091A4002C |
:101320002817390748F48091A3009091A4000197F1 |
:101330009093A4008093A3002091A3003091A40077 |
:10134000C901880F991F880F991F880F991F821B49 |
:10135000930B2091A7003091A800820F931F23E0E8 |
:10136000969587952A95E1F79093A8008093A7001A |
:101370009093A4008093A3008091A0008F3F29F058 |
:101380008091A0008F5F8093A00081E08093620035 |
:101390009F918F913F912F910F900FBE0F901F90B3 |
:1013A00018951F920F920FB60F9211248F938AB740 |
:1013B0008F7B8ABF8F910F900FBE0F901F90189553 |
:1013C00090916100990F980F92B985EC86BF0895AE |
:1013D0001F920F920FB60F9211248F939F9381B19A |
:1013E0009927887F907080389105E9F081389105C0 |
:1013F00034F40097B1F18036910579F035C0883B1F |
:101400009105D9F0893B910524F4883A9105A9F01A |
:101410002BC0883F910511F127C086B7806886BF31 |
:101420001092A90023C083B180939D0384EF91E0C3 |
:1014300090938200809381000EC09091A90099231F |
:1014400039F48091850083B99F5F9093A90003C010 |
:101450008091630083B986B7806807C086B78069CA |
:1014600086BF86B7806986BF85EC86BF9F918F91C6 |
:101470000F900FBE0F901F9018951F920F920FB6EE |
:101480000F9211240F900FBE0F901F9018951F926E |
:101490000F920FB60F9211241F932F933F934F93E8 |
:1014A0005F936F937F938F939F93AF93BF93CF93EC |
:1014B000EF93FF93459B02C011E001C010E08091C3 |
:1014C000AC0099278230910509F46FC083309105F3 |
:1014D0002CF4009779F00197A9F11EC18430910591 |
:1014E00009F4B6C0843091050CF487C0059709F45F |
:1014F000D7C012C181E685BD90916000992321F08B |
:1015000081EA8FBD88E003C081E08FBD8EE087BB9C |
:10151000112399F082B3877E82BB959A992321F497 |
:1015200081E090E09DBD8CBDC1E0C4BD80916200B2 |
:10153000811115DE4098C7B928C082B3877D82BB70 |
:10154000949AEAC082B3877E82BB959A909160009C |
:10155000112309F581E485BD992329F081EA8FBD26 |
:101560008CE087BB08C081E28FBD8EE087BB81E045 |
:1015700090E09DBD8CBD81E084BD809162008111B1 |
:10158000EEDD17B888B1836088B98091AC008F5FB9 |
:101590008093AC00ABC081E685BD992321F081EA40 |
:1015A0008FBD88E0B8C081E0B4C081E485BD909172 |
:1015B0006000992321F081EA8FBD8CE003C081E2B5 |
:1015C0008FBD8EE087BB112399F082B38F7C82BBE5 |
:1015D000939A992321F481E090E09DBD8CBD81E038 |
:1015E00084BD809162008111BADD82E087B951C06B |
:1015F00082B3877E82BB959A8FC082B38F7C82BB79 |
:10160000939A909160001123C9F481E485BD9923D8 |
:1016100029F081EA8FBD8AE087BB08C081E88FBDD1 |
:101620008EE087BB81E090E09DBD8CBDC1E0C4BD74 |
:1016300080916200811193DDC7B9A4CF81E485BD9B |
:10164000992321F081EA8FBD8CE065C081E261C001 |
:1016500081E485BD90916000992321F081EA8FBDDE |
:101660008AE003C081E88FBD8EE087BB112399F02B |
:1016700082B3877D82BB949A992321F481E090E024 |
:101680009DBD8CBD81E084BD80916200811167DDCC |
:1016900017B840987ACF82B38F7C82BB939A3CC0B4 |
:1016A00082B3877D82BB949A90916000112341F5AB |
:1016B00081E685BD992329F081EA8FBD88E087BB4B |
:1016C00008C081E08FBD8EE087BB81E090E09DBDCA |
:1016D0008CBD81E084BD80916200811140DD82E09B |
:1016E00087B988B1836088B91092AC008091780086 |
:1016F00090917900019690937900809378000CC0C6 |
:1017000081E485BD992321F081EA8FBD8AE003C081 |
:1017100081E88FBD8EE087BB459903C0112309F096 |
:10172000C9CE459B03C0112309F4C4CE10926200B8 |
:10173000FF91EF91CF91BF91AF919F918F917F9149 |
:101740006F915F914F913F912F911F910F900FBE1D |
:101750000F901F9018958091AC00992782309105C9 |
:1017600009F43DC0833091052CF4009779F001977E |
:1017700011F108958430910509F45EC0843091051B |
:101780000CF444C0059709F46BC0089581E685BD4B |
:1017900080916000882321F081EA8FBD88E003C03A |
:1017A00081E08FBD8EE087BB82B3877D82BB949A38 |
:1017B00082E087B927C081E685BD809160008823DB |
:1017C00021F081EA8FBD88E003C081E08FBD8EE00B |
:1017D00087BB82B3877E82BB959A81E02AC081E471 |
:1017E00085BD80916000882321F081EA8FBD8CE067 |
:1017F00003C081E28FBD8EE087BB82B3877E82BB50 |
:10180000959A17B888B1836088B9089581E485BD39 |
:1018100080916000882321F081EA8FBD8CE003C0B5 |
:1018200081E28FBD8EE087BB82B38F7C82BB939AAF |
:1018300082E087B94098089581E485BD8091600079 |
:10184000882321F081EA8FBD8AE003C081E88FBD43 |
:101850008EE087BB82B38F7C82BB939A81E0A9CF55 |
:1018600081E485BD80916000882321F081EA8FBDED |
:101870008AE003C081E88FBD8EE087BB82B3877D9D |
:1018800082BB949A17B8D6CF0F931F93CF93DF9351 |
:101890008C01EB01009711F4672BB9F16EE070E059 |
:1018A00081E090E037D0FC01892B71F180E88383DF |
:1018B000209771F0D387C28781E8838380919E034C |
:1018C00090919F03892B21F4F0939F03E0939E0353 |
:1018D00001151105C9F01187008783818260838318 |
:1018E0008091A0039091A103892B71F4F093A1033F |
:1018F000E093A0038091A2039091A303892B21F48C |
:10190000F093A303E093A203CF01DF91CF911F9146 |
:101910000F9108950F931F93CF93DF93869F8001BC |
:10192000879F100D969F100D1124C8010DD0EC015A |
:10193000009721F0A80160E070E0FCD0CE01DF91BB |
:10194000CF911F910F910895CF93DF93AC01029730 |
:1019500010F442E050E020E030E0A091A603B09106 |
:10196000A703BD01F901109709F44CC08D919C911A |
:1019700011978417950731F14817590738F4211545 |
:10198000310519F08217930708F49C01FD01A2812B |
:10199000B381109759F721153105A1F1C901841BB5 |
:1019A000950B049708F4A901DB01E0E0F0E0109743 |
:1019B00049F18D919C91119782179307F9F4421781 |
:1019C000530779F4ED018A819B81309719F0938355 |
:1019D000828304C09093A7038093A603CD0102964F |
:1019E0004AC0241B350BFD01E20FF31F41935193B5 |
:1019F000225030402D933C93CF013DC0FD01A28188 |
:101A0000B381D5CF8091A4039091A503892B41F494 |
:101A100080917100909172009093A5038093A4032C |
:101A2000E0916F00F0917000309741F4EDB7FEB790 |
:101A30008091730090917400E81BF90BA091A403AE |
:101A4000B091A5039F012A1B3B0B2417350788F093 |
:101A5000CA0102962817390760F0CD01840F951F3F |
:101A600002969093A5038093A4034D935D93CD01BB |
:101A700002C080E090E0DF91CF910895CF93DF9393 |
:101A8000009709F454C0DC011297ED011B821A8201 |
:101A90008091A6039091A703009721F1FC0140E0FB |
:101AA00050E0EA17FB0718F1ED01FB83EA832D9163 |
:101AB0003C911197C20FD31FCE0102968E179F073C |
:101AC00071F48A819B81280F391F2E5F3F4F119639 |
:101AD0003C932E9382819381FD01938382834115F0 |
:101AE000510559F4B093A703A093A60320C0AF01FA |
:101AF0000280F381E02D3097A1F6EA01BB83AA832F |
:101B0000CA01029628813981820F931F8A179B0789 |
:101B100071F48D919C911197280F391F2E5F3F4FC3 |
:101B200039832883FD01828193819B838A83DF919E |
:101B3000CF910895DC0101C06D9341505040E0F712 |
:101B40000895991B79E004C0991F961708F0961B19 |
:101B5000881F7A95C9F780950895AA1BBB1B51E190 |
:101B600007C0AA1FBB1FA617B70710F0A61BB70B0D |
:101B7000881F991F5A95A9F780959095BC01CD01B2 |
:101B80000895A1E21A2EAA1BBB1BFD010DC0AA1FBE |
:101B9000BB1FEE1FFF1FA217B307E407F50720F0D6 |
:101BA000A21BB30BE40BF50B661F771F881F991F51 |
:101BB0001A9469F760957095809590959B01AC019A |
:061BC000BD01CF010895F4 |
:101BC600010101FF01010A00000002010301640096 |
:061BD60000A8032000003E |
:00000001FF |
/tags/V0.36/Hex-Files/_BL_Ctrl_History.txt |
---|
0,0 → 1,73 |
+++++++++++++++++++++++++++++++++++ |
Brushless-Control |
Holger Buss |
buss@Mikrocontroller.com |
+++++++++++++++++++++++++++++++++++ |
V0.21 13.01.2007 |
- Erste offizielle Version |
- Unterstützt I2C und PPM |
V0.23 |
- Bei niedrigen PWM-Werten, kam es am Motor zu einem "Knackgeräusch" (besonders in der 16kHz-Variante). |
- Manchmal reagierte der Regler nicht gleich auf das PPM-Einschalt-Signal, wenn der Regler länger auf 0% war |
- Die Kommutierungserkennung läuft jetzt im Interrupt |
- Komponenten zur Drehzahlregelung wieder entfernt, weil sie den Code unleserlich machten |
Kommt in einer späteren Version wahrscheinlich wieder rein |
V0.25 |
- Es wurden zu viele Kommutierungs-Interrupts ausgelöst |
V0.27 02.02.2007 |
- X3D-Protokoll implementiert (für eine Sonderversion des X3D mit serieller Ausgabe) |
V0.31 22.2.2007 |
- Das I2C-Bus Protokoll wurde geändert: |
Jeder Motor wird jetzt mit einem eigenen Datensatz angesprochen |
Aus den Motorreglern kann jetzt Strom und MaxPWM ausgelesen werden |
- Es hatte sich ein Fehler in der Umrechnung des seriellen Wertes (X-3D) eingeschlichen; das ist hier behoben |
Mittels eines PC-Programms (SimTxData.exe) kann das X-3D-Protokoll simuliert und so die Motoren angefahren werden |
V0.32 22.8.2007 - IB |
- Serielle Empfangsroutine eingefügt |
es wird das Resetkommando für ein Bootloader-Update ausgeführt |
- Timerabfragen korrigiert (Wiederanlauf) |
- Versionsausgabe beim Start |
- Screenshot für PonyProg aktualisert (jetzt mit 2,7V Brownout) |
- Adress-Jumper auf BL-Ctrl-Platine V1.1 wird ausgewertet (#define MOTORADRESSE dann auf 0) ! |
- Ausgabe der aktuellen Adresse (seriell) |
V0.33 18.9.2007 - HB |
- Zeitverzögerung bei Lesen der Adresse (für BL-Ctrl V1.1) |
V0.34 27.09.2007 - HB |
- Endstufentest mit Tonfolge implementiert |
Nach dem Start kommt eine Tonfolge, bei der der Regler seine Endstufe testet. |
Im Falle eines Fehlers, werden Buchstaben ausgegeben, die einen Hinweis auf den Fehlerhaften MosFet geben. |
Falls mehrere Buchstaben auftreten, ist der erste ausschlaggebend. |
Falls das Piepen ausbleibt, handelt es sich um einen Überstrom durch Kurzschluss oder dauerhaft eingeschalteten FET. |
Falls der Motor nach der Testprozedur öfter piept und dabei die rote LED blinkt, schaltet der entsprechende Mosfet nicht durch. |
Dann kann man am Blinken (und Buchstaben) den Fehler erkennen. |
Dabei ist: A=A+ (1) B=B+ (2) C=C+ (3) a=A- (4) b=B- (5) c=C- (6) (in Klammern der Blinkcode) |
V0.35 30.09.2007 - HB |
Endstufentest erweitert. |
Die Fehlercodes sind: |
1: Kurzschluss Phase A (gegen B) |
2: Kurzschluss Phase B (gegen A) |
3: Kurzschluss Phase C (gegen B) |
4: Mosfet NA- schaltet nicht ab |
5: Mosfet NB- schaltet nicht ab |
6: Mosfet NC- schaltet nicht ab |
7: Kurzschluss Phase C (gegen A) |
A: NA+ schaltet nicht ein |
B: NB+ schaltet nicht ein |
C: NC+ schaltet nicht ein |
a: NA- schaltet nicht ein |
b: NB- schaltet nicht ein |
c: NC- schaltet nicht ein |
V0.36 09.12.2007 - HB |
Überstrombegrenzung für die 20A-Software verbessert, um den Shunt zu schonen |
Schwellwert der Kurzschlusserkennung erhöht, wegen Motoren mit geringerer Impendanz |
/tags/V0.36/Hex-Files/_Files.txt |
---|
0,0 → 1,19 |
Dateien: |
-------- |
BrushLess-Ctrl_V0_3xx_for_BL-Ctrl_V1_1.hex --> Hexfile für BL-Ctrl V1.1 |
BootLoader_MEGA8_8MHZ_Vx_y.hex --> Bootloader für BL-Ctrl (Fusebits beachten !) |
BrushLess-Ctrl_ADR_Vx_xx.hex --> Software für ADR=Motorposition(1 bis 4) |
BrushLess-Ctrl_ADR_Vx_xx_10A.hex --> Software für ADR=Motorposition(1 bis 4) 10A-Stromgrenze |
Testprogramme (Achtung: Motor läuft an!) |
----------------------------------------- |
Test_Manuell_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft ungeregelt mit fester Frequenz |
Test_Schub_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft mit unterschiedlichen Leistungen |
Test_Sollwert_Fix_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft fix mit 7,8% PWM |
Sonstiges: |
---------- |
Fuses_Mega8_8MHZ_*.gif --> Fusebits von Ponyprog (mit und ohne Bootloader) |
/tags/V0.36/PPM_Decode.c |
---|
0,0 → 1,76 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned int PPM_Signal = 0; |
volatile unsigned char Timer1Overflow = 0; |
volatile unsigned char PPM_Timeout = 0, anz_ppm_werte = 0; // Ungültig, wenn Null |
//############################################################################ |
// |
void InitPPM(void) |
//############################################################################ |
{ |
TCCR1B |= (1<<ICES1)|(1<<ICNC1); |
ICP_POS_FLANKE; |
ICP_INT_ENABLE; |
TIMER1_INT_ENABLE; |
} |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW1) |
//############################################################################ |
{ |
Timer1Overflow++; |
} |
//############################################################################ |
// |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int tim_alt; |
static unsigned int ppm; |
if(TCCR1B & (1<<ICES1)) // Positive Flanke |
{ |
Timer1Overflow = 0; |
tim_alt = ICR1; |
ICP_NEG_FLANKE; |
PPM_Timeout = 100; |
} |
else // Negative Flanke |
{ |
ICP_POS_FLANKE; |
#ifdef _32KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 32; |
#endif |
#ifdef _16KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 32; |
#endif |
if(ppm < 280) ppm = 280; |
ppm -= 280; |
if(PPM_Signal < ppm) PPM_Signal++; |
else if(PPM_Signal > ppm) PPM_Signal--; |
if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern |
PPM_Signal = ppm; |
if(anz_ppm_werte < 255) anz_ppm_werte++; |
ZeitZumAdWandeln = 1; |
} |
} |
//############################################################################ |
// |
SIGNAL(SIG_INTERRUPT0) |
//############################################################################ |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
} |
/tags/V0.36/PPM_Decode.h |
---|
0,0 → 1,27 |
/*############################################################################ |
############################################################################*/ |
extern volatile unsigned int PPM_Signal; |
extern volatile unsigned char PPM_Timeout, anz_ppm_werte; |
void InitPPM(void); |
#define INT0_ENABLE GIMSK |= 0x40 |
#define INT0_DISABLE GIMSK &= ~0x40 |
#define TIM0_START TIMSK |= 0x01 |
#define TIM0_STOPP TIMSK &= ~0x01 |
#define ICP_INT_ENABLE TIMSK |= 0x20 |
#define ICP_INT_DISABLE TIMSK &= ~0x20 |
#define TIMER1_INT_ENABLE TIMSK |= 0x04 |
#define TIMER1_INT_DISABLE TIMSK &= ~0x04 |
#define TIMER2_INT_ENABLE TIMSK |= 0x40 |
#define TIMER2_INT_DISABLE TIMSK &= ~0x40 |
#define INT0_POS_FLANKE MCUCR |= 0x01 |
#define INT0_ANY_FLANKE MCUCR |= 0x01 |
#define INT0_NEG_FLANKE MCUCR &= ~0x01 |
#define CLR_INT0_FLAG GIFR &= ~0x40 |
#define INIT_INT0_FLANKE MCUCR &= ~0x03; MCUCR |= 0x02; |
#define TIMER0_PRESCALER TCCR0 |
#define ICP_POS_FLANKE TCCR1B |= (1<<ICES1) |
#define ICP_NEG_FLANKE TCCR1B &= ~(1<<ICES1) |
/tags/V0.36/analog.c |
---|
0,0 → 1,78 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
//############################################################################ |
//Init ADC |
void ADC_Init(void) |
//############################################################################ |
{ |
ADCSRA = 0xA6; // Free Run & 1MHZ |
ADMUX = 7; // Kanal 7 |
ADCSRA |= 0x40; // Start |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void AdConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = 0x06; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = 0x06; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
i = ADCW * 4; |
// if(i > 300) i = 300; |
Strom = (i + Strom * 7) / 8; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
//############################################################################ |
//Strom Analogwerte lesen |
unsigned int MessAD(unsigned char channel) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = channel; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = channel; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
return(ADCW); |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void FastADConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
i = MessAD(6) * 4; |
// i = ADCW * 4; |
if(i > 200) i = 200; |
Strom = i;//(i + Strom * 1) / 2; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
/tags/V0.36/analog.h |
---|
0,0 → 1,6 |
extern void ADC_Init(void); |
extern void GetAnalogWerte(void); |
extern void AdConvert(void); |
extern void FastADConvert(void); |
/tags/V0.36/avr.mak |
---|
0,0 → 1,129 |
# TASKING EDE (Windows based integrated Embedded Development Environment) |
# |
# This makefile has been generated by TASKING EDE |
# |
# Toolchain: TASKING C for C166/ST10 v6.0 r4 |
# |
BINDIR = c:\c166\bin |
INCDIR = c:\c166\include |
LIBDIR = c:\c166\lib |
M166INC = c:\c166\include |
export M166INC |
CC166BIN = c:\c166\bin |
export CC166BIN |
PROJ = avr |
PROJDIR = c:\winavr\projects\flug\bl_mc_0_14 |
PRODDIR = c:\c166 |
OUTDIR = |
OPT_CC = -Ic:\c166\include -xmifp -Ms -FFSC -Ot -OB -OE -zautobitastruct-4 -zautobita-0 -zswitch_tabmem_default -s -wstrict -g -zvolatile_union -A1 -O1 |
OPT_MPP = DEF(_CPU,167) DEF(_EXT,1) DEF(__XPEN,0) DEF(__WRCFG,0) DEF(__CLKEN,0) DEF(__BYTDIS,0) DEF(__ROMEN,0) DEF(__RDYEN0,0) DEF(__SGTDIS,0) DEF(__STKSZ,0) DEF(__MCTC,1) DEF(__RWDC0,0) DEF(__MTTC0,0) DEF(__ALECTL0,0) DEF(__BUSACT0,1) DEF(__RDYEN0,0) DEF(__CSREN0,0) DEF(__CSWEN0,0) DEF(__BUSACT1,0) DEF(__BUSACT2,0) DEF(__BUSACT3,0) DEF(__BUSACT4,0) DEF(EVA,1) DEF(EX_AB,0) DEF(FLOAT,1) DEF(BIT_INIT,0) DEF(MODEL,SMALL) DEF(_USRSTACK,0) DEF(_SINGLE_FP,0) WA(1) |
OPT_AS = PL(60) PW(132) TA(8) WA(1) CHECKCPU16 CHECKBUS18 EX NOM166 SN(reg167.def) |
OPT_LC = _avr.ilo -cf -Ms -xmifp |
OPT_XVW = --single_instance -tcfg sim167.cfg -i -a 100 -b 200 -c 32 -s 26 |
all : "$(PROJ).abs" |
"uart.src" : "uart.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"uart.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "uart.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"uart.obj" : "uart.src" |
"c:\c166\bin\a166.exe" "uart.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"analog.src" : "analog.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"analog.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "analog.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"analog.obj" : "analog.src" |
"c:\c166\bin\a166.exe" "analog.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"interrupt4.src" : "interrupt4.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"interrupt4.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "interrupt4.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"interrupt4.obj" : "interrupt4.src" |
"c:\c166\bin\a166.exe" "interrupt4.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"main.src" : "main.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"main.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "main.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"main.obj" : "main.src" |
"c:\c166\bin\a166.exe" "main.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"ppm_decode.src" : "ppm_decode.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"ppm_decode.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "ppm_decode.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"ppm_decode.obj" : "ppm_decode.src" |
"c:\c166\bin\a166.exe" "ppm_decode.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"printf_p.src" : "printf_p.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"printf_p.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "printf_p.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"printf_p.obj" : "printf_p.src" |
"c:\c166\bin\a166.exe" "printf_p.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"timer0.src" : "timer0.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"timer0.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "timer0.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"timer0.obj" : "timer0.src" |
"c:\c166\bin\a166.exe" "timer0.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"twislave.src" : "twislave.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"twislave.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "twislave.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"twislave.obj" : "twislave.src" |
"c:\c166\bin\a166.exe" "twislave.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"$(PROJ).out" : "uart.obj" "analog.obj" "interrupt4.obj" "main.obj" "ppm_decode.obj" |
"$(PROJ).out" : "printf_p.obj" "timer0.obj" "twislave.obj" "_avr.ilo" |
"c:\c166\bin\cc166.exe" -o $@ -f <<EOF |
${separate "\n" $(match .obj $!) $(match .lno $!) $(match .lib $!) $(OPT_LC)} |
EOF |
"$(PROJ).abs" : "$(PROJ).out" |
"c:\c166\bin\ieee166.exe" $! $@ |
# Copyright (c) 2001 Altium, Ltd. |
# Serial: 979910-094 |
# EDE Version: 2.7 r5 |
/tags/V0.36/avr.opm |
---|
0,0 → 1,4 |
-G "C:\WinAVR\Projects\Flug\BL_MC_0_14\" |
-err "avr.err" |
-r |
-f "avr.mak" |
/tags/V0.36/avr_ctrl.psp |
---|
0,0 → 1,18 |
;Codewright Project Space File (do not remove or modify this line) |
[State] |
StateWindowFrame=10,18,939,1018,0x43097fca |
_StateHistory=PROJECTS,'..\Flight-Ctrl_V0_05\AVR.pjt','.\avr.pjt' |
_RestoreProject='.\avr.pjt' |
ProjSpaceFlags=0x00000000, 1 |
ProjViewSetShow=Abcccccbcccccc |
[Project] |
ConfigSetUserWorkspace='' |
ConfigSetUserWorkspaceParser='' |
ConfigSetUserWorkspaceTimeStamp=0 |
ConfigSetUserWorkspaceAutoSync=0 |
[Project.".\avr.pjt"] |
[Project."..\Flight-Ctrl_V0_05\AVR.pjt"] |
/tags/V0.36/main.c |
---|
0,0 → 1,721 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Copyright (c) 12.2007 Holger Buss |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung oder Nutzung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int PWM = 0; |
unsigned int Strom = 0,RuheStrom; //ca. in 0,1A |
unsigned char Strom_max = 0; |
unsigned char Mittelstrom = 0; |
unsigned int Drehzahl = 0; // in 100UPM 60 = 6000 |
unsigned int KommutierDelay = 10; |
unsigned int I2C_Timeout = 0; |
unsigned int SIO_Timeout = 0; |
unsigned int SollDrehzahl = 0; |
unsigned int IstDrehzahl = 0; |
unsigned int DrehZahlTabelle[256];//vorberechnete Werte zur Drehzahlerfassung |
unsigned char ZeitFuerBerechnungen = 1; |
unsigned char MotorAnwerfen = 0; |
unsigned char MotorGestoppt = 1; |
unsigned char MaxPWM = MAX_PWM; |
unsigned int CntKommutierungen = 0; |
unsigned int SIO_Drehzahl = 0; |
unsigned char ZeitZumAdWandeln = 1; |
unsigned char MotorAdresse = 1; |
unsigned char PPM_Betrieb = 1; |
//############################################################################ |
// |
void SetPWM(void) |
//############################################################################ |
{ |
unsigned char tmp_pwm; |
tmp_pwm = PWM; |
if(tmp_pwm > MaxPWM) // Strombegrenzung |
{ |
tmp_pwm = MaxPWM; |
PORTC |= ROT; |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
PORTC |= ROT; |
Strom--; |
} |
else |
{ |
#ifdef _32KHZ |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
#ifdef _16KHZ |
//OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
} |
} |
//############################################################################ |
// |
void PWM_Init(void) |
//############################################################################ |
{ |
PWM_OFF; |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
/* TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
*/ |
} |
//############################################################################ |
// |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
while((TCNT0 - dauer) & 0x80); |
} |
//############################################################################ |
// |
void Anwerfen(unsigned char pwm) |
//############################################################################ |
{ |
unsigned long timer = 300,i; |
DISABLE_SENSE_INT; |
PWM = 5; |
SetPWM(); |
Manuell(); |
Delay_ms(200); |
PWM = pwm; |
while(1) |
{ |
for(i=0;i<timer; i++) |
{ |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
Wait(100); // warten |
} |
timer-= timer/15+1; |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return; } |
Manuell(); |
Phase++; |
Phase %= 6; |
AdConvert(); |
PWM = pwm; |
SetPWM(); |
if(SENSE) |
{ |
PORTD ^= GRUEN; |
} |
} |
} |
/* |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
*/ |
void RotBlink(unsigned char anz) |
{ |
sei(); // Interrupts ein |
while(anz--) |
{ |
PORTC |= ROT; |
Delay_ms(300); |
PORTC &= ~ROT; |
Delay_ms(300); |
} |
Delay_ms(1000); |
} |
#define TEST_STROMGRENZE 120 |
unsigned char DelayM(unsigned int timer) |
{ |
while(timer--) |
{ |
FastADConvert(); |
if(Strom > (TEST_STROMGRENZE + RuheStrom)) |
{ |
FETS_OFF; |
return(1); |
} |
} |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
{ |
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
return(0); |
} |
/* |
void ShowSense(void) |
{ |
if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
*/ |
#define HIGH_A_EIN PORTB |= 0x08 |
#define HIGH_B_EIN PORTB |= 0x04 |
#define HIGH_C_EIN PORTB |= 0x02 |
#define LOW_A_EIN PORTD |= 0x08 |
#define LOW_B_EIN PORTD |= 0x10 |
#define LOW_C_EIN PORTD |= 0x20 |
void MotorTon(void) |
//############################################################################ |
{ |
unsigned char ADR_TAB[5] = {0,0,2,1,3}; |
unsigned int timer = 300,i; |
unsigned int t = 0; |
unsigned char anz = 0,MosfetOkay = 0, grenze = 50; |
PORTC &= ~ROT; |
Delay_ms(300 * ADR_TAB[MotorAdresse]); |
DISABLE_SENSE_INT; |
cli();//Globale Interrupts Ausschalten |
uart_putchar('\n'); |
STEUER_OFF; |
Strom_max = 0; |
DelayM(50); |
RuheStrom = Strom_max; |
// uart_putchar(RuheStrom + 'A'); |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Strom = 0; |
LOW_B_EIN; |
HIGH_A_EIN; |
if(DelayM(3)) |
{ |
anz = 1; |
uart_putchar('1'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_A_EIN; |
HIGH_B_EIN; |
if(DelayM(3)) |
{ |
anz = 2; |
uart_putchar('2'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_B_EIN; // Low C ein |
HIGH_C_EIN; // High B ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('3'); |
} |
FETS_OFF; |
Delay(1000); |
LOW_A_EIN; // Low A ein; und A gegen C |
HIGH_C_EIN; // High C ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('7'); |
} |
FETS_OFF; |
DelayM(10000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ LOW-Mosfets auf Schalten und Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_A_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_A_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); break;} |
Delay(5); |
} |
Delay(10000); |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_B_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_B_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); break;} |
Delay(5); |
} |
Strom = 0; |
Delay(10000); |
for(i=0;i<t;i++) |
{ |
LOW_C_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_C_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); break;} |
Delay(5); |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_A; |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
LOW_C_EIN; // Low C ein |
Strom = 0; |
#define TONDAUER 40000 |
#define SOUND_E 2 |
#define SOUND1_A 300 |
#define SOUND2_A 330 |
#define SOUND3_A 360 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_A_EIN; // Test A |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
FETS_OFF; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Low-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_B; |
LOW_A_EIN; // Low A ein |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
//++++++++++++++++++++++++++++++++++++ |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
sei();//Globale Interrupts Einschalten |
// Delay_ms(250 * MotorAdresse); |
/* |
LOW_A_EIN; // Low B ein |
#define SOUND8_A 650 |
for(i=0; i<(TONDAUER / SOUND8_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
PORTB = 0; |
Delay(SOUND8_A); |
} |
*/ |
Delay_ms(300 * (4-ADR_TAB[MotorAdresse])); |
if(!(MosfetOkay & 0x01)) { anz = 1; UDR='A'; } else |
if(!(MosfetOkay & 0x02)) { anz = 2; UDR='B'; } else |
if(!(MosfetOkay & 0x04)) { anz = 3; UDR='C'; } else |
if(!(MosfetOkay & 0x08)) { anz = 4; UDR='a'; } else |
if(!(MosfetOkay & 0x10)) { anz = 5; UDR='b'; } else |
if(!(MosfetOkay & 0x20)) { anz = 6; UDR='c'; } |
if(anz) Delay_ms(1000); |
RotBlink(anz); |
uart_putchar('.'); |
} |
//############################################################################ |
// |
unsigned char SollwertErmittlung(void) |
//############################################################################ |
{ |
static unsigned int sollwert = 0; |
unsigned int ppm; |
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
PPM_Betrieb = 0; |
ICP_INT_DISABLE; |
PORTC &= ~ROT; |
} |
else |
if(anz_ppm_werte > 20) // es gibt gültige PPM-Daten |
{ |
PPM_Betrieb = 1; |
ppm = PPM_Signal; |
if(ppm > 300) ppm = 0; // ungültiges Signal |
if(ppm > 200) ppm = 200; |
if(ppm <= MIN_PPM) sollwert = 0; |
else |
{ |
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM); |
} |
PORTC &= ~ROT; |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
PORTC |= ROT; |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
PPM_Betrieb = 0; |
PORTC &= ~ROT; |
ICP_INT_DISABLE; |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
return(sollwert); |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
char altPhase = 0; |
int test = 0; |
unsigned int MinUpmPulse,Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
DDRC = 0x08; |
PORTC = 0x08; |
DDRD = 0xBA; |
PORTD = 0x00; |
DDRB = 0x0E; |
PORTB = 0x31; |
#if (MOTORADRESSE == 0) |
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl |
for(test=0;test<500;test++); |
if (PINB & ADR1) |
{ |
if (PINB & ADR2) MotorAdresse = 1; |
else MotorAdresse = 2; |
} |
else |
{ |
if (PINB & ADR2) MotorAdresse = 3; |
else MotorAdresse = 4; |
} |
#else |
MotorAdresse = MOTORADRESSE; |
#endif |
UART_Init(); |
Timer0_Init(); |
sei();//Globale Interrupts Einschalten |
// Am Blinken erkennt man die richtige Motoradresse |
/* |
for(test=0;test<5;test++) |
{ |
if(test == MotorAdresse) PORTD |= GRUEN; |
Delay_ms(150); |
PORTD &= ~GRUEN; |
Delay_ms(250); |
} |
Delay_ms(500); |
*/ |
// UART_Init(); // war doppelt |
PWM_Init(); |
InitIC2_Slave(0x50); |
InitPPM(); |
Blink = SetDelay(101); |
Blink2 = SetDelay(102); |
MinUpmPulse = SetDelay(103); |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)) |
{ |
if(SollwertErmittlung()) break; |
} |
; |
PORTD |= GRUEN; |
PWM = 0; |
SetPWM(); |
SFIOR = 0x08; // Analog Comperator ein |
ADMUX = 1; |
MinUpmPulse = SetDelay(10); |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
if(!SollwertErmittlung()) MotorTon(); |
//MotorTon(); |
PORTB = 0x31; // Pullups wieder einschalten |
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung |
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder |
while (1) |
{ |
//ShowSense(); |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt |
{ |
MotorGestoppt = 0; |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
MinUpmPulse = SetDelay(250); // Timeout, falls ein Motor stehen bleibt |
altPhase = Phase; |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!PWM) // Sollwert == 0 |
{ |
MotorAnwerfen = 0; // kein Startversuch |
ZeitFuerBerechnungen = 0; |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(MotorGestopptTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
STEUER_OFF; |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
MotorGestopptTimer = SetDelay(1500); |
} |
if(MotorGestoppt && !TEST_SCHUB) PWM = 0; |
SetPWM(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
{ |
if(MotorGestoppt) PORTD |= GRUEN; //else PORTD &= ~GRUEN; |
if(SIO_DEBUG) |
{ |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
} |
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung |
if(CheckDelay(MittelstromTimer)) |
{ |
MittelstromTimer = SetDelay(50); // alle 50ms |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
else if(Mittelstrom > Strom) Mittelstrom--; |
if(Strom > MAX_STROM) MaxPWM -= MaxPWM / 32; |
if((Mittelstrom > LIMIT_STROM))// Strom am Limit? |
{ |
if(MaxPWM) MaxPWM--;// dann die Maximale PWM herunterfahren |
PORTC |= ROT; |
} |
else |
{ |
if(MaxPWM < MAX_PWM) MaxPWM++; |
} |
} |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
{ |
DrehzahlMessTimer = SetDelay(10); |
SIO_Drehzahl = CntKommutierungen;//(6 * CntKommutierungen) / (POLANZAHL / 2); |
CntKommutierungen = 0; |
if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
} |
if(TEST_SCHUB) |
{ |
if(CheckDelay(TestschubTimer)) |
{ |
TestschubTimer = SetDelay(1500); |
switch(test) |
{ |
case 0: PWM = 50; test++; break; |
case 1: PWM = 130; test++; break; |
case 2: PWM = 60; test++; break; |
case 3: PWM = 140; test++; break; |
case 4: PWM = 150; test = 0; break; |
default: test = 0; |
} |
} |
} |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
{ |
MotorGestoppt = 1; |
DISABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
if(MotorAnwerfen) |
{ |
PORTC &= ~ROT; |
MotorAnwerfen = 0; |
Anwerfen(10); |
PORTD |= GRUEN; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(20); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 15; |
SetPWM(); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)); // kurz Durchstarten |
// Drehzahlmessung wieder aufsetzen |
DrehzahlMessTimer = SetDelay(50); |
altPhase = 7; |
} |
} |
} // ZeitFuerBerechnungen |
} // while(1) - Hauptschleife |
} |
/tags/V0.36/main.elf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.36/main.h |
---|
0,0 → 1,138 |
#ifndef _MAIN_H |
#define _MAIN_H |
#define MOTORADRESSE 0 // Adresse (1-4) 0 = Motoradresse über Lötjumper auf BL-Ctrl V1.1 |
#define MANUELL_PWM 0 // zur manuellen Vorgabe der PWM Werte: 0-255 |
#define TEST_MANUELL 0 // zum Testen der Hardware ohne Kommutierungsdetektion Werte: 0-255 (PWM) |
#define TEST_SCHUB 0 // Erzeugt ein Schubmuster Werte: 0 = normal 1 = Test |
#define POLANZAHL 12 // Anzahl der Pole (Magnete) Wird nur zur Drehzahlausgabe über Debug gebraucht |
#define MAX_PWM 255 |
#define MIN_PWM 3 |
#define MIN_PPM 10 // ab hier (PPM-Signal) schaltet der Regler erst ein |
#define FILTER_PPM 7 // wie stark soll das PPM-Signal gefiltert werden (Werte: 0-30)? |
#define SIO_DEBUG 0 // Testwertausgaben auf der seriellen Schnittstelle |
#define X3D_SIO 0 // serielles Protokoll des X3D (38400Bd) Achtung: dann muss SIO_DEBUG = 0 sein |
#define _16KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define _32KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
#define FDD6637_IRLR7843 1 // bessere MosFet bestückt? bewirkt höhere Stromgrenzen |
#ifdef _16KHZ |
#ifdef FDD6637_IRLR7843 // bessere Fets = mehr Strom zulassen |
#define MAX_STROM 200 // ab ca. 20A PWM ausschalten |
#define LIMIT_STROM 120 // ab ca. 12A PWM begrenzen |
#else |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 65 // ab ca. 6,5A PWM begrenzen |
#endif |
#endif |
#ifdef _32KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 50 // ab ca. 5,0A PWM begrenzen |
#endif |
#define SYSCLK 8000000L //Quarz Frequenz in Hz |
//Robbe Roxxy 2824-34 mit Todd 10x4,5 bei 16kHz |
//PWM Strom Schub |
//10 0,18A 21g |
//20 0,30A 38g |
//30 0,40A 49g |
//40 0,54A 60g |
//50 0,70A 83g |
//60 0,95A 102g |
//70 1,25A 128g |
//80 1,50A 151g |
//90 1,83A 175g |
//100 2,25A 206g |
//110 2,66A 228g |
//120 3,10A 257g |
//130 3,55A 278g |
//140 4,00A 305g |
//150 4,50A 330g |
//160 5,30A 355g |
//170 5,85A 387g |
//180 6,40A 400g |
//190 7,10A 425g |
//200 7,60A 460g |
//0,5A 63g 14% |
//1,0A 110g 24% |
//1,5A 170g 32% |
//2,0A 195g 37% |
//2,5A 230g 41% |
//3,0A 260g 46% |
//3,5A 290g 50% |
//4,0A 310g 53% |
//4,5A 340g 58% |
//5,0A 360g 63% |
//5,5A 380g 67% |
//6,0A 400g 68% |
//6,5A 420g 70% |
//7,0A 450g 75% |
//7,5A 460g 78% |
//8,0A 475g 82% |
//9,0A 550g 86% |
//11 A 600g 100% |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "twislave.h" |
#include "old_macros.h" |
#include "analog.h" |
#include "uart.h" |
#include "timer0.h" |
#include "BLMC.h" |
#include "PPM_Decode.h" |
extern unsigned int I2C_Timeout; |
extern unsigned int SIO_Timeout; |
extern unsigned int PWM; |
extern unsigned int Strom; //ca. in 0,1A |
extern unsigned char Strom_max; |
extern unsigned char Mittelstrom; |
extern unsigned int CntKommutierungen; |
extern unsigned char MotorAnwerfen; |
extern unsigned char MotorGestoppt; |
extern unsigned char ZeitZumAdWandeln; |
extern unsigned char MaxPWM; |
extern unsigned char MotorAdresse; |
extern unsigned char PPM_Betrieb; |
#define ROT 0x08 |
#define GRUEN 0x80 |
#define ADR1 0x40 // für Motoradresswahl |
#define ADR2 0x80 // |
#if defined(__AVR_ATmega8__) |
# define OC1 PB1 |
# define DDROC DDRB |
# define OCR OCR1A |
# define PWM10 WGM10 |
# define PWM11 WGM11 |
#endif |
#endif //_MAIN_H |
/tags/V0.36/main.lss |
---|
0,0 → 1,4534 |
main.elf: file format elf32-avr |
Sections: |
Idx Name Size VMA LMA File off Algn |
0 .text 00001bec 00000000 00000000 00000094 2**0 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
1 .data 00000024 00800060 00001bec 00001c80 2**0 |
CONTENTS, ALLOC, LOAD, DATA |
2 .bss 00000156 00800084 00800084 00001ca4 2**0 |
ALLOC |
3 .noinit 00000000 008001da 008001da 00001ca4 2**0 |
CONTENTS |
4 .eeprom 00000000 00810000 00810000 00001ca4 2**0 |
CONTENTS |
5 .stab 0000036c 00000000 00000000 00001ca4 2**2 |
CONTENTS, READONLY, DEBUGGING |
6 .stabstr 00000084 00000000 00000000 00002010 2**0 |
CONTENTS, READONLY, DEBUGGING |
7 .debug_aranges 000000b4 00000000 00000000 00002094 2**0 |
CONTENTS, READONLY, DEBUGGING |
8 .debug_pubnames 000006f5 00000000 00000000 00002148 2**0 |
CONTENTS, READONLY, DEBUGGING |
9 .debug_info 00001a41 00000000 00000000 0000283d 2**0 |
CONTENTS, READONLY, DEBUGGING |
10 .debug_abbrev 00000774 00000000 00000000 0000427e 2**0 |
CONTENTS, READONLY, DEBUGGING |
11 .debug_line 0000169d 00000000 00000000 000049f2 2**0 |
CONTENTS, READONLY, DEBUGGING |
12 .debug_str 00000874 00000000 00000000 0000608f 2**0 |
CONTENTS, READONLY, DEBUGGING |
Disassembly of section .text: |
00000000 <__vectors>: |
0: 0c 94 85 00 jmp 0x10a <__init> |
4: 0c 94 7e 0b jmp 0x16fc <__vector_1> |
8: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
10: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
14: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
18: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
1c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
20: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
24: 0c 94 67 09 jmp 0x12ce <__vector_9> |
28: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
2c: 0c 94 96 0b jmp 0x172c <__vector_11> |
30: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
34: 0c 94 18 02 jmp 0x430 <__vector_13> |
38: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
3c: 0c 94 e3 01 jmp 0x3c6 <__vector_15> |
40: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
44: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
48: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
4c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
50: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
00000054 <__ctors_end>: |
54: 20 2d mov r18, r0 |
56: 2d 20 and r2, r13 |
58: 52 65 ori r21, 0x52 ; 82 |
5a: 6d 6f ori r22, 0xFD ; 253 |
5c: 74 65 ori r23, 0x54 ; 84 |
5e: 20 20 and r2, r0 |
60: 2d 2d mov r18, r13 |
62: 20 20 and r2, r0 |
64: 20 20 and r2, r0 |
66: 20 20 and r2, r0 |
... |
00000069 <__c.1>: |
69: 20 2d 2d 20 44 69 73 70 6c 61 79 20 2d 2d 20 20 -- Display -- |
79: 20 20 20 20 00 . |
0000007e <__c.2>: |
7e: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |
8e: 20 20 20 20 00 . |
00000093 <__c.3>: |
93: 20 20 77 77 77 2e 4d 69 63 72 6f 53 50 53 2e 63 www.MicroSPS.c |
a3: 6f 6d 20 20 00 om . |
000000a8 <__c.2>: |
a8: 25 73 00 %s. |
000000ab <__c.3>: |
ab: 25 73 00 %s. |
000000ae <__c.4>: |
ae: 25 73 00 %s. |
000000b1 <__c.5>: |
b1: 25 73 00 %s. |
000000b4 <__c.3>: |
b4: 56 65 72 62 69 6e 64 65 6e 20 6d 69 74 00 Verbinden mit. |
000000c2 <__c.4>: |
c2: 4d 69 63 72 6f 53 50 53 3a 25 32 69 20 00 MicroSPS:%2i . |
000000d0 <__c.5>: |
d0: 4d 61 78 20 41 64 72 65 73 73 65 00 Max Adresse. |
000000dc <__c.6>: |
dc: 25 32 69 20 00 %2i . |
000000e1 <__c.7>: |
e1: 43 68 65 63 6b 73 75 6d 00 Checksum. |
000000ea <__c.8>: |
ea: 45 72 72 6f 72 73 3a 25 35 69 20 00 Errors:%5i . |
000000f6 <__c.9>: |
f6: 44 69 73 70 6c 61 79 00 Display. |
000000fe <__c.10>: |
fe: 5a 65 69 6c 65 6e 3a 25 31 69 20 00 Zeilen:%1i . |
0000010a <__init>: |
10a: 11 24 eor r1, r1 |
10c: 1f be out 0x3f, r1 ; 63 |
10e: cf e5 ldi r28, 0x5F ; 95 |
110: d8 e0 ldi r29, 0x08 ; 8 |
112: de bf out 0x3e, r29 ; 62 |
114: cd bf out 0x3d, r28 ; 61 |
00000116 <__do_copy_data>: |
116: 10 e0 ldi r17, 0x00 ; 0 |
118: a0 e6 ldi r26, 0x60 ; 96 |
11a: b0 e0 ldi r27, 0x00 ; 0 |
11c: ec ee ldi r30, 0xEC ; 236 |
11e: fb e1 ldi r31, 0x1B ; 27 |
120: 02 c0 rjmp .+4 ; 0x126 <.do_copy_data_start> |
00000122 <.do_copy_data_loop>: |
122: 05 90 lpm r0, Z+ |
124: 0d 92 st X+, r0 |
00000126 <.do_copy_data_start>: |
126: a4 38 cpi r26, 0x84 ; 132 |
128: b1 07 cpc r27, r17 |
12a: d9 f7 brne .-10 ; 0x122 <.do_copy_data_loop> |
0000012c <__do_clear_bss>: |
12c: 11 e0 ldi r17, 0x01 ; 1 |
12e: a4 e8 ldi r26, 0x84 ; 132 |
130: b0 e0 ldi r27, 0x00 ; 0 |
132: 01 c0 rjmp .+2 ; 0x136 <.do_clear_bss_start> |
00000134 <.do_clear_bss_loop>: |
134: 1d 92 st X+, r1 |
00000136 <.do_clear_bss_start>: |
136: aa 3d cpi r26, 0xDA ; 218 |
138: b1 07 cpc r27, r17 |
13a: e1 f7 brne .-8 ; 0x134 <.do_clear_bss_loop> |
13c: 0c 94 e5 00 jmp 0x1ca <main> |
00000140 <__bad_interrupt>: |
140: 0c 94 00 00 jmp 0x0 <__vectors> |
00000144 <Sekundentakt_Init>: |
unsigned int IntervallDebug = 250, IntervallDisplay = 120; |
void Sekundentakt_Init(void) |
{ |
_SekTimer = SetDelay(1000); |
144: 88 ee ldi r24, 0xE8 ; 232 |
146: 93 e0 ldi r25, 0x03 ; 3 |
148: 0e 94 a8 09 call 0x1350 <SetDelay> |
14c: 90 93 91 00 sts 0x0091, r25 |
150: 80 93 90 00 sts 0x0090, r24 |
154: 08 95 ret |
00000156 <Sekundentakt>: |
} |
void Sekundentakt(void) |
{ |
if(CheckDelay(_SekTimer)) |
156: 80 91 90 00 lds r24, 0x0090 |
15a: 90 91 91 00 lds r25, 0x0091 |
15e: 0e 94 b1 09 call 0x1362 <CheckDelay> |
162: 88 23 and r24, r24 |
164: 31 f1 breq .+76 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
GetKeyboard(); |
166: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
_SekTimer += 1000; |
16a: 80 91 90 00 lds r24, 0x0090 |
16e: 90 91 91 00 lds r25, 0x0091 |
172: 88 51 subi r24, 0x18 ; 24 |
174: 9c 4f sbci r25, 0xFC ; 252 |
176: 90 93 91 00 sts 0x0091, r25 |
17a: 80 93 90 00 sts 0x0090, r24 |
if(!CntDatensaetzeProSekunde) UebertragungUnterbrochen = 1; else UebertragungUnterbrochen = 0; |
17e: 80 91 66 00 lds r24, 0x0066 |
182: 88 23 and r24, r24 |
184: 21 f4 brne .+8 ; 0x18e <Sekundentakt+0x38> |
186: 81 e0 ldi r24, 0x01 ; 1 |
188: 80 93 84 00 sts 0x0084, r24 |
18c: 02 c0 rjmp .+4 ; 0x192 <Sekundentakt+0x3c> |
18e: 10 92 84 00 sts 0x0084, r1 |
CntDatensaetzeProSekunde = 0; |
192: 10 92 66 00 sts 0x0066, r1 |
if(++Sekunde == 60) |
196: 80 91 8d 00 lds r24, 0x008D |
19a: 8f 5f subi r24, 0xFF ; 255 |
19c: 80 93 8d 00 sts 0x008D, r24 |
1a0: 8c 33 cpi r24, 0x3C ; 60 |
1a2: 39 f4 brne .+14 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
Sekunde = 0; |
1a4: 10 92 8d 00 sts 0x008D, r1 |
Minute++; |
1a8: 80 91 8c 00 lds r24, 0x008C |
1ac: 8f 5f subi r24, 0xFF ; 255 |
1ae: 80 93 8c 00 sts 0x008C, r24 |
1b2: 08 95 ret |
000001b4 <Init>: |
} |
} |
} |
void Init(void) |
{ |
VersionInfo.Hauptversion = 0; |
1b4: 10 92 c9 00 sts 0x00C9, r1 |
VersionInfo.Nebenversion = 99; |
1b8: 83 e6 ldi r24, 0x63 ; 99 |
1ba: 80 93 ca 00 sts 0x00CA, r24 |
VersionInfo.PCKompatibel = 1; |
1be: 81 e0 ldi r24, 0x01 ; 1 |
1c0: 80 93 cb 00 sts 0x00CB, r24 |
VersionInfo.Commercial = 0x00; |
1c4: 10 92 cc 00 sts 0x00CC, r1 |
1c8: 08 95 ret |
000001ca <main>: |
} |
#define MENU 0 |
#define REMOTE 1 |
//############################################################################ |
//Hauptprogramm |
void main (void) |
//############################################################################ |
{ |
1ca: ca e5 ldi r28, 0x5A ; 90 |
1cc: d8 e0 ldi r29, 0x08 ; 8 |
1ce: de bf out 0x3e, r29 ; 62 |
1d0: cd bf out 0x3d, r28 ; 61 |
char z,txt[]= {"Moin"},key,key_old = 255; |
1d2: de 01 movw r26, r28 |
1d4: 11 96 adiw r26, 0x01 ; 1 |
1d6: e7 e6 ldi r30, 0x67 ; 103 |
1d8: f0 e0 ldi r31, 0x00 ; 0 |
1da: 85 e0 ldi r24, 0x05 ; 5 |
1dc: 01 90 ld r0, Z+ |
1de: 0d 92 st X+, r0 |
1e0: 81 50 subi r24, 0x01 ; 1 |
1e2: e1 f7 brne .-8 ; 0x1dc <main+0x12> |
int test = 0; |
unsigned int DelayTast; |
unsigned int DelayDaten,DelayDisplay; |
unsigned char mode = REMOTE; |
1e4: 91 e0 ldi r25, 0x01 ; 1 |
1e6: b9 2e mov r11, r25 |
unsigned char neueDatenuebertragung = 1; |
UART_Init(); |
1e8: 0e 94 cc 04 call 0x998 <UART_Init> |
LCD_Init(); |
1ec: 0e 94 1f 06 call 0xc3e <LCD_Init> |
UART_Init(); |
1f0: 0e 94 cc 04 call 0x998 <UART_Init> |
Timer1_Init(); |
1f4: 0e 94 9e 09 call 0x133c <Timer1_Init> |
Keyboard_Init(); |
1f8: 0e 94 c9 09 call 0x1392 <Keyboard_Init> |
Sekundentakt_Init(); |
1fc: 0e 94 a2 00 call 0x144 <Sekundentakt_Init> |
InitIR(); |
200: 0e 94 67 0b call 0x16ce <InitIR> |
ADC_Init(); |
204: 0e 94 42 0c call 0x1884 <ADC_Init> |
Init(); |
208: 0e 94 da 00 call 0x1b4 <Init> |
sei ();//Globale Interrupts Einschalten |
20c: 78 94 sei |
DDRB = 0xff; |
20e: 8f ef ldi r24, 0xFF ; 255 |
210: 87 bb out 0x17, r24 ; 23 |
PORTB = 0x00; |
212: 18 ba out 0x18, r1 ; 24 |
LCD_Clear; |
214: 81 e0 ldi r24, 0x01 ; 1 |
216: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
21a: 0e 94 c9 05 call 0xb92 <_long_delay> |
/* while(1) |
*/ |
DelayTast = SetDelay(80); |
21e: 80 e5 ldi r24, 0x50 ; 80 |
220: 90 e0 ldi r25, 0x00 ; 0 |
222: 0e 94 a8 09 call 0x1350 <SetDelay> |
226: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
228: 88 ec ldi r24, 0xC8 ; 200 |
22a: 90 e0 ldi r25, 0x00 ; 0 |
22c: 0e 94 a8 09 call 0x1350 <SetDelay> |
230: 8c 01 movw r16, r24 |
DelayDisplay = SetDelay(300); |
232: 8c e2 ldi r24, 0x2C ; 44 |
234: 91 e0 ldi r25, 0x01 ; 1 |
236: 0e 94 a8 09 call 0x1350 <SetDelay> |
23a: 6c 01 movw r12, r24 |
ClearIntervalle(); |
23c: 0e 94 2e 05 call 0xa5c <ClearIntervalle> |
while (1) |
{ |
if(mode == MENU) |
240: bb 20 and r11, r11 |
242: 11 f5 brne .+68 ; 0x288 <main+0xbe> |
{ |
Delay_ms(10); |
244: 8a e0 ldi r24, 0x0A ; 10 |
246: 90 e0 ldi r25, 0x00 ; 0 |
248: 0e 94 bc 09 call 0x1378 <Delay_ms> |
key = GetKeyboard(); |
24c: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
Menu(key); |
250: 99 27 eor r25, r25 |
252: 0e 94 64 0a call 0x14c8 <Menu> |
if(_TASTE5) |
256: cb 9b sbis 0x19, 3 ; 25 |
258: f5 cf rjmp .-22 ; 0x244 <main+0x7a> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
25a: 8a e0 ldi r24, 0x0A ; 10 |
25c: 90 e0 ldi r25, 0x00 ; 0 |
25e: 0e 94 bc 09 call 0x1378 <Delay_ms> |
262: cb 99 sbic 0x19, 3 ; 25 |
264: fa cf rjmp .-12 ; 0x25a <main+0x90> |
mode = REMOTE; |
266: 81 e0 ldi r24, 0x01 ; 1 |
268: b8 2e mov r11, r24 |
DelayTast = SetDelay(100); |
26a: 84 e6 ldi r24, 0x64 ; 100 |
26c: 90 e0 ldi r25, 0x00 ; 0 |
26e: 0e 94 a8 09 call 0x1350 <SetDelay> |
272: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
274: 88 ec ldi r24, 0xC8 ; 200 |
276: 90 e0 ldi r25, 0x00 ; 0 |
278: 0e 94 a8 09 call 0x1350 <SetDelay> |
27c: 8c 01 movw r16, r24 |
LCD_Clear; |
27e: 8b 2d mov r24, r11 |
280: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
284: 0e 94 c9 05 call 0xb92 <_long_delay> |
} |
} |
else |
if(mode == REMOTE) |
288: 81 e0 ldi r24, 0x01 ; 1 |
28a: b8 16 cp r11, r24 |
28c: c9 f6 brne .-78 ; 0x240 <main+0x76> |
{ |
BearbeiteRxDaten(); |
28e: 0e 94 fe 03 call 0x7fc <BearbeiteRxDaten> |
if(CheckDelay(DelayDaten)) |
292: c8 01 movw r24, r16 |
294: 0e 94 b1 09 call 0x1362 <CheckDelay> |
298: 88 23 and r24, r24 |
29a: c9 f3 breq .-14 ; 0x28e <main+0xc4> |
{ |
Sekundentakt(); |
29c: 0e 94 ab 00 call 0x156 <Sekundentakt> |
DelayDaten = SetDelay(10); |
2a0: 8a e0 ldi r24, 0x0A ; 10 |
2a2: 90 e0 ldi r25, 0x00 ; 0 |
2a4: 0e 94 a8 09 call 0x1350 <SetDelay> |
2a8: 8c 01 movw r16, r24 |
if(CheckDelay(DelayDisplay)) |
2aa: c6 01 movw r24, r12 |
2ac: 0e 94 b1 09 call 0x1362 <CheckDelay> |
2b0: 88 23 and r24, r24 |
2b2: 39 f0 breq .+14 ; 0x2c2 <main+0xf8> |
{ |
DelayDisplay = SetDelay(300); |
2b4: 8c e2 ldi r24, 0x2C ; 44 |
2b6: 91 e0 ldi r25, 0x01 ; 1 |
2b8: 0e 94 a8 09 call 0x1350 <SetDelay> |
2bc: 6c 01 movw r12, r24 |
PollDisplay = 1; |
2be: b0 92 ed 00 sts 0x00ED, r11 |
} |
key = GetKeyboard2(); |
2c2: 0e 94 57 0a call 0x14ae <GetKeyboard2> |
DatenUebertragung(key); |
2c6: 99 27 eor r25, r25 |
2c8: 0e 94 51 05 call 0xaa2 <DatenUebertragung> |
if(UebertragungUnterbrochen) |
2cc: 80 91 84 00 lds r24, 0x0084 |
2d0: 88 23 and r24, r24 |
2d2: 81 f1 breq .+96 ; 0x334 <main+0x16a> |
{ |
//01234567890123456789 |
LCD_printfxy(0,0," -- Remote -- "); |
2d4: 60 e0 ldi r22, 0x00 ; 0 |
2d6: 86 2f mov r24, r22 |
2d8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2dc: 84 e5 ldi r24, 0x54 ; 84 |
2de: 90 e0 ldi r25, 0x00 ; 0 |
2e0: 9f 93 push r25 |
2e2: 8f 93 push r24 |
2e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1," -- Display -- "); |
2e8: 61 e0 ldi r22, 0x01 ; 1 |
2ea: 80 e0 ldi r24, 0x00 ; 0 |
2ec: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2f0: 0f 90 pop r0 |
2f2: 0f 90 pop r0 |
2f4: 89 e6 ldi r24, 0x69 ; 105 |
2f6: 90 e0 ldi r25, 0x00 ; 0 |
2f8: 9f 93 push r25 |
2fa: 8f 93 push r24 |
2fc: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,2," "); |
300: 62 e0 ldi r22, 0x02 ; 2 |
302: 80 e0 ldi r24, 0x00 ; 0 |
304: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
308: 0f 90 pop r0 |
30a: 0f 90 pop r0 |
30c: 8e e7 ldi r24, 0x7E ; 126 |
30e: 90 e0 ldi r25, 0x00 ; 0 |
310: 9f 93 push r25 |
312: 8f 93 push r24 |
314: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,3," www.MicroSPS.com "); |
318: 63 e0 ldi r22, 0x03 ; 3 |
31a: 80 e0 ldi r24, 0x00 ; 0 |
31c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
320: 0f 90 pop r0 |
322: 0f 90 pop r0 |
324: 83 e9 ldi r24, 0x93 ; 147 |
326: 90 e0 ldi r25, 0x00 ; 0 |
328: 9f 93 push r25 |
32a: 8f 93 push r24 |
32c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
330: 0f 90 pop r0 |
332: 0f 90 pop r0 |
} |
if(CheckDelay(DelayTast)) |
334: c7 01 movw r24, r14 |
336: 0e 94 b1 09 call 0x1362 <CheckDelay> |
33a: 88 23 and r24, r24 |
33c: 09 f4 brne .+2 ; 0x340 <main+0x176> |
33e: a7 cf rjmp .-178 ; 0x28e <main+0xc4> |
{ |
DelayTast = SetDelay(100); |
340: 84 e6 ldi r24, 0x64 ; 100 |
342: 90 e0 ldi r25, 0x00 ; 0 |
344: 0e 94 a8 09 call 0x1350 <SetDelay> |
348: 7c 01 movw r14, r24 |
if(_TASTE5) |
34a: cb 9b sbis 0x19, 3 ; 25 |
34c: 0c c0 rjmp .+24 ; 0x366 <main+0x19c> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
34e: 8a e0 ldi r24, 0x0A ; 10 |
350: 90 e0 ldi r25, 0x00 ; 0 |
352: 0e 94 bc 09 call 0x1378 <Delay_ms> |
356: cb 99 sbic 0x19, 3 ; 25 |
358: fa cf rjmp .-12 ; 0x34e <main+0x184> |
mode = MENU; |
35a: bb 24 eor r11, r11 |
LCD_Clear; |
35c: 81 e0 ldi r24, 0x01 ; 1 |
35e: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
362: 0e 94 c9 05 call 0xb92 <_long_delay> |
366: 80 91 be 00 lds r24, 0x00BE |
} |
// if(key & 0x10) DebugIn.Digital[0] |= 0x01; else DebugIn.Digital[0] &= ~0x01; |
if(PIND & 0x08) DebugIn.Digital[0] |= 0x02; else DebugIn.Digital[0] &= ~0x02; |
36a: 83 9b sbis 0x10, 3 ; 16 |
36c: 02 c0 rjmp .+4 ; 0x372 <main+0x1a8> |
36e: 82 60 ori r24, 0x02 ; 2 |
370: 01 c0 rjmp .+2 ; 0x374 <main+0x1aa> |
372: 8d 7f andi r24, 0xFD ; 253 |
374: 80 93 be 00 sts 0x00BE, r24 |
378: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x10) DebugIn.Digital[0] |= 0x04; else DebugIn.Digital[0] &= ~0x04; |
37c: 84 9b sbis 0x10, 4 ; 16 |
37e: 02 c0 rjmp .+4 ; 0x384 <main+0x1ba> |
380: 84 60 ori r24, 0x04 ; 4 |
382: 01 c0 rjmp .+2 ; 0x386 <main+0x1bc> |
384: 8b 7f andi r24, 0xFB ; 251 |
386: 80 93 be 00 sts 0x00BE, r24 |
38a: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x20) DebugIn.Digital[0] |= 0x08; else DebugIn.Digital[0] &= ~0x08; |
38e: 85 9b sbis 0x10, 5 ; 16 |
390: 02 c0 rjmp .+4 ; 0x396 <main+0x1cc> |
392: 88 60 ori r24, 0x08 ; 8 |
394: 01 c0 rjmp .+2 ; 0x398 <main+0x1ce> |
396: 87 7f andi r24, 0xF7 ; 247 |
398: 80 93 be 00 sts 0x00BE, r24 |
39c: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x40) DebugIn.Digital[0] |= 0x10; else DebugIn.Digital[0] &= ~0x10; |
3a0: 86 9b sbis 0x10, 6 ; 16 |
3a2: 02 c0 rjmp .+4 ; 0x3a8 <main+0x1de> |
3a4: 80 61 ori r24, 0x10 ; 16 |
3a6: 01 c0 rjmp .+2 ; 0x3aa <main+0x1e0> |
3a8: 8f 7e andi r24, 0xEF ; 239 |
3aa: 80 93 be 00 sts 0x00BE, r24 |
3ae: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x80) DebugIn.Digital[0] |= 0x20; else DebugIn.Digital[0] &= ~0x20; |
3b2: 87 9b sbis 0x10, 7 ; 16 |
3b4: 02 c0 rjmp .+4 ; 0x3ba <main+0x1f0> |
3b6: 80 62 ori r24, 0x20 ; 32 |
3b8: 01 c0 rjmp .+2 ; 0x3bc <main+0x1f2> |
3ba: 8f 7d andi r24, 0xDF ; 223 |
3bc: 80 93 be 00 sts 0x00BE, r24 |
GetAnalogWerte(); |
3c0: 0e 94 4e 0c call 0x189c <GetAnalogWerte> |
3c4: 3d cf rjmp .-390 ; 0x240 <main+0x76> |
000003c6 <__vector_15>: |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
3c6: 1f 92 push r1 |
3c8: 0f 92 push r0 |
3ca: 0f b6 in r0, 0x3f ; 63 |
3cc: 0f 92 push r0 |
3ce: 11 24 eor r1, r1 |
3d0: 8f 93 push r24 |
3d2: 9f 93 push r25 |
3d4: ef 93 push r30 |
3d6: ff 93 push r31 |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
3d8: 80 91 6e 00 lds r24, 0x006E |
3dc: 88 23 and r24, r24 |
3de: d9 f4 brne .+54 ; 0x416 <__vector_15+0x50> |
{ |
ptr++; // die [0] wurde schon gesendet |
3e0: 80 91 9d 00 lds r24, 0x009D |
3e4: 90 91 9e 00 lds r25, 0x009E |
3e8: 01 96 adiw r24, 0x01 ; 1 |
3ea: 90 93 9e 00 sts 0x009E, r25 |
3ee: 80 93 9d 00 sts 0x009D, r24 |
tmp_tx = SendeBuffer[ptr]; |
3f2: fc 01 movw r30, r24 |
3f4: e2 51 subi r30, 0x12 ; 18 |
3f6: ff 4f sbci r31, 0xFF ; 255 |
3f8: e0 81 ld r30, Z |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
3fa: ed 30 cpi r30, 0x0D ; 13 |
3fc: 19 f0 breq .+6 ; 0x404 <__vector_15+0x3e> |
3fe: 84 36 cpi r24, 0x64 ; 100 |
400: 91 05 cpc r25, r1 |
402: 39 f4 brne .+14 ; 0x412 <__vector_15+0x4c> |
{ |
ptr = 0; |
404: 10 92 9e 00 sts 0x009E, r1 |
408: 10 92 9d 00 sts 0x009D, r1 |
UebertragungAbgeschlossen = 1; |
40c: 81 e0 ldi r24, 0x01 ; 1 |
40e: 80 93 6e 00 sts 0x006E, r24 |
} |
UDR = tmp_tx; |
412: ec b9 out 0x0c, r30 ; 12 |
414: 04 c0 rjmp .+8 ; 0x41e <__vector_15+0x58> |
} |
else ptr = 0; |
416: 10 92 9e 00 sts 0x009E, r1 |
41a: 10 92 9d 00 sts 0x009D, r1 |
41e: ff 91 pop r31 |
420: ef 91 pop r30 |
422: 9f 91 pop r25 |
424: 8f 91 pop r24 |
426: 0f 90 pop r0 |
428: 0f be out 0x3f, r0 ; 63 |
42a: 0f 90 pop r0 |
42c: 1f 90 pop r1 |
42e: 18 95 reti |
00000430 <__vector_13>: |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
430: 1f 92 push r1 |
432: 0f 92 push r0 |
434: 0f b6 in r0, 0x3f ; 63 |
436: 0f 92 push r0 |
438: 11 24 eor r1, r1 |
43a: 2f 93 push r18 |
43c: 3f 93 push r19 |
43e: 4f 93 push r20 |
440: 5f 93 push r21 |
442: 8f 93 push r24 |
444: 9f 93 push r25 |
446: af 93 push r26 |
448: bf 93 push r27 |
44a: ef 93 push r30 |
44c: ff 93 push r31 |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
44e: 20 e0 ldi r18, 0x00 ; 0 |
SioTmp = UDR; |
450: 8c b1 in r24, 0x0c ; 12 |
452: 80 93 9c 00 sts 0x009C, r24 |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
456: 50 91 a3 00 lds r21, 0x00A3 |
45a: 54 36 cpi r21, 0x64 ; 100 |
45c: 10 f0 brcs .+4 ; 0x462 <__vector_13+0x32> |
45e: 20 93 a4 00 sts 0x00A4, r18 |
if(SioTmp == '\r' && UartState == 2) |
462: 80 91 9c 00 lds r24, 0x009C |
466: 8d 30 cpi r24, 0x0D ; 13 |
468: 09 f0 breq .+2 ; 0x46c <__vector_13+0x3c> |
46a: 5b c0 rjmp .+182 ; 0x522 <__vector_13+0xf2> |
46c: 80 91 a4 00 lds r24, 0x00A4 |
470: 82 30 cpi r24, 0x02 ; 2 |
472: 09 f0 breq .+2 ; 0x476 <__vector_13+0x46> |
474: 56 c0 rjmp .+172 ; 0x522 <__vector_13+0xf2> |
{ |
UartState = 0; |
476: 20 93 a4 00 sts 0x00A4, r18 |
crc -= RxdBuffer[buf_ptr-2]; |
47a: 85 2f mov r24, r21 |
47c: 99 27 eor r25, r25 |
47e: 8e 5a subi r24, 0xAE ; 174 |
480: 9e 4f sbci r25, 0xFE ; 254 |
482: fc 01 movw r30, r24 |
484: 32 97 sbiw r30, 0x02 ; 2 |
486: 40 81 ld r20, Z |
488: 20 91 9f 00 lds r18, 0x009F |
48c: 30 91 a0 00 lds r19, 0x00A0 |
490: 24 1b sub r18, r20 |
492: 31 09 sbc r19, r1 |
crc -= RxdBuffer[buf_ptr-1]; |
494: dc 01 movw r26, r24 |
496: 11 97 sbiw r26, 0x01 ; 1 |
498: 8c 91 ld r24, X |
49a: 28 1b sub r18, r24 |
49c: 31 09 sbc r19, r1 |
crc %= 4096; |
49e: c9 01 movw r24, r18 |
4a0: 9f 70 andi r25, 0x0F ; 15 |
4a2: 90 93 a0 00 sts 0x00A0, r25 |
4a6: 80 93 9f 00 sts 0x009F, r24 |
crc1 = '=' + crc / 64; |
4aa: 46 e0 ldi r20, 0x06 ; 6 |
4ac: 96 95 lsr r25 |
4ae: 87 95 ror r24 |
4b0: 4a 95 dec r20 |
4b2: e1 f7 brne .-8 ; 0x4ac <__vector_13+0x7c> |
4b4: 98 2f mov r25, r24 |
4b6: 93 5c subi r25, 0xC3 ; 195 |
4b8: 90 93 a1 00 sts 0x00A1, r25 |
crc2 = '=' + crc % 64; |
4bc: 2f 73 andi r18, 0x3F ; 63 |
4be: 30 70 andi r19, 0x00 ; 0 |
4c0: 23 5c subi r18, 0xC3 ; 195 |
4c2: 20 93 a2 00 sts 0x00A2, r18 |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
4c6: 80 81 ld r24, Z |
4c8: 98 17 cp r25, r24 |
4ca: 29 f4 brne .+10 ; 0x4d6 <__vector_13+0xa6> |
4cc: 8c 91 ld r24, X |
4ce: 28 17 cp r18, r24 |
4d0: 11 f4 brne .+4 ; 0x4d6 <__vector_13+0xa6> |
4d2: 21 e0 ldi r18, 0x01 ; 1 |
4d4: 0a c0 rjmp .+20 ; 0x4ea <__vector_13+0xba> |
4d6: 20 e0 ldi r18, 0x00 ; 0 |
4d8: 80 91 99 00 lds r24, 0x0099 |
4dc: 90 91 9a 00 lds r25, 0x009A |
4e0: 01 96 adiw r24, 0x01 ; 1 |
4e2: 90 93 9a 00 sts 0x009A, r25 |
4e6: 80 93 99 00 sts 0x0099, r24 |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
4ea: 80 91 9b 00 lds r24, 0x009B |
4ee: 88 23 and r24, r24 |
4f0: 09 f0 breq .+2 ; 0x4f4 <__vector_13+0xc4> |
4f2: 66 c0 rjmp .+204 ; 0x5c0 <__vector_13+0x190> |
4f4: 22 23 and r18, r18 |
4f6: 09 f4 brne .+2 ; 0x4fa <__vector_13+0xca> |
4f8: 63 c0 rjmp .+198 ; 0x5c0 <__vector_13+0x190> |
{ |
CntDatensaetzeProSekunde++; |
4fa: 80 91 66 00 lds r24, 0x0066 |
4fe: 8f 5f subi r24, 0xFF ; 255 |
500: 80 93 66 00 sts 0x0066, r24 |
PC_DebugTimeout = 10; |
504: 8a e0 ldi r24, 0x0A ; 10 |
506: 80 93 97 00 sts 0x0097, r24 |
NeuerDatensatzEmpfangen = 1; |
50a: 81 e0 ldi r24, 0x01 ; 1 |
50c: 80 93 9b 00 sts 0x009B, r24 |
AnzahlEmpfangsBytes = buf_ptr; |
510: 50 93 98 00 sts 0x0098, r21 |
RxdBuffer[buf_ptr] = '\r'; |
514: e5 2f mov r30, r21 |
516: ff 27 eor r31, r31 |
518: ee 5a subi r30, 0xAE ; 174 |
51a: fe 4f sbci r31, 0xFE ; 254 |
51c: 8d e0 ldi r24, 0x0D ; 13 |
51e: 80 83 st Z, r24 |
520: 4f c0 rjmp .+158 ; 0x5c0 <__vector_13+0x190> |
// if((RxdBuffer[1] == 's') && (RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
522: 20 91 a4 00 lds r18, 0x00A4 |
526: 82 2f mov r24, r18 |
528: 99 27 eor r25, r25 |
52a: 81 30 cpi r24, 0x01 ; 1 |
52c: 91 05 cpc r25, r1 |
52e: f9 f0 breq .+62 ; 0x56e <__vector_13+0x13e> |
530: 82 30 cpi r24, 0x02 ; 2 |
532: 91 05 cpc r25, r1 |
534: 1c f4 brge .+6 ; 0x53c <__vector_13+0x10c> |
536: 89 2b or r24, r25 |
538: 21 f0 breq .+8 ; 0x542 <__vector_13+0x112> |
53a: 40 c0 rjmp .+128 ; 0x5bc <__vector_13+0x18c> |
53c: 02 97 sbiw r24, 0x02 ; 2 |
53e: 11 f1 breq .+68 ; 0x584 <__vector_13+0x154> |
540: 3d c0 rjmp .+122 ; 0x5bc <__vector_13+0x18c> |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
542: 80 91 9c 00 lds r24, 0x009C |
546: 83 32 cpi r24, 0x23 ; 35 |
548: 39 f4 brne .+14 ; 0x558 <__vector_13+0x128> |
54a: 80 91 9b 00 lds r24, 0x009B |
54e: 88 23 and r24, r24 |
550: 19 f4 brne .+6 ; 0x558 <__vector_13+0x128> |
552: 81 e0 ldi r24, 0x01 ; 1 |
554: 80 93 a4 00 sts 0x00A4, r24 |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
558: 80 91 9c 00 lds r24, 0x009C |
55c: 80 93 52 01 sts 0x0152, r24 |
560: 81 e0 ldi r24, 0x01 ; 1 |
562: 80 93 a3 00 sts 0x00A3, r24 |
crc = SioTmp; |
566: 80 91 9c 00 lds r24, 0x009C |
56a: 99 27 eor r25, r25 |
56c: 22 c0 rjmp .+68 ; 0x5b2 <__vector_13+0x182> |
break; |
case 1: // Adresse auswerten |
UartState++; |
56e: 2f 5f subi r18, 0xFF ; 255 |
570: 20 93 a4 00 sts 0x00A4, r18 |
RxdBuffer[buf_ptr++] = SioTmp; |
574: e5 2f mov r30, r21 |
576: ff 27 eor r31, r31 |
578: ee 5a subi r30, 0xAE ; 174 |
57a: fe 4f sbci r31, 0xFE ; 254 |
57c: 80 91 9c 00 lds r24, 0x009C |
580: 80 83 st Z, r24 |
582: 09 c0 rjmp .+18 ; 0x596 <__vector_13+0x166> |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
584: e5 2f mov r30, r21 |
586: ff 27 eor r31, r31 |
588: ee 5a subi r30, 0xAE ; 174 |
58a: fe 4f sbci r31, 0xFE ; 254 |
58c: 80 91 9c 00 lds r24, 0x009C |
590: 80 83 st Z, r24 |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
592: 54 36 cpi r21, 0x64 ; 100 |
594: 20 f4 brcc .+8 ; 0x59e <__vector_13+0x16e> |
596: 5f 5f subi r21, 0xFF ; 255 |
598: 50 93 a3 00 sts 0x00A3, r21 |
59c: 02 c0 rjmp .+4 ; 0x5a2 <__vector_13+0x172> |
else UartState = 0; |
59e: 10 92 a4 00 sts 0x00A4, r1 |
crc += SioTmp; |
5a2: 20 91 9c 00 lds r18, 0x009C |
5a6: 80 91 9f 00 lds r24, 0x009F |
5aa: 90 91 a0 00 lds r25, 0x00A0 |
5ae: 82 0f add r24, r18 |
5b0: 91 1d adc r25, r1 |
5b2: 90 93 a0 00 sts 0x00A0, r25 |
5b6: 80 93 9f 00 sts 0x009F, r24 |
break; |
5ba: 02 c0 rjmp .+4 ; 0x5c0 <__vector_13+0x190> |
default: |
UartState = 0; |
5bc: 10 92 a4 00 sts 0x00A4, r1 |
5c0: ff 91 pop r31 |
5c2: ef 91 pop r30 |
5c4: bf 91 pop r27 |
5c6: af 91 pop r26 |
5c8: 9f 91 pop r25 |
5ca: 8f 91 pop r24 |
5cc: 5f 91 pop r21 |
5ce: 4f 91 pop r20 |
5d0: 3f 91 pop r19 |
5d2: 2f 91 pop r18 |
5d4: 0f 90 pop r0 |
5d6: 0f be out 0x3f, r0 ; 63 |
5d8: 0f 90 pop r0 |
5da: 1f 90 pop r1 |
5dc: 18 95 reti |
000005de <AddCRC>: |
break; |
} |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
5de: ac 01 movw r20, r24 |
unsigned int tmpCRC = 0,i; |
5e0: a0 e0 ldi r26, 0x00 ; 0 |
5e2: b0 e0 ldi r27, 0x00 ; 0 |
for(i = 0; i < wieviele;i++) |
5e4: 9d 01 movw r18, r26 |
5e6: a8 17 cp r26, r24 |
5e8: b9 07 cpc r27, r25 |
5ea: 48 f4 brcc .+18 ; 0x5fe <AddCRC+0x20> |
5ec: ee ee ldi r30, 0xEE ; 238 |
5ee: f0 e0 ldi r31, 0x00 ; 0 |
{ |
tmpCRC += SendeBuffer[i]; |
5f0: 81 91 ld r24, Z+ |
5f2: 28 0f add r18, r24 |
5f4: 31 1d adc r19, r1 |
5f6: 11 96 adiw r26, 0x01 ; 1 |
5f8: a4 17 cp r26, r20 |
5fa: b5 07 cpc r27, r21 |
5fc: c8 f3 brcs .-14 ; 0x5f0 <AddCRC+0x12> |
} |
tmpCRC %= 4096; |
5fe: 3f 70 andi r19, 0x0F ; 15 |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
600: fd 01 movw r30, r26 |
602: e2 51 subi r30, 0x12 ; 18 |
604: ff 4f sbci r31, 0xFF ; 255 |
606: c9 01 movw r24, r18 |
608: 56 e0 ldi r21, 0x06 ; 6 |
60a: 96 95 lsr r25 |
60c: 87 95 ror r24 |
60e: 5a 95 dec r21 |
610: e1 f7 brne .-8 ; 0x60a <AddCRC+0x2c> |
612: 83 5c subi r24, 0xC3 ; 195 |
614: 80 83 st Z, r24 |
616: 11 96 adiw r26, 0x01 ; 1 |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
618: fd 01 movw r30, r26 |
61a: e2 51 subi r30, 0x12 ; 18 |
61c: ff 4f sbci r31, 0xFF ; 255 |
61e: 2f 73 andi r18, 0x3F ; 63 |
620: 30 70 andi r19, 0x00 ; 0 |
622: 82 2f mov r24, r18 |
624: 83 5c subi r24, 0xC3 ; 195 |
626: 80 83 st Z, r24 |
SendeBuffer[i++] = '\r'; |
628: a1 51 subi r26, 0x11 ; 17 |
62a: bf 4f sbci r27, 0xFF ; 255 |
62c: 8d e0 ldi r24, 0x0D ; 13 |
62e: 8c 93 st X, r24 |
UebertragungAbgeschlossen = 0; |
630: 10 92 6e 00 sts 0x006E, r1 |
UDR = SendeBuffer[0]; |
634: 80 91 ee 00 lds r24, 0x00EE |
638: 8c b9 out 0x0c, r24 ; 12 |
63a: 08 95 ret |
0000063c <SendOutData>: |
// PrintSendeBuffer(); |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
63c: 1f 93 push r17 |
63e: cf 93 push r28 |
640: df 93 push r29 |
642: 38 2f mov r19, r24 |
644: 96 2f mov r25, r22 |
646: ea 01 movw r28, r20 |
648: 72 2f mov r23, r18 |
unsigned int pt = 0,i; |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
64a: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
//while(!UebertragungAbgeschlossen); |
SendeBuffer[pt++] = '#'; // Startzeichen |
64c: 83 e2 ldi r24, 0x23 ; 35 |
64e: 80 93 ee 00 sts 0x00EE, r24 |
SendeBuffer[pt++] = modul+'a'; // Adresse (a=0; b=1,...) |
652: 9f 59 subi r25, 0x9F ; 159 |
654: 90 93 ef 00 sts 0x00EF, r25 |
SendeBuffer[pt++] = cmd; // Commando |
658: 30 93 f0 00 sts 0x00F0, r19 |
65c: a3 e0 ldi r26, 0x03 ; 3 |
65e: b0 e0 ldi r27, 0x00 ; 0 |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
660: 77 23 and r23, r23 |
662: 09 f4 brne .+2 ; 0x666 <SendOutData+0x2a> |
664: 58 c0 rjmp .+176 ; 0x716 <SendOutData+0xda> |
666: 77 23 and r23, r23 |
668: 11 f4 brne .+4 ; 0x66e <SendOutData+0x32> |
66a: 97 2f mov r25, r23 |
66c: 07 c0 rjmp .+14 ; 0x67c <SendOutData+0x40> |
66e: fe 01 movw r30, r28 |
670: e1 0f add r30, r17 |
672: f1 1d adc r31, r1 |
674: 1f 5f subi r17, 0xFF ; 255 |
676: 90 81 ld r25, Z |
678: 71 50 subi r23, 0x01 ; 1 |
67a: 11 f4 brne .+4 ; 0x680 <SendOutData+0x44> |
67c: 47 2f mov r20, r23 |
67e: 0e c0 rjmp .+28 ; 0x69c <SendOutData+0x60> |
680: fe 01 movw r30, r28 |
682: e1 0f add r30, r17 |
684: f1 1d adc r31, r1 |
686: 1f 5f subi r17, 0xFF ; 255 |
688: 40 81 ld r20, Z |
68a: 71 50 subi r23, 0x01 ; 1 |
68c: 39 f0 breq .+14 ; 0x69c <SendOutData+0x60> |
68e: fe 01 movw r30, r28 |
690: e1 0f add r30, r17 |
692: f1 1d adc r31, r1 |
694: 1f 5f subi r17, 0xFF ; 255 |
696: 60 81 ld r22, Z |
698: 71 50 subi r23, 0x01 ; 1 |
69a: 01 c0 rjmp .+2 ; 0x69e <SendOutData+0x62> |
69c: 67 2f mov r22, r23 |
69e: fd 01 movw r30, r26 |
6a0: e2 51 subi r30, 0x12 ; 18 |
6a2: ff 4f sbci r31, 0xFF ; 255 |
6a4: 89 2f mov r24, r25 |
6a6: 86 95 lsr r24 |
6a8: 86 95 lsr r24 |
6aa: 83 5c subi r24, 0xC3 ; 195 |
6ac: 80 83 st Z, r24 |
6ae: 11 96 adiw r26, 0x01 ; 1 |
6b0: fd 01 movw r30, r26 |
6b2: e2 51 subi r30, 0x12 ; 18 |
6b4: ff 4f sbci r31, 0xFF ; 255 |
6b6: 89 2f mov r24, r25 |
6b8: 99 27 eor r25, r25 |
6ba: 83 70 andi r24, 0x03 ; 3 |
6bc: 90 70 andi r25, 0x00 ; 0 |
6be: 24 e0 ldi r18, 0x04 ; 4 |
6c0: 88 0f add r24, r24 |
6c2: 99 1f adc r25, r25 |
6c4: 2a 95 dec r18 |
6c6: e1 f7 brne .-8 ; 0x6c0 <SendOutData+0x84> |
6c8: 55 27 eor r21, r21 |
6ca: 9a 01 movw r18, r20 |
6cc: 94 e0 ldi r25, 0x04 ; 4 |
6ce: 36 95 lsr r19 |
6d0: 27 95 ror r18 |
6d2: 9a 95 dec r25 |
6d4: e1 f7 brne .-8 ; 0x6ce <SendOutData+0x92> |
6d6: 82 2b or r24, r18 |
6d8: 83 5c subi r24, 0xC3 ; 195 |
6da: 80 83 st Z, r24 |
6dc: 11 96 adiw r26, 0x01 ; 1 |
6de: fd 01 movw r30, r26 |
6e0: e2 51 subi r30, 0x12 ; 18 |
6e2: ff 4f sbci r31, 0xFF ; 255 |
6e4: 4f 70 andi r20, 0x0F ; 15 |
6e6: 50 70 andi r21, 0x00 ; 0 |
6e8: 44 0f add r20, r20 |
6ea: 55 1f adc r21, r21 |
6ec: 44 0f add r20, r20 |
6ee: 55 1f adc r21, r21 |
6f0: 86 2f mov r24, r22 |
6f2: 99 27 eor r25, r25 |
6f4: 26 e0 ldi r18, 0x06 ; 6 |
6f6: 96 95 lsr r25 |
6f8: 87 95 ror r24 |
6fa: 2a 95 dec r18 |
6fc: e1 f7 brne .-8 ; 0x6f6 <SendOutData+0xba> |
6fe: 84 2b or r24, r20 |
700: 83 5c subi r24, 0xC3 ; 195 |
702: 80 83 st Z, r24 |
704: 11 96 adiw r26, 0x01 ; 1 |
706: fd 01 movw r30, r26 |
708: e2 51 subi r30, 0x12 ; 18 |
70a: ff 4f sbci r31, 0xFF ; 255 |
70c: 6f 73 andi r22, 0x3F ; 63 |
70e: 63 5c subi r22, 0xC3 ; 195 |
710: 60 83 st Z, r22 |
712: 11 96 adiw r26, 0x01 ; 1 |
714: a5 cf rjmp .-182 ; 0x660 <SendOutData+0x24> |
} |
AddCRC(pt); |
716: cd 01 movw r24, r26 |
718: 0e 94 ef 02 call 0x5de <AddCRC> |
71c: df 91 pop r29 |
71e: cf 91 pop r28 |
720: 1f 91 pop r17 |
722: 08 95 ret |
00000724 <Decode64>: |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
724: 1f 93 push r17 |
726: cf 93 push r28 |
728: df 93 push r29 |
72a: ec 01 movw r28, r24 |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
72c: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
72e: 66 23 and r22, r22 |
730: 09 f4 brne .+2 ; 0x734 <Decode64+0x10> |
732: 60 c0 rjmp .+192 ; 0x7f4 <Decode64+0xd0> |
734: a2 2f mov r26, r18 |
736: bb 27 eor r27, r27 |
738: 12 97 sbiw r26, 0x02 ; 2 |
73a: e4 2f mov r30, r20 |
73c: ff 27 eor r31, r31 |
73e: ee 5a subi r30, 0xAE ; 174 |
740: fe 4f sbci r31, 0xFE ; 254 |
742: 30 81 ld r19, Z |
744: 3d 53 subi r19, 0x3D ; 61 |
746: 4f 5f subi r20, 0xFF ; 255 |
748: e4 2f mov r30, r20 |
74a: ff 27 eor r31, r31 |
74c: ee 5a subi r30, 0xAE ; 174 |
74e: fe 4f sbci r31, 0xFE ; 254 |
750: 50 81 ld r21, Z |
752: 5d 53 subi r21, 0x3D ; 61 |
754: 4f 5f subi r20, 0xFF ; 255 |
756: e4 2f mov r30, r20 |
758: ff 27 eor r31, r31 |
75a: ee 5a subi r30, 0xAE ; 174 |
75c: fe 4f sbci r31, 0xFE ; 254 |
75e: 70 81 ld r23, Z |
760: 7d 53 subi r23, 0x3D ; 61 |
762: 4f 5f subi r20, 0xFF ; 255 |
764: e4 2f mov r30, r20 |
766: ff 27 eor r31, r31 |
768: ee 5a subi r30, 0xAE ; 174 |
76a: fe 4f sbci r31, 0xFE ; 254 |
76c: e0 81 ld r30, Z |
76e: ed 53 subi r30, 0x3D ; 61 |
770: 4f 5f subi r20, 0xFF ; 255 |
772: 84 2f mov r24, r20 |
774: 99 27 eor r25, r25 |
776: a8 17 cp r26, r24 |
778: b9 07 cpc r27, r25 |
77a: e4 f1 brlt .+120 ; 0x7f4 <Decode64+0xd0> |
77c: 83 2f mov r24, r19 |
77e: 99 27 eor r25, r25 |
780: 88 0f add r24, r24 |
782: 99 1f adc r25, r25 |
784: 88 0f add r24, r24 |
786: 99 1f adc r25, r25 |
788: 35 2f mov r19, r21 |
78a: 32 95 swap r19 |
78c: 3f 70 andi r19, 0x0F ; 15 |
78e: 38 2b or r19, r24 |
790: 85 2f mov r24, r21 |
792: 99 27 eor r25, r25 |
794: 8f 70 andi r24, 0x0F ; 15 |
796: 90 70 andi r25, 0x00 ; 0 |
798: f4 e0 ldi r31, 0x04 ; 4 |
79a: 88 0f add r24, r24 |
79c: 99 1f adc r25, r25 |
79e: fa 95 dec r31 |
7a0: e1 f7 brne .-8 ; 0x79a <Decode64+0x76> |
7a2: 57 2f mov r21, r23 |
7a4: 56 95 lsr r21 |
7a6: 56 95 lsr r21 |
7a8: 58 2b or r21, r24 |
7aa: 87 2f mov r24, r23 |
7ac: 99 27 eor r25, r25 |
7ae: 83 70 andi r24, 0x03 ; 3 |
7b0: 90 70 andi r25, 0x00 ; 0 |
7b2: 76 e0 ldi r23, 0x06 ; 6 |
7b4: 88 0f add r24, r24 |
7b6: 99 1f adc r25, r25 |
7b8: 7a 95 dec r23 |
7ba: e1 f7 brne .-8 ; 0x7b4 <Decode64+0x90> |
7bc: 8e 2b or r24, r30 |
7be: 61 50 subi r22, 0x01 ; 1 |
7c0: 6f 3f cpi r22, 0xFF ; 255 |
7c2: c1 f0 breq .+48 ; 0x7f4 <Decode64+0xd0> |
7c4: fe 01 movw r30, r28 |
7c6: e1 0f add r30, r17 |
7c8: f1 1d adc r31, r1 |
7ca: 30 83 st Z, r19 |
7cc: 1f 5f subi r17, 0xFF ; 255 |
7ce: 61 50 subi r22, 0x01 ; 1 |
7d0: 6f 3f cpi r22, 0xFF ; 255 |
7d2: 81 f0 breq .+32 ; 0x7f4 <Decode64+0xd0> |
7d4: fe 01 movw r30, r28 |
7d6: e1 0f add r30, r17 |
7d8: f1 1d adc r31, r1 |
7da: 50 83 st Z, r21 |
7dc: 1f 5f subi r17, 0xFF ; 255 |
7de: 61 50 subi r22, 0x01 ; 1 |
7e0: 6f 3f cpi r22, 0xFF ; 255 |
7e2: 41 f0 breq .+16 ; 0x7f4 <Decode64+0xd0> |
7e4: fe 01 movw r30, r28 |
7e6: e1 0f add r30, r17 |
7e8: f1 1d adc r31, r1 |
7ea: 80 83 st Z, r24 |
7ec: 1f 5f subi r17, 0xFF ; 255 |
7ee: 66 23 and r22, r22 |
7f0: 09 f0 breq .+2 ; 0x7f4 <Decode64+0xd0> |
7f2: a3 cf rjmp .-186 ; 0x73a <Decode64+0x16> |
7f4: df 91 pop r29 |
7f6: cf 91 pop r28 |
7f8: 1f 91 pop r17 |
7fa: 08 95 ret |
000007fc <BearbeiteRxDaten>: |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
7fc: cf 93 push r28 |
7fe: df 93 push r29 |
800: cd b7 in r28, 0x3d ; 61 |
802: de b7 in r29, 0x3e ; 62 |
804: ad 97 sbiw r28, 0x2d ; 45 |
806: 0f b6 in r0, 0x3f ; 63 |
808: f8 94 cli |
80a: de bf out 0x3e, r29 ; 62 |
80c: 0f be out 0x3f, r0 ; 63 |
80e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr1[1]; |
unsigned int tmp_int_arr2[2]; |
unsigned int tmp_int_arr20[21]; |
unsigned char tmp_char_arr3[3]; |
// unsigned int tmp_int_arr4[4]; |
if(!NeuerDatensatzEmpfangen) return; |
810: 80 91 9b 00 lds r24, 0x009B |
814: 88 23 and r24, r24 |
816: 09 f4 brne .+2 ; 0x81a <BearbeiteRxDaten+0x1e> |
818: a7 c0 rjmp .+334 ; 0x968 <__stack+0x109> |
NeuerDatensatzEmpfangen = 0; |
81a: 10 92 9b 00 sts 0x009B, r1 |
if(ErwarteAntwort == RxdBuffer[2]) AntwortEingetroffen = 1; |
81e: 90 91 6d 00 lds r25, 0x006D |
822: 80 91 54 01 lds r24, 0x0154 |
826: 98 17 cp r25, r24 |
828: 19 f4 brne .+6 ; 0x830 <BearbeiteRxDaten+0x34> |
82a: 81 e0 ldi r24, 0x01 ; 1 |
82c: 80 93 92 00 sts 0x0092, r24 |
switch(RxdBuffer[2]) |
830: 80 91 54 01 lds r24, 0x0154 |
834: 99 27 eor r25, r25 |
836: 82 33 cpi r24, 0x32 ; 50 |
838: 91 05 cpc r25, r1 |
83a: 09 f4 brne .+2 ; 0x83e <BearbeiteRxDaten+0x42> |
83c: 46 c0 rjmp .+140 ; 0x8ca <__stack+0x6b> |
83e: 83 33 cpi r24, 0x33 ; 51 |
840: 91 05 cpc r25, r1 |
842: 34 f4 brge .+12 ; 0x850 <BearbeiteRxDaten+0x54> |
844: 80 33 cpi r24, 0x30 ; 48 |
846: 91 05 cpc r25, r1 |
848: 99 f0 breq .+38 ; 0x870 <__stack+0x11> |
84a: c1 97 sbiw r24, 0x31 ; 49 |
84c: 49 f1 breq .+82 ; 0x8a0 <__stack+0x41> |
84e: 8c c0 rjmp .+280 ; 0x968 <__stack+0x109> |
850: 84 34 cpi r24, 0x44 ; 68 |
852: 91 05 cpc r25, r1 |
854: 09 f4 brne .+2 ; 0x858 <BearbeiteRxDaten+0x5c> |
856: 6b c0 rjmp .+214 ; 0x92e <__stack+0xcf> |
858: 85 34 cpi r24, 0x45 ; 69 |
85a: 91 05 cpc r25, r1 |
85c: 24 f4 brge .+8 ; 0x866 <__stack+0x7> |
85e: c3 97 sbiw r24, 0x33 ; 51 |
860: 09 f4 brne .+2 ; 0x864 <__stack+0x5> |
862: 48 c0 rjmp .+144 ; 0x8f4 <__stack+0x95> |
864: 81 c0 rjmp .+258 ; 0x968 <__stack+0x109> |
866: 8b 34 cpi r24, 0x4B ; 75 |
868: 91 05 cpc r25, r1 |
86a: 09 f4 brne .+2 ; 0x86e <__stack+0xf> |
86c: 6c c0 rjmp .+216 ; 0x946 <__stack+0xe7> |
86e: 7c c0 rjmp .+248 ; 0x968 <__stack+0x109> |
{ |
case '0':// LCD-Zeile0 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
870: 20 91 98 00 lds r18, 0x0098 |
874: 43 e0 ldi r20, 0x03 ; 3 |
876: 6a e2 ldi r22, 0x2A ; 42 |
878: ce 01 movw r24, r28 |
87a: 01 96 adiw r24, 0x01 ; 1 |
87c: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
880: 1a a6 std Y+42, r1 ; 0x2a |
882: 19 a6 std Y+41, r1 ; 0x29 |
DisplayBusy = 1; |
884: 81 e0 ldi r24, 0x01 ; 1 |
886: 80 93 93 00 sts 0x0093, r24 |
LCD_printfxy(0,0,"%s",tmp_int_arr20); |
88a: 60 e0 ldi r22, 0x00 ; 0 |
88c: 86 2f mov r24, r22 |
88e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
892: ce 01 movw r24, r28 |
894: 01 96 adiw r24, 0x01 ; 1 |
896: 9f 93 push r25 |
898: 8f 93 push r24 |
89a: 88 ea ldi r24, 0xA8 ; 168 |
89c: 90 e0 ldi r25, 0x00 ; 0 |
89e: 3e c0 rjmp .+124 ; 0x91c <__stack+0xbd> |
break; |
case '1':// LCD-Zeile1 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8a0: 20 91 98 00 lds r18, 0x0098 |
8a4: 43 e0 ldi r20, 0x03 ; 3 |
8a6: 6a e2 ldi r22, 0x2A ; 42 |
8a8: ce 01 movw r24, r28 |
8aa: 01 96 adiw r24, 0x01 ; 1 |
8ac: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8b0: 1a a6 std Y+42, r1 ; 0x2a |
8b2: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,1,"%s",tmp_int_arr20); |
8b4: 61 e0 ldi r22, 0x01 ; 1 |
8b6: 80 e0 ldi r24, 0x00 ; 0 |
8b8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8bc: ce 01 movw r24, r28 |
8be: 01 96 adiw r24, 0x01 ; 1 |
8c0: 9f 93 push r25 |
8c2: 8f 93 push r24 |
8c4: 8b ea ldi r24, 0xAB ; 171 |
8c6: 90 e0 ldi r25, 0x00 ; 0 |
8c8: 29 c0 rjmp .+82 ; 0x91c <__stack+0xbd> |
break; |
case '2':// LCD-Zeile2 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8ca: 20 91 98 00 lds r18, 0x0098 |
8ce: 43 e0 ldi r20, 0x03 ; 3 |
8d0: 6a e2 ldi r22, 0x2A ; 42 |
8d2: ce 01 movw r24, r28 |
8d4: 01 96 adiw r24, 0x01 ; 1 |
8d6: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8da: 1a a6 std Y+42, r1 ; 0x2a |
8dc: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,2,"%s",tmp_int_arr20); |
8de: 62 e0 ldi r22, 0x02 ; 2 |
8e0: 80 e0 ldi r24, 0x00 ; 0 |
8e2: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8e6: ce 01 movw r24, r28 |
8e8: 01 96 adiw r24, 0x01 ; 1 |
8ea: 9f 93 push r25 |
8ec: 8f 93 push r24 |
8ee: 8e ea ldi r24, 0xAE ; 174 |
8f0: 90 e0 ldi r25, 0x00 ; 0 |
8f2: 14 c0 rjmp .+40 ; 0x91c <__stack+0xbd> |
break; |
case '3':// LCD-Zeile3 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8f4: 20 91 98 00 lds r18, 0x0098 |
8f8: 43 e0 ldi r20, 0x03 ; 3 |
8fa: 6a e2 ldi r22, 0x2A ; 42 |
8fc: ce 01 movw r24, r28 |
8fe: 01 96 adiw r24, 0x01 ; 1 |
900: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
904: 1a a6 std Y+42, r1 ; 0x2a |
906: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,3,"%s",tmp_int_arr20); |
908: 63 e0 ldi r22, 0x03 ; 3 |
90a: 80 e0 ldi r24, 0x00 ; 0 |
90c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
910: ce 01 movw r24, r28 |
912: 01 96 adiw r24, 0x01 ; 1 |
914: 9f 93 push r25 |
916: 8f 93 push r24 |
918: 81 eb ldi r24, 0xB1 ; 177 |
91a: 90 e0 ldi r25, 0x00 ; 0 |
91c: 9f 93 push r25 |
91e: 8f 93 push r24 |
920: 0e 94 e3 06 call 0xdc6 <_printf_P> |
break; |
924: 0f 90 pop r0 |
926: 0f 90 pop r0 |
928: 0f 90 pop r0 |
92a: 0f 90 pop r0 |
92c: 1d c0 rjmp .+58 ; 0x968 <__stack+0x109> |
case 'D': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugOut,sizeof(DebugOut),3,AnzahlEmpfangsBytes); |
92e: 20 91 98 00 lds r18, 0x0098 |
932: 43 e0 ldi r20, 0x03 ; 3 |
934: 6a e1 ldi r22, 0x1A ; 26 |
936: 83 ed ldi r24, 0xD3 ; 211 |
938: 90 e0 ldi r25, 0x00 ; 0 |
93a: 0e 94 92 03 call 0x724 <Decode64> |
PORTB = DebugOut.Digital[1]; |
93e: 80 91 d4 00 lds r24, 0x00D4 |
942: 88 bb out 0x18, r24 ; 24 |
break; |
944: 11 c0 rjmp .+34 ; 0x968 <__stack+0x109> |
case 'K': // Debug Eingangsdaten |
Decode64(tmp_char_arr3,sizeof(tmp_char_arr3),3,AnzahlEmpfangsBytes); |
946: 20 91 98 00 lds r18, 0x0098 |
94a: 43 e0 ldi r20, 0x03 ; 3 |
94c: 64 2f mov r22, r20 |
94e: ce 01 movw r24, r28 |
950: 8b 96 adiw r24, 0x2b ; 43 |
952: 0e 94 92 03 call 0x724 <Decode64> |
TX_DigTransferKanalL = tmp_char_arr3[0]; |
956: 8b a5 ldd r24, Y+43 ; 0x2b |
958: 80 93 96 00 sts 0x0096, r24 |
TX_DigTransferKanalH = tmp_char_arr3[1]; |
95c: 8c a5 ldd r24, Y+44 ; 0x2c |
95e: 80 93 95 00 sts 0x0095, r24 |
TX_DigTransferKanalDaten = tmp_char_arr3[2]; |
962: 8d a5 ldd r24, Y+45 ; 0x2d |
964: 80 93 94 00 sts 0x0094, r24 |
968: ad 96 adiw r28, 0x2d ; 45 |
96a: 0f b6 in r0, 0x3f ; 63 |
96c: f8 94 cli |
96e: de bf out 0x3e, r29 ; 62 |
970: 0f be out 0x3f, r0 ; 63 |
972: cd bf out 0x3d, r28 ; 61 |
974: df 91 pop r29 |
976: cf 91 pop r28 |
978: 08 95 ret |
0000097a <uart_putchar>: |
//if(RxdBuffer[1] == 'b') LCD_printfxy(0,0,"b:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
//if(RxdBuffer[1] == 'c') LCD_printfxy(0,1,"c:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
break; |
/* |
unsigned char Digital[13]; // 0 = Taster, Hauptkarte |
// 1 + 2 = Debugkanäle |
// 3 = Digin, Hauptkarte |
// 4 = Relais, Hauptkarte |
// 5 + 6 = Extern IO1 (12Bit ein 4 Bit aus) |
// 7 + 8 = Extern IO2 (12Bit ein 4 Bit aus) |
// 9 + 10 = Extern IO3 (12Bit ein 4 Bit aus) |
// 11 + 12= Extern IO4 (12Bit ein 4 Bit aus) |
*/ |
/* case 'd': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
} |
break; |
case 'g': // "Get"-Anforderung für Debug-Daten // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'u': // Uhr stellen |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
ZEITWERT = tmp_int_arr2[0]; |
SEK = tmp_int_arr2[1]; |
make_time_variables(ZEITWERT); |
RTC_SetTime(STD, MIN, SEK); |
RTC_SetWDay(TAG); |
break; |
case 'i': // Intervalle für die Datenübertragung |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
Debug_Timer_Intervall = tmp_int_arr2[0]; |
Debug_Display_Intervall = tmp_int_arr2[1]; |
SendeDummyDaten = 1; |
break; |
case 's': // single Step 1 = Stop 2 = noch einen Zyklus 3 = noch 2 Zyklen |
Decode64((unsigned char *) &tmp_int_arr1[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
SingleStep = tmp_int_arr1[0]; |
break; |
*/ |
} |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
97a: cf 93 push r28 |
97c: c8 2f mov r28, r24 |
if (c == '\n') |
97e: 8a 30 cpi r24, 0x0A ; 10 |
980: 19 f4 brne .+6 ; 0x988 <uart_putchar+0xe> |
uart_putchar('\r'); |
982: 8d e0 ldi r24, 0x0D ; 13 |
984: 0e 94 bd 04 call 0x97a <uart_putchar> |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
988: 5d 9b sbis 0x0b, 5 ; 11 |
98a: fe cf rjmp .-4 ; 0x988 <uart_putchar+0xe> |
//Ausgabe des Zeichens |
UDR = c; |
98c: cc b9 out 0x0c, r28 ; 12 |
return (0); |
} |
98e: 80 e0 ldi r24, 0x00 ; 0 |
990: 90 e0 ldi r25, 0x00 ; 0 |
992: cf 91 pop r28 |
994: 08 95 ret |
00000996 <WriteProgramData>: |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
996: 08 95 ret |
00000998 <UART_Init>: |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
998: 88 e1 ldi r24, 0x18 ; 24 |
99a: 8a b9 out 0x0a, r24 ; 10 |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
99c: 59 9a sbi 0x0b, 1 ; 11 |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
99e: 57 9a sbi 0x0a, 7 ; 10 |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
9a0: 56 9a sbi 0x0a, 6 ; 10 |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
9a2: 81 e2 ldi r24, 0x21 ; 33 |
9a4: 89 b9 out 0x09, r24 ; 9 |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
9a6: 60 e0 ldi r22, 0x00 ; 0 |
9a8: 70 e0 ldi r23, 0x00 ; 0 |
9aa: 8d eb ldi r24, 0xBD ; 189 |
9ac: 94 e0 ldi r25, 0x04 ; 4 |
9ae: 0e 94 71 0c call 0x18e2 <fdevopen> |
9b2: 08 95 ret |
000009b4 <SendeRemoteTasten>: |
//sbi(PORTD,4); |
} |
/* |
struct str_DebugIn |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
unsigned int Analog[4]; |
}; |
*/ |
void SendeRemoteTasten(unsigned char keys) |
{ |
9b4: 98 2f mov r25, r24 |
while(!UebertragungAbgeschlossen); // evtl warten |
9b6: 80 91 6e 00 lds r24, 0x006E |
9ba: 88 23 and r24, r24 |
9bc: e1 f3 breq .-8 ; 0x9b6 <SendeRemoteTasten+0x2> |
DebugIn.RemoteTasten = keys; |
9be: 90 93 c0 00 sts 0x00C0, r25 |
DebugIn.Analog[0] = AnalogWerte[0]; |
9c2: 80 91 ca 01 lds r24, 0x01CA |
9c6: 90 91 cb 01 lds r25, 0x01CB |
9ca: 90 93 c2 00 sts 0x00C2, r25 |
9ce: 80 93 c1 00 sts 0x00C1, r24 |
DebugIn.Analog[1] = AnalogWerte[1]; |
9d2: 80 91 cc 01 lds r24, 0x01CC |
9d6: 90 91 cd 01 lds r25, 0x01CD |
9da: 90 93 c4 00 sts 0x00C4, r25 |
9de: 80 93 c3 00 sts 0x00C3, r24 |
DebugIn.Analog[2] = AnalogWerte[2]; |
9e2: 80 91 ce 01 lds r24, 0x01CE |
9e6: 90 91 cf 01 lds r25, 0x01CF |
9ea: 90 93 c6 00 sts 0x00C6, r25 |
9ee: 80 93 c5 00 sts 0x00C5, r24 |
DebugIn.Analog[3] = IR_Code; |
9f2: 80 91 c7 01 lds r24, 0x01C7 |
9f6: 90 91 c8 01 lds r25, 0x01C8 |
9fa: 90 93 c8 00 sts 0x00C8, r25 |
9fe: 80 93 c7 00 sts 0x00C7, r24 |
SendOutData('d',SlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
a02: 2b e0 ldi r18, 0x0B ; 11 |
a04: 4e eb ldi r20, 0xBE ; 190 |
a06: 50 e0 ldi r21, 0x00 ; 0 |
a08: 60 91 64 00 lds r22, 0x0064 |
a0c: 84 e6 ldi r24, 0x64 ; 100 |
a0e: 0e 94 1e 03 call 0x63c <SendOutData> |
a12: 08 95 ret |
00000a14 <SendIntervalle>: |
} |
void SendIntervalle(unsigned int debug, unsigned int disp) |
{ |
a14: cf 93 push r28 |
a16: df 93 push r29 |
a18: cd b7 in r28, 0x3d ; 61 |
a1a: de b7 in r29, 0x3e ; 62 |
a1c: 24 97 sbiw r28, 0x04 ; 4 |
a1e: 0f b6 in r0, 0x3f ; 63 |
a20: f8 94 cli |
a22: de bf out 0x3e, r29 ; 62 |
a24: 0f be out 0x3f, r0 ; 63 |
a26: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = debug; |
a28: 9a 83 std Y+2, r25 ; 0x02 |
a2a: 89 83 std Y+1, r24 ; 0x01 |
tmp_int_arr2[1] = disp; |
a2c: 7c 83 std Y+4, r23 ; 0x04 |
a2e: 6b 83 std Y+3, r22 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a30: 80 91 6e 00 lds r24, 0x006E |
a34: 88 23 and r24, r24 |
a36: e1 f3 breq .-8 ; 0xa30 <SendIntervalle+0x1c> |
SendOutData('i',SlaveAdresse,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); |
a38: 24 e0 ldi r18, 0x04 ; 4 |
a3a: ae 01 movw r20, r28 |
a3c: 4f 5f subi r20, 0xFF ; 255 |
a3e: 5f 4f sbci r21, 0xFF ; 255 |
a40: 60 91 64 00 lds r22, 0x0064 |
a44: 89 e6 ldi r24, 0x69 ; 105 |
a46: 0e 94 1e 03 call 0x63c <SendOutData> |
a4a: 24 96 adiw r28, 0x04 ; 4 |
a4c: 0f b6 in r0, 0x3f ; 63 |
a4e: f8 94 cli |
a50: de bf out 0x3e, r29 ; 62 |
a52: 0f be out 0x3f, r0 ; 63 |
a54: cd bf out 0x3d, r28 ; 61 |
a56: df 91 pop r29 |
a58: cf 91 pop r28 |
a5a: 08 95 ret |
00000a5c <ClearIntervalle>: |
} |
void ClearIntervalle(void) |
{ |
a5c: cf 93 push r28 |
a5e: df 93 push r29 |
a60: cd b7 in r28, 0x3d ; 61 |
a62: de b7 in r29, 0x3e ; 62 |
a64: 24 97 sbiw r28, 0x04 ; 4 |
a66: 0f b6 in r0, 0x3f ; 63 |
a68: f8 94 cli |
a6a: de bf out 0x3e, r29 ; 62 |
a6c: 0f be out 0x3f, r0 ; 63 |
a6e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = 0; |
a70: 1a 82 std Y+2, r1 ; 0x02 |
a72: 19 82 std Y+1, r1 ; 0x01 |
tmp_int_arr2[1] = 0; |
a74: 1c 82 std Y+4, r1 ; 0x04 |
a76: 1b 82 std Y+3, r1 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a78: 80 91 6e 00 lds r24, 0x006E |
a7c: 88 23 and r24, r24 |
a7e: e1 f3 breq .-8 ; 0xa78 <ClearIntervalle+0x1c> |
SendOutData('i',0,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); // 0= an alle |
a80: 24 e0 ldi r18, 0x04 ; 4 |
a82: ae 01 movw r20, r28 |
a84: 4f 5f subi r20, 0xFF ; 255 |
a86: 5f 4f sbci r21, 0xFF ; 255 |
a88: 60 e0 ldi r22, 0x00 ; 0 |
a8a: 89 e6 ldi r24, 0x69 ; 105 |
a8c: 0e 94 1e 03 call 0x63c <SendOutData> |
a90: 24 96 adiw r28, 0x04 ; 4 |
a92: 0f b6 in r0, 0x3f ; 63 |
a94: f8 94 cli |
a96: de bf out 0x3e, r29 ; 62 |
a98: 0f be out 0x3f, r0 ; 63 |
a9a: cd bf out 0x3d, r28 ; 61 |
a9c: df 91 pop r29 |
a9e: cf 91 pop r28 |
aa0: 08 95 ret |
00000aa2 <DatenUebertragung>: |
} |
void DatenUebertragung(unsigned char key) |
{ |
aa2: cf 93 push r28 |
aa4: df 93 push r29 |
aa6: cd b7 in r28, 0x3d ; 61 |
aa8: de b7 in r29, 0x3e ; 62 |
aaa: 25 97 sbiw r28, 0x05 ; 5 |
aac: 0f b6 in r0, 0x3f ; 63 |
aae: f8 94 cli |
ab0: de bf out 0x3e, r29 ; 62 |
ab2: 0f be out 0x3f, r0 ; 63 |
ab4: cd bf out 0x3d, r28 ; 61 |
ab6: 98 2f mov r25, r24 |
static unsigned char state = 1; |
unsigned char temp_1[1]; |
unsigned char temp_2[2]; |
unsigned char temp_3[3]; |
unsigned int tmp_int_arr2[2]; |
while(!UebertragungAbgeschlossen); // evtl warten |
ab8: 80 91 6e 00 lds r24, 0x006E |
abc: 88 23 and r24, r24 |
abe: e1 f3 breq .-8 ; 0xab8 <DatenUebertragung+0x16> |
static unsigned char KanalSlave = 1; |
if(PollDisplay) |
ac0: 80 91 ed 00 lds r24, 0x00ED |
ac4: 88 23 and r24, r24 |
ac6: e1 f0 breq .+56 ; 0xb00 <DatenUebertragung+0x5e> |
{ |
temp_2[0] = key; |
ac8: 9c 83 std Y+4, r25 ; 0x04 |
temp_2[1] = 6; |
aca: 86 e0 ldi r24, 0x06 ; 6 |
acc: 8d 83 std Y+5, r24 ; 0x05 |
if(DisplayZeilen == 4) temp_2[1] = 4 + 9; // anzahl Zeilen --> + 8 bedeutet: ersten Pollingzyklus freilassen |
ace: 80 91 65 00 lds r24, 0x0065 |
ad2: 84 30 cpi r24, 0x04 ; 4 |
ad4: 11 f4 brne .+4 ; 0xada <DatenUebertragung+0x38> |
ad6: 8d e0 ldi r24, 0x0D ; 13 |
ad8: 01 c0 rjmp .+2 ; 0xadc <DatenUebertragung+0x3a> |
else temp_2[1] = 2 + 9; |
ada: 8b e0 ldi r24, 0x0B ; 11 |
adc: 8d 83 std Y+5, r24 ; 0x05 |
SendOutData('h',SlaveAdresse,(unsigned char *) &temp_2,sizeof(temp_2)); |
ade: 22 e0 ldi r18, 0x02 ; 2 |
ae0: ae 01 movw r20, r28 |
ae2: 4c 5f subi r20, 0xFC ; 252 |
ae4: 5f 4f sbci r21, 0xFF ; 255 |
ae6: 60 91 64 00 lds r22, 0x0064 |
aea: 88 e6 ldi r24, 0x68 ; 104 |
aec: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = '0'; |
af0: 80 e3 ldi r24, 0x30 ; 48 |
af2: 80 93 6d 00 sts 0x006D, r24 |
DisplayBusy = 90; |
af6: 8a e5 ldi r24, 0x5A ; 90 |
af8: 80 93 93 00 sts 0x0093, r24 |
PollDisplay = 0; |
afc: 10 92 ed 00 sts 0x00ED, r1 |
} |
if(!DisplayBusy) |
b00: 60 91 93 00 lds r22, 0x0093 |
b04: 66 23 and r22, r22 |
b06: e1 f5 brne .+120 ; 0xb80 <DatenUebertragung+0xde> |
switch(state) |
b08: 80 91 6f 00 lds r24, 0x006F |
b0c: 99 27 eor r25, r25 |
b0e: 81 30 cpi r24, 0x01 ; 1 |
b10: 91 05 cpc r25, r1 |
b12: 19 f0 breq .+6 ; 0xb1a <DatenUebertragung+0x78> |
b14: 02 97 sbiw r24, 0x02 ; 2 |
b16: e9 f0 breq .+58 ; 0xb52 <DatenUebertragung+0xb0> |
b18: 30 c0 rjmp .+96 ; 0xb7a <DatenUebertragung+0xd8> |
{ |
case 1:// Display |
SendOutData('k',KanalSlave,(unsigned char *) &temp_3,sizeof(temp_3)); |
b1a: 23 e0 ldi r18, 0x03 ; 3 |
b1c: ae 01 movw r20, r28 |
b1e: 4f 5f subi r20, 0xFF ; 255 |
b20: 5f 4f sbci r21, 0xFF ; 255 |
b22: 60 91 70 00 lds r22, 0x0070 |
b26: 8b e6 ldi r24, 0x6B ; 107 |
b28: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = 'K'; |
b2c: 8b e4 ldi r24, 0x4B ; 75 |
b2e: 80 93 6d 00 sts 0x006D, r24 |
if(++KanalSlave > AnzahlTeilnehmer) KanalSlave = 1; |
b32: 80 91 70 00 lds r24, 0x0070 |
b36: 8f 5f subi r24, 0xFF ; 255 |
b38: 80 93 70 00 sts 0x0070, r24 |
b3c: 90 91 6c 00 lds r25, 0x006C |
b40: 98 17 cp r25, r24 |
b42: 18 f4 brcc .+6 ; 0xb4a <DatenUebertragung+0xa8> |
b44: 81 e0 ldi r24, 0x01 ; 1 |
b46: 80 93 70 00 sts 0x0070, r24 |
state++; |
b4a: 80 91 6f 00 lds r24, 0x006F |
b4e: 8f 5f subi r24, 0xFF ; 255 |
b50: 15 c0 rjmp .+42 ; 0xb7c <DatenUebertragung+0xda> |
break; |
case 2: |
temp_3[0] = TX_DigTransferKanalL; |
b52: 80 91 96 00 lds r24, 0x0096 |
b56: 89 83 std Y+1, r24 ; 0x01 |
temp_3[1] = TX_DigTransferKanalH; |
b58: 80 91 95 00 lds r24, 0x0095 |
b5c: 8a 83 std Y+2, r24 ; 0x02 |
temp_3[2] = TX_DigTransferKanalDaten; |
b5e: 80 91 94 00 lds r24, 0x0094 |
b62: 8b 83 std Y+3, r24 ; 0x03 |
SendOutData('l',0,(unsigned char *) &temp_3,sizeof(temp_3)); |
b64: 23 e0 ldi r18, 0x03 ; 3 |
b66: ae 01 movw r20, r28 |
b68: 4f 5f subi r20, 0xFF ; 255 |
b6a: 5f 4f sbci r21, 0xFF ; 255 |
b6c: 8c e6 ldi r24, 0x6C ; 108 |
b6e: 0e 94 1e 03 call 0x63c <SendOutData> |
AntwortEingetroffen = 1; // erwarte keine Antwort |
b72: 81 e0 ldi r24, 0x01 ; 1 |
b74: 80 93 92 00 sts 0x0092, r24 |
b78: 01 c0 rjmp .+2 ; 0xb7c <DatenUebertragung+0xda> |
state = 1; |
break; |
default: state = 1; |
b7a: 81 e0 ldi r24, 0x01 ; 1 |
b7c: 80 93 6f 00 sts 0x006F, r24 |
b80: 25 96 adiw r28, 0x05 ; 5 |
b82: 0f b6 in r0, 0x3f ; 63 |
b84: f8 94 cli |
b86: de bf out 0x3e, r29 ; 62 |
b88: 0f be out 0x3f, r0 ; 63 |
b8a: cd bf out 0x3d, r28 ; 61 |
b8c: df 91 pop r29 |
b8e: cf 91 pop r28 |
b90: 08 95 ret |
00000b92 <_long_delay>: |
#include "main.h" |
void _long_delay(void) |
{ |
long t = 5000; |
b92: 88 e8 ldi r24, 0x88 ; 136 |
b94: 93 e1 ldi r25, 0x13 ; 19 |
b96: a0 e0 ldi r26, 0x00 ; 0 |
b98: b0 e0 ldi r27, 0x00 ; 0 |
while (t--); |
b9a: 03 97 sbiw r24, 0x03 ; 3 |
b9c: a1 09 sbc r26, r1 |
b9e: b1 09 sbc r27, r1 |
ba0: 8f 3f cpi r24, 0xFF ; 255 |
ba2: 2f ef ldi r18, 0xFF ; 255 |
ba4: 92 07 cpc r25, r18 |
ba6: 2f ef ldi r18, 0xFF ; 255 |
ba8: a2 07 cpc r26, r18 |
baa: 2f ef ldi r18, 0xFF ; 255 |
bac: b2 07 cpc r27, r18 |
bae: a9 f7 brne .-22 ; 0xb9a <_long_delay+0x8> |
bb0: 08 95 ret |
00000bb2 <_short_delay>: |
} |
void _short_delay(void) |
{ |
int t = 500; |
bb2: 84 ef ldi r24, 0xF4 ; 244 |
bb4: 91 e0 ldi r25, 0x01 ; 1 |
while (t--); |
bb6: 03 97 sbiw r24, 0x03 ; 3 |
bb8: 2f ef ldi r18, 0xFF ; 255 |
bba: 8f 3f cpi r24, 0xFF ; 255 |
bbc: 92 07 cpc r25, r18 |
bbe: d9 f7 brne .-10 ; 0xbb6 <_short_delay+0x4> |
bc0: 08 95 ret |
00000bc2 <_lcd_write_command>: |
} |
void _lcd_write_command(unsigned char data) |
{ |
bc2: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bc4: 80 7f andi r24, 0xF0 ; 240 |
bc6: 98 2f mov r25, r24 |
bc8: 94 60 ori r25, 0x04 ; 4 |
bca: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bcc: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bce: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bd0: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bd2: 82 2f mov r24, r18 |
bd4: 99 27 eor r25, r25 |
bd6: 34 e0 ldi r19, 0x04 ; 4 |
bd8: 88 0f add r24, r24 |
bda: 99 1f adc r25, r25 |
bdc: 3a 95 dec r19 |
bde: e1 f7 brne .-8 ; 0xbd8 <_lcd_write_command+0x16> |
be0: 84 60 ori r24, 0x04 ; 4 |
be2: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
be4: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4); |
be6: 22 95 swap r18 |
be8: 20 7f andi r18, 0xF0 ; 240 |
bea: 25 bb out 0x15, r18 ; 21 |
bec: 08 95 ret |
00000bee <_lcd_write_4bit>: |
} |
void _lcd_write_4bit(unsigned char data) |
{ |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bee: 28 2f mov r18, r24 |
bf0: 33 27 eor r19, r19 |
bf2: 44 e0 ldi r20, 0x04 ; 4 |
bf4: 22 0f add r18, r18 |
bf6: 33 1f adc r19, r19 |
bf8: 4a 95 dec r20 |
bfa: e1 f7 brne .-8 ; 0xbf4 <_lcd_write_4bit+0x6> |
bfc: 92 2f mov r25, r18 |
bfe: 94 60 ori r25, 0x04 ; 4 |
c00: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
c02: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4); |
c04: 82 95 swap r24 |
c06: 80 7f andi r24, 0xF0 ; 240 |
c08: 85 bb out 0x15, r24 ; 21 |
c0a: 08 95 ret |
00000c0c <lcd_write_byte>: |
} |
void lcd_write_byte(unsigned char data) |
{ |
c0c: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN | DISPLAY_RS; |
c0e: 80 7f andi r24, 0xF0 ; 240 |
c10: 98 2f mov r25, r24 |
c12: 95 60 ori r25, 0x05 ; 5 |
c14: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_RS; |
c16: 81 60 ori r24, 0x01 ; 1 |
c18: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN | DISPLAY_RS; |
c1a: 82 2f mov r24, r18 |
c1c: 99 27 eor r25, r25 |
c1e: 54 e0 ldi r21, 0x04 ; 4 |
c20: 88 0f add r24, r24 |
c22: 99 1f adc r25, r25 |
c24: 5a 95 dec r21 |
c26: e1 f7 brne .-8 ; 0xc20 <lcd_write_byte+0x14> |
c28: 28 2f mov r18, r24 |
c2a: 25 60 ori r18, 0x05 ; 5 |
c2c: 25 bb out 0x15, r18 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_RS; |
c2e: 81 60 ori r24, 0x01 ; 1 |
c30: 85 bb out 0x15, r24 ; 21 |
c32: 08 95 ret |
00000c34 <my_pput>: |
} |
int my_pput(int zeichen) |
{ |
lcd_write_byte((char) zeichen); |
c34: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
c38: 81 e0 ldi r24, 0x01 ; 1 |
c3a: 90 e0 ldi r25, 0x00 ; 0 |
c3c: 08 95 ret |
00000c3e <LCD_Init>: |
// initialize the LCD controller |
void LCD_Init(void) |
{ |
LCD_PORT_DDR = 0xff;//0xf0 | DISPLAY_RS | DISPLAY_EN; |
c3e: 8f ef ldi r24, 0xFF ; 255 |
c40: 84 bb out 0x14, r24 ; 20 |
_long_delay(); |
c42: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c46: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c4a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c4e: 83 e0 ldi r24, 0x03 ; 3 |
c50: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c54: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c58: 83 e0 ldi r24, 0x03 ; 3 |
c5a: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c5e: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c62: 83 e0 ldi r24, 0x03 ; 3 |
c64: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c68: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x02); // jetzt 4 Bit |
c6c: 82 e0 ldi r24, 0x02 ; 2 |
c6e: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c72: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x28); // 4 Bit Zweizeilig |
c76: 88 e2 ldi r24, 0x28 ; 40 |
c78: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c7c: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08); // Display aus |
c80: 88 e0 ldi r24, 0x08 ; 8 |
c82: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c86: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x01); // Clear |
c8a: 81 e0 ldi r24, 0x01 ; 1 |
c8c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c90: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x06); //Entry mode |
c94: 86 e0 ldi r24, 0x06 ; 6 |
c96: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c9a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08 + 4); // Display an |
c9e: 8c e0 ldi r24, 0x0C ; 12 |
ca0: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
ca4: 0e 94 c9 05 call 0xb92 <_long_delay> |
ca8: 08 95 ret |
00000caa <LCD_Gotoxy>: |
} |
void LCD_Gotoxy(unsigned char x , unsigned char y) |
{ |
caa: 1f 93 push r17 |
cac: cf 93 push r28 |
cae: c8 2f mov r28, r24 |
cb0: 16 2f mov r17, r22 |
_short_delay(); |
cb2: 0e 94 d9 05 call 0xbb2 <_short_delay> |
switch(y) |
cb6: 81 2f mov r24, r17 |
cb8: 99 27 eor r25, r25 |
cba: 81 30 cpi r24, 0x01 ; 1 |
cbc: 91 05 cpc r25, r1 |
cbe: 79 f0 breq .+30 ; 0xcde <LCD_Gotoxy+0x34> |
cc0: 82 30 cpi r24, 0x02 ; 2 |
cc2: 91 05 cpc r25, r1 |
cc4: 1c f4 brge .+6 ; 0xccc <LCD_Gotoxy+0x22> |
cc6: 89 2b or r24, r25 |
cc8: 39 f0 breq .+14 ; 0xcd8 <LCD_Gotoxy+0x2e> |
cca: 13 c0 rjmp .+38 ; 0xcf2 <LCD_Gotoxy+0x48> |
ccc: 82 30 cpi r24, 0x02 ; 2 |
cce: 91 05 cpc r25, r1 |
cd0: 49 f0 breq .+18 ; 0xce4 <LCD_Gotoxy+0x3a> |
cd2: 03 97 sbiw r24, 0x03 ; 3 |
cd4: 51 f0 breq .+20 ; 0xcea <LCD_Gotoxy+0x40> |
cd6: 0d c0 rjmp .+26 ; 0xcf2 <LCD_Gotoxy+0x48> |
{ case 0 : _lcd_write_command(x + 0x80); break; |
cd8: 8c 2f mov r24, r28 |
cda: 80 58 subi r24, 0x80 ; 128 |
cdc: 08 c0 rjmp .+16 ; 0xcee <LCD_Gotoxy+0x44> |
case 1 : _lcd_write_command(x + 0xC0); break; |
cde: 8c 2f mov r24, r28 |
ce0: 80 54 subi r24, 0x40 ; 64 |
ce2: 05 c0 rjmp .+10 ; 0xcee <LCD_Gotoxy+0x44> |
case 2 : _lcd_write_command(x + (0x80 + 20)); break; |
ce4: 8c 2f mov r24, r28 |
ce6: 8c 56 subi r24, 0x6C ; 108 |
ce8: 02 c0 rjmp .+4 ; 0xcee <LCD_Gotoxy+0x44> |
case 3 : _lcd_write_command(x + (0xC0 + 20)); break; |
cea: 8c 2f mov r24, r28 |
cec: 8c 52 subi r24, 0x2C ; 44 |
cee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
cf2: cf 91 pop r28 |
cf4: 1f 91 pop r17 |
cf6: 08 95 ret |
00000cf8 <LCD_Write>: |
} |
} |
void LCD_Write(unsigned char *this_text) |
{ |
cf8: 1f 93 push r17 |
cfa: cf 93 push r28 |
cfc: df 93 push r29 |
cfe: ec 01 movw r28, r24 |
unsigned char i = 0; |
d00: 10 e0 ldi r17, 0x00 ; 0 |
while(this_text[i] != 0) |
{ |
lcd_write_byte(this_text[i++]); |
_long_delay(); |
d02: 88 81 ld r24, Y |
d04: 88 23 and r24, r24 |
d06: 79 f0 breq .+30 ; 0xd26 <LCD_Write+0x2e> |
d08: fe 01 movw r30, r28 |
d0a: e1 0f add r30, r17 |
d0c: f1 1d adc r31, r1 |
d0e: 1f 5f subi r17, 0xFF ; 255 |
d10: 80 81 ld r24, Z |
d12: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
d16: 0e 94 c9 05 call 0xb92 <_long_delay> |
d1a: fe 01 movw r30, r28 |
d1c: e1 0f add r30, r17 |
d1e: f1 1d adc r31, r1 |
d20: 80 81 ld r24, Z |
d22: 88 23 and r24, r24 |
d24: 89 f7 brne .-30 ; 0xd08 <LCD_Write+0x10> |
d26: df 91 pop r29 |
d28: cf 91 pop r28 |
d2a: 1f 91 pop r17 |
d2c: 08 95 ret |
00000d2e <LCD_Putchar>: |
} |
} |
char LCD_Putchar(char zeichen) |
{ |
d2e: 1f 93 push r17 |
d30: 18 2f mov r17, r24 |
_short_delay(); |
d32: 0e 94 d9 05 call 0xbb2 <_short_delay> |
lcd_write_byte((char) zeichen); |
d36: 81 2f mov r24, r17 |
d38: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
d3c: 81 e0 ldi r24, 0x01 ; 1 |
d3e: 90 e0 ldi r25, 0x00 ; 0 |
d40: 1f 91 pop r17 |
d42: 08 95 ret |
00000d44 <PRINT>: |
#include "old_macros.h" |
//#define LIGHTPRINTF |
void PRINT(const char * ptr, unsigned int len) { |
d44: 0f 93 push r16 |
d46: 1f 93 push r17 |
d48: cf 93 push r28 |
d4a: df 93 push r29 |
d4c: 8c 01 movw r16, r24 |
d4e: eb 01 movw r28, r22 |
for(;len;len--) |
d50: 67 2b or r22, r23 |
d52: 39 f0 breq .+14 ; 0xd62 <PRINT+0x1e> |
LCD_Putchar(*ptr++); |
d54: f8 01 movw r30, r16 |
d56: 81 91 ld r24, Z+ |
d58: 8f 01 movw r16, r30 |
d5a: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d5e: 21 97 sbiw r28, 0x01 ; 1 |
d60: c9 f7 brne .-14 ; 0xd54 <PRINT+0x10> |
d62: df 91 pop r29 |
d64: cf 91 pop r28 |
d66: 1f 91 pop r17 |
d68: 0f 91 pop r16 |
d6a: 08 95 ret |
00000d6c <PRINTP>: |
} |
void PRINTP(const char * ptr, unsigned int len) { |
d6c: 0f 93 push r16 |
d6e: 1f 93 push r17 |
d70: cf 93 push r28 |
d72: df 93 push r29 |
d74: 8c 01 movw r16, r24 |
d76: eb 01 movw r28, r22 |
for(;len;len--) |
d78: 67 2b or r22, r23 |
d7a: 41 f0 breq .+16 ; 0xd8c <PRINTP+0x20> |
// LCD_Putchar(PRG_RDB(ptr++)); |
LCD_Putchar(pgm_read_byte(ptr++)); |
d7c: f8 01 movw r30, r16 |
d7e: 0f 5f subi r16, 0xFF ; 255 |
d80: 1f 4f sbci r17, 0xFF ; 255 |
d82: 84 91 lpm r24, Z |
d84: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d88: 21 97 sbiw r28, 0x01 ; 1 |
d8a: c1 f7 brne .-16 ; 0xd7c <PRINTP+0x10> |
d8c: df 91 pop r29 |
d8e: cf 91 pop r28 |
d90: 1f 91 pop r17 |
d92: 0f 91 pop r16 |
d94: 08 95 ret |
00000d96 <PAD_SP>: |
} |
void PAD_SP(signed char howmany) { |
d96: cf 93 push r28 |
d98: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
d9a: 18 16 cp r1, r24 |
d9c: 34 f4 brge .+12 ; 0xdaa <PAD_SP+0x14> |
LCD_Putchar(' '); |
d9e: 80 e2 ldi r24, 0x20 ; 32 |
da0: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
da4: c1 50 subi r28, 0x01 ; 1 |
da6: 1c 16 cp r1, r28 |
da8: d4 f3 brlt .-12 ; 0xd9e <PAD_SP+0x8> |
daa: cf 91 pop r28 |
dac: 08 95 ret |
00000dae <PAD_0>: |
} |
void PAD_0(signed char howmany) { |
dae: cf 93 push r28 |
db0: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
db2: 18 16 cp r1, r24 |
db4: 34 f4 brge .+12 ; 0xdc2 <PAD_0+0x14> |
LCD_Putchar('0'); |
db6: 80 e3 ldi r24, 0x30 ; 48 |
db8: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
dbc: c1 50 subi r28, 0x01 ; 1 |
dbe: 1c 16 cp r1, r28 |
dc0: d4 f3 brlt .-12 ; 0xdb6 <PAD_0+0x8> |
dc2: cf 91 pop r28 |
dc4: 08 95 ret |
00000dc6 <_printf_P>: |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
dc6: 2f 92 push r2 |
dc8: 3f 92 push r3 |
dca: 4f 92 push r4 |
dcc: 5f 92 push r5 |
dce: 6f 92 push r6 |
dd0: 7f 92 push r7 |
dd2: 8f 92 push r8 |
dd4: 9f 92 push r9 |
dd6: af 92 push r10 |
dd8: bf 92 push r11 |
dda: cf 92 push r12 |
ddc: df 92 push r13 |
dde: ef 92 push r14 |
de0: ff 92 push r15 |
de2: 0f 93 push r16 |
de4: 1f 93 push r17 |
de6: cf 93 push r28 |
de8: df 93 push r29 |
dea: cd b7 in r28, 0x3d ; 61 |
dec: de b7 in r29, 0x3e ; 62 |
dee: e0 97 sbiw r28, 0x30 ; 48 |
df0: 0f b6 in r0, 0x3f ; 63 |
df2: f8 94 cli |
df4: de bf out 0x3e, r29 ; 62 |
df6: 0f be out 0x3f, r0 ; 63 |
df8: cd bf out 0x3d, r28 ; 61 |
dfa: a5 e4 ldi r26, 0x45 ; 69 |
dfc: 6a 2e mov r6, r26 |
dfe: 71 2c mov r7, r1 |
e00: 6c 0e add r6, r28 |
e02: 7d 1e adc r7, r29 |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
e04: 1c a6 std Y+44, r1 ; 0x2c |
e06: 1d a6 std Y+45, r1 ; 0x2d |
e08: 1e a6 std Y+46, r1 ; 0x2e |
e0a: 1f a6 std Y+47, r1 ; 0x2f |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
va_start(ap, fmt0); |
fmt = fmt0; |
e0c: d3 01 movw r26, r6 |
e0e: ad 90 ld r10, X+ |
e10: bd 90 ld r11, X+ |
e12: 3d 01 movw r6, r26 |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
e14: c5 01 movw r24, r10 |
e16: 05 c0 rjmp .+10 ; 0xe22 <_printf_P+0x5c> |
e18: 05 32 cpi r16, 0x25 ; 37 |
e1a: 39 f0 breq .+14 ; 0xe2a <_printf_P+0x64> |
e1c: 08 94 sec |
e1e: a1 1c adc r10, r1 |
e20: b1 1c adc r11, r1 |
e22: f5 01 movw r30, r10 |
e24: 04 91 lpm r16, Z |
e26: 00 23 and r16, r16 |
e28: b9 f7 brne .-18 ; 0xe18 <_printf_P+0x52> |
/* void */; |
if ((n = fmt - fmark) != 0) { |
e2a: b5 01 movw r22, r10 |
e2c: 68 1b sub r22, r24 |
e2e: 79 0b sbc r23, r25 |
e30: 11 f0 breq .+4 ; 0xe36 <_printf_P+0x70> |
PRINTP(fmark, n); |
e32: 0e 94 b6 06 call 0xd6c <PRINTP> |
} |
if (ch == '\0') |
e36: 00 23 and r16, r16 |
e38: 09 f4 brne .+2 ; 0xe3c <_printf_P+0x76> |
e3a: 30 c2 rjmp .+1120 ; 0x129c <_printf_P+0x4d6> |
goto done; |
fmt++; /* skip over '%' */ |
e3c: 08 94 sec |
e3e: a1 1c adc r10, r1 |
e40: b1 1c adc r11, r1 |
flags = 0; |
e42: 55 24 eor r5, r5 |
dprec = 0; |
e44: 58 aa std Y+48, r5 ; 0x30 |
width = 0; |
e46: 25 2c mov r2, r5 |
prec = -1; |
e48: 1f ef ldi r17, 0xFF ; 255 |
sign = '\0'; |
e4a: 59 a6 std Y+41, r5 ; 0x29 |
rflag: ch = PRG_RDB(fmt++); |
e4c: f5 01 movw r30, r10 |
e4e: 08 94 sec |
e50: a1 1c adc r10, r1 |
e52: b1 1c adc r11, r1 |
e54: 04 91 lpm r16, Z |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
e56: 05 37 cpi r16, 0x75 ; 117 |
e58: 21 f0 breq .+8 ; 0xe62 <_printf_P+0x9c> |
e5a: 80 2f mov r24, r16 |
e5c: 80 62 ori r24, 0x20 ; 32 |
e5e: 88 37 cpi r24, 0x78 ; 120 |
e60: f1 f4 brne .+60 ; 0xe9e <_printf_P+0xd8> |
#endif |
if (flags&LONGINT) { |
e62: 50 fe sbrs r5, 0 |
e64: 0e c0 rjmp .+28 ; 0xe82 <_printf_P+0xbc> |
_ulong=va_arg(ap, unsigned long); |
e66: f3 01 movw r30, r6 |
e68: 24 e0 ldi r18, 0x04 ; 4 |
e6a: 30 e0 ldi r19, 0x00 ; 0 |
e6c: 62 0e add r6, r18 |
e6e: 73 1e adc r7, r19 |
e70: 80 81 ld r24, Z |
e72: 91 81 ldd r25, Z+1 ; 0x01 |
e74: a2 81 ldd r26, Z+2 ; 0x02 |
e76: b3 81 ldd r27, Z+3 ; 0x03 |
e78: 8c a7 std Y+44, r24 ; 0x2c |
e7a: 9d a7 std Y+45, r25 ; 0x2d |
e7c: ae a7 std Y+46, r26 ; 0x2e |
e7e: bf a7 std Y+47, r27 ; 0x2f |
e80: 0e c0 rjmp .+28 ; 0xe9e <_printf_P+0xd8> |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
e82: f3 01 movw r30, r6 |
e84: a2 e0 ldi r26, 0x02 ; 2 |
e86: b0 e0 ldi r27, 0x00 ; 0 |
e88: 6a 0e add r6, r26 |
e8a: 7b 1e adc r7, r27 |
e8c: 80 81 ld r24, Z |
e8e: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
e90: 9c 01 movw r18, r24 |
e92: 44 27 eor r20, r20 |
e94: 55 27 eor r21, r21 |
e96: 2c a7 std Y+44, r18 ; 0x2c |
e98: 3d a7 std Y+45, r19 ; 0x2d |
e9a: 4e a7 std Y+46, r20 ; 0x2e |
e9c: 5f a7 std Y+47, r21 ; 0x2f |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
e9e: 00 32 cpi r16, 0x20 ; 32 |
ea0: 21 f4 brne .+8 ; 0xeaa <_printf_P+0xe4> |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
ea2: 89 a5 ldd r24, Y+41 ; 0x29 |
ea4: 88 23 and r24, r24 |
ea6: 91 f6 brne .-92 ; 0xe4c <_printf_P+0x86> |
ea8: 1b c0 rjmp .+54 ; 0xee0 <_printf_P+0x11a> |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
eaa: 03 32 cpi r16, 0x23 ; 35 |
eac: 11 f4 brne .+4 ; 0xeb2 <_printf_P+0xec> |
flags |= ALT; |
eae: 38 e0 ldi r19, 0x08 ; 8 |
eb0: 81 c0 rjmp .+258 ; 0xfb4 <_printf_P+0x1ee> |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
eb2: 0a 32 cpi r16, 0x2A ; 42 |
eb4: 11 f0 breq .+4 ; 0xeba <_printf_P+0xf4> |
eb6: 0d 32 cpi r16, 0x2D ; 45 |
eb8: 89 f4 brne .+34 ; 0xedc <_printf_P+0x116> |
if (ch=='*') { |
eba: 0a 32 cpi r16, 0x2A ; 42 |
ebc: 51 f4 brne .+20 ; 0xed2 <_printf_P+0x10c> |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
ebe: f3 01 movw r30, r6 |
ec0: 42 e0 ldi r20, 0x02 ; 2 |
ec2: 50 e0 ldi r21, 0x00 ; 0 |
ec4: 64 0e add r6, r20 |
ec6: 75 1e adc r7, r21 |
ec8: 20 80 ld r2, Z |
eca: 22 20 and r2, r2 |
ecc: 0c f0 brlt .+2 ; 0xed0 <_printf_P+0x10a> |
ece: be cf rjmp .-132 ; 0xe4c <_printf_P+0x86> |
goto rflag; |
width = -width; |
ed0: 21 94 neg r2 |
} |
flags |= LADJUST; |
ed2: 50 e1 ldi r21, 0x10 ; 16 |
ed4: 55 2a or r5, r21 |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
ed6: 8f ed ldi r24, 0xDF ; 223 |
ed8: 58 22 and r5, r24 |
goto rflag; |
eda: b8 cf rjmp .-144 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='+') { |
edc: 0b 32 cpi r16, 0x2B ; 43 |
ede: 11 f4 brne .+4 ; 0xee4 <_printf_P+0x11e> |
sign = '+'; |
ee0: 09 a7 std Y+41, r16 ; 0x29 |
goto rflag; |
ee2: b4 cf rjmp .-152 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='.') { |
ee4: 0e 32 cpi r16, 0x2E ; 46 |
ee6: c1 f5 brne .+112 ; 0xf58 <_printf_P+0x192> |
if ((ch = PRG_RDB(fmt++)) == '*') { |
ee8: f5 01 movw r30, r10 |
eea: 08 94 sec |
eec: a1 1c adc r10, r1 |
eee: b1 1c adc r11, r1 |
ef0: 04 91 lpm r16, Z |
ef2: 0a 32 cpi r16, 0x2A ; 42 |
ef4: 79 f4 brne .+30 ; 0xf14 <_printf_P+0x14e> |
n = va_arg(ap, int); |
ef6: f3 01 movw r30, r6 |
ef8: a2 e0 ldi r26, 0x02 ; 2 |
efa: b0 e0 ldi r27, 0x00 ; 0 |
efc: 6a 0e add r6, r26 |
efe: 7b 1e adc r7, r27 |
f00: 60 81 ld r22, Z |
f02: 71 81 ldd r23, Z+1 ; 0x01 |
prec = n < 0 ? -1 : n; |
f04: bf ef ldi r27, 0xFF ; 255 |
f06: 6f 3f cpi r22, 0xFF ; 255 |
f08: 7b 07 cpc r23, r27 |
f0a: 14 f4 brge .+4 ; 0xf10 <_printf_P+0x14a> |
f0c: 6f ef ldi r22, 0xFF ; 255 |
f0e: 7f ef ldi r23, 0xFF ; 255 |
f10: 16 2f mov r17, r22 |
goto rflag; |
f12: 9c cf rjmp .-200 ; 0xe4c <_printf_P+0x86> |
} |
n = 0; |
f14: 60 e0 ldi r22, 0x00 ; 0 |
f16: 70 e0 ldi r23, 0x00 ; 0 |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
f18: 80 2f mov r24, r16 |
f1a: 80 53 subi r24, 0x30 ; 48 |
f1c: 8a 30 cpi r24, 0x0A ; 10 |
f1e: a0 f4 brcc .+40 ; 0xf48 <_printf_P+0x182> |
f20: cb 01 movw r24, r22 |
f22: f3 e0 ldi r31, 0x03 ; 3 |
f24: 88 0f add r24, r24 |
f26: 99 1f adc r25, r25 |
f28: fa 95 dec r31 |
f2a: e1 f7 brne .-8 ; 0xf24 <_printf_P+0x15e> |
f2c: 86 0f add r24, r22 |
f2e: 97 1f adc r25, r23 |
f30: 68 0f add r22, r24 |
f32: 79 1f adc r23, r25 |
f34: 60 0f add r22, r16 |
f36: 71 1d adc r23, r1 |
f38: 60 53 subi r22, 0x30 ; 48 |
f3a: 70 40 sbci r23, 0x00 ; 0 |
f3c: f5 01 movw r30, r10 |
f3e: 08 94 sec |
f40: a1 1c adc r10, r1 |
f42: b1 1c adc r11, r1 |
f44: 04 91 lpm r16, Z |
f46: e8 cf rjmp .-48 ; 0xf18 <_printf_P+0x152> |
} |
prec = n < 0 ? -1 : n; |
f48: ef ef ldi r30, 0xFF ; 255 |
f4a: 6f 3f cpi r22, 0xFF ; 255 |
f4c: 7e 07 cpc r23, r30 |
f4e: 14 f4 brge .+4 ; 0xf54 <_printf_P+0x18e> |
f50: 6f ef ldi r22, 0xFF ; 255 |
f52: 7f ef ldi r23, 0xFF ; 255 |
f54: 16 2f mov r17, r22 |
goto reswitch; |
f56: 7f cf rjmp .-258 ; 0xe56 <_printf_P+0x90> |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
f58: 00 33 cpi r16, 0x30 ; 48 |
f5a: 29 f4 brne .+10 ; 0xf66 <_printf_P+0x1a0> |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
f5c: 54 fc sbrc r5, 4 |
f5e: 76 cf rjmp .-276 ; 0xe4c <_printf_P+0x86> |
flags |= ZEROPAD; /* '-' disables '0' */ |
f60: f0 e2 ldi r31, 0x20 ; 32 |
f62: 5f 2a or r5, r31 |
goto rflag; |
f64: 73 cf rjmp .-282 ; 0xe4c <_printf_P+0x86> |
} else if (ch>='1' && ch<='9') { |
f66: 80 2f mov r24, r16 |
f68: 81 53 subi r24, 0x31 ; 49 |
f6a: 89 30 cpi r24, 0x09 ; 9 |
f6c: d8 f4 brcc .+54 ; 0xfa4 <_printf_P+0x1de> |
n = 0; |
f6e: 60 e0 ldi r22, 0x00 ; 0 |
f70: 70 e0 ldi r23, 0x00 ; 0 |
do { |
n = 10 * n + to_digit(ch); |
f72: cb 01 movw r24, r22 |
f74: e3 e0 ldi r30, 0x03 ; 3 |
f76: 88 0f add r24, r24 |
f78: 99 1f adc r25, r25 |
f7a: ea 95 dec r30 |
f7c: e1 f7 brne .-8 ; 0xf76 <_printf_P+0x1b0> |
f7e: 86 0f add r24, r22 |
f80: 97 1f adc r25, r23 |
f82: 68 0f add r22, r24 |
f84: 79 1f adc r23, r25 |
f86: 60 0f add r22, r16 |
f88: 71 1d adc r23, r1 |
f8a: 60 53 subi r22, 0x30 ; 48 |
f8c: 70 40 sbci r23, 0x00 ; 0 |
ch = PRG_RDB(fmt++); |
f8e: f5 01 movw r30, r10 |
f90: 08 94 sec |
f92: a1 1c adc r10, r1 |
f94: b1 1c adc r11, r1 |
f96: 04 91 lpm r16, Z |
} while (is_digit(ch)); |
f98: 80 2f mov r24, r16 |
f9a: 80 53 subi r24, 0x30 ; 48 |
f9c: 8a 30 cpi r24, 0x0A ; 10 |
f9e: 48 f3 brcs .-46 ; 0xf72 <_printf_P+0x1ac> |
width = n; |
fa0: 26 2e mov r2, r22 |
goto reswitch; |
fa2: 59 cf rjmp .-334 ; 0xe56 <_printf_P+0x90> |
} else if (ch=='h') { |
fa4: 08 36 cpi r16, 0x68 ; 104 |
fa6: 19 f4 brne .+6 ; 0xfae <_printf_P+0x1e8> |
flags |= SHORTINT; |
fa8: 24 e0 ldi r18, 0x04 ; 4 |
faa: 52 2a or r5, r18 |
goto rflag; |
fac: 4f cf rjmp .-354 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='l') { |
fae: 0c 36 cpi r16, 0x6C ; 108 |
fb0: 19 f4 brne .+6 ; 0xfb8 <_printf_P+0x1f2> |
flags |= LONGINT; |
fb2: 31 e0 ldi r19, 0x01 ; 1 |
fb4: 53 2a or r5, r19 |
goto rflag; |
fb6: 4a cf rjmp .-364 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='c') { |
fb8: 03 36 cpi r16, 0x63 ; 99 |
fba: 61 f4 brne .+24 ; 0xfd4 <_printf_P+0x20e> |
*(cp = buf) = va_arg(ap, int); |
fbc: 4e 01 movw r8, r28 |
fbe: 08 94 sec |
fc0: 81 1c adc r8, r1 |
fc2: 91 1c adc r9, r1 |
fc4: f3 01 movw r30, r6 |
fc6: 42 e0 ldi r20, 0x02 ; 2 |
fc8: 50 e0 ldi r21, 0x00 ; 0 |
fca: 64 0e add r6, r20 |
fcc: 75 1e adc r7, r21 |
fce: 80 81 ld r24, Z |
fd0: 89 83 std Y+1, r24 ; 0x01 |
fd2: 1b c1 rjmp .+566 ; 0x120a <_printf_P+0x444> |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
fd4: 04 34 cpi r16, 0x44 ; 68 |
fd6: 21 f0 breq .+8 ; 0xfe0 <_printf_P+0x21a> |
fd8: 04 36 cpi r16, 0x64 ; 100 |
fda: 11 f0 breq .+4 ; 0xfe0 <_printf_P+0x21a> |
fdc: 09 36 cpi r16, 0x69 ; 105 |
fde: b1 f5 brne .+108 ; 0x104c <_printf_P+0x286> |
if(ch=='D') |
fe0: 04 34 cpi r16, 0x44 ; 68 |
fe2: 11 f4 brne .+4 ; 0xfe8 <_printf_P+0x222> |
flags |= LONGINT; |
fe4: 51 e0 ldi r21, 0x01 ; 1 |
fe6: 55 2a or r5, r21 |
if (flags&LONGINT) { |
fe8: 50 fe sbrs r5, 0 |
fea: 0a c0 rjmp .+20 ; 0x1000 <_printf_P+0x23a> |
_ulong=va_arg(ap, long); |
fec: f3 01 movw r30, r6 |
fee: 84 e0 ldi r24, 0x04 ; 4 |
ff0: 90 e0 ldi r25, 0x00 ; 0 |
ff2: 68 0e add r6, r24 |
ff4: 79 1e adc r7, r25 |
ff6: 20 81 ld r18, Z |
ff8: 31 81 ldd r19, Z+1 ; 0x01 |
ffa: 42 81 ldd r20, Z+2 ; 0x02 |
ffc: 53 81 ldd r21, Z+3 ; 0x03 |
ffe: 0c c0 rjmp .+24 ; 0x1018 <_printf_P+0x252> |
} else { |
register int _d; |
_d=va_arg(ap, int); |
1000: f3 01 movw r30, r6 |
1002: 42 e0 ldi r20, 0x02 ; 2 |
1004: 50 e0 ldi r21, 0x00 ; 0 |
1006: 64 0e add r6, r20 |
1008: 75 1e adc r7, r21 |
100a: 80 81 ld r24, Z |
100c: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
100e: 9c 01 movw r18, r24 |
1010: 44 27 eor r20, r20 |
1012: 37 fd sbrc r19, 7 |
1014: 40 95 com r20 |
1016: 54 2f mov r21, r20 |
1018: 2c a7 std Y+44, r18 ; 0x2c |
101a: 3d a7 std Y+45, r19 ; 0x2d |
101c: 4e a7 std Y+46, r20 ; 0x2e |
101e: 5f a7 std Y+47, r21 ; 0x2f |
} |
if ((long)_ulong < 0) { |
1020: 8c a5 ldd r24, Y+44 ; 0x2c |
1022: 9d a5 ldd r25, Y+45 ; 0x2d |
1024: ae a5 ldd r26, Y+46 ; 0x2e |
1026: bf a5 ldd r27, Y+47 ; 0x2f |
1028: b7 ff sbrs r27, 7 |
102a: 0d c0 rjmp .+26 ; 0x1046 <_printf_P+0x280> |
_ulong = -_ulong; |
102c: b0 95 com r27 |
102e: a0 95 com r26 |
1030: 90 95 com r25 |
1032: 81 95 neg r24 |
1034: 9f 4f sbci r25, 0xFF ; 255 |
1036: af 4f sbci r26, 0xFF ; 255 |
1038: bf 4f sbci r27, 0xFF ; 255 |
103a: 8c a7 std Y+44, r24 ; 0x2c |
103c: 9d a7 std Y+45, r25 ; 0x2d |
103e: ae a7 std Y+46, r26 ; 0x2e |
1040: bf a7 std Y+47, r27 ; 0x2f |
sign = '-'; |
1042: 8d e2 ldi r24, 0x2D ; 45 |
1044: 89 a7 std Y+41, r24 ; 0x29 |
} |
base = DEC; |
1046: 7a e0 ldi r23, 0x0A ; 10 |
1048: 47 2e mov r4, r23 |
goto number; |
104a: 7b c0 rjmp .+246 ; 0x1142 <_printf_P+0x37c> |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
104c: 0f 34 cpi r16, 0x4F ; 79 |
104e: 11 f0 breq .+4 ; 0x1054 <_printf_P+0x28e> |
1050: 0f 36 cpi r16, 0x6F ; 111 |
1052: 39 f4 brne .+14 ; 0x1062 <_printf_P+0x29c> |
if (ch=='O') |
1054: 0f 34 cpi r16, 0x4F ; 79 |
1056: 11 f4 brne .+4 ; 0x105c <_printf_P+0x296> |
flags |= LONGINT; |
1058: 91 e0 ldi r25, 0x01 ; 1 |
105a: 59 2a or r5, r25 |
base = OCT; |
105c: 68 e0 ldi r22, 0x08 ; 8 |
105e: 46 2e mov r4, r22 |
goto nosign; |
1060: 6f c0 rjmp .+222 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='p') { |
1062: 00 37 cpi r16, 0x70 ; 112 |
1064: a1 f4 brne .+40 ; 0x108e <_printf_P+0x2c8> |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
1066: f3 01 movw r30, r6 |
1068: a2 e0 ldi r26, 0x02 ; 2 |
106a: b0 e0 ldi r27, 0x00 ; 0 |
106c: 6a 0e add r6, r26 |
106e: 7b 1e adc r7, r27 |
1070: 80 81 ld r24, Z |
1072: 91 81 ldd r25, Z+1 ; 0x01 |
1074: 9c 01 movw r18, r24 |
1076: 44 27 eor r20, r20 |
1078: 55 27 eor r21, r21 |
107a: 2c a7 std Y+44, r18 ; 0x2c |
107c: 3d a7 std Y+45, r19 ; 0x2d |
107e: 4e a7 std Y+46, r20 ; 0x2e |
1080: 5f a7 std Y+47, r21 ; 0x2f |
base = HEX; |
1082: 50 e1 ldi r21, 0x10 ; 16 |
1084: 45 2e mov r4, r21 |
flags |= HEXPREFIX; |
1086: 30 e4 ldi r19, 0x40 ; 64 |
1088: 53 2a or r5, r19 |
ch = 'x'; |
108a: 08 e7 ldi r16, 0x78 ; 120 |
goto nosign; |
108c: 59 c0 rjmp .+178 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='s') { // print a string from RAM |
108e: 03 37 cpi r16, 0x73 ; 115 |
1090: c1 f5 brne .+112 ; 0x1102 <_printf_P+0x33c> |
if ((cp = va_arg(ap, char *)) == NULL) { |
1092: f3 01 movw r30, r6 |
1094: 42 e0 ldi r20, 0x02 ; 2 |
1096: 50 e0 ldi r21, 0x00 ; 0 |
1098: 64 0e add r6, r20 |
109a: 75 1e adc r7, r21 |
109c: 80 80 ld r8, Z |
109e: 91 80 ldd r9, Z+1 ; 0x01 |
10a0: 81 14 cp r8, r1 |
10a2: 91 04 cpc r9, r1 |
10a4: 89 f4 brne .+34 ; 0x10c8 <_printf_P+0x302> |
cp=buf; |
10a6: 4e 01 movw r8, r28 |
10a8: 08 94 sec |
10aa: 81 1c adc r8, r1 |
10ac: 91 1c adc r9, r1 |
cp[0] = '('; |
10ae: 88 e2 ldi r24, 0x28 ; 40 |
10b0: 89 83 std Y+1, r24 ; 0x01 |
cp[1] = 'n'; |
10b2: 8e e6 ldi r24, 0x6E ; 110 |
10b4: f4 01 movw r30, r8 |
10b6: 81 83 std Z+1, r24 ; 0x01 |
cp[2] = 'u'; |
10b8: 85 e7 ldi r24, 0x75 ; 117 |
10ba: 8b 83 std Y+3, r24 ; 0x03 |
cp[4] = cp[3] = 'l'; |
10bc: 8c e6 ldi r24, 0x6C ; 108 |
10be: 8c 83 std Y+4, r24 ; 0x04 |
10c0: 8d 83 std Y+5, r24 ; 0x05 |
cp[5] = ')'; |
10c2: 89 e2 ldi r24, 0x29 ; 41 |
10c4: 8e 83 std Y+6, r24 ; 0x06 |
cp[6] = '\0'; |
10c6: 1f 82 std Y+7, r1 ; 0x07 |
} |
if (prec >= 0) { |
10c8: 17 fd sbrc r17, 7 |
10ca: 13 c0 rjmp .+38 ; 0x10f2 <_printf_P+0x32c> |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
10cc: 81 2f mov r24, r17 |
10ce: 99 27 eor r25, r25 |
10d0: 87 fd sbrc r24, 7 |
10d2: 90 95 com r25 |
10d4: ac 01 movw r20, r24 |
10d6: 60 e0 ldi r22, 0x00 ; 0 |
10d8: 70 e0 ldi r23, 0x00 ; 0 |
10da: c4 01 movw r24, r8 |
10dc: 0e 94 64 0c call 0x18c8 <memchr> |
if (p != NULL) { |
10e0: 00 97 sbiw r24, 0x00 ; 0 |
10e2: 29 f0 breq .+10 ; 0x10ee <_printf_P+0x328> |
size = p - cp; |
10e4: d8 2e mov r13, r24 |
10e6: d8 18 sub r13, r8 |
if (size > prec) |
10e8: 1d 15 cp r17, r13 |
10ea: 0c f0 brlt .+2 ; 0x10ee <_printf_P+0x328> |
10ec: 90 c0 rjmp .+288 ; 0x120e <_printf_P+0x448> |
size = prec; |
} else |
size = prec; |
10ee: d1 2e mov r13, r17 |
10f0: 8e c0 rjmp .+284 ; 0x120e <_printf_P+0x448> |
} else |
size = strlen(cp); |
10f2: f4 01 movw r30, r8 |
10f4: 01 90 ld r0, Z+ |
10f6: 00 20 and r0, r0 |
10f8: e9 f7 brne .-6 ; 0x10f4 <_printf_P+0x32e> |
10fa: 31 97 sbiw r30, 0x01 ; 1 |
10fc: de 2e mov r13, r30 |
10fe: d8 18 sub r13, r8 |
1100: 86 c0 rjmp .+268 ; 0x120e <_printf_P+0x448> |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
1102: 05 35 cpi r16, 0x55 ; 85 |
1104: 11 f0 breq .+4 ; 0x110a <_printf_P+0x344> |
1106: 05 37 cpi r16, 0x75 ; 117 |
1108: 39 f4 brne .+14 ; 0x1118 <_printf_P+0x352> |
if (ch=='U') |
110a: 05 35 cpi r16, 0x55 ; 85 |
110c: 11 f4 brne .+4 ; 0x1112 <_printf_P+0x34c> |
flags |= LONGINT; |
110e: f1 e0 ldi r31, 0x01 ; 1 |
1110: 5f 2a or r5, r31 |
base = DEC; |
1112: 4a e0 ldi r20, 0x0A ; 10 |
1114: 44 2e mov r4, r20 |
goto nosign; |
1116: 14 c0 rjmp .+40 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='X'||ch=='x') { |
1118: 08 35 cpi r16, 0x58 ; 88 |
111a: 19 f0 breq .+6 ; 0x1122 <_printf_P+0x35c> |
111c: 08 37 cpi r16, 0x78 ; 120 |
111e: 09 f0 breq .+2 ; 0x1122 <_printf_P+0x35c> |
1120: 6c c0 rjmp .+216 ; 0x11fa <_printf_P+0x434> |
base = HEX; |
1122: 30 e1 ldi r19, 0x10 ; 16 |
1124: 43 2e mov r4, r19 |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
1126: 53 fe sbrs r5, 3 |
1128: 0b c0 rjmp .+22 ; 0x1140 <_printf_P+0x37a> |
112a: 2c a5 ldd r18, Y+44 ; 0x2c |
112c: 3d a5 ldd r19, Y+45 ; 0x2d |
112e: 4e a5 ldd r20, Y+46 ; 0x2e |
1130: 5f a5 ldd r21, Y+47 ; 0x2f |
1132: 21 15 cp r18, r1 |
1134: 31 05 cpc r19, r1 |
1136: 41 05 cpc r20, r1 |
1138: 51 05 cpc r21, r1 |
113a: 11 f0 breq .+4 ; 0x1140 <_printf_P+0x37a> |
flags |= HEXPREFIX; |
113c: 30 e4 ldi r19, 0x40 ; 64 |
113e: 53 2a or r5, r19 |
/* unsigned conversions */ |
nosign: sign = '\0'; |
1140: 19 a6 std Y+41, r1 ; 0x29 |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
1142: 18 ab std Y+48, r17 ; 0x30 |
1144: 17 fd sbrc r17, 7 |
1146: 02 c0 rjmp .+4 ; 0x114c <_printf_P+0x386> |
flags &= ~ZEROPAD; |
1148: 4f ed ldi r20, 0xDF ; 223 |
114a: 54 22 and r5, r20 |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
114c: 29 e2 ldi r18, 0x29 ; 41 |
114e: 82 2e mov r8, r18 |
1150: 91 2c mov r9, r1 |
1152: 8c 0e add r8, r28 |
1154: 9d 1e adc r9, r29 |
if (_ulong != 0 || prec != 0) { |
1156: 8c a5 ldd r24, Y+44 ; 0x2c |
1158: 9d a5 ldd r25, Y+45 ; 0x2d |
115a: ae a5 ldd r26, Y+46 ; 0x2e |
115c: bf a5 ldd r27, Y+47 ; 0x2f |
115e: 00 97 sbiw r24, 0x00 ; 0 |
1160: a1 05 cpc r26, r1 |
1162: b1 05 cpc r27, r1 |
1164: 21 f4 brne .+8 ; 0x116e <_printf_P+0x3a8> |
1166: 98 a9 ldd r25, Y+48 ; 0x30 |
1168: 99 23 and r25, r25 |
116a: 09 f4 brne .+2 ; 0x116e <_printf_P+0x3a8> |
116c: 3f c0 rjmp .+126 ; 0x11ec <_printf_P+0x426> |
116e: c4 2c mov r12, r4 |
1170: dd 24 eor r13, r13 |
1172: ee 24 eor r14, r14 |
1174: ff 24 eor r15, r15 |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
1176: 33 24 eor r3, r3 |
1178: 2c a5 ldd r18, Y+44 ; 0x2c |
117a: 3d a5 ldd r19, Y+45 ; 0x2d |
117c: 4e a5 ldd r20, Y+46 ; 0x2e |
117e: 5f a5 ldd r21, Y+47 ; 0x2f |
1180: 2c 15 cp r18, r12 |
1182: 3d 05 cpc r19, r13 |
1184: 4e 05 cpc r20, r14 |
1186: 5f 05 cpc r21, r15 |
1188: 10 f0 brcs .+4 ; 0x118e <_printf_P+0x3c8> |
118a: 91 e0 ldi r25, 0x01 ; 1 |
118c: 39 2e mov r3, r25 |
_d = _ulong % base; |
118e: 6c a5 ldd r22, Y+44 ; 0x2c |
1190: 7d a5 ldd r23, Y+45 ; 0x2d |
1192: 8e a5 ldd r24, Y+46 ; 0x2e |
1194: 9f a5 ldd r25, Y+47 ; 0x2f |
1196: a7 01 movw r20, r14 |
1198: 96 01 movw r18, r12 |
119a: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
119e: dc 01 movw r26, r24 |
11a0: cb 01 movw r24, r22 |
11a2: 18 2f mov r17, r24 |
if (_d<10) { |
11a4: 8a 30 cpi r24, 0x0A ; 10 |
11a6: 10 f4 brcc .+4 ; 0x11ac <_printf_P+0x3e6> |
_d+='0'; |
11a8: 10 5d subi r17, 0xD0 ; 208 |
11aa: 04 c0 rjmp .+8 ; 0x11b4 <_printf_P+0x3ee> |
} else { |
_d+='a'-10; |
11ac: 19 5a subi r17, 0xA9 ; 169 |
if (ch=='X') _d&=~0x20; |
11ae: 08 35 cpi r16, 0x58 ; 88 |
11b0: 09 f4 brne .+2 ; 0x11b4 <_printf_P+0x3ee> |
11b2: 1f 7d andi r17, 0xDF ; 223 |
} |
*--cp=_d; |
11b4: d4 01 movw r26, r8 |
11b6: 1e 93 st -X, r17 |
11b8: 4d 01 movw r8, r26 |
_ulong /= base; |
11ba: 6c a5 ldd r22, Y+44 ; 0x2c |
11bc: 7d a5 ldd r23, Y+45 ; 0x2d |
11be: 8e a5 ldd r24, Y+46 ; 0x2e |
11c0: 9f a5 ldd r25, Y+47 ; 0x2f |
11c2: a7 01 movw r20, r14 |
11c4: 96 01 movw r18, r12 |
11c6: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
11ca: 2c a7 std Y+44, r18 ; 0x2c |
11cc: 3d a7 std Y+45, r19 ; 0x2d |
11ce: 4e a7 std Y+46, r20 ; 0x2e |
11d0: 5f a7 std Y+47, r21 ; 0x2f |
} while (notlastdigit); |
11d2: 33 20 and r3, r3 |
11d4: 81 f6 brne .-96 ; 0x1176 <_printf_P+0x3b0> |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
11d6: b8 e0 ldi r27, 0x08 ; 8 |
11d8: 4b 16 cp r4, r27 |
11da: 41 f4 brne .+16 ; 0x11ec <_printf_P+0x426> |
11dc: 53 fe sbrs r5, 3 |
11de: 06 c0 rjmp .+12 ; 0x11ec <_printf_P+0x426> |
11e0: 10 33 cpi r17, 0x30 ; 48 |
11e2: 21 f0 breq .+8 ; 0x11ec <_printf_P+0x426> |
*--cp = '0'; |
11e4: 80 e3 ldi r24, 0x30 ; 48 |
11e6: f4 01 movw r30, r8 |
11e8: 82 93 st -Z, r24 |
11ea: 4f 01 movw r8, r30 |
#endif |
} |
size = buf + BUF - cp; |
11ec: ce 01 movw r24, r28 |
11ee: 01 96 adiw r24, 0x01 ; 1 |
11f0: d8 2e mov r13, r24 |
11f2: d8 18 sub r13, r8 |
11f4: f8 e2 ldi r31, 0x28 ; 40 |
11f6: df 0e add r13, r31 |
11f8: 0b c0 rjmp .+22 ; 0x1210 <_printf_P+0x44a> |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
11fa: 00 23 and r16, r16 |
11fc: 09 f4 brne .+2 ; 0x1200 <_printf_P+0x43a> |
11fe: 4e c0 rjmp .+156 ; 0x129c <_printf_P+0x4d6> |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
1200: 4e 01 movw r8, r28 |
1202: 08 94 sec |
1204: 81 1c adc r8, r1 |
1206: 91 1c adc r9, r1 |
*cp = ch; |
1208: 09 83 std Y+1, r16 ; 0x01 |
size = 1; |
120a: 81 e0 ldi r24, 0x01 ; 1 |
120c: d8 2e mov r13, r24 |
sign = '\0'; |
120e: 19 a6 std Y+41, r1 ; 0x29 |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
1210: 1d 2d mov r17, r13 |
dpad = dprec - size; |
1212: c8 a8 ldd r12, Y+48 ; 0x30 |
1214: cd 18 sub r12, r13 |
if (dpad < 0) |
1216: c7 fc sbrc r12, 7 |
dpad = 0; |
1218: cc 24 eor r12, r12 |
if (sign) |
121a: 89 a5 ldd r24, Y+41 ; 0x29 |
121c: 88 23 and r24, r24 |
121e: 11 f0 breq .+4 ; 0x1224 <_printf_P+0x45e> |
fieldsz++; |
1220: 1f 5f subi r17, 0xFF ; 255 |
1222: 02 c0 rjmp .+4 ; 0x1228 <_printf_P+0x462> |
else if (flags & HEXPREFIX) |
1224: 56 fc sbrc r5, 6 |
fieldsz += 2; |
1226: 1e 5f subi r17, 0xFE ; 254 |
fieldsz += dpad; |
1228: 1c 0d add r17, r12 |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
122a: e5 2c mov r14, r5 |
122c: ff 24 eor r15, r15 |
122e: c7 01 movw r24, r14 |
1230: 80 73 andi r24, 0x30 ; 48 |
1232: 90 70 andi r25, 0x00 ; 0 |
1234: 89 2b or r24, r25 |
1236: 21 f4 brne .+8 ; 0x1240 <_printf_P+0x47a> |
PAD_SP(width - fieldsz); |
1238: 82 2d mov r24, r2 |
123a: 81 1b sub r24, r17 |
123c: 0e 94 cb 06 call 0xd96 <PAD_SP> |
/* prefix */ |
if (sign) { |
1240: 89 a5 ldd r24, Y+41 ; 0x29 |
1242: 88 23 and r24, r24 |
1244: 29 f0 breq .+10 ; 0x1250 <_printf_P+0x48a> |
PRINT(&sign, 1); |
1246: 61 e0 ldi r22, 0x01 ; 1 |
1248: 70 e0 ldi r23, 0x00 ; 0 |
124a: ce 01 movw r24, r28 |
124c: 89 96 adiw r24, 0x29 ; 41 |
124e: 09 c0 rjmp .+18 ; 0x1262 <_printf_P+0x49c> |
} else if (flags & HEXPREFIX) { |
1250: e6 fe sbrs r14, 6 |
1252: 09 c0 rjmp .+18 ; 0x1266 <_printf_P+0x4a0> |
ox[0] = '0'; |
1254: 80 e3 ldi r24, 0x30 ; 48 |
1256: 8a a7 std Y+42, r24 ; 0x2a |
ox[1] = ch; |
1258: 0b a7 std Y+43, r16 ; 0x2b |
PRINT(ox, 2); |
125a: 62 e0 ldi r22, 0x02 ; 2 |
125c: 70 e0 ldi r23, 0x00 ; 0 |
125e: ce 01 movw r24, r28 |
1260: 8a 96 adiw r24, 0x2a ; 42 |
1262: 0e 94 a2 06 call 0xd44 <PRINT> |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
1266: c7 01 movw r24, r14 |
1268: 80 73 andi r24, 0x30 ; 48 |
126a: 90 70 andi r25, 0x00 ; 0 |
126c: 80 97 sbiw r24, 0x20 ; 32 |
126e: 21 f4 brne .+8 ; 0x1278 <_printf_P+0x4b2> |
PAD_0(width - fieldsz); |
1270: 82 2d mov r24, r2 |
1272: 81 1b sub r24, r17 |
1274: 0e 94 d7 06 call 0xdae <PAD_0> |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
1278: 8c 2d mov r24, r12 |
127a: 0e 94 d7 06 call 0xdae <PAD_0> |
/* the string or number proper */ |
PRINT(cp, size); |
127e: 8d 2d mov r24, r13 |
1280: 99 27 eor r25, r25 |
1282: 87 fd sbrc r24, 7 |
1284: 90 95 com r25 |
1286: bc 01 movw r22, r24 |
1288: c4 01 movw r24, r8 |
128a: 0e 94 a2 06 call 0xd44 <PRINT> |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
128e: e4 fe sbrs r14, 4 |
1290: c1 cd rjmp .-1150 ; 0xe14 <_printf_P+0x4e> |
PAD_SP(width - fieldsz); |
1292: 82 2d mov r24, r2 |
1294: 81 1b sub r24, r17 |
1296: 0e 94 cb 06 call 0xd96 <PAD_SP> |
129a: bc cd rjmp .-1160 ; 0xe14 <_printf_P+0x4e> |
129c: e0 96 adiw r28, 0x30 ; 48 |
129e: 0f b6 in r0, 0x3f ; 63 |
12a0: f8 94 cli |
12a2: de bf out 0x3e, r29 ; 62 |
12a4: 0f be out 0x3f, r0 ; 63 |
12a6: cd bf out 0x3d, r28 ; 61 |
12a8: df 91 pop r29 |
12aa: cf 91 pop r28 |
12ac: 1f 91 pop r17 |
12ae: 0f 91 pop r16 |
12b0: ff 90 pop r15 |
12b2: ef 90 pop r14 |
12b4: df 90 pop r13 |
12b6: cf 90 pop r12 |
12b8: bf 90 pop r11 |
12ba: af 90 pop r10 |
12bc: 9f 90 pop r9 |
12be: 8f 90 pop r8 |
12c0: 7f 90 pop r7 |
12c2: 6f 90 pop r6 |
12c4: 5f 90 pop r5 |
12c6: 4f 90 pop r4 |
12c8: 3f 90 pop r3 |
12ca: 2f 90 pop r2 |
12cc: 08 95 ret |
000012ce <__vector_9>: |
}; |
SIGNAL (SIG_OVERFLOW1) |
{ |
12ce: 1f 92 push r1 |
12d0: 0f 92 push r0 |
12d2: 0f b6 in r0, 0x3f ; 63 |
12d4: 0f 92 push r0 |
12d6: 11 24 eor r1, r1 |
12d8: 8f 93 push r24 |
12da: 9f 93 push r25 |
static unsigned char cnt_10ms = 0; |
TCNT1 -= TIMER_RELOAD_VALUE; |
12dc: 8c b5 in r24, 0x2c ; 44 |
12de: 9d b5 in r25, 0x2d ; 45 |
12e0: 8a 5f subi r24, 0xFA ; 250 |
12e2: 90 40 sbci r25, 0x00 ; 0 |
12e4: 9d bd out 0x2d, r25 ; 45 |
12e6: 8c bd out 0x2c, r24 ; 44 |
CountMilliseconds++; |
12e8: 80 91 a5 00 lds r24, 0x00A5 |
12ec: 90 91 a6 00 lds r25, 0x00A6 |
12f0: 01 96 adiw r24, 0x01 ; 1 |
12f2: 90 93 a6 00 sts 0x00A6, r25 |
12f6: 80 93 a5 00 sts 0x00A5, r24 |
if(DisplayBusy) DisplayBusy--; |
12fa: 80 91 93 00 lds r24, 0x0093 |
12fe: 88 23 and r24, r24 |
1300: 29 f0 breq .+10 ; 0x130c <__vector_9+0x3e> |
1302: 80 91 93 00 lds r24, 0x0093 |
1306: 81 50 subi r24, 0x01 ; 1 |
1308: 80 93 93 00 sts 0x0093, r24 |
if(LoescheIrCodeTimer) |
130c: 80 91 7c 00 lds r24, 0x007C |
1310: 90 91 7d 00 lds r25, 0x007D |
1314: 00 97 sbiw r24, 0x00 ; 0 |
1316: 59 f0 breq .+22 ; 0x132e <__vector_9+0x60> |
{ |
if(--LoescheIrCodeTimer == 0) IR_Code = 0; |
1318: 01 97 sbiw r24, 0x01 ; 1 |
131a: 90 93 7d 00 sts 0x007D, r25 |
131e: 80 93 7c 00 sts 0x007C, r24 |
1322: 00 97 sbiw r24, 0x00 ; 0 |
1324: 21 f4 brne .+8 ; 0x132e <__vector_9+0x60> |
1326: 90 93 c8 01 sts 0x01C8, r25 |
132a: 80 93 c7 01 sts 0x01C7, r24 |
132e: 9f 91 pop r25 |
1330: 8f 91 pop r24 |
1332: 0f 90 pop r0 |
1334: 0f be out 0x3f, r0 ; 63 |
1336: 0f 90 pop r0 |
1338: 1f 90 pop r1 |
133a: 18 95 reti |
0000133c <Timer1_Init>: |
} |
} |
void Timer1_Init(void) |
{ |
TCCR1B = TIMER_TEILER; |
133c: 83 e0 ldi r24, 0x03 ; 3 |
133e: 8e bd out 0x2e, r24 ; 46 |
TCNT1 = -TIMER_RELOAD_VALUE; // reload |
1340: 86 e0 ldi r24, 0x06 ; 6 |
1342: 9f ef ldi r25, 0xFF ; 255 |
1344: 9d bd out 0x2d, r25 ; 45 |
1346: 8c bd out 0x2c, r24 ; 44 |
//OCR1 = 0x00; |
// Timer(s)/Counter(s) Interrupt(s) initialization |
#if defined (__AVR_ATmega32__) |
TIMSK |= 0x04; |
1348: 89 b7 in r24, 0x39 ; 57 |
134a: 84 60 ori r24, 0x04 ; 4 |
134c: 89 bf out 0x39, r24 ; 57 |
134e: 08 95 ret |
00001350 <SetDelay>: |
#endif |
#if defined (__AVR_ATmega644__) |
TIMSK1 |= _BV(TOIE1); |
#endif |
} |
unsigned int SetDelay (unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
1350: 20 91 a5 00 lds r18, 0x00A5 |
1354: 30 91 a6 00 lds r19, 0x00A6 |
1358: 28 0f add r18, r24 |
135a: 39 1f adc r19, r25 |
} |
135c: c9 01 movw r24, r18 |
135e: 01 97 sbiw r24, 0x01 ; 1 |
1360: 08 95 ret |
00001362 <CheckDelay>: |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
1362: 20 91 a5 00 lds r18, 0x00A5 |
1366: 30 91 a6 00 lds r19, 0x00A6 |
136a: 82 1b sub r24, r18 |
136c: 93 0b sbc r25, r19 |
136e: 89 2f mov r24, r25 |
1370: 99 27 eor r25, r25 |
1372: 80 78 andi r24, 0x80 ; 128 |
} |
1374: 99 27 eor r25, r25 |
1376: 08 95 ret |
00001378 <Delay_ms>: |
void Delay_ms(unsigned int w) |
{ |
1378: cf 93 push r28 |
137a: df 93 push r29 |
unsigned int akt; |
akt = SetDelay(w); |
137c: 0e 94 a8 09 call 0x1350 <SetDelay> |
1380: ec 01 movw r28, r24 |
while (!CheckDelay(akt)); |
1382: ce 01 movw r24, r28 |
1384: 0e 94 b1 09 call 0x1362 <CheckDelay> |
1388: 88 23 and r24, r24 |
138a: d9 f3 breq .-10 ; 0x1382 <Delay_ms+0xa> |
138c: df 91 pop r29 |
138e: cf 91 pop r28 |
1390: 08 95 ret |
00001392 <Keyboard_Init>: |
unsigned int KeyTimer = 0; |
void Keyboard_Init(void) |
{ |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1392: 82 e3 ldi r24, 0x32 ; 50 |
1394: 90 e0 ldi r25, 0x00 ; 0 |
1396: 0e 94 a8 09 call 0x1350 <SetDelay> |
139a: 90 93 a9 00 sts 0x00A9, r25 |
139e: 80 93 a8 00 sts 0x00A8, r24 |
13a2: 08 95 ret |
000013a4 <GetKeyboard>: |
} |
unsigned char GetKeyboard(void) |
{ |
13a4: cf 93 push r28 |
static char taste1 = 0, taste2 = 0,taste3 = 0,taste4 = 0,taste5 = 0; |
unsigned char ret = 0; |
13a6: c0 e0 ldi r28, 0x00 ; 0 |
if(CheckDelay(KeyTimer)) |
13a8: 80 91 a8 00 lds r24, 0x00A8 |
13ac: 90 91 a9 00 lds r25, 0x00A9 |
13b0: 0e 94 b1 09 call 0x1362 <CheckDelay> |
13b4: 88 23 and r24, r24 |
13b6: 09 f4 brne .+2 ; 0x13ba <GetKeyboard+0x16> |
13b8: 76 c0 rjmp .+236 ; 0x14a6 <GetKeyboard+0x102> |
{ |
if(_TASTE1) { if(taste1++ == 0 || taste1 == CNT_TASTE) ret |= KEY1; if(taste1 == CNT_TASTE) taste1 = CNT_TASTE-CNT_TASTE/3;} else taste1 = 0; |
13ba: cf 9b sbis 0x19, 7 ; 25 |
13bc: 12 c0 rjmp .+36 ; 0x13e2 <GetKeyboard+0x3e> |
13be: 80 91 aa 00 lds r24, 0x00AA |
13c2: 8f 5f subi r24, 0xFF ; 255 |
13c4: 80 93 aa 00 sts 0x00AA, r24 |
13c8: 81 30 cpi r24, 0x01 ; 1 |
13ca: 11 f0 breq .+4 ; 0x13d0 <GetKeyboard+0x2c> |
13cc: 8a 30 cpi r24, 0x0A ; 10 |
13ce: 09 f4 brne .+2 ; 0x13d2 <GetKeyboard+0x2e> |
13d0: c1 e0 ldi r28, 0x01 ; 1 |
13d2: 80 91 aa 00 lds r24, 0x00AA |
13d6: 8a 30 cpi r24, 0x0A ; 10 |
13d8: 31 f4 brne .+12 ; 0x13e6 <GetKeyboard+0x42> |
13da: 87 e0 ldi r24, 0x07 ; 7 |
13dc: 80 93 aa 00 sts 0x00AA, r24 |
13e0: 02 c0 rjmp .+4 ; 0x13e6 <GetKeyboard+0x42> |
13e2: c0 93 aa 00 sts 0x00AA, r28 |
if(_TASTE2) { if(taste2++ == 0 || taste2 == CNT_TASTE) ret |= KEY2; if(taste2 == CNT_TASTE) taste2 = CNT_TASTE-CNT_TASTE/3;} else taste2 = 0; |
13e6: ce 9b sbis 0x19, 6 ; 25 |
13e8: 12 c0 rjmp .+36 ; 0x140e <GetKeyboard+0x6a> |
13ea: 80 91 ab 00 lds r24, 0x00AB |
13ee: 8f 5f subi r24, 0xFF ; 255 |
13f0: 80 93 ab 00 sts 0x00AB, r24 |
13f4: 81 30 cpi r24, 0x01 ; 1 |
13f6: 11 f0 breq .+4 ; 0x13fc <GetKeyboard+0x58> |
13f8: 8a 30 cpi r24, 0x0A ; 10 |
13fa: 09 f4 brne .+2 ; 0x13fe <GetKeyboard+0x5a> |
13fc: c2 60 ori r28, 0x02 ; 2 |
13fe: 80 91 ab 00 lds r24, 0x00AB |
1402: 8a 30 cpi r24, 0x0A ; 10 |
1404: 31 f4 brne .+12 ; 0x1412 <GetKeyboard+0x6e> |
1406: 87 e0 ldi r24, 0x07 ; 7 |
1408: 80 93 ab 00 sts 0x00AB, r24 |
140c: 02 c0 rjmp .+4 ; 0x1412 <GetKeyboard+0x6e> |
140e: 10 92 ab 00 sts 0x00AB, r1 |
if(_TASTE3) { if(taste3++ == 0 || taste3 == CNT_TASTE) ret |= KEY3; if(taste3 == CNT_TASTE) taste3 = CNT_TASTE-CNT_TASTE/3;} else taste3 = 0; |
1412: cd 9b sbis 0x19, 5 ; 25 |
1414: 12 c0 rjmp .+36 ; 0x143a <GetKeyboard+0x96> |
1416: 80 91 ac 00 lds r24, 0x00AC |
141a: 8f 5f subi r24, 0xFF ; 255 |
141c: 80 93 ac 00 sts 0x00AC, r24 |
1420: 81 30 cpi r24, 0x01 ; 1 |
1422: 11 f0 breq .+4 ; 0x1428 <GetKeyboard+0x84> |
1424: 8a 30 cpi r24, 0x0A ; 10 |
1426: 09 f4 brne .+2 ; 0x142a <GetKeyboard+0x86> |
1428: c4 60 ori r28, 0x04 ; 4 |
142a: 80 91 ac 00 lds r24, 0x00AC |
142e: 8a 30 cpi r24, 0x0A ; 10 |
1430: 31 f4 brne .+12 ; 0x143e <GetKeyboard+0x9a> |
1432: 87 e0 ldi r24, 0x07 ; 7 |
1434: 80 93 ac 00 sts 0x00AC, r24 |
1438: 02 c0 rjmp .+4 ; 0x143e <GetKeyboard+0x9a> |
143a: 10 92 ac 00 sts 0x00AC, r1 |
if(_TASTE4) { if(taste4++ == 0 || taste4 == CNT_TASTE) ret |= KEY4; if(taste4 == CNT_TASTE) taste4 = CNT_TASTE-CNT_TASTE/3;} else taste4 = 0; |
143e: cc 9b sbis 0x19, 4 ; 25 |
1440: 12 c0 rjmp .+36 ; 0x1466 <GetKeyboard+0xc2> |
1442: 80 91 ad 00 lds r24, 0x00AD |
1446: 8f 5f subi r24, 0xFF ; 255 |
1448: 80 93 ad 00 sts 0x00AD, r24 |
144c: 81 30 cpi r24, 0x01 ; 1 |
144e: 11 f0 breq .+4 ; 0x1454 <GetKeyboard+0xb0> |
1450: 8a 30 cpi r24, 0x0A ; 10 |
1452: 09 f4 brne .+2 ; 0x1456 <GetKeyboard+0xb2> |
1454: c8 60 ori r28, 0x08 ; 8 |
1456: 80 91 ad 00 lds r24, 0x00AD |
145a: 8a 30 cpi r24, 0x0A ; 10 |
145c: 31 f4 brne .+12 ; 0x146a <GetKeyboard+0xc6> |
145e: 87 e0 ldi r24, 0x07 ; 7 |
1460: 80 93 ad 00 sts 0x00AD, r24 |
1464: 02 c0 rjmp .+4 ; 0x146a <GetKeyboard+0xc6> |
1466: 10 92 ad 00 sts 0x00AD, r1 |
if(_TASTE5) { if(taste5++ == 0 || taste5 == CNT_TASTE) ret |= KEY5; if(taste5 == CNT_TASTE) taste5 = CNT_TASTE-CNT_TASTE/3;} else taste5 = 0; |
146a: cb 9b sbis 0x19, 3 ; 25 |
146c: 12 c0 rjmp .+36 ; 0x1492 <GetKeyboard+0xee> |
146e: 80 91 ae 00 lds r24, 0x00AE |
1472: 8f 5f subi r24, 0xFF ; 255 |
1474: 80 93 ae 00 sts 0x00AE, r24 |
1478: 81 30 cpi r24, 0x01 ; 1 |
147a: 11 f0 breq .+4 ; 0x1480 <GetKeyboard+0xdc> |
147c: 8a 30 cpi r24, 0x0A ; 10 |
147e: 09 f4 brne .+2 ; 0x1482 <GetKeyboard+0xde> |
1480: c0 61 ori r28, 0x10 ; 16 |
1482: 80 91 ae 00 lds r24, 0x00AE |
1486: 8a 30 cpi r24, 0x0A ; 10 |
1488: 31 f4 brne .+12 ; 0x1496 <GetKeyboard+0xf2> |
148a: 87 e0 ldi r24, 0x07 ; 7 |
148c: 80 93 ae 00 sts 0x00AE, r24 |
1490: 02 c0 rjmp .+4 ; 0x1496 <GetKeyboard+0xf2> |
1492: 10 92 ae 00 sts 0x00AE, r1 |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1496: 82 e3 ldi r24, 0x32 ; 50 |
1498: 90 e0 ldi r25, 0x00 ; 0 |
149a: 0e 94 a8 09 call 0x1350 <SetDelay> |
149e: 90 93 a9 00 sts 0x00A9, r25 |
14a2: 80 93 a8 00 sts 0x00A8, r24 |
} |
return(ret); |
} |
14a6: 8c 2f mov r24, r28 |
14a8: 99 27 eor r25, r25 |
14aa: cf 91 pop r28 |
14ac: 08 95 ret |
000014ae <GetKeyboard2>: |
unsigned char GetKeyboard2(void) |
{ |
unsigned char ret = 0; |
14ae: 80 e0 ldi r24, 0x00 ; 0 |
if(_TASTE1) ret |= KEY1; |
14b0: cf 99 sbic 0x19, 7 ; 25 |
14b2: 81 e0 ldi r24, 0x01 ; 1 |
if(_TASTE2) ret |= KEY2; |
14b4: ce 99 sbic 0x19, 6 ; 25 |
14b6: 82 60 ori r24, 0x02 ; 2 |
if(_TASTE3) ret |= KEY3; |
14b8: cd 99 sbic 0x19, 5 ; 25 |
14ba: 84 60 ori r24, 0x04 ; 4 |
if(_TASTE4) ret |= KEY4; |
14bc: cc 99 sbic 0x19, 4 ; 25 |
14be: 88 60 ori r24, 0x08 ; 8 |
if(_TASTE5) ret |= KEY5; |
14c0: cb 99 sbic 0x19, 3 ; 25 |
14c2: 80 61 ori r24, 0x10 ; 16 |
return(ret); |
} |
14c4: 99 27 eor r25, r25 |
14c6: 08 95 ret |
000014c8 <Menu>: |
unsigned char KanalVon[MAX_KANAL]; |
unsigned char KanalAn[MAX_KANAL]; |
void Menu(unsigned char key) |
{ |
14c8: 0f 93 push r16 |
14ca: 1f 93 push r17 |
14cc: cf 93 push r28 |
14ce: df 93 push r29 |
static unsigned int arr = 0; |
static unsigned char MaxMenue = 2,MenuePunkt=0; |
unsigned char kanal = 0; |
if(key & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LCD_Clear; } |
14d0: c8 2f mov r28, r24 |
14d2: dd 27 eor r29, r29 |
14d4: c0 ff sbrs r28, 0 |
14d6: 0f c0 rjmp .+30 ; 0x14f6 <Menu+0x2e> |
14d8: 80 91 b3 00 lds r24, 0x00B3 |
14dc: 88 23 and r24, r24 |
14de: 11 f0 breq .+4 ; 0x14e4 <Menu+0x1c> |
14e0: 81 50 subi r24, 0x01 ; 1 |
14e2: 02 c0 rjmp .+4 ; 0x14e8 <Menu+0x20> |
14e4: 80 91 7b 00 lds r24, 0x007B |
14e8: 80 93 b3 00 sts 0x00B3, r24 |
14ec: 81 e0 ldi r24, 0x01 ; 1 |
14ee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
14f2: 0e 94 c9 05 call 0xb92 <_long_delay> |
if(key & KEY2) { MenuePunkt++; LCD_Clear; } |
14f6: 8e 01 movw r16, r28 |
14f8: 02 70 andi r16, 0x02 ; 2 |
14fa: 10 70 andi r17, 0x00 ; 0 |
14fc: c1 ff sbrs r28, 1 |
14fe: 0a c0 rjmp .+20 ; 0x1514 <Menu+0x4c> |
1500: 80 91 b3 00 lds r24, 0x00B3 |
1504: 8f 5f subi r24, 0xFF ; 255 |
1506: 80 93 b3 00 sts 0x00B3, r24 |
150a: 81 e0 ldi r24, 0x01 ; 1 |
150c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
1510: 0e 94 c9 05 call 0xb92 <_long_delay> |
if((key & KEY1) && (key & KEY2)) MenuePunkt = 0; |
1514: c0 ff sbrs r28, 0 |
1516: 04 c0 rjmp .+8 ; 0x1520 <Menu+0x58> |
1518: 01 2b or r16, r17 |
151a: 11 f0 breq .+4 ; 0x1520 <Menu+0x58> |
151c: 10 92 b3 00 sts 0x00B3, r1 |
// LCD_printfxy(13,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
1520: 20 91 b3 00 lds r18, 0x00B3 |
1524: 82 2f mov r24, r18 |
1526: 99 27 eor r25, r25 |
1528: 81 30 cpi r24, 0x01 ; 1 |
152a: 91 05 cpc r25, r1 |
152c: 09 f4 brne .+2 ; 0x1530 <Menu+0x68> |
152e: 41 c0 rjmp .+130 ; 0x15b2 <Menu+0xea> |
1530: 82 30 cpi r24, 0x02 ; 2 |
1532: 91 05 cpc r25, r1 |
1534: 1c f4 brge .+6 ; 0x153c <Menu+0x74> |
1536: 89 2b or r24, r25 |
1538: 49 f0 breq .+18 ; 0x154c <Menu+0x84> |
153a: bf c0 rjmp .+382 ; 0x16ba <Menu+0x1f2> |
153c: 82 30 cpi r24, 0x02 ; 2 |
153e: 91 05 cpc r25, r1 |
1540: 09 f4 brne .+2 ; 0x1544 <Menu+0x7c> |
1542: 6a c0 rjmp .+212 ; 0x1618 <Menu+0x150> |
1544: 03 97 sbiw r24, 0x03 ; 3 |
1546: 09 f4 brne .+2 ; 0x154a <Menu+0x82> |
1548: 8e c0 rjmp .+284 ; 0x1666 <Menu+0x19e> |
154a: b7 c0 rjmp .+366 ; 0x16ba <Menu+0x1f2> |
{ |
case 0: |
LCD_printfxy(0,0,"Verbinden mit"); |
154c: 60 e0 ldi r22, 0x00 ; 0 |
154e: 86 2f mov r24, r22 |
1550: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1554: 84 eb ldi r24, 0xB4 ; 180 |
1556: 90 e0 ldi r25, 0x00 ; 0 |
1558: 9f 93 push r25 |
155a: 8f 93 push r24 |
155c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"MicroSPS:%2i ",SlaveAdresse); |
1560: 61 e0 ldi r22, 0x01 ; 1 |
1562: 80 e0 ldi r24, 0x00 ; 0 |
1564: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1568: 0f 90 pop r0 |
156a: 0f 90 pop r0 |
156c: 80 91 64 00 lds r24, 0x0064 |
1570: 99 27 eor r25, r25 |
1572: 9f 93 push r25 |
1574: 8f 93 push r24 |
1576: 82 ec ldi r24, 0xC2 ; 194 |
1578: 90 e0 ldi r25, 0x00 ; 0 |
157a: 9f 93 push r25 |
157c: 8f 93 push r24 |
157e: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && SlaveAdresse > 1) SlaveAdresse--; |
1582: 0f 90 pop r0 |
1584: 0f 90 pop r0 |
1586: 0f 90 pop r0 |
1588: 0f 90 pop r0 |
158a: c2 ff sbrs r28, 2 |
158c: 07 c0 rjmp .+14 ; 0x159c <Menu+0xd4> |
158e: 80 91 64 00 lds r24, 0x0064 |
1592: 82 30 cpi r24, 0x02 ; 2 |
1594: 18 f0 brcs .+6 ; 0x159c <Menu+0xd4> |
1596: 81 50 subi r24, 0x01 ; 1 |
1598: 80 93 64 00 sts 0x0064, r24 |
if(key & KEY4 && SlaveAdresse < 26) SlaveAdresse++; |
159c: c3 ff sbrs r28, 3 |
159e: 92 c0 rjmp .+292 ; 0x16c4 <Menu+0x1fc> |
15a0: 80 91 64 00 lds r24, 0x0064 |
15a4: 8a 31 cpi r24, 0x1A ; 26 |
15a6: 08 f0 brcs .+2 ; 0x15aa <Menu+0xe2> |
15a8: 8d c0 rjmp .+282 ; 0x16c4 <Menu+0x1fc> |
15aa: 8f 5f subi r24, 0xFF ; 255 |
15ac: 80 93 64 00 sts 0x0064, r24 |
break; |
15b0: 89 c0 rjmp .+274 ; 0x16c4 <Menu+0x1fc> |
case 1: |
LCD_printfxy(0,0,"Max Adresse"); |
15b2: 60 e0 ldi r22, 0x00 ; 0 |
15b4: 86 2f mov r24, r22 |
15b6: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ba: 80 ed ldi r24, 0xD0 ; 208 |
15bc: 90 e0 ldi r25, 0x00 ; 0 |
15be: 9f 93 push r25 |
15c0: 8f 93 push r24 |
15c2: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"%2i ",AnzahlTeilnehmer); |
15c6: 61 e0 ldi r22, 0x01 ; 1 |
15c8: 80 e0 ldi r24, 0x00 ; 0 |
15ca: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ce: 0f 90 pop r0 |
15d0: 0f 90 pop r0 |
15d2: 80 91 6c 00 lds r24, 0x006C |
15d6: 99 27 eor r25, r25 |
15d8: 9f 93 push r25 |
15da: 8f 93 push r24 |
15dc: 8c ed ldi r24, 0xDC ; 220 |
15de: 90 e0 ldi r25, 0x00 ; 0 |
15e0: 9f 93 push r25 |
15e2: 8f 93 push r24 |
15e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && AnzahlTeilnehmer > 1) AnzahlTeilnehmer--; |
15e8: 0f 90 pop r0 |
15ea: 0f 90 pop r0 |
15ec: 0f 90 pop r0 |
15ee: 0f 90 pop r0 |
15f0: c2 ff sbrs r28, 2 |
15f2: 07 c0 rjmp .+14 ; 0x1602 <Menu+0x13a> |
15f4: 80 91 6c 00 lds r24, 0x006C |
15f8: 82 30 cpi r24, 0x02 ; 2 |
15fa: 18 f0 brcs .+6 ; 0x1602 <Menu+0x13a> |
15fc: 81 50 subi r24, 0x01 ; 1 |
15fe: 80 93 6c 00 sts 0x006C, r24 |
if(key & KEY4 && AnzahlTeilnehmer < 26) AnzahlTeilnehmer++; |
1602: c3 ff sbrs r28, 3 |
1604: 5f c0 rjmp .+190 ; 0x16c4 <Menu+0x1fc> |
1606: 80 91 6c 00 lds r24, 0x006C |
160a: 8a 31 cpi r24, 0x1A ; 26 |
160c: 08 f0 brcs .+2 ; 0x1610 <Menu+0x148> |
160e: 5a c0 rjmp .+180 ; 0x16c4 <Menu+0x1fc> |
1610: 8f 5f subi r24, 0xFF ; 255 |
1612: 80 93 6c 00 sts 0x006C, r24 |
break; |
1616: 56 c0 rjmp .+172 ; 0x16c4 <Menu+0x1fc> |
case 2: |
LCD_printfxy(0,0,"Checksum"); |
1618: 60 e0 ldi r22, 0x00 ; 0 |
161a: 86 2f mov r24, r22 |
161c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1620: 81 ee ldi r24, 0xE1 ; 225 |
1622: 90 e0 ldi r25, 0x00 ; 0 |
1624: 9f 93 push r25 |
1626: 8f 93 push r24 |
1628: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Errors:%5i ",CntCrcError); |
162c: 61 e0 ldi r22, 0x01 ; 1 |
162e: 80 e0 ldi r24, 0x00 ; 0 |
1630: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1634: 0f 90 pop r0 |
1636: 0f 90 pop r0 |
1638: 80 91 99 00 lds r24, 0x0099 |
163c: 90 91 9a 00 lds r25, 0x009A |
1640: 9f 93 push r25 |
1642: 8f 93 push r24 |
1644: 8a ee ldi r24, 0xEA ; 234 |
1646: 90 e0 ldi r25, 0x00 ; 0 |
1648: 9f 93 push r25 |
164a: 8f 93 push r24 |
164c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) CntCrcError = 0; |
1650: 0f 90 pop r0 |
1652: 0f 90 pop r0 |
1654: 0f 90 pop r0 |
1656: 0f 90 pop r0 |
1658: c2 ff sbrs r28, 2 |
165a: 34 c0 rjmp .+104 ; 0x16c4 <Menu+0x1fc> |
165c: 10 92 9a 00 sts 0x009A, r1 |
1660: 10 92 99 00 sts 0x0099, r1 |
break; |
1664: 2f c0 rjmp .+94 ; 0x16c4 <Menu+0x1fc> |
case 3: |
LCD_printfxy(0,0,"Display"); |
1666: 60 e0 ldi r22, 0x00 ; 0 |
1668: 86 2f mov r24, r22 |
166a: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
166e: 86 ef ldi r24, 0xF6 ; 246 |
1670: 90 e0 ldi r25, 0x00 ; 0 |
1672: 9f 93 push r25 |
1674: 8f 93 push r24 |
1676: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Zeilen:%1i ",DisplayZeilen); |
167a: 61 e0 ldi r22, 0x01 ; 1 |
167c: 80 e0 ldi r24, 0x00 ; 0 |
167e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1682: 0f 90 pop r0 |
1684: 0f 90 pop r0 |
1686: 80 91 65 00 lds r24, 0x0065 |
168a: 99 27 eor r25, r25 |
168c: 9f 93 push r25 |
168e: 8f 93 push r24 |
1690: 8e ef ldi r24, 0xFE ; 254 |
1692: 90 e0 ldi r25, 0x00 ; 0 |
1694: 9f 93 push r25 |
1696: 8f 93 push r24 |
1698: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) DisplayZeilen = 4; |
169c: 0f 90 pop r0 |
169e: 0f 90 pop r0 |
16a0: 0f 90 pop r0 |
16a2: 0f 90 pop r0 |
16a4: c2 ff sbrs r28, 2 |
16a6: 03 c0 rjmp .+6 ; 0x16ae <Menu+0x1e6> |
16a8: 84 e0 ldi r24, 0x04 ; 4 |
16aa: 80 93 65 00 sts 0x0065, r24 |
if(key & KEY4) DisplayZeilen = 2; |
16ae: c3 ff sbrs r28, 3 |
16b0: 09 c0 rjmp .+18 ; 0x16c4 <Menu+0x1fc> |
16b2: 82 e0 ldi r24, 0x02 ; 2 |
16b4: 80 93 65 00 sts 0x0065, r24 |
break; |
16b8: 05 c0 rjmp .+10 ; 0x16c4 <Menu+0x1fc> |
/* case 1: |
case 2: |
case 3: |
case 4: |
kanal = MenuePunkt - 1; |
LCD_printfxy(0,0,"Datenkanal:%2i",kanal); |
LCD_printfxy(0,1,"Von:%2i an %2i ",KanalVon[kanal],KanalAn[kanal]); |
if(key & KEY3) KanalVon[kanal]++; |
if(key & KEY4) KanalAn[kanal]++; |
KanalVon[kanal] % MAX_KANAL; |
KanalAn[kanal] % MAX_KANAL; |
break; |
*/ |
/* |
case 1: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Display:%3ims ",IntervallDisplay); |
if(key & KEY3 && IntervallDisplay > 25) IntervallDisplay -= 5; |
if(key & KEY4 && IntervallDisplay < 990) IntervallDisplay += 5; |
break; |
case 2: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Debug:%3ims ",IntervallDebug); |
if(key & KEY3 && IntervallDebug > 25) IntervallDebug -= 5; |
if(key & KEY4 && IntervallDebug < 990) IntervallDebug += 5; |
break; |
case 1: |
LCD_printfxy(0,0,"Time"); |
LCD_printfxy(0,1,"%3i:%02i",Minute,Sekunde); |
if(key & KEY3) if(Minute) Minute--; |
if(key & KEY4) Minute++; |
if(key & KEY5) Sekunde = 0; |
break; |
case 2: |
LCD_printfxy(0,0,"Testvariable"); |
LCD_printfxy(0,1,"TestInt:%5i",TestInt); |
if(key & KEY3) TestInt--; |
if(key & KEY4) TestInt++; |
break; |
case 3: |
LCD_printfxy(0,0,"Testarray"); |
LCD_printfxy(0,1,"Array[%i]=%3i",arr,Array[arr]); |
if(key & KEY5) if(++arr == ARRAYGROESSE) arr = 0; |
if(key & KEY3) Array[arr]--; |
if(key & KEY4) Array[arr]++; |
break; |
case 4: |
LCD_printfxy(0,0,"Infrarot RC5:"); |
LCD_printfxy(0,1,"Adr:%2i Cmd:%3i",(IR_Code >> 8), IR_Code & 0xff); |
break; |
*/ |
default: MaxMenue = MenuePunkt - 1; |
16ba: 21 50 subi r18, 0x01 ; 1 |
16bc: 20 93 7b 00 sts 0x007B, r18 |
MenuePunkt = 0; |
16c0: 10 92 b3 00 sts 0x00B3, r1 |
16c4: df 91 pop r29 |
16c6: cf 91 pop r28 |
16c8: 1f 91 pop r17 |
16ca: 0f 91 pop r16 |
16cc: 08 95 ret |
000016ce <InitIR>: |
// Init IR |
// ************************************************************************ |
void InitIR(void) |
{ |
INT0_ENABLE; // ext. Int0 enable |
16ce: 8b b7 in r24, 0x3b ; 59 |
16d0: 80 64 ori r24, 0x40 ; 64 |
16d2: 8b bf out 0x3b, r24 ; 59 |
CLR_INT0_FLAG; // war |= 0x40 |
16d4: 8a b7 in r24, 0x3a ; 58 |
16d6: 8f 7b andi r24, 0xBF ; 191 |
16d8: 8a bf out 0x3a, r24 ; 58 |
INIT_INT0_FLANKE; |
16da: 85 b7 in r24, 0x35 ; 53 |
16dc: 8c 7f andi r24, 0xFC ; 252 |
16de: 85 bf out 0x35, r24 ; 53 |
16e0: 85 b7 in r24, 0x35 ; 53 |
16e2: 82 60 ori r24, 0x02 ; 2 |
16e4: 85 bf out 0x35, r24 ; 53 |
TIMER0_PRESCALER = 0x04; // Timer0: Clk div 256 |
16e6: 84 e0 ldi r24, 0x04 ; 4 |
16e8: 83 bf out 0x33, r24 ; 51 |
Decodierung_Lauft = 0; |
16ea: 10 92 c9 01 sts 0x01C9, r1 |
New_IR_Code = 0; |
16ee: 10 92 c6 01 sts 0x01C6, r1 |
IR_Code = 0; |
16f2: 10 92 c8 01 sts 0x01C8, r1 |
16f6: 10 92 c7 01 sts 0x01C7, r1 |
16fa: 08 95 ret |
000016fc <__vector_1>: |
} |
// ************************************************************************** |
// * aufgerufen durch: externer Interrupt |
// ************************************************************************** |
// * Die Funktion wird durch einen externen Interrupt aufgerufen. |
// * Sie dient nur zum Starten der Abtastsequenz und zum Triggern auf die |
// * Signalflanken in der Mitte der Daten. |
// ************************************************************************** |
SIGNAL (SIG_INTERRUPT0) |
{ |
16fc: 1f 92 push r1 |
16fe: 0f 92 push r0 |
1700: 0f b6 in r0, 0x3f ; 63 |
1702: 0f 92 push r0 |
1704: 11 24 eor r1, r1 |
1706: 8f 93 push r24 |
// Zeitbasis fuer Timer einstellen |
// Entspricht 1,5 mal einer Bitlaenge |
// PORTB++; |
TCNT0 = -41; |
1708: 87 ed ldi r24, 0xD7 ; 215 |
170a: 82 bf out 0x32, r24 ; 50 |
TIM0_START; // Timer 0 starten, |
170c: 89 b7 in r24, 0x39 ; 57 |
170e: 81 60 ori r24, 0x01 ; 1 |
1710: 89 bf out 0x39, r24 ; 57 |
if(Decodierung_Lauft) INT0_DISABLE; // die erneute Int.-Auslsung soll |
1712: 80 91 c9 01 lds r24, 0x01C9 |
1716: 88 23 and r24, r24 |
1718: 19 f0 breq .+6 ; 0x1720 <__vector_1+0x24> |
171a: 8b b7 in r24, 0x3b ; 59 |
171c: 8f 7b andi r24, 0xBF ; 191 |
171e: 8b bf out 0x3b, r24 ; 59 |
1720: 8f 91 pop r24 |
1722: 0f 90 pop r0 |
1724: 0f be out 0x3f, r0 ; 63 |
1726: 0f 90 pop r0 |
1728: 1f 90 pop r1 |
172a: 18 95 reti |
0000172c <__vector_11>: |
// nur die Timer-Routine erlauben |
} |
// ************************************************************************** |
// * aufgerufen durch: Timerueberlauf Timer 0 |
// ************************************************************************** |
// * Die Funktion wird durch einen Timer0-Interrupt aufgerufen. |
// * Der Timer wird vom ext. Int0 gestartet. |
// * Das Infrarotsignal wird hier abgetastet und die Wertigkeiten der |
// * Bits entsprechend aufaddiert. Das empfangende Zeichen wird in der |
// * globalen Variablen IR_Code gespeichert. Nach Empfang wird das Bit |
// * Neues_Zeichen gesetzt. |
// ************************************************************************** |
SIGNAL (SIG_OVERFLOW0) |
{ |
172c: 1f 92 push r1 |
172e: 0f 92 push r0 |
1730: 0f b6 in r0, 0x3f ; 63 |
1732: 0f 92 push r0 |
1734: 11 24 eor r1, r1 |
1736: 2f 93 push r18 |
1738: 3f 93 push r19 |
173a: 4f 93 push r20 |
173c: 8f 93 push r24 |
173e: 9f 93 push r25 |
static unsigned int Shift,IR_Code_tmp; |
static unsigned char IR_Zaehler=0,IRSperrCounter=0; |
// Reinitialize Timer's 0 value |
TCNT1 = -41; |
1740: 87 ed ldi r24, 0xD7 ; 215 |
1742: 9f ef ldi r25, 0xFF ; 255 |
1744: 9d bd out 0x2d, r25 ; 45 |
1746: 8c bd out 0x2c, r24 ; 44 |
if (IRSperrCounter) |
1748: 80 91 b9 00 lds r24, 0x00B9 |
174c: 88 23 and r24, r24 |
174e: 69 f0 breq .+26 ; 0x176a <__vector_11+0x3e> |
{ IRSperrCounter--; |
1750: 81 50 subi r24, 0x01 ; 1 |
1752: 80 93 b9 00 sts 0x00B9, r24 |
if (!IRSperrCounter) |
1756: 88 23 and r24, r24 |
1758: 09 f0 breq .+2 ; 0x175c <__vector_11+0x30> |
175a: 8a c0 rjmp .+276 ; 0x1870 <__vector_11+0x144> |
{ |
TIM0_STOPP; // Timer0 sperre wird durch ExtInt0 gestartet |
175c: 89 b7 in r24, 0x39 ; 57 |
175e: 8e 7f andi r24, 0xFE ; 254 |
1760: 89 bf out 0x39, r24 ; 57 |
CLR_INT0_FLAG; // IntFlag Loeschen |
1762: 8a b7 in r24, 0x3a ; 58 |
1764: 8f 7b andi r24, 0xBF ; 191 |
1766: 8a bf out 0x3a, r24 ; 58 |
1768: 80 c0 rjmp .+256 ; 0x186a <__vector_11+0x13e> |
INT0_ENABLE; // externen Interrupt wieder freigenben |
} |
} |
else |
{ |
if(IR_Zaehler > 1) |
176a: 40 91 b8 00 lds r20, 0x00B8 |
176e: 42 30 cpi r20, 0x02 ; 2 |
1770: 88 f0 brcs .+34 ; 0x1794 <__vector_11+0x68> |
{ |
Decodierung_Lauft = 1; |
1772: 81 e0 ldi r24, 0x01 ; 1 |
1774: 80 93 c9 01 sts 0x01C9, r24 |
{ |
CLR_INT0_FLAG; // Interrupt Flag loeschen |
1778: 8a b7 in r24, 0x3a ; 58 |
177a: 8f 7b andi r24, 0xBF ; 191 |
177c: 8a bf out 0x3a, r24 ; 58 |
if(IR_PP) INT0_NEG_FLANKE; // naechste fallende Flanke soll Int0 ausloesen |
177e: 82 9b sbis 0x10, 2 ; 16 |
1780: 03 c0 rjmp .+6 ; 0x1788 <__vector_11+0x5c> |
1782: 85 b7 in r24, 0x35 ; 53 |
1784: 8e 7f andi r24, 0xFE ; 254 |
1786: 02 c0 rjmp .+4 ; 0x178c <__vector_11+0x60> |
else INT0_POS_FLANKE; // naechste steigende Flanke soll Int0 ausloesen |
1788: 85 b7 in r24, 0x35 ; 53 |
178a: 81 60 ori r24, 0x01 ; 1 |
178c: 85 bf out 0x35, r24 ; 53 |
INT0_ENABLE; // externen Int frei |
178e: 8b b7 in r24, 0x3b ; 59 |
1790: 80 64 ori r24, 0x40 ; 64 |
1792: 8b bf out 0x3b, r24 ; 59 |
} |
} |
if(!IR_Zaehler) // es beginnt eine neue Abtastung |
1794: 44 23 and r20, r20 |
1796: 59 f4 brne .+22 ; 0x17ae <__vector_11+0x82> |
{ // es handelt sich um das 1. Sync-Bit |
IR_Code_tmp=0; // Merker löschen |
1798: 10 92 b7 00 sts 0x00B7, r1 |
179c: 10 92 b6 00 sts 0x00B6, r1 |
Shift=0x8000; //;8192; // Maske auf MSB |
17a0: 80 e0 ldi r24, 0x00 ; 0 |
17a2: 90 e8 ldi r25, 0x80 ; 128 |
17a4: 90 93 b5 00 sts 0x00B5, r25 |
17a8: 80 93 b4 00 sts 0x00B4, r24 |
17ac: 14 c0 rjmp .+40 ; 0x17d6 <__vector_11+0xaa> |
} |
else |
if(IR_PP==1) // das empfangende Bit ist logisch High |
17ae: 82 9b sbis 0x10, 2 ; 16 |
17b0: 10 c0 rjmp .+32 ; 0x17d2 <__vector_11+0xa6> |
{ if(IR_Zaehler>2) // (IR_Zaehler ist gleich 1 beim 2. Sync-Bit) |
17b2: 43 30 cpi r20, 0x03 ; 3 |
17b4: 70 f0 brcs .+28 ; 0x17d2 <__vector_11+0xa6> |
{ // 2 --> Toggle-Bit (wird übersprungen) |
IR_Code_tmp |= Shift; // entsprechendse Bit setzen |
17b6: 80 91 b6 00 lds r24, 0x00B6 |
17ba: 90 91 b7 00 lds r25, 0x00B7 |
17be: 20 91 b4 00 lds r18, 0x00B4 |
17c2: 30 91 b5 00 lds r19, 0x00B5 |
17c6: 82 2b or r24, r18 |
17c8: 93 2b or r25, r19 |
17ca: 90 93 b7 00 sts 0x00B7, r25 |
17ce: 80 93 b6 00 sts 0x00B6, r24 |
} |
} |
if ((IR_Zaehler < 2) && !(IR_PP==1)) // startbits überprüfen |
17d2: 42 30 cpi r20, 0x02 ; 2 |
17d4: 20 f4 brcc .+8 ; 0x17de <__vector_11+0xb2> |
17d6: 82 99 sbic 0x10, 2 ; 16 |
17d8: 02 c0 rjmp .+4 ; 0x17de <__vector_11+0xb2> |
{ |
IR_Zaehler = 0; |
17da: 10 92 b8 00 sts 0x00B8, r1 |
} |
Shift >>=1; // Shiftregister um 1 nach rechts schieben |
17de: 80 91 b4 00 lds r24, 0x00B4 |
17e2: 90 91 b5 00 lds r25, 0x00B5 |
17e6: 96 95 lsr r25 |
17e8: 87 95 ror r24 |
17ea: 90 93 b5 00 sts 0x00B5, r25 |
17ee: 80 93 b4 00 sts 0x00B4, r24 |
// (für das nächste empf. Bit |
if (Shift == 128) Shift = 32; // Adresse ins HighByte, Kommando ins LowByte |
17f2: 80 38 cpi r24, 0x80 ; 128 |
17f4: 91 05 cpc r25, r1 |
17f6: 31 f4 brne .+12 ; 0x1804 <__vector_11+0xd8> |
17f8: 80 e2 ldi r24, 0x20 ; 32 |
17fa: 90 e0 ldi r25, 0x00 ; 0 |
17fc: 90 93 b5 00 sts 0x00B5, r25 |
1800: 80 93 b4 00 sts 0x00B4, r24 |
if(IR_Zaehler++==15) // Das IR-Wort wurde vollstaendig abgetastet |
1804: 80 91 b8 00 lds r24, 0x00B8 |
1808: 8f 5f subi r24, 0xFF ; 255 |
180a: 80 93 b8 00 sts 0x00B8, r24 |
180e: 80 31 cpi r24, 0x10 ; 16 |
1810: 79 f5 brne .+94 ; 0x1870 <__vector_11+0x144> |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
1812: 8a b7 in r24, 0x3a ; 58 |
1814: 8f 7b andi r24, 0xBF ; 191 |
1816: 8a bf out 0x3a, r24 ; 58 |
INT0_NEG_FLANKE; // fallende Flanke |
1818: 85 b7 in r24, 0x35 ; 53 |
181a: 8e 7f andi r24, 0xFE ; 254 |
181c: 85 bf out 0x35, r24 ; 53 |
IR_Zaehler = 0; |
181e: 10 92 b8 00 sts 0x00B8, r1 |
Decodierung_Lauft=0; |
1822: 10 92 c9 01 sts 0x01C9, r1 |
/* if ((HIGH(IR_Code_tmp)==ALLOWED1)|| (HIGH(IR_Code_tmp)==ALLOWED2)|| |
(HIGH(IR_Code_tmp)==ALLOWED3)||(HIGH(IR_Code_tmp)==ALLOWED4)|| |
(HIGH(IR_Code_tmp)==ALLOWED5) ) |
if ((HIGH(IR_Code_tmp)< 10))*/ |
if ((HIGH(IR_Code_tmp)< 10 ) && (LOW(IR_Code_tmp)!=0x3F) ) |
1826: 80 91 b7 00 lds r24, 0x00B7 |
182a: 8a 30 cpi r24, 0x0A ; 10 |
182c: d8 f4 brcc .+54 ; 0x1864 <__vector_11+0x138> |
182e: 80 91 b6 00 lds r24, 0x00B6 |
1832: 8f 33 cpi r24, 0x3F ; 63 |
1834: b9 f0 breq .+46 ; 0x1864 <__vector_11+0x138> |
{ // nur erlaubt Adressen werden akzepetiert |
IR_Code=IR_Code_tmp; // IR-Wort in die globale Variable schreiben |
1836: 80 91 b6 00 lds r24, 0x00B6 |
183a: 90 91 b7 00 lds r25, 0x00B7 |
183e: 90 93 c8 01 sts 0x01C8, r25 |
1842: 80 93 c7 01 sts 0x01C7, r24 |
New_IR_Code = 1; // Es ist ein neues Zeichen eingetragen worden |
1846: 81 e0 ldi r24, 0x01 ; 1 |
1848: 80 93 c6 01 sts 0x01C6, r24 |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
184c: 84 e0 ldi r24, 0x04 ; 4 |
184e: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
1852: 8b b7 in r24, 0x3b ; 59 |
1854: 80 64 ori r24, 0x40 ; 64 |
1856: 8b bf out 0x3b, r24 ; 59 |
LoescheIrCodeTimer = 250; |
1858: 8a ef ldi r24, 0xFA ; 250 |
185a: 90 e0 ldi r25, 0x00 ; 0 |
185c: 90 93 7d 00 sts 0x007D, r25 |
1860: 80 93 7c 00 sts 0x007C, r24 |
} |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
1864: 84 e0 ldi r24, 0x04 ; 4 |
1866: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
186a: 8b b7 in r24, 0x3b ; 59 |
186c: 80 64 ori r24, 0x40 ; 64 |
186e: 8b bf out 0x3b, r24 ; 59 |
1870: 9f 91 pop r25 |
1872: 8f 91 pop r24 |
1874: 4f 91 pop r20 |
1876: 3f 91 pop r19 |
1878: 2f 91 pop r18 |
187a: 0f 90 pop r0 |
187c: 0f be out 0x3f, r0 ; 63 |
187e: 0f 90 pop r0 |
1880: 1f 90 pop r1 |
1882: 18 95 reti |
00001884 <ADC_Init>: |
// --------------------------------------------------------------------------------------- |
void ADC_Init(void) |
{ |
ADMUX = 0; |
1884: 17 b8 out 0x07, r1 ; 7 |
ADCSRA = 0x86; |
1886: 86 e8 ldi r24, 0x86 ; 134 |
1888: 86 b9 out 0x06, r24 ; 6 |
188a: 08 95 ret |
0000188c <ReadADC>: |
} |
// --------------------------------------------------------------------------------------- |
unsigned int ReadADC(unsigned char adc_input) |
{ |
ADMUX = adc_input; |
188c: 87 b9 out 0x07, r24 ; 7 |
ADCSRA |= 0x40; |
188e: 36 9a sbi 0x06, 6 ; 6 |
//Delay_ms(10); |
while ((ADCSRA & 0x10) == 0); |
1890: 34 9b sbis 0x06, 4 ; 6 |
1892: fe cf rjmp .-4 ; 0x1890 <ReadADC+0x4> |
ADCSRA |= 0x10; |
1894: 34 9a sbi 0x06, 4 ; 6 |
return ADCW; // read ad and calc. temp. |
1896: 84 b1 in r24, 0x04 ; 4 |
1898: 95 b1 in r25, 0x05 ; 5 |
189a: 08 95 ret |
0000189c <GetAnalogWerte>: |
} |
void GetAnalogWerte(void) |
{ |
AnalogWerte[0] = ReadADC(0); |
189c: 80 e0 ldi r24, 0x00 ; 0 |
189e: 0e 94 46 0c call 0x188c <ReadADC> |
18a2: 90 93 cb 01 sts 0x01CB, r25 |
18a6: 80 93 ca 01 sts 0x01CA, r24 |
AnalogWerte[1] = ReadADC(1); |
18aa: 81 e0 ldi r24, 0x01 ; 1 |
18ac: 0e 94 46 0c call 0x188c <ReadADC> |
18b0: 90 93 cd 01 sts 0x01CD, r25 |
18b4: 80 93 cc 01 sts 0x01CC, r24 |
AnalogWerte[2] = ReadADC(2); |
18b8: 82 e0 ldi r24, 0x02 ; 2 |
18ba: 0e 94 46 0c call 0x188c <ReadADC> |
18be: 90 93 cf 01 sts 0x01CF, r25 |
18c2: 80 93 ce 01 sts 0x01CE, r24 |
18c6: 08 95 ret |
000018c8 <memchr>: |
18c8: fc 01 movw r30, r24 |
18ca: 41 50 subi r20, 0x01 ; 1 |
18cc: 50 40 sbci r21, 0x00 ; 0 |
18ce: 30 f0 brcs .+12 ; 0x18dc <memchr+0x14> |
18d0: 01 90 ld r0, Z+ |
18d2: 06 16 cp r0, r22 |
18d4: d1 f7 brne .-12 ; 0x18ca <memchr+0x2> |
18d6: 31 97 sbiw r30, 0x01 ; 1 |
18d8: cf 01 movw r24, r30 |
18da: 08 95 ret |
18dc: 88 27 eor r24, r24 |
18de: 99 27 eor r25, r25 |
18e0: 08 95 ret |
000018e2 <fdevopen>: |
18e2: 0f 93 push r16 |
18e4: 1f 93 push r17 |
18e6: cf 93 push r28 |
18e8: df 93 push r29 |
18ea: 8c 01 movw r16, r24 |
18ec: eb 01 movw r28, r22 |
18ee: 00 97 sbiw r24, 0x00 ; 0 |
18f0: 11 f4 brne .+4 ; 0x18f6 <fdevopen+0x14> |
18f2: 67 2b or r22, r23 |
18f4: c1 f1 breq .+112 ; 0x1966 <fdevopen+0x84> |
18f6: 6e e0 ldi r22, 0x0E ; 14 |
18f8: 70 e0 ldi r23, 0x00 ; 0 |
18fa: 81 e0 ldi r24, 0x01 ; 1 |
18fc: 90 e0 ldi r25, 0x00 ; 0 |
18fe: 0e 94 b8 0c call 0x1970 <calloc> |
1902: fc 01 movw r30, r24 |
1904: 89 2b or r24, r25 |
1906: 71 f1 breq .+92 ; 0x1964 <fdevopen+0x82> |
1908: 80 e8 ldi r24, 0x80 ; 128 |
190a: 83 83 std Z+3, r24 ; 0x03 |
190c: 20 97 sbiw r28, 0x00 ; 0 |
190e: 71 f0 breq .+28 ; 0x192c <fdevopen+0x4a> |
1910: d3 87 std Z+11, r29 ; 0x0b |
1912: c2 87 std Z+10, r28 ; 0x0a |
1914: 81 e8 ldi r24, 0x81 ; 129 |
1916: 83 83 std Z+3, r24 ; 0x03 |
1918: 80 91 d0 01 lds r24, 0x01D0 |
191c: 90 91 d1 01 lds r25, 0x01D1 |
1920: 89 2b or r24, r25 |
1922: 21 f4 brne .+8 ; 0x192c <fdevopen+0x4a> |
1924: f0 93 d1 01 sts 0x01D1, r31 |
1928: e0 93 d0 01 sts 0x01D0, r30 |
192c: 01 15 cp r16, r1 |
192e: 11 05 cpc r17, r1 |
1930: c9 f0 breq .+50 ; 0x1964 <fdevopen+0x82> |
1932: 11 87 std Z+9, r17 ; 0x09 |
1934: 00 87 std Z+8, r16 ; 0x08 |
1936: 83 81 ldd r24, Z+3 ; 0x03 |
1938: 82 60 ori r24, 0x02 ; 2 |
193a: 83 83 std Z+3, r24 ; 0x03 |
193c: 80 91 d2 01 lds r24, 0x01D2 |
1940: 90 91 d3 01 lds r25, 0x01D3 |
1944: 89 2b or r24, r25 |
1946: 71 f4 brne .+28 ; 0x1964 <fdevopen+0x82> |
1948: f0 93 d3 01 sts 0x01D3, r31 |
194c: e0 93 d2 01 sts 0x01D2, r30 |
1950: 80 91 d4 01 lds r24, 0x01D4 |
1954: 90 91 d5 01 lds r25, 0x01D5 |
1958: 89 2b or r24, r25 |
195a: 21 f4 brne .+8 ; 0x1964 <fdevopen+0x82> |
195c: f0 93 d5 01 sts 0x01D5, r31 |
1960: e0 93 d4 01 sts 0x01D4, r30 |
1964: cf 01 movw r24, r30 |
1966: df 91 pop r29 |
1968: cf 91 pop r28 |
196a: 1f 91 pop r17 |
196c: 0f 91 pop r16 |
196e: 08 95 ret |
00001970 <calloc>: |
1970: 0f 93 push r16 |
1972: 1f 93 push r17 |
1974: cf 93 push r28 |
1976: df 93 push r29 |
1978: 86 9f mul r24, r22 |
197a: 80 01 movw r16, r0 |
197c: 87 9f mul r24, r23 |
197e: 10 0d add r17, r0 |
1980: 96 9f mul r25, r22 |
1982: 10 0d add r17, r0 |
1984: 11 24 eor r1, r1 |
1986: c8 01 movw r24, r16 |
1988: 0e 94 d4 0c call 0x19a8 <malloc> |
198c: ec 01 movw r28, r24 |
198e: 00 97 sbiw r24, 0x00 ; 0 |
1990: 29 f0 breq .+10 ; 0x199c <calloc+0x2c> |
1992: a8 01 movw r20, r16 |
1994: 60 e0 ldi r22, 0x00 ; 0 |
1996: 70 e0 ldi r23, 0x00 ; 0 |
1998: 0e 94 ca 0d call 0x1b94 <memset> |
199c: ce 01 movw r24, r28 |
199e: df 91 pop r29 |
19a0: cf 91 pop r28 |
19a2: 1f 91 pop r17 |
19a4: 0f 91 pop r16 |
19a6: 08 95 ret |
000019a8 <malloc>: |
19a8: cf 93 push r28 |
19aa: df 93 push r29 |
19ac: ac 01 movw r20, r24 |
19ae: 02 97 sbiw r24, 0x02 ; 2 |
19b0: 10 f4 brcc .+4 ; 0x19b6 <malloc+0xe> |
19b2: 42 e0 ldi r20, 0x02 ; 2 |
19b4: 50 e0 ldi r21, 0x00 ; 0 |
19b6: 20 e0 ldi r18, 0x00 ; 0 |
19b8: 30 e0 ldi r19, 0x00 ; 0 |
19ba: a0 91 d8 01 lds r26, 0x01D8 |
19be: b0 91 d9 01 lds r27, 0x01D9 |
19c2: bd 01 movw r22, r26 |
19c4: f9 01 movw r30, r18 |
19c6: 10 97 sbiw r26, 0x00 ; 0 |
19c8: 09 f4 brne .+2 ; 0x19cc <malloc+0x24> |
19ca: 4c c0 rjmp .+152 ; 0x1a64 <malloc+0xbc> |
19cc: 8d 91 ld r24, X+ |
19ce: 9c 91 ld r25, X |
19d0: 11 97 sbiw r26, 0x01 ; 1 |
19d2: 84 17 cp r24, r20 |
19d4: 95 07 cpc r25, r21 |
19d6: 31 f1 breq .+76 ; 0x1a24 <malloc+0x7c> |
19d8: 48 17 cp r20, r24 |
19da: 59 07 cpc r21, r25 |
19dc: 38 f4 brcc .+14 ; 0x19ec <malloc+0x44> |
19de: 21 15 cp r18, r1 |
19e0: 31 05 cpc r19, r1 |
19e2: 19 f0 breq .+6 ; 0x19ea <malloc+0x42> |
19e4: 82 17 cp r24, r18 |
19e6: 93 07 cpc r25, r19 |
19e8: 08 f4 brcc .+2 ; 0x19ec <malloc+0x44> |
19ea: 9c 01 movw r18, r24 |
19ec: fd 01 movw r30, r26 |
19ee: a2 81 ldd r26, Z+2 ; 0x02 |
19f0: b3 81 ldd r27, Z+3 ; 0x03 |
19f2: 10 97 sbiw r26, 0x00 ; 0 |
19f4: 59 f7 brne .-42 ; 0x19cc <malloc+0x24> |
19f6: 21 15 cp r18, r1 |
19f8: 31 05 cpc r19, r1 |
19fa: a1 f1 breq .+104 ; 0x1a64 <malloc+0xbc> |
19fc: c9 01 movw r24, r18 |
19fe: 84 1b sub r24, r20 |
1a00: 95 0b sbc r25, r21 |
1a02: 04 97 sbiw r24, 0x04 ; 4 |
1a04: 08 f4 brcc .+2 ; 0x1a08 <malloc+0x60> |
1a06: a9 01 movw r20, r18 |
1a08: db 01 movw r26, r22 |
1a0a: e0 e0 ldi r30, 0x00 ; 0 |
1a0c: f0 e0 ldi r31, 0x00 ; 0 |
1a0e: 10 97 sbiw r26, 0x00 ; 0 |
1a10: 49 f1 breq .+82 ; 0x1a64 <malloc+0xbc> |
1a12: 8d 91 ld r24, X+ |
1a14: 9c 91 ld r25, X |
1a16: 11 97 sbiw r26, 0x01 ; 1 |
1a18: 82 17 cp r24, r18 |
1a1a: 93 07 cpc r25, r19 |
1a1c: f9 f4 brne .+62 ; 0x1a5c <malloc+0xb4> |
1a1e: 42 17 cp r20, r18 |
1a20: 53 07 cpc r21, r19 |
1a22: 79 f4 brne .+30 ; 0x1a42 <malloc+0x9a> |
1a24: ed 01 movw r28, r26 |
1a26: 8a 81 ldd r24, Y+2 ; 0x02 |
1a28: 9b 81 ldd r25, Y+3 ; 0x03 |
1a2a: 30 97 sbiw r30, 0x00 ; 0 |
1a2c: 19 f0 breq .+6 ; 0x1a34 <malloc+0x8c> |
1a2e: 93 83 std Z+3, r25 ; 0x03 |
1a30: 82 83 std Z+2, r24 ; 0x02 |
1a32: 04 c0 rjmp .+8 ; 0x1a3c <malloc+0x94> |
1a34: 90 93 d9 01 sts 0x01D9, r25 |
1a38: 80 93 d8 01 sts 0x01D8, r24 |
1a3c: cd 01 movw r24, r26 |
1a3e: 02 96 adiw r24, 0x02 ; 2 |
1a40: 4a c0 rjmp .+148 ; 0x1ad6 <malloc+0x12e> |
1a42: 24 1b sub r18, r20 |
1a44: 35 0b sbc r19, r21 |
1a46: fd 01 movw r30, r26 |
1a48: e2 0f add r30, r18 |
1a4a: f3 1f adc r31, r19 |
1a4c: 41 93 st Z+, r20 |
1a4e: 51 93 st Z+, r21 |
1a50: 22 50 subi r18, 0x02 ; 2 |
1a52: 30 40 sbci r19, 0x00 ; 0 |
1a54: 2d 93 st X+, r18 |
1a56: 3c 93 st X, r19 |
1a58: cf 01 movw r24, r30 |
1a5a: 3d c0 rjmp .+122 ; 0x1ad6 <malloc+0x12e> |
1a5c: fd 01 movw r30, r26 |
1a5e: a2 81 ldd r26, Z+2 ; 0x02 |
1a60: b3 81 ldd r27, Z+3 ; 0x03 |
1a62: d5 cf rjmp .-86 ; 0x1a0e <malloc+0x66> |
1a64: 80 91 d6 01 lds r24, 0x01D6 |
1a68: 90 91 d7 01 lds r25, 0x01D7 |
1a6c: 89 2b or r24, r25 |
1a6e: 41 f4 brne .+16 ; 0x1a80 <malloc+0xd8> |
1a70: 80 91 80 00 lds r24, 0x0080 |
1a74: 90 91 81 00 lds r25, 0x0081 |
1a78: 90 93 d7 01 sts 0x01D7, r25 |
1a7c: 80 93 d6 01 sts 0x01D6, r24 |
1a80: e0 91 7e 00 lds r30, 0x007E |
1a84: f0 91 7f 00 lds r31, 0x007F |
1a88: 30 97 sbiw r30, 0x00 ; 0 |
1a8a: 41 f4 brne .+16 ; 0x1a9c <malloc+0xf4> |
1a8c: ed b7 in r30, 0x3d ; 61 |
1a8e: fe b7 in r31, 0x3e ; 62 |
1a90: 80 91 82 00 lds r24, 0x0082 |
1a94: 90 91 83 00 lds r25, 0x0083 |
1a98: e8 1b sub r30, r24 |
1a9a: f9 0b sbc r31, r25 |
1a9c: a0 91 d6 01 lds r26, 0x01D6 |
1aa0: b0 91 d7 01 lds r27, 0x01D7 |
1aa4: 9f 01 movw r18, r30 |
1aa6: 2a 1b sub r18, r26 |
1aa8: 3b 0b sbc r19, r27 |
1aaa: 24 17 cp r18, r20 |
1aac: 35 07 cpc r19, r21 |
1aae: 88 f0 brcs .+34 ; 0x1ad2 <malloc+0x12a> |
1ab0: ca 01 movw r24, r20 |
1ab2: 02 96 adiw r24, 0x02 ; 2 |
1ab4: 28 17 cp r18, r24 |
1ab6: 39 07 cpc r19, r25 |
1ab8: 60 f0 brcs .+24 ; 0x1ad2 <malloc+0x12a> |
1aba: cd 01 movw r24, r26 |
1abc: 84 0f add r24, r20 |
1abe: 95 1f adc r25, r21 |
1ac0: 02 96 adiw r24, 0x02 ; 2 |
1ac2: 90 93 d7 01 sts 0x01D7, r25 |
1ac6: 80 93 d6 01 sts 0x01D6, r24 |
1aca: 4d 93 st X+, r20 |
1acc: 5d 93 st X+, r21 |
1ace: cd 01 movw r24, r26 |
1ad0: 02 c0 rjmp .+4 ; 0x1ad6 <malloc+0x12e> |
1ad2: 80 e0 ldi r24, 0x00 ; 0 |
1ad4: 90 e0 ldi r25, 0x00 ; 0 |
1ad6: df 91 pop r29 |
1ad8: cf 91 pop r28 |
1ada: 08 95 ret |
00001adc <free>: |
1adc: cf 93 push r28 |
1ade: df 93 push r29 |
1ae0: 00 97 sbiw r24, 0x00 ; 0 |
1ae2: 09 f4 brne .+2 ; 0x1ae6 <free+0xa> |
1ae4: 54 c0 rjmp .+168 ; 0x1b8e <free+0xb2> |
1ae6: dc 01 movw r26, r24 |
1ae8: 12 97 sbiw r26, 0x02 ; 2 |
1aea: ed 01 movw r28, r26 |
1aec: 1b 82 std Y+3, r1 ; 0x03 |
1aee: 1a 82 std Y+2, r1 ; 0x02 |
1af0: 80 91 d8 01 lds r24, 0x01D8 |
1af4: 90 91 d9 01 lds r25, 0x01D9 |
1af8: 00 97 sbiw r24, 0x00 ; 0 |
1afa: 21 f1 breq .+72 ; 0x1b44 <free+0x68> |
1afc: fc 01 movw r30, r24 |
1afe: 40 e0 ldi r20, 0x00 ; 0 |
1b00: 50 e0 ldi r21, 0x00 ; 0 |
1b02: ea 17 cp r30, r26 |
1b04: fb 07 cpc r31, r27 |
1b06: 18 f1 brcs .+70 ; 0x1b4e <free+0x72> |
1b08: ed 01 movw r28, r26 |
1b0a: fb 83 std Y+3, r31 ; 0x03 |
1b0c: ea 83 std Y+2, r30 ; 0x02 |
1b0e: 2d 91 ld r18, X+ |
1b10: 3c 91 ld r19, X |
1b12: 11 97 sbiw r26, 0x01 ; 1 |
1b14: c2 0f add r28, r18 |
1b16: d3 1f adc r29, r19 |
1b18: ce 01 movw r24, r28 |
1b1a: 02 96 adiw r24, 0x02 ; 2 |
1b1c: 8e 17 cp r24, r30 |
1b1e: 9f 07 cpc r25, r31 |
1b20: 71 f4 brne .+28 ; 0x1b3e <free+0x62> |
1b22: 8a 81 ldd r24, Y+2 ; 0x02 |
1b24: 9b 81 ldd r25, Y+3 ; 0x03 |
1b26: 28 0f add r18, r24 |
1b28: 39 1f adc r19, r25 |
1b2a: 2e 5f subi r18, 0xFE ; 254 |
1b2c: 3f 4f sbci r19, 0xFF ; 255 |
1b2e: 11 96 adiw r26, 0x01 ; 1 |
1b30: 3c 93 st X, r19 |
1b32: 2e 93 st -X, r18 |
1b34: 82 81 ldd r24, Z+2 ; 0x02 |
1b36: 93 81 ldd r25, Z+3 ; 0x03 |
1b38: fd 01 movw r30, r26 |
1b3a: 93 83 std Z+3, r25 ; 0x03 |
1b3c: 82 83 std Z+2, r24 ; 0x02 |
1b3e: 41 15 cp r20, r1 |
1b40: 51 05 cpc r21, r1 |
1b42: 59 f4 brne .+22 ; 0x1b5a <free+0x7e> |
1b44: b0 93 d9 01 sts 0x01D9, r27 |
1b48: a0 93 d8 01 sts 0x01D8, r26 |
1b4c: 20 c0 rjmp .+64 ; 0x1b8e <free+0xb2> |
1b4e: af 01 movw r20, r30 |
1b50: 02 80 ldd r0, Z+2 ; 0x02 |
1b52: f3 81 ldd r31, Z+3 ; 0x03 |
1b54: e0 2d mov r30, r0 |
1b56: 30 97 sbiw r30, 0x00 ; 0 |
1b58: a1 f6 brne .-88 ; 0x1b02 <free+0x26> |
1b5a: ea 01 movw r28, r20 |
1b5c: bb 83 std Y+3, r27 ; 0x03 |
1b5e: aa 83 std Y+2, r26 ; 0x02 |
1b60: ca 01 movw r24, r20 |
1b62: 02 96 adiw r24, 0x02 ; 2 |
1b64: 28 81 ld r18, Y |
1b66: 39 81 ldd r19, Y+1 ; 0x01 |
1b68: 82 0f add r24, r18 |
1b6a: 93 1f adc r25, r19 |
1b6c: 8a 17 cp r24, r26 |
1b6e: 9b 07 cpc r25, r27 |
1b70: 71 f4 brne .+28 ; 0x1b8e <free+0xb2> |
1b72: 8d 91 ld r24, X+ |
1b74: 9c 91 ld r25, X |
1b76: 11 97 sbiw r26, 0x01 ; 1 |
1b78: 28 0f add r18, r24 |
1b7a: 39 1f adc r19, r25 |
1b7c: 2e 5f subi r18, 0xFE ; 254 |
1b7e: 3f 4f sbci r19, 0xFF ; 255 |
1b80: 39 83 std Y+1, r19 ; 0x01 |
1b82: 28 83 st Y, r18 |
1b84: fd 01 movw r30, r26 |
1b86: 82 81 ldd r24, Z+2 ; 0x02 |
1b88: 93 81 ldd r25, Z+3 ; 0x03 |
1b8a: 9b 83 std Y+3, r25 ; 0x03 |
1b8c: 8a 83 std Y+2, r24 ; 0x02 |
1b8e: df 91 pop r29 |
1b90: cf 91 pop r28 |
1b92: 08 95 ret |
00001b94 <memset>: |
1b94: dc 01 movw r26, r24 |
1b96: 40 ff sbrs r20, 0 |
1b98: 03 c0 rjmp .+6 ; 0x1ba0 <memset+0xc> |
1b9a: 01 c0 rjmp .+2 ; 0x1b9e <memset+0xa> |
1b9c: 6d 93 st X+, r22 |
1b9e: 6d 93 st X+, r22 |
1ba0: 42 50 subi r20, 0x02 ; 2 |
1ba2: 50 40 sbci r21, 0x00 ; 0 |
1ba4: d8 f7 brcc .-10 ; 0x1b9c <memset+0x8> |
1ba6: 08 95 ret |
00001ba8 <__udivmodsi4>: |
1ba8: a1 e2 ldi r26, 0x21 ; 33 |
1baa: 1a 2e mov r1, r26 |
1bac: aa 1b sub r26, r26 |
1bae: bb 1b sub r27, r27 |
1bb0: fd 01 movw r30, r26 |
1bb2: 0d c0 rjmp .+26 ; 0x1bce <__udivmodsi4_ep> |
00001bb4 <__udivmodsi4_loop>: |
1bb4: aa 1f adc r26, r26 |
1bb6: bb 1f adc r27, r27 |
1bb8: ee 1f adc r30, r30 |
1bba: ff 1f adc r31, r31 |
1bbc: a2 17 cp r26, r18 |
1bbe: b3 07 cpc r27, r19 |
1bc0: e4 07 cpc r30, r20 |
1bc2: f5 07 cpc r31, r21 |
1bc4: 20 f0 brcs .+8 ; 0x1bce <__udivmodsi4_ep> |
1bc6: a2 1b sub r26, r18 |
1bc8: b3 0b sbc r27, r19 |
1bca: e4 0b sbc r30, r20 |
1bcc: f5 0b sbc r31, r21 |
00001bce <__udivmodsi4_ep>: |
1bce: 66 1f adc r22, r22 |
1bd0: 77 1f adc r23, r23 |
1bd2: 88 1f adc r24, r24 |
1bd4: 99 1f adc r25, r25 |
1bd6: 1a 94 dec r1 |
1bd8: 69 f7 brne .-38 ; 0x1bb4 <__udivmodsi4_loop> |
1bda: 60 95 com r22 |
1bdc: 70 95 com r23 |
1bde: 80 95 com r24 |
1be0: 90 95 com r25 |
1be2: 9b 01 movw r18, r22 |
1be4: ac 01 movw r20, r24 |
1be6: bd 01 movw r22, r26 |
1be8: cf 01 movw r24, r30 |
1bea: 08 95 ret |
/tags/V0.36/main.map |
---|
0,0 → 1,764 |
Archive member included because of file (symbol) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o (__udivmodsi4) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
main.o (__do_copy_data) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
main.o (__do_clear_bss) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o (memchr) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o (fdevopen) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (__iob) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (calloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (malloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (memset) |
Allocating common symbols |
Common symbol size file |
SendeBuffer 0x64 uart.o |
Debug_Timer 0x2 main.o |
Debug_Display_Timer |
0x2 main.o |
__brkval 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
DebugIn 0xb main.o |
VersionInfo 0xa main.o |
New_IR_Code 0x1 ir.o |
RxdBuffer 0x64 uart.o |
AnalogWerte 0x6 analog.o |
IR_Code 0x2 ir.o |
KanalVon 0x8 menu.o |
Decodierung_Lauft 0x1 ir.o |
DebugOut 0x1a main.o |
KanalAn 0x8 menu.o |
__flp 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
PollDisplay 0x1 main.o |
__iob 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
Memory Configuration |
Name Origin Length Attributes |
text 0x00000000 0x00020000 xr |
data 0x00800060 0x0000ffa0 rw !x |
eeprom 0x00810000 0x00010000 rw !x |
*default* 0x00000000 0xffffffff |
Linker script and memory map |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
LOAD main.o |
LOAD uart.o |
LOAD lcd.o |
LOAD printf_P.o |
LOAD timer0.o |
LOAD keyboard.o |
LOAD menu.o |
LOAD ir.o |
LOAD analog.o |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libm.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
.hash |
*(.hash) |
.dynsym |
*(.dynsym) |
.dynstr |
*(.dynstr) |
.gnu.version |
*(.gnu.version) |
.gnu.version_d |
*(.gnu.version_d) |
.gnu.version_r |
*(.gnu.version_r) |
.rel.init |
*(.rel.init) |
.rela.init |
*(.rela.init) |
.rel.text |
*(.rel.text) |
*(.rel.text.*) |
*(.rel.gnu.linkonce.t*) |
.rela.text |
*(.rela.text) |
*(.rela.text.*) |
*(.rela.gnu.linkonce.t*) |
.rel.fini |
*(.rel.fini) |
.rela.fini |
*(.rela.fini) |
.rel.rodata |
*(.rel.rodata) |
*(.rel.rodata.*) |
*(.rel.gnu.linkonce.r*) |
.rela.rodata |
*(.rela.rodata) |
*(.rela.rodata.*) |
*(.rela.gnu.linkonce.r*) |
.rel.data |
*(.rel.data) |
*(.rel.data.*) |
*(.rel.gnu.linkonce.d*) |
.rela.data |
*(.rela.data) |
*(.rela.data.*) |
*(.rela.gnu.linkonce.d*) |
.rel.ctors |
*(.rel.ctors) |
.rela.ctors |
*(.rela.ctors) |
.rel.dtors |
*(.rel.dtors) |
.rela.dtors |
*(.rela.dtors) |
.rel.got |
*(.rel.got) |
.rela.got |
*(.rela.got) |
.rel.bss |
*(.rel.bss) |
.rela.bss |
*(.rela.bss) |
.rel.plt |
*(.rel.plt) |
.rela.plt |
*(.rela.plt) |
.text 0x00000000 0x1c18 |
*(.vectors) |
.vectors 0x00000000 0x54 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000000 __vectors |
0x00000000 __vector_default |
0x00000054 __ctors_start = . |
*(.ctors) |
0x00000054 __ctors_end = . |
0x00000054 __dtors_start = . |
*(.dtors) |
0x00000054 __dtors_end = . |
*(.progmem.gcc*) |
*(.progmem*) |
.progmem.data 0x00000054 0x54 main.o |
.progmem.data 0x000000a8 0xc uart.o |
.progmem.data 0x000000b4 0x56 menu.o |
0x0000010a . = ALIGN (0x2) |
*(.init0) |
*(.init1) |
*(.init2) |
.init2 0x0000010a 0xc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.init3) |
*(.init4) |
.init4 0x00000116 0x16 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
0x00000116 __do_copy_data |
.init4 0x0000012c 0x10 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
0x0000012c __do_clear_bss |
*(.init5) |
*(.init6) |
*(.init7) |
*(.init8) |
*(.init9) |
.init9 0x0000013c 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.text) |
.text 0x00000140 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000140 __vector_12 |
0x00000140 __bad_interrupt |
0x00000140 __vector_6 |
0x00000140 __vector_3 |
0x00000140 __vector_17 |
0x00000140 __vector_19 |
0x00000140 __vector_7 |
0x00000140 __vector_5 |
0x00000140 __vector_4 |
0x00000140 __vector_2 |
0x00000140 __vector_8 |
0x00000140 __vector_14 |
0x00000140 __vector_10 |
0x00000140 __vector_16 |
0x00000140 __vector_18 |
0x00000140 __vector_20 |
.text 0x00000144 0x282 main.o |
0x000001b4 Init |
0x00000156 Sekundentakt |
0x000001ca main |
0x00000144 Sekundentakt_Init |
.text 0x000003c6 0x7e6 uart.o |
0x000009f8 WriteProgramData |
0x00000a16 SendeRemoteTasten |
0x000009fa UART_Init |
0x00000430 __vector_13 |
0x0000080a BearbeiteRxDaten |
0x00000abe ClearIntervalle |
0x00000a76 SendIntervalle |
0x000005de AddCRC |
0x00000b04 DatenUebertragung |
0x00000732 Decode64 |
0x000003c6 __vector_15 |
0x0000064a SendOutData |
0x000009dc uart_putchar |
.text 0x00000bac 0x1b2 lcd.o |
0x00000cc4 LCD_Gotoxy |
0x00000c4e my_pput |
0x00000c08 _lcd_write_4bit |
0x00000bcc _short_delay |
0x00000c26 lcd_write_byte |
0x00000bdc _lcd_write_command |
0x00000c58 LCD_Init |
0x00000d48 LCD_Putchar |
0x00000d12 LCD_Write |
0x00000bac _long_delay |
.text 0x00000d5e 0x58a printf_P.o |
0x00000de0 _printf_P |
0x00000dc8 PAD_0 |
0x00000d86 PRINTP |
0x00000d5e PRINT |
0x00000db0 PAD_SP |
.text 0x000012e8 0xd6 timer0.o |
0x0000137c SetDelay |
0x0000138e CheckDelay |
0x000013a4 Delay_ms |
0x000012e8 __vector_9 |
0x00001368 Timer1_Init |
.text 0x000013be 0x136 keyboard.o |
0x000014da GetKeyboard2 |
0x000013be Keyboard_Init |
0x000013d0 GetKeyboard |
.text 0x000014f4 0x206 menu.o |
0x000014f4 Menu |
.text 0x000016fa 0x1b6 ir.o |
0x00001728 __vector_1 |
0x00001758 __vector_11 |
0x000016fa InitIR |
.text 0x000018b0 0x44 analog.o |
0x000018c8 GetAnalogWerte |
0x000018b8 ReadADC |
0x000018b0 ADC_Init |
.text 0x000018f4 0x1a C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
0x000018f4 memchr |
.text 0x0000190e 0x8e C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
0x0000190e fdevopen |
.text 0x0000199c 0x38 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
0x0000199c calloc |
.text 0x000019d4 0x1ec C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x000019d4 malloc |
0x00001b08 free |
.text 0x00001bc0 0x14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
0x00001bc0 memset |
0x00001bd4 . = ALIGN (0x2) |
*(.text.*) |
.text.libgcc 0x00001bd4 0x44 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
0x00001bd4 __udivmodsi4 |
0x00001c18 . = ALIGN (0x2) |
*(.fini9) |
*(.fini8) |
*(.fini7) |
*(.fini6) |
*(.fini5) |
*(.fini4) |
*(.fini3) |
*(.fini2) |
*(.fini1) |
*(.fini0) |
0x00001c18 _etext = . |
.data 0x00800060 0x24 load address 0x00001c18 |
0x00800060 PROVIDE (__data_start, .) |
*(.data) |
.data 0x00800060 0xc main.o |
0x00800065 DisplayZeilen |
0x00800064 SlaveAdresse |
0x00800066 CntDatensaetzeProSekunde |
0x00800062 IntervallDebug |
0x00800060 IntervallDisplay |
.data 0x0080006c 0x5 uart.o |
0x0080006e UebertragungAbgeschlossen |
0x0080006c AnzahlTeilnehmer |
0x0080006d ErwarteAntwort |
.data 0x00800071 0xb menu.o |
0x00800071 Array |
.data 0x0080007c 0x2 ir.o |
0x0080007c LoescheIrCodeTimer |
.data 0x0080007e 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x00800080 __malloc_heap_start |
0x0080007e __malloc_heap_end |
0x00800082 __malloc_margin |
*(.gnu.linkonce.d*) |
0x00800084 . = ALIGN (0x2) |
0x00800084 _edata = . |
0x00800084 PROVIDE (__data_end, .) |
.bss 0x00800084 0x157 |
0x00800084 PROVIDE (__bss_start, .) |
*(.bss) |
.bss 0x00800084 0xe main.o |
0x00800087 DebugGetAnforderung |
0x00800088 Debug_Display_Intervall |
0x00800086 GetVersionAnforderung |
0x0080008d Sekunde |
0x00800085 SendeDummyDaten |
0x0080008e _TastTimer |
0x0080008c Minute |
0x0080008a Debug_Timer_Intervall |
0x00800084 UebertragungUnterbrochen |
0x00800090 _SekTimer |
.bss 0x00800092 0x14 uart.o |
0x0080009d SioTmp |
0x00800098 PC_DebugTimeout |
0x0080009c NeuerDatensatzEmpfangen |
0x0080009a CntCrcError |
0x00800097 TX_DigTransferKanalL |
0x00800094 DisplayBusy |
0x00800092 WaitTXD |
0x00800099 AnzahlEmpfangsBytes |
0x00800095 TX_DigTransferKanalDaten |
0x00800093 AntwortEingetroffen |
0x00800096 TX_DigTransferKanalH |
.bss 0x008000a6 0x3 timer0.o |
0x008000a6 CountMilliseconds |
.bss 0x008000a9 0x7 keyboard.o |
0x008000a9 KeyTimer |
.bss 0x008000b0 0x5 menu.o |
0x008000b0 TestInt |
.bss 0x008000b5 0x6 ir.o |
*(COMMON) |
COMMON 0x008000bb 0x34 main.o |
0x008000bb Debug_Timer |
0x008000bd Debug_Display_Timer |
0x008000bf DebugIn |
0x008000ca VersionInfo |
0x008000d4 DebugOut |
0x008000ee PollDisplay |
COMMON 0x008000ef 0xc8 uart.o |
0x008000ef SendeBuffer |
0x00800153 RxdBuffer |
COMMON 0x008001b7 0x10 menu.o |
0x008001b7 KanalVon |
0x008001bf KanalAn |
COMMON 0x008001c7 0x4 ir.o |
0x008001c7 New_IR_Code |
0x008001c8 IR_Code |
0x008001ca Decodierung_Lauft |
COMMON 0x008001cb 0x6 analog.o |
0x008001cb AnalogWerte |
COMMON 0x008001d1 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
0x008001d1 __iob |
COMMON 0x008001d7 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x008001d7 __brkval |
0x008001d9 __flp |
0x008001db PROVIDE (__bss_end, .) |
0x00001c18 __data_load_start = LOADADDR (.data) |
0x00001c3c __data_load_end = (__data_load_start + SIZEOF (.data)) |
.noinit 0x008001db 0x0 |
0x008001db PROVIDE (__noinit_start, .) |
*(.noinit*) |
0x008001db PROVIDE (__noinit_end, .) |
0x008001db _end = . |
0x008001db PROVIDE (__heap_start, .) |
.eeprom 0x00810000 0x0 |
*(.eeprom*) |
0x00810000 __eeprom_end = . |
.stab 0x00000000 0x36c |
*(.stab) |
.stab 0x00000000 0x36c C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stabstr 0x00000000 0x84 |
*(.stabstr) |
.stabstr 0x00000000 0x84 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stab.excl |
*(.stab.excl) |
.stab.exclstr |
*(.stab.exclstr) |
.stab.index |
*(.stab.index) |
.stab.indexstr |
*(.stab.indexstr) |
.comment |
*(.comment) |
.debug |
*(.debug) |
.line |
*(.line) |
.debug_srcinfo |
*(.debug_srcinfo) |
.debug_sfnames |
*(.debug_sfnames) |
.debug_aranges 0x00000000 0xb4 |
*(.debug_aranges) |
.debug_aranges |
0x00000000 0x14 main.o |
.debug_aranges |
0x00000014 0x14 uart.o |
.debug_aranges |
0x00000028 0x14 lcd.o |
.debug_aranges |
0x0000003c 0x14 printf_P.o |
.debug_aranges |
0x00000050 0x14 timer0.o |
.debug_aranges |
0x00000064 0x14 keyboard.o |
.debug_aranges |
0x00000078 0x14 menu.o |
.debug_aranges |
0x0000008c 0x14 ir.o |
.debug_aranges |
0x000000a0 0x14 analog.o |
.debug_pubnames |
0x00000000 0x701 |
*(.debug_pubnames) |
.debug_pubnames |
0x00000000 0x1e1 main.o |
.debug_pubnames |
0x000001e1 0x240 uart.o |
.debug_pubnames |
0x00000421 0xb7 lcd.o |
.debug_pubnames |
0x000004d8 0x4a printf_P.o |
.debug_pubnames |
0x00000522 0x70 timer0.o |
.debug_pubnames |
0x00000592 0x52 keyboard.o |
.debug_pubnames |
0x000005e4 0x4a menu.o |
.debug_pubnames |
0x0000062e 0x85 ir.o |
.debug_pubnames |
0x000006b3 0x4e analog.o |
.debug_info 0x00000000 0x1a6c |
*(.debug_info) |
.debug_info 0x00000000 0x469 main.o |
.debug_info 0x00000469 0x7ba uart.o |
.debug_info 0x00000c23 0x260 lcd.o |
.debug_info 0x00000e83 0x45d printf_P.o |
.debug_info 0x000012e0 0x1d7 timer0.o |
.debug_info 0x000014b7 0x177 keyboard.o |
.debug_info 0x0000162e 0x1a7 menu.o |
.debug_info 0x000017d5 0x171 ir.o |
.debug_info 0x00001946 0x126 analog.o |
*(.gnu.linkonce.wi.*) |
.debug_abbrev 0x00000000 0x774 |
*(.debug_abbrev) |
.debug_abbrev 0x00000000 0x10c main.o |
.debug_abbrev 0x0000010c 0x178 uart.o |
.debug_abbrev 0x00000284 0xbc lcd.o |
.debug_abbrev 0x00000340 0x132 printf_P.o |
.debug_abbrev 0x00000472 0xc5 timer0.o |
.debug_abbrev 0x00000537 0x87 keyboard.o |
.debug_abbrev 0x000005be 0xb6 menu.o |
.debug_abbrev 0x00000674 0x76 ir.o |
.debug_abbrev 0x000006ea 0x8a analog.o |
.debug_line 0x00000000 0x16a3 |
*(.debug_line) |
.debug_line 0x00000000 0x2aa main.o |
.debug_line 0x000002aa 0x4c4 uart.o |
.debug_line 0x0000076e 0x279 lcd.o |
.debug_line 0x000009e7 0x4e2 printf_P.o |
.debug_line 0x00000ec9 0x180 timer0.o |
.debug_line 0x00001049 0x170 keyboard.o |
.debug_line 0x000011b9 0x19a menu.o |
.debug_line 0x00001353 0x212 ir.o |
.debug_line 0x00001565 0x13e analog.o |
.debug_frame |
*(.debug_frame) |
.debug_str 0x00000000 0x889 |
*(.debug_str) |
.debug_str 0x00000000 0x2e2 main.o |
0x371 (size before relaxing) |
.debug_str 0x000002e2 0x26b uart.o |
0x423 (size before relaxing) |
.debug_str 0x0000054d 0x9a lcd.o |
0x17b (size before relaxing) |
.debug_str 0x000005e7 0xf9 printf_P.o |
0x1bd (size before relaxing) |
.debug_str 0x000006e0 0x6b timer0.o |
0x168 (size before relaxing) |
.debug_str 0x0000074b 0x5e keyboard.o |
0x13f (size before relaxing) |
.debug_str 0x000007a9 0x40 menu.o |
0x15e (size before relaxing) |
.debug_str 0x000007e9 0x6d ir.o |
0x169 (size before relaxing) |
.debug_str 0x00000856 0x33 analog.o |
0x120 (size before relaxing) |
.debug_loc |
*(.debug_loc) |
.debug_macinfo |
*(.debug_macinfo) |
OUTPUT(main.elf elf32-avr) |
Cross Reference Table |
Symbol File |
ADC_Init analog.o |
main.o |
AddCRC uart.o |
AnalogWerte analog.o |
uart.o |
AntwortEingetroffen uart.o |
AnzahlEmpfangsBytes uart.o |
AnzahlTeilnehmer uart.o |
menu.o |
Array menu.o |
BearbeiteRxDaten uart.o |
main.o |
CheckDelay timer0.o |
keyboard.o |
main.o |
ClearIntervalle uart.o |
main.o |
CntCrcError uart.o |
menu.o |
CntDatensaetzeProSekunde main.o |
uart.o |
CountMilliseconds timer0.o |
DatenUebertragung uart.o |
main.o |
DebugGetAnforderung main.o |
DebugIn uart.o |
main.o |
DebugOut uart.o |
main.o |
Debug_Display_Intervall main.o |
Debug_Display_Timer main.o |
Debug_Timer main.o |
Debug_Timer_Intervall main.o |
Decode64 uart.o |
Decodierung_Lauft ir.o |
Delay_ms timer0.o |
main.o |
DisplayBusy uart.o |
timer0.o |
DisplayZeilen main.o |
menu.o |
uart.o |
ErwarteAntwort uart.o |
GetAnalogWerte analog.o |
main.o |
GetKeyboard keyboard.o |
main.o |
GetKeyboard2 keyboard.o |
main.o |
GetVersionAnforderung main.o |
IR_Code ir.o |
timer0.o |
uart.o |
Init main.o |
InitIR ir.o |
main.o |
IntervallDebug main.o |
IntervallDisplay main.o |
KanalAn menu.o |
KanalVon menu.o |
KeyTimer keyboard.o |
Keyboard_Init keyboard.o |
main.o |
LCD_Gotoxy lcd.o |
menu.o |
uart.o |
main.o |
LCD_Init lcd.o |
main.o |
LCD_Putchar lcd.o |
printf_P.o |
LCD_Write lcd.o |
LoescheIrCodeTimer ir.o |
timer0.o |
Menu menu.o |
main.o |
Minute main.o |
NeuerDatensatzEmpfangen uart.o |
New_IR_Code ir.o |
PAD_0 printf_P.o |
PAD_SP printf_P.o |
PC_DebugTimeout uart.o |
PRINT printf_P.o |
PRINTP printf_P.o |
PollDisplay uart.o |
main.o |
ReadADC analog.o |
RxdBuffer uart.o |
Sekunde main.o |
Sekundentakt main.o |
Sekundentakt_Init main.o |
SendIntervalle uart.o |
SendOutData uart.o |
SendeBuffer uart.o |
SendeDummyDaten main.o |
SendeRemoteTasten uart.o |
SetDelay timer0.o |
keyboard.o |
main.o |
SioTmp uart.o |
SlaveAdresse main.o |
menu.o |
uart.o |
TX_DigTransferKanalDaten uart.o |
TX_DigTransferKanalH uart.o |
TX_DigTransferKanalL uart.o |
TestInt menu.o |
Timer1_Init timer0.o |
main.o |
UART_Init uart.o |
main.o |
UebertragungAbgeschlossen uart.o |
UebertragungUnterbrochen main.o |
VersionInfo main.o |
WaitTXD uart.o |
timer0.o |
WriteProgramData uart.o |
_SekTimer main.o |
_TastTimer main.o |
__bad_interrupt C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__brkval C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__bss_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__bss_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__data_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_load_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__do_clear_bss C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__do_copy_data C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__flp C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__init C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__iob C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
__malloc_heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_margin C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__stack C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
main.o |
__udivmodsi4 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o |
__vector_1 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_10 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_11 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_12 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_13 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_15 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_16 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_17 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_18 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_19 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_20 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_3 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_5 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_7 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_8 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_9 timer0.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_default C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vectors C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
_lcd_write_4bit lcd.o |
_lcd_write_command lcd.o |
menu.o |
main.o |
_long_delay lcd.o |
menu.o |
main.o |
_printf_P printf_P.o |
menu.o |
uart.o |
main.o |
_short_delay lcd.o |
calloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
fdevopen C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o |
free C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
lcd_write_byte lcd.o |
main main.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
malloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
memchr C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o |
memset C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
my_pput lcd.o |
uart_putchar uart.o |
/tags/V0.36/main.sym |
---|
0,0 → 1,253 |
00000000 W __heap_end |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 W __vector_default |
00000000 T __vectors |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
00000054 t __c.0 |
00000054 T __ctors_end |
00000054 T __ctors_start |
00000054 T __dtors_end |
00000054 T __dtors_start |
00000069 t __c.1 |
0000007e t __c.2 |
00000093 t __c.3 |
000000a8 t __c.2 |
000000ab t __c.3 |
000000ae t __c.4 |
000000b1 t __c.5 |
000000b4 t __c.3 |
000000c2 t __c.4 |
000000d0 t __c.5 |
000000dc t __c.6 |
000000e1 t __c.7 |
000000ea t __c.8 |
000000f6 t __c.9 |
000000fe t __c.10 |
0000010a W __init |
00000116 T __do_copy_data |
00000122 t .do_copy_data_loop |
00000126 t .do_copy_data_start |
0000012c T __do_clear_bss |
00000134 t .do_clear_bss_loop |
00000136 t .do_clear_bss_start |
00000140 T __bad_interrupt |
00000140 W __vector_10 |
00000140 W __vector_12 |
00000140 W __vector_14 |
00000140 W __vector_16 |
00000140 W __vector_17 |
00000140 W __vector_18 |
00000140 W __vector_19 |
00000140 W __vector_2 |
00000140 W __vector_20 |
00000140 W __vector_3 |
00000140 W __vector_4 |
00000140 W __vector_5 |
00000140 W __vector_6 |
00000140 W __vector_7 |
00000140 W __vector_8 |
00000144 T Sekundentakt_Init |
00000156 T Sekundentakt |
000001b4 T Init |
000001ca T main |
000003c6 T __vector_15 |
00000430 T __vector_13 |
000005de T AddCRC |
0000063c T SendOutData |
00000724 T Decode64 |
000007fc T BearbeiteRxDaten |
0000085f W __stack |
0000097a T uart_putchar |
00000996 T WriteProgramData |
00000998 T UART_Init |
000009b4 T SendeRemoteTasten |
00000a14 T SendIntervalle |
00000a5c T ClearIntervalle |
00000aa2 T DatenUebertragung |
00000b92 T _long_delay |
00000bb2 T _short_delay |
00000bc2 T _lcd_write_command |
00000bee T _lcd_write_4bit |
00000c0c T lcd_write_byte |
00000c34 T my_pput |
00000c3e T LCD_Init |
00000caa T LCD_Gotoxy |
00000cf8 T LCD_Write |
00000d2e T LCD_Putchar |
00000d44 T PRINT |
00000d6c T PRINTP |
00000d96 T PAD_SP |
00000dae T PAD_0 |
00000dc6 T _printf_P |
000012ce T __vector_9 |
0000133c T Timer1_Init |
00001350 T SetDelay |
00001362 T CheckDelay |
00001378 T Delay_ms |
00001392 T Keyboard_Init |
000013a4 T GetKeyboard |
000014ae T GetKeyboard2 |
000014c8 T Menu |
000016ce T InitIR |
000016fc T __vector_1 |
0000172c T __vector_11 |
00001884 T ADC_Init |
0000188c T ReadADC |
0000189c T GetAnalogWerte |
000018c8 T memchr |
000018e2 T fdevopen |
00001970 T calloc |
000019a8 T malloc |
00001adc T free |
00001b94 T memset |
00001ba8 T __udivmodsi4 |
00001bb4 t __udivmodsi4_loop |
00001bce t __udivmodsi4_ep |
00001bec A __data_load_start |
00001bec T _etext |
00001c10 A __data_load_end |
00800060 D __data_start |
00800060 D IntervallDisplay |
00800062 D IntervallDebug |
00800064 D SlaveAdresse |
00800065 D DisplayZeilen |
00800066 D CntDatensaetzeProSekunde |
0080006c D AnzahlTeilnehmer |
0080006d D ErwarteAntwort |
0080006e D UebertragungAbgeschlossen |
0080006f d state.0 |
00800070 d KanalSlave.1 |
00800071 D Array |
0080007b d MaxMenue.1 |
0080007c D LoescheIrCodeTimer |
0080007e D __malloc_heap_end |
00800080 D __malloc_heap_start |
00800082 D __malloc_margin |
00800084 B __bss_start |
00800084 D __data_end |
00800084 D _edata |
00800084 B UebertragungUnterbrochen |
00800085 B SendeDummyDaten |
00800086 B GetVersionAnforderung |
00800087 B DebugGetAnforderung |
00800088 B Debug_Display_Intervall |
0080008a B Debug_Timer_Intervall |
0080008c B Minute |
0080008d B Sekunde |
0080008e B _TastTimer |
00800090 B _SekTimer |
00800092 B AntwortEingetroffen |
00800093 B DisplayBusy |
00800094 B TX_DigTransferKanalDaten |
00800095 B TX_DigTransferKanalH |
00800096 B TX_DigTransferKanalL |
00800097 B PC_DebugTimeout |
00800098 B AnzahlEmpfangsBytes |
00800099 B CntCrcError |
0080009b B NeuerDatensatzEmpfangen |
0080009c B SioTmp |
0080009d b ptr.11 |
0080009f b crc.6 |
008000a1 b crc1.7 |
008000a2 b crc2.8 |
008000a3 b buf_ptr.9 |
008000a4 b UartState.10 |
008000a5 B CountMilliseconds |
008000a7 b cnt_10ms.0 |
008000a8 B KeyTimer |
008000aa b taste1.0 |
008000ab b taste2.1 |
008000ac b taste3.2 |
008000ad b taste4.3 |
008000ae b taste5.4 |
008000af B TestInt |
008000b1 b arr.0 |
008000b3 b MenuePunkt.2 |
008000b4 b Shift.0 |
008000b6 b IR_Code_tmp.1 |
008000b8 b IR_Zaehler.2 |
008000b9 b IRSperrCounter.3 |
008000ba B Debug_Timer |
008000bc B Debug_Display_Timer |
008000be B DebugIn |
008000c9 B VersionInfo |
008000d3 B DebugOut |
008000ed B PollDisplay |
008000ee B SendeBuffer |
00800152 B RxdBuffer |
008001b6 B KanalVon |
008001be B KanalAn |
008001c6 B New_IR_Code |
008001c7 B IR_Code |
008001c9 B Decodierung_Lauft |
008001ca B AnalogWerte |
008001d0 B __iob |
008001d6 B __brkval |
008001d8 B __flp |
008001da B __bss_end |
008001da ? __heap_start |
008001da ? _end |
00810000 ? __eeprom_end |
/tags/V0.36/makefile |
---|
0,0 → 1,386 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega8 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 36 |
#------------------------------------------------------------------- |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
TARGET = BrushLess-Ctrl_V$(HAUPT_VERSION)_$(NEBEN_VERSION) |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c timer0.c analog.c PPM_Decode.c twislave.c BLMC.c |
#printf_P.c |
########################################################################################################## |
# If there is more than one source file, append them above, or modify and |
# uncomment the following: |
#SRC += foo.c bar.c |
# You can also wrap lines by appending a backslash to the end of the line: |
#SRC += baz.c \ |
#xyzzy.c |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -g -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) |
ifeq ($(AVR_CTRL_PLATINE), 1) |
CFLAGS += -DAVR_CTRL_PLATINE=$(AVR_CTRL_PLATINE) |
endif |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
#AVRDUDE_FLAGS += -V -E noreset |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
# $(REMOVE) $(TARGET).eep |
# $(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/tags/V0.36/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/tags/V0.36/timer0.c |
---|
0,0 → 1,59 |
/***************************************************************************** |
*****************************************************************************/ |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile unsigned char Timer0Overflow; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL(SIG_OVERFLOW0) |
{ |
static unsigned char cnt; |
Timer0Overflow++; |
if(!cnt--) |
{ |
cnt = 3; |
CountMilliseconds += 1; |
if(I2C_Timeout) I2C_Timeout--; |
if(PPM_Timeout) PPM_Timeout--; else anz_ppm_werte = 0; |
if(SIO_Timeout) SIO_Timeout--; |
} |
} |
void Timer0_Init(void) |
{ |
TCCR0 = TIMER_TEILER; |
// TCNT0 = -TIMER_RELOAD_VALUE; // reload |
TIM0_START; |
TIMER2_INT_ENABLE; |
} |
unsigned int SetDelay(unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
} |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
} |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
/tags/V0.36/timer0.h |
---|
0,0 → 1,15 |
#if defined (__AVR_ATmega8__) |
#define TIMER_TEILER CK8 |
//#define TIMER_RELOAD_VALUE 125 |
#endif |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char Timer0Overflow; |
void Timer1_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
/tags/V0.36/twislave.c |
---|
0,0 → 1,75 |
/*############################################################################ |
Slaveadr = 0x52 = Vorne, 0x54 = Hinten, 0x56 = Rechts, 0x58 = Links |
############################################################################*/ |
#include <avr/io.h> |
#include <util/twi.h> |
#include "main.h" |
unsigned char I2C_RXBuffer; |
unsigned char Byte_Counter=0; |
//############################################################################ |
//I2C (TWI) Interface Init |
void InitIC2_Slave(uint8_t adr) |
//############################################################################ |
{ |
TWAR = adr + (2*MotorAdresse); // Eigene Adresse setzen |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
//############################################################################ |
//ISR, die bei einem Ereignis auf dem Bus ausgelöst wird. Im Register TWSR befindet |
//sich dann ein Statuscode, anhand dessen die Situation festgestellt werden kann. |
ISR (TWI_vect) |
//############################################################################ |
{ |
switch (TWSR & 0xF8) |
{ |
case SR_SLA_ACK: |
TWCR |= (1<<TWINT); |
Byte_Counter=0; |
return; |
// Daten Empfangen |
case SR_PREV_ACK: |
I2C_RXBuffer = TWDR; |
I2C_Timeout = 500; |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_SLA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_DATA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_2: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_1: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
} |
TWCR =(1<<TWEA) | (1<<TWINT) | (1<<TWEN) | (1<<TWIE); // TWI Reset |
} |
/tags/V0.36/twislave.h |
---|
0,0 → 1,32 |
#ifndef _TWI_SLAVE_H_ |
#define _TWI_SLAVE_H_ |
extern unsigned char I2C_RXBuffer; |
extern unsigned char Byte_Counter; |
extern void InitIC2_Slave (uint8_t adr); |
#define TWI_BUS_ERR_1 0x00 |
#define TWI_BUS_ERR_2 0xF8 |
// Status Slave RX Mode |
#define SR_SLA_ACK 0x60 |
#define SR_LOST_ACK 0x68 |
#define SR_GEN_CALL_ACK 0x70 |
#define GEN_LOST_ACK 0x78 |
#define SR_PREV_ACK 0x80 |
#define SR_PREV_NACK 0x88 |
#define GEN_PREV_ACK 0x90 |
#define GEN_PREV_NACK 0x98 |
#define STOP_CONDITION 0xA0 |
#define REPEATED_START 0xA0 |
// Status Slave TX mode |
#define SW_SLA_ACK 0xA8 |
#define SW_LOST_ACK 0xB0 |
#define SW_DATA_ACK 0xB8 |
#define SW_DATA_NACK 0xC0 |
#define SW_LAST_ACK 0xC8 |
#endif |
/tags/V0.36/uart.c |
---|
0,0 → 1,277 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + (c) 01.2007 Holger Buss |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Keine Garantie auf Fehlerfreiheit |
// + Kommerzielle Nutzung nur mit meiner Zustimmung |
// + Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
// + www.mikrocontroller.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
#define MAX_SENDE_BUFF 100 |
#define MAX_EMPFANGS_BUFF 100 |
unsigned volatile char SIO_Sollwert = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned char MeineSlaveAdresse; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
struct str_DebugOut DebugOut; |
int Debug_Timer; |
SIGNAL(INT_VEC_TX) |
{ |
} |
void SendUart(void) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!(UCSRA & 0x40)) return; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
USR |= (1<TXC); |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
#if X3D_SIO == 1 |
static unsigned char serPacketCounter = 100; |
SioTmp = UDR; |
if(SioTmp == 0xF5) // Startzeichen |
{ |
serPacketCounter = 0; |
} |
else |
{ |
if(++serPacketCounter == MotorAdresse) // (1-4) |
{ |
SIO_Sollwert = SioTmp; |
SIO_Timeout = 200; // werte für 200ms gültig |
} |
else |
{ |
if(serPacketCounter > 100) serPacketCounter = 100; |
} |
} |
#else |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; }; |
if(CrcOkay) // Datensatz schon verarbeitet |
{ |
//NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
uart_putchar(RxdBuffer[2]); |
if (RxdBuffer[2] == 't') // Motortest |
{ Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
SIO_Sollwert = MotorTest[MotorAdresse - 1]; |
SIO_Timeout = 500; // werte für 500ms gültig |
} |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
#endif |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); // serieller Empfangsinterrupt |
// TX-Interrupt Freigabe |
// UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR= (SYSCLK / (BAUD_RATE * 8L) -1 ); |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
Debug_Timer = SetDelay(200); |
// Version beim Start ausgeben (nicht schön, aber geht... ) |
uart_putchar ('\n');uart_putchar ('B');uart_putchar ('L');uart_putchar (':'); |
uart_putchar ('V');uart_putchar (0x30 + VERSION_HAUPTVERSION);uart_putchar ('.');uart_putchar (0x30 + VERSION_NEBENVERSION/10); uart_putchar (0x30 + VERSION_NEBENVERSION%10); |
uart_putchar ('\n');uart_putchar ('A');uart_putchar ('D');uart_putchar ('R'); uart_putchar (':'); uart_putchar (0x30 + MotorAdresse); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen)) // im Singlestep-Betrieb in jedem Schtitt senden |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
Debug_Timer = SetDelay(50); // Sendeintervall |
} |
} |
/tags/V0.36/uart.h |
---|
0,0 → 1,81 |
#ifndef _UART_H |
#define _UART_H |
extern unsigned volatile char SIO_Sollwert; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned char MeineSlaveAdresse; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void SendUart(void); |
struct str_DebugOut |
{ |
unsigned char Digital[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned int Analog[8]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
//Die Baud_Rate der Seriellen Schnittstelle |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
#if X3D_SIO == 1 |
#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#else |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
#endif |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega8__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/tags/V0.37/BLMC.c |
---|
0,0 → 1,235 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Copyright (c) 12.2007 Holger Buss |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung oder Nutzung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile unsigned char Phase = 0,ShadowTCCR1A = 0; |
volatile unsigned char CompFreigabeTimer = 100; |
volatile unsigned char CompInterruptFreigabe = 0; |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW2) |
//############################################################################ |
{ |
} |
//############################################################################ |
// + Interruptroutine |
// + Wird durch den Analogkomperator ausgelöst |
// + Dadurch wird das Kommutieren erzeugt |
SIGNAL(SIG_COMPARATOR) |
//############################################################################ |
{ |
unsigned char sense = 0; |
do |
{ |
if(SENSE_H) sense = 1; else sense = 0; |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
if(sense) |
{ |
STEUER_C_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_FALLING_INT; |
SENSE_B; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_L; |
} |
break; |
case 1: |
STEUER_C_L; |
if(!sense) |
{ |
STEUER_B_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_H; |
} |
break; |
case 2: |
STEUER_B_H; |
if(sense) |
{ |
STEUER_A_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_L; |
} |
break; |
case 3: |
STEUER_A_L; |
if(!sense) |
{ |
STEUER_C_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_B; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_H; |
} |
break; |
case 4: |
STEUER_C_H; |
if(sense) |
{ |
STEUER_B_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_L; |
} |
break; |
case 5: |
STEUER_B_L; |
if(!sense) |
{ |
STEUER_A_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_RISING_INT; |
Phase = 0; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_H; |
} |
break; |
} |
} |
while((SENSE_L && sense) || (SENSE_H && !sense)); |
ZeitZumAdWandeln = 0; |
} |
//############################################################################ |
// |
void Manuell(void) |
//############################################################################ |
{ |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
STEUER_B_L; |
SENSE_C; |
SENSE_RISING_INT; |
break; |
case 1: |
STEUER_A_H; |
STEUER_C_L; |
SENSE_B; |
SENSE_FALLING_INT; |
break; |
case 2: |
STEUER_B_H; |
STEUER_C_L; |
SENSE_A; |
SENSE_RISING_INT; |
break; |
case 3: |
STEUER_B_H; |
STEUER_A_L; |
SENSE_C; |
SENSE_FALLING_INT; |
break; |
case 4: |
STEUER_C_H; |
STEUER_A_L; |
SENSE_B; |
SENSE_RISING_INT; |
break; |
case 5: |
STEUER_C_H; |
STEUER_B_L; |
SENSE_A; |
SENSE_FALLING_INT; |
break; |
} |
} |
/tags/V0.37/BLMC.h |
---|
0,0 → 1,98 |
/*############################################################################ |
############################################################################*/ |
#ifndef BLMC_H_ |
#define BLMC_H_ |
extern volatile unsigned char Phase; |
extern volatile unsigned char ShadowTCCR1A; |
extern volatile unsigned char CompInterruptFreigabe; |
void Blc(void); |
void Manuell(void); |
// anselm |
/* |
#define COM1A ((0 << COM1A0) | (1 << COM1A1)) // COM1A-> OC1A non inverting mode |
#define COM1B ((0 << COM1B0) | (1 << COM1B1)) // COM1B-> OC1B non inverting mode |
#define COM2 ((0 << COM20) | (1 << COM21)) // COM2-> OC2 non inverting mode |
#ifdef _32KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> fast PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (1 << WGM21) | (1 << CS20)) // WGM20:21-> fast PWM, no prescale |
#endif |
#ifdef _16KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> phase corr, PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (0 << WGM21) | (1 << CS20)) // WGM20:21-> phase corr. PWM, no prescale |
#endif |
#define PWM_C_ON {TCCR1A = COM1A | WGM1 | COM1B; TCCR2 = WGMCS2; |
DDRB = 0x02;} // Steuer_C+ output |
#define PWM_B_ON {TCCR1A = COM1B | WGM1 | COM1A; TCCR2 = WGMCS2; \ |
DDRB = 0x04;} // Steuer_B+ output |
#define PWM_A_ON {TCCR1A = WGM1; TCCR2 = COM2 | WGMCS2; \ |
DDRB = 0x08;} // Steuer_A+ output |
#define PWM_OFF {TCCR1A = WGM1; \ |
TCCR2 = WGMCS2; \ |
PORTB &= ~0x0E; DDRB = 0x0E;} // OC1x & OC2 disconnected, Steuer_X+ output low |
// anselm |
*/ |
#ifdef _32KHZ |
#define PWM_C_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xAD; TCCR2 = 0x69;DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x0D; TCCR2 = 0x49;PORTC &= ~0x0E;} |
#endif |
#ifdef _16KHZ |
// #define PWM_C_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0A;} |
// #define PWM_B_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0C;} |
// #define PWM_A_ON {TCCR1A = 0xA2; TCCR2 = 0x61; DDRB = 0x08;} |
// #define PWM_C_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0A;} else { TCCR1A = 0x81; DDRB = 0x0E;}} |
// #define PWM_B_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0C;} else { TCCR1A = 0x21; DDRB = 0x0E;}} |
// #define PWM_A_ON {TCCR2 = 0x61; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x08;} else { TCCR1A = 0x01; DDRB = 0x0E;}} |
#define PWM_C_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x02;} |
#define PWM_B_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x04;} |
#define PWM_A_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x08;} |
// #define PWM_C_ON {TCCR1A = 0x82; TCCR2 = 0x41; PORTB &= ~0x04; DDRB = 0x0E;} |
// #define PWM_B_ON {TCCR1A = 0x22; TCCR2 = 0x41; PORTB &= ~0x02; DDRB = 0x0E;} |
// #define PWM_A_ON {TCCR1A = 0x02; TCCR2 = 0x61; PORTB &= ~0x06; DDRB = 0x0E;} |
#define PWM_OFF {TCCR1A = 0x01; TCCR2 = 0x41; DDRB = 0x0E; PORTB &= ~0x0E;} |
#endif |
#define STEUER_A_H {PWM_A_ON} |
#define STEUER_B_H {PWM_B_ON} |
#define STEUER_C_H {PWM_C_ON} |
#define STEUER_A_L {PORTD &= ~0x30; PORTD |= 0x08;} |
#define STEUER_B_L {PORTD &= ~0x28; PORTD |= 0x10;} |
#define STEUER_C_L {PORTD &= ~0x18; PORTD |= 0x20;} |
#define STEUER_OFF {PORTD &= ~0x38; PWM_OFF; } |
#define FETS_OFF {PORTD &= ~0x38; PORTB &= ~0x0E; } |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
#define ENABLE_SENSE_INT {CompInterruptFreigabe = 1;ACSR |= 0x0A; } |
#define DISABLE_SENSE_INT {CompInterruptFreigabe = 0; ACSR &= ~0x08; } |
#define SENSE_FALLING_INT ACSR &= ~0x01 |
#define SENSE_RISING_INT ACSR |= 0x03 |
#define SENSE_TOGGLE_INT ACSR &= ~0x03 |
#endif //BLMC_H_ |
/tags/V0.37/BL_Ctrl.pnproj |
---|
0,0 → 1,0 |
<Project name="avr_ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="analog.h"></File><File path="analog.c"></File><File path="PPM_Decode.c"></File><File path="PPM_Decode.h"></File><File path="twislave.c"></File><File path="twislave.h"></File><File path="BLMC.c"></File><File path="BLMC.h"></File></Project> |
/tags/V0.37/BL_Ctrl.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="avr_ctrl" x="true"></e></ViewState></pd> |
/tags/V0.37/Hex-Files/BL-Ctrl_V1_0/BootLoader_MEGA8_8MHZ_V0_2.hex |
---|
0,0 → 1,53 |
:101C000011241FBECFE5D4E0DEBFCDBF10E0A0E6BB |
:101C1000B0E0E0E3FFE102C005900D92A036B1070D |
:101C2000D9F710E0A0E6B0E001C01D92A23AB107DA |
:101C3000E1F714C000C008955D9BFECF8CB90895F4 |
:101C40005F9BFECF8CB1992708958DE4F5DF8BE47F |
:101C5000F3DF82E4F1DF8CE4EFDF0895CFE5D4E039 |
:101C6000DEBFCDBFE0E0F0E004917F01992481B7B1 |
:101C7000885081BF90BC80E189B9599A88E18AB9BE |
:101C800086E880BDEF01192D5F9B0BC0113029F450 |
:101C90008CB18A3A49F110E004C08CB18B3109F45F |
:101CA00011E0CE01219684369105C8F00F3F41F036 |
:101CB000002331F0E0916000F091610009950FC0C0 |
:101CC0008AE0BADF8DE0B8DF86E5B6DF80E3B4DF17 |
:101CD0008EE2B2DF82E3B0DF8AE3AEDF05C080E2EE |
:101CE0009EE40197F1F7D0CFB0DFAADF813611F47F |
:101CF00089E51CC1813461F4A3DFE82EFF24FE2CAA |
:101D0000EE249EDF9927E82AF92AF694E794E1C0A9 |
:101D1000823631F489E590DF80E08EDF80E406C111 |
:101D2000823409F070C08CDF8BDFD82E89DF082F5A |
:101D3000B2E6AB2EB0E0BB2E10E0E5010894A11C8A |
:101D4000B11C1D1510F47CDF01C08FEF88831F5F6D |
:101D5000103498F336E7931609F0C9C0063409F039 |
:101D60003CC08FEFE8168BE1F80608F033C0CD2DAC |
:101D7000A70166277727440F551F661F771F6A0143 |
:101D80007B01A2E6B0E011E08D9199272D913327D8 |
:101D9000322F2227822B932B0C01FA01109357002C |
:101DA000E89511244E5F5F4F6F4F7F4FC25061F730 |
:101DB00085E0F60180935700E89507B600FCFDCF5B |
:101DC00081E180935700E8957695679557954795FB |
:101DD0007A017FC080E030DF7CC0053409F079C033 |
:101DE000F7012D2DA2E6B0E0EEBB8F2F99278FBB18 |
:101DF0008D918DBB3196E29AE19AE199FECF215007 |
:101E000099F77F0166C08736B9F51ADF19DFC82F49 |
:101E100017DF863409F5C701AA27BB276C017D01AE |
:101E2000CC0CDD1CEE1CFF1CF60105911491802FDB |
:101E300003DF812F992700DF82E090E0A0E0B0E08F |
:101E4000C80ED91EEA1EFB1EC25071F7F694E79425 |
:101E5000D794C794760149CF853409F046CFEEBABE |
:101E60008F2D99278FBBE09A0894E11CF11C8DB34C |
:101E7000E3DEC150A1F739CF853601F596E7991613 |
:101E800041F580E090E0A0E0B0E023E0FC01209389 |
:101E90005700E89507B600FCFDCF805C9F4FAF4F21 |
:101EA000BF4F8F3F3BE1930730E0A30730E0B3071C |
:101EB00068F381E180935700E8950BC0853459F4AD |
:101EC00088E190E02CE00FB6F894A89581BD0FBE94 |
:101ED00021BD8DE02BC08035E1F38C34D1F3803708 |
:101EE00011F483E523C0843721F486E7A5DE80E082 |
:101EF0001DC0843519F4A4DE982EEBCF8B3109F484 |
:101F0000F3CE8A3A09F4F0CE863521F480E394DEEC |
:101F100082E30CC0833731F487E08EDE83E98CDE08 |
:101F20008EE104C08B3109F4E0CE8FE385DEDDCE97 |
:0400000300001C00DD |
:00000001FF |
/tags/V0.37/Hex-Files/BL-Ctrl_V1_0/Fuses_Mega8_8MHZ_Intern_MIT_Bootloader.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.37/Hex-Files/BL-Ctrl_V1_0/Fuses_Mega8_8MHZ_Intern_OHNE_Bootloader.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.37/Hex-Files/BL-Ctrl_V1_0/SET_BrushLess-Ctrl_V0_37_Adr_1-4_10A.zip |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.37/Hex-Files/BL-Ctrl_V1_0/SET_BrushLess-Ctrl_V0_37_Adr_1-4_6A.zip |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.37/Hex-Files/BL-Ctrl_V1_0/Test_Manuell_BL-Ctrl_V0_32.hex |
---|
0,0 → 1,330 |
:1000000012C0B9C62AC029C022C721C626C025C031 |
:100010000DC650C522C079C320C0CDC21EC01DC0B0 |
:1000200020C7C0C61AC011241FBECFE5D4E0DEBF72 |
:10003000CDBF10E0A0E6B0E0E6E7F4E102C0059035 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92AF39B107E1F736C1D2CF20918300AD |
:1000600080916200821710F4282FAB9A8091810052 |
:1000700090918200893C910560F01BBC1ABC19BCB0 |
:1000800018BC13BCAB9A01979093820080938100B7 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F9CE221 |
:1000E000A92E91E0B92EC12CD12C1092A3004398D7 |
:1000F00085E090E09093840080938300AFDFB6D7D3 |
:1001000088EC90E039D5C12FDD27D0938400C093CF |
:100110008300EE24FF248701EA14FB040C051D056F |
:1001200078F480916700882311F44FD201C0A8D4DD |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E072D9A21ABC |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D10428F489E1A82EBC |
:10017000B12CC12CD12C7AD78091A5008F5F8093B0 |
:10018000A5008091A50066E034D99093A50005D51F |
:10019000D0938400C093830061DF449BBACF82B3C5 |
:1001A00090E8892782BBB5CF80917B0090917C003D |
:1001B000892B09F04EC04091790050917A00411589 |
:1001C000510571F090918E008FEF989FC00111241E |
:1001D00068EC70E01AD9709386006093850041C086 |
:1001E00080919A00882341F120919C0030919D00DC |
:1001F00081E02D32380708F09A01293C310510F0D2 |
:1002000028EC30E02B30310528F4509386004093E1 |
:10021000850026C08CEF90E0289FA001299F500DFB |
:10022000389F500D1124CA01885D994064EB70E03D |
:10023000ECD8CB01039610C0809185009091860088 |
:10024000009729F001979093860080938500AB9AE0 |
:1002500008C080919403992790938600809385002D |
:10026000AB9880918500909186008F3F910539F081 |
:1002700030F08FEF90E0909386008093850080911E |
:100280008500992708958091810090918200909334 |
:1002900084038093830380917F0099279093860342 |
:1002A00080938503809170009091710090938803F2 |
:1002B0008093870380919C0090919D0090938A0386 |
:1002C000809389030895CFE5D4E0DEBFCDBF00E081 |
:1002D00088E084BB85BB8AEB81BB80E882BB8EE073 |
:1002E00087BB81E388BB88B3806C88BBB69B06C0A4 |
:1002F000B79B02C081E007C082E005C0B79B02C087 |
:1003000083E001C084E08093600087D318D47894A0 |
:10031000C0E0D0E0809160009927C817D90709F4A0 |
:10032000979A86E990E028D497988AEF90E024D4B1 |
:100330002196C530D10574F384EF91E01DD4B3DE6E |
:1003400080E528D566D485E690E002D486E690E084 |
:10035000FFD387E690E0FCD3EC018EEF90E0F8D37A |
:100360005C018DEE93E0F4D37C018EEE93E0F0D34C |
:100370006C01CE01F6D38823E1F3979A10928400A2 |
:10038000109283006BDE88E080BF11E017B98AE02D |
:1003900090E0DED3EC0181E090E0909386038093BF |
:1003A000850310929D0010929C00812F8DDEFCDE53 |
:1003B000992790938400809383008091A5008017F3 |
:1003C00051F0109263001092640082E390E0C0D379 |
:1003D000EC010091A5008091830090918400892B0D |
:1003E000C9F41092740010926400C401BAD3882337 |
:1003F000E1F01092A300439881E08093630082B300 |
:10040000877C82BB82E08FBD81E485BD85B3817F1F |
:1004100085BB0BC080916300882319F081E0809335 |
:1004200074008CED95E094D34C0180916300882397 |
:1004300021F0109284001092830010DE80916400FD |
:100440008F5F80936400813009F0B1CF80916300A9 |
:100450008111979AC50185D3882339F182E390E011 |
:1004600077D35C0180917F00482F55272091810030 |
:10047000309182004217530710F48F5F04C0241795 |
:10048000350718F4815080937F0080917F00909110 |
:100490006200893728F0915090936200AB9A05C0B2 |
:1004A0009F3F19F09F5F90936200C7015AD3882342 |
:1004B00019F18AE090E04CD37C01209172003091D8 |
:1004C0007300C901880F991F880F991F820F931F0E |
:1004D000820F931F66E070E098D77093710060936D |
:1004E0007000109273001092720080919A0088231D |
:1004F00019F481E080936100C60133D3882321F091 |
:100500008CED95E025D36C01CE012BD3882331F0FF |
:100510008091700090917100892B29F08091740076 |
:10052000882309F444CF11E0109363001092A300D4 |
:10053000439884E690E00CD3EC018091740088230A |
:1005400009F435CFAB98109274008AE0BDDD979A1C |
:10055000109263008091A50081508093A50081E0F6 |
:1005600090E0909384008093830078DD88B18C7F45 |
:1005700088B91093A30088B18A6088B984E690E0B6 |
:10058000E7D2EC01CE01EDD28823E1F38AE090E0DE |
:10059000909384008093830061DD88EC90E0D8D252 |
:1005A000EC01CE01DED28823E1F382E390E0D0D2E9 |
:1005B0007C0107E0FCCE1F920F920FB60F92112420 |
:1005C0000F900FBE0F901F9018955E9B24C08091D6 |
:1005D00067008823E1F480918F009091900001964C |
:1005E0009093900080938F00FC01E955FD4FE081CE |
:1005F000ED3019F08436910539F410929000109284 |
:100600008F0081E080936700589AECB908951092AA |
:10061000900010928F0008951F93CF93DF93EC0109 |
:1006200010E0662309F460C0A22FBB271297E42FC5 |
:10063000FF27E35FFC4F30813D534F5FE42FFF27DF |
:10064000E35FFC4F50815D534F5FE42FFF27E35F73 |
:10065000FC4F70817D534F5FE42FFF27E35FFC4F1A |
:10066000E081ED534F5F842F9927A817B907E4F174 |
:10067000832F9927880F991F880F991F352F32953F |
:100680003F70382B852F99278F70907054E0880F1A |
:10069000991F5A95E1F7572F56955695582B872F46 |
:1006A00099278370907026E0880F991F2A95E1F7AB |
:1006B0008E2B61506F3FC1F0FE01E10FF11D3083C1 |
:1006C0001F5F61506F3F81F0FE01E10FF11D50830C |
:1006D0001F5F61506F3F41F0FE01E10FF11D80830C |
:1006E0001F5F662309F0A3CFDF91CF911F9108957B |
:1006F000CF93C82F8A3011F48DE0FADF5D9BFECFD7 |
:10070000CCB980E090E0CF9108951F920F920FB680 |
:100710000F9211242F933F934F935F936F937F9387 |
:100720008F939F93AF93BF93CF93DF93EF93FF93F9 |
:100730008CB180938D0040919500443610F010925A |
:10074000960050918D005D3009F064C08091960054 |
:10075000823009F05FC010929600A42FBB27A35FE0 |
:10076000BC4FFD0132978081209191003091920021 |
:10077000281B3109ED0121978881281B3109C90106 |
:100780009F70909392008093910066E09695879574 |
:100790006A95E1F7982F935C909393002F733070D4 |
:1007A000235C209394008081981709F082C088818F |
:1007B000281709F07EC0409387005C9380910F0357 |
:1007C000823549F488E190E02CE00FB6F894A895C2 |
:1007D00081BD0FBE21BD80910F038ADF80910F0381 |
:1007E000843709F066C02091870043E064E088E820 |
:1007F00090E012DF80916000E82FFF27E957FF4F5C |
:10080000808180938E0084EF91E090937A008093B2 |
:1008100079004FC020919600822F99278130910551 |
:10082000F9F0823091051CF4892B21F040C0029729 |
:1008300011F13DC080918D00833239F480918C009C |
:10084000882319F481E08093960080918D00809335 |
:100850000D0381E08093950080918D00992722C03F |
:100860002F5F20939600E42FFF27E35FFC4F8091DA |
:100870008D00808309C0E42FFF27E35FFC4F809148 |
:100880008D008083443620F44F5F4093950002C072 |
:100890001092960020918D0080919100909192008D |
:1008A000820F911D909392008093910002C010924C |
:1008B0009600FF91EF91DF91CF91BF91AF919F9102 |
:1008C0008F917F916F915F914F913F912F910F90F9 |
:1008D0000FBE0F901F901895AC01A0E0B0E09D01F5 |
:1008E000A817B90748F4E7EAF2E08191280F311D13 |
:1008F0001196A417B507C8F33F70FD01E955FD4FE8 |
:10090000C90176E0969587957A95E1F7835C8083B7 |
:100910001196FD01E955FD4F2F733070822F835CD6 |
:100920008083A855BD4F8DE08C9310926700809115 |
:10093000A7028CB908951F93CF93DF93382FEA0154 |
:10094000722F10E083E28093A7026093A802309395 |
:10095000A902A3E0B0E0772309F458C0772311F48B |
:10096000972F07C0FE01E10FF11D1F5F90817150AD |
:1009700011F4472F0EC0FE01E10FF11D1F5F4081F2 |
:10098000715039F0FE01E10FF11D1F5F6081715060 |
:1009900001C0672FFD01E955FD4F892F869586958A |
:1009A000835C80831196FD01E955FD4F892F9927BE |
:1009B0008370907024E0880F991F2A95E1F75527DE |
:1009C0009A0194E0369527959A95E1F7822B835CFE |
:1009D00080831196FD01E955FD4F4F705070440F13 |
:1009E000551F440F551F862F992726E0969587950A |
:1009F0002A95E1F7842B835C80831196FD01E955EC |
:100A0000FD4F6F73635C60831196A5CFCD0164DFEA |
:100A1000DF91CF911F910895089588E18AB9599A7D |
:100A2000579A80E189B960E070E088E793E084D369 |
:100A300088EC90E08DD090930C0380930B038AE0B8 |
:100A400057DE82E455DE8CE453DE8AE351DE86E530 |
:100A50004FDE80E34DDE8EE24BDE83E349DE82E350 |
:100A600047DE8AE045DE81E443DE84E441DE82E560 |
:100A70003FDE8AE33DDE80916000805D39DE0895CF |
:100A800080910B0390910C036CD0882391F080919E |
:100A90006700882371F022E241E753E06091A602EB |
:100AA00084E449DF82E390E053D090930C03809379 |
:100AB0000B0308951F920F920FB60F9211248F937C |
:100AC0009F93809193038F5F80939303809199000C |
:100AD0008150809399008F3F59F583E0809399006E |
:100AE0008091970090919800019690939800809340 |
:100AF000970080917B0090917C00009729F00197EE |
:100B000090937C0080937B0080919A00882329F049 |
:100B100080919A00815080939A0080917900909101 |
:100B20007A00009729F0019790937A0080937900DA |
:100B30009F918F910F900FBE0F901F90189582E09C |
:100B400083BF89B7816089BF89B7806489BF0895F1 |
:100B50002091970030919800280F391FC901019703 |
:100B600008952091970030919800821B930B892F54 |
:100B70009927807899270895CF93DF93E9DFEC01D7 |
:100B8000CE01EFDF8823E1F3DF91CF91089586EA6C |
:100B900086B987E087B9369A089527B196E097B964 |
:100BA00010BE83ED86B9349A97B9369A349BFECF3E |
:100BB00027B944B155B1440F551F440F551F493C47 |
:100BC000510510F048EC50E02091810030918200F6 |
:100BD000C90163E0880F991F6A95E1F7821B930BA7 |
:100BE000840F951F23E0969587952A95E1F79093BA |
:100BF00082008093810020918000332728173907D5 |
:100C000020F4809181008093800016B888E080BF36 |
:100C100008958EB5806C8EBD8EB580648EBD89B70B |
:100C2000806289BF89B7846089BF08951F920F923F |
:100C30000FB60F9211248F9380919B008F5F80934A |
:100C40009B008F910F900FBE0F901F9018951F92D1 |
:100C50000F920FB60F9211242F933F938F939F9370 |
:100C60000EB406FE0FC010929B0086B597B5909308 |
:100C70009F0080939E008EB58F7B8EBD84E680930F |
:100C80009A0070C08EB580648EBD26B537B5809150 |
:100C90009E0090919F00281B390B80919B00992703 |
:100CA000982F8827990F280F391F689414F83695C4 |
:100CB00027951694E1F73093A1002093A0002851C6 |
:100CC000314030F488E191E09093A1008093A0003E |
:100CD0002091A0003091A100285131403093A10013 |
:100CE0002093A00080919C0090919D008217930713 |
:100CF00030F480919C0090919D0001960CC08091F1 |
:100D00009C0090919D002817390748F480919C0021 |
:100D100090919D00019790939D0080939C0020915D |
:100D20009C0030919D00C901880F991F880F991F61 |
:100D3000880F991F821B930B2091A0003091A10076 |
:100D4000820F931F23E0969587952A95E1F790935C |
:100D5000A1008093A00090939D0080939C0081E06F |
:100D6000809361009F918F913F912F910F900FBEC3 |
:100D70000F901F9018951F920F920FB60F9211248B |
:100D80008F938AB78F7B8ABF8F910F900FBE0F9082 |
:100D90001F90189590916000990F980F92B985EC6B |
:100DA00086BF08951F920F920FB60F9211248F9352 |
:100DB0009F9381B19927887F907080389105E9F0E1 |
:100DC0008138910534F40097B1F18036910579F0BE |
:100DD00035C0883B9105D9F0893B910524F4883AC8 |
:100DE0009105A9F02BC0883F910511F127C086B766 |
:100DF000806886BF1092A20023C083B180939403C1 |
:100E000084EF91E090937C0080937B000EC09091E2 |
:100E1000A200992339F480917F0083B99F5F90935A |
:100E2000A20003C08091620083B986B7806807C0C2 |
:100E300086B7806986BF86B7806986BF85EC86BF26 |
:100E40009F918F910F900FBE0F901F9018951F923A |
:100E50000F920FB60F9211240F900FBE0F901F909C |
:100E600018951F920F920FB60F9211241F932F9374 |
:100E70003F934F935F936F937F938F939F93AF9322 |
:100E8000BF93CF93EF93FF93459B02C011E001C046 |
:100E900010E08091A50099278230910509F450C097 |
:100EA000833091052CF4009779F0019739F1BFC098 |
:100EB0008430910509F478C0843091050CF45AC04F |
:100EC000059709F48BC0B3C082EA8FBD81E685BD6A |
:100ED00088E087BB112369F082B3877E82BB959A35 |
:100EE000C1E0C4BD80916100811157DE4098C7B94F |
:100EF0001BC082B3877D82BB949A99C082B3877EE0 |
:100F000082BB959A1123B1F482EA8FBD81E485BD3D |
:100F10008CE087BB81E084BD8091610081113DDE62 |
:100F200017B988B1836088B98091A5008F5F8093DD |
:100F3000A5006DC082EA8FBD81E685BD88E076C0E0 |
:100F400082EA8FBD81E485BD8CE087BB112369F007 |
:100F500082B38F7C82BB939A81E084BD80916100D3 |
:100F600081111BDE82E087B932C082B3877E82BBEB |
:100F7000959A5DC082B38F7C82BB939A112371F4E2 |
:100F800082EA8FBD81E485BD8AE087BBC1E0C4BD34 |
:100F900080916100811101DEC7B9C3CF82EA8FBDA4 |
:100FA00081E485BD8CE042C082EA8FBD81E485BDCD |
:100FB0008AE087BB112369F082B3877D82BB949A54 |
:100FC00081E084BD809161008111E7DD17B8409810 |
:100FD000ABCF82B38F7C82BB939A29C082B3877DCB |
:100FE00082BB949A1123E9F482EA8FBD81E685BD24 |
:100FF00088E087BB81E084BD809161008111CDDDF7 |
:1010000082E087B988B1836088B91093A500809188 |
:101010007200909173000196909373008093720018 |
:1010200006C082EA8FBD81E485BD8AE087BB459911 |
:1010300003C0112309F028CF459B03C0112309F4F5 |
:1010400023CF10926100FF91EF91CF91BF91AF91AB |
:101050009F918F917F916F915F914F913F912F91D0 |
:101060001F910F900FBE0F901F9018958091A500B3 |
:1010700099278230910551F1833091052CF4009726 |
:1010800069F00197B9F0089584309105E1F1843059 |
:1010900091055CF1059709F443C0089582EA8FBD7C |
:1010A00081E685BD88E087BB82B3877D82BB949A49 |
:1010B00082E034C082EA8FBD81E685BD88E087BBCF |
:1010C00082B3877E82BB959A81E01AC082EA8FBD87 |
:1010D00081E485BD8CE087BB82B3877E82BB959A15 |
:1010E00017B888B1836088B9089582EA8FBD81E41A |
:1010F00085BD8CE087BB82B38F7C82BB939A82E0F4 |
:1011000087B94098089582EA8FBD81E485BD8AE061 |
:1011100087BB82B38F7C82BB939A81E087B9E1CF92 |
:1011200082EA8FBD81E485BD8AE087BB82B3877D7B |
:1011300082BB949A17B8E5CF0F931F93CF93DF9399 |
:101140008C01EB01009711F4672BB9F16EE070E0B0 |
:1011500081E090E037D0FC01892B71F180E8838336 |
:10116000209771F0D387C28781E8838380919503AC |
:1011700090919603892B21F4F0939603E0939503C5 |
:1011800001151105C9F0118700878381826083836F |
:101190008091970390919803892B71F4F0939803B1 |
:1011A000E09397038091990390919A03892B21F4FE |
:1011B000F0939A03E0939903CF01DF91CF911F91B0 |
:1011C0000F9108950F931F93CF93DF93869F800114 |
:1011D000879F100D969F100D1124C8010DD0EC01B2 |
:1011E000009721F0A80160E070E0FCD0CE01DF9113 |
:1011F000CF911F910F910895CF93DF93AC01029788 |
:1012000010F442E050E020E030E0A0919D03B09166 |
:101210009E03BD01F901109709F44CC08D919C917A |
:1012200011978417950731F14817590738F421159C |
:10123000310519F08217930708F49C01FD01A28182 |
:10124000B381109759F721153105A1F1C901841B0C |
:10125000950B049708F4A901DB01E0E0F0E010979A |
:1012600049F18D919C91119782179307F9F44217D8 |
:10127000530779F4ED018A819B81309719F09383AC |
:10128000828304C090939E0380939D03CD010296B8 |
:101290004AC0241B350BFD01E20FF31F419351930C |
:1012A000225030402D933C93CF013DC0FD01A281DF |
:1012B000B381D5CF80919B0390919C03892B41F4FE |
:1012C00080916B0090916C0090939C0380939B03A2 |
:1012D000E0916900F0916A00309741F4EDB7FEB7F4 |
:1012E00080916D0090916E00E81BF90BA0919B031B |
:1012F000B0919C039F012A1B3B0B2417350788F0F4 |
:10130000CA0102962817390760F0CD01840F951F96 |
:10131000029690939C0380939B034D935D93CD0124 |
:1013200002C080E090E0DF91CF910895CF93DF93EA |
:10133000009709F454C0DC011297ED011B821A8258 |
:1013400080919D0390919E03009721F1FC0140E064 |
:1013500050E0EA17FB0718F1ED01FB83EA832D91BA |
:101360003C911197C20FD31FCE0102968E179F0793 |
:1013700071F48A819B81280F391F2E5F3F4F119690 |
:101380003C932E9382819381FD0193838283411547 |
:10139000510559F4B0939E03A0939D0320C0AF0163 |
:1013A0000280F381E02D3097A1F6EA01BB83AA8386 |
:1013B000CA01029628813981820F931F8A179B07E1 |
:1013C00071F48D919C911197280F391F2E5F3F4F1B |
:1013D00039832883FD01828193819B838A83DF91F6 |
:1013E000CF910895DC0101C06D9341505040E0F76A |
:1013F0000895991B79E004C0991F961708F0961B71 |
:10140000881F7A95C9F780950895AA1BBB1B51E1E7 |
:1014100007C0AA1FBB1FA617B70710F0A61BB70B64 |
:10142000881F991F5A95A9F780959095BC01CD0109 |
:101430000895A1E21A2EAA1BBB1BFD010DC0AA1F15 |
:10144000BB1FEE1FFF1FA217B307E407F50720F02D |
:10145000A21BB30BE40BF50B661F771F881F991FA8 |
:101460001A9469F760957095809590959B01AC01F1 |
:06147000BD01CF0108954B |
:101476000101FF01010A00016400009F0320000032 |
:00000001FF |
/tags/V0.37/Hex-Files/BL-Ctrl_V1_0/Test_Schub_BrushLess-Ctrl_V0_32.hex |
---|
0,0 → 1,333 |
:1000000012C0D3C62AC029C03CC73BC626C025C0E3 |
:1000100027C66AC522C093C320C0E7C21EC01DC048 |
:100020003AC7DAC61AC011241FBECFE5D4E0DEBF3E |
:10003000CDBF10E0A0E6B0E0EAEAF4E102C005902E |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92AF39B107E1F731C1D2CF20918300B2 |
:1000600080916200821710F4282FAB9A8091810052 |
:1000700090918200893C910560F01BBC1ABC19BCB0 |
:1000800018BC13BCAB9A01979093820080938100B7 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C1092A3004398E9 |
:1000F00085E090E09093840080938300AFDFD0D7B9 |
:1001000088EC90E053D5C12FDD27D0938400C093B5 |
:100110008300EE24FF248701EA14FB040C051D056F |
:1001200078F480916700882311F469D201C0C2D4A9 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E08CD9A21AA2 |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F099D78091DF |
:10017000A5008F5F8093A5008091A50066E053D90C |
:100180009093A50024D5D0938400C093830066DFAC |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089580917B0090917C00892B09F08D |
:1001C00043C04091790050917A004115510571F07A |
:1001D00090918E008FEF989FC001112468EC70E021 |
:1001E0002ED9709386006093850036C080919A0066 |
:1001F000882341F120919C0030919D0081E02D32B7 |
:10020000380708F09A01293C310510F028EC30E05D |
:100210002B30310528F450938600409385001BC095 |
:100220008CEF90E0289FA001299F500D389F500D22 |
:100230001124CA01885D994064EB70E000D9CB01BC |
:10024000039605C0AB9A08C08091940399279093B8 |
:10025000860080938500AB98809185009091860000 |
:100260008F3F910539F030F08FEF90E0909386004A |
:100270008093850080918500992708958091810061 |
:1002800090918200909384038093830380917F00F8 |
:1002900099279093860380938503809170009091B5 |
:1002A0007100909388038093870380919C009091C4 |
:1002B0009D0090938A03809389030895CFE5D4E04D |
:1002C000DEBFCDBFCC2488E084BB85BB8AEB81BB7D |
:1002D00080E882BB8EE087BB81E388BB88B3806CFB |
:1002E00088BBB69B06C0B79B02C081E007C082E016 |
:1002F00005C0B79B02C083E001C084E0809360002A |
:10030000A6D337D47894C0E0D0E0809160009927DC |
:10031000C817D90709F4979A86E990E047D49798C7 |
:100320008AEF90E043D42196C530D10574F3C5E03F |
:10033000D0E084EF91E03AD4B6DE80E545D583D4B1 |
:1003400085E690E01FD486E690E01CD487E690E036 |
:1003500019D48C018EEF90E015D44C018DEE93E012 |
:1003600011D47C018EEE93E00DD45C01C80113D44E |
:100370008823E1F3979A10928400109283006EDE36 |
:1003800088E080BF81E087B98AE090E0FBD38C01F0 |
:1003900081E090E0909386038093850310929D0006 |
:1003A00010929C008091A5008C1551F01092630072 |
:1003B0001092640082E390E0E5D38C01C090A50028 |
:1003C0008091830090918400892BC9F4109274006D |
:1003D00010926400C301DFD38823E1F01092A300E0 |
:1003E000439881E08093630082B3877C82BB82E084 |
:1003F0008FBD81E485BD85B3817F85BB0BC08091B6 |
:100400006300882319F081E0809374008CED95E0FF |
:10041000B9D33C0123DE809164008F5F8093640038 |
:10042000813009F0BFCF809163008111979AC40198 |
:10043000B2D3882339F182E390E0A4D34C018091B8 |
:100440007F00482F5527209181003091820042176C |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937F0080917F0090916200893728F00F |
:10047000915090936200AB9A05C09F3F19F09F5F27 |
:1004800090936200C70187D3882319F18AE090E036 |
:1004900079D37C012091720030917300C901880FDB |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E0C5D770937100609370001092730064 |
:1004C0001092720080919A00882319F481E0809341 |
:1004D0006100C50160D3882379F18CED95E052D39A |
:1004E0005C01C230D105A9F0C330D10534F42097A6 |
:1004F00051F0C130D10551F01DC0C330D10561F0BC |
:10050000249791F017C082E390E008C082E890E061 |
:1005100005C08CE390E002C08CE890E090938400EA |
:1005200080938300219608C086E990E09093840030 |
:1005300080938300C0E0D0E0C8012DD3882331F040 |
:100540008091700090917100892B29F08091740046 |
:10055000882309F427CF21E0D22ED0926300109295 |
:10056000A300439884E690E00DD38C018091740041 |
:10057000882309F417CFAB98109274008AE0A4DDA9 |
:10058000979A109263008091A50081508093A500F6 |
:1005900081E090E090938400809383005FDD88B1D8 |
:1005A0008C7F88B9D092A30088B18A6088B984E62C |
:1005B00090E0E8D28C01C801EED28823E1F38AE012 |
:1005C00090E0909384008093830048DD88EC90E075 |
:1005D000D9D28C01C801DFD28823E1F382E390E015 |
:1005E000D1D27C0197E0C92EDDCE1F920F920FB6BB |
:1005F0000F9211240F900FBE0F901F9018955E9BC5 |
:1006000024C0809167008823E1F480918F0090914D |
:10061000900001969093900080938F00FC01E95523 |
:10062000FD4FE081ED3019F08436910539F41092D8 |
:10063000900010928F0081E080936700589AECB987 |
:1006400008951092900010928F0008951F93CF93F9 |
:10065000DF93EC0110E0662309F460C0A22FBB27F2 |
:100660001297E42FFF27E35FFC4F30813D534F5F2C |
:10067000E42FFF27E35FFC4F50815D534F5FE42F72 |
:10068000FF27E35FFC4F70817D534F5FE42FFF270F |
:10069000E35FFC4FE081ED534F5F842F9927A8174C |
:1006A000B907E4F1832F9927880F991F880F991FA5 |
:1006B000352F32953F70382B852F99278F7090708A |
:1006C00054E0880F991F5A95E1F7572F5695569584 |
:1006D000582B872F99278370907026E0880F991FD9 |
:1006E0002A95E1F78E2B61506F3FC1F0FE01E10FBB |
:1006F000F11D30831F5F61506F3F81F0FE01E10FFC |
:10070000F11D50831F5F61506F3F41F0FE01E10F0B |
:10071000F11D80831F5F662309F0A3CFDF91CF9186 |
:100720001F910895CF93C82F8A3011F48DE0FADF1E |
:100730005D9BFECFCCB980E090E0CF9108951F92F1 |
:100740000F920FB60F9211242F933F934F935F9305 |
:100750006F937F938F939F93AF93BF93CF93DF93C9 |
:10076000EF93FF938CB180938D00409195004436B8 |
:1007700010F01092960050918D005D3009F064C029 |
:1007800080919600823009F05FC010929600A42FED |
:10079000BB27A35FBC4FFD01329780812091910060 |
:1007A00030919200281B3109ED0121978881281B87 |
:1007B0003109C9019F70909392008093910066E087 |
:1007C000969587956A95E1F7982F935C909393009F |
:1007D0002F733070235C209394008081981709F068 |
:1007E00082C08881281709F07EC0409387005C93FF |
:1007F00080910F03823549F488E190E02CE00FB638 |
:10080000F894A89581BD0FBE21BD80910F038ADFAA |
:1008100080910F03843709F066C02091870043E080 |
:1008200064E088E890E012DF80916000E82FFF2705 |
:10083000E957FF4F808180938E0084EF91E0909381 |
:100840007A00809379004FC020919600822F9927DB |
:1008500081309105F9F0823091051CF4892B21F04B |
:1008600040C0029711F13DC080918D00833239F470 |
:1008700080918C00882319F481E080939600809108 |
:100880008D0080930D0381E08093950080918D0011 |
:10089000992722C02F5F20939600E42FFF27E35F64 |
:1008A000FC4F80918D00808309C0E42FFF27E35F18 |
:1008B000FC4F80918D008083443620F44F5F40933D |
:1008C000950002C01092960020918D0080919100B9 |
:1008D00090919200820F911D9093920080939100CD |
:1008E00002C010929600FF91EF91DF91CF91BF91DE |
:1008F000AF919F918F917F916F915F914F913F91B8 |
:100900002F910F900FBE0F901F901895AC01A0E093 |
:10091000B0E09D01A817B90748F4E7EAF2E0819139 |
:10092000280F311D1196A417B507C8F33F70FD01BC |
:10093000E955FD4FC90176E0969587957A95E1F7DF |
:10094000835C80831196FD01E955FD4F2F73307054 |
:10095000822F835C8083A855BD4F8DE08C931092CD |
:1009600067008091A7028CB908951F93CF93DF93FE |
:10097000382FEA01722F10E083E28093A702609380 |
:10098000A8023093A902A3E0B0E0772309F458C08D |
:10099000772311F4972F07C0FE01E10FF11D1F5FB0 |
:1009A0009081715011F4472F0EC0FE01E10FF11D2F |
:1009B0001F5F4081715039F0FE01E10FF11D1F5F93 |
:1009C0006081715001C0672FFD01E955FD4F892FEE |
:1009D00086958695835C80831196FD01E955FD4FD0 |
:1009E000892F99278370907024E0880F991F2A958A |
:1009F000E1F755279A0194E0369527959A95E1F706 |
:100A0000822B835C80831196FD01E955FD4F4F7069 |
:100A10005070440F551F440F551F862F992726E00D |
:100A2000969587952A95E1F7842B835C80831196B0 |
:100A3000FD01E955FD4F6F73635C60831196A5CF8F |
:100A4000CD0164DFDF91CF911F910895089588E172 |
:100A50008AB9599A579A80E189B960E070E082E9D1 |
:100A600093E084D388EC90E08DD090930C03809336 |
:100A70000B038AE057DE82E455DE8CE453DE8AE322 |
:100A800051DE86E54FDE80E34DDE8EE24BDE83E312 |
:100A900049DE82E347DE8AE045DE81E443DE84E42A |
:100AA00041DE82E53FDE8AE33DDE80916000805DCD |
:100AB00039DE089580910B0390910C036CD088234C |
:100AC00091F080916700882371F022E241E753E0C2 |
:100AD0006091A60284E449DF82E390E053D09093D2 |
:100AE0000C0380930B0308951F920F920FB60F9281 |
:100AF00011248F939F93809193038F5F809393032F |
:100B0000809199008150809399008F3F59F583E03F |
:100B1000809399008091970090919800019690930E |
:100B200098008093970080917B0090917C000097C3 |
:100B300029F0019790937C0080937B0080919A002C |
:100B4000882329F080919A00815080939A008091A7 |
:100B5000790090917A00009729F0019790937A009C |
:100B6000809379009F918F910F900FBE0F901F90EF |
:100B7000189582E083BF89B7816089BF89B7806497 |
:100B800089BF08952091970030919800280F391F50 |
:100B9000C901019708952091970030919800821B18 |
:100BA000930B892F9927807899270895CF93DF9306 |
:100BB000E9DFEC01CE01EFDF8823E1F3DF91CF9194 |
:100BC000089586EA86B987E087B9369A089527B1ED |
:100BD00096E097B910BE83ED86B9349A97B9369AE4 |
:100BE000349BFECF27B944B155B1440F551F440F74 |
:100BF000551F493C510510F048EC50E02091810010 |
:100C000030918200C90163E0880F991F6A95E1F76E |
:100C1000821B930B840F951F23E0969587952A9549 |
:100C2000E1F7909382008093810020918000332728 |
:100C30002817390720F4809181008093800016B82E |
:100C400088E080BF08958EB5806C8EBD8EB58064BF |
:100C50008EBD89B7806289BF89B7846089BF0895D6 |
:100C60001F920F920FB60F9211248F9380919B00C9 |
:100C70008F5F80939B008F910F900FBE0F901F90FE |
:100C800018951F920F920FB60F9211242F933F9336 |
:100C90008F939F930EB406FE0FC010929B0086B5F3 |
:100CA00097B590939F0080939E008EB58F7B8EBDED |
:100CB00084E680939A0070C08EB580648EBD26B5A0 |
:100CC00037B580919E0090919F00281B390B809131 |
:100CD0009B009927982F8827990F280F391F689410 |
:100CE00014F8369527951694E1F73093A1002093D8 |
:100CF000A0002851314030F488E191E09093A100A8 |
:100D00008093A0002091A0003091A1002851314093 |
:100D10003093A1002093A00080919C0090919D00B1 |
:100D20008217930730F480919C0090919D0001966A |
:100D30000CC080919C0090919D002817390748F4C1 |
:100D400080919C0090919D00019790939D008093CD |
:100D50009C0020919C0030919D00C901880F991F33 |
:100D6000880F991F880F991F821B930B2091A00059 |
:100D70003091A100820F931F23E0969587952A95C5 |
:100D8000E1F79093A1008093A00090939D00809341 |
:100D90009C0081E0809361009F918F913F912F9102 |
:100DA0000F900FBE0F901F9018951F920F920FB6C5 |
:100DB0000F9211248F938AB78F7B8ABF8F910F90E8 |
:100DC0000FBE0F901F90189590916000990F980F8B |
:100DD00092B985EC86BF08951F920F920FB60F92BD |
:100DE00011248F939F9381B19927887F90708038C9 |
:100DF0009105E9F08138910534F40097B1F180361E |
:100E0000910579F035C0883B9105D9F0893B910572 |
:100E100024F4883A9105A9F02BC0883F910511F17F |
:100E200027C086B7806886BF1092A20023C083B116 |
:100E30008093940384EF91E090937C0080937B00F7 |
:100E40000EC09091A200992339F480917F0083B95C |
:100E50009F5F9093A20003C08091620083B986B720 |
:100E6000806807C086B7806986BF86B7806986BFFD |
:100E700085EC86BF9F918F910F900FBE0F901F90B2 |
:100E800018951F920F920FB60F9211240F900FBE5C |
:100E90000F901F9018951F920F920FB60F9211246A |
:100EA0001F932F933F934F935F936F937F938F93F2 |
:100EB0009F93AF93BF93CF93EF93FF93459B02C054 |
:100EC00011E001C010E08091A500992782309105C2 |
:100ED00009F450C0833091052CF4009779F0019704 |
:100EE00039F1BFC08430910509F478C08430910590 |
:100EF0000CF45AC0059709F48BC0B3C082EA8FBDC9 |
:100F000081E685BD88E087BB112369F082B3877EC7 |
:100F100082BB959AC1E0C4BD80916100811157DE0A |
:100F20004098C7B91BC082B3877D82BB949A99C091 |
:100F300082B3877E82BB959A1123B1F482EA8FBD7A |
:100F400081E485BD8CE087BB81E084BD8091610038 |
:100F500081113DDE17B988B1836088B98091A50001 |
:100F60008F5F8093A5006DC082EA8FBD81E685BD4D |
:100F700088E076C082EA8FBD81E485BD8CE087BBC6 |
:100F8000112369F082B38F7C82BB939A81E084BD88 |
:100F90008091610081111BDE82E087B932C082B38B |
:100FA000877E82BB959A5DC082B38F7C82BB939A09 |
:100FB000112371F482EA8FBD81E485BD8AE087BB8D |
:100FC000C1E0C4BD80916100811101DEC7B9C3CF0A |
:100FD00082EA8FBD81E485BD8CE042C082EA8FBD8C |
:100FE00081E485BD8AE087BB112369F082B3877DE8 |
:100FF00082BB949A81E084BD809161008111E7DD1C |
:1010000017B84098ABCF82B38F7C82BB939A29C02C |
:1010100082B3877D82BB949A1123E9F482EA8FBD63 |
:1010200081E685BD88E087BB81E084BD8091610059 |
:101030008111CDDD82E087B988B1836088B91093D2 |
:10104000A5008091720090917300019690937300B7 |
:101050008093720006C082EA8FBD81E485BD8AE07C |
:1010600087BB459903C0112309F028CF459B03C0D6 |
:10107000112309F423CF10926100FF91EF91CF91DA |
:10108000BF91AF919F918F917F916F915F914F91A0 |
:101090003F912F911F910F900FBE0F901F901895A9 |
:1010A0008091A50099278230910551F183309105F7 |
:1010B0002CF4009769F00197B9F0089584309105F8 |
:1010C000E1F1843091055CF1059709F443C008957E |
:1010D00082EA8FBD81E685BD88E087BB82B3877DCC |
:1010E00082BB949A82E034C082EA8FBD81E685BDDE |
:1010F00088E087BB82B3877E82BB959A81E01AC065 |
:1011000082EA8FBD81E485BD8CE087BB82B3877E98 |
:1011100082BB959A17B888B1836088B9089582EA2E |
:101120008FBD81E485BD8CE087BB82B38F7C82BBA1 |
:10113000939A82E087B94098089582EA8FBD81E44E |
:1011400085BD8AE087BB82B38F7C82BB939A81E0A6 |
:1011500087B9E1CF82EA8FBD81E485BD8AE087BB94 |
:1011600082B3877D82BB949A17B8E5CF0F931F9304 |
:10117000CF93DF938C01EB01009711F4672BB9F14A |
:101180006EE070E081E090E037D0FC01892B71F1D6 |
:1011900080E88383209771F0D387C28781E88383B7 |
:1011A0008091950390919603892B21F4F0939603F7 |
:1011B000E093950301151105C9F01187008783811C |
:1011C000826083838091970390919803892B71F4B7 |
:1011D000F0939803E09397038091990390919A0379 |
:1011E000892B21F4F0939A03E0939903CF01DF91C7 |
:1011F000CF911F910F9108950F931F93CF93DF937A |
:10120000869F8001879F100D969F100D1124C801A5 |
:101210000DD0EC01009721F0A80160E070E0FCD057 |
:10122000CE01DF91CF911F910F910895CF93DF935E |
:10123000AC01029710F442E050E020E030E0A091D1 |
:101240009D03B0919E03BD01F901109709F44CC0B4 |
:101250008D919C9111978417950731F14817590783 |
:1012600038F42115310519F08217930708F49C0111 |
:10127000FD01A281B381109759F721153105A1F124 |
:10128000C901841B950B049708F4A901DB01E0E078 |
:10129000F0E0109749F18D919C9111978217930777 |
:1012A000F9F44217530779F4ED018A819B81309755 |
:1012B00019F09383828304C090939E0380939D03CF |
:1012C000CD0102964AC0241B350BFD01E20FF31F2E |
:1012D00041935193225030402D933C93CF013DC018 |
:1012E000FD01A281B381D5CF80919B0390919C0396 |
:1012F000892B41F480916B0090916C0090939C033A |
:1013000080939B03E0916900F0916A00309741F46B |
:10131000EDB7FEB780916D0090916E00E81BF90B60 |
:10132000A0919B03B0919C039F012A1B3B0B2417A8 |
:10133000350788F0CA0102962817390760F0CD01F9 |
:10134000840F951F029690939C0380939B034D936B |
:101350005D93CD0102C080E090E0DF91CF910895D0 |
:10136000CF93DF93009709F454C0DC011297ED018D |
:101370001B821A8280919D0390919E03009721F118 |
:10138000FC0140E050E0EA17FB0718F1ED01FB8398 |
:10139000EA832D913C911197C20FD31FCE01029683 |
:1013A0008E179F0771F48A819B81280F391F2E5F4A |
:1013B0003F4F11963C932E9382819381FD0193833D |
:1013C00082834115510559F4B0939E03A0939D0368 |
:1013D00020C0AF010280F381E02D3097A1F6EA0131 |
:1013E000BB83AA83CA01029628813981820F931F89 |
:1013F0008A179B0771F48D919C911197280F391FC3 |
:101400002E5F3F4F39832883FD01828193819B8327 |
:101410008A83DF91CF910895DC0101C06D93415023 |
:101420005040E0F70895991B79E004C0991F961782 |
:1014300008F0961B881F7A95C9F780950895AA1B16 |
:10144000BB1B51E107C0AA1FBB1FA617B70710F0AF |
:10145000A61BB70B881F991F5A95A9F780959095E1 |
:10146000BC01CD010895A1E21A2EAA1BBB1BFD01F0 |
:101470000DC0AA1FBB1FEE1FFF1FA217B307E40773 |
:10148000F50720F0A21BB30BE40BF50B661F771FCB |
:10149000881F991F1A9469F76095709580959095AB |
:0A14A0009B01AC01BD01CF010895CE |
:1014AA000101FF01010A00016400009F03200000FE |
:00000001FF |
/tags/V0.37/Hex-Files/BL-Ctrl_V1_1/BootLoader_MEGA8_8MHZ_V0_2.hex |
---|
0,0 → 1,53 |
:101C000011241FBECFE5D4E0DEBFCDBF10E0A0E6BB |
:101C1000B0E0E0E3FFE102C005900D92A036B1070D |
:101C2000D9F710E0A0E6B0E001C01D92A23AB107DA |
:101C3000E1F714C000C008955D9BFECF8CB90895F4 |
:101C40005F9BFECF8CB1992708958DE4F5DF8BE47F |
:101C5000F3DF82E4F1DF8CE4EFDF0895CFE5D4E039 |
:101C6000DEBFCDBFE0E0F0E004917F01992481B7B1 |
:101C7000885081BF90BC80E189B9599A88E18AB9BE |
:101C800086E880BDEF01192D5F9B0BC0113029F450 |
:101C90008CB18A3A49F110E004C08CB18B3109F45F |
:101CA00011E0CE01219684369105C8F00F3F41F036 |
:101CB000002331F0E0916000F091610009950FC0C0 |
:101CC0008AE0BADF8DE0B8DF86E5B6DF80E3B4DF17 |
:101CD0008EE2B2DF82E3B0DF8AE3AEDF05C080E2EE |
:101CE0009EE40197F1F7D0CFB0DFAADF813611F47F |
:101CF00089E51CC1813461F4A3DFE82EFF24FE2CAA |
:101D0000EE249EDF9927E82AF92AF694E794E1C0A9 |
:101D1000823631F489E590DF80E08EDF80E406C111 |
:101D2000823409F070C08CDF8BDFD82E89DF082F5A |
:101D3000B2E6AB2EB0E0BB2E10E0E5010894A11C8A |
:101D4000B11C1D1510F47CDF01C08FEF88831F5F6D |
:101D5000103498F336E7931609F0C9C0063409F039 |
:101D60003CC08FEFE8168BE1F80608F033C0CD2DAC |
:101D7000A70166277727440F551F661F771F6A0143 |
:101D80007B01A2E6B0E011E08D9199272D913327D8 |
:101D9000322F2227822B932B0C01FA01109357002C |
:101DA000E89511244E5F5F4F6F4F7F4FC25061F730 |
:101DB00085E0F60180935700E89507B600FCFDCF5B |
:101DC00081E180935700E8957695679557954795FB |
:101DD0007A017FC080E030DF7CC0053409F079C033 |
:101DE000F7012D2DA2E6B0E0EEBB8F2F99278FBB18 |
:101DF0008D918DBB3196E29AE19AE199FECF215007 |
:101E000099F77F0166C08736B9F51ADF19DFC82F49 |
:101E100017DF863409F5C701AA27BB276C017D01AE |
:101E2000CC0CDD1CEE1CFF1CF60105911491802FDB |
:101E300003DF812F992700DF82E090E0A0E0B0E08F |
:101E4000C80ED91EEA1EFB1EC25071F7F694E79425 |
:101E5000D794C794760149CF853409F046CFEEBABE |
:101E60008F2D99278FBBE09A0894E11CF11C8DB34C |
:101E7000E3DEC150A1F739CF853601F596E7991613 |
:101E800041F580E090E0A0E0B0E023E0FC01209389 |
:101E90005700E89507B600FCFDCF805C9F4FAF4F21 |
:101EA000BF4F8F3F3BE1930730E0A30730E0B3071C |
:101EB00068F381E180935700E8950BC0853459F4AD |
:101EC00088E190E02CE00FB6F894A89581BD0FBE94 |
:101ED00021BD8DE02BC08035E1F38C34D1F3803708 |
:101EE00011F483E523C0843721F486E7A5DE80E082 |
:101EF0001DC0843519F4A4DE982EEBCF8B3109F484 |
:101F0000F3CE8A3A09F4F0CE863521F480E394DEEC |
:101F100082E30CC0833731F487E08EDE83E98CDE08 |
:101F20008EE104C08B3109F4E0CE8FE385DEDDCE97 |
:0400000300001C00DD |
:00000001FF |
/tags/V0.37/Hex-Files/BL-Ctrl_V1_1/BrushLess-Ctrl_V0_37_for_BL-Ctrl_V1_1.hex |
---|
0,0 → 1,428 |
:1000000012C0CFC92AC029C038CA2EC926C025C0EF |
:100010001AC92FC822C058C620C0ACC51EC01DC0FA |
:1000200036CAD6C91AC011241FBECFE5D4E0DEBF40 |
:10003000CDBF10E0A0E6B0E0EAE8FAE102C005902A |
:100040000D92A637B107D9F713E0A6E7B0E001C0DB |
:100050001D92A83AB107E1F724C4D2CF20918900BC |
:1000600080916300821710F4282FAB9A809187004B |
:1000700090918800893C910560F01BBC1ABC19BCAA |
:1000800018BC13BCAB9A01979093880080938700AB |
:100090000895822F99279BBD8ABD99BD88BD23BD38 |
:1000A000089591E09FBD81E485BD8EE087BB88B354 |
:1000B000817F88BB9EBD089592B7980F82B7891B38 |
:1000C00087FDFCCF0895AF92BF92CF92DF92EF925F |
:1000D000FF920F931F93CF93DF93182F8CE2A82EDC |
:1000E00081E0B82EC12CD12C1092AA00439885E053 |
:1000F00090E090938A0080938900B0DFC1DA88ECA9 |
:1001000090E01CD8C12FDD27D0938A00C0938900CE |
:10011000EE24FF248701EA14FB040C051D0578F486 |
:1001200080916D00882311F42FD501C088D784E613 |
:10013000C3DF0894E11CF11C011D111DECCFC601A9 |
:10014000B5012FE030E040E050E07DDCA21AB30AB8 |
:10015000C40AD50A0894A108B108C108D10889E1E8 |
:10016000A816B104C104D104C8F08ADA8091AC00A9 |
:100170008F5F8093AC008091AC0066E044DC90938C |
:10018000AC00EDD7D0938A00C093890067DF449B11 |
:10019000BFCF82B390E8892782BBBACFDF91CF91DE |
:1001A0001F910F91FF90EF90DF90CF90BF90AF9095 |
:1001B0000895CF93C82F7894C150CF3F49F0AB9AA0 |
:1001C0008CE291E0BBD7AB988CE291E0B7D7F4CF4B |
:1001D00088EE93E0B3D7CF910895CF93DF93EC01EE |
:1001E00021978FEFCF3FD807B9F002D88091AD02A9 |
:1001F0009091AE0288589F4F2091870030918800DF |
:100200008217930768F782B3877C82BB88B3817FAC |
:1002100088BB81E090E002C080E090E0DF91CF9168 |
:10022000089501972FEF8F3F9207D9F780E090E074 |
:1002300008959F92AF92BF92CF92DF92EF92FF927A |
:100240000F931F93CF93DF93CDB7DEB725970FB6EC |
:10025000F894DEBF0FBECDBF5E010894A11CB11C97 |
:10026000D501E8E6F0E085E001900D928150E1F7DC |
:10027000C82ED82E22E3922EAB9880916100F50112 |
:10028000E80FF11D8081282F33278CE291E0289F11 |
:10029000A001299F500D389F500D1124CA014ED73F |
:1002A000C092AA004398F8948AE001D582B3877C73 |
:1002B00082BB11E01FBD81E485BD8EE087BB88B3A2 |
:1002C000817F88BB1092860082E390E086DF809178 |
:1002D000860099279093AE028093AD021092880019 |
:1002E00010928700949AC39A83E090E076DF882387 |
:1002F00019F0C12E81E3DBD482B3877C82BB88B343 |
:10030000817F88BB88EE93E08CDF1092880010928A |
:100310008700939AC29A83E090E05FDF882321F000 |
:1003200092E0C92E82E3C3D482B3877C82BB88B3B8 |
:10033000817F88BB88EE93E074DF10928800109272 |
:100340008700949AC19A83E090E047DF882321F0E8 |
:1003500083E0C82E83E3ABD482B3877C82BB88B3AF |
:10036000817F88BB88EE93E05CDF939AC19A83E03B |
:1003700090E033DF882321F003E0C02E87E397D499 |
:1003800082B3877C82BB88B3817F88BB80E197E2A0 |
:1003900024DFCC2019F08C2D0CDFFDCF8CB1803206 |
:1003A000B9F41FEFE12EF12EB8E29B2E8FE57FD43A |
:1003B00013C0A4E0CA2E84E37AD442C0F5E0CF2E65 |
:1003C00085E375D474C0E6E0CE2E86E370D4A6C073 |
:1003D00078EEE72E73E0F72E1092880010928700D7 |
:1003E00000E010E00E151F0558F5939A81E090E0AB |
:1003F000F4DE82B3877C82BB88B3817F88BB85E0D3 |
:1004000090E00FDFC39A81E090E0E7DE82B3877C63 |
:1004100082BB88B3817F88BB8091AD029091AE0290 |
:10042000890D911D209187003091880082179307D4 |
:1004300008F4BFCF85E090E0F4DE0F5F1F4FD2CF0E |
:1004400080E197E2EEDE109288001092870000E0D3 |
:1004500010E00E151F0558F5949A81E090E0BDDE7E |
:1004600082B3877C82BB88B3817F88BB85E090E0C4 |
:10047000D8DEC29A81E090E0B0DE82B3877C82BB96 |
:1004800088B3817F88BB8091AD029091AE02890DC7 |
:10049000911D20918700309188008217930708F4FE |
:1004A0008DCF85E090E0BDDE0F5F1F4FD2CF109261 |
:1004B00088001092870080E197E2B3DE00E010E050 |
:1004C0000E151F0558F5959A81E090E086DE82B3FF |
:1004D000877C82BB88B3817F88BB85E090E0A1DE0A |
:1004E000C19A81E090E079DE82B3877C82BB88B3D9 |
:1004F000817F88BB8091AD029091AE02890D911DE4 |
:1005000020918700309188008217930708F45BCF11 |
:1005100085E090E086DE0F5F1F4FD2CF17B882B321 |
:10052000877C82BB88B3817F88BB949A959A10920E |
:1005300088001092870008E710E0C39A82E090E0FC |
:1005400070DE80E090E042D6C3971CF051E0D52ADF |
:1005500002C08EEFD82218BA8CE291E062DE015020 |
:10056000104017FFEACF82B3877C82BB88B3817FBC |
:1005700088BB939A959A04E810E0C29A82E090E0D2 |
:1005800050DE81E090E022D6C3971CF0E2E0DE2A44 |
:1005900002C0FDEFDF2218BA8CE291E042DE01508A |
:1005A000104017FFEACF82B3877C82BB88B3817F7C |
:1005B00088BB939A949A0EE610E0C19A82E090E08C |
:1005C00030DE82E090E002D6C3971CF044E0D42AEB |
:1005D00002C05BEFD52218BA8AE491E022DE015016 |
:1005E000104017FFEACF82B3877C82BB88B3817F3C |
:1005F00088BB81E087B9939A08E710E0C29A82E04D |
:1006000090E00FDE80E090E0E1D5C3971CF087EF2B |
:10061000D82202C0E8E0DE2A18BA8AE491E001DEBE |
:100620000150104017FFEACF959A04E810E0C29AF3 |
:1006300082E090E0F6DD82E090E0C8D5C3971CF040 |
:10064000FFEDDF2202C040E2D42A18BA88E691E02A |
:10065000E8DD0150104017FFEACF82B3877C82BBF0 |
:1006600088B3817F88BB82B3877C82BB88B3817F5C |
:1006700088BB949A0EE610E0C19A82E090E0D1DD4A |
:1006800081E090E0A3D5C3971CF05FEED52202C0B5 |
:1006900080E1D82A18BA88E691E0C3DD0150104005 |
:1006A00017FFEACF82B3877C82BB88B3817F88BB88 |
:1006B000789480916100A80EB11CF501208184E03E |
:1006C00090E0821B91092CE231E0829FA001839F80 |
:1006D000500D929F500D1124CA0130D58D2D9927B0 |
:1006E00080FD04C061E0C62E81E405C081FD05C027 |
:1006F00052E0C52E82E48CB91AC082FD04C043E0EA |
:10070000C42E83E4F8CF83FD04C034E0C32E81E619 |
:10071000F2CF84FD04C025E0C22E82E6ECCF85FD39 |
:1007200004C096E0C92E83E6E6CFCC2019F088EE0F |
:1007300093E004D58C2D3DDD8EE2B9D225960FB61F |
:10074000F894DEBF0FBECDBFDF91CF911F910F9107 |
:10075000FF90EF90DF90CF90BF90AF909F90089563 |
:100760008091810090918200892B09F05BC04091BB |
:100770007F00509180004115510599F090919400AF |
:100780008FEF989FC001112468EC70E048D97093F6 |
:100790008C0060938B001092600089B78F7D89BFB9 |
:1007A00032C08091A000853180F181E080936000AB |
:1007B0002091A3003091A40081E02D32380708F089 |
:1007C0009A01293C310510F028EC30E02B3031053E |
:1007D00028F450938C0040938B0015C08CEF90E070 |
:1007E000289FA001299F500D389F500D1124CA0148 |
:1007F000885D994064EB70E012D9CB010396909329 |
:100800008C0080938B00AB981AC080918B009091E4 |
:100810008C00009729F0019790938C0080938B00B7 |
:10082000AB9A0DC080919D03992790938C00809383 |
:100830008B0010926000AB9889B78F7D89BF809143 |
:100840008B0090918C008F3F910539F030F08FEF45 |
:1008500090E090938C0080938B0080918B0099277F |
:100860000895809187009091880090938D038093E4 |
:100870008C0380918500992790938F0380938E033A |
:1008800080917600909177009093910380939003EC |
:100890008091A3009091A40090939303809392037E |
:1008A0000895CFE5D4E0DEBFCDBFEE2488E084BB61 |
:1008B00085BB8AEB81BBE2BA8EE087BB81E388BB54 |
:1008C00088B3806C88BB83EF91E0C29797FFFDCF20 |
:1008D000B69B06C0B79B02C081E007C082E005C09E |
:1008E000B79B02C083E001C084E08093610074D3B1 |
:1008F00008D47894D6DB80E563D598D485E690E07B |
:1009000009D486E690E006D487E690E003D4EC01B3 |
:100910008EEF90E0FFD36C018DEE93E0FBD38C0162 |
:100920008EEE93E0F7D303C01BDF882321F4CE01C2 |
:10093000FAD38823C9F3979A10928A0010928900FB |
:100940008DDB88E080BF81E087B98AE090E0E2D368 |
:10095000EC0181E090E090938F0380938E031092DE |
:10096000A4001092A300FCDE882309F462DC81E37A |
:1009700088BBF6DE992790938A0080938900809146 |
:10098000AC008E1551F010926400109265008AEF51 |
:1009900090E0C0D3EC01E090AC0080918900909190 |
:1009A0008A00892BD1F410927A0010926500C5015B |
:1009B000BAD38823E9F01092AA00439891E090936B |
:1009C000640082B3877C82BB9FBD81E485BD8EE0DD |
:1009D00087BB88B3817F88BB0BC08091640088236C |
:1009E00019F081E080937A008CED95E093D35C015F |
:1009F00080916400882321F010928A00109289006F |
:100A00002DDB809165008F5F80936500813009F058 |
:100A1000B0CF809164008111979AC60184D3882356 |
:100A2000A9F182E390E076D36C0180918500482F94 |
:100A3000552720918700309188004217530710F402 |
:100A40008F5F04C02417350718F481508093850008 |
:100A5000293C310548F080916300982F9295969536 |
:100A60009770891B8093630080918500909163004B |
:100A7000893738F0992319F0915090936300AB9A1D |
:100A800005C09F3F19F09F5F90936300C8014BD34F |
:100A90008823B9F08AE090E03DD38C018091780002 |
:100AA000909179009093770080937600109279006E |
:100AB000109278008091A100882319F481E080933E |
:100AC0006200CE0130D3882331F08091760090917E |
:100AD0007700892B29F080917A00882309F449CF87 |
:100AE00041E0F42EF09264001092AA00439884E64C |
:100AF00090E010D3EC0180917A00882309F439CF7B |
:100B0000AB9810927A008AE0DEDA979A109264002D |
:100B10008091AC0081508093AC0081E090E0909394 |
:100B20008A00809389009ADA88B18C7F88B9F09224 |
:100B3000AA0088B18A6088B984E190E0EBD2EC0128 |
:100B4000CE01F1D28823E1F38FE090E090938A0008 |
:100B50008093890083DA8CE291E0DCD2EC01CE0153 |
:100B6000E2D28823E1F382E390E0D4D28C0137E033 |
:100B7000E32EFFCE1F920F920FB60F9211240F900B |
:100B80000FBE0F901F9018955E9B24C080916D0042 |
:100B90008823E1F4809195009091960001969093BE |
:100BA000960080939500FC01E055FD4FE081ED300B |
:100BB00019F08436910539F4109296001092950040 |
:100BC00081E080936D00589AECB9089510929600D8 |
:100BD0001092950008951F93CF93DF93EC0110E0DE |
:100BE000662309F460C0A22FBB271297E42FFF27CA |
:100BF000EA5EFC4F30813D534F5FE42FFF27EA5EF2 |
:100C0000FC4F50815D534F5FE42FFF27EA5EFC4F9E |
:100C100070817D534F5FE42FFF27EA5EFC4FE08138 |
:100C2000ED534F5F842F9927A817B907E4F1832F5D |
:100C30009927880F991F880F991F352F32953F707C |
:100C4000382B852F99278F70907054E0880F991F4B |
:100C50005A95E1F7572F56955695582B872F992778 |
:100C60008370907026E0880F991F2A95E1F78E2BEC |
:100C700061506F3FC1F0FE01E10FF11D30831F5F36 |
:100C800061506F3F81F0FE01E10FF11D50831F5F46 |
:100C900061506F3F41F0FE01E10FF11D80831F5F46 |
:100CA000662309F0A3CFDF91CF911F910895CF93D1 |
:100CB000C82F8A3011F48DE0FADF5D9BFECFCCB9EE |
:100CC00080E090E0CF9108951F920F920FB60F929F |
:100CD00011242F933F934F935F936F937F938F9341 |
:100CE0009F93AF93BF93CF93DF93EF93FF938CB119 |
:100CF0008093930040919B00443610F010929C002A |
:100D0000509193005D3009F064C080919C00823066 |
:100D100009F05FC010929C00A42FBB27AA5EBC4FB5 |
:100D2000FD01329780812091970030919800281B17 |
:100D30003109ED0121978881281B3109C9019F7074 |
:100D4000909398008093970066E0969587956A95B2 |
:100D5000E1F7982F935C909399002F733070235C88 |
:100D600020939A008081981709F082C08881281703 |
:100D700009F07EC040938D005C938091180382350A |
:100D800049F488E190E02CE00FB6F894A89581BD75 |
:100D90000FBE21BD809118038ADF8091180384372C |
:100DA00009F066C020918D0043E064E08EE890E099 |
:100DB00012DF80916100E82FFF27E357FF4F80810A |
:100DC0008093940084EF91E09093800080937F0063 |
:100DD0004FC020919C00822F992781309105F9F016 |
:100DE000823091051CF4892B21F040C0029711F14B |
:100DF0003DC080919300833239F480919200882322 |
:100E000019F481E080939C008091930080931603F5 |
:100E100081E080939B0080919300992722C02F5FEF |
:100E200020939C00E42FFF27EA5EFC4F8091930003 |
:100E3000808309C0E42FFF27EA5EFC4F8091930076 |
:100E40008083443620F44F5F40939B0002C0109291 |
:100E50009C00209193008091970090919800820FC0 |
:100E6000911D909398008093970002C010929C006F |
:100E7000FF91EF91DF91CF91BF91AF919F918F91B2 |
:100E80007F916F915F914F913F912F910F900FBE86 |
:100E90000F901F901895AC01A0E0B0E09D01A8173D |
:100EA000B90748F4E0EBF2E08191280F311D11966B |
:100EB000A417B507C8F33F70FD01E055FD4FC90108 |
:100EC00076E0969587957A95E1F7835C8083119615 |
:100ED000FD01E055FD4F2F733070822F835C8083BE |
:100EE000AF54BD4F8DE08C9310926D008091B00295 |
:100EF0008CB908951F93CF93DF93382FEA01722F97 |
:100F000010E083E28093B0026093B1023093B202AA |
:100F1000A3E0B0E0772309F458C0772311F4972FAA |
:100F200007C0FE01E10FF11D1F5F9081715011F4A8 |
:100F3000472F0EC0FE01E10FF11D1F5F4081715070 |
:100F400039F0FE01E10FF11D1F5F6081715001C09A |
:100F5000672FFD01E055FD4F892F86958695835CAF |
:100F600080831196FD01E055FD4F892F99278370ED |
:100F7000907024E0880F991F2A95E1F755279A0170 |
:100F800094E0369527959A95E1F7822B835C8083D0 |
:100F90001196FD01E055FD4F4F705070440F551FE5 |
:100FA000440F551F862F992726E0969587952A95F9 |
:100FB000E1F7842B835C80831196FD01E055FD4FA2 |
:100FC0006F73635C60831196A5CFCD0164DFDF9101 |
:100FD000CF911F910895089588E18AB9599A579A37 |
:100FE00080E189B960E070E087E596E0AFD388ECF6 |
:100FF00090E090D090931503809314038AE057DE1D |
:1010000082E455DE8CE453DE8AE351DE86E54FDE72 |
:1010100080E34DDE8EE24BDE83E349DE87E347DE8D |
:101020008AE045DE81E443DE84E441DE82E53FDEA2 |
:101030008AE33DDE80916100805D39DE0895809114 |
:101040001403909115036FD0882391F080916D0067 |
:10105000882371F022E24AE753E06091AF0284E412 |
:1010600049DF82E390E056D09093150380931403F8 |
:1010700008951F920F920FB60F9211248F939F9392 |
:1010800080919C038F5F80939C0380919F0081508F |
:1010900080939F008F3F71F583E080939F00809144 |
:1010A0009D0090919E00019690939E0080939D00DC |
:1010B0008091810090918200009729F00197909390 |
:1010C0008200809381008091A100882331F080917B |
:1010D000A10081508093A10002C08093A000809164 |
:1010E0007F0090918000009729F0019790938000F5 |
:1010F00080937F009F918F910F900FBE0F901F9054 |
:10110000189582E083BF89B7816089BF89B7806401 |
:1011100089BF089520919D0030919E00280F391FAE |
:10112000C9010197089520919D0030919E00821B76 |
:10113000930B892F9927807899270895CF93DF9370 |
:10114000E9DFEC01CE01EFDF8823E1F3DF91CF91FE |
:10115000089586EA86B987E087B9369A089527B157 |
:1011600096E097B910BE83ED86B9349A97B9369A4E |
:10117000349BFECF27B924B135B1220F331F220F84 |
:10118000331F4091870050918800CA0163E0880FA7 |
:10119000991F6A95E1F7841B950B280F391F83E08F |
:1011A000369527958A95E1F730938800209387003C |
:1011B0008091860099278217930720F480918700F9 |
:1011C0008093860016B888E080BF0895982F27B1D5 |
:1011D00087B910BE83ED86B9349A97B9369A349B95 |
:1011E000FECF27B916B888E080BF84B195B10895C5 |
:1011F00086E0ECDF9C01220F331F220F331F293CB6 |
:10120000310510F028EC30E03093880020938700FF |
:101210008091860099278217930720F48091870098 |
:101220008093860016B888E080BF08958EB5806CE4 |
:101230008EBD8EB580648EBD89B7806289BF89B747 |
:10124000846089BF08951F920F920FB60F921124E8 |
:101250008F938091A2008F5F8093A2008F910F9057 |
:101260000FBE0F901F9018951F920F920FB60F92FE |
:1012700011242F933F938F939F930EB406FE0FC0BC |
:101280001092A20086B597B59093A6008093A50012 |
:101290008EB58F7B8EBD84E68093A10079C08EB51C |
:1012A00080648EBD26B537B58091A5009091A600CB |
:1012B000281B390B8091A2009927982F8827990F16 |
:1012C000280F391F689414F8369527951694E1F77E |
:1012D0003093A8002093A7002851314030F488E1D2 |
:1012E00091E09093A8008093A7002091A7003091EF |
:1012F000A800285131403093A8002093A700809186 |
:10130000A3009091A4008217930730F48091A3006A |
:101310009091A40001960CC08091A3009091A4002C |
:101320002817390748F48091A3009091A4000197F1 |
:101330009093A4008093A3002091A3003091A40077 |
:10134000C901880F991F880F991F880F991F821B49 |
:10135000930B2091A7003091A800820F931F23E0E8 |
:10136000969587952A95E1F79093A8008093A7001A |
:101370009093A4008093A3008091A0008F3F29F058 |
:101380008091A0008F5F8093A00081E08093620035 |
:101390009F918F913F912F910F900FBE0F901F90B3 |
:1013A00018951F920F920FB60F9211248F938AB740 |
:1013B0008F7B8ABF8F910F900FBE0F901F90189553 |
:1013C00090916100990F980F92B985EC86BF0895AE |
:1013D0001F920F920FB60F9211248F939F9381B19A |
:1013E0009927887F907080389105E9F081389105C0 |
:1013F00034F40097B1F18036910579F035C0883B1F |
:101400009105D9F0893B910524F4883A9105A9F01A |
:101410002BC0883F910511F127C086B7806886BF31 |
:101420001092A90023C083B180939D0384EF91E0C3 |
:1014300090938200809381000EC09091A90099231F |
:1014400039F48091850083B99F5F9093A90003C010 |
:101450008091630083B986B7806807C086B78069CA |
:1014600086BF86B7806986BF85EC86BF9F918F91C6 |
:101470000F900FBE0F901F9018951F920F920FB6EE |
:101480000F9211240F900FBE0F901F9018951F926E |
:101490000F920FB60F9211242F933F934F935F93A8 |
:1014A0006F937F938F939F93AF93BF93CF93EF935C |
:1014B000FF93459B02C0C1E001C0C0E08091AC0039 |
:1014C00099278230910509F44DC0833091052CF4A1 |
:1014D000009779F0019731F1B5C08430910509F496 |
:1014E00072C0843091050CF455C0059709F483C08F |
:1014F000A9C081EA8FBD81E685BD88E087BBCC238A |
:1015000061F082B3877E82BB959A809162008111DF |
:1015100026DE409881E087B919C082B3877D82BBFF |
:10152000949A90C082B3877E82BB959ACC23A1F413 |
:1015300081EA8FBD81E685BD84E087BB8091620032 |
:1015400081110DDEC7B988B1836088B98091AC0084 |
:101550008F5F8093AC0066C081EA8FBD81E685BD58 |
:1015600088E06FC081EA8FBD81E685BD84E087BBDE |
:10157000CC2359F082B38F7C82BB939A8091620016 |
:101580008111EDDD82E087B92FC082B3877E82BBF7 |
:10159000959A58C082B38F7C82BB939ACC2369F40E |
:1015A00081EA8FBD81E685BD82E087BB80916200C4 |
:1015B0008111D5DD81E087B9C6CF81EA8FBD81E693 |
:1015C00085BD84E03EC081EA8FBD81E685BD82E0B5 |
:1015D00087BBCC2359F082B3877D82BB949A8091DC |
:1015E00062008111BCDD17B84098B0CF82B38F7C08 |
:1015F00082BB939A27C082B3877D82BB949ACC2307 |
:10160000D9F481EA8FBD81E685BD88E087BB8091F2 |
:1016100062008111A4DD82E087B988B1836088B956 |
:10162000C093AC00809178009091790001969093DE |
:1016300079008093780006C081EA8FBD81E685BD80 |
:1016400082E087BB459903C0CC2309F032CF459B8C |
:1016500003C0CC2309F42DCF10926200FF91EF91CB |
:10166000CF91BF91AF919F918F917F916F915F913A |
:101670004F913F912F910F900FBE0F901F90189593 |
:101680008091AC0099278230910551F1833091050A |
:101690002CF4009769F00197B9F008958430910512 |
:1016A000E1F1843091055CF1059709F443C0089598 |
:1016B00081EA8FBD81E685BD88E087BB82B3877DE7 |
:1016C00082BB949A82E034C081EA8FBD81E685BDF9 |
:1016D00088E087BB82B3877E82BB959A81E01AC07F |
:1016E00081EA8FBD81E685BD84E087BB82B3877EBA |
:1016F00082BB959A17B888B1836088B9089581EA4A |
:101700008FBD81E685BD84E087BB82B38F7C82BBC1 |
:10171000939A82E087B94098089581EA8FBD81E667 |
:1017200085BD82E087BB82B38F7C82BB939A81E0C8 |
:1017300087B9E1CF81EA8FBD81E685BD82E087BBB5 |
:1017400082B3877D82BB949A17B8E5CF0F931F931E |
:10175000CF93DF938C01EB01009711F4672BB9F164 |
:101760006EE070E081E090E037D0FC01892B71F1F0 |
:1017700080E88383209771F0D387C28781E88383D1 |
:1017800080919E0390919F03892B21F4F0939F03F6 |
:10179000E0939E0301151105C9F01187008783812D |
:1017A000826083838091A0039091A103892B71F4BF |
:1017B000F093A103E093A0038091A2039091A3036F |
:1017C000892B21F4F093A303E093A203CF01DF91CF |
:1017D000CF911F910F9108950F931F93CF93DF9394 |
:1017E000869F8001879F100D969F100D1124C801C0 |
:1017F0000DD0EC01009721F0A80160E070E0FCD072 |
:10180000CE01DF91CF911F910F910895CF93DF9378 |
:10181000AC01029710F442E050E020E030E0A091EB |
:10182000A603B091A703BD01F901109709F44CC0BC |
:101830008D919C9111978417950731F1481759079D |
:1018400038F42115310519F08217930708F49C012B |
:10185000FD01A281B381109759F721153105A1F13E |
:10186000C901841B950B049708F4A901DB01E0E092 |
:10187000F0E0109749F18D919C9111978217930791 |
:10188000F9F44217530779F4ED018A819B8130976F |
:1018900019F09383828304C09093A7038093A603D7 |
:1018A000CD0102964AC0241B350BFD01E20FF31F48 |
:1018B00041935193225030402D933C93CF013DC032 |
:1018C000FD01A281B381D5CF8091A4039091A5039E |
:1018D000892B41F480917100909172009093A5033F |
:1018E0008093A403E0916F00F0917000309741F471 |
:1018F000EDB7FEB78091730090917400E81BF90B6F |
:10190000A091A403B091A5039F012A1B3B0B2417B0 |
:10191000350788F0CA0102962817390760F0CD0113 |
:10192000840F951F02969093A5038093A4034D9373 |
:101930005D93CD0102C080E090E0DF91CF910895EA |
:10194000CF93DF93009709F454C0DC011297ED01A7 |
:101950001B821A828091A6039091A703009721F120 |
:10196000FC0140E050E0EA17FB0718F1ED01FB83B2 |
:10197000EA832D913C911197C20FD31FCE0102969D |
:101980008E179F0771F48A819B81280F391F2E5F64 |
:101990003F4F11963C932E9382819381FD01938357 |
:1019A00082834115510559F4B093A703A093A60370 |
:1019B00020C0AF010280F381E02D3097A1F6EA014B |
:1019C000BB83AA83CA01029628813981820F931FA3 |
:1019D0008A179B0771F48D919C911197280F391FDD |
:1019E0002E5F3F4F39832883FD01828193819B8342 |
:1019F0008A83DF91CF910895DC0101C06D9341503E |
:101A00005040E0F70895991B79E004C0991F96179C |
:101A100008F0961B881F7A95C9F780950895AA1B30 |
:101A2000BB1B51E107C0AA1FBB1FA617B70710F0C9 |
:101A3000A61BB70B881F991F5A95A9F780959095FB |
:101A4000BC01CD010895A1E21A2EAA1BBB1BFD010A |
:101A50000DC0AA1FBB1FEE1FFF1FA217B307E4078D |
:101A6000F50720F0A21BB30BE40BF50B661F771FE5 |
:101A7000881F991F1A9469F76095709580959095C5 |
:0A1A80009B01AC01BD01CF010895E8 |
:101A8A00010101FF01010A000000020103016400D3 |
:061A9A0000A8032000007B |
:00000001FF |
/tags/V0.37/Hex-Files/_BL_Ctrl_History.txt |
---|
0,0 → 1,75 |
+++++++++++++++++++++++++++++++++++ |
Brushless-Control |
Holger Buss |
buss@Mikrocontroller.com |
+++++++++++++++++++++++++++++++++++ |
V0.21 13.01.2007 |
- Erste offizielle Version |
- Unterstützt I2C und PPM |
V0.23 |
- Bei niedrigen PWM-Werten, kam es am Motor zu einem "Knackgeräusch" (besonders in der 16kHz-Variante). |
- Manchmal reagierte der Regler nicht gleich auf das PPM-Einschalt-Signal, wenn der Regler länger auf 0% war |
- Die Kommutierungserkennung läuft jetzt im Interrupt |
- Komponenten zur Drehzahlregelung wieder entfernt, weil sie den Code unleserlich machten |
Kommt in einer späteren Version wahrscheinlich wieder rein |
V0.25 |
- Es wurden zu viele Kommutierungs-Interrupts ausgelöst |
V0.27 02.02.2007 |
- X3D-Protokoll implementiert (für eine Sonderversion des X3D mit serieller Ausgabe) |
V0.31 22.2.2007 |
- Das I2C-Bus Protokoll wurde geändert: |
Jeder Motor wird jetzt mit einem eigenen Datensatz angesprochen |
Aus den Motorreglern kann jetzt Strom und MaxPWM ausgelesen werden |
- Es hatte sich ein Fehler in der Umrechnung des seriellen Wertes (X-3D) eingeschlichen; das ist hier behoben |
Mittels eines PC-Programms (SimTxData.exe) kann das X-3D-Protokoll simuliert und so die Motoren angefahren werden |
V0.32 22.8.2007 - IB |
- Serielle Empfangsroutine eingefügt |
es wird das Resetkommando für ein Bootloader-Update ausgeführt |
- Timerabfragen korrigiert (Wiederanlauf) |
- Versionsausgabe beim Start |
- Screenshot für PonyProg aktualisert (jetzt mit 2,7V Brownout) |
- Adress-Jumper auf BL-Ctrl-Platine V1.1 wird ausgewertet (#define MOTORADRESSE dann auf 0) ! |
- Ausgabe der aktuellen Adresse (seriell) |
V0.33 18.9.2007 - HB |
- Zeitverzögerung bei Lesen der Adresse (für BL-Ctrl V1.1) |
V0.34 27.09.2007 - HB |
- Endstufentest mit Tonfolge implementiert |
Nach dem Start kommt eine Tonfolge, bei der der Regler seine Endstufe testet. |
Im Falle eines Fehlers, werden Buchstaben ausgegeben, die einen Hinweis auf den Fehlerhaften MosFet geben. |
Falls mehrere Buchstaben auftreten, ist der erste ausschlaggebend. |
Falls das Piepen ausbleibt, handelt es sich um einen Überstrom durch Kurzschluss oder dauerhaft eingeschalteten FET. |
Falls der Motor nach der Testprozedur öfter piept und dabei die rote LED blinkt, schaltet der entsprechende Mosfet nicht durch. |
Dann kann man am Blinken (und Buchstaben) den Fehler erkennen. |
Dabei ist: A=A+ (1) B=B+ (2) C=C+ (3) a=A- (4) b=B- (5) c=C- (6) (in Klammern der Blinkcode) |
V0.35 30.09.2007 - HB |
Endstufentest erweitert. |
Die Fehlercodes sind: |
1: Kurzschluss Phase A (gegen B) |
2: Kurzschluss Phase B (gegen A) |
3: Kurzschluss Phase C (gegen B) |
4: Mosfet NA- schaltet nicht ab |
5: Mosfet NB- schaltet nicht ab |
6: Mosfet NC- schaltet nicht ab |
7: Kurzschluss Phase C (gegen A) |
A: NA+ schaltet nicht ein |
B: NB+ schaltet nicht ein |
C: NC+ schaltet nicht ein |
a: NA- schaltet nicht ein |
b: NB- schaltet nicht ein |
c: NC- schaltet nicht ein |
V0.36 09.12.2007 - HB |
Überstrombegrenzung für die 20A-Software verbessert, um den Shunt zu schonen |
Schwellwert der Kurzschlusserkennung erhöht, wegen Motoren mit geringerer Impendanz |
V0.37 21.01.2008 - HB |
Die Genauigkeit der PWM war Drehzahlabhängig |
/tags/V0.37/Hex-Files/_Files.txt |
---|
0,0 → 1,19 |
Dateien: |
-------- |
BrushLess-Ctrl_V0_3xx_for_BL-Ctrl_V1_1.hex --> Hexfile für BL-Ctrl V1.1 |
BootLoader_MEGA8_8MHZ_Vx_y.hex --> Bootloader für BL-Ctrl (Fusebits beachten !) |
BrushLess-Ctrl_ADR_Vx_xx.hex --> Software für ADR=Motorposition(1 bis 4) |
BrushLess-Ctrl_ADR_Vx_xx_10A.hex --> Software für ADR=Motorposition(1 bis 4) 10A-Stromgrenze |
Testprogramme (Achtung: Motor läuft an!) |
----------------------------------------- |
Test_Manuell_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft ungeregelt mit fester Frequenz |
Test_Schub_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft mit unterschiedlichen Leistungen |
Test_Sollwert_Fix_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft fix mit 7,8% PWM |
Sonstiges: |
---------- |
Fuses_Mega8_8MHZ_*.gif --> Fusebits von Ponyprog (mit und ohne Bootloader) |
/tags/V0.37/PPM_Decode.c |
---|
0,0 → 1,76 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned int PPM_Signal = 0; |
volatile unsigned char Timer1Overflow = 0; |
volatile unsigned char PPM_Timeout = 0, anz_ppm_werte = 0; // Ungültig, wenn Null |
//############################################################################ |
// |
void InitPPM(void) |
//############################################################################ |
{ |
TCCR1B |= (1<<ICES1)|(1<<ICNC1); |
ICP_POS_FLANKE; |
ICP_INT_ENABLE; |
TIMER1_INT_ENABLE; |
} |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW1) |
//############################################################################ |
{ |
Timer1Overflow++; |
} |
//############################################################################ |
// |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int tim_alt; |
static unsigned int ppm; |
if(TCCR1B & (1<<ICES1)) // Positive Flanke |
{ |
Timer1Overflow = 0; |
tim_alt = ICR1; |
ICP_NEG_FLANKE; |
PPM_Timeout = 100; |
} |
else // Negative Flanke |
{ |
ICP_POS_FLANKE; |
#ifdef _32KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 32; |
#endif |
#ifdef _16KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 32; |
#endif |
if(ppm < 280) ppm = 280; |
ppm -= 280; |
if(PPM_Signal < ppm) PPM_Signal++; |
else if(PPM_Signal > ppm) PPM_Signal--; |
if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern |
PPM_Signal = ppm; |
if(anz_ppm_werte < 255) anz_ppm_werte++; |
ZeitZumAdWandeln = 1; |
} |
} |
//############################################################################ |
// |
SIGNAL(SIG_INTERRUPT0) |
//############################################################################ |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
} |
/tags/V0.37/PPM_Decode.h |
---|
0,0 → 1,27 |
/*############################################################################ |
############################################################################*/ |
extern volatile unsigned int PPM_Signal; |
extern volatile unsigned char PPM_Timeout, anz_ppm_werte; |
void InitPPM(void); |
#define INT0_ENABLE GIMSK |= 0x40 |
#define INT0_DISABLE GIMSK &= ~0x40 |
#define TIM0_START TIMSK |= 0x01 |
#define TIM0_STOPP TIMSK &= ~0x01 |
#define ICP_INT_ENABLE TIMSK |= 0x20 |
#define ICP_INT_DISABLE TIMSK &= ~0x20 |
#define TIMER1_INT_ENABLE TIMSK |= 0x04 |
#define TIMER1_INT_DISABLE TIMSK &= ~0x04 |
#define TIMER2_INT_ENABLE TIMSK |= 0x40 |
#define TIMER2_INT_DISABLE TIMSK &= ~0x40 |
#define INT0_POS_FLANKE MCUCR |= 0x01 |
#define INT0_ANY_FLANKE MCUCR |= 0x01 |
#define INT0_NEG_FLANKE MCUCR &= ~0x01 |
#define CLR_INT0_FLAG GIFR &= ~0x40 |
#define INIT_INT0_FLANKE MCUCR &= ~0x03; MCUCR |= 0x02; |
#define TIMER0_PRESCALER TCCR0 |
#define ICP_POS_FLANKE TCCR1B |= (1<<ICES1) |
#define ICP_NEG_FLANKE TCCR1B &= ~(1<<ICES1) |
/tags/V0.37/analog.c |
---|
0,0 → 1,76 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
//############################################################################ |
//Init ADC |
void ADC_Init(void) |
//############################################################################ |
{ |
ADCSRA = 0xA6; // Free Run & 1MHZ |
ADMUX = 7; // Kanal 7 |
ADCSRA |= 0x40; // Start |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void AdConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = 0x06; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = 0x06; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
i = ADCW * 4; |
// if(i > 300) i = 300; |
Strom = (i + Strom * 7) / 8; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
//############################################################################ |
//Strom Analogwerte lesen |
unsigned int MessAD(unsigned char channel) |
//############################################################################ |
{ |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = channel; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = channel; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
return(ADCW); |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void FastADConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
i = MessAD(6) * 4; |
// i = ADCW * 4; |
if(i > 200) i = 200; |
Strom = i;//(i + Strom * 1) / 2; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
/tags/V0.37/analog.h |
---|
0,0 → 1,6 |
extern void ADC_Init(void); |
extern void GetAnalogWerte(void); |
extern void AdConvert(void); |
extern void FastADConvert(void); |
/tags/V0.37/avr.mak |
---|
0,0 → 1,129 |
# TASKING EDE (Windows based integrated Embedded Development Environment) |
# |
# This makefile has been generated by TASKING EDE |
# |
# Toolchain: TASKING C for C166/ST10 v6.0 r4 |
# |
BINDIR = c:\c166\bin |
INCDIR = c:\c166\include |
LIBDIR = c:\c166\lib |
M166INC = c:\c166\include |
export M166INC |
CC166BIN = c:\c166\bin |
export CC166BIN |
PROJ = avr |
PROJDIR = c:\winavr\projects\flug\bl_mc_0_14 |
PRODDIR = c:\c166 |
OUTDIR = |
OPT_CC = -Ic:\c166\include -xmifp -Ms -FFSC -Ot -OB -OE -zautobitastruct-4 -zautobita-0 -zswitch_tabmem_default -s -wstrict -g -zvolatile_union -A1 -O1 |
OPT_MPP = DEF(_CPU,167) DEF(_EXT,1) DEF(__XPEN,0) DEF(__WRCFG,0) DEF(__CLKEN,0) DEF(__BYTDIS,0) DEF(__ROMEN,0) DEF(__RDYEN0,0) DEF(__SGTDIS,0) DEF(__STKSZ,0) DEF(__MCTC,1) DEF(__RWDC0,0) DEF(__MTTC0,0) DEF(__ALECTL0,0) DEF(__BUSACT0,1) DEF(__RDYEN0,0) DEF(__CSREN0,0) DEF(__CSWEN0,0) DEF(__BUSACT1,0) DEF(__BUSACT2,0) DEF(__BUSACT3,0) DEF(__BUSACT4,0) DEF(EVA,1) DEF(EX_AB,0) DEF(FLOAT,1) DEF(BIT_INIT,0) DEF(MODEL,SMALL) DEF(_USRSTACK,0) DEF(_SINGLE_FP,0) WA(1) |
OPT_AS = PL(60) PW(132) TA(8) WA(1) CHECKCPU16 CHECKBUS18 EX NOM166 SN(reg167.def) |
OPT_LC = _avr.ilo -cf -Ms -xmifp |
OPT_XVW = --single_instance -tcfg sim167.cfg -i -a 100 -b 200 -c 32 -s 26 |
all : "$(PROJ).abs" |
"uart.src" : "uart.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"uart.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "uart.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"uart.obj" : "uart.src" |
"c:\c166\bin\a166.exe" "uart.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"analog.src" : "analog.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"analog.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "analog.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"analog.obj" : "analog.src" |
"c:\c166\bin\a166.exe" "analog.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"interrupt4.src" : "interrupt4.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"interrupt4.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "interrupt4.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"interrupt4.obj" : "interrupt4.src" |
"c:\c166\bin\a166.exe" "interrupt4.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"main.src" : "main.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"main.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "main.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"main.obj" : "main.src" |
"c:\c166\bin\a166.exe" "main.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"ppm_decode.src" : "ppm_decode.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"ppm_decode.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "ppm_decode.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"ppm_decode.obj" : "ppm_decode.src" |
"c:\c166\bin\a166.exe" "ppm_decode.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"printf_p.src" : "printf_p.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"printf_p.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "printf_p.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"printf_p.obj" : "printf_p.src" |
"c:\c166\bin\a166.exe" "printf_p.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"timer0.src" : "timer0.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"timer0.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "timer0.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"timer0.obj" : "timer0.src" |
"c:\c166\bin\a166.exe" "timer0.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"twislave.src" : "twislave.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"twislave.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "twislave.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"twislave.obj" : "twislave.src" |
"c:\c166\bin\a166.exe" "twislave.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"$(PROJ).out" : "uart.obj" "analog.obj" "interrupt4.obj" "main.obj" "ppm_decode.obj" |
"$(PROJ).out" : "printf_p.obj" "timer0.obj" "twislave.obj" "_avr.ilo" |
"c:\c166\bin\cc166.exe" -o $@ -f <<EOF |
${separate "\n" $(match .obj $!) $(match .lno $!) $(match .lib $!) $(OPT_LC)} |
EOF |
"$(PROJ).abs" : "$(PROJ).out" |
"c:\c166\bin\ieee166.exe" $! $@ |
# Copyright (c) 2001 Altium, Ltd. |
# Serial: 979910-094 |
# EDE Version: 2.7 r5 |
/tags/V0.37/avr.opm |
---|
0,0 → 1,4 |
-G "C:\WinAVR\Projects\Flug\BL_MC_0_14\" |
-err "avr.err" |
-r |
-f "avr.mak" |
/tags/V0.37/avr_ctrl.psp |
---|
0,0 → 1,18 |
;Codewright Project Space File (do not remove or modify this line) |
[State] |
StateWindowFrame=10,18,939,1018,0x43097fca |
_StateHistory=PROJECTS,'..\Flight-Ctrl_V0_05\AVR.pjt','.\avr.pjt' |
_RestoreProject='.\avr.pjt' |
ProjSpaceFlags=0x00000000, 1 |
ProjViewSetShow=Abcccccbcccccc |
[Project] |
ConfigSetUserWorkspace='' |
ConfigSetUserWorkspaceParser='' |
ConfigSetUserWorkspaceTimeStamp=0 |
ConfigSetUserWorkspaceAutoSync=0 |
[Project.".\avr.pjt"] |
[Project."..\Flight-Ctrl_V0_05\AVR.pjt"] |
/tags/V0.37/main.c |
---|
0,0 → 1,721 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Copyright (c) 12.2007 Holger Buss |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung oder Nutzung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int PWM = 0; |
unsigned int Strom = 0,RuheStrom; //ca. in 0,1A |
unsigned char Strom_max = 0; |
unsigned char Mittelstrom = 0; |
unsigned int Drehzahl = 0; // in 100UPM 60 = 6000 |
unsigned int KommutierDelay = 10; |
unsigned int I2C_Timeout = 0; |
unsigned int SIO_Timeout = 0; |
unsigned int SollDrehzahl = 0; |
unsigned int IstDrehzahl = 0; |
unsigned int DrehZahlTabelle[256];//vorberechnete Werte zur Drehzahlerfassung |
unsigned char ZeitFuerBerechnungen = 1; |
unsigned char MotorAnwerfen = 0; |
unsigned char MotorGestoppt = 1; |
unsigned char MaxPWM = MAX_PWM; |
unsigned int CntKommutierungen = 0; |
unsigned int SIO_Drehzahl = 0; |
unsigned char ZeitZumAdWandeln = 1; |
unsigned char MotorAdresse = 1; |
unsigned char PPM_Betrieb = 1; |
//############################################################################ |
// |
void SetPWM(void) |
//############################################################################ |
{ |
unsigned char tmp_pwm; |
tmp_pwm = PWM; |
if(tmp_pwm > MaxPWM) // Strombegrenzung |
{ |
tmp_pwm = MaxPWM; |
PORTC |= ROT; |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
PORTC |= ROT; |
Strom--; |
} |
else |
{ |
#ifdef _32KHZ |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
#ifdef _16KHZ |
//OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
} |
} |
//############################################################################ |
// |
void PWM_Init(void) |
//############################################################################ |
{ |
PWM_OFF; |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
/* TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
*/ |
} |
//############################################################################ |
// |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
while((TCNT0 - dauer) & 0x80); |
} |
//############################################################################ |
// |
void Anwerfen(unsigned char pwm) |
//############################################################################ |
{ |
unsigned long timer = 300,i; |
DISABLE_SENSE_INT; |
PWM = 5; |
SetPWM(); |
Manuell(); |
Delay_ms(200); |
PWM = pwm; |
while(1) |
{ |
for(i=0;i<timer; i++) |
{ |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
Wait(100); // warten |
} |
timer-= timer/15+1; |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return; } |
Manuell(); |
Phase++; |
Phase %= 6; |
AdConvert(); |
PWM = pwm; |
SetPWM(); |
if(SENSE) |
{ |
PORTD ^= GRUEN; |
} |
} |
} |
/* |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
*/ |
void RotBlink(unsigned char anz) |
{ |
sei(); // Interrupts ein |
while(anz--) |
{ |
PORTC |= ROT; |
Delay_ms(300); |
PORTC &= ~ROT; |
Delay_ms(300); |
} |
Delay_ms(1000); |
} |
#define TEST_STROMGRENZE 120 |
unsigned char DelayM(unsigned int timer) |
{ |
while(timer--) |
{ |
FastADConvert(); |
if(Strom > (TEST_STROMGRENZE + RuheStrom)) |
{ |
FETS_OFF; |
return(1); |
} |
} |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
{ |
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
return(0); |
} |
/* |
void ShowSense(void) |
{ |
if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
*/ |
#define HIGH_A_EIN PORTB |= 0x08 |
#define HIGH_B_EIN PORTB |= 0x04 |
#define HIGH_C_EIN PORTB |= 0x02 |
#define LOW_A_EIN PORTD |= 0x08 |
#define LOW_B_EIN PORTD |= 0x10 |
#define LOW_C_EIN PORTD |= 0x20 |
void MotorTon(void) |
//############################################################################ |
{ |
unsigned char ADR_TAB[5] = {0,0,2,1,3}; |
unsigned int timer = 300,i; |
unsigned int t = 0; |
unsigned char anz = 0,MosfetOkay = 0, grenze = 50; |
PORTC &= ~ROT; |
Delay_ms(300 * ADR_TAB[MotorAdresse]); |
DISABLE_SENSE_INT; |
cli();//Globale Interrupts Ausschalten |
uart_putchar('\n'); |
STEUER_OFF; |
Strom_max = 0; |
DelayM(50); |
RuheStrom = Strom_max; |
// uart_putchar(RuheStrom + 'A'); |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Strom = 0; |
LOW_B_EIN; |
HIGH_A_EIN; |
if(DelayM(3)) |
{ |
anz = 1; |
uart_putchar('1'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_A_EIN; |
HIGH_B_EIN; |
if(DelayM(3)) |
{ |
anz = 2; |
uart_putchar('2'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_B_EIN; // Low C ein |
HIGH_C_EIN; // High B ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('3'); |
} |
FETS_OFF; |
Delay(1000); |
LOW_A_EIN; // Low A ein; und A gegen C |
HIGH_C_EIN; // High C ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('7'); |
} |
FETS_OFF; |
DelayM(10000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ LOW-Mosfets auf Schalten und Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_A_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_A_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); break;} |
Delay(5); |
} |
Delay(10000); |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_B_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_B_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); break;} |
Delay(5); |
} |
Strom = 0; |
Delay(10000); |
for(i=0;i<t;i++) |
{ |
LOW_C_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_C_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); break;} |
Delay(5); |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_A; |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
LOW_C_EIN; // Low C ein |
Strom = 0; |
#define TONDAUER 40000 |
#define SOUND_E 2 |
#define SOUND1_A 300 |
#define SOUND2_A 330 |
#define SOUND3_A 360 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_A_EIN; // Test A |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
FETS_OFF; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Low-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_B; |
LOW_A_EIN; // Low A ein |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
//++++++++++++++++++++++++++++++++++++ |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
sei();//Globale Interrupts Einschalten |
// Delay_ms(250 * MotorAdresse); |
/* |
LOW_A_EIN; // Low B ein |
#define SOUND8_A 650 |
for(i=0; i<(TONDAUER / SOUND8_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
PORTB = 0; |
Delay(SOUND8_A); |
} |
*/ |
Delay_ms(300 * (4-ADR_TAB[MotorAdresse])); |
if(!(MosfetOkay & 0x01)) { anz = 1; UDR='A'; } else |
if(!(MosfetOkay & 0x02)) { anz = 2; UDR='B'; } else |
if(!(MosfetOkay & 0x04)) { anz = 3; UDR='C'; } else |
if(!(MosfetOkay & 0x08)) { anz = 4; UDR='a'; } else |
if(!(MosfetOkay & 0x10)) { anz = 5; UDR='b'; } else |
if(!(MosfetOkay & 0x20)) { anz = 6; UDR='c'; } |
if(anz) Delay_ms(1000); |
RotBlink(anz); |
uart_putchar('.'); |
} |
//############################################################################ |
// |
unsigned char SollwertErmittlung(void) |
//############################################################################ |
{ |
static unsigned int sollwert = 0; |
unsigned int ppm; |
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
PPM_Betrieb = 0; |
ICP_INT_DISABLE; |
PORTC &= ~ROT; |
} |
else |
if(anz_ppm_werte > 20) // es gibt gültige PPM-Daten |
{ |
PPM_Betrieb = 1; |
ppm = PPM_Signal; |
if(ppm > 300) ppm = 0; // ungültiges Signal |
if(ppm > 200) ppm = 200; |
if(ppm <= MIN_PPM) sollwert = 0; |
else |
{ |
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM); |
} |
PORTC &= ~ROT; |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
PORTC |= ROT; |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
PPM_Betrieb = 0; |
PORTC &= ~ROT; |
ICP_INT_DISABLE; |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
return(sollwert); |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
char altPhase = 0; |
int test = 0; |
unsigned int MinUpmPulse,Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
DDRC = 0x08; |
PORTC = 0x08; |
DDRD = 0xBA; |
PORTD = 0x00; |
DDRB = 0x0E; |
PORTB = 0x31; |
#if (MOTORADRESSE == 0) |
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl |
for(test=0;test<500;test++); |
if (PINB & ADR1) |
{ |
if (PINB & ADR2) MotorAdresse = 1; |
else MotorAdresse = 2; |
} |
else |
{ |
if (PINB & ADR2) MotorAdresse = 3; |
else MotorAdresse = 4; |
} |
#else |
MotorAdresse = MOTORADRESSE; |
#endif |
UART_Init(); |
Timer0_Init(); |
sei();//Globale Interrupts Einschalten |
// Am Blinken erkennt man die richtige Motoradresse |
/* |
for(test=0;test<5;test++) |
{ |
if(test == MotorAdresse) PORTD |= GRUEN; |
Delay_ms(150); |
PORTD &= ~GRUEN; |
Delay_ms(250); |
} |
Delay_ms(500); |
*/ |
// UART_Init(); // war doppelt |
PWM_Init(); |
InitIC2_Slave(0x50); |
InitPPM(); |
Blink = SetDelay(101); |
Blink2 = SetDelay(102); |
MinUpmPulse = SetDelay(103); |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)) |
{ |
if(SollwertErmittlung()) break; |
} |
; |
PORTD |= GRUEN; |
PWM = 0; |
SetPWM(); |
SFIOR = 0x08; // Analog Comperator ein |
ADMUX = 1; |
MinUpmPulse = SetDelay(10); |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
if(!SollwertErmittlung()) MotorTon(); |
//MotorTon(); |
PORTB = 0x31; // Pullups wieder einschalten |
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung |
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder |
while (1) |
{ |
//ShowSense(); |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt |
{ |
MotorGestoppt = 0; |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
MinUpmPulse = SetDelay(250); // Timeout, falls ein Motor stehen bleibt |
altPhase = Phase; |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!PWM) // Sollwert == 0 |
{ |
MotorAnwerfen = 0; // kein Startversuch |
ZeitFuerBerechnungen = 0; |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(MotorGestopptTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
STEUER_OFF; |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
MotorGestopptTimer = SetDelay(1500); |
} |
if(MotorGestoppt && !TEST_SCHUB) PWM = 0; |
SetPWM(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
{ |
if(MotorGestoppt) PORTD |= GRUEN; //else PORTD &= ~GRUEN; |
if(SIO_DEBUG) |
{ |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
} |
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung |
if(CheckDelay(MittelstromTimer)) |
{ |
MittelstromTimer = SetDelay(50); // alle 50ms |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
else if(Mittelstrom > Strom) Mittelstrom--; |
if(Strom > MAX_STROM) MaxPWM -= MaxPWM / 32; |
if((Mittelstrom > LIMIT_STROM))// Strom am Limit? |
{ |
if(MaxPWM) MaxPWM--;// dann die Maximale PWM herunterfahren |
PORTC |= ROT; |
} |
else |
{ |
if(MaxPWM < MAX_PWM) MaxPWM++; |
} |
} |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
{ |
DrehzahlMessTimer = SetDelay(10); |
SIO_Drehzahl = CntKommutierungen;//(6 * CntKommutierungen) / (POLANZAHL / 2); |
CntKommutierungen = 0; |
if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
} |
if(TEST_SCHUB) |
{ |
if(CheckDelay(TestschubTimer)) |
{ |
TestschubTimer = SetDelay(1500); |
switch(test) |
{ |
case 0: PWM = 50; test++; break; |
case 1: PWM = 130; test++; break; |
case 2: PWM = 60; test++; break; |
case 3: PWM = 140; test++; break; |
case 4: PWM = 150; test = 0; break; |
default: test = 0; |
} |
} |
} |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
{ |
MotorGestoppt = 1; |
DISABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
if(MotorAnwerfen) |
{ |
PORTC &= ~ROT; |
MotorAnwerfen = 0; |
Anwerfen(10); |
PORTD |= GRUEN; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(20); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 15; |
SetPWM(); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)); // kurz Durchstarten |
// Drehzahlmessung wieder aufsetzen |
DrehzahlMessTimer = SetDelay(50); |
altPhase = 7; |
} |
} |
} // ZeitFuerBerechnungen |
} // while(1) - Hauptschleife |
} |
/tags/V0.37/main.elf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.37/main.h |
---|
0,0 → 1,138 |
#ifndef _MAIN_H |
#define _MAIN_H |
#define MOTORADRESSE 0 // Adresse (1-4) 0 = Motoradresse über Lötjumper auf BL-Ctrl V1.1 |
#define MANUELL_PWM 0 // zur manuellen Vorgabe der PWM Werte: 0-255 |
#define TEST_MANUELL 0 // zum Testen der Hardware ohne Kommutierungsdetektion Werte: 0-255 (PWM) |
#define TEST_SCHUB 0 // Erzeugt ein Schubmuster Werte: 0 = normal 1 = Test |
#define POLANZAHL 12 // Anzahl der Pole (Magnete) Wird nur zur Drehzahlausgabe über Debug gebraucht |
#define MAX_PWM 255 |
#define MIN_PWM 3 |
#define MIN_PPM 10 // ab hier (PPM-Signal) schaltet der Regler erst ein |
#define FILTER_PPM 7 // wie stark soll das PPM-Signal gefiltert werden (Werte: 0-30)? |
#define SIO_DEBUG 0 // Testwertausgaben auf der seriellen Schnittstelle |
#define X3D_SIO 0 // serielles Protokoll des X3D (38400Bd) Achtung: dann muss SIO_DEBUG = 0 sein |
#define _16KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define _32KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
#define FDD6637_IRLR7843 1 // bessere MosFet bestückt? bewirkt höhere Stromgrenzen |
#ifdef _16KHZ |
#ifdef FDD6637_IRLR7843 // bessere Fets = mehr Strom zulassen |
#define MAX_STROM 200 // ab ca. 20A PWM ausschalten |
#define LIMIT_STROM 120 // ab ca. 12A PWM begrenzen |
#else |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 65 // ab ca. 6,5A PWM begrenzen |
#endif |
#endif |
#ifdef _32KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 50 // ab ca. 5,0A PWM begrenzen |
#endif |
#define SYSCLK 8000000L //Quarz Frequenz in Hz |
//Robbe Roxxy 2824-34 mit Todd 10x4,5 bei 16kHz |
//PWM Strom Schub |
//10 0,18A 21g |
//20 0,30A 38g |
//30 0,40A 49g |
//40 0,54A 60g |
//50 0,70A 83g |
//60 0,95A 102g |
//70 1,25A 128g |
//80 1,50A 151g |
//90 1,83A 175g |
//100 2,25A 206g |
//110 2,66A 228g |
//120 3,10A 257g |
//130 3,55A 278g |
//140 4,00A 305g |
//150 4,50A 330g |
//160 5,30A 355g |
//170 5,85A 387g |
//180 6,40A 400g |
//190 7,10A 425g |
//200 7,60A 460g |
//0,5A 63g 14% |
//1,0A 110g 24% |
//1,5A 170g 32% |
//2,0A 195g 37% |
//2,5A 230g 41% |
//3,0A 260g 46% |
//3,5A 290g 50% |
//4,0A 310g 53% |
//4,5A 340g 58% |
//5,0A 360g 63% |
//5,5A 380g 67% |
//6,0A 400g 68% |
//6,5A 420g 70% |
//7,0A 450g 75% |
//7,5A 460g 78% |
//8,0A 475g 82% |
//9,0A 550g 86% |
//11 A 600g 100% |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "twislave.h" |
#include "old_macros.h" |
#include "analog.h" |
#include "uart.h" |
#include "timer0.h" |
#include "BLMC.h" |
#include "PPM_Decode.h" |
extern unsigned int I2C_Timeout; |
extern unsigned int SIO_Timeout; |
extern unsigned int PWM; |
extern unsigned int Strom; //ca. in 0,1A |
extern unsigned char Strom_max; |
extern unsigned char Mittelstrom; |
extern unsigned int CntKommutierungen; |
extern unsigned char MotorAnwerfen; |
extern unsigned char MotorGestoppt; |
extern unsigned char ZeitZumAdWandeln; |
extern unsigned char MaxPWM; |
extern unsigned char MotorAdresse; |
extern unsigned char PPM_Betrieb; |
#define ROT 0x08 |
#define GRUEN 0x80 |
#define ADR1 0x40 // für Motoradresswahl |
#define ADR2 0x80 // |
#if defined(__AVR_ATmega8__) |
# define OC1 PB1 |
# define DDROC DDRB |
# define OCR OCR1A |
# define PWM10 WGM10 |
# define PWM11 WGM11 |
#endif |
#endif //_MAIN_H |
/tags/V0.37/main.lss |
---|
0,0 → 1,4534 |
main.elf: file format elf32-avr |
Sections: |
Idx Name Size VMA LMA File off Algn |
0 .text 00001bec 00000000 00000000 00000094 2**0 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
1 .data 00000024 00800060 00001bec 00001c80 2**0 |
CONTENTS, ALLOC, LOAD, DATA |
2 .bss 00000156 00800084 00800084 00001ca4 2**0 |
ALLOC |
3 .noinit 00000000 008001da 008001da 00001ca4 2**0 |
CONTENTS |
4 .eeprom 00000000 00810000 00810000 00001ca4 2**0 |
CONTENTS |
5 .stab 0000036c 00000000 00000000 00001ca4 2**2 |
CONTENTS, READONLY, DEBUGGING |
6 .stabstr 00000084 00000000 00000000 00002010 2**0 |
CONTENTS, READONLY, DEBUGGING |
7 .debug_aranges 000000b4 00000000 00000000 00002094 2**0 |
CONTENTS, READONLY, DEBUGGING |
8 .debug_pubnames 000006f5 00000000 00000000 00002148 2**0 |
CONTENTS, READONLY, DEBUGGING |
9 .debug_info 00001a41 00000000 00000000 0000283d 2**0 |
CONTENTS, READONLY, DEBUGGING |
10 .debug_abbrev 00000774 00000000 00000000 0000427e 2**0 |
CONTENTS, READONLY, DEBUGGING |
11 .debug_line 0000169d 00000000 00000000 000049f2 2**0 |
CONTENTS, READONLY, DEBUGGING |
12 .debug_str 00000874 00000000 00000000 0000608f 2**0 |
CONTENTS, READONLY, DEBUGGING |
Disassembly of section .text: |
00000000 <__vectors>: |
0: 0c 94 85 00 jmp 0x10a <__init> |
4: 0c 94 7e 0b jmp 0x16fc <__vector_1> |
8: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
10: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
14: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
18: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
1c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
20: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
24: 0c 94 67 09 jmp 0x12ce <__vector_9> |
28: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
2c: 0c 94 96 0b jmp 0x172c <__vector_11> |
30: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
34: 0c 94 18 02 jmp 0x430 <__vector_13> |
38: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
3c: 0c 94 e3 01 jmp 0x3c6 <__vector_15> |
40: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
44: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
48: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
4c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
50: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
00000054 <__ctors_end>: |
54: 20 2d mov r18, r0 |
56: 2d 20 and r2, r13 |
58: 52 65 ori r21, 0x52 ; 82 |
5a: 6d 6f ori r22, 0xFD ; 253 |
5c: 74 65 ori r23, 0x54 ; 84 |
5e: 20 20 and r2, r0 |
60: 2d 2d mov r18, r13 |
62: 20 20 and r2, r0 |
64: 20 20 and r2, r0 |
66: 20 20 and r2, r0 |
... |
00000069 <__c.1>: |
69: 20 2d 2d 20 44 69 73 70 6c 61 79 20 2d 2d 20 20 -- Display -- |
79: 20 20 20 20 00 . |
0000007e <__c.2>: |
7e: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |
8e: 20 20 20 20 00 . |
00000093 <__c.3>: |
93: 20 20 77 77 77 2e 4d 69 63 72 6f 53 50 53 2e 63 www.MicroSPS.c |
a3: 6f 6d 20 20 00 om . |
000000a8 <__c.2>: |
a8: 25 73 00 %s. |
000000ab <__c.3>: |
ab: 25 73 00 %s. |
000000ae <__c.4>: |
ae: 25 73 00 %s. |
000000b1 <__c.5>: |
b1: 25 73 00 %s. |
000000b4 <__c.3>: |
b4: 56 65 72 62 69 6e 64 65 6e 20 6d 69 74 00 Verbinden mit. |
000000c2 <__c.4>: |
c2: 4d 69 63 72 6f 53 50 53 3a 25 32 69 20 00 MicroSPS:%2i . |
000000d0 <__c.5>: |
d0: 4d 61 78 20 41 64 72 65 73 73 65 00 Max Adresse. |
000000dc <__c.6>: |
dc: 25 32 69 20 00 %2i . |
000000e1 <__c.7>: |
e1: 43 68 65 63 6b 73 75 6d 00 Checksum. |
000000ea <__c.8>: |
ea: 45 72 72 6f 72 73 3a 25 35 69 20 00 Errors:%5i . |
000000f6 <__c.9>: |
f6: 44 69 73 70 6c 61 79 00 Display. |
000000fe <__c.10>: |
fe: 5a 65 69 6c 65 6e 3a 25 31 69 20 00 Zeilen:%1i . |
0000010a <__init>: |
10a: 11 24 eor r1, r1 |
10c: 1f be out 0x3f, r1 ; 63 |
10e: cf e5 ldi r28, 0x5F ; 95 |
110: d8 e0 ldi r29, 0x08 ; 8 |
112: de bf out 0x3e, r29 ; 62 |
114: cd bf out 0x3d, r28 ; 61 |
00000116 <__do_copy_data>: |
116: 10 e0 ldi r17, 0x00 ; 0 |
118: a0 e6 ldi r26, 0x60 ; 96 |
11a: b0 e0 ldi r27, 0x00 ; 0 |
11c: ec ee ldi r30, 0xEC ; 236 |
11e: fb e1 ldi r31, 0x1B ; 27 |
120: 02 c0 rjmp .+4 ; 0x126 <.do_copy_data_start> |
00000122 <.do_copy_data_loop>: |
122: 05 90 lpm r0, Z+ |
124: 0d 92 st X+, r0 |
00000126 <.do_copy_data_start>: |
126: a4 38 cpi r26, 0x84 ; 132 |
128: b1 07 cpc r27, r17 |
12a: d9 f7 brne .-10 ; 0x122 <.do_copy_data_loop> |
0000012c <__do_clear_bss>: |
12c: 11 e0 ldi r17, 0x01 ; 1 |
12e: a4 e8 ldi r26, 0x84 ; 132 |
130: b0 e0 ldi r27, 0x00 ; 0 |
132: 01 c0 rjmp .+2 ; 0x136 <.do_clear_bss_start> |
00000134 <.do_clear_bss_loop>: |
134: 1d 92 st X+, r1 |
00000136 <.do_clear_bss_start>: |
136: aa 3d cpi r26, 0xDA ; 218 |
138: b1 07 cpc r27, r17 |
13a: e1 f7 brne .-8 ; 0x134 <.do_clear_bss_loop> |
13c: 0c 94 e5 00 jmp 0x1ca <main> |
00000140 <__bad_interrupt>: |
140: 0c 94 00 00 jmp 0x0 <__vectors> |
00000144 <Sekundentakt_Init>: |
unsigned int IntervallDebug = 250, IntervallDisplay = 120; |
void Sekundentakt_Init(void) |
{ |
_SekTimer = SetDelay(1000); |
144: 88 ee ldi r24, 0xE8 ; 232 |
146: 93 e0 ldi r25, 0x03 ; 3 |
148: 0e 94 a8 09 call 0x1350 <SetDelay> |
14c: 90 93 91 00 sts 0x0091, r25 |
150: 80 93 90 00 sts 0x0090, r24 |
154: 08 95 ret |
00000156 <Sekundentakt>: |
} |
void Sekundentakt(void) |
{ |
if(CheckDelay(_SekTimer)) |
156: 80 91 90 00 lds r24, 0x0090 |
15a: 90 91 91 00 lds r25, 0x0091 |
15e: 0e 94 b1 09 call 0x1362 <CheckDelay> |
162: 88 23 and r24, r24 |
164: 31 f1 breq .+76 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
GetKeyboard(); |
166: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
_SekTimer += 1000; |
16a: 80 91 90 00 lds r24, 0x0090 |
16e: 90 91 91 00 lds r25, 0x0091 |
172: 88 51 subi r24, 0x18 ; 24 |
174: 9c 4f sbci r25, 0xFC ; 252 |
176: 90 93 91 00 sts 0x0091, r25 |
17a: 80 93 90 00 sts 0x0090, r24 |
if(!CntDatensaetzeProSekunde) UebertragungUnterbrochen = 1; else UebertragungUnterbrochen = 0; |
17e: 80 91 66 00 lds r24, 0x0066 |
182: 88 23 and r24, r24 |
184: 21 f4 brne .+8 ; 0x18e <Sekundentakt+0x38> |
186: 81 e0 ldi r24, 0x01 ; 1 |
188: 80 93 84 00 sts 0x0084, r24 |
18c: 02 c0 rjmp .+4 ; 0x192 <Sekundentakt+0x3c> |
18e: 10 92 84 00 sts 0x0084, r1 |
CntDatensaetzeProSekunde = 0; |
192: 10 92 66 00 sts 0x0066, r1 |
if(++Sekunde == 60) |
196: 80 91 8d 00 lds r24, 0x008D |
19a: 8f 5f subi r24, 0xFF ; 255 |
19c: 80 93 8d 00 sts 0x008D, r24 |
1a0: 8c 33 cpi r24, 0x3C ; 60 |
1a2: 39 f4 brne .+14 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
Sekunde = 0; |
1a4: 10 92 8d 00 sts 0x008D, r1 |
Minute++; |
1a8: 80 91 8c 00 lds r24, 0x008C |
1ac: 8f 5f subi r24, 0xFF ; 255 |
1ae: 80 93 8c 00 sts 0x008C, r24 |
1b2: 08 95 ret |
000001b4 <Init>: |
} |
} |
} |
void Init(void) |
{ |
VersionInfo.Hauptversion = 0; |
1b4: 10 92 c9 00 sts 0x00C9, r1 |
VersionInfo.Nebenversion = 99; |
1b8: 83 e6 ldi r24, 0x63 ; 99 |
1ba: 80 93 ca 00 sts 0x00CA, r24 |
VersionInfo.PCKompatibel = 1; |
1be: 81 e0 ldi r24, 0x01 ; 1 |
1c0: 80 93 cb 00 sts 0x00CB, r24 |
VersionInfo.Commercial = 0x00; |
1c4: 10 92 cc 00 sts 0x00CC, r1 |
1c8: 08 95 ret |
000001ca <main>: |
} |
#define MENU 0 |
#define REMOTE 1 |
//############################################################################ |
//Hauptprogramm |
void main (void) |
//############################################################################ |
{ |
1ca: ca e5 ldi r28, 0x5A ; 90 |
1cc: d8 e0 ldi r29, 0x08 ; 8 |
1ce: de bf out 0x3e, r29 ; 62 |
1d0: cd bf out 0x3d, r28 ; 61 |
char z,txt[]= {"Moin"},key,key_old = 255; |
1d2: de 01 movw r26, r28 |
1d4: 11 96 adiw r26, 0x01 ; 1 |
1d6: e7 e6 ldi r30, 0x67 ; 103 |
1d8: f0 e0 ldi r31, 0x00 ; 0 |
1da: 85 e0 ldi r24, 0x05 ; 5 |
1dc: 01 90 ld r0, Z+ |
1de: 0d 92 st X+, r0 |
1e0: 81 50 subi r24, 0x01 ; 1 |
1e2: e1 f7 brne .-8 ; 0x1dc <main+0x12> |
int test = 0; |
unsigned int DelayTast; |
unsigned int DelayDaten,DelayDisplay; |
unsigned char mode = REMOTE; |
1e4: 91 e0 ldi r25, 0x01 ; 1 |
1e6: b9 2e mov r11, r25 |
unsigned char neueDatenuebertragung = 1; |
UART_Init(); |
1e8: 0e 94 cc 04 call 0x998 <UART_Init> |
LCD_Init(); |
1ec: 0e 94 1f 06 call 0xc3e <LCD_Init> |
UART_Init(); |
1f0: 0e 94 cc 04 call 0x998 <UART_Init> |
Timer1_Init(); |
1f4: 0e 94 9e 09 call 0x133c <Timer1_Init> |
Keyboard_Init(); |
1f8: 0e 94 c9 09 call 0x1392 <Keyboard_Init> |
Sekundentakt_Init(); |
1fc: 0e 94 a2 00 call 0x144 <Sekundentakt_Init> |
InitIR(); |
200: 0e 94 67 0b call 0x16ce <InitIR> |
ADC_Init(); |
204: 0e 94 42 0c call 0x1884 <ADC_Init> |
Init(); |
208: 0e 94 da 00 call 0x1b4 <Init> |
sei ();//Globale Interrupts Einschalten |
20c: 78 94 sei |
DDRB = 0xff; |
20e: 8f ef ldi r24, 0xFF ; 255 |
210: 87 bb out 0x17, r24 ; 23 |
PORTB = 0x00; |
212: 18 ba out 0x18, r1 ; 24 |
LCD_Clear; |
214: 81 e0 ldi r24, 0x01 ; 1 |
216: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
21a: 0e 94 c9 05 call 0xb92 <_long_delay> |
/* while(1) |
*/ |
DelayTast = SetDelay(80); |
21e: 80 e5 ldi r24, 0x50 ; 80 |
220: 90 e0 ldi r25, 0x00 ; 0 |
222: 0e 94 a8 09 call 0x1350 <SetDelay> |
226: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
228: 88 ec ldi r24, 0xC8 ; 200 |
22a: 90 e0 ldi r25, 0x00 ; 0 |
22c: 0e 94 a8 09 call 0x1350 <SetDelay> |
230: 8c 01 movw r16, r24 |
DelayDisplay = SetDelay(300); |
232: 8c e2 ldi r24, 0x2C ; 44 |
234: 91 e0 ldi r25, 0x01 ; 1 |
236: 0e 94 a8 09 call 0x1350 <SetDelay> |
23a: 6c 01 movw r12, r24 |
ClearIntervalle(); |
23c: 0e 94 2e 05 call 0xa5c <ClearIntervalle> |
while (1) |
{ |
if(mode == MENU) |
240: bb 20 and r11, r11 |
242: 11 f5 brne .+68 ; 0x288 <main+0xbe> |
{ |
Delay_ms(10); |
244: 8a e0 ldi r24, 0x0A ; 10 |
246: 90 e0 ldi r25, 0x00 ; 0 |
248: 0e 94 bc 09 call 0x1378 <Delay_ms> |
key = GetKeyboard(); |
24c: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
Menu(key); |
250: 99 27 eor r25, r25 |
252: 0e 94 64 0a call 0x14c8 <Menu> |
if(_TASTE5) |
256: cb 9b sbis 0x19, 3 ; 25 |
258: f5 cf rjmp .-22 ; 0x244 <main+0x7a> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
25a: 8a e0 ldi r24, 0x0A ; 10 |
25c: 90 e0 ldi r25, 0x00 ; 0 |
25e: 0e 94 bc 09 call 0x1378 <Delay_ms> |
262: cb 99 sbic 0x19, 3 ; 25 |
264: fa cf rjmp .-12 ; 0x25a <main+0x90> |
mode = REMOTE; |
266: 81 e0 ldi r24, 0x01 ; 1 |
268: b8 2e mov r11, r24 |
DelayTast = SetDelay(100); |
26a: 84 e6 ldi r24, 0x64 ; 100 |
26c: 90 e0 ldi r25, 0x00 ; 0 |
26e: 0e 94 a8 09 call 0x1350 <SetDelay> |
272: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
274: 88 ec ldi r24, 0xC8 ; 200 |
276: 90 e0 ldi r25, 0x00 ; 0 |
278: 0e 94 a8 09 call 0x1350 <SetDelay> |
27c: 8c 01 movw r16, r24 |
LCD_Clear; |
27e: 8b 2d mov r24, r11 |
280: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
284: 0e 94 c9 05 call 0xb92 <_long_delay> |
} |
} |
else |
if(mode == REMOTE) |
288: 81 e0 ldi r24, 0x01 ; 1 |
28a: b8 16 cp r11, r24 |
28c: c9 f6 brne .-78 ; 0x240 <main+0x76> |
{ |
BearbeiteRxDaten(); |
28e: 0e 94 fe 03 call 0x7fc <BearbeiteRxDaten> |
if(CheckDelay(DelayDaten)) |
292: c8 01 movw r24, r16 |
294: 0e 94 b1 09 call 0x1362 <CheckDelay> |
298: 88 23 and r24, r24 |
29a: c9 f3 breq .-14 ; 0x28e <main+0xc4> |
{ |
Sekundentakt(); |
29c: 0e 94 ab 00 call 0x156 <Sekundentakt> |
DelayDaten = SetDelay(10); |
2a0: 8a e0 ldi r24, 0x0A ; 10 |
2a2: 90 e0 ldi r25, 0x00 ; 0 |
2a4: 0e 94 a8 09 call 0x1350 <SetDelay> |
2a8: 8c 01 movw r16, r24 |
if(CheckDelay(DelayDisplay)) |
2aa: c6 01 movw r24, r12 |
2ac: 0e 94 b1 09 call 0x1362 <CheckDelay> |
2b0: 88 23 and r24, r24 |
2b2: 39 f0 breq .+14 ; 0x2c2 <main+0xf8> |
{ |
DelayDisplay = SetDelay(300); |
2b4: 8c e2 ldi r24, 0x2C ; 44 |
2b6: 91 e0 ldi r25, 0x01 ; 1 |
2b8: 0e 94 a8 09 call 0x1350 <SetDelay> |
2bc: 6c 01 movw r12, r24 |
PollDisplay = 1; |
2be: b0 92 ed 00 sts 0x00ED, r11 |
} |
key = GetKeyboard2(); |
2c2: 0e 94 57 0a call 0x14ae <GetKeyboard2> |
DatenUebertragung(key); |
2c6: 99 27 eor r25, r25 |
2c8: 0e 94 51 05 call 0xaa2 <DatenUebertragung> |
if(UebertragungUnterbrochen) |
2cc: 80 91 84 00 lds r24, 0x0084 |
2d0: 88 23 and r24, r24 |
2d2: 81 f1 breq .+96 ; 0x334 <main+0x16a> |
{ |
//01234567890123456789 |
LCD_printfxy(0,0," -- Remote -- "); |
2d4: 60 e0 ldi r22, 0x00 ; 0 |
2d6: 86 2f mov r24, r22 |
2d8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2dc: 84 e5 ldi r24, 0x54 ; 84 |
2de: 90 e0 ldi r25, 0x00 ; 0 |
2e0: 9f 93 push r25 |
2e2: 8f 93 push r24 |
2e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1," -- Display -- "); |
2e8: 61 e0 ldi r22, 0x01 ; 1 |
2ea: 80 e0 ldi r24, 0x00 ; 0 |
2ec: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2f0: 0f 90 pop r0 |
2f2: 0f 90 pop r0 |
2f4: 89 e6 ldi r24, 0x69 ; 105 |
2f6: 90 e0 ldi r25, 0x00 ; 0 |
2f8: 9f 93 push r25 |
2fa: 8f 93 push r24 |
2fc: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,2," "); |
300: 62 e0 ldi r22, 0x02 ; 2 |
302: 80 e0 ldi r24, 0x00 ; 0 |
304: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
308: 0f 90 pop r0 |
30a: 0f 90 pop r0 |
30c: 8e e7 ldi r24, 0x7E ; 126 |
30e: 90 e0 ldi r25, 0x00 ; 0 |
310: 9f 93 push r25 |
312: 8f 93 push r24 |
314: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,3," www.MicroSPS.com "); |
318: 63 e0 ldi r22, 0x03 ; 3 |
31a: 80 e0 ldi r24, 0x00 ; 0 |
31c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
320: 0f 90 pop r0 |
322: 0f 90 pop r0 |
324: 83 e9 ldi r24, 0x93 ; 147 |
326: 90 e0 ldi r25, 0x00 ; 0 |
328: 9f 93 push r25 |
32a: 8f 93 push r24 |
32c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
330: 0f 90 pop r0 |
332: 0f 90 pop r0 |
} |
if(CheckDelay(DelayTast)) |
334: c7 01 movw r24, r14 |
336: 0e 94 b1 09 call 0x1362 <CheckDelay> |
33a: 88 23 and r24, r24 |
33c: 09 f4 brne .+2 ; 0x340 <main+0x176> |
33e: a7 cf rjmp .-178 ; 0x28e <main+0xc4> |
{ |
DelayTast = SetDelay(100); |
340: 84 e6 ldi r24, 0x64 ; 100 |
342: 90 e0 ldi r25, 0x00 ; 0 |
344: 0e 94 a8 09 call 0x1350 <SetDelay> |
348: 7c 01 movw r14, r24 |
if(_TASTE5) |
34a: cb 9b sbis 0x19, 3 ; 25 |
34c: 0c c0 rjmp .+24 ; 0x366 <main+0x19c> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
34e: 8a e0 ldi r24, 0x0A ; 10 |
350: 90 e0 ldi r25, 0x00 ; 0 |
352: 0e 94 bc 09 call 0x1378 <Delay_ms> |
356: cb 99 sbic 0x19, 3 ; 25 |
358: fa cf rjmp .-12 ; 0x34e <main+0x184> |
mode = MENU; |
35a: bb 24 eor r11, r11 |
LCD_Clear; |
35c: 81 e0 ldi r24, 0x01 ; 1 |
35e: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
362: 0e 94 c9 05 call 0xb92 <_long_delay> |
366: 80 91 be 00 lds r24, 0x00BE |
} |
// if(key & 0x10) DebugIn.Digital[0] |= 0x01; else DebugIn.Digital[0] &= ~0x01; |
if(PIND & 0x08) DebugIn.Digital[0] |= 0x02; else DebugIn.Digital[0] &= ~0x02; |
36a: 83 9b sbis 0x10, 3 ; 16 |
36c: 02 c0 rjmp .+4 ; 0x372 <main+0x1a8> |
36e: 82 60 ori r24, 0x02 ; 2 |
370: 01 c0 rjmp .+2 ; 0x374 <main+0x1aa> |
372: 8d 7f andi r24, 0xFD ; 253 |
374: 80 93 be 00 sts 0x00BE, r24 |
378: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x10) DebugIn.Digital[0] |= 0x04; else DebugIn.Digital[0] &= ~0x04; |
37c: 84 9b sbis 0x10, 4 ; 16 |
37e: 02 c0 rjmp .+4 ; 0x384 <main+0x1ba> |
380: 84 60 ori r24, 0x04 ; 4 |
382: 01 c0 rjmp .+2 ; 0x386 <main+0x1bc> |
384: 8b 7f andi r24, 0xFB ; 251 |
386: 80 93 be 00 sts 0x00BE, r24 |
38a: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x20) DebugIn.Digital[0] |= 0x08; else DebugIn.Digital[0] &= ~0x08; |
38e: 85 9b sbis 0x10, 5 ; 16 |
390: 02 c0 rjmp .+4 ; 0x396 <main+0x1cc> |
392: 88 60 ori r24, 0x08 ; 8 |
394: 01 c0 rjmp .+2 ; 0x398 <main+0x1ce> |
396: 87 7f andi r24, 0xF7 ; 247 |
398: 80 93 be 00 sts 0x00BE, r24 |
39c: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x40) DebugIn.Digital[0] |= 0x10; else DebugIn.Digital[0] &= ~0x10; |
3a0: 86 9b sbis 0x10, 6 ; 16 |
3a2: 02 c0 rjmp .+4 ; 0x3a8 <main+0x1de> |
3a4: 80 61 ori r24, 0x10 ; 16 |
3a6: 01 c0 rjmp .+2 ; 0x3aa <main+0x1e0> |
3a8: 8f 7e andi r24, 0xEF ; 239 |
3aa: 80 93 be 00 sts 0x00BE, r24 |
3ae: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x80) DebugIn.Digital[0] |= 0x20; else DebugIn.Digital[0] &= ~0x20; |
3b2: 87 9b sbis 0x10, 7 ; 16 |
3b4: 02 c0 rjmp .+4 ; 0x3ba <main+0x1f0> |
3b6: 80 62 ori r24, 0x20 ; 32 |
3b8: 01 c0 rjmp .+2 ; 0x3bc <main+0x1f2> |
3ba: 8f 7d andi r24, 0xDF ; 223 |
3bc: 80 93 be 00 sts 0x00BE, r24 |
GetAnalogWerte(); |
3c0: 0e 94 4e 0c call 0x189c <GetAnalogWerte> |
3c4: 3d cf rjmp .-390 ; 0x240 <main+0x76> |
000003c6 <__vector_15>: |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
3c6: 1f 92 push r1 |
3c8: 0f 92 push r0 |
3ca: 0f b6 in r0, 0x3f ; 63 |
3cc: 0f 92 push r0 |
3ce: 11 24 eor r1, r1 |
3d0: 8f 93 push r24 |
3d2: 9f 93 push r25 |
3d4: ef 93 push r30 |
3d6: ff 93 push r31 |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
3d8: 80 91 6e 00 lds r24, 0x006E |
3dc: 88 23 and r24, r24 |
3de: d9 f4 brne .+54 ; 0x416 <__vector_15+0x50> |
{ |
ptr++; // die [0] wurde schon gesendet |
3e0: 80 91 9d 00 lds r24, 0x009D |
3e4: 90 91 9e 00 lds r25, 0x009E |
3e8: 01 96 adiw r24, 0x01 ; 1 |
3ea: 90 93 9e 00 sts 0x009E, r25 |
3ee: 80 93 9d 00 sts 0x009D, r24 |
tmp_tx = SendeBuffer[ptr]; |
3f2: fc 01 movw r30, r24 |
3f4: e2 51 subi r30, 0x12 ; 18 |
3f6: ff 4f sbci r31, 0xFF ; 255 |
3f8: e0 81 ld r30, Z |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
3fa: ed 30 cpi r30, 0x0D ; 13 |
3fc: 19 f0 breq .+6 ; 0x404 <__vector_15+0x3e> |
3fe: 84 36 cpi r24, 0x64 ; 100 |
400: 91 05 cpc r25, r1 |
402: 39 f4 brne .+14 ; 0x412 <__vector_15+0x4c> |
{ |
ptr = 0; |
404: 10 92 9e 00 sts 0x009E, r1 |
408: 10 92 9d 00 sts 0x009D, r1 |
UebertragungAbgeschlossen = 1; |
40c: 81 e0 ldi r24, 0x01 ; 1 |
40e: 80 93 6e 00 sts 0x006E, r24 |
} |
UDR = tmp_tx; |
412: ec b9 out 0x0c, r30 ; 12 |
414: 04 c0 rjmp .+8 ; 0x41e <__vector_15+0x58> |
} |
else ptr = 0; |
416: 10 92 9e 00 sts 0x009E, r1 |
41a: 10 92 9d 00 sts 0x009D, r1 |
41e: ff 91 pop r31 |
420: ef 91 pop r30 |
422: 9f 91 pop r25 |
424: 8f 91 pop r24 |
426: 0f 90 pop r0 |
428: 0f be out 0x3f, r0 ; 63 |
42a: 0f 90 pop r0 |
42c: 1f 90 pop r1 |
42e: 18 95 reti |
00000430 <__vector_13>: |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
430: 1f 92 push r1 |
432: 0f 92 push r0 |
434: 0f b6 in r0, 0x3f ; 63 |
436: 0f 92 push r0 |
438: 11 24 eor r1, r1 |
43a: 2f 93 push r18 |
43c: 3f 93 push r19 |
43e: 4f 93 push r20 |
440: 5f 93 push r21 |
442: 8f 93 push r24 |
444: 9f 93 push r25 |
446: af 93 push r26 |
448: bf 93 push r27 |
44a: ef 93 push r30 |
44c: ff 93 push r31 |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
44e: 20 e0 ldi r18, 0x00 ; 0 |
SioTmp = UDR; |
450: 8c b1 in r24, 0x0c ; 12 |
452: 80 93 9c 00 sts 0x009C, r24 |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
456: 50 91 a3 00 lds r21, 0x00A3 |
45a: 54 36 cpi r21, 0x64 ; 100 |
45c: 10 f0 brcs .+4 ; 0x462 <__vector_13+0x32> |
45e: 20 93 a4 00 sts 0x00A4, r18 |
if(SioTmp == '\r' && UartState == 2) |
462: 80 91 9c 00 lds r24, 0x009C |
466: 8d 30 cpi r24, 0x0D ; 13 |
468: 09 f0 breq .+2 ; 0x46c <__vector_13+0x3c> |
46a: 5b c0 rjmp .+182 ; 0x522 <__vector_13+0xf2> |
46c: 80 91 a4 00 lds r24, 0x00A4 |
470: 82 30 cpi r24, 0x02 ; 2 |
472: 09 f0 breq .+2 ; 0x476 <__vector_13+0x46> |
474: 56 c0 rjmp .+172 ; 0x522 <__vector_13+0xf2> |
{ |
UartState = 0; |
476: 20 93 a4 00 sts 0x00A4, r18 |
crc -= RxdBuffer[buf_ptr-2]; |
47a: 85 2f mov r24, r21 |
47c: 99 27 eor r25, r25 |
47e: 8e 5a subi r24, 0xAE ; 174 |
480: 9e 4f sbci r25, 0xFE ; 254 |
482: fc 01 movw r30, r24 |
484: 32 97 sbiw r30, 0x02 ; 2 |
486: 40 81 ld r20, Z |
488: 20 91 9f 00 lds r18, 0x009F |
48c: 30 91 a0 00 lds r19, 0x00A0 |
490: 24 1b sub r18, r20 |
492: 31 09 sbc r19, r1 |
crc -= RxdBuffer[buf_ptr-1]; |
494: dc 01 movw r26, r24 |
496: 11 97 sbiw r26, 0x01 ; 1 |
498: 8c 91 ld r24, X |
49a: 28 1b sub r18, r24 |
49c: 31 09 sbc r19, r1 |
crc %= 4096; |
49e: c9 01 movw r24, r18 |
4a0: 9f 70 andi r25, 0x0F ; 15 |
4a2: 90 93 a0 00 sts 0x00A0, r25 |
4a6: 80 93 9f 00 sts 0x009F, r24 |
crc1 = '=' + crc / 64; |
4aa: 46 e0 ldi r20, 0x06 ; 6 |
4ac: 96 95 lsr r25 |
4ae: 87 95 ror r24 |
4b0: 4a 95 dec r20 |
4b2: e1 f7 brne .-8 ; 0x4ac <__vector_13+0x7c> |
4b4: 98 2f mov r25, r24 |
4b6: 93 5c subi r25, 0xC3 ; 195 |
4b8: 90 93 a1 00 sts 0x00A1, r25 |
crc2 = '=' + crc % 64; |
4bc: 2f 73 andi r18, 0x3F ; 63 |
4be: 30 70 andi r19, 0x00 ; 0 |
4c0: 23 5c subi r18, 0xC3 ; 195 |
4c2: 20 93 a2 00 sts 0x00A2, r18 |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
4c6: 80 81 ld r24, Z |
4c8: 98 17 cp r25, r24 |
4ca: 29 f4 brne .+10 ; 0x4d6 <__vector_13+0xa6> |
4cc: 8c 91 ld r24, X |
4ce: 28 17 cp r18, r24 |
4d0: 11 f4 brne .+4 ; 0x4d6 <__vector_13+0xa6> |
4d2: 21 e0 ldi r18, 0x01 ; 1 |
4d4: 0a c0 rjmp .+20 ; 0x4ea <__vector_13+0xba> |
4d6: 20 e0 ldi r18, 0x00 ; 0 |
4d8: 80 91 99 00 lds r24, 0x0099 |
4dc: 90 91 9a 00 lds r25, 0x009A |
4e0: 01 96 adiw r24, 0x01 ; 1 |
4e2: 90 93 9a 00 sts 0x009A, r25 |
4e6: 80 93 99 00 sts 0x0099, r24 |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
4ea: 80 91 9b 00 lds r24, 0x009B |
4ee: 88 23 and r24, r24 |
4f0: 09 f0 breq .+2 ; 0x4f4 <__vector_13+0xc4> |
4f2: 66 c0 rjmp .+204 ; 0x5c0 <__vector_13+0x190> |
4f4: 22 23 and r18, r18 |
4f6: 09 f4 brne .+2 ; 0x4fa <__vector_13+0xca> |
4f8: 63 c0 rjmp .+198 ; 0x5c0 <__vector_13+0x190> |
{ |
CntDatensaetzeProSekunde++; |
4fa: 80 91 66 00 lds r24, 0x0066 |
4fe: 8f 5f subi r24, 0xFF ; 255 |
500: 80 93 66 00 sts 0x0066, r24 |
PC_DebugTimeout = 10; |
504: 8a e0 ldi r24, 0x0A ; 10 |
506: 80 93 97 00 sts 0x0097, r24 |
NeuerDatensatzEmpfangen = 1; |
50a: 81 e0 ldi r24, 0x01 ; 1 |
50c: 80 93 9b 00 sts 0x009B, r24 |
AnzahlEmpfangsBytes = buf_ptr; |
510: 50 93 98 00 sts 0x0098, r21 |
RxdBuffer[buf_ptr] = '\r'; |
514: e5 2f mov r30, r21 |
516: ff 27 eor r31, r31 |
518: ee 5a subi r30, 0xAE ; 174 |
51a: fe 4f sbci r31, 0xFE ; 254 |
51c: 8d e0 ldi r24, 0x0D ; 13 |
51e: 80 83 st Z, r24 |
520: 4f c0 rjmp .+158 ; 0x5c0 <__vector_13+0x190> |
// if((RxdBuffer[1] == 's') && (RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
522: 20 91 a4 00 lds r18, 0x00A4 |
526: 82 2f mov r24, r18 |
528: 99 27 eor r25, r25 |
52a: 81 30 cpi r24, 0x01 ; 1 |
52c: 91 05 cpc r25, r1 |
52e: f9 f0 breq .+62 ; 0x56e <__vector_13+0x13e> |
530: 82 30 cpi r24, 0x02 ; 2 |
532: 91 05 cpc r25, r1 |
534: 1c f4 brge .+6 ; 0x53c <__vector_13+0x10c> |
536: 89 2b or r24, r25 |
538: 21 f0 breq .+8 ; 0x542 <__vector_13+0x112> |
53a: 40 c0 rjmp .+128 ; 0x5bc <__vector_13+0x18c> |
53c: 02 97 sbiw r24, 0x02 ; 2 |
53e: 11 f1 breq .+68 ; 0x584 <__vector_13+0x154> |
540: 3d c0 rjmp .+122 ; 0x5bc <__vector_13+0x18c> |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
542: 80 91 9c 00 lds r24, 0x009C |
546: 83 32 cpi r24, 0x23 ; 35 |
548: 39 f4 brne .+14 ; 0x558 <__vector_13+0x128> |
54a: 80 91 9b 00 lds r24, 0x009B |
54e: 88 23 and r24, r24 |
550: 19 f4 brne .+6 ; 0x558 <__vector_13+0x128> |
552: 81 e0 ldi r24, 0x01 ; 1 |
554: 80 93 a4 00 sts 0x00A4, r24 |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
558: 80 91 9c 00 lds r24, 0x009C |
55c: 80 93 52 01 sts 0x0152, r24 |
560: 81 e0 ldi r24, 0x01 ; 1 |
562: 80 93 a3 00 sts 0x00A3, r24 |
crc = SioTmp; |
566: 80 91 9c 00 lds r24, 0x009C |
56a: 99 27 eor r25, r25 |
56c: 22 c0 rjmp .+68 ; 0x5b2 <__vector_13+0x182> |
break; |
case 1: // Adresse auswerten |
UartState++; |
56e: 2f 5f subi r18, 0xFF ; 255 |
570: 20 93 a4 00 sts 0x00A4, r18 |
RxdBuffer[buf_ptr++] = SioTmp; |
574: e5 2f mov r30, r21 |
576: ff 27 eor r31, r31 |
578: ee 5a subi r30, 0xAE ; 174 |
57a: fe 4f sbci r31, 0xFE ; 254 |
57c: 80 91 9c 00 lds r24, 0x009C |
580: 80 83 st Z, r24 |
582: 09 c0 rjmp .+18 ; 0x596 <__vector_13+0x166> |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
584: e5 2f mov r30, r21 |
586: ff 27 eor r31, r31 |
588: ee 5a subi r30, 0xAE ; 174 |
58a: fe 4f sbci r31, 0xFE ; 254 |
58c: 80 91 9c 00 lds r24, 0x009C |
590: 80 83 st Z, r24 |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
592: 54 36 cpi r21, 0x64 ; 100 |
594: 20 f4 brcc .+8 ; 0x59e <__vector_13+0x16e> |
596: 5f 5f subi r21, 0xFF ; 255 |
598: 50 93 a3 00 sts 0x00A3, r21 |
59c: 02 c0 rjmp .+4 ; 0x5a2 <__vector_13+0x172> |
else UartState = 0; |
59e: 10 92 a4 00 sts 0x00A4, r1 |
crc += SioTmp; |
5a2: 20 91 9c 00 lds r18, 0x009C |
5a6: 80 91 9f 00 lds r24, 0x009F |
5aa: 90 91 a0 00 lds r25, 0x00A0 |
5ae: 82 0f add r24, r18 |
5b0: 91 1d adc r25, r1 |
5b2: 90 93 a0 00 sts 0x00A0, r25 |
5b6: 80 93 9f 00 sts 0x009F, r24 |
break; |
5ba: 02 c0 rjmp .+4 ; 0x5c0 <__vector_13+0x190> |
default: |
UartState = 0; |
5bc: 10 92 a4 00 sts 0x00A4, r1 |
5c0: ff 91 pop r31 |
5c2: ef 91 pop r30 |
5c4: bf 91 pop r27 |
5c6: af 91 pop r26 |
5c8: 9f 91 pop r25 |
5ca: 8f 91 pop r24 |
5cc: 5f 91 pop r21 |
5ce: 4f 91 pop r20 |
5d0: 3f 91 pop r19 |
5d2: 2f 91 pop r18 |
5d4: 0f 90 pop r0 |
5d6: 0f be out 0x3f, r0 ; 63 |
5d8: 0f 90 pop r0 |
5da: 1f 90 pop r1 |
5dc: 18 95 reti |
000005de <AddCRC>: |
break; |
} |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
5de: ac 01 movw r20, r24 |
unsigned int tmpCRC = 0,i; |
5e0: a0 e0 ldi r26, 0x00 ; 0 |
5e2: b0 e0 ldi r27, 0x00 ; 0 |
for(i = 0; i < wieviele;i++) |
5e4: 9d 01 movw r18, r26 |
5e6: a8 17 cp r26, r24 |
5e8: b9 07 cpc r27, r25 |
5ea: 48 f4 brcc .+18 ; 0x5fe <AddCRC+0x20> |
5ec: ee ee ldi r30, 0xEE ; 238 |
5ee: f0 e0 ldi r31, 0x00 ; 0 |
{ |
tmpCRC += SendeBuffer[i]; |
5f0: 81 91 ld r24, Z+ |
5f2: 28 0f add r18, r24 |
5f4: 31 1d adc r19, r1 |
5f6: 11 96 adiw r26, 0x01 ; 1 |
5f8: a4 17 cp r26, r20 |
5fa: b5 07 cpc r27, r21 |
5fc: c8 f3 brcs .-14 ; 0x5f0 <AddCRC+0x12> |
} |
tmpCRC %= 4096; |
5fe: 3f 70 andi r19, 0x0F ; 15 |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
600: fd 01 movw r30, r26 |
602: e2 51 subi r30, 0x12 ; 18 |
604: ff 4f sbci r31, 0xFF ; 255 |
606: c9 01 movw r24, r18 |
608: 56 e0 ldi r21, 0x06 ; 6 |
60a: 96 95 lsr r25 |
60c: 87 95 ror r24 |
60e: 5a 95 dec r21 |
610: e1 f7 brne .-8 ; 0x60a <AddCRC+0x2c> |
612: 83 5c subi r24, 0xC3 ; 195 |
614: 80 83 st Z, r24 |
616: 11 96 adiw r26, 0x01 ; 1 |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
618: fd 01 movw r30, r26 |
61a: e2 51 subi r30, 0x12 ; 18 |
61c: ff 4f sbci r31, 0xFF ; 255 |
61e: 2f 73 andi r18, 0x3F ; 63 |
620: 30 70 andi r19, 0x00 ; 0 |
622: 82 2f mov r24, r18 |
624: 83 5c subi r24, 0xC3 ; 195 |
626: 80 83 st Z, r24 |
SendeBuffer[i++] = '\r'; |
628: a1 51 subi r26, 0x11 ; 17 |
62a: bf 4f sbci r27, 0xFF ; 255 |
62c: 8d e0 ldi r24, 0x0D ; 13 |
62e: 8c 93 st X, r24 |
UebertragungAbgeschlossen = 0; |
630: 10 92 6e 00 sts 0x006E, r1 |
UDR = SendeBuffer[0]; |
634: 80 91 ee 00 lds r24, 0x00EE |
638: 8c b9 out 0x0c, r24 ; 12 |
63a: 08 95 ret |
0000063c <SendOutData>: |
// PrintSendeBuffer(); |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
63c: 1f 93 push r17 |
63e: cf 93 push r28 |
640: df 93 push r29 |
642: 38 2f mov r19, r24 |
644: 96 2f mov r25, r22 |
646: ea 01 movw r28, r20 |
648: 72 2f mov r23, r18 |
unsigned int pt = 0,i; |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
64a: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
//while(!UebertragungAbgeschlossen); |
SendeBuffer[pt++] = '#'; // Startzeichen |
64c: 83 e2 ldi r24, 0x23 ; 35 |
64e: 80 93 ee 00 sts 0x00EE, r24 |
SendeBuffer[pt++] = modul+'a'; // Adresse (a=0; b=1,...) |
652: 9f 59 subi r25, 0x9F ; 159 |
654: 90 93 ef 00 sts 0x00EF, r25 |
SendeBuffer[pt++] = cmd; // Commando |
658: 30 93 f0 00 sts 0x00F0, r19 |
65c: a3 e0 ldi r26, 0x03 ; 3 |
65e: b0 e0 ldi r27, 0x00 ; 0 |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
660: 77 23 and r23, r23 |
662: 09 f4 brne .+2 ; 0x666 <SendOutData+0x2a> |
664: 58 c0 rjmp .+176 ; 0x716 <SendOutData+0xda> |
666: 77 23 and r23, r23 |
668: 11 f4 brne .+4 ; 0x66e <SendOutData+0x32> |
66a: 97 2f mov r25, r23 |
66c: 07 c0 rjmp .+14 ; 0x67c <SendOutData+0x40> |
66e: fe 01 movw r30, r28 |
670: e1 0f add r30, r17 |
672: f1 1d adc r31, r1 |
674: 1f 5f subi r17, 0xFF ; 255 |
676: 90 81 ld r25, Z |
678: 71 50 subi r23, 0x01 ; 1 |
67a: 11 f4 brne .+4 ; 0x680 <SendOutData+0x44> |
67c: 47 2f mov r20, r23 |
67e: 0e c0 rjmp .+28 ; 0x69c <SendOutData+0x60> |
680: fe 01 movw r30, r28 |
682: e1 0f add r30, r17 |
684: f1 1d adc r31, r1 |
686: 1f 5f subi r17, 0xFF ; 255 |
688: 40 81 ld r20, Z |
68a: 71 50 subi r23, 0x01 ; 1 |
68c: 39 f0 breq .+14 ; 0x69c <SendOutData+0x60> |
68e: fe 01 movw r30, r28 |
690: e1 0f add r30, r17 |
692: f1 1d adc r31, r1 |
694: 1f 5f subi r17, 0xFF ; 255 |
696: 60 81 ld r22, Z |
698: 71 50 subi r23, 0x01 ; 1 |
69a: 01 c0 rjmp .+2 ; 0x69e <SendOutData+0x62> |
69c: 67 2f mov r22, r23 |
69e: fd 01 movw r30, r26 |
6a0: e2 51 subi r30, 0x12 ; 18 |
6a2: ff 4f sbci r31, 0xFF ; 255 |
6a4: 89 2f mov r24, r25 |
6a6: 86 95 lsr r24 |
6a8: 86 95 lsr r24 |
6aa: 83 5c subi r24, 0xC3 ; 195 |
6ac: 80 83 st Z, r24 |
6ae: 11 96 adiw r26, 0x01 ; 1 |
6b0: fd 01 movw r30, r26 |
6b2: e2 51 subi r30, 0x12 ; 18 |
6b4: ff 4f sbci r31, 0xFF ; 255 |
6b6: 89 2f mov r24, r25 |
6b8: 99 27 eor r25, r25 |
6ba: 83 70 andi r24, 0x03 ; 3 |
6bc: 90 70 andi r25, 0x00 ; 0 |
6be: 24 e0 ldi r18, 0x04 ; 4 |
6c0: 88 0f add r24, r24 |
6c2: 99 1f adc r25, r25 |
6c4: 2a 95 dec r18 |
6c6: e1 f7 brne .-8 ; 0x6c0 <SendOutData+0x84> |
6c8: 55 27 eor r21, r21 |
6ca: 9a 01 movw r18, r20 |
6cc: 94 e0 ldi r25, 0x04 ; 4 |
6ce: 36 95 lsr r19 |
6d0: 27 95 ror r18 |
6d2: 9a 95 dec r25 |
6d4: e1 f7 brne .-8 ; 0x6ce <SendOutData+0x92> |
6d6: 82 2b or r24, r18 |
6d8: 83 5c subi r24, 0xC3 ; 195 |
6da: 80 83 st Z, r24 |
6dc: 11 96 adiw r26, 0x01 ; 1 |
6de: fd 01 movw r30, r26 |
6e0: e2 51 subi r30, 0x12 ; 18 |
6e2: ff 4f sbci r31, 0xFF ; 255 |
6e4: 4f 70 andi r20, 0x0F ; 15 |
6e6: 50 70 andi r21, 0x00 ; 0 |
6e8: 44 0f add r20, r20 |
6ea: 55 1f adc r21, r21 |
6ec: 44 0f add r20, r20 |
6ee: 55 1f adc r21, r21 |
6f0: 86 2f mov r24, r22 |
6f2: 99 27 eor r25, r25 |
6f4: 26 e0 ldi r18, 0x06 ; 6 |
6f6: 96 95 lsr r25 |
6f8: 87 95 ror r24 |
6fa: 2a 95 dec r18 |
6fc: e1 f7 brne .-8 ; 0x6f6 <SendOutData+0xba> |
6fe: 84 2b or r24, r20 |
700: 83 5c subi r24, 0xC3 ; 195 |
702: 80 83 st Z, r24 |
704: 11 96 adiw r26, 0x01 ; 1 |
706: fd 01 movw r30, r26 |
708: e2 51 subi r30, 0x12 ; 18 |
70a: ff 4f sbci r31, 0xFF ; 255 |
70c: 6f 73 andi r22, 0x3F ; 63 |
70e: 63 5c subi r22, 0xC3 ; 195 |
710: 60 83 st Z, r22 |
712: 11 96 adiw r26, 0x01 ; 1 |
714: a5 cf rjmp .-182 ; 0x660 <SendOutData+0x24> |
} |
AddCRC(pt); |
716: cd 01 movw r24, r26 |
718: 0e 94 ef 02 call 0x5de <AddCRC> |
71c: df 91 pop r29 |
71e: cf 91 pop r28 |
720: 1f 91 pop r17 |
722: 08 95 ret |
00000724 <Decode64>: |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
724: 1f 93 push r17 |
726: cf 93 push r28 |
728: df 93 push r29 |
72a: ec 01 movw r28, r24 |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
72c: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
72e: 66 23 and r22, r22 |
730: 09 f4 brne .+2 ; 0x734 <Decode64+0x10> |
732: 60 c0 rjmp .+192 ; 0x7f4 <Decode64+0xd0> |
734: a2 2f mov r26, r18 |
736: bb 27 eor r27, r27 |
738: 12 97 sbiw r26, 0x02 ; 2 |
73a: e4 2f mov r30, r20 |
73c: ff 27 eor r31, r31 |
73e: ee 5a subi r30, 0xAE ; 174 |
740: fe 4f sbci r31, 0xFE ; 254 |
742: 30 81 ld r19, Z |
744: 3d 53 subi r19, 0x3D ; 61 |
746: 4f 5f subi r20, 0xFF ; 255 |
748: e4 2f mov r30, r20 |
74a: ff 27 eor r31, r31 |
74c: ee 5a subi r30, 0xAE ; 174 |
74e: fe 4f sbci r31, 0xFE ; 254 |
750: 50 81 ld r21, Z |
752: 5d 53 subi r21, 0x3D ; 61 |
754: 4f 5f subi r20, 0xFF ; 255 |
756: e4 2f mov r30, r20 |
758: ff 27 eor r31, r31 |
75a: ee 5a subi r30, 0xAE ; 174 |
75c: fe 4f sbci r31, 0xFE ; 254 |
75e: 70 81 ld r23, Z |
760: 7d 53 subi r23, 0x3D ; 61 |
762: 4f 5f subi r20, 0xFF ; 255 |
764: e4 2f mov r30, r20 |
766: ff 27 eor r31, r31 |
768: ee 5a subi r30, 0xAE ; 174 |
76a: fe 4f sbci r31, 0xFE ; 254 |
76c: e0 81 ld r30, Z |
76e: ed 53 subi r30, 0x3D ; 61 |
770: 4f 5f subi r20, 0xFF ; 255 |
772: 84 2f mov r24, r20 |
774: 99 27 eor r25, r25 |
776: a8 17 cp r26, r24 |
778: b9 07 cpc r27, r25 |
77a: e4 f1 brlt .+120 ; 0x7f4 <Decode64+0xd0> |
77c: 83 2f mov r24, r19 |
77e: 99 27 eor r25, r25 |
780: 88 0f add r24, r24 |
782: 99 1f adc r25, r25 |
784: 88 0f add r24, r24 |
786: 99 1f adc r25, r25 |
788: 35 2f mov r19, r21 |
78a: 32 95 swap r19 |
78c: 3f 70 andi r19, 0x0F ; 15 |
78e: 38 2b or r19, r24 |
790: 85 2f mov r24, r21 |
792: 99 27 eor r25, r25 |
794: 8f 70 andi r24, 0x0F ; 15 |
796: 90 70 andi r25, 0x00 ; 0 |
798: f4 e0 ldi r31, 0x04 ; 4 |
79a: 88 0f add r24, r24 |
79c: 99 1f adc r25, r25 |
79e: fa 95 dec r31 |
7a0: e1 f7 brne .-8 ; 0x79a <Decode64+0x76> |
7a2: 57 2f mov r21, r23 |
7a4: 56 95 lsr r21 |
7a6: 56 95 lsr r21 |
7a8: 58 2b or r21, r24 |
7aa: 87 2f mov r24, r23 |
7ac: 99 27 eor r25, r25 |
7ae: 83 70 andi r24, 0x03 ; 3 |
7b0: 90 70 andi r25, 0x00 ; 0 |
7b2: 76 e0 ldi r23, 0x06 ; 6 |
7b4: 88 0f add r24, r24 |
7b6: 99 1f adc r25, r25 |
7b8: 7a 95 dec r23 |
7ba: e1 f7 brne .-8 ; 0x7b4 <Decode64+0x90> |
7bc: 8e 2b or r24, r30 |
7be: 61 50 subi r22, 0x01 ; 1 |
7c0: 6f 3f cpi r22, 0xFF ; 255 |
7c2: c1 f0 breq .+48 ; 0x7f4 <Decode64+0xd0> |
7c4: fe 01 movw r30, r28 |
7c6: e1 0f add r30, r17 |
7c8: f1 1d adc r31, r1 |
7ca: 30 83 st Z, r19 |
7cc: 1f 5f subi r17, 0xFF ; 255 |
7ce: 61 50 subi r22, 0x01 ; 1 |
7d0: 6f 3f cpi r22, 0xFF ; 255 |
7d2: 81 f0 breq .+32 ; 0x7f4 <Decode64+0xd0> |
7d4: fe 01 movw r30, r28 |
7d6: e1 0f add r30, r17 |
7d8: f1 1d adc r31, r1 |
7da: 50 83 st Z, r21 |
7dc: 1f 5f subi r17, 0xFF ; 255 |
7de: 61 50 subi r22, 0x01 ; 1 |
7e0: 6f 3f cpi r22, 0xFF ; 255 |
7e2: 41 f0 breq .+16 ; 0x7f4 <Decode64+0xd0> |
7e4: fe 01 movw r30, r28 |
7e6: e1 0f add r30, r17 |
7e8: f1 1d adc r31, r1 |
7ea: 80 83 st Z, r24 |
7ec: 1f 5f subi r17, 0xFF ; 255 |
7ee: 66 23 and r22, r22 |
7f0: 09 f0 breq .+2 ; 0x7f4 <Decode64+0xd0> |
7f2: a3 cf rjmp .-186 ; 0x73a <Decode64+0x16> |
7f4: df 91 pop r29 |
7f6: cf 91 pop r28 |
7f8: 1f 91 pop r17 |
7fa: 08 95 ret |
000007fc <BearbeiteRxDaten>: |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
7fc: cf 93 push r28 |
7fe: df 93 push r29 |
800: cd b7 in r28, 0x3d ; 61 |
802: de b7 in r29, 0x3e ; 62 |
804: ad 97 sbiw r28, 0x2d ; 45 |
806: 0f b6 in r0, 0x3f ; 63 |
808: f8 94 cli |
80a: de bf out 0x3e, r29 ; 62 |
80c: 0f be out 0x3f, r0 ; 63 |
80e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr1[1]; |
unsigned int tmp_int_arr2[2]; |
unsigned int tmp_int_arr20[21]; |
unsigned char tmp_char_arr3[3]; |
// unsigned int tmp_int_arr4[4]; |
if(!NeuerDatensatzEmpfangen) return; |
810: 80 91 9b 00 lds r24, 0x009B |
814: 88 23 and r24, r24 |
816: 09 f4 brne .+2 ; 0x81a <BearbeiteRxDaten+0x1e> |
818: a7 c0 rjmp .+334 ; 0x968 <__stack+0x109> |
NeuerDatensatzEmpfangen = 0; |
81a: 10 92 9b 00 sts 0x009B, r1 |
if(ErwarteAntwort == RxdBuffer[2]) AntwortEingetroffen = 1; |
81e: 90 91 6d 00 lds r25, 0x006D |
822: 80 91 54 01 lds r24, 0x0154 |
826: 98 17 cp r25, r24 |
828: 19 f4 brne .+6 ; 0x830 <BearbeiteRxDaten+0x34> |
82a: 81 e0 ldi r24, 0x01 ; 1 |
82c: 80 93 92 00 sts 0x0092, r24 |
switch(RxdBuffer[2]) |
830: 80 91 54 01 lds r24, 0x0154 |
834: 99 27 eor r25, r25 |
836: 82 33 cpi r24, 0x32 ; 50 |
838: 91 05 cpc r25, r1 |
83a: 09 f4 brne .+2 ; 0x83e <BearbeiteRxDaten+0x42> |
83c: 46 c0 rjmp .+140 ; 0x8ca <__stack+0x6b> |
83e: 83 33 cpi r24, 0x33 ; 51 |
840: 91 05 cpc r25, r1 |
842: 34 f4 brge .+12 ; 0x850 <BearbeiteRxDaten+0x54> |
844: 80 33 cpi r24, 0x30 ; 48 |
846: 91 05 cpc r25, r1 |
848: 99 f0 breq .+38 ; 0x870 <__stack+0x11> |
84a: c1 97 sbiw r24, 0x31 ; 49 |
84c: 49 f1 breq .+82 ; 0x8a0 <__stack+0x41> |
84e: 8c c0 rjmp .+280 ; 0x968 <__stack+0x109> |
850: 84 34 cpi r24, 0x44 ; 68 |
852: 91 05 cpc r25, r1 |
854: 09 f4 brne .+2 ; 0x858 <BearbeiteRxDaten+0x5c> |
856: 6b c0 rjmp .+214 ; 0x92e <__stack+0xcf> |
858: 85 34 cpi r24, 0x45 ; 69 |
85a: 91 05 cpc r25, r1 |
85c: 24 f4 brge .+8 ; 0x866 <__stack+0x7> |
85e: c3 97 sbiw r24, 0x33 ; 51 |
860: 09 f4 brne .+2 ; 0x864 <__stack+0x5> |
862: 48 c0 rjmp .+144 ; 0x8f4 <__stack+0x95> |
864: 81 c0 rjmp .+258 ; 0x968 <__stack+0x109> |
866: 8b 34 cpi r24, 0x4B ; 75 |
868: 91 05 cpc r25, r1 |
86a: 09 f4 brne .+2 ; 0x86e <__stack+0xf> |
86c: 6c c0 rjmp .+216 ; 0x946 <__stack+0xe7> |
86e: 7c c0 rjmp .+248 ; 0x968 <__stack+0x109> |
{ |
case '0':// LCD-Zeile0 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
870: 20 91 98 00 lds r18, 0x0098 |
874: 43 e0 ldi r20, 0x03 ; 3 |
876: 6a e2 ldi r22, 0x2A ; 42 |
878: ce 01 movw r24, r28 |
87a: 01 96 adiw r24, 0x01 ; 1 |
87c: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
880: 1a a6 std Y+42, r1 ; 0x2a |
882: 19 a6 std Y+41, r1 ; 0x29 |
DisplayBusy = 1; |
884: 81 e0 ldi r24, 0x01 ; 1 |
886: 80 93 93 00 sts 0x0093, r24 |
LCD_printfxy(0,0,"%s",tmp_int_arr20); |
88a: 60 e0 ldi r22, 0x00 ; 0 |
88c: 86 2f mov r24, r22 |
88e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
892: ce 01 movw r24, r28 |
894: 01 96 adiw r24, 0x01 ; 1 |
896: 9f 93 push r25 |
898: 8f 93 push r24 |
89a: 88 ea ldi r24, 0xA8 ; 168 |
89c: 90 e0 ldi r25, 0x00 ; 0 |
89e: 3e c0 rjmp .+124 ; 0x91c <__stack+0xbd> |
break; |
case '1':// LCD-Zeile1 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8a0: 20 91 98 00 lds r18, 0x0098 |
8a4: 43 e0 ldi r20, 0x03 ; 3 |
8a6: 6a e2 ldi r22, 0x2A ; 42 |
8a8: ce 01 movw r24, r28 |
8aa: 01 96 adiw r24, 0x01 ; 1 |
8ac: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8b0: 1a a6 std Y+42, r1 ; 0x2a |
8b2: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,1,"%s",tmp_int_arr20); |
8b4: 61 e0 ldi r22, 0x01 ; 1 |
8b6: 80 e0 ldi r24, 0x00 ; 0 |
8b8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8bc: ce 01 movw r24, r28 |
8be: 01 96 adiw r24, 0x01 ; 1 |
8c0: 9f 93 push r25 |
8c2: 8f 93 push r24 |
8c4: 8b ea ldi r24, 0xAB ; 171 |
8c6: 90 e0 ldi r25, 0x00 ; 0 |
8c8: 29 c0 rjmp .+82 ; 0x91c <__stack+0xbd> |
break; |
case '2':// LCD-Zeile2 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8ca: 20 91 98 00 lds r18, 0x0098 |
8ce: 43 e0 ldi r20, 0x03 ; 3 |
8d0: 6a e2 ldi r22, 0x2A ; 42 |
8d2: ce 01 movw r24, r28 |
8d4: 01 96 adiw r24, 0x01 ; 1 |
8d6: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8da: 1a a6 std Y+42, r1 ; 0x2a |
8dc: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,2,"%s",tmp_int_arr20); |
8de: 62 e0 ldi r22, 0x02 ; 2 |
8e0: 80 e0 ldi r24, 0x00 ; 0 |
8e2: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8e6: ce 01 movw r24, r28 |
8e8: 01 96 adiw r24, 0x01 ; 1 |
8ea: 9f 93 push r25 |
8ec: 8f 93 push r24 |
8ee: 8e ea ldi r24, 0xAE ; 174 |
8f0: 90 e0 ldi r25, 0x00 ; 0 |
8f2: 14 c0 rjmp .+40 ; 0x91c <__stack+0xbd> |
break; |
case '3':// LCD-Zeile3 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8f4: 20 91 98 00 lds r18, 0x0098 |
8f8: 43 e0 ldi r20, 0x03 ; 3 |
8fa: 6a e2 ldi r22, 0x2A ; 42 |
8fc: ce 01 movw r24, r28 |
8fe: 01 96 adiw r24, 0x01 ; 1 |
900: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
904: 1a a6 std Y+42, r1 ; 0x2a |
906: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,3,"%s",tmp_int_arr20); |
908: 63 e0 ldi r22, 0x03 ; 3 |
90a: 80 e0 ldi r24, 0x00 ; 0 |
90c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
910: ce 01 movw r24, r28 |
912: 01 96 adiw r24, 0x01 ; 1 |
914: 9f 93 push r25 |
916: 8f 93 push r24 |
918: 81 eb ldi r24, 0xB1 ; 177 |
91a: 90 e0 ldi r25, 0x00 ; 0 |
91c: 9f 93 push r25 |
91e: 8f 93 push r24 |
920: 0e 94 e3 06 call 0xdc6 <_printf_P> |
break; |
924: 0f 90 pop r0 |
926: 0f 90 pop r0 |
928: 0f 90 pop r0 |
92a: 0f 90 pop r0 |
92c: 1d c0 rjmp .+58 ; 0x968 <__stack+0x109> |
case 'D': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugOut,sizeof(DebugOut),3,AnzahlEmpfangsBytes); |
92e: 20 91 98 00 lds r18, 0x0098 |
932: 43 e0 ldi r20, 0x03 ; 3 |
934: 6a e1 ldi r22, 0x1A ; 26 |
936: 83 ed ldi r24, 0xD3 ; 211 |
938: 90 e0 ldi r25, 0x00 ; 0 |
93a: 0e 94 92 03 call 0x724 <Decode64> |
PORTB = DebugOut.Digital[1]; |
93e: 80 91 d4 00 lds r24, 0x00D4 |
942: 88 bb out 0x18, r24 ; 24 |
break; |
944: 11 c0 rjmp .+34 ; 0x968 <__stack+0x109> |
case 'K': // Debug Eingangsdaten |
Decode64(tmp_char_arr3,sizeof(tmp_char_arr3),3,AnzahlEmpfangsBytes); |
946: 20 91 98 00 lds r18, 0x0098 |
94a: 43 e0 ldi r20, 0x03 ; 3 |
94c: 64 2f mov r22, r20 |
94e: ce 01 movw r24, r28 |
950: 8b 96 adiw r24, 0x2b ; 43 |
952: 0e 94 92 03 call 0x724 <Decode64> |
TX_DigTransferKanalL = tmp_char_arr3[0]; |
956: 8b a5 ldd r24, Y+43 ; 0x2b |
958: 80 93 96 00 sts 0x0096, r24 |
TX_DigTransferKanalH = tmp_char_arr3[1]; |
95c: 8c a5 ldd r24, Y+44 ; 0x2c |
95e: 80 93 95 00 sts 0x0095, r24 |
TX_DigTransferKanalDaten = tmp_char_arr3[2]; |
962: 8d a5 ldd r24, Y+45 ; 0x2d |
964: 80 93 94 00 sts 0x0094, r24 |
968: ad 96 adiw r28, 0x2d ; 45 |
96a: 0f b6 in r0, 0x3f ; 63 |
96c: f8 94 cli |
96e: de bf out 0x3e, r29 ; 62 |
970: 0f be out 0x3f, r0 ; 63 |
972: cd bf out 0x3d, r28 ; 61 |
974: df 91 pop r29 |
976: cf 91 pop r28 |
978: 08 95 ret |
0000097a <uart_putchar>: |
//if(RxdBuffer[1] == 'b') LCD_printfxy(0,0,"b:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
//if(RxdBuffer[1] == 'c') LCD_printfxy(0,1,"c:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
break; |
/* |
unsigned char Digital[13]; // 0 = Taster, Hauptkarte |
// 1 + 2 = Debugkanäle |
// 3 = Digin, Hauptkarte |
// 4 = Relais, Hauptkarte |
// 5 + 6 = Extern IO1 (12Bit ein 4 Bit aus) |
// 7 + 8 = Extern IO2 (12Bit ein 4 Bit aus) |
// 9 + 10 = Extern IO3 (12Bit ein 4 Bit aus) |
// 11 + 12= Extern IO4 (12Bit ein 4 Bit aus) |
*/ |
/* case 'd': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
} |
break; |
case 'g': // "Get"-Anforderung für Debug-Daten // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'u': // Uhr stellen |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
ZEITWERT = tmp_int_arr2[0]; |
SEK = tmp_int_arr2[1]; |
make_time_variables(ZEITWERT); |
RTC_SetTime(STD, MIN, SEK); |
RTC_SetWDay(TAG); |
break; |
case 'i': // Intervalle für die Datenübertragung |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
Debug_Timer_Intervall = tmp_int_arr2[0]; |
Debug_Display_Intervall = tmp_int_arr2[1]; |
SendeDummyDaten = 1; |
break; |
case 's': // single Step 1 = Stop 2 = noch einen Zyklus 3 = noch 2 Zyklen |
Decode64((unsigned char *) &tmp_int_arr1[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
SingleStep = tmp_int_arr1[0]; |
break; |
*/ |
} |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
97a: cf 93 push r28 |
97c: c8 2f mov r28, r24 |
if (c == '\n') |
97e: 8a 30 cpi r24, 0x0A ; 10 |
980: 19 f4 brne .+6 ; 0x988 <uart_putchar+0xe> |
uart_putchar('\r'); |
982: 8d e0 ldi r24, 0x0D ; 13 |
984: 0e 94 bd 04 call 0x97a <uart_putchar> |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
988: 5d 9b sbis 0x0b, 5 ; 11 |
98a: fe cf rjmp .-4 ; 0x988 <uart_putchar+0xe> |
//Ausgabe des Zeichens |
UDR = c; |
98c: cc b9 out 0x0c, r28 ; 12 |
return (0); |
} |
98e: 80 e0 ldi r24, 0x00 ; 0 |
990: 90 e0 ldi r25, 0x00 ; 0 |
992: cf 91 pop r28 |
994: 08 95 ret |
00000996 <WriteProgramData>: |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
996: 08 95 ret |
00000998 <UART_Init>: |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
998: 88 e1 ldi r24, 0x18 ; 24 |
99a: 8a b9 out 0x0a, r24 ; 10 |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
99c: 59 9a sbi 0x0b, 1 ; 11 |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
99e: 57 9a sbi 0x0a, 7 ; 10 |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
9a0: 56 9a sbi 0x0a, 6 ; 10 |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
9a2: 81 e2 ldi r24, 0x21 ; 33 |
9a4: 89 b9 out 0x09, r24 ; 9 |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
9a6: 60 e0 ldi r22, 0x00 ; 0 |
9a8: 70 e0 ldi r23, 0x00 ; 0 |
9aa: 8d eb ldi r24, 0xBD ; 189 |
9ac: 94 e0 ldi r25, 0x04 ; 4 |
9ae: 0e 94 71 0c call 0x18e2 <fdevopen> |
9b2: 08 95 ret |
000009b4 <SendeRemoteTasten>: |
//sbi(PORTD,4); |
} |
/* |
struct str_DebugIn |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
unsigned int Analog[4]; |
}; |
*/ |
void SendeRemoteTasten(unsigned char keys) |
{ |
9b4: 98 2f mov r25, r24 |
while(!UebertragungAbgeschlossen); // evtl warten |
9b6: 80 91 6e 00 lds r24, 0x006E |
9ba: 88 23 and r24, r24 |
9bc: e1 f3 breq .-8 ; 0x9b6 <SendeRemoteTasten+0x2> |
DebugIn.RemoteTasten = keys; |
9be: 90 93 c0 00 sts 0x00C0, r25 |
DebugIn.Analog[0] = AnalogWerte[0]; |
9c2: 80 91 ca 01 lds r24, 0x01CA |
9c6: 90 91 cb 01 lds r25, 0x01CB |
9ca: 90 93 c2 00 sts 0x00C2, r25 |
9ce: 80 93 c1 00 sts 0x00C1, r24 |
DebugIn.Analog[1] = AnalogWerte[1]; |
9d2: 80 91 cc 01 lds r24, 0x01CC |
9d6: 90 91 cd 01 lds r25, 0x01CD |
9da: 90 93 c4 00 sts 0x00C4, r25 |
9de: 80 93 c3 00 sts 0x00C3, r24 |
DebugIn.Analog[2] = AnalogWerte[2]; |
9e2: 80 91 ce 01 lds r24, 0x01CE |
9e6: 90 91 cf 01 lds r25, 0x01CF |
9ea: 90 93 c6 00 sts 0x00C6, r25 |
9ee: 80 93 c5 00 sts 0x00C5, r24 |
DebugIn.Analog[3] = IR_Code; |
9f2: 80 91 c7 01 lds r24, 0x01C7 |
9f6: 90 91 c8 01 lds r25, 0x01C8 |
9fa: 90 93 c8 00 sts 0x00C8, r25 |
9fe: 80 93 c7 00 sts 0x00C7, r24 |
SendOutData('d',SlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
a02: 2b e0 ldi r18, 0x0B ; 11 |
a04: 4e eb ldi r20, 0xBE ; 190 |
a06: 50 e0 ldi r21, 0x00 ; 0 |
a08: 60 91 64 00 lds r22, 0x0064 |
a0c: 84 e6 ldi r24, 0x64 ; 100 |
a0e: 0e 94 1e 03 call 0x63c <SendOutData> |
a12: 08 95 ret |
00000a14 <SendIntervalle>: |
} |
void SendIntervalle(unsigned int debug, unsigned int disp) |
{ |
a14: cf 93 push r28 |
a16: df 93 push r29 |
a18: cd b7 in r28, 0x3d ; 61 |
a1a: de b7 in r29, 0x3e ; 62 |
a1c: 24 97 sbiw r28, 0x04 ; 4 |
a1e: 0f b6 in r0, 0x3f ; 63 |
a20: f8 94 cli |
a22: de bf out 0x3e, r29 ; 62 |
a24: 0f be out 0x3f, r0 ; 63 |
a26: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = debug; |
a28: 9a 83 std Y+2, r25 ; 0x02 |
a2a: 89 83 std Y+1, r24 ; 0x01 |
tmp_int_arr2[1] = disp; |
a2c: 7c 83 std Y+4, r23 ; 0x04 |
a2e: 6b 83 std Y+3, r22 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a30: 80 91 6e 00 lds r24, 0x006E |
a34: 88 23 and r24, r24 |
a36: e1 f3 breq .-8 ; 0xa30 <SendIntervalle+0x1c> |
SendOutData('i',SlaveAdresse,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); |
a38: 24 e0 ldi r18, 0x04 ; 4 |
a3a: ae 01 movw r20, r28 |
a3c: 4f 5f subi r20, 0xFF ; 255 |
a3e: 5f 4f sbci r21, 0xFF ; 255 |
a40: 60 91 64 00 lds r22, 0x0064 |
a44: 89 e6 ldi r24, 0x69 ; 105 |
a46: 0e 94 1e 03 call 0x63c <SendOutData> |
a4a: 24 96 adiw r28, 0x04 ; 4 |
a4c: 0f b6 in r0, 0x3f ; 63 |
a4e: f8 94 cli |
a50: de bf out 0x3e, r29 ; 62 |
a52: 0f be out 0x3f, r0 ; 63 |
a54: cd bf out 0x3d, r28 ; 61 |
a56: df 91 pop r29 |
a58: cf 91 pop r28 |
a5a: 08 95 ret |
00000a5c <ClearIntervalle>: |
} |
void ClearIntervalle(void) |
{ |
a5c: cf 93 push r28 |
a5e: df 93 push r29 |
a60: cd b7 in r28, 0x3d ; 61 |
a62: de b7 in r29, 0x3e ; 62 |
a64: 24 97 sbiw r28, 0x04 ; 4 |
a66: 0f b6 in r0, 0x3f ; 63 |
a68: f8 94 cli |
a6a: de bf out 0x3e, r29 ; 62 |
a6c: 0f be out 0x3f, r0 ; 63 |
a6e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = 0; |
a70: 1a 82 std Y+2, r1 ; 0x02 |
a72: 19 82 std Y+1, r1 ; 0x01 |
tmp_int_arr2[1] = 0; |
a74: 1c 82 std Y+4, r1 ; 0x04 |
a76: 1b 82 std Y+3, r1 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a78: 80 91 6e 00 lds r24, 0x006E |
a7c: 88 23 and r24, r24 |
a7e: e1 f3 breq .-8 ; 0xa78 <ClearIntervalle+0x1c> |
SendOutData('i',0,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); // 0= an alle |
a80: 24 e0 ldi r18, 0x04 ; 4 |
a82: ae 01 movw r20, r28 |
a84: 4f 5f subi r20, 0xFF ; 255 |
a86: 5f 4f sbci r21, 0xFF ; 255 |
a88: 60 e0 ldi r22, 0x00 ; 0 |
a8a: 89 e6 ldi r24, 0x69 ; 105 |
a8c: 0e 94 1e 03 call 0x63c <SendOutData> |
a90: 24 96 adiw r28, 0x04 ; 4 |
a92: 0f b6 in r0, 0x3f ; 63 |
a94: f8 94 cli |
a96: de bf out 0x3e, r29 ; 62 |
a98: 0f be out 0x3f, r0 ; 63 |
a9a: cd bf out 0x3d, r28 ; 61 |
a9c: df 91 pop r29 |
a9e: cf 91 pop r28 |
aa0: 08 95 ret |
00000aa2 <DatenUebertragung>: |
} |
void DatenUebertragung(unsigned char key) |
{ |
aa2: cf 93 push r28 |
aa4: df 93 push r29 |
aa6: cd b7 in r28, 0x3d ; 61 |
aa8: de b7 in r29, 0x3e ; 62 |
aaa: 25 97 sbiw r28, 0x05 ; 5 |
aac: 0f b6 in r0, 0x3f ; 63 |
aae: f8 94 cli |
ab0: de bf out 0x3e, r29 ; 62 |
ab2: 0f be out 0x3f, r0 ; 63 |
ab4: cd bf out 0x3d, r28 ; 61 |
ab6: 98 2f mov r25, r24 |
static unsigned char state = 1; |
unsigned char temp_1[1]; |
unsigned char temp_2[2]; |
unsigned char temp_3[3]; |
unsigned int tmp_int_arr2[2]; |
while(!UebertragungAbgeschlossen); // evtl warten |
ab8: 80 91 6e 00 lds r24, 0x006E |
abc: 88 23 and r24, r24 |
abe: e1 f3 breq .-8 ; 0xab8 <DatenUebertragung+0x16> |
static unsigned char KanalSlave = 1; |
if(PollDisplay) |
ac0: 80 91 ed 00 lds r24, 0x00ED |
ac4: 88 23 and r24, r24 |
ac6: e1 f0 breq .+56 ; 0xb00 <DatenUebertragung+0x5e> |
{ |
temp_2[0] = key; |
ac8: 9c 83 std Y+4, r25 ; 0x04 |
temp_2[1] = 6; |
aca: 86 e0 ldi r24, 0x06 ; 6 |
acc: 8d 83 std Y+5, r24 ; 0x05 |
if(DisplayZeilen == 4) temp_2[1] = 4 + 9; // anzahl Zeilen --> + 8 bedeutet: ersten Pollingzyklus freilassen |
ace: 80 91 65 00 lds r24, 0x0065 |
ad2: 84 30 cpi r24, 0x04 ; 4 |
ad4: 11 f4 brne .+4 ; 0xada <DatenUebertragung+0x38> |
ad6: 8d e0 ldi r24, 0x0D ; 13 |
ad8: 01 c0 rjmp .+2 ; 0xadc <DatenUebertragung+0x3a> |
else temp_2[1] = 2 + 9; |
ada: 8b e0 ldi r24, 0x0B ; 11 |
adc: 8d 83 std Y+5, r24 ; 0x05 |
SendOutData('h',SlaveAdresse,(unsigned char *) &temp_2,sizeof(temp_2)); |
ade: 22 e0 ldi r18, 0x02 ; 2 |
ae0: ae 01 movw r20, r28 |
ae2: 4c 5f subi r20, 0xFC ; 252 |
ae4: 5f 4f sbci r21, 0xFF ; 255 |
ae6: 60 91 64 00 lds r22, 0x0064 |
aea: 88 e6 ldi r24, 0x68 ; 104 |
aec: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = '0'; |
af0: 80 e3 ldi r24, 0x30 ; 48 |
af2: 80 93 6d 00 sts 0x006D, r24 |
DisplayBusy = 90; |
af6: 8a e5 ldi r24, 0x5A ; 90 |
af8: 80 93 93 00 sts 0x0093, r24 |
PollDisplay = 0; |
afc: 10 92 ed 00 sts 0x00ED, r1 |
} |
if(!DisplayBusy) |
b00: 60 91 93 00 lds r22, 0x0093 |
b04: 66 23 and r22, r22 |
b06: e1 f5 brne .+120 ; 0xb80 <DatenUebertragung+0xde> |
switch(state) |
b08: 80 91 6f 00 lds r24, 0x006F |
b0c: 99 27 eor r25, r25 |
b0e: 81 30 cpi r24, 0x01 ; 1 |
b10: 91 05 cpc r25, r1 |
b12: 19 f0 breq .+6 ; 0xb1a <DatenUebertragung+0x78> |
b14: 02 97 sbiw r24, 0x02 ; 2 |
b16: e9 f0 breq .+58 ; 0xb52 <DatenUebertragung+0xb0> |
b18: 30 c0 rjmp .+96 ; 0xb7a <DatenUebertragung+0xd8> |
{ |
case 1:// Display |
SendOutData('k',KanalSlave,(unsigned char *) &temp_3,sizeof(temp_3)); |
b1a: 23 e0 ldi r18, 0x03 ; 3 |
b1c: ae 01 movw r20, r28 |
b1e: 4f 5f subi r20, 0xFF ; 255 |
b20: 5f 4f sbci r21, 0xFF ; 255 |
b22: 60 91 70 00 lds r22, 0x0070 |
b26: 8b e6 ldi r24, 0x6B ; 107 |
b28: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = 'K'; |
b2c: 8b e4 ldi r24, 0x4B ; 75 |
b2e: 80 93 6d 00 sts 0x006D, r24 |
if(++KanalSlave > AnzahlTeilnehmer) KanalSlave = 1; |
b32: 80 91 70 00 lds r24, 0x0070 |
b36: 8f 5f subi r24, 0xFF ; 255 |
b38: 80 93 70 00 sts 0x0070, r24 |
b3c: 90 91 6c 00 lds r25, 0x006C |
b40: 98 17 cp r25, r24 |
b42: 18 f4 brcc .+6 ; 0xb4a <DatenUebertragung+0xa8> |
b44: 81 e0 ldi r24, 0x01 ; 1 |
b46: 80 93 70 00 sts 0x0070, r24 |
state++; |
b4a: 80 91 6f 00 lds r24, 0x006F |
b4e: 8f 5f subi r24, 0xFF ; 255 |
b50: 15 c0 rjmp .+42 ; 0xb7c <DatenUebertragung+0xda> |
break; |
case 2: |
temp_3[0] = TX_DigTransferKanalL; |
b52: 80 91 96 00 lds r24, 0x0096 |
b56: 89 83 std Y+1, r24 ; 0x01 |
temp_3[1] = TX_DigTransferKanalH; |
b58: 80 91 95 00 lds r24, 0x0095 |
b5c: 8a 83 std Y+2, r24 ; 0x02 |
temp_3[2] = TX_DigTransferKanalDaten; |
b5e: 80 91 94 00 lds r24, 0x0094 |
b62: 8b 83 std Y+3, r24 ; 0x03 |
SendOutData('l',0,(unsigned char *) &temp_3,sizeof(temp_3)); |
b64: 23 e0 ldi r18, 0x03 ; 3 |
b66: ae 01 movw r20, r28 |
b68: 4f 5f subi r20, 0xFF ; 255 |
b6a: 5f 4f sbci r21, 0xFF ; 255 |
b6c: 8c e6 ldi r24, 0x6C ; 108 |
b6e: 0e 94 1e 03 call 0x63c <SendOutData> |
AntwortEingetroffen = 1; // erwarte keine Antwort |
b72: 81 e0 ldi r24, 0x01 ; 1 |
b74: 80 93 92 00 sts 0x0092, r24 |
b78: 01 c0 rjmp .+2 ; 0xb7c <DatenUebertragung+0xda> |
state = 1; |
break; |
default: state = 1; |
b7a: 81 e0 ldi r24, 0x01 ; 1 |
b7c: 80 93 6f 00 sts 0x006F, r24 |
b80: 25 96 adiw r28, 0x05 ; 5 |
b82: 0f b6 in r0, 0x3f ; 63 |
b84: f8 94 cli |
b86: de bf out 0x3e, r29 ; 62 |
b88: 0f be out 0x3f, r0 ; 63 |
b8a: cd bf out 0x3d, r28 ; 61 |
b8c: df 91 pop r29 |
b8e: cf 91 pop r28 |
b90: 08 95 ret |
00000b92 <_long_delay>: |
#include "main.h" |
void _long_delay(void) |
{ |
long t = 5000; |
b92: 88 e8 ldi r24, 0x88 ; 136 |
b94: 93 e1 ldi r25, 0x13 ; 19 |
b96: a0 e0 ldi r26, 0x00 ; 0 |
b98: b0 e0 ldi r27, 0x00 ; 0 |
while (t--); |
b9a: 03 97 sbiw r24, 0x03 ; 3 |
b9c: a1 09 sbc r26, r1 |
b9e: b1 09 sbc r27, r1 |
ba0: 8f 3f cpi r24, 0xFF ; 255 |
ba2: 2f ef ldi r18, 0xFF ; 255 |
ba4: 92 07 cpc r25, r18 |
ba6: 2f ef ldi r18, 0xFF ; 255 |
ba8: a2 07 cpc r26, r18 |
baa: 2f ef ldi r18, 0xFF ; 255 |
bac: b2 07 cpc r27, r18 |
bae: a9 f7 brne .-22 ; 0xb9a <_long_delay+0x8> |
bb0: 08 95 ret |
00000bb2 <_short_delay>: |
} |
void _short_delay(void) |
{ |
int t = 500; |
bb2: 84 ef ldi r24, 0xF4 ; 244 |
bb4: 91 e0 ldi r25, 0x01 ; 1 |
while (t--); |
bb6: 03 97 sbiw r24, 0x03 ; 3 |
bb8: 2f ef ldi r18, 0xFF ; 255 |
bba: 8f 3f cpi r24, 0xFF ; 255 |
bbc: 92 07 cpc r25, r18 |
bbe: d9 f7 brne .-10 ; 0xbb6 <_short_delay+0x4> |
bc0: 08 95 ret |
00000bc2 <_lcd_write_command>: |
} |
void _lcd_write_command(unsigned char data) |
{ |
bc2: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bc4: 80 7f andi r24, 0xF0 ; 240 |
bc6: 98 2f mov r25, r24 |
bc8: 94 60 ori r25, 0x04 ; 4 |
bca: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bcc: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bce: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bd0: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bd2: 82 2f mov r24, r18 |
bd4: 99 27 eor r25, r25 |
bd6: 34 e0 ldi r19, 0x04 ; 4 |
bd8: 88 0f add r24, r24 |
bda: 99 1f adc r25, r25 |
bdc: 3a 95 dec r19 |
bde: e1 f7 brne .-8 ; 0xbd8 <_lcd_write_command+0x16> |
be0: 84 60 ori r24, 0x04 ; 4 |
be2: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
be4: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4); |
be6: 22 95 swap r18 |
be8: 20 7f andi r18, 0xF0 ; 240 |
bea: 25 bb out 0x15, r18 ; 21 |
bec: 08 95 ret |
00000bee <_lcd_write_4bit>: |
} |
void _lcd_write_4bit(unsigned char data) |
{ |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bee: 28 2f mov r18, r24 |
bf0: 33 27 eor r19, r19 |
bf2: 44 e0 ldi r20, 0x04 ; 4 |
bf4: 22 0f add r18, r18 |
bf6: 33 1f adc r19, r19 |
bf8: 4a 95 dec r20 |
bfa: e1 f7 brne .-8 ; 0xbf4 <_lcd_write_4bit+0x6> |
bfc: 92 2f mov r25, r18 |
bfe: 94 60 ori r25, 0x04 ; 4 |
c00: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
c02: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4); |
c04: 82 95 swap r24 |
c06: 80 7f andi r24, 0xF0 ; 240 |
c08: 85 bb out 0x15, r24 ; 21 |
c0a: 08 95 ret |
00000c0c <lcd_write_byte>: |
} |
void lcd_write_byte(unsigned char data) |
{ |
c0c: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN | DISPLAY_RS; |
c0e: 80 7f andi r24, 0xF0 ; 240 |
c10: 98 2f mov r25, r24 |
c12: 95 60 ori r25, 0x05 ; 5 |
c14: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_RS; |
c16: 81 60 ori r24, 0x01 ; 1 |
c18: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN | DISPLAY_RS; |
c1a: 82 2f mov r24, r18 |
c1c: 99 27 eor r25, r25 |
c1e: 54 e0 ldi r21, 0x04 ; 4 |
c20: 88 0f add r24, r24 |
c22: 99 1f adc r25, r25 |
c24: 5a 95 dec r21 |
c26: e1 f7 brne .-8 ; 0xc20 <lcd_write_byte+0x14> |
c28: 28 2f mov r18, r24 |
c2a: 25 60 ori r18, 0x05 ; 5 |
c2c: 25 bb out 0x15, r18 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_RS; |
c2e: 81 60 ori r24, 0x01 ; 1 |
c30: 85 bb out 0x15, r24 ; 21 |
c32: 08 95 ret |
00000c34 <my_pput>: |
} |
int my_pput(int zeichen) |
{ |
lcd_write_byte((char) zeichen); |
c34: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
c38: 81 e0 ldi r24, 0x01 ; 1 |
c3a: 90 e0 ldi r25, 0x00 ; 0 |
c3c: 08 95 ret |
00000c3e <LCD_Init>: |
// initialize the LCD controller |
void LCD_Init(void) |
{ |
LCD_PORT_DDR = 0xff;//0xf0 | DISPLAY_RS | DISPLAY_EN; |
c3e: 8f ef ldi r24, 0xFF ; 255 |
c40: 84 bb out 0x14, r24 ; 20 |
_long_delay(); |
c42: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c46: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c4a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c4e: 83 e0 ldi r24, 0x03 ; 3 |
c50: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c54: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c58: 83 e0 ldi r24, 0x03 ; 3 |
c5a: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c5e: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c62: 83 e0 ldi r24, 0x03 ; 3 |
c64: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c68: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x02); // jetzt 4 Bit |
c6c: 82 e0 ldi r24, 0x02 ; 2 |
c6e: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c72: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x28); // 4 Bit Zweizeilig |
c76: 88 e2 ldi r24, 0x28 ; 40 |
c78: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c7c: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08); // Display aus |
c80: 88 e0 ldi r24, 0x08 ; 8 |
c82: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c86: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x01); // Clear |
c8a: 81 e0 ldi r24, 0x01 ; 1 |
c8c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c90: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x06); //Entry mode |
c94: 86 e0 ldi r24, 0x06 ; 6 |
c96: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c9a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08 + 4); // Display an |
c9e: 8c e0 ldi r24, 0x0C ; 12 |
ca0: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
ca4: 0e 94 c9 05 call 0xb92 <_long_delay> |
ca8: 08 95 ret |
00000caa <LCD_Gotoxy>: |
} |
void LCD_Gotoxy(unsigned char x , unsigned char y) |
{ |
caa: 1f 93 push r17 |
cac: cf 93 push r28 |
cae: c8 2f mov r28, r24 |
cb0: 16 2f mov r17, r22 |
_short_delay(); |
cb2: 0e 94 d9 05 call 0xbb2 <_short_delay> |
switch(y) |
cb6: 81 2f mov r24, r17 |
cb8: 99 27 eor r25, r25 |
cba: 81 30 cpi r24, 0x01 ; 1 |
cbc: 91 05 cpc r25, r1 |
cbe: 79 f0 breq .+30 ; 0xcde <LCD_Gotoxy+0x34> |
cc0: 82 30 cpi r24, 0x02 ; 2 |
cc2: 91 05 cpc r25, r1 |
cc4: 1c f4 brge .+6 ; 0xccc <LCD_Gotoxy+0x22> |
cc6: 89 2b or r24, r25 |
cc8: 39 f0 breq .+14 ; 0xcd8 <LCD_Gotoxy+0x2e> |
cca: 13 c0 rjmp .+38 ; 0xcf2 <LCD_Gotoxy+0x48> |
ccc: 82 30 cpi r24, 0x02 ; 2 |
cce: 91 05 cpc r25, r1 |
cd0: 49 f0 breq .+18 ; 0xce4 <LCD_Gotoxy+0x3a> |
cd2: 03 97 sbiw r24, 0x03 ; 3 |
cd4: 51 f0 breq .+20 ; 0xcea <LCD_Gotoxy+0x40> |
cd6: 0d c0 rjmp .+26 ; 0xcf2 <LCD_Gotoxy+0x48> |
{ case 0 : _lcd_write_command(x + 0x80); break; |
cd8: 8c 2f mov r24, r28 |
cda: 80 58 subi r24, 0x80 ; 128 |
cdc: 08 c0 rjmp .+16 ; 0xcee <LCD_Gotoxy+0x44> |
case 1 : _lcd_write_command(x + 0xC0); break; |
cde: 8c 2f mov r24, r28 |
ce0: 80 54 subi r24, 0x40 ; 64 |
ce2: 05 c0 rjmp .+10 ; 0xcee <LCD_Gotoxy+0x44> |
case 2 : _lcd_write_command(x + (0x80 + 20)); break; |
ce4: 8c 2f mov r24, r28 |
ce6: 8c 56 subi r24, 0x6C ; 108 |
ce8: 02 c0 rjmp .+4 ; 0xcee <LCD_Gotoxy+0x44> |
case 3 : _lcd_write_command(x + (0xC0 + 20)); break; |
cea: 8c 2f mov r24, r28 |
cec: 8c 52 subi r24, 0x2C ; 44 |
cee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
cf2: cf 91 pop r28 |
cf4: 1f 91 pop r17 |
cf6: 08 95 ret |
00000cf8 <LCD_Write>: |
} |
} |
void LCD_Write(unsigned char *this_text) |
{ |
cf8: 1f 93 push r17 |
cfa: cf 93 push r28 |
cfc: df 93 push r29 |
cfe: ec 01 movw r28, r24 |
unsigned char i = 0; |
d00: 10 e0 ldi r17, 0x00 ; 0 |
while(this_text[i] != 0) |
{ |
lcd_write_byte(this_text[i++]); |
_long_delay(); |
d02: 88 81 ld r24, Y |
d04: 88 23 and r24, r24 |
d06: 79 f0 breq .+30 ; 0xd26 <LCD_Write+0x2e> |
d08: fe 01 movw r30, r28 |
d0a: e1 0f add r30, r17 |
d0c: f1 1d adc r31, r1 |
d0e: 1f 5f subi r17, 0xFF ; 255 |
d10: 80 81 ld r24, Z |
d12: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
d16: 0e 94 c9 05 call 0xb92 <_long_delay> |
d1a: fe 01 movw r30, r28 |
d1c: e1 0f add r30, r17 |
d1e: f1 1d adc r31, r1 |
d20: 80 81 ld r24, Z |
d22: 88 23 and r24, r24 |
d24: 89 f7 brne .-30 ; 0xd08 <LCD_Write+0x10> |
d26: df 91 pop r29 |
d28: cf 91 pop r28 |
d2a: 1f 91 pop r17 |
d2c: 08 95 ret |
00000d2e <LCD_Putchar>: |
} |
} |
char LCD_Putchar(char zeichen) |
{ |
d2e: 1f 93 push r17 |
d30: 18 2f mov r17, r24 |
_short_delay(); |
d32: 0e 94 d9 05 call 0xbb2 <_short_delay> |
lcd_write_byte((char) zeichen); |
d36: 81 2f mov r24, r17 |
d38: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
d3c: 81 e0 ldi r24, 0x01 ; 1 |
d3e: 90 e0 ldi r25, 0x00 ; 0 |
d40: 1f 91 pop r17 |
d42: 08 95 ret |
00000d44 <PRINT>: |
#include "old_macros.h" |
//#define LIGHTPRINTF |
void PRINT(const char * ptr, unsigned int len) { |
d44: 0f 93 push r16 |
d46: 1f 93 push r17 |
d48: cf 93 push r28 |
d4a: df 93 push r29 |
d4c: 8c 01 movw r16, r24 |
d4e: eb 01 movw r28, r22 |
for(;len;len--) |
d50: 67 2b or r22, r23 |
d52: 39 f0 breq .+14 ; 0xd62 <PRINT+0x1e> |
LCD_Putchar(*ptr++); |
d54: f8 01 movw r30, r16 |
d56: 81 91 ld r24, Z+ |
d58: 8f 01 movw r16, r30 |
d5a: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d5e: 21 97 sbiw r28, 0x01 ; 1 |
d60: c9 f7 brne .-14 ; 0xd54 <PRINT+0x10> |
d62: df 91 pop r29 |
d64: cf 91 pop r28 |
d66: 1f 91 pop r17 |
d68: 0f 91 pop r16 |
d6a: 08 95 ret |
00000d6c <PRINTP>: |
} |
void PRINTP(const char * ptr, unsigned int len) { |
d6c: 0f 93 push r16 |
d6e: 1f 93 push r17 |
d70: cf 93 push r28 |
d72: df 93 push r29 |
d74: 8c 01 movw r16, r24 |
d76: eb 01 movw r28, r22 |
for(;len;len--) |
d78: 67 2b or r22, r23 |
d7a: 41 f0 breq .+16 ; 0xd8c <PRINTP+0x20> |
// LCD_Putchar(PRG_RDB(ptr++)); |
LCD_Putchar(pgm_read_byte(ptr++)); |
d7c: f8 01 movw r30, r16 |
d7e: 0f 5f subi r16, 0xFF ; 255 |
d80: 1f 4f sbci r17, 0xFF ; 255 |
d82: 84 91 lpm r24, Z |
d84: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d88: 21 97 sbiw r28, 0x01 ; 1 |
d8a: c1 f7 brne .-16 ; 0xd7c <PRINTP+0x10> |
d8c: df 91 pop r29 |
d8e: cf 91 pop r28 |
d90: 1f 91 pop r17 |
d92: 0f 91 pop r16 |
d94: 08 95 ret |
00000d96 <PAD_SP>: |
} |
void PAD_SP(signed char howmany) { |
d96: cf 93 push r28 |
d98: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
d9a: 18 16 cp r1, r24 |
d9c: 34 f4 brge .+12 ; 0xdaa <PAD_SP+0x14> |
LCD_Putchar(' '); |
d9e: 80 e2 ldi r24, 0x20 ; 32 |
da0: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
da4: c1 50 subi r28, 0x01 ; 1 |
da6: 1c 16 cp r1, r28 |
da8: d4 f3 brlt .-12 ; 0xd9e <PAD_SP+0x8> |
daa: cf 91 pop r28 |
dac: 08 95 ret |
00000dae <PAD_0>: |
} |
void PAD_0(signed char howmany) { |
dae: cf 93 push r28 |
db0: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
db2: 18 16 cp r1, r24 |
db4: 34 f4 brge .+12 ; 0xdc2 <PAD_0+0x14> |
LCD_Putchar('0'); |
db6: 80 e3 ldi r24, 0x30 ; 48 |
db8: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
dbc: c1 50 subi r28, 0x01 ; 1 |
dbe: 1c 16 cp r1, r28 |
dc0: d4 f3 brlt .-12 ; 0xdb6 <PAD_0+0x8> |
dc2: cf 91 pop r28 |
dc4: 08 95 ret |
00000dc6 <_printf_P>: |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
dc6: 2f 92 push r2 |
dc8: 3f 92 push r3 |
dca: 4f 92 push r4 |
dcc: 5f 92 push r5 |
dce: 6f 92 push r6 |
dd0: 7f 92 push r7 |
dd2: 8f 92 push r8 |
dd4: 9f 92 push r9 |
dd6: af 92 push r10 |
dd8: bf 92 push r11 |
dda: cf 92 push r12 |
ddc: df 92 push r13 |
dde: ef 92 push r14 |
de0: ff 92 push r15 |
de2: 0f 93 push r16 |
de4: 1f 93 push r17 |
de6: cf 93 push r28 |
de8: df 93 push r29 |
dea: cd b7 in r28, 0x3d ; 61 |
dec: de b7 in r29, 0x3e ; 62 |
dee: e0 97 sbiw r28, 0x30 ; 48 |
df0: 0f b6 in r0, 0x3f ; 63 |
df2: f8 94 cli |
df4: de bf out 0x3e, r29 ; 62 |
df6: 0f be out 0x3f, r0 ; 63 |
df8: cd bf out 0x3d, r28 ; 61 |
dfa: a5 e4 ldi r26, 0x45 ; 69 |
dfc: 6a 2e mov r6, r26 |
dfe: 71 2c mov r7, r1 |
e00: 6c 0e add r6, r28 |
e02: 7d 1e adc r7, r29 |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
e04: 1c a6 std Y+44, r1 ; 0x2c |
e06: 1d a6 std Y+45, r1 ; 0x2d |
e08: 1e a6 std Y+46, r1 ; 0x2e |
e0a: 1f a6 std Y+47, r1 ; 0x2f |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
va_start(ap, fmt0); |
fmt = fmt0; |
e0c: d3 01 movw r26, r6 |
e0e: ad 90 ld r10, X+ |
e10: bd 90 ld r11, X+ |
e12: 3d 01 movw r6, r26 |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
e14: c5 01 movw r24, r10 |
e16: 05 c0 rjmp .+10 ; 0xe22 <_printf_P+0x5c> |
e18: 05 32 cpi r16, 0x25 ; 37 |
e1a: 39 f0 breq .+14 ; 0xe2a <_printf_P+0x64> |
e1c: 08 94 sec |
e1e: a1 1c adc r10, r1 |
e20: b1 1c adc r11, r1 |
e22: f5 01 movw r30, r10 |
e24: 04 91 lpm r16, Z |
e26: 00 23 and r16, r16 |
e28: b9 f7 brne .-18 ; 0xe18 <_printf_P+0x52> |
/* void */; |
if ((n = fmt - fmark) != 0) { |
e2a: b5 01 movw r22, r10 |
e2c: 68 1b sub r22, r24 |
e2e: 79 0b sbc r23, r25 |
e30: 11 f0 breq .+4 ; 0xe36 <_printf_P+0x70> |
PRINTP(fmark, n); |
e32: 0e 94 b6 06 call 0xd6c <PRINTP> |
} |
if (ch == '\0') |
e36: 00 23 and r16, r16 |
e38: 09 f4 brne .+2 ; 0xe3c <_printf_P+0x76> |
e3a: 30 c2 rjmp .+1120 ; 0x129c <_printf_P+0x4d6> |
goto done; |
fmt++; /* skip over '%' */ |
e3c: 08 94 sec |
e3e: a1 1c adc r10, r1 |
e40: b1 1c adc r11, r1 |
flags = 0; |
e42: 55 24 eor r5, r5 |
dprec = 0; |
e44: 58 aa std Y+48, r5 ; 0x30 |
width = 0; |
e46: 25 2c mov r2, r5 |
prec = -1; |
e48: 1f ef ldi r17, 0xFF ; 255 |
sign = '\0'; |
e4a: 59 a6 std Y+41, r5 ; 0x29 |
rflag: ch = PRG_RDB(fmt++); |
e4c: f5 01 movw r30, r10 |
e4e: 08 94 sec |
e50: a1 1c adc r10, r1 |
e52: b1 1c adc r11, r1 |
e54: 04 91 lpm r16, Z |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
e56: 05 37 cpi r16, 0x75 ; 117 |
e58: 21 f0 breq .+8 ; 0xe62 <_printf_P+0x9c> |
e5a: 80 2f mov r24, r16 |
e5c: 80 62 ori r24, 0x20 ; 32 |
e5e: 88 37 cpi r24, 0x78 ; 120 |
e60: f1 f4 brne .+60 ; 0xe9e <_printf_P+0xd8> |
#endif |
if (flags&LONGINT) { |
e62: 50 fe sbrs r5, 0 |
e64: 0e c0 rjmp .+28 ; 0xe82 <_printf_P+0xbc> |
_ulong=va_arg(ap, unsigned long); |
e66: f3 01 movw r30, r6 |
e68: 24 e0 ldi r18, 0x04 ; 4 |
e6a: 30 e0 ldi r19, 0x00 ; 0 |
e6c: 62 0e add r6, r18 |
e6e: 73 1e adc r7, r19 |
e70: 80 81 ld r24, Z |
e72: 91 81 ldd r25, Z+1 ; 0x01 |
e74: a2 81 ldd r26, Z+2 ; 0x02 |
e76: b3 81 ldd r27, Z+3 ; 0x03 |
e78: 8c a7 std Y+44, r24 ; 0x2c |
e7a: 9d a7 std Y+45, r25 ; 0x2d |
e7c: ae a7 std Y+46, r26 ; 0x2e |
e7e: bf a7 std Y+47, r27 ; 0x2f |
e80: 0e c0 rjmp .+28 ; 0xe9e <_printf_P+0xd8> |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
e82: f3 01 movw r30, r6 |
e84: a2 e0 ldi r26, 0x02 ; 2 |
e86: b0 e0 ldi r27, 0x00 ; 0 |
e88: 6a 0e add r6, r26 |
e8a: 7b 1e adc r7, r27 |
e8c: 80 81 ld r24, Z |
e8e: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
e90: 9c 01 movw r18, r24 |
e92: 44 27 eor r20, r20 |
e94: 55 27 eor r21, r21 |
e96: 2c a7 std Y+44, r18 ; 0x2c |
e98: 3d a7 std Y+45, r19 ; 0x2d |
e9a: 4e a7 std Y+46, r20 ; 0x2e |
e9c: 5f a7 std Y+47, r21 ; 0x2f |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
e9e: 00 32 cpi r16, 0x20 ; 32 |
ea0: 21 f4 brne .+8 ; 0xeaa <_printf_P+0xe4> |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
ea2: 89 a5 ldd r24, Y+41 ; 0x29 |
ea4: 88 23 and r24, r24 |
ea6: 91 f6 brne .-92 ; 0xe4c <_printf_P+0x86> |
ea8: 1b c0 rjmp .+54 ; 0xee0 <_printf_P+0x11a> |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
eaa: 03 32 cpi r16, 0x23 ; 35 |
eac: 11 f4 brne .+4 ; 0xeb2 <_printf_P+0xec> |
flags |= ALT; |
eae: 38 e0 ldi r19, 0x08 ; 8 |
eb0: 81 c0 rjmp .+258 ; 0xfb4 <_printf_P+0x1ee> |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
eb2: 0a 32 cpi r16, 0x2A ; 42 |
eb4: 11 f0 breq .+4 ; 0xeba <_printf_P+0xf4> |
eb6: 0d 32 cpi r16, 0x2D ; 45 |
eb8: 89 f4 brne .+34 ; 0xedc <_printf_P+0x116> |
if (ch=='*') { |
eba: 0a 32 cpi r16, 0x2A ; 42 |
ebc: 51 f4 brne .+20 ; 0xed2 <_printf_P+0x10c> |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
ebe: f3 01 movw r30, r6 |
ec0: 42 e0 ldi r20, 0x02 ; 2 |
ec2: 50 e0 ldi r21, 0x00 ; 0 |
ec4: 64 0e add r6, r20 |
ec6: 75 1e adc r7, r21 |
ec8: 20 80 ld r2, Z |
eca: 22 20 and r2, r2 |
ecc: 0c f0 brlt .+2 ; 0xed0 <_printf_P+0x10a> |
ece: be cf rjmp .-132 ; 0xe4c <_printf_P+0x86> |
goto rflag; |
width = -width; |
ed0: 21 94 neg r2 |
} |
flags |= LADJUST; |
ed2: 50 e1 ldi r21, 0x10 ; 16 |
ed4: 55 2a or r5, r21 |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
ed6: 8f ed ldi r24, 0xDF ; 223 |
ed8: 58 22 and r5, r24 |
goto rflag; |
eda: b8 cf rjmp .-144 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='+') { |
edc: 0b 32 cpi r16, 0x2B ; 43 |
ede: 11 f4 brne .+4 ; 0xee4 <_printf_P+0x11e> |
sign = '+'; |
ee0: 09 a7 std Y+41, r16 ; 0x29 |
goto rflag; |
ee2: b4 cf rjmp .-152 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='.') { |
ee4: 0e 32 cpi r16, 0x2E ; 46 |
ee6: c1 f5 brne .+112 ; 0xf58 <_printf_P+0x192> |
if ((ch = PRG_RDB(fmt++)) == '*') { |
ee8: f5 01 movw r30, r10 |
eea: 08 94 sec |
eec: a1 1c adc r10, r1 |
eee: b1 1c adc r11, r1 |
ef0: 04 91 lpm r16, Z |
ef2: 0a 32 cpi r16, 0x2A ; 42 |
ef4: 79 f4 brne .+30 ; 0xf14 <_printf_P+0x14e> |
n = va_arg(ap, int); |
ef6: f3 01 movw r30, r6 |
ef8: a2 e0 ldi r26, 0x02 ; 2 |
efa: b0 e0 ldi r27, 0x00 ; 0 |
efc: 6a 0e add r6, r26 |
efe: 7b 1e adc r7, r27 |
f00: 60 81 ld r22, Z |
f02: 71 81 ldd r23, Z+1 ; 0x01 |
prec = n < 0 ? -1 : n; |
f04: bf ef ldi r27, 0xFF ; 255 |
f06: 6f 3f cpi r22, 0xFF ; 255 |
f08: 7b 07 cpc r23, r27 |
f0a: 14 f4 brge .+4 ; 0xf10 <_printf_P+0x14a> |
f0c: 6f ef ldi r22, 0xFF ; 255 |
f0e: 7f ef ldi r23, 0xFF ; 255 |
f10: 16 2f mov r17, r22 |
goto rflag; |
f12: 9c cf rjmp .-200 ; 0xe4c <_printf_P+0x86> |
} |
n = 0; |
f14: 60 e0 ldi r22, 0x00 ; 0 |
f16: 70 e0 ldi r23, 0x00 ; 0 |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
f18: 80 2f mov r24, r16 |
f1a: 80 53 subi r24, 0x30 ; 48 |
f1c: 8a 30 cpi r24, 0x0A ; 10 |
f1e: a0 f4 brcc .+40 ; 0xf48 <_printf_P+0x182> |
f20: cb 01 movw r24, r22 |
f22: f3 e0 ldi r31, 0x03 ; 3 |
f24: 88 0f add r24, r24 |
f26: 99 1f adc r25, r25 |
f28: fa 95 dec r31 |
f2a: e1 f7 brne .-8 ; 0xf24 <_printf_P+0x15e> |
f2c: 86 0f add r24, r22 |
f2e: 97 1f adc r25, r23 |
f30: 68 0f add r22, r24 |
f32: 79 1f adc r23, r25 |
f34: 60 0f add r22, r16 |
f36: 71 1d adc r23, r1 |
f38: 60 53 subi r22, 0x30 ; 48 |
f3a: 70 40 sbci r23, 0x00 ; 0 |
f3c: f5 01 movw r30, r10 |
f3e: 08 94 sec |
f40: a1 1c adc r10, r1 |
f42: b1 1c adc r11, r1 |
f44: 04 91 lpm r16, Z |
f46: e8 cf rjmp .-48 ; 0xf18 <_printf_P+0x152> |
} |
prec = n < 0 ? -1 : n; |
f48: ef ef ldi r30, 0xFF ; 255 |
f4a: 6f 3f cpi r22, 0xFF ; 255 |
f4c: 7e 07 cpc r23, r30 |
f4e: 14 f4 brge .+4 ; 0xf54 <_printf_P+0x18e> |
f50: 6f ef ldi r22, 0xFF ; 255 |
f52: 7f ef ldi r23, 0xFF ; 255 |
f54: 16 2f mov r17, r22 |
goto reswitch; |
f56: 7f cf rjmp .-258 ; 0xe56 <_printf_P+0x90> |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
f58: 00 33 cpi r16, 0x30 ; 48 |
f5a: 29 f4 brne .+10 ; 0xf66 <_printf_P+0x1a0> |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
f5c: 54 fc sbrc r5, 4 |
f5e: 76 cf rjmp .-276 ; 0xe4c <_printf_P+0x86> |
flags |= ZEROPAD; /* '-' disables '0' */ |
f60: f0 e2 ldi r31, 0x20 ; 32 |
f62: 5f 2a or r5, r31 |
goto rflag; |
f64: 73 cf rjmp .-282 ; 0xe4c <_printf_P+0x86> |
} else if (ch>='1' && ch<='9') { |
f66: 80 2f mov r24, r16 |
f68: 81 53 subi r24, 0x31 ; 49 |
f6a: 89 30 cpi r24, 0x09 ; 9 |
f6c: d8 f4 brcc .+54 ; 0xfa4 <_printf_P+0x1de> |
n = 0; |
f6e: 60 e0 ldi r22, 0x00 ; 0 |
f70: 70 e0 ldi r23, 0x00 ; 0 |
do { |
n = 10 * n + to_digit(ch); |
f72: cb 01 movw r24, r22 |
f74: e3 e0 ldi r30, 0x03 ; 3 |
f76: 88 0f add r24, r24 |
f78: 99 1f adc r25, r25 |
f7a: ea 95 dec r30 |
f7c: e1 f7 brne .-8 ; 0xf76 <_printf_P+0x1b0> |
f7e: 86 0f add r24, r22 |
f80: 97 1f adc r25, r23 |
f82: 68 0f add r22, r24 |
f84: 79 1f adc r23, r25 |
f86: 60 0f add r22, r16 |
f88: 71 1d adc r23, r1 |
f8a: 60 53 subi r22, 0x30 ; 48 |
f8c: 70 40 sbci r23, 0x00 ; 0 |
ch = PRG_RDB(fmt++); |
f8e: f5 01 movw r30, r10 |
f90: 08 94 sec |
f92: a1 1c adc r10, r1 |
f94: b1 1c adc r11, r1 |
f96: 04 91 lpm r16, Z |
} while (is_digit(ch)); |
f98: 80 2f mov r24, r16 |
f9a: 80 53 subi r24, 0x30 ; 48 |
f9c: 8a 30 cpi r24, 0x0A ; 10 |
f9e: 48 f3 brcs .-46 ; 0xf72 <_printf_P+0x1ac> |
width = n; |
fa0: 26 2e mov r2, r22 |
goto reswitch; |
fa2: 59 cf rjmp .-334 ; 0xe56 <_printf_P+0x90> |
} else if (ch=='h') { |
fa4: 08 36 cpi r16, 0x68 ; 104 |
fa6: 19 f4 brne .+6 ; 0xfae <_printf_P+0x1e8> |
flags |= SHORTINT; |
fa8: 24 e0 ldi r18, 0x04 ; 4 |
faa: 52 2a or r5, r18 |
goto rflag; |
fac: 4f cf rjmp .-354 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='l') { |
fae: 0c 36 cpi r16, 0x6C ; 108 |
fb0: 19 f4 brne .+6 ; 0xfb8 <_printf_P+0x1f2> |
flags |= LONGINT; |
fb2: 31 e0 ldi r19, 0x01 ; 1 |
fb4: 53 2a or r5, r19 |
goto rflag; |
fb6: 4a cf rjmp .-364 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='c') { |
fb8: 03 36 cpi r16, 0x63 ; 99 |
fba: 61 f4 brne .+24 ; 0xfd4 <_printf_P+0x20e> |
*(cp = buf) = va_arg(ap, int); |
fbc: 4e 01 movw r8, r28 |
fbe: 08 94 sec |
fc0: 81 1c adc r8, r1 |
fc2: 91 1c adc r9, r1 |
fc4: f3 01 movw r30, r6 |
fc6: 42 e0 ldi r20, 0x02 ; 2 |
fc8: 50 e0 ldi r21, 0x00 ; 0 |
fca: 64 0e add r6, r20 |
fcc: 75 1e adc r7, r21 |
fce: 80 81 ld r24, Z |
fd0: 89 83 std Y+1, r24 ; 0x01 |
fd2: 1b c1 rjmp .+566 ; 0x120a <_printf_P+0x444> |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
fd4: 04 34 cpi r16, 0x44 ; 68 |
fd6: 21 f0 breq .+8 ; 0xfe0 <_printf_P+0x21a> |
fd8: 04 36 cpi r16, 0x64 ; 100 |
fda: 11 f0 breq .+4 ; 0xfe0 <_printf_P+0x21a> |
fdc: 09 36 cpi r16, 0x69 ; 105 |
fde: b1 f5 brne .+108 ; 0x104c <_printf_P+0x286> |
if(ch=='D') |
fe0: 04 34 cpi r16, 0x44 ; 68 |
fe2: 11 f4 brne .+4 ; 0xfe8 <_printf_P+0x222> |
flags |= LONGINT; |
fe4: 51 e0 ldi r21, 0x01 ; 1 |
fe6: 55 2a or r5, r21 |
if (flags&LONGINT) { |
fe8: 50 fe sbrs r5, 0 |
fea: 0a c0 rjmp .+20 ; 0x1000 <_printf_P+0x23a> |
_ulong=va_arg(ap, long); |
fec: f3 01 movw r30, r6 |
fee: 84 e0 ldi r24, 0x04 ; 4 |
ff0: 90 e0 ldi r25, 0x00 ; 0 |
ff2: 68 0e add r6, r24 |
ff4: 79 1e adc r7, r25 |
ff6: 20 81 ld r18, Z |
ff8: 31 81 ldd r19, Z+1 ; 0x01 |
ffa: 42 81 ldd r20, Z+2 ; 0x02 |
ffc: 53 81 ldd r21, Z+3 ; 0x03 |
ffe: 0c c0 rjmp .+24 ; 0x1018 <_printf_P+0x252> |
} else { |
register int _d; |
_d=va_arg(ap, int); |
1000: f3 01 movw r30, r6 |
1002: 42 e0 ldi r20, 0x02 ; 2 |
1004: 50 e0 ldi r21, 0x00 ; 0 |
1006: 64 0e add r6, r20 |
1008: 75 1e adc r7, r21 |
100a: 80 81 ld r24, Z |
100c: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
100e: 9c 01 movw r18, r24 |
1010: 44 27 eor r20, r20 |
1012: 37 fd sbrc r19, 7 |
1014: 40 95 com r20 |
1016: 54 2f mov r21, r20 |
1018: 2c a7 std Y+44, r18 ; 0x2c |
101a: 3d a7 std Y+45, r19 ; 0x2d |
101c: 4e a7 std Y+46, r20 ; 0x2e |
101e: 5f a7 std Y+47, r21 ; 0x2f |
} |
if ((long)_ulong < 0) { |
1020: 8c a5 ldd r24, Y+44 ; 0x2c |
1022: 9d a5 ldd r25, Y+45 ; 0x2d |
1024: ae a5 ldd r26, Y+46 ; 0x2e |
1026: bf a5 ldd r27, Y+47 ; 0x2f |
1028: b7 ff sbrs r27, 7 |
102a: 0d c0 rjmp .+26 ; 0x1046 <_printf_P+0x280> |
_ulong = -_ulong; |
102c: b0 95 com r27 |
102e: a0 95 com r26 |
1030: 90 95 com r25 |
1032: 81 95 neg r24 |
1034: 9f 4f sbci r25, 0xFF ; 255 |
1036: af 4f sbci r26, 0xFF ; 255 |
1038: bf 4f sbci r27, 0xFF ; 255 |
103a: 8c a7 std Y+44, r24 ; 0x2c |
103c: 9d a7 std Y+45, r25 ; 0x2d |
103e: ae a7 std Y+46, r26 ; 0x2e |
1040: bf a7 std Y+47, r27 ; 0x2f |
sign = '-'; |
1042: 8d e2 ldi r24, 0x2D ; 45 |
1044: 89 a7 std Y+41, r24 ; 0x29 |
} |
base = DEC; |
1046: 7a e0 ldi r23, 0x0A ; 10 |
1048: 47 2e mov r4, r23 |
goto number; |
104a: 7b c0 rjmp .+246 ; 0x1142 <_printf_P+0x37c> |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
104c: 0f 34 cpi r16, 0x4F ; 79 |
104e: 11 f0 breq .+4 ; 0x1054 <_printf_P+0x28e> |
1050: 0f 36 cpi r16, 0x6F ; 111 |
1052: 39 f4 brne .+14 ; 0x1062 <_printf_P+0x29c> |
if (ch=='O') |
1054: 0f 34 cpi r16, 0x4F ; 79 |
1056: 11 f4 brne .+4 ; 0x105c <_printf_P+0x296> |
flags |= LONGINT; |
1058: 91 e0 ldi r25, 0x01 ; 1 |
105a: 59 2a or r5, r25 |
base = OCT; |
105c: 68 e0 ldi r22, 0x08 ; 8 |
105e: 46 2e mov r4, r22 |
goto nosign; |
1060: 6f c0 rjmp .+222 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='p') { |
1062: 00 37 cpi r16, 0x70 ; 112 |
1064: a1 f4 brne .+40 ; 0x108e <_printf_P+0x2c8> |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
1066: f3 01 movw r30, r6 |
1068: a2 e0 ldi r26, 0x02 ; 2 |
106a: b0 e0 ldi r27, 0x00 ; 0 |
106c: 6a 0e add r6, r26 |
106e: 7b 1e adc r7, r27 |
1070: 80 81 ld r24, Z |
1072: 91 81 ldd r25, Z+1 ; 0x01 |
1074: 9c 01 movw r18, r24 |
1076: 44 27 eor r20, r20 |
1078: 55 27 eor r21, r21 |
107a: 2c a7 std Y+44, r18 ; 0x2c |
107c: 3d a7 std Y+45, r19 ; 0x2d |
107e: 4e a7 std Y+46, r20 ; 0x2e |
1080: 5f a7 std Y+47, r21 ; 0x2f |
base = HEX; |
1082: 50 e1 ldi r21, 0x10 ; 16 |
1084: 45 2e mov r4, r21 |
flags |= HEXPREFIX; |
1086: 30 e4 ldi r19, 0x40 ; 64 |
1088: 53 2a or r5, r19 |
ch = 'x'; |
108a: 08 e7 ldi r16, 0x78 ; 120 |
goto nosign; |
108c: 59 c0 rjmp .+178 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='s') { // print a string from RAM |
108e: 03 37 cpi r16, 0x73 ; 115 |
1090: c1 f5 brne .+112 ; 0x1102 <_printf_P+0x33c> |
if ((cp = va_arg(ap, char *)) == NULL) { |
1092: f3 01 movw r30, r6 |
1094: 42 e0 ldi r20, 0x02 ; 2 |
1096: 50 e0 ldi r21, 0x00 ; 0 |
1098: 64 0e add r6, r20 |
109a: 75 1e adc r7, r21 |
109c: 80 80 ld r8, Z |
109e: 91 80 ldd r9, Z+1 ; 0x01 |
10a0: 81 14 cp r8, r1 |
10a2: 91 04 cpc r9, r1 |
10a4: 89 f4 brne .+34 ; 0x10c8 <_printf_P+0x302> |
cp=buf; |
10a6: 4e 01 movw r8, r28 |
10a8: 08 94 sec |
10aa: 81 1c adc r8, r1 |
10ac: 91 1c adc r9, r1 |
cp[0] = '('; |
10ae: 88 e2 ldi r24, 0x28 ; 40 |
10b0: 89 83 std Y+1, r24 ; 0x01 |
cp[1] = 'n'; |
10b2: 8e e6 ldi r24, 0x6E ; 110 |
10b4: f4 01 movw r30, r8 |
10b6: 81 83 std Z+1, r24 ; 0x01 |
cp[2] = 'u'; |
10b8: 85 e7 ldi r24, 0x75 ; 117 |
10ba: 8b 83 std Y+3, r24 ; 0x03 |
cp[4] = cp[3] = 'l'; |
10bc: 8c e6 ldi r24, 0x6C ; 108 |
10be: 8c 83 std Y+4, r24 ; 0x04 |
10c0: 8d 83 std Y+5, r24 ; 0x05 |
cp[5] = ')'; |
10c2: 89 e2 ldi r24, 0x29 ; 41 |
10c4: 8e 83 std Y+6, r24 ; 0x06 |
cp[6] = '\0'; |
10c6: 1f 82 std Y+7, r1 ; 0x07 |
} |
if (prec >= 0) { |
10c8: 17 fd sbrc r17, 7 |
10ca: 13 c0 rjmp .+38 ; 0x10f2 <_printf_P+0x32c> |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
10cc: 81 2f mov r24, r17 |
10ce: 99 27 eor r25, r25 |
10d0: 87 fd sbrc r24, 7 |
10d2: 90 95 com r25 |
10d4: ac 01 movw r20, r24 |
10d6: 60 e0 ldi r22, 0x00 ; 0 |
10d8: 70 e0 ldi r23, 0x00 ; 0 |
10da: c4 01 movw r24, r8 |
10dc: 0e 94 64 0c call 0x18c8 <memchr> |
if (p != NULL) { |
10e0: 00 97 sbiw r24, 0x00 ; 0 |
10e2: 29 f0 breq .+10 ; 0x10ee <_printf_P+0x328> |
size = p - cp; |
10e4: d8 2e mov r13, r24 |
10e6: d8 18 sub r13, r8 |
if (size > prec) |
10e8: 1d 15 cp r17, r13 |
10ea: 0c f0 brlt .+2 ; 0x10ee <_printf_P+0x328> |
10ec: 90 c0 rjmp .+288 ; 0x120e <_printf_P+0x448> |
size = prec; |
} else |
size = prec; |
10ee: d1 2e mov r13, r17 |
10f0: 8e c0 rjmp .+284 ; 0x120e <_printf_P+0x448> |
} else |
size = strlen(cp); |
10f2: f4 01 movw r30, r8 |
10f4: 01 90 ld r0, Z+ |
10f6: 00 20 and r0, r0 |
10f8: e9 f7 brne .-6 ; 0x10f4 <_printf_P+0x32e> |
10fa: 31 97 sbiw r30, 0x01 ; 1 |
10fc: de 2e mov r13, r30 |
10fe: d8 18 sub r13, r8 |
1100: 86 c0 rjmp .+268 ; 0x120e <_printf_P+0x448> |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
1102: 05 35 cpi r16, 0x55 ; 85 |
1104: 11 f0 breq .+4 ; 0x110a <_printf_P+0x344> |
1106: 05 37 cpi r16, 0x75 ; 117 |
1108: 39 f4 brne .+14 ; 0x1118 <_printf_P+0x352> |
if (ch=='U') |
110a: 05 35 cpi r16, 0x55 ; 85 |
110c: 11 f4 brne .+4 ; 0x1112 <_printf_P+0x34c> |
flags |= LONGINT; |
110e: f1 e0 ldi r31, 0x01 ; 1 |
1110: 5f 2a or r5, r31 |
base = DEC; |
1112: 4a e0 ldi r20, 0x0A ; 10 |
1114: 44 2e mov r4, r20 |
goto nosign; |
1116: 14 c0 rjmp .+40 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='X'||ch=='x') { |
1118: 08 35 cpi r16, 0x58 ; 88 |
111a: 19 f0 breq .+6 ; 0x1122 <_printf_P+0x35c> |
111c: 08 37 cpi r16, 0x78 ; 120 |
111e: 09 f0 breq .+2 ; 0x1122 <_printf_P+0x35c> |
1120: 6c c0 rjmp .+216 ; 0x11fa <_printf_P+0x434> |
base = HEX; |
1122: 30 e1 ldi r19, 0x10 ; 16 |
1124: 43 2e mov r4, r19 |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
1126: 53 fe sbrs r5, 3 |
1128: 0b c0 rjmp .+22 ; 0x1140 <_printf_P+0x37a> |
112a: 2c a5 ldd r18, Y+44 ; 0x2c |
112c: 3d a5 ldd r19, Y+45 ; 0x2d |
112e: 4e a5 ldd r20, Y+46 ; 0x2e |
1130: 5f a5 ldd r21, Y+47 ; 0x2f |
1132: 21 15 cp r18, r1 |
1134: 31 05 cpc r19, r1 |
1136: 41 05 cpc r20, r1 |
1138: 51 05 cpc r21, r1 |
113a: 11 f0 breq .+4 ; 0x1140 <_printf_P+0x37a> |
flags |= HEXPREFIX; |
113c: 30 e4 ldi r19, 0x40 ; 64 |
113e: 53 2a or r5, r19 |
/* unsigned conversions */ |
nosign: sign = '\0'; |
1140: 19 a6 std Y+41, r1 ; 0x29 |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
1142: 18 ab std Y+48, r17 ; 0x30 |
1144: 17 fd sbrc r17, 7 |
1146: 02 c0 rjmp .+4 ; 0x114c <_printf_P+0x386> |
flags &= ~ZEROPAD; |
1148: 4f ed ldi r20, 0xDF ; 223 |
114a: 54 22 and r5, r20 |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
114c: 29 e2 ldi r18, 0x29 ; 41 |
114e: 82 2e mov r8, r18 |
1150: 91 2c mov r9, r1 |
1152: 8c 0e add r8, r28 |
1154: 9d 1e adc r9, r29 |
if (_ulong != 0 || prec != 0) { |
1156: 8c a5 ldd r24, Y+44 ; 0x2c |
1158: 9d a5 ldd r25, Y+45 ; 0x2d |
115a: ae a5 ldd r26, Y+46 ; 0x2e |
115c: bf a5 ldd r27, Y+47 ; 0x2f |
115e: 00 97 sbiw r24, 0x00 ; 0 |
1160: a1 05 cpc r26, r1 |
1162: b1 05 cpc r27, r1 |
1164: 21 f4 brne .+8 ; 0x116e <_printf_P+0x3a8> |
1166: 98 a9 ldd r25, Y+48 ; 0x30 |
1168: 99 23 and r25, r25 |
116a: 09 f4 brne .+2 ; 0x116e <_printf_P+0x3a8> |
116c: 3f c0 rjmp .+126 ; 0x11ec <_printf_P+0x426> |
116e: c4 2c mov r12, r4 |
1170: dd 24 eor r13, r13 |
1172: ee 24 eor r14, r14 |
1174: ff 24 eor r15, r15 |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
1176: 33 24 eor r3, r3 |
1178: 2c a5 ldd r18, Y+44 ; 0x2c |
117a: 3d a5 ldd r19, Y+45 ; 0x2d |
117c: 4e a5 ldd r20, Y+46 ; 0x2e |
117e: 5f a5 ldd r21, Y+47 ; 0x2f |
1180: 2c 15 cp r18, r12 |
1182: 3d 05 cpc r19, r13 |
1184: 4e 05 cpc r20, r14 |
1186: 5f 05 cpc r21, r15 |
1188: 10 f0 brcs .+4 ; 0x118e <_printf_P+0x3c8> |
118a: 91 e0 ldi r25, 0x01 ; 1 |
118c: 39 2e mov r3, r25 |
_d = _ulong % base; |
118e: 6c a5 ldd r22, Y+44 ; 0x2c |
1190: 7d a5 ldd r23, Y+45 ; 0x2d |
1192: 8e a5 ldd r24, Y+46 ; 0x2e |
1194: 9f a5 ldd r25, Y+47 ; 0x2f |
1196: a7 01 movw r20, r14 |
1198: 96 01 movw r18, r12 |
119a: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
119e: dc 01 movw r26, r24 |
11a0: cb 01 movw r24, r22 |
11a2: 18 2f mov r17, r24 |
if (_d<10) { |
11a4: 8a 30 cpi r24, 0x0A ; 10 |
11a6: 10 f4 brcc .+4 ; 0x11ac <_printf_P+0x3e6> |
_d+='0'; |
11a8: 10 5d subi r17, 0xD0 ; 208 |
11aa: 04 c0 rjmp .+8 ; 0x11b4 <_printf_P+0x3ee> |
} else { |
_d+='a'-10; |
11ac: 19 5a subi r17, 0xA9 ; 169 |
if (ch=='X') _d&=~0x20; |
11ae: 08 35 cpi r16, 0x58 ; 88 |
11b0: 09 f4 brne .+2 ; 0x11b4 <_printf_P+0x3ee> |
11b2: 1f 7d andi r17, 0xDF ; 223 |
} |
*--cp=_d; |
11b4: d4 01 movw r26, r8 |
11b6: 1e 93 st -X, r17 |
11b8: 4d 01 movw r8, r26 |
_ulong /= base; |
11ba: 6c a5 ldd r22, Y+44 ; 0x2c |
11bc: 7d a5 ldd r23, Y+45 ; 0x2d |
11be: 8e a5 ldd r24, Y+46 ; 0x2e |
11c0: 9f a5 ldd r25, Y+47 ; 0x2f |
11c2: a7 01 movw r20, r14 |
11c4: 96 01 movw r18, r12 |
11c6: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
11ca: 2c a7 std Y+44, r18 ; 0x2c |
11cc: 3d a7 std Y+45, r19 ; 0x2d |
11ce: 4e a7 std Y+46, r20 ; 0x2e |
11d0: 5f a7 std Y+47, r21 ; 0x2f |
} while (notlastdigit); |
11d2: 33 20 and r3, r3 |
11d4: 81 f6 brne .-96 ; 0x1176 <_printf_P+0x3b0> |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
11d6: b8 e0 ldi r27, 0x08 ; 8 |
11d8: 4b 16 cp r4, r27 |
11da: 41 f4 brne .+16 ; 0x11ec <_printf_P+0x426> |
11dc: 53 fe sbrs r5, 3 |
11de: 06 c0 rjmp .+12 ; 0x11ec <_printf_P+0x426> |
11e0: 10 33 cpi r17, 0x30 ; 48 |
11e2: 21 f0 breq .+8 ; 0x11ec <_printf_P+0x426> |
*--cp = '0'; |
11e4: 80 e3 ldi r24, 0x30 ; 48 |
11e6: f4 01 movw r30, r8 |
11e8: 82 93 st -Z, r24 |
11ea: 4f 01 movw r8, r30 |
#endif |
} |
size = buf + BUF - cp; |
11ec: ce 01 movw r24, r28 |
11ee: 01 96 adiw r24, 0x01 ; 1 |
11f0: d8 2e mov r13, r24 |
11f2: d8 18 sub r13, r8 |
11f4: f8 e2 ldi r31, 0x28 ; 40 |
11f6: df 0e add r13, r31 |
11f8: 0b c0 rjmp .+22 ; 0x1210 <_printf_P+0x44a> |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
11fa: 00 23 and r16, r16 |
11fc: 09 f4 brne .+2 ; 0x1200 <_printf_P+0x43a> |
11fe: 4e c0 rjmp .+156 ; 0x129c <_printf_P+0x4d6> |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
1200: 4e 01 movw r8, r28 |
1202: 08 94 sec |
1204: 81 1c adc r8, r1 |
1206: 91 1c adc r9, r1 |
*cp = ch; |
1208: 09 83 std Y+1, r16 ; 0x01 |
size = 1; |
120a: 81 e0 ldi r24, 0x01 ; 1 |
120c: d8 2e mov r13, r24 |
sign = '\0'; |
120e: 19 a6 std Y+41, r1 ; 0x29 |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
1210: 1d 2d mov r17, r13 |
dpad = dprec - size; |
1212: c8 a8 ldd r12, Y+48 ; 0x30 |
1214: cd 18 sub r12, r13 |
if (dpad < 0) |
1216: c7 fc sbrc r12, 7 |
dpad = 0; |
1218: cc 24 eor r12, r12 |
if (sign) |
121a: 89 a5 ldd r24, Y+41 ; 0x29 |
121c: 88 23 and r24, r24 |
121e: 11 f0 breq .+4 ; 0x1224 <_printf_P+0x45e> |
fieldsz++; |
1220: 1f 5f subi r17, 0xFF ; 255 |
1222: 02 c0 rjmp .+4 ; 0x1228 <_printf_P+0x462> |
else if (flags & HEXPREFIX) |
1224: 56 fc sbrc r5, 6 |
fieldsz += 2; |
1226: 1e 5f subi r17, 0xFE ; 254 |
fieldsz += dpad; |
1228: 1c 0d add r17, r12 |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
122a: e5 2c mov r14, r5 |
122c: ff 24 eor r15, r15 |
122e: c7 01 movw r24, r14 |
1230: 80 73 andi r24, 0x30 ; 48 |
1232: 90 70 andi r25, 0x00 ; 0 |
1234: 89 2b or r24, r25 |
1236: 21 f4 brne .+8 ; 0x1240 <_printf_P+0x47a> |
PAD_SP(width - fieldsz); |
1238: 82 2d mov r24, r2 |
123a: 81 1b sub r24, r17 |
123c: 0e 94 cb 06 call 0xd96 <PAD_SP> |
/* prefix */ |
if (sign) { |
1240: 89 a5 ldd r24, Y+41 ; 0x29 |
1242: 88 23 and r24, r24 |
1244: 29 f0 breq .+10 ; 0x1250 <_printf_P+0x48a> |
PRINT(&sign, 1); |
1246: 61 e0 ldi r22, 0x01 ; 1 |
1248: 70 e0 ldi r23, 0x00 ; 0 |
124a: ce 01 movw r24, r28 |
124c: 89 96 adiw r24, 0x29 ; 41 |
124e: 09 c0 rjmp .+18 ; 0x1262 <_printf_P+0x49c> |
} else if (flags & HEXPREFIX) { |
1250: e6 fe sbrs r14, 6 |
1252: 09 c0 rjmp .+18 ; 0x1266 <_printf_P+0x4a0> |
ox[0] = '0'; |
1254: 80 e3 ldi r24, 0x30 ; 48 |
1256: 8a a7 std Y+42, r24 ; 0x2a |
ox[1] = ch; |
1258: 0b a7 std Y+43, r16 ; 0x2b |
PRINT(ox, 2); |
125a: 62 e0 ldi r22, 0x02 ; 2 |
125c: 70 e0 ldi r23, 0x00 ; 0 |
125e: ce 01 movw r24, r28 |
1260: 8a 96 adiw r24, 0x2a ; 42 |
1262: 0e 94 a2 06 call 0xd44 <PRINT> |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
1266: c7 01 movw r24, r14 |
1268: 80 73 andi r24, 0x30 ; 48 |
126a: 90 70 andi r25, 0x00 ; 0 |
126c: 80 97 sbiw r24, 0x20 ; 32 |
126e: 21 f4 brne .+8 ; 0x1278 <_printf_P+0x4b2> |
PAD_0(width - fieldsz); |
1270: 82 2d mov r24, r2 |
1272: 81 1b sub r24, r17 |
1274: 0e 94 d7 06 call 0xdae <PAD_0> |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
1278: 8c 2d mov r24, r12 |
127a: 0e 94 d7 06 call 0xdae <PAD_0> |
/* the string or number proper */ |
PRINT(cp, size); |
127e: 8d 2d mov r24, r13 |
1280: 99 27 eor r25, r25 |
1282: 87 fd sbrc r24, 7 |
1284: 90 95 com r25 |
1286: bc 01 movw r22, r24 |
1288: c4 01 movw r24, r8 |
128a: 0e 94 a2 06 call 0xd44 <PRINT> |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
128e: e4 fe sbrs r14, 4 |
1290: c1 cd rjmp .-1150 ; 0xe14 <_printf_P+0x4e> |
PAD_SP(width - fieldsz); |
1292: 82 2d mov r24, r2 |
1294: 81 1b sub r24, r17 |
1296: 0e 94 cb 06 call 0xd96 <PAD_SP> |
129a: bc cd rjmp .-1160 ; 0xe14 <_printf_P+0x4e> |
129c: e0 96 adiw r28, 0x30 ; 48 |
129e: 0f b6 in r0, 0x3f ; 63 |
12a0: f8 94 cli |
12a2: de bf out 0x3e, r29 ; 62 |
12a4: 0f be out 0x3f, r0 ; 63 |
12a6: cd bf out 0x3d, r28 ; 61 |
12a8: df 91 pop r29 |
12aa: cf 91 pop r28 |
12ac: 1f 91 pop r17 |
12ae: 0f 91 pop r16 |
12b0: ff 90 pop r15 |
12b2: ef 90 pop r14 |
12b4: df 90 pop r13 |
12b6: cf 90 pop r12 |
12b8: bf 90 pop r11 |
12ba: af 90 pop r10 |
12bc: 9f 90 pop r9 |
12be: 8f 90 pop r8 |
12c0: 7f 90 pop r7 |
12c2: 6f 90 pop r6 |
12c4: 5f 90 pop r5 |
12c6: 4f 90 pop r4 |
12c8: 3f 90 pop r3 |
12ca: 2f 90 pop r2 |
12cc: 08 95 ret |
000012ce <__vector_9>: |
}; |
SIGNAL (SIG_OVERFLOW1) |
{ |
12ce: 1f 92 push r1 |
12d0: 0f 92 push r0 |
12d2: 0f b6 in r0, 0x3f ; 63 |
12d4: 0f 92 push r0 |
12d6: 11 24 eor r1, r1 |
12d8: 8f 93 push r24 |
12da: 9f 93 push r25 |
static unsigned char cnt_10ms = 0; |
TCNT1 -= TIMER_RELOAD_VALUE; |
12dc: 8c b5 in r24, 0x2c ; 44 |
12de: 9d b5 in r25, 0x2d ; 45 |
12e0: 8a 5f subi r24, 0xFA ; 250 |
12e2: 90 40 sbci r25, 0x00 ; 0 |
12e4: 9d bd out 0x2d, r25 ; 45 |
12e6: 8c bd out 0x2c, r24 ; 44 |
CountMilliseconds++; |
12e8: 80 91 a5 00 lds r24, 0x00A5 |
12ec: 90 91 a6 00 lds r25, 0x00A6 |
12f0: 01 96 adiw r24, 0x01 ; 1 |
12f2: 90 93 a6 00 sts 0x00A6, r25 |
12f6: 80 93 a5 00 sts 0x00A5, r24 |
if(DisplayBusy) DisplayBusy--; |
12fa: 80 91 93 00 lds r24, 0x0093 |
12fe: 88 23 and r24, r24 |
1300: 29 f0 breq .+10 ; 0x130c <__vector_9+0x3e> |
1302: 80 91 93 00 lds r24, 0x0093 |
1306: 81 50 subi r24, 0x01 ; 1 |
1308: 80 93 93 00 sts 0x0093, r24 |
if(LoescheIrCodeTimer) |
130c: 80 91 7c 00 lds r24, 0x007C |
1310: 90 91 7d 00 lds r25, 0x007D |
1314: 00 97 sbiw r24, 0x00 ; 0 |
1316: 59 f0 breq .+22 ; 0x132e <__vector_9+0x60> |
{ |
if(--LoescheIrCodeTimer == 0) IR_Code = 0; |
1318: 01 97 sbiw r24, 0x01 ; 1 |
131a: 90 93 7d 00 sts 0x007D, r25 |
131e: 80 93 7c 00 sts 0x007C, r24 |
1322: 00 97 sbiw r24, 0x00 ; 0 |
1324: 21 f4 brne .+8 ; 0x132e <__vector_9+0x60> |
1326: 90 93 c8 01 sts 0x01C8, r25 |
132a: 80 93 c7 01 sts 0x01C7, r24 |
132e: 9f 91 pop r25 |
1330: 8f 91 pop r24 |
1332: 0f 90 pop r0 |
1334: 0f be out 0x3f, r0 ; 63 |
1336: 0f 90 pop r0 |
1338: 1f 90 pop r1 |
133a: 18 95 reti |
0000133c <Timer1_Init>: |
} |
} |
void Timer1_Init(void) |
{ |
TCCR1B = TIMER_TEILER; |
133c: 83 e0 ldi r24, 0x03 ; 3 |
133e: 8e bd out 0x2e, r24 ; 46 |
TCNT1 = -TIMER_RELOAD_VALUE; // reload |
1340: 86 e0 ldi r24, 0x06 ; 6 |
1342: 9f ef ldi r25, 0xFF ; 255 |
1344: 9d bd out 0x2d, r25 ; 45 |
1346: 8c bd out 0x2c, r24 ; 44 |
//OCR1 = 0x00; |
// Timer(s)/Counter(s) Interrupt(s) initialization |
#if defined (__AVR_ATmega32__) |
TIMSK |= 0x04; |
1348: 89 b7 in r24, 0x39 ; 57 |
134a: 84 60 ori r24, 0x04 ; 4 |
134c: 89 bf out 0x39, r24 ; 57 |
134e: 08 95 ret |
00001350 <SetDelay>: |
#endif |
#if defined (__AVR_ATmega644__) |
TIMSK1 |= _BV(TOIE1); |
#endif |
} |
unsigned int SetDelay (unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
1350: 20 91 a5 00 lds r18, 0x00A5 |
1354: 30 91 a6 00 lds r19, 0x00A6 |
1358: 28 0f add r18, r24 |
135a: 39 1f adc r19, r25 |
} |
135c: c9 01 movw r24, r18 |
135e: 01 97 sbiw r24, 0x01 ; 1 |
1360: 08 95 ret |
00001362 <CheckDelay>: |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
1362: 20 91 a5 00 lds r18, 0x00A5 |
1366: 30 91 a6 00 lds r19, 0x00A6 |
136a: 82 1b sub r24, r18 |
136c: 93 0b sbc r25, r19 |
136e: 89 2f mov r24, r25 |
1370: 99 27 eor r25, r25 |
1372: 80 78 andi r24, 0x80 ; 128 |
} |
1374: 99 27 eor r25, r25 |
1376: 08 95 ret |
00001378 <Delay_ms>: |
void Delay_ms(unsigned int w) |
{ |
1378: cf 93 push r28 |
137a: df 93 push r29 |
unsigned int akt; |
akt = SetDelay(w); |
137c: 0e 94 a8 09 call 0x1350 <SetDelay> |
1380: ec 01 movw r28, r24 |
while (!CheckDelay(akt)); |
1382: ce 01 movw r24, r28 |
1384: 0e 94 b1 09 call 0x1362 <CheckDelay> |
1388: 88 23 and r24, r24 |
138a: d9 f3 breq .-10 ; 0x1382 <Delay_ms+0xa> |
138c: df 91 pop r29 |
138e: cf 91 pop r28 |
1390: 08 95 ret |
00001392 <Keyboard_Init>: |
unsigned int KeyTimer = 0; |
void Keyboard_Init(void) |
{ |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1392: 82 e3 ldi r24, 0x32 ; 50 |
1394: 90 e0 ldi r25, 0x00 ; 0 |
1396: 0e 94 a8 09 call 0x1350 <SetDelay> |
139a: 90 93 a9 00 sts 0x00A9, r25 |
139e: 80 93 a8 00 sts 0x00A8, r24 |
13a2: 08 95 ret |
000013a4 <GetKeyboard>: |
} |
unsigned char GetKeyboard(void) |
{ |
13a4: cf 93 push r28 |
static char taste1 = 0, taste2 = 0,taste3 = 0,taste4 = 0,taste5 = 0; |
unsigned char ret = 0; |
13a6: c0 e0 ldi r28, 0x00 ; 0 |
if(CheckDelay(KeyTimer)) |
13a8: 80 91 a8 00 lds r24, 0x00A8 |
13ac: 90 91 a9 00 lds r25, 0x00A9 |
13b0: 0e 94 b1 09 call 0x1362 <CheckDelay> |
13b4: 88 23 and r24, r24 |
13b6: 09 f4 brne .+2 ; 0x13ba <GetKeyboard+0x16> |
13b8: 76 c0 rjmp .+236 ; 0x14a6 <GetKeyboard+0x102> |
{ |
if(_TASTE1) { if(taste1++ == 0 || taste1 == CNT_TASTE) ret |= KEY1; if(taste1 == CNT_TASTE) taste1 = CNT_TASTE-CNT_TASTE/3;} else taste1 = 0; |
13ba: cf 9b sbis 0x19, 7 ; 25 |
13bc: 12 c0 rjmp .+36 ; 0x13e2 <GetKeyboard+0x3e> |
13be: 80 91 aa 00 lds r24, 0x00AA |
13c2: 8f 5f subi r24, 0xFF ; 255 |
13c4: 80 93 aa 00 sts 0x00AA, r24 |
13c8: 81 30 cpi r24, 0x01 ; 1 |
13ca: 11 f0 breq .+4 ; 0x13d0 <GetKeyboard+0x2c> |
13cc: 8a 30 cpi r24, 0x0A ; 10 |
13ce: 09 f4 brne .+2 ; 0x13d2 <GetKeyboard+0x2e> |
13d0: c1 e0 ldi r28, 0x01 ; 1 |
13d2: 80 91 aa 00 lds r24, 0x00AA |
13d6: 8a 30 cpi r24, 0x0A ; 10 |
13d8: 31 f4 brne .+12 ; 0x13e6 <GetKeyboard+0x42> |
13da: 87 e0 ldi r24, 0x07 ; 7 |
13dc: 80 93 aa 00 sts 0x00AA, r24 |
13e0: 02 c0 rjmp .+4 ; 0x13e6 <GetKeyboard+0x42> |
13e2: c0 93 aa 00 sts 0x00AA, r28 |
if(_TASTE2) { if(taste2++ == 0 || taste2 == CNT_TASTE) ret |= KEY2; if(taste2 == CNT_TASTE) taste2 = CNT_TASTE-CNT_TASTE/3;} else taste2 = 0; |
13e6: ce 9b sbis 0x19, 6 ; 25 |
13e8: 12 c0 rjmp .+36 ; 0x140e <GetKeyboard+0x6a> |
13ea: 80 91 ab 00 lds r24, 0x00AB |
13ee: 8f 5f subi r24, 0xFF ; 255 |
13f0: 80 93 ab 00 sts 0x00AB, r24 |
13f4: 81 30 cpi r24, 0x01 ; 1 |
13f6: 11 f0 breq .+4 ; 0x13fc <GetKeyboard+0x58> |
13f8: 8a 30 cpi r24, 0x0A ; 10 |
13fa: 09 f4 brne .+2 ; 0x13fe <GetKeyboard+0x5a> |
13fc: c2 60 ori r28, 0x02 ; 2 |
13fe: 80 91 ab 00 lds r24, 0x00AB |
1402: 8a 30 cpi r24, 0x0A ; 10 |
1404: 31 f4 brne .+12 ; 0x1412 <GetKeyboard+0x6e> |
1406: 87 e0 ldi r24, 0x07 ; 7 |
1408: 80 93 ab 00 sts 0x00AB, r24 |
140c: 02 c0 rjmp .+4 ; 0x1412 <GetKeyboard+0x6e> |
140e: 10 92 ab 00 sts 0x00AB, r1 |
if(_TASTE3) { if(taste3++ == 0 || taste3 == CNT_TASTE) ret |= KEY3; if(taste3 == CNT_TASTE) taste3 = CNT_TASTE-CNT_TASTE/3;} else taste3 = 0; |
1412: cd 9b sbis 0x19, 5 ; 25 |
1414: 12 c0 rjmp .+36 ; 0x143a <GetKeyboard+0x96> |
1416: 80 91 ac 00 lds r24, 0x00AC |
141a: 8f 5f subi r24, 0xFF ; 255 |
141c: 80 93 ac 00 sts 0x00AC, r24 |
1420: 81 30 cpi r24, 0x01 ; 1 |
1422: 11 f0 breq .+4 ; 0x1428 <GetKeyboard+0x84> |
1424: 8a 30 cpi r24, 0x0A ; 10 |
1426: 09 f4 brne .+2 ; 0x142a <GetKeyboard+0x86> |
1428: c4 60 ori r28, 0x04 ; 4 |
142a: 80 91 ac 00 lds r24, 0x00AC |
142e: 8a 30 cpi r24, 0x0A ; 10 |
1430: 31 f4 brne .+12 ; 0x143e <GetKeyboard+0x9a> |
1432: 87 e0 ldi r24, 0x07 ; 7 |
1434: 80 93 ac 00 sts 0x00AC, r24 |
1438: 02 c0 rjmp .+4 ; 0x143e <GetKeyboard+0x9a> |
143a: 10 92 ac 00 sts 0x00AC, r1 |
if(_TASTE4) { if(taste4++ == 0 || taste4 == CNT_TASTE) ret |= KEY4; if(taste4 == CNT_TASTE) taste4 = CNT_TASTE-CNT_TASTE/3;} else taste4 = 0; |
143e: cc 9b sbis 0x19, 4 ; 25 |
1440: 12 c0 rjmp .+36 ; 0x1466 <GetKeyboard+0xc2> |
1442: 80 91 ad 00 lds r24, 0x00AD |
1446: 8f 5f subi r24, 0xFF ; 255 |
1448: 80 93 ad 00 sts 0x00AD, r24 |
144c: 81 30 cpi r24, 0x01 ; 1 |
144e: 11 f0 breq .+4 ; 0x1454 <GetKeyboard+0xb0> |
1450: 8a 30 cpi r24, 0x0A ; 10 |
1452: 09 f4 brne .+2 ; 0x1456 <GetKeyboard+0xb2> |
1454: c8 60 ori r28, 0x08 ; 8 |
1456: 80 91 ad 00 lds r24, 0x00AD |
145a: 8a 30 cpi r24, 0x0A ; 10 |
145c: 31 f4 brne .+12 ; 0x146a <GetKeyboard+0xc6> |
145e: 87 e0 ldi r24, 0x07 ; 7 |
1460: 80 93 ad 00 sts 0x00AD, r24 |
1464: 02 c0 rjmp .+4 ; 0x146a <GetKeyboard+0xc6> |
1466: 10 92 ad 00 sts 0x00AD, r1 |
if(_TASTE5) { if(taste5++ == 0 || taste5 == CNT_TASTE) ret |= KEY5; if(taste5 == CNT_TASTE) taste5 = CNT_TASTE-CNT_TASTE/3;} else taste5 = 0; |
146a: cb 9b sbis 0x19, 3 ; 25 |
146c: 12 c0 rjmp .+36 ; 0x1492 <GetKeyboard+0xee> |
146e: 80 91 ae 00 lds r24, 0x00AE |
1472: 8f 5f subi r24, 0xFF ; 255 |
1474: 80 93 ae 00 sts 0x00AE, r24 |
1478: 81 30 cpi r24, 0x01 ; 1 |
147a: 11 f0 breq .+4 ; 0x1480 <GetKeyboard+0xdc> |
147c: 8a 30 cpi r24, 0x0A ; 10 |
147e: 09 f4 brne .+2 ; 0x1482 <GetKeyboard+0xde> |
1480: c0 61 ori r28, 0x10 ; 16 |
1482: 80 91 ae 00 lds r24, 0x00AE |
1486: 8a 30 cpi r24, 0x0A ; 10 |
1488: 31 f4 brne .+12 ; 0x1496 <GetKeyboard+0xf2> |
148a: 87 e0 ldi r24, 0x07 ; 7 |
148c: 80 93 ae 00 sts 0x00AE, r24 |
1490: 02 c0 rjmp .+4 ; 0x1496 <GetKeyboard+0xf2> |
1492: 10 92 ae 00 sts 0x00AE, r1 |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1496: 82 e3 ldi r24, 0x32 ; 50 |
1498: 90 e0 ldi r25, 0x00 ; 0 |
149a: 0e 94 a8 09 call 0x1350 <SetDelay> |
149e: 90 93 a9 00 sts 0x00A9, r25 |
14a2: 80 93 a8 00 sts 0x00A8, r24 |
} |
return(ret); |
} |
14a6: 8c 2f mov r24, r28 |
14a8: 99 27 eor r25, r25 |
14aa: cf 91 pop r28 |
14ac: 08 95 ret |
000014ae <GetKeyboard2>: |
unsigned char GetKeyboard2(void) |
{ |
unsigned char ret = 0; |
14ae: 80 e0 ldi r24, 0x00 ; 0 |
if(_TASTE1) ret |= KEY1; |
14b0: cf 99 sbic 0x19, 7 ; 25 |
14b2: 81 e0 ldi r24, 0x01 ; 1 |
if(_TASTE2) ret |= KEY2; |
14b4: ce 99 sbic 0x19, 6 ; 25 |
14b6: 82 60 ori r24, 0x02 ; 2 |
if(_TASTE3) ret |= KEY3; |
14b8: cd 99 sbic 0x19, 5 ; 25 |
14ba: 84 60 ori r24, 0x04 ; 4 |
if(_TASTE4) ret |= KEY4; |
14bc: cc 99 sbic 0x19, 4 ; 25 |
14be: 88 60 ori r24, 0x08 ; 8 |
if(_TASTE5) ret |= KEY5; |
14c0: cb 99 sbic 0x19, 3 ; 25 |
14c2: 80 61 ori r24, 0x10 ; 16 |
return(ret); |
} |
14c4: 99 27 eor r25, r25 |
14c6: 08 95 ret |
000014c8 <Menu>: |
unsigned char KanalVon[MAX_KANAL]; |
unsigned char KanalAn[MAX_KANAL]; |
void Menu(unsigned char key) |
{ |
14c8: 0f 93 push r16 |
14ca: 1f 93 push r17 |
14cc: cf 93 push r28 |
14ce: df 93 push r29 |
static unsigned int arr = 0; |
static unsigned char MaxMenue = 2,MenuePunkt=0; |
unsigned char kanal = 0; |
if(key & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LCD_Clear; } |
14d0: c8 2f mov r28, r24 |
14d2: dd 27 eor r29, r29 |
14d4: c0 ff sbrs r28, 0 |
14d6: 0f c0 rjmp .+30 ; 0x14f6 <Menu+0x2e> |
14d8: 80 91 b3 00 lds r24, 0x00B3 |
14dc: 88 23 and r24, r24 |
14de: 11 f0 breq .+4 ; 0x14e4 <Menu+0x1c> |
14e0: 81 50 subi r24, 0x01 ; 1 |
14e2: 02 c0 rjmp .+4 ; 0x14e8 <Menu+0x20> |
14e4: 80 91 7b 00 lds r24, 0x007B |
14e8: 80 93 b3 00 sts 0x00B3, r24 |
14ec: 81 e0 ldi r24, 0x01 ; 1 |
14ee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
14f2: 0e 94 c9 05 call 0xb92 <_long_delay> |
if(key & KEY2) { MenuePunkt++; LCD_Clear; } |
14f6: 8e 01 movw r16, r28 |
14f8: 02 70 andi r16, 0x02 ; 2 |
14fa: 10 70 andi r17, 0x00 ; 0 |
14fc: c1 ff sbrs r28, 1 |
14fe: 0a c0 rjmp .+20 ; 0x1514 <Menu+0x4c> |
1500: 80 91 b3 00 lds r24, 0x00B3 |
1504: 8f 5f subi r24, 0xFF ; 255 |
1506: 80 93 b3 00 sts 0x00B3, r24 |
150a: 81 e0 ldi r24, 0x01 ; 1 |
150c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
1510: 0e 94 c9 05 call 0xb92 <_long_delay> |
if((key & KEY1) && (key & KEY2)) MenuePunkt = 0; |
1514: c0 ff sbrs r28, 0 |
1516: 04 c0 rjmp .+8 ; 0x1520 <Menu+0x58> |
1518: 01 2b or r16, r17 |
151a: 11 f0 breq .+4 ; 0x1520 <Menu+0x58> |
151c: 10 92 b3 00 sts 0x00B3, r1 |
// LCD_printfxy(13,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
1520: 20 91 b3 00 lds r18, 0x00B3 |
1524: 82 2f mov r24, r18 |
1526: 99 27 eor r25, r25 |
1528: 81 30 cpi r24, 0x01 ; 1 |
152a: 91 05 cpc r25, r1 |
152c: 09 f4 brne .+2 ; 0x1530 <Menu+0x68> |
152e: 41 c0 rjmp .+130 ; 0x15b2 <Menu+0xea> |
1530: 82 30 cpi r24, 0x02 ; 2 |
1532: 91 05 cpc r25, r1 |
1534: 1c f4 brge .+6 ; 0x153c <Menu+0x74> |
1536: 89 2b or r24, r25 |
1538: 49 f0 breq .+18 ; 0x154c <Menu+0x84> |
153a: bf c0 rjmp .+382 ; 0x16ba <Menu+0x1f2> |
153c: 82 30 cpi r24, 0x02 ; 2 |
153e: 91 05 cpc r25, r1 |
1540: 09 f4 brne .+2 ; 0x1544 <Menu+0x7c> |
1542: 6a c0 rjmp .+212 ; 0x1618 <Menu+0x150> |
1544: 03 97 sbiw r24, 0x03 ; 3 |
1546: 09 f4 brne .+2 ; 0x154a <Menu+0x82> |
1548: 8e c0 rjmp .+284 ; 0x1666 <Menu+0x19e> |
154a: b7 c0 rjmp .+366 ; 0x16ba <Menu+0x1f2> |
{ |
case 0: |
LCD_printfxy(0,0,"Verbinden mit"); |
154c: 60 e0 ldi r22, 0x00 ; 0 |
154e: 86 2f mov r24, r22 |
1550: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1554: 84 eb ldi r24, 0xB4 ; 180 |
1556: 90 e0 ldi r25, 0x00 ; 0 |
1558: 9f 93 push r25 |
155a: 8f 93 push r24 |
155c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"MicroSPS:%2i ",SlaveAdresse); |
1560: 61 e0 ldi r22, 0x01 ; 1 |
1562: 80 e0 ldi r24, 0x00 ; 0 |
1564: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1568: 0f 90 pop r0 |
156a: 0f 90 pop r0 |
156c: 80 91 64 00 lds r24, 0x0064 |
1570: 99 27 eor r25, r25 |
1572: 9f 93 push r25 |
1574: 8f 93 push r24 |
1576: 82 ec ldi r24, 0xC2 ; 194 |
1578: 90 e0 ldi r25, 0x00 ; 0 |
157a: 9f 93 push r25 |
157c: 8f 93 push r24 |
157e: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && SlaveAdresse > 1) SlaveAdresse--; |
1582: 0f 90 pop r0 |
1584: 0f 90 pop r0 |
1586: 0f 90 pop r0 |
1588: 0f 90 pop r0 |
158a: c2 ff sbrs r28, 2 |
158c: 07 c0 rjmp .+14 ; 0x159c <Menu+0xd4> |
158e: 80 91 64 00 lds r24, 0x0064 |
1592: 82 30 cpi r24, 0x02 ; 2 |
1594: 18 f0 brcs .+6 ; 0x159c <Menu+0xd4> |
1596: 81 50 subi r24, 0x01 ; 1 |
1598: 80 93 64 00 sts 0x0064, r24 |
if(key & KEY4 && SlaveAdresse < 26) SlaveAdresse++; |
159c: c3 ff sbrs r28, 3 |
159e: 92 c0 rjmp .+292 ; 0x16c4 <Menu+0x1fc> |
15a0: 80 91 64 00 lds r24, 0x0064 |
15a4: 8a 31 cpi r24, 0x1A ; 26 |
15a6: 08 f0 brcs .+2 ; 0x15aa <Menu+0xe2> |
15a8: 8d c0 rjmp .+282 ; 0x16c4 <Menu+0x1fc> |
15aa: 8f 5f subi r24, 0xFF ; 255 |
15ac: 80 93 64 00 sts 0x0064, r24 |
break; |
15b0: 89 c0 rjmp .+274 ; 0x16c4 <Menu+0x1fc> |
case 1: |
LCD_printfxy(0,0,"Max Adresse"); |
15b2: 60 e0 ldi r22, 0x00 ; 0 |
15b4: 86 2f mov r24, r22 |
15b6: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ba: 80 ed ldi r24, 0xD0 ; 208 |
15bc: 90 e0 ldi r25, 0x00 ; 0 |
15be: 9f 93 push r25 |
15c0: 8f 93 push r24 |
15c2: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"%2i ",AnzahlTeilnehmer); |
15c6: 61 e0 ldi r22, 0x01 ; 1 |
15c8: 80 e0 ldi r24, 0x00 ; 0 |
15ca: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ce: 0f 90 pop r0 |
15d0: 0f 90 pop r0 |
15d2: 80 91 6c 00 lds r24, 0x006C |
15d6: 99 27 eor r25, r25 |
15d8: 9f 93 push r25 |
15da: 8f 93 push r24 |
15dc: 8c ed ldi r24, 0xDC ; 220 |
15de: 90 e0 ldi r25, 0x00 ; 0 |
15e0: 9f 93 push r25 |
15e2: 8f 93 push r24 |
15e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && AnzahlTeilnehmer > 1) AnzahlTeilnehmer--; |
15e8: 0f 90 pop r0 |
15ea: 0f 90 pop r0 |
15ec: 0f 90 pop r0 |
15ee: 0f 90 pop r0 |
15f0: c2 ff sbrs r28, 2 |
15f2: 07 c0 rjmp .+14 ; 0x1602 <Menu+0x13a> |
15f4: 80 91 6c 00 lds r24, 0x006C |
15f8: 82 30 cpi r24, 0x02 ; 2 |
15fa: 18 f0 brcs .+6 ; 0x1602 <Menu+0x13a> |
15fc: 81 50 subi r24, 0x01 ; 1 |
15fe: 80 93 6c 00 sts 0x006C, r24 |
if(key & KEY4 && AnzahlTeilnehmer < 26) AnzahlTeilnehmer++; |
1602: c3 ff sbrs r28, 3 |
1604: 5f c0 rjmp .+190 ; 0x16c4 <Menu+0x1fc> |
1606: 80 91 6c 00 lds r24, 0x006C |
160a: 8a 31 cpi r24, 0x1A ; 26 |
160c: 08 f0 brcs .+2 ; 0x1610 <Menu+0x148> |
160e: 5a c0 rjmp .+180 ; 0x16c4 <Menu+0x1fc> |
1610: 8f 5f subi r24, 0xFF ; 255 |
1612: 80 93 6c 00 sts 0x006C, r24 |
break; |
1616: 56 c0 rjmp .+172 ; 0x16c4 <Menu+0x1fc> |
case 2: |
LCD_printfxy(0,0,"Checksum"); |
1618: 60 e0 ldi r22, 0x00 ; 0 |
161a: 86 2f mov r24, r22 |
161c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1620: 81 ee ldi r24, 0xE1 ; 225 |
1622: 90 e0 ldi r25, 0x00 ; 0 |
1624: 9f 93 push r25 |
1626: 8f 93 push r24 |
1628: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Errors:%5i ",CntCrcError); |
162c: 61 e0 ldi r22, 0x01 ; 1 |
162e: 80 e0 ldi r24, 0x00 ; 0 |
1630: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1634: 0f 90 pop r0 |
1636: 0f 90 pop r0 |
1638: 80 91 99 00 lds r24, 0x0099 |
163c: 90 91 9a 00 lds r25, 0x009A |
1640: 9f 93 push r25 |
1642: 8f 93 push r24 |
1644: 8a ee ldi r24, 0xEA ; 234 |
1646: 90 e0 ldi r25, 0x00 ; 0 |
1648: 9f 93 push r25 |
164a: 8f 93 push r24 |
164c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) CntCrcError = 0; |
1650: 0f 90 pop r0 |
1652: 0f 90 pop r0 |
1654: 0f 90 pop r0 |
1656: 0f 90 pop r0 |
1658: c2 ff sbrs r28, 2 |
165a: 34 c0 rjmp .+104 ; 0x16c4 <Menu+0x1fc> |
165c: 10 92 9a 00 sts 0x009A, r1 |
1660: 10 92 99 00 sts 0x0099, r1 |
break; |
1664: 2f c0 rjmp .+94 ; 0x16c4 <Menu+0x1fc> |
case 3: |
LCD_printfxy(0,0,"Display"); |
1666: 60 e0 ldi r22, 0x00 ; 0 |
1668: 86 2f mov r24, r22 |
166a: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
166e: 86 ef ldi r24, 0xF6 ; 246 |
1670: 90 e0 ldi r25, 0x00 ; 0 |
1672: 9f 93 push r25 |
1674: 8f 93 push r24 |
1676: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Zeilen:%1i ",DisplayZeilen); |
167a: 61 e0 ldi r22, 0x01 ; 1 |
167c: 80 e0 ldi r24, 0x00 ; 0 |
167e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1682: 0f 90 pop r0 |
1684: 0f 90 pop r0 |
1686: 80 91 65 00 lds r24, 0x0065 |
168a: 99 27 eor r25, r25 |
168c: 9f 93 push r25 |
168e: 8f 93 push r24 |
1690: 8e ef ldi r24, 0xFE ; 254 |
1692: 90 e0 ldi r25, 0x00 ; 0 |
1694: 9f 93 push r25 |
1696: 8f 93 push r24 |
1698: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) DisplayZeilen = 4; |
169c: 0f 90 pop r0 |
169e: 0f 90 pop r0 |
16a0: 0f 90 pop r0 |
16a2: 0f 90 pop r0 |
16a4: c2 ff sbrs r28, 2 |
16a6: 03 c0 rjmp .+6 ; 0x16ae <Menu+0x1e6> |
16a8: 84 e0 ldi r24, 0x04 ; 4 |
16aa: 80 93 65 00 sts 0x0065, r24 |
if(key & KEY4) DisplayZeilen = 2; |
16ae: c3 ff sbrs r28, 3 |
16b0: 09 c0 rjmp .+18 ; 0x16c4 <Menu+0x1fc> |
16b2: 82 e0 ldi r24, 0x02 ; 2 |
16b4: 80 93 65 00 sts 0x0065, r24 |
break; |
16b8: 05 c0 rjmp .+10 ; 0x16c4 <Menu+0x1fc> |
/* case 1: |
case 2: |
case 3: |
case 4: |
kanal = MenuePunkt - 1; |
LCD_printfxy(0,0,"Datenkanal:%2i",kanal); |
LCD_printfxy(0,1,"Von:%2i an %2i ",KanalVon[kanal],KanalAn[kanal]); |
if(key & KEY3) KanalVon[kanal]++; |
if(key & KEY4) KanalAn[kanal]++; |
KanalVon[kanal] % MAX_KANAL; |
KanalAn[kanal] % MAX_KANAL; |
break; |
*/ |
/* |
case 1: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Display:%3ims ",IntervallDisplay); |
if(key & KEY3 && IntervallDisplay > 25) IntervallDisplay -= 5; |
if(key & KEY4 && IntervallDisplay < 990) IntervallDisplay += 5; |
break; |
case 2: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Debug:%3ims ",IntervallDebug); |
if(key & KEY3 && IntervallDebug > 25) IntervallDebug -= 5; |
if(key & KEY4 && IntervallDebug < 990) IntervallDebug += 5; |
break; |
case 1: |
LCD_printfxy(0,0,"Time"); |
LCD_printfxy(0,1,"%3i:%02i",Minute,Sekunde); |
if(key & KEY3) if(Minute) Minute--; |
if(key & KEY4) Minute++; |
if(key & KEY5) Sekunde = 0; |
break; |
case 2: |
LCD_printfxy(0,0,"Testvariable"); |
LCD_printfxy(0,1,"TestInt:%5i",TestInt); |
if(key & KEY3) TestInt--; |
if(key & KEY4) TestInt++; |
break; |
case 3: |
LCD_printfxy(0,0,"Testarray"); |
LCD_printfxy(0,1,"Array[%i]=%3i",arr,Array[arr]); |
if(key & KEY5) if(++arr == ARRAYGROESSE) arr = 0; |
if(key & KEY3) Array[arr]--; |
if(key & KEY4) Array[arr]++; |
break; |
case 4: |
LCD_printfxy(0,0,"Infrarot RC5:"); |
LCD_printfxy(0,1,"Adr:%2i Cmd:%3i",(IR_Code >> 8), IR_Code & 0xff); |
break; |
*/ |
default: MaxMenue = MenuePunkt - 1; |
16ba: 21 50 subi r18, 0x01 ; 1 |
16bc: 20 93 7b 00 sts 0x007B, r18 |
MenuePunkt = 0; |
16c0: 10 92 b3 00 sts 0x00B3, r1 |
16c4: df 91 pop r29 |
16c6: cf 91 pop r28 |
16c8: 1f 91 pop r17 |
16ca: 0f 91 pop r16 |
16cc: 08 95 ret |
000016ce <InitIR>: |
// Init IR |
// ************************************************************************ |
void InitIR(void) |
{ |
INT0_ENABLE; // ext. Int0 enable |
16ce: 8b b7 in r24, 0x3b ; 59 |
16d0: 80 64 ori r24, 0x40 ; 64 |
16d2: 8b bf out 0x3b, r24 ; 59 |
CLR_INT0_FLAG; // war |= 0x40 |
16d4: 8a b7 in r24, 0x3a ; 58 |
16d6: 8f 7b andi r24, 0xBF ; 191 |
16d8: 8a bf out 0x3a, r24 ; 58 |
INIT_INT0_FLANKE; |
16da: 85 b7 in r24, 0x35 ; 53 |
16dc: 8c 7f andi r24, 0xFC ; 252 |
16de: 85 bf out 0x35, r24 ; 53 |
16e0: 85 b7 in r24, 0x35 ; 53 |
16e2: 82 60 ori r24, 0x02 ; 2 |
16e4: 85 bf out 0x35, r24 ; 53 |
TIMER0_PRESCALER = 0x04; // Timer0: Clk div 256 |
16e6: 84 e0 ldi r24, 0x04 ; 4 |
16e8: 83 bf out 0x33, r24 ; 51 |
Decodierung_Lauft = 0; |
16ea: 10 92 c9 01 sts 0x01C9, r1 |
New_IR_Code = 0; |
16ee: 10 92 c6 01 sts 0x01C6, r1 |
IR_Code = 0; |
16f2: 10 92 c8 01 sts 0x01C8, r1 |
16f6: 10 92 c7 01 sts 0x01C7, r1 |
16fa: 08 95 ret |
000016fc <__vector_1>: |
} |
// ************************************************************************** |
// * aufgerufen durch: externer Interrupt |
// ************************************************************************** |
// * Die Funktion wird durch einen externen Interrupt aufgerufen. |
// * Sie dient nur zum Starten der Abtastsequenz und zum Triggern auf die |
// * Signalflanken in der Mitte der Daten. |
// ************************************************************************** |
SIGNAL (SIG_INTERRUPT0) |
{ |
16fc: 1f 92 push r1 |
16fe: 0f 92 push r0 |
1700: 0f b6 in r0, 0x3f ; 63 |
1702: 0f 92 push r0 |
1704: 11 24 eor r1, r1 |
1706: 8f 93 push r24 |
// Zeitbasis fuer Timer einstellen |
// Entspricht 1,5 mal einer Bitlaenge |
// PORTB++; |
TCNT0 = -41; |
1708: 87 ed ldi r24, 0xD7 ; 215 |
170a: 82 bf out 0x32, r24 ; 50 |
TIM0_START; // Timer 0 starten, |
170c: 89 b7 in r24, 0x39 ; 57 |
170e: 81 60 ori r24, 0x01 ; 1 |
1710: 89 bf out 0x39, r24 ; 57 |
if(Decodierung_Lauft) INT0_DISABLE; // die erneute Int.-Auslsung soll |
1712: 80 91 c9 01 lds r24, 0x01C9 |
1716: 88 23 and r24, r24 |
1718: 19 f0 breq .+6 ; 0x1720 <__vector_1+0x24> |
171a: 8b b7 in r24, 0x3b ; 59 |
171c: 8f 7b andi r24, 0xBF ; 191 |
171e: 8b bf out 0x3b, r24 ; 59 |
1720: 8f 91 pop r24 |
1722: 0f 90 pop r0 |
1724: 0f be out 0x3f, r0 ; 63 |
1726: 0f 90 pop r0 |
1728: 1f 90 pop r1 |
172a: 18 95 reti |
0000172c <__vector_11>: |
// nur die Timer-Routine erlauben |
} |
// ************************************************************************** |
// * aufgerufen durch: Timerueberlauf Timer 0 |
// ************************************************************************** |
// * Die Funktion wird durch einen Timer0-Interrupt aufgerufen. |
// * Der Timer wird vom ext. Int0 gestartet. |
// * Das Infrarotsignal wird hier abgetastet und die Wertigkeiten der |
// * Bits entsprechend aufaddiert. Das empfangende Zeichen wird in der |
// * globalen Variablen IR_Code gespeichert. Nach Empfang wird das Bit |
// * Neues_Zeichen gesetzt. |
// ************************************************************************** |
SIGNAL (SIG_OVERFLOW0) |
{ |
172c: 1f 92 push r1 |
172e: 0f 92 push r0 |
1730: 0f b6 in r0, 0x3f ; 63 |
1732: 0f 92 push r0 |
1734: 11 24 eor r1, r1 |
1736: 2f 93 push r18 |
1738: 3f 93 push r19 |
173a: 4f 93 push r20 |
173c: 8f 93 push r24 |
173e: 9f 93 push r25 |
static unsigned int Shift,IR_Code_tmp; |
static unsigned char IR_Zaehler=0,IRSperrCounter=0; |
// Reinitialize Timer's 0 value |
TCNT1 = -41; |
1740: 87 ed ldi r24, 0xD7 ; 215 |
1742: 9f ef ldi r25, 0xFF ; 255 |
1744: 9d bd out 0x2d, r25 ; 45 |
1746: 8c bd out 0x2c, r24 ; 44 |
if (IRSperrCounter) |
1748: 80 91 b9 00 lds r24, 0x00B9 |
174c: 88 23 and r24, r24 |
174e: 69 f0 breq .+26 ; 0x176a <__vector_11+0x3e> |
{ IRSperrCounter--; |
1750: 81 50 subi r24, 0x01 ; 1 |
1752: 80 93 b9 00 sts 0x00B9, r24 |
if (!IRSperrCounter) |
1756: 88 23 and r24, r24 |
1758: 09 f0 breq .+2 ; 0x175c <__vector_11+0x30> |
175a: 8a c0 rjmp .+276 ; 0x1870 <__vector_11+0x144> |
{ |
TIM0_STOPP; // Timer0 sperre wird durch ExtInt0 gestartet |
175c: 89 b7 in r24, 0x39 ; 57 |
175e: 8e 7f andi r24, 0xFE ; 254 |
1760: 89 bf out 0x39, r24 ; 57 |
CLR_INT0_FLAG; // IntFlag Loeschen |
1762: 8a b7 in r24, 0x3a ; 58 |
1764: 8f 7b andi r24, 0xBF ; 191 |
1766: 8a bf out 0x3a, r24 ; 58 |
1768: 80 c0 rjmp .+256 ; 0x186a <__vector_11+0x13e> |
INT0_ENABLE; // externen Interrupt wieder freigenben |
} |
} |
else |
{ |
if(IR_Zaehler > 1) |
176a: 40 91 b8 00 lds r20, 0x00B8 |
176e: 42 30 cpi r20, 0x02 ; 2 |
1770: 88 f0 brcs .+34 ; 0x1794 <__vector_11+0x68> |
{ |
Decodierung_Lauft = 1; |
1772: 81 e0 ldi r24, 0x01 ; 1 |
1774: 80 93 c9 01 sts 0x01C9, r24 |
{ |
CLR_INT0_FLAG; // Interrupt Flag loeschen |
1778: 8a b7 in r24, 0x3a ; 58 |
177a: 8f 7b andi r24, 0xBF ; 191 |
177c: 8a bf out 0x3a, r24 ; 58 |
if(IR_PP) INT0_NEG_FLANKE; // naechste fallende Flanke soll Int0 ausloesen |
177e: 82 9b sbis 0x10, 2 ; 16 |
1780: 03 c0 rjmp .+6 ; 0x1788 <__vector_11+0x5c> |
1782: 85 b7 in r24, 0x35 ; 53 |
1784: 8e 7f andi r24, 0xFE ; 254 |
1786: 02 c0 rjmp .+4 ; 0x178c <__vector_11+0x60> |
else INT0_POS_FLANKE; // naechste steigende Flanke soll Int0 ausloesen |
1788: 85 b7 in r24, 0x35 ; 53 |
178a: 81 60 ori r24, 0x01 ; 1 |
178c: 85 bf out 0x35, r24 ; 53 |
INT0_ENABLE; // externen Int frei |
178e: 8b b7 in r24, 0x3b ; 59 |
1790: 80 64 ori r24, 0x40 ; 64 |
1792: 8b bf out 0x3b, r24 ; 59 |
} |
} |
if(!IR_Zaehler) // es beginnt eine neue Abtastung |
1794: 44 23 and r20, r20 |
1796: 59 f4 brne .+22 ; 0x17ae <__vector_11+0x82> |
{ // es handelt sich um das 1. Sync-Bit |
IR_Code_tmp=0; // Merker löschen |
1798: 10 92 b7 00 sts 0x00B7, r1 |
179c: 10 92 b6 00 sts 0x00B6, r1 |
Shift=0x8000; //;8192; // Maske auf MSB |
17a0: 80 e0 ldi r24, 0x00 ; 0 |
17a2: 90 e8 ldi r25, 0x80 ; 128 |
17a4: 90 93 b5 00 sts 0x00B5, r25 |
17a8: 80 93 b4 00 sts 0x00B4, r24 |
17ac: 14 c0 rjmp .+40 ; 0x17d6 <__vector_11+0xaa> |
} |
else |
if(IR_PP==1) // das empfangende Bit ist logisch High |
17ae: 82 9b sbis 0x10, 2 ; 16 |
17b0: 10 c0 rjmp .+32 ; 0x17d2 <__vector_11+0xa6> |
{ if(IR_Zaehler>2) // (IR_Zaehler ist gleich 1 beim 2. Sync-Bit) |
17b2: 43 30 cpi r20, 0x03 ; 3 |
17b4: 70 f0 brcs .+28 ; 0x17d2 <__vector_11+0xa6> |
{ // 2 --> Toggle-Bit (wird übersprungen) |
IR_Code_tmp |= Shift; // entsprechendse Bit setzen |
17b6: 80 91 b6 00 lds r24, 0x00B6 |
17ba: 90 91 b7 00 lds r25, 0x00B7 |
17be: 20 91 b4 00 lds r18, 0x00B4 |
17c2: 30 91 b5 00 lds r19, 0x00B5 |
17c6: 82 2b or r24, r18 |
17c8: 93 2b or r25, r19 |
17ca: 90 93 b7 00 sts 0x00B7, r25 |
17ce: 80 93 b6 00 sts 0x00B6, r24 |
} |
} |
if ((IR_Zaehler < 2) && !(IR_PP==1)) // startbits überprüfen |
17d2: 42 30 cpi r20, 0x02 ; 2 |
17d4: 20 f4 brcc .+8 ; 0x17de <__vector_11+0xb2> |
17d6: 82 99 sbic 0x10, 2 ; 16 |
17d8: 02 c0 rjmp .+4 ; 0x17de <__vector_11+0xb2> |
{ |
IR_Zaehler = 0; |
17da: 10 92 b8 00 sts 0x00B8, r1 |
} |
Shift >>=1; // Shiftregister um 1 nach rechts schieben |
17de: 80 91 b4 00 lds r24, 0x00B4 |
17e2: 90 91 b5 00 lds r25, 0x00B5 |
17e6: 96 95 lsr r25 |
17e8: 87 95 ror r24 |
17ea: 90 93 b5 00 sts 0x00B5, r25 |
17ee: 80 93 b4 00 sts 0x00B4, r24 |
// (für das nächste empf. Bit |
if (Shift == 128) Shift = 32; // Adresse ins HighByte, Kommando ins LowByte |
17f2: 80 38 cpi r24, 0x80 ; 128 |
17f4: 91 05 cpc r25, r1 |
17f6: 31 f4 brne .+12 ; 0x1804 <__vector_11+0xd8> |
17f8: 80 e2 ldi r24, 0x20 ; 32 |
17fa: 90 e0 ldi r25, 0x00 ; 0 |
17fc: 90 93 b5 00 sts 0x00B5, r25 |
1800: 80 93 b4 00 sts 0x00B4, r24 |
if(IR_Zaehler++==15) // Das IR-Wort wurde vollstaendig abgetastet |
1804: 80 91 b8 00 lds r24, 0x00B8 |
1808: 8f 5f subi r24, 0xFF ; 255 |
180a: 80 93 b8 00 sts 0x00B8, r24 |
180e: 80 31 cpi r24, 0x10 ; 16 |
1810: 79 f5 brne .+94 ; 0x1870 <__vector_11+0x144> |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
1812: 8a b7 in r24, 0x3a ; 58 |
1814: 8f 7b andi r24, 0xBF ; 191 |
1816: 8a bf out 0x3a, r24 ; 58 |
INT0_NEG_FLANKE; // fallende Flanke |
1818: 85 b7 in r24, 0x35 ; 53 |
181a: 8e 7f andi r24, 0xFE ; 254 |
181c: 85 bf out 0x35, r24 ; 53 |
IR_Zaehler = 0; |
181e: 10 92 b8 00 sts 0x00B8, r1 |
Decodierung_Lauft=0; |
1822: 10 92 c9 01 sts 0x01C9, r1 |
/* if ((HIGH(IR_Code_tmp)==ALLOWED1)|| (HIGH(IR_Code_tmp)==ALLOWED2)|| |
(HIGH(IR_Code_tmp)==ALLOWED3)||(HIGH(IR_Code_tmp)==ALLOWED4)|| |
(HIGH(IR_Code_tmp)==ALLOWED5) ) |
if ((HIGH(IR_Code_tmp)< 10))*/ |
if ((HIGH(IR_Code_tmp)< 10 ) && (LOW(IR_Code_tmp)!=0x3F) ) |
1826: 80 91 b7 00 lds r24, 0x00B7 |
182a: 8a 30 cpi r24, 0x0A ; 10 |
182c: d8 f4 brcc .+54 ; 0x1864 <__vector_11+0x138> |
182e: 80 91 b6 00 lds r24, 0x00B6 |
1832: 8f 33 cpi r24, 0x3F ; 63 |
1834: b9 f0 breq .+46 ; 0x1864 <__vector_11+0x138> |
{ // nur erlaubt Adressen werden akzepetiert |
IR_Code=IR_Code_tmp; // IR-Wort in die globale Variable schreiben |
1836: 80 91 b6 00 lds r24, 0x00B6 |
183a: 90 91 b7 00 lds r25, 0x00B7 |
183e: 90 93 c8 01 sts 0x01C8, r25 |
1842: 80 93 c7 01 sts 0x01C7, r24 |
New_IR_Code = 1; // Es ist ein neues Zeichen eingetragen worden |
1846: 81 e0 ldi r24, 0x01 ; 1 |
1848: 80 93 c6 01 sts 0x01C6, r24 |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
184c: 84 e0 ldi r24, 0x04 ; 4 |
184e: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
1852: 8b b7 in r24, 0x3b ; 59 |
1854: 80 64 ori r24, 0x40 ; 64 |
1856: 8b bf out 0x3b, r24 ; 59 |
LoescheIrCodeTimer = 250; |
1858: 8a ef ldi r24, 0xFA ; 250 |
185a: 90 e0 ldi r25, 0x00 ; 0 |
185c: 90 93 7d 00 sts 0x007D, r25 |
1860: 80 93 7c 00 sts 0x007C, r24 |
} |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
1864: 84 e0 ldi r24, 0x04 ; 4 |
1866: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
186a: 8b b7 in r24, 0x3b ; 59 |
186c: 80 64 ori r24, 0x40 ; 64 |
186e: 8b bf out 0x3b, r24 ; 59 |
1870: 9f 91 pop r25 |
1872: 8f 91 pop r24 |
1874: 4f 91 pop r20 |
1876: 3f 91 pop r19 |
1878: 2f 91 pop r18 |
187a: 0f 90 pop r0 |
187c: 0f be out 0x3f, r0 ; 63 |
187e: 0f 90 pop r0 |
1880: 1f 90 pop r1 |
1882: 18 95 reti |
00001884 <ADC_Init>: |
// --------------------------------------------------------------------------------------- |
void ADC_Init(void) |
{ |
ADMUX = 0; |
1884: 17 b8 out 0x07, r1 ; 7 |
ADCSRA = 0x86; |
1886: 86 e8 ldi r24, 0x86 ; 134 |
1888: 86 b9 out 0x06, r24 ; 6 |
188a: 08 95 ret |
0000188c <ReadADC>: |
} |
// --------------------------------------------------------------------------------------- |
unsigned int ReadADC(unsigned char adc_input) |
{ |
ADMUX = adc_input; |
188c: 87 b9 out 0x07, r24 ; 7 |
ADCSRA |= 0x40; |
188e: 36 9a sbi 0x06, 6 ; 6 |
//Delay_ms(10); |
while ((ADCSRA & 0x10) == 0); |
1890: 34 9b sbis 0x06, 4 ; 6 |
1892: fe cf rjmp .-4 ; 0x1890 <ReadADC+0x4> |
ADCSRA |= 0x10; |
1894: 34 9a sbi 0x06, 4 ; 6 |
return ADCW; // read ad and calc. temp. |
1896: 84 b1 in r24, 0x04 ; 4 |
1898: 95 b1 in r25, 0x05 ; 5 |
189a: 08 95 ret |
0000189c <GetAnalogWerte>: |
} |
void GetAnalogWerte(void) |
{ |
AnalogWerte[0] = ReadADC(0); |
189c: 80 e0 ldi r24, 0x00 ; 0 |
189e: 0e 94 46 0c call 0x188c <ReadADC> |
18a2: 90 93 cb 01 sts 0x01CB, r25 |
18a6: 80 93 ca 01 sts 0x01CA, r24 |
AnalogWerte[1] = ReadADC(1); |
18aa: 81 e0 ldi r24, 0x01 ; 1 |
18ac: 0e 94 46 0c call 0x188c <ReadADC> |
18b0: 90 93 cd 01 sts 0x01CD, r25 |
18b4: 80 93 cc 01 sts 0x01CC, r24 |
AnalogWerte[2] = ReadADC(2); |
18b8: 82 e0 ldi r24, 0x02 ; 2 |
18ba: 0e 94 46 0c call 0x188c <ReadADC> |
18be: 90 93 cf 01 sts 0x01CF, r25 |
18c2: 80 93 ce 01 sts 0x01CE, r24 |
18c6: 08 95 ret |
000018c8 <memchr>: |
18c8: fc 01 movw r30, r24 |
18ca: 41 50 subi r20, 0x01 ; 1 |
18cc: 50 40 sbci r21, 0x00 ; 0 |
18ce: 30 f0 brcs .+12 ; 0x18dc <memchr+0x14> |
18d0: 01 90 ld r0, Z+ |
18d2: 06 16 cp r0, r22 |
18d4: d1 f7 brne .-12 ; 0x18ca <memchr+0x2> |
18d6: 31 97 sbiw r30, 0x01 ; 1 |
18d8: cf 01 movw r24, r30 |
18da: 08 95 ret |
18dc: 88 27 eor r24, r24 |
18de: 99 27 eor r25, r25 |
18e0: 08 95 ret |
000018e2 <fdevopen>: |
18e2: 0f 93 push r16 |
18e4: 1f 93 push r17 |
18e6: cf 93 push r28 |
18e8: df 93 push r29 |
18ea: 8c 01 movw r16, r24 |
18ec: eb 01 movw r28, r22 |
18ee: 00 97 sbiw r24, 0x00 ; 0 |
18f0: 11 f4 brne .+4 ; 0x18f6 <fdevopen+0x14> |
18f2: 67 2b or r22, r23 |
18f4: c1 f1 breq .+112 ; 0x1966 <fdevopen+0x84> |
18f6: 6e e0 ldi r22, 0x0E ; 14 |
18f8: 70 e0 ldi r23, 0x00 ; 0 |
18fa: 81 e0 ldi r24, 0x01 ; 1 |
18fc: 90 e0 ldi r25, 0x00 ; 0 |
18fe: 0e 94 b8 0c call 0x1970 <calloc> |
1902: fc 01 movw r30, r24 |
1904: 89 2b or r24, r25 |
1906: 71 f1 breq .+92 ; 0x1964 <fdevopen+0x82> |
1908: 80 e8 ldi r24, 0x80 ; 128 |
190a: 83 83 std Z+3, r24 ; 0x03 |
190c: 20 97 sbiw r28, 0x00 ; 0 |
190e: 71 f0 breq .+28 ; 0x192c <fdevopen+0x4a> |
1910: d3 87 std Z+11, r29 ; 0x0b |
1912: c2 87 std Z+10, r28 ; 0x0a |
1914: 81 e8 ldi r24, 0x81 ; 129 |
1916: 83 83 std Z+3, r24 ; 0x03 |
1918: 80 91 d0 01 lds r24, 0x01D0 |
191c: 90 91 d1 01 lds r25, 0x01D1 |
1920: 89 2b or r24, r25 |
1922: 21 f4 brne .+8 ; 0x192c <fdevopen+0x4a> |
1924: f0 93 d1 01 sts 0x01D1, r31 |
1928: e0 93 d0 01 sts 0x01D0, r30 |
192c: 01 15 cp r16, r1 |
192e: 11 05 cpc r17, r1 |
1930: c9 f0 breq .+50 ; 0x1964 <fdevopen+0x82> |
1932: 11 87 std Z+9, r17 ; 0x09 |
1934: 00 87 std Z+8, r16 ; 0x08 |
1936: 83 81 ldd r24, Z+3 ; 0x03 |
1938: 82 60 ori r24, 0x02 ; 2 |
193a: 83 83 std Z+3, r24 ; 0x03 |
193c: 80 91 d2 01 lds r24, 0x01D2 |
1940: 90 91 d3 01 lds r25, 0x01D3 |
1944: 89 2b or r24, r25 |
1946: 71 f4 brne .+28 ; 0x1964 <fdevopen+0x82> |
1948: f0 93 d3 01 sts 0x01D3, r31 |
194c: e0 93 d2 01 sts 0x01D2, r30 |
1950: 80 91 d4 01 lds r24, 0x01D4 |
1954: 90 91 d5 01 lds r25, 0x01D5 |
1958: 89 2b or r24, r25 |
195a: 21 f4 brne .+8 ; 0x1964 <fdevopen+0x82> |
195c: f0 93 d5 01 sts 0x01D5, r31 |
1960: e0 93 d4 01 sts 0x01D4, r30 |
1964: cf 01 movw r24, r30 |
1966: df 91 pop r29 |
1968: cf 91 pop r28 |
196a: 1f 91 pop r17 |
196c: 0f 91 pop r16 |
196e: 08 95 ret |
00001970 <calloc>: |
1970: 0f 93 push r16 |
1972: 1f 93 push r17 |
1974: cf 93 push r28 |
1976: df 93 push r29 |
1978: 86 9f mul r24, r22 |
197a: 80 01 movw r16, r0 |
197c: 87 9f mul r24, r23 |
197e: 10 0d add r17, r0 |
1980: 96 9f mul r25, r22 |
1982: 10 0d add r17, r0 |
1984: 11 24 eor r1, r1 |
1986: c8 01 movw r24, r16 |
1988: 0e 94 d4 0c call 0x19a8 <malloc> |
198c: ec 01 movw r28, r24 |
198e: 00 97 sbiw r24, 0x00 ; 0 |
1990: 29 f0 breq .+10 ; 0x199c <calloc+0x2c> |
1992: a8 01 movw r20, r16 |
1994: 60 e0 ldi r22, 0x00 ; 0 |
1996: 70 e0 ldi r23, 0x00 ; 0 |
1998: 0e 94 ca 0d call 0x1b94 <memset> |
199c: ce 01 movw r24, r28 |
199e: df 91 pop r29 |
19a0: cf 91 pop r28 |
19a2: 1f 91 pop r17 |
19a4: 0f 91 pop r16 |
19a6: 08 95 ret |
000019a8 <malloc>: |
19a8: cf 93 push r28 |
19aa: df 93 push r29 |
19ac: ac 01 movw r20, r24 |
19ae: 02 97 sbiw r24, 0x02 ; 2 |
19b0: 10 f4 brcc .+4 ; 0x19b6 <malloc+0xe> |
19b2: 42 e0 ldi r20, 0x02 ; 2 |
19b4: 50 e0 ldi r21, 0x00 ; 0 |
19b6: 20 e0 ldi r18, 0x00 ; 0 |
19b8: 30 e0 ldi r19, 0x00 ; 0 |
19ba: a0 91 d8 01 lds r26, 0x01D8 |
19be: b0 91 d9 01 lds r27, 0x01D9 |
19c2: bd 01 movw r22, r26 |
19c4: f9 01 movw r30, r18 |
19c6: 10 97 sbiw r26, 0x00 ; 0 |
19c8: 09 f4 brne .+2 ; 0x19cc <malloc+0x24> |
19ca: 4c c0 rjmp .+152 ; 0x1a64 <malloc+0xbc> |
19cc: 8d 91 ld r24, X+ |
19ce: 9c 91 ld r25, X |
19d0: 11 97 sbiw r26, 0x01 ; 1 |
19d2: 84 17 cp r24, r20 |
19d4: 95 07 cpc r25, r21 |
19d6: 31 f1 breq .+76 ; 0x1a24 <malloc+0x7c> |
19d8: 48 17 cp r20, r24 |
19da: 59 07 cpc r21, r25 |
19dc: 38 f4 brcc .+14 ; 0x19ec <malloc+0x44> |
19de: 21 15 cp r18, r1 |
19e0: 31 05 cpc r19, r1 |
19e2: 19 f0 breq .+6 ; 0x19ea <malloc+0x42> |
19e4: 82 17 cp r24, r18 |
19e6: 93 07 cpc r25, r19 |
19e8: 08 f4 brcc .+2 ; 0x19ec <malloc+0x44> |
19ea: 9c 01 movw r18, r24 |
19ec: fd 01 movw r30, r26 |
19ee: a2 81 ldd r26, Z+2 ; 0x02 |
19f0: b3 81 ldd r27, Z+3 ; 0x03 |
19f2: 10 97 sbiw r26, 0x00 ; 0 |
19f4: 59 f7 brne .-42 ; 0x19cc <malloc+0x24> |
19f6: 21 15 cp r18, r1 |
19f8: 31 05 cpc r19, r1 |
19fa: a1 f1 breq .+104 ; 0x1a64 <malloc+0xbc> |
19fc: c9 01 movw r24, r18 |
19fe: 84 1b sub r24, r20 |
1a00: 95 0b sbc r25, r21 |
1a02: 04 97 sbiw r24, 0x04 ; 4 |
1a04: 08 f4 brcc .+2 ; 0x1a08 <malloc+0x60> |
1a06: a9 01 movw r20, r18 |
1a08: db 01 movw r26, r22 |
1a0a: e0 e0 ldi r30, 0x00 ; 0 |
1a0c: f0 e0 ldi r31, 0x00 ; 0 |
1a0e: 10 97 sbiw r26, 0x00 ; 0 |
1a10: 49 f1 breq .+82 ; 0x1a64 <malloc+0xbc> |
1a12: 8d 91 ld r24, X+ |
1a14: 9c 91 ld r25, X |
1a16: 11 97 sbiw r26, 0x01 ; 1 |
1a18: 82 17 cp r24, r18 |
1a1a: 93 07 cpc r25, r19 |
1a1c: f9 f4 brne .+62 ; 0x1a5c <malloc+0xb4> |
1a1e: 42 17 cp r20, r18 |
1a20: 53 07 cpc r21, r19 |
1a22: 79 f4 brne .+30 ; 0x1a42 <malloc+0x9a> |
1a24: ed 01 movw r28, r26 |
1a26: 8a 81 ldd r24, Y+2 ; 0x02 |
1a28: 9b 81 ldd r25, Y+3 ; 0x03 |
1a2a: 30 97 sbiw r30, 0x00 ; 0 |
1a2c: 19 f0 breq .+6 ; 0x1a34 <malloc+0x8c> |
1a2e: 93 83 std Z+3, r25 ; 0x03 |
1a30: 82 83 std Z+2, r24 ; 0x02 |
1a32: 04 c0 rjmp .+8 ; 0x1a3c <malloc+0x94> |
1a34: 90 93 d9 01 sts 0x01D9, r25 |
1a38: 80 93 d8 01 sts 0x01D8, r24 |
1a3c: cd 01 movw r24, r26 |
1a3e: 02 96 adiw r24, 0x02 ; 2 |
1a40: 4a c0 rjmp .+148 ; 0x1ad6 <malloc+0x12e> |
1a42: 24 1b sub r18, r20 |
1a44: 35 0b sbc r19, r21 |
1a46: fd 01 movw r30, r26 |
1a48: e2 0f add r30, r18 |
1a4a: f3 1f adc r31, r19 |
1a4c: 41 93 st Z+, r20 |
1a4e: 51 93 st Z+, r21 |
1a50: 22 50 subi r18, 0x02 ; 2 |
1a52: 30 40 sbci r19, 0x00 ; 0 |
1a54: 2d 93 st X+, r18 |
1a56: 3c 93 st X, r19 |
1a58: cf 01 movw r24, r30 |
1a5a: 3d c0 rjmp .+122 ; 0x1ad6 <malloc+0x12e> |
1a5c: fd 01 movw r30, r26 |
1a5e: a2 81 ldd r26, Z+2 ; 0x02 |
1a60: b3 81 ldd r27, Z+3 ; 0x03 |
1a62: d5 cf rjmp .-86 ; 0x1a0e <malloc+0x66> |
1a64: 80 91 d6 01 lds r24, 0x01D6 |
1a68: 90 91 d7 01 lds r25, 0x01D7 |
1a6c: 89 2b or r24, r25 |
1a6e: 41 f4 brne .+16 ; 0x1a80 <malloc+0xd8> |
1a70: 80 91 80 00 lds r24, 0x0080 |
1a74: 90 91 81 00 lds r25, 0x0081 |
1a78: 90 93 d7 01 sts 0x01D7, r25 |
1a7c: 80 93 d6 01 sts 0x01D6, r24 |
1a80: e0 91 7e 00 lds r30, 0x007E |
1a84: f0 91 7f 00 lds r31, 0x007F |
1a88: 30 97 sbiw r30, 0x00 ; 0 |
1a8a: 41 f4 brne .+16 ; 0x1a9c <malloc+0xf4> |
1a8c: ed b7 in r30, 0x3d ; 61 |
1a8e: fe b7 in r31, 0x3e ; 62 |
1a90: 80 91 82 00 lds r24, 0x0082 |
1a94: 90 91 83 00 lds r25, 0x0083 |
1a98: e8 1b sub r30, r24 |
1a9a: f9 0b sbc r31, r25 |
1a9c: a0 91 d6 01 lds r26, 0x01D6 |
1aa0: b0 91 d7 01 lds r27, 0x01D7 |
1aa4: 9f 01 movw r18, r30 |
1aa6: 2a 1b sub r18, r26 |
1aa8: 3b 0b sbc r19, r27 |
1aaa: 24 17 cp r18, r20 |
1aac: 35 07 cpc r19, r21 |
1aae: 88 f0 brcs .+34 ; 0x1ad2 <malloc+0x12a> |
1ab0: ca 01 movw r24, r20 |
1ab2: 02 96 adiw r24, 0x02 ; 2 |
1ab4: 28 17 cp r18, r24 |
1ab6: 39 07 cpc r19, r25 |
1ab8: 60 f0 brcs .+24 ; 0x1ad2 <malloc+0x12a> |
1aba: cd 01 movw r24, r26 |
1abc: 84 0f add r24, r20 |
1abe: 95 1f adc r25, r21 |
1ac0: 02 96 adiw r24, 0x02 ; 2 |
1ac2: 90 93 d7 01 sts 0x01D7, r25 |
1ac6: 80 93 d6 01 sts 0x01D6, r24 |
1aca: 4d 93 st X+, r20 |
1acc: 5d 93 st X+, r21 |
1ace: cd 01 movw r24, r26 |
1ad0: 02 c0 rjmp .+4 ; 0x1ad6 <malloc+0x12e> |
1ad2: 80 e0 ldi r24, 0x00 ; 0 |
1ad4: 90 e0 ldi r25, 0x00 ; 0 |
1ad6: df 91 pop r29 |
1ad8: cf 91 pop r28 |
1ada: 08 95 ret |
00001adc <free>: |
1adc: cf 93 push r28 |
1ade: df 93 push r29 |
1ae0: 00 97 sbiw r24, 0x00 ; 0 |
1ae2: 09 f4 brne .+2 ; 0x1ae6 <free+0xa> |
1ae4: 54 c0 rjmp .+168 ; 0x1b8e <free+0xb2> |
1ae6: dc 01 movw r26, r24 |
1ae8: 12 97 sbiw r26, 0x02 ; 2 |
1aea: ed 01 movw r28, r26 |
1aec: 1b 82 std Y+3, r1 ; 0x03 |
1aee: 1a 82 std Y+2, r1 ; 0x02 |
1af0: 80 91 d8 01 lds r24, 0x01D8 |
1af4: 90 91 d9 01 lds r25, 0x01D9 |
1af8: 00 97 sbiw r24, 0x00 ; 0 |
1afa: 21 f1 breq .+72 ; 0x1b44 <free+0x68> |
1afc: fc 01 movw r30, r24 |
1afe: 40 e0 ldi r20, 0x00 ; 0 |
1b00: 50 e0 ldi r21, 0x00 ; 0 |
1b02: ea 17 cp r30, r26 |
1b04: fb 07 cpc r31, r27 |
1b06: 18 f1 brcs .+70 ; 0x1b4e <free+0x72> |
1b08: ed 01 movw r28, r26 |
1b0a: fb 83 std Y+3, r31 ; 0x03 |
1b0c: ea 83 std Y+2, r30 ; 0x02 |
1b0e: 2d 91 ld r18, X+ |
1b10: 3c 91 ld r19, X |
1b12: 11 97 sbiw r26, 0x01 ; 1 |
1b14: c2 0f add r28, r18 |
1b16: d3 1f adc r29, r19 |
1b18: ce 01 movw r24, r28 |
1b1a: 02 96 adiw r24, 0x02 ; 2 |
1b1c: 8e 17 cp r24, r30 |
1b1e: 9f 07 cpc r25, r31 |
1b20: 71 f4 brne .+28 ; 0x1b3e <free+0x62> |
1b22: 8a 81 ldd r24, Y+2 ; 0x02 |
1b24: 9b 81 ldd r25, Y+3 ; 0x03 |
1b26: 28 0f add r18, r24 |
1b28: 39 1f adc r19, r25 |
1b2a: 2e 5f subi r18, 0xFE ; 254 |
1b2c: 3f 4f sbci r19, 0xFF ; 255 |
1b2e: 11 96 adiw r26, 0x01 ; 1 |
1b30: 3c 93 st X, r19 |
1b32: 2e 93 st -X, r18 |
1b34: 82 81 ldd r24, Z+2 ; 0x02 |
1b36: 93 81 ldd r25, Z+3 ; 0x03 |
1b38: fd 01 movw r30, r26 |
1b3a: 93 83 std Z+3, r25 ; 0x03 |
1b3c: 82 83 std Z+2, r24 ; 0x02 |
1b3e: 41 15 cp r20, r1 |
1b40: 51 05 cpc r21, r1 |
1b42: 59 f4 brne .+22 ; 0x1b5a <free+0x7e> |
1b44: b0 93 d9 01 sts 0x01D9, r27 |
1b48: a0 93 d8 01 sts 0x01D8, r26 |
1b4c: 20 c0 rjmp .+64 ; 0x1b8e <free+0xb2> |
1b4e: af 01 movw r20, r30 |
1b50: 02 80 ldd r0, Z+2 ; 0x02 |
1b52: f3 81 ldd r31, Z+3 ; 0x03 |
1b54: e0 2d mov r30, r0 |
1b56: 30 97 sbiw r30, 0x00 ; 0 |
1b58: a1 f6 brne .-88 ; 0x1b02 <free+0x26> |
1b5a: ea 01 movw r28, r20 |
1b5c: bb 83 std Y+3, r27 ; 0x03 |
1b5e: aa 83 std Y+2, r26 ; 0x02 |
1b60: ca 01 movw r24, r20 |
1b62: 02 96 adiw r24, 0x02 ; 2 |
1b64: 28 81 ld r18, Y |
1b66: 39 81 ldd r19, Y+1 ; 0x01 |
1b68: 82 0f add r24, r18 |
1b6a: 93 1f adc r25, r19 |
1b6c: 8a 17 cp r24, r26 |
1b6e: 9b 07 cpc r25, r27 |
1b70: 71 f4 brne .+28 ; 0x1b8e <free+0xb2> |
1b72: 8d 91 ld r24, X+ |
1b74: 9c 91 ld r25, X |
1b76: 11 97 sbiw r26, 0x01 ; 1 |
1b78: 28 0f add r18, r24 |
1b7a: 39 1f adc r19, r25 |
1b7c: 2e 5f subi r18, 0xFE ; 254 |
1b7e: 3f 4f sbci r19, 0xFF ; 255 |
1b80: 39 83 std Y+1, r19 ; 0x01 |
1b82: 28 83 st Y, r18 |
1b84: fd 01 movw r30, r26 |
1b86: 82 81 ldd r24, Z+2 ; 0x02 |
1b88: 93 81 ldd r25, Z+3 ; 0x03 |
1b8a: 9b 83 std Y+3, r25 ; 0x03 |
1b8c: 8a 83 std Y+2, r24 ; 0x02 |
1b8e: df 91 pop r29 |
1b90: cf 91 pop r28 |
1b92: 08 95 ret |
00001b94 <memset>: |
1b94: dc 01 movw r26, r24 |
1b96: 40 ff sbrs r20, 0 |
1b98: 03 c0 rjmp .+6 ; 0x1ba0 <memset+0xc> |
1b9a: 01 c0 rjmp .+2 ; 0x1b9e <memset+0xa> |
1b9c: 6d 93 st X+, r22 |
1b9e: 6d 93 st X+, r22 |
1ba0: 42 50 subi r20, 0x02 ; 2 |
1ba2: 50 40 sbci r21, 0x00 ; 0 |
1ba4: d8 f7 brcc .-10 ; 0x1b9c <memset+0x8> |
1ba6: 08 95 ret |
00001ba8 <__udivmodsi4>: |
1ba8: a1 e2 ldi r26, 0x21 ; 33 |
1baa: 1a 2e mov r1, r26 |
1bac: aa 1b sub r26, r26 |
1bae: bb 1b sub r27, r27 |
1bb0: fd 01 movw r30, r26 |
1bb2: 0d c0 rjmp .+26 ; 0x1bce <__udivmodsi4_ep> |
00001bb4 <__udivmodsi4_loop>: |
1bb4: aa 1f adc r26, r26 |
1bb6: bb 1f adc r27, r27 |
1bb8: ee 1f adc r30, r30 |
1bba: ff 1f adc r31, r31 |
1bbc: a2 17 cp r26, r18 |
1bbe: b3 07 cpc r27, r19 |
1bc0: e4 07 cpc r30, r20 |
1bc2: f5 07 cpc r31, r21 |
1bc4: 20 f0 brcs .+8 ; 0x1bce <__udivmodsi4_ep> |
1bc6: a2 1b sub r26, r18 |
1bc8: b3 0b sbc r27, r19 |
1bca: e4 0b sbc r30, r20 |
1bcc: f5 0b sbc r31, r21 |
00001bce <__udivmodsi4_ep>: |
1bce: 66 1f adc r22, r22 |
1bd0: 77 1f adc r23, r23 |
1bd2: 88 1f adc r24, r24 |
1bd4: 99 1f adc r25, r25 |
1bd6: 1a 94 dec r1 |
1bd8: 69 f7 brne .-38 ; 0x1bb4 <__udivmodsi4_loop> |
1bda: 60 95 com r22 |
1bdc: 70 95 com r23 |
1bde: 80 95 com r24 |
1be0: 90 95 com r25 |
1be2: 9b 01 movw r18, r22 |
1be4: ac 01 movw r20, r24 |
1be6: bd 01 movw r22, r26 |
1be8: cf 01 movw r24, r30 |
1bea: 08 95 ret |
/tags/V0.37/main.map |
---|
0,0 → 1,764 |
Archive member included because of file (symbol) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o (__udivmodsi4) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
main.o (__do_copy_data) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
main.o (__do_clear_bss) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o (memchr) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o (fdevopen) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (__iob) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (calloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (malloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (memset) |
Allocating common symbols |
Common symbol size file |
SendeBuffer 0x64 uart.o |
Debug_Timer 0x2 main.o |
Debug_Display_Timer |
0x2 main.o |
__brkval 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
DebugIn 0xb main.o |
VersionInfo 0xa main.o |
New_IR_Code 0x1 ir.o |
RxdBuffer 0x64 uart.o |
AnalogWerte 0x6 analog.o |
IR_Code 0x2 ir.o |
KanalVon 0x8 menu.o |
Decodierung_Lauft 0x1 ir.o |
DebugOut 0x1a main.o |
KanalAn 0x8 menu.o |
__flp 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
PollDisplay 0x1 main.o |
__iob 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
Memory Configuration |
Name Origin Length Attributes |
text 0x00000000 0x00020000 xr |
data 0x00800060 0x0000ffa0 rw !x |
eeprom 0x00810000 0x00010000 rw !x |
*default* 0x00000000 0xffffffff |
Linker script and memory map |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
LOAD main.o |
LOAD uart.o |
LOAD lcd.o |
LOAD printf_P.o |
LOAD timer0.o |
LOAD keyboard.o |
LOAD menu.o |
LOAD ir.o |
LOAD analog.o |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libm.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
.hash |
*(.hash) |
.dynsym |
*(.dynsym) |
.dynstr |
*(.dynstr) |
.gnu.version |
*(.gnu.version) |
.gnu.version_d |
*(.gnu.version_d) |
.gnu.version_r |
*(.gnu.version_r) |
.rel.init |
*(.rel.init) |
.rela.init |
*(.rela.init) |
.rel.text |
*(.rel.text) |
*(.rel.text.*) |
*(.rel.gnu.linkonce.t*) |
.rela.text |
*(.rela.text) |
*(.rela.text.*) |
*(.rela.gnu.linkonce.t*) |
.rel.fini |
*(.rel.fini) |
.rela.fini |
*(.rela.fini) |
.rel.rodata |
*(.rel.rodata) |
*(.rel.rodata.*) |
*(.rel.gnu.linkonce.r*) |
.rela.rodata |
*(.rela.rodata) |
*(.rela.rodata.*) |
*(.rela.gnu.linkonce.r*) |
.rel.data |
*(.rel.data) |
*(.rel.data.*) |
*(.rel.gnu.linkonce.d*) |
.rela.data |
*(.rela.data) |
*(.rela.data.*) |
*(.rela.gnu.linkonce.d*) |
.rel.ctors |
*(.rel.ctors) |
.rela.ctors |
*(.rela.ctors) |
.rel.dtors |
*(.rel.dtors) |
.rela.dtors |
*(.rela.dtors) |
.rel.got |
*(.rel.got) |
.rela.got |
*(.rela.got) |
.rel.bss |
*(.rel.bss) |
.rela.bss |
*(.rela.bss) |
.rel.plt |
*(.rel.plt) |
.rela.plt |
*(.rela.plt) |
.text 0x00000000 0x1c18 |
*(.vectors) |
.vectors 0x00000000 0x54 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000000 __vectors |
0x00000000 __vector_default |
0x00000054 __ctors_start = . |
*(.ctors) |
0x00000054 __ctors_end = . |
0x00000054 __dtors_start = . |
*(.dtors) |
0x00000054 __dtors_end = . |
*(.progmem.gcc*) |
*(.progmem*) |
.progmem.data 0x00000054 0x54 main.o |
.progmem.data 0x000000a8 0xc uart.o |
.progmem.data 0x000000b4 0x56 menu.o |
0x0000010a . = ALIGN (0x2) |
*(.init0) |
*(.init1) |
*(.init2) |
.init2 0x0000010a 0xc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.init3) |
*(.init4) |
.init4 0x00000116 0x16 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
0x00000116 __do_copy_data |
.init4 0x0000012c 0x10 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
0x0000012c __do_clear_bss |
*(.init5) |
*(.init6) |
*(.init7) |
*(.init8) |
*(.init9) |
.init9 0x0000013c 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.text) |
.text 0x00000140 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000140 __vector_12 |
0x00000140 __bad_interrupt |
0x00000140 __vector_6 |
0x00000140 __vector_3 |
0x00000140 __vector_17 |
0x00000140 __vector_19 |
0x00000140 __vector_7 |
0x00000140 __vector_5 |
0x00000140 __vector_4 |
0x00000140 __vector_2 |
0x00000140 __vector_8 |
0x00000140 __vector_14 |
0x00000140 __vector_10 |
0x00000140 __vector_16 |
0x00000140 __vector_18 |
0x00000140 __vector_20 |
.text 0x00000144 0x282 main.o |
0x000001b4 Init |
0x00000156 Sekundentakt |
0x000001ca main |
0x00000144 Sekundentakt_Init |
.text 0x000003c6 0x7e6 uart.o |
0x000009f8 WriteProgramData |
0x00000a16 SendeRemoteTasten |
0x000009fa UART_Init |
0x00000430 __vector_13 |
0x0000080a BearbeiteRxDaten |
0x00000abe ClearIntervalle |
0x00000a76 SendIntervalle |
0x000005de AddCRC |
0x00000b04 DatenUebertragung |
0x00000732 Decode64 |
0x000003c6 __vector_15 |
0x0000064a SendOutData |
0x000009dc uart_putchar |
.text 0x00000bac 0x1b2 lcd.o |
0x00000cc4 LCD_Gotoxy |
0x00000c4e my_pput |
0x00000c08 _lcd_write_4bit |
0x00000bcc _short_delay |
0x00000c26 lcd_write_byte |
0x00000bdc _lcd_write_command |
0x00000c58 LCD_Init |
0x00000d48 LCD_Putchar |
0x00000d12 LCD_Write |
0x00000bac _long_delay |
.text 0x00000d5e 0x58a printf_P.o |
0x00000de0 _printf_P |
0x00000dc8 PAD_0 |
0x00000d86 PRINTP |
0x00000d5e PRINT |
0x00000db0 PAD_SP |
.text 0x000012e8 0xd6 timer0.o |
0x0000137c SetDelay |
0x0000138e CheckDelay |
0x000013a4 Delay_ms |
0x000012e8 __vector_9 |
0x00001368 Timer1_Init |
.text 0x000013be 0x136 keyboard.o |
0x000014da GetKeyboard2 |
0x000013be Keyboard_Init |
0x000013d0 GetKeyboard |
.text 0x000014f4 0x206 menu.o |
0x000014f4 Menu |
.text 0x000016fa 0x1b6 ir.o |
0x00001728 __vector_1 |
0x00001758 __vector_11 |
0x000016fa InitIR |
.text 0x000018b0 0x44 analog.o |
0x000018c8 GetAnalogWerte |
0x000018b8 ReadADC |
0x000018b0 ADC_Init |
.text 0x000018f4 0x1a C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
0x000018f4 memchr |
.text 0x0000190e 0x8e C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
0x0000190e fdevopen |
.text 0x0000199c 0x38 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
0x0000199c calloc |
.text 0x000019d4 0x1ec C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x000019d4 malloc |
0x00001b08 free |
.text 0x00001bc0 0x14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
0x00001bc0 memset |
0x00001bd4 . = ALIGN (0x2) |
*(.text.*) |
.text.libgcc 0x00001bd4 0x44 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
0x00001bd4 __udivmodsi4 |
0x00001c18 . = ALIGN (0x2) |
*(.fini9) |
*(.fini8) |
*(.fini7) |
*(.fini6) |
*(.fini5) |
*(.fini4) |
*(.fini3) |
*(.fini2) |
*(.fini1) |
*(.fini0) |
0x00001c18 _etext = . |
.data 0x00800060 0x24 load address 0x00001c18 |
0x00800060 PROVIDE (__data_start, .) |
*(.data) |
.data 0x00800060 0xc main.o |
0x00800065 DisplayZeilen |
0x00800064 SlaveAdresse |
0x00800066 CntDatensaetzeProSekunde |
0x00800062 IntervallDebug |
0x00800060 IntervallDisplay |
.data 0x0080006c 0x5 uart.o |
0x0080006e UebertragungAbgeschlossen |
0x0080006c AnzahlTeilnehmer |
0x0080006d ErwarteAntwort |
.data 0x00800071 0xb menu.o |
0x00800071 Array |
.data 0x0080007c 0x2 ir.o |
0x0080007c LoescheIrCodeTimer |
.data 0x0080007e 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x00800080 __malloc_heap_start |
0x0080007e __malloc_heap_end |
0x00800082 __malloc_margin |
*(.gnu.linkonce.d*) |
0x00800084 . = ALIGN (0x2) |
0x00800084 _edata = . |
0x00800084 PROVIDE (__data_end, .) |
.bss 0x00800084 0x157 |
0x00800084 PROVIDE (__bss_start, .) |
*(.bss) |
.bss 0x00800084 0xe main.o |
0x00800087 DebugGetAnforderung |
0x00800088 Debug_Display_Intervall |
0x00800086 GetVersionAnforderung |
0x0080008d Sekunde |
0x00800085 SendeDummyDaten |
0x0080008e _TastTimer |
0x0080008c Minute |
0x0080008a Debug_Timer_Intervall |
0x00800084 UebertragungUnterbrochen |
0x00800090 _SekTimer |
.bss 0x00800092 0x14 uart.o |
0x0080009d SioTmp |
0x00800098 PC_DebugTimeout |
0x0080009c NeuerDatensatzEmpfangen |
0x0080009a CntCrcError |
0x00800097 TX_DigTransferKanalL |
0x00800094 DisplayBusy |
0x00800092 WaitTXD |
0x00800099 AnzahlEmpfangsBytes |
0x00800095 TX_DigTransferKanalDaten |
0x00800093 AntwortEingetroffen |
0x00800096 TX_DigTransferKanalH |
.bss 0x008000a6 0x3 timer0.o |
0x008000a6 CountMilliseconds |
.bss 0x008000a9 0x7 keyboard.o |
0x008000a9 KeyTimer |
.bss 0x008000b0 0x5 menu.o |
0x008000b0 TestInt |
.bss 0x008000b5 0x6 ir.o |
*(COMMON) |
COMMON 0x008000bb 0x34 main.o |
0x008000bb Debug_Timer |
0x008000bd Debug_Display_Timer |
0x008000bf DebugIn |
0x008000ca VersionInfo |
0x008000d4 DebugOut |
0x008000ee PollDisplay |
COMMON 0x008000ef 0xc8 uart.o |
0x008000ef SendeBuffer |
0x00800153 RxdBuffer |
COMMON 0x008001b7 0x10 menu.o |
0x008001b7 KanalVon |
0x008001bf KanalAn |
COMMON 0x008001c7 0x4 ir.o |
0x008001c7 New_IR_Code |
0x008001c8 IR_Code |
0x008001ca Decodierung_Lauft |
COMMON 0x008001cb 0x6 analog.o |
0x008001cb AnalogWerte |
COMMON 0x008001d1 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
0x008001d1 __iob |
COMMON 0x008001d7 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x008001d7 __brkval |
0x008001d9 __flp |
0x008001db PROVIDE (__bss_end, .) |
0x00001c18 __data_load_start = LOADADDR (.data) |
0x00001c3c __data_load_end = (__data_load_start + SIZEOF (.data)) |
.noinit 0x008001db 0x0 |
0x008001db PROVIDE (__noinit_start, .) |
*(.noinit*) |
0x008001db PROVIDE (__noinit_end, .) |
0x008001db _end = . |
0x008001db PROVIDE (__heap_start, .) |
.eeprom 0x00810000 0x0 |
*(.eeprom*) |
0x00810000 __eeprom_end = . |
.stab 0x00000000 0x36c |
*(.stab) |
.stab 0x00000000 0x36c C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stabstr 0x00000000 0x84 |
*(.stabstr) |
.stabstr 0x00000000 0x84 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stab.excl |
*(.stab.excl) |
.stab.exclstr |
*(.stab.exclstr) |
.stab.index |
*(.stab.index) |
.stab.indexstr |
*(.stab.indexstr) |
.comment |
*(.comment) |
.debug |
*(.debug) |
.line |
*(.line) |
.debug_srcinfo |
*(.debug_srcinfo) |
.debug_sfnames |
*(.debug_sfnames) |
.debug_aranges 0x00000000 0xb4 |
*(.debug_aranges) |
.debug_aranges |
0x00000000 0x14 main.o |
.debug_aranges |
0x00000014 0x14 uart.o |
.debug_aranges |
0x00000028 0x14 lcd.o |
.debug_aranges |
0x0000003c 0x14 printf_P.o |
.debug_aranges |
0x00000050 0x14 timer0.o |
.debug_aranges |
0x00000064 0x14 keyboard.o |
.debug_aranges |
0x00000078 0x14 menu.o |
.debug_aranges |
0x0000008c 0x14 ir.o |
.debug_aranges |
0x000000a0 0x14 analog.o |
.debug_pubnames |
0x00000000 0x701 |
*(.debug_pubnames) |
.debug_pubnames |
0x00000000 0x1e1 main.o |
.debug_pubnames |
0x000001e1 0x240 uart.o |
.debug_pubnames |
0x00000421 0xb7 lcd.o |
.debug_pubnames |
0x000004d8 0x4a printf_P.o |
.debug_pubnames |
0x00000522 0x70 timer0.o |
.debug_pubnames |
0x00000592 0x52 keyboard.o |
.debug_pubnames |
0x000005e4 0x4a menu.o |
.debug_pubnames |
0x0000062e 0x85 ir.o |
.debug_pubnames |
0x000006b3 0x4e analog.o |
.debug_info 0x00000000 0x1a6c |
*(.debug_info) |
.debug_info 0x00000000 0x469 main.o |
.debug_info 0x00000469 0x7ba uart.o |
.debug_info 0x00000c23 0x260 lcd.o |
.debug_info 0x00000e83 0x45d printf_P.o |
.debug_info 0x000012e0 0x1d7 timer0.o |
.debug_info 0x000014b7 0x177 keyboard.o |
.debug_info 0x0000162e 0x1a7 menu.o |
.debug_info 0x000017d5 0x171 ir.o |
.debug_info 0x00001946 0x126 analog.o |
*(.gnu.linkonce.wi.*) |
.debug_abbrev 0x00000000 0x774 |
*(.debug_abbrev) |
.debug_abbrev 0x00000000 0x10c main.o |
.debug_abbrev 0x0000010c 0x178 uart.o |
.debug_abbrev 0x00000284 0xbc lcd.o |
.debug_abbrev 0x00000340 0x132 printf_P.o |
.debug_abbrev 0x00000472 0xc5 timer0.o |
.debug_abbrev 0x00000537 0x87 keyboard.o |
.debug_abbrev 0x000005be 0xb6 menu.o |
.debug_abbrev 0x00000674 0x76 ir.o |
.debug_abbrev 0x000006ea 0x8a analog.o |
.debug_line 0x00000000 0x16a3 |
*(.debug_line) |
.debug_line 0x00000000 0x2aa main.o |
.debug_line 0x000002aa 0x4c4 uart.o |
.debug_line 0x0000076e 0x279 lcd.o |
.debug_line 0x000009e7 0x4e2 printf_P.o |
.debug_line 0x00000ec9 0x180 timer0.o |
.debug_line 0x00001049 0x170 keyboard.o |
.debug_line 0x000011b9 0x19a menu.o |
.debug_line 0x00001353 0x212 ir.o |
.debug_line 0x00001565 0x13e analog.o |
.debug_frame |
*(.debug_frame) |
.debug_str 0x00000000 0x889 |
*(.debug_str) |
.debug_str 0x00000000 0x2e2 main.o |
0x371 (size before relaxing) |
.debug_str 0x000002e2 0x26b uart.o |
0x423 (size before relaxing) |
.debug_str 0x0000054d 0x9a lcd.o |
0x17b (size before relaxing) |
.debug_str 0x000005e7 0xf9 printf_P.o |
0x1bd (size before relaxing) |
.debug_str 0x000006e0 0x6b timer0.o |
0x168 (size before relaxing) |
.debug_str 0x0000074b 0x5e keyboard.o |
0x13f (size before relaxing) |
.debug_str 0x000007a9 0x40 menu.o |
0x15e (size before relaxing) |
.debug_str 0x000007e9 0x6d ir.o |
0x169 (size before relaxing) |
.debug_str 0x00000856 0x33 analog.o |
0x120 (size before relaxing) |
.debug_loc |
*(.debug_loc) |
.debug_macinfo |
*(.debug_macinfo) |
OUTPUT(main.elf elf32-avr) |
Cross Reference Table |
Symbol File |
ADC_Init analog.o |
main.o |
AddCRC uart.o |
AnalogWerte analog.o |
uart.o |
AntwortEingetroffen uart.o |
AnzahlEmpfangsBytes uart.o |
AnzahlTeilnehmer uart.o |
menu.o |
Array menu.o |
BearbeiteRxDaten uart.o |
main.o |
CheckDelay timer0.o |
keyboard.o |
main.o |
ClearIntervalle uart.o |
main.o |
CntCrcError uart.o |
menu.o |
CntDatensaetzeProSekunde main.o |
uart.o |
CountMilliseconds timer0.o |
DatenUebertragung uart.o |
main.o |
DebugGetAnforderung main.o |
DebugIn uart.o |
main.o |
DebugOut uart.o |
main.o |
Debug_Display_Intervall main.o |
Debug_Display_Timer main.o |
Debug_Timer main.o |
Debug_Timer_Intervall main.o |
Decode64 uart.o |
Decodierung_Lauft ir.o |
Delay_ms timer0.o |
main.o |
DisplayBusy uart.o |
timer0.o |
DisplayZeilen main.o |
menu.o |
uart.o |
ErwarteAntwort uart.o |
GetAnalogWerte analog.o |
main.o |
GetKeyboard keyboard.o |
main.o |
GetKeyboard2 keyboard.o |
main.o |
GetVersionAnforderung main.o |
IR_Code ir.o |
timer0.o |
uart.o |
Init main.o |
InitIR ir.o |
main.o |
IntervallDebug main.o |
IntervallDisplay main.o |
KanalAn menu.o |
KanalVon menu.o |
KeyTimer keyboard.o |
Keyboard_Init keyboard.o |
main.o |
LCD_Gotoxy lcd.o |
menu.o |
uart.o |
main.o |
LCD_Init lcd.o |
main.o |
LCD_Putchar lcd.o |
printf_P.o |
LCD_Write lcd.o |
LoescheIrCodeTimer ir.o |
timer0.o |
Menu menu.o |
main.o |
Minute main.o |
NeuerDatensatzEmpfangen uart.o |
New_IR_Code ir.o |
PAD_0 printf_P.o |
PAD_SP printf_P.o |
PC_DebugTimeout uart.o |
PRINT printf_P.o |
PRINTP printf_P.o |
PollDisplay uart.o |
main.o |
ReadADC analog.o |
RxdBuffer uart.o |
Sekunde main.o |
Sekundentakt main.o |
Sekundentakt_Init main.o |
SendIntervalle uart.o |
SendOutData uart.o |
SendeBuffer uart.o |
SendeDummyDaten main.o |
SendeRemoteTasten uart.o |
SetDelay timer0.o |
keyboard.o |
main.o |
SioTmp uart.o |
SlaveAdresse main.o |
menu.o |
uart.o |
TX_DigTransferKanalDaten uart.o |
TX_DigTransferKanalH uart.o |
TX_DigTransferKanalL uart.o |
TestInt menu.o |
Timer1_Init timer0.o |
main.o |
UART_Init uart.o |
main.o |
UebertragungAbgeschlossen uart.o |
UebertragungUnterbrochen main.o |
VersionInfo main.o |
WaitTXD uart.o |
timer0.o |
WriteProgramData uart.o |
_SekTimer main.o |
_TastTimer main.o |
__bad_interrupt C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__brkval C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__bss_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__bss_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__data_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_load_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__do_clear_bss C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__do_copy_data C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__flp C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__init C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__iob C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
__malloc_heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_margin C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__stack C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
main.o |
__udivmodsi4 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o |
__vector_1 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_10 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_11 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_12 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_13 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_15 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_16 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_17 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_18 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_19 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_20 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_3 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_5 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_7 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_8 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_9 timer0.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_default C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vectors C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
_lcd_write_4bit lcd.o |
_lcd_write_command lcd.o |
menu.o |
main.o |
_long_delay lcd.o |
menu.o |
main.o |
_printf_P printf_P.o |
menu.o |
uart.o |
main.o |
_short_delay lcd.o |
calloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
fdevopen C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o |
free C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
lcd_write_byte lcd.o |
main main.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
malloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
memchr C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o |
memset C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
my_pput lcd.o |
uart_putchar uart.o |
/tags/V0.37/main.sym |
---|
0,0 → 1,253 |
00000000 W __heap_end |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 W __vector_default |
00000000 T __vectors |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
00000054 t __c.0 |
00000054 T __ctors_end |
00000054 T __ctors_start |
00000054 T __dtors_end |
00000054 T __dtors_start |
00000069 t __c.1 |
0000007e t __c.2 |
00000093 t __c.3 |
000000a8 t __c.2 |
000000ab t __c.3 |
000000ae t __c.4 |
000000b1 t __c.5 |
000000b4 t __c.3 |
000000c2 t __c.4 |
000000d0 t __c.5 |
000000dc t __c.6 |
000000e1 t __c.7 |
000000ea t __c.8 |
000000f6 t __c.9 |
000000fe t __c.10 |
0000010a W __init |
00000116 T __do_copy_data |
00000122 t .do_copy_data_loop |
00000126 t .do_copy_data_start |
0000012c T __do_clear_bss |
00000134 t .do_clear_bss_loop |
00000136 t .do_clear_bss_start |
00000140 T __bad_interrupt |
00000140 W __vector_10 |
00000140 W __vector_12 |
00000140 W __vector_14 |
00000140 W __vector_16 |
00000140 W __vector_17 |
00000140 W __vector_18 |
00000140 W __vector_19 |
00000140 W __vector_2 |
00000140 W __vector_20 |
00000140 W __vector_3 |
00000140 W __vector_4 |
00000140 W __vector_5 |
00000140 W __vector_6 |
00000140 W __vector_7 |
00000140 W __vector_8 |
00000144 T Sekundentakt_Init |
00000156 T Sekundentakt |
000001b4 T Init |
000001ca T main |
000003c6 T __vector_15 |
00000430 T __vector_13 |
000005de T AddCRC |
0000063c T SendOutData |
00000724 T Decode64 |
000007fc T BearbeiteRxDaten |
0000085f W __stack |
0000097a T uart_putchar |
00000996 T WriteProgramData |
00000998 T UART_Init |
000009b4 T SendeRemoteTasten |
00000a14 T SendIntervalle |
00000a5c T ClearIntervalle |
00000aa2 T DatenUebertragung |
00000b92 T _long_delay |
00000bb2 T _short_delay |
00000bc2 T _lcd_write_command |
00000bee T _lcd_write_4bit |
00000c0c T lcd_write_byte |
00000c34 T my_pput |
00000c3e T LCD_Init |
00000caa T LCD_Gotoxy |
00000cf8 T LCD_Write |
00000d2e T LCD_Putchar |
00000d44 T PRINT |
00000d6c T PRINTP |
00000d96 T PAD_SP |
00000dae T PAD_0 |
00000dc6 T _printf_P |
000012ce T __vector_9 |
0000133c T Timer1_Init |
00001350 T SetDelay |
00001362 T CheckDelay |
00001378 T Delay_ms |
00001392 T Keyboard_Init |
000013a4 T GetKeyboard |
000014ae T GetKeyboard2 |
000014c8 T Menu |
000016ce T InitIR |
000016fc T __vector_1 |
0000172c T __vector_11 |
00001884 T ADC_Init |
0000188c T ReadADC |
0000189c T GetAnalogWerte |
000018c8 T memchr |
000018e2 T fdevopen |
00001970 T calloc |
000019a8 T malloc |
00001adc T free |
00001b94 T memset |
00001ba8 T __udivmodsi4 |
00001bb4 t __udivmodsi4_loop |
00001bce t __udivmodsi4_ep |
00001bec A __data_load_start |
00001bec T _etext |
00001c10 A __data_load_end |
00800060 D __data_start |
00800060 D IntervallDisplay |
00800062 D IntervallDebug |
00800064 D SlaveAdresse |
00800065 D DisplayZeilen |
00800066 D CntDatensaetzeProSekunde |
0080006c D AnzahlTeilnehmer |
0080006d D ErwarteAntwort |
0080006e D UebertragungAbgeschlossen |
0080006f d state.0 |
00800070 d KanalSlave.1 |
00800071 D Array |
0080007b d MaxMenue.1 |
0080007c D LoescheIrCodeTimer |
0080007e D __malloc_heap_end |
00800080 D __malloc_heap_start |
00800082 D __malloc_margin |
00800084 B __bss_start |
00800084 D __data_end |
00800084 D _edata |
00800084 B UebertragungUnterbrochen |
00800085 B SendeDummyDaten |
00800086 B GetVersionAnforderung |
00800087 B DebugGetAnforderung |
00800088 B Debug_Display_Intervall |
0080008a B Debug_Timer_Intervall |
0080008c B Minute |
0080008d B Sekunde |
0080008e B _TastTimer |
00800090 B _SekTimer |
00800092 B AntwortEingetroffen |
00800093 B DisplayBusy |
00800094 B TX_DigTransferKanalDaten |
00800095 B TX_DigTransferKanalH |
00800096 B TX_DigTransferKanalL |
00800097 B PC_DebugTimeout |
00800098 B AnzahlEmpfangsBytes |
00800099 B CntCrcError |
0080009b B NeuerDatensatzEmpfangen |
0080009c B SioTmp |
0080009d b ptr.11 |
0080009f b crc.6 |
008000a1 b crc1.7 |
008000a2 b crc2.8 |
008000a3 b buf_ptr.9 |
008000a4 b UartState.10 |
008000a5 B CountMilliseconds |
008000a7 b cnt_10ms.0 |
008000a8 B KeyTimer |
008000aa b taste1.0 |
008000ab b taste2.1 |
008000ac b taste3.2 |
008000ad b taste4.3 |
008000ae b taste5.4 |
008000af B TestInt |
008000b1 b arr.0 |
008000b3 b MenuePunkt.2 |
008000b4 b Shift.0 |
008000b6 b IR_Code_tmp.1 |
008000b8 b IR_Zaehler.2 |
008000b9 b IRSperrCounter.3 |
008000ba B Debug_Timer |
008000bc B Debug_Display_Timer |
008000be B DebugIn |
008000c9 B VersionInfo |
008000d3 B DebugOut |
008000ed B PollDisplay |
008000ee B SendeBuffer |
00800152 B RxdBuffer |
008001b6 B KanalVon |
008001be B KanalAn |
008001c6 B New_IR_Code |
008001c7 B IR_Code |
008001c9 B Decodierung_Lauft |
008001ca B AnalogWerte |
008001d0 B __iob |
008001d6 B __brkval |
008001d8 B __flp |
008001da B __bss_end |
008001da ? __heap_start |
008001da ? _end |
00810000 ? __eeprom_end |
/tags/V0.37/makefile |
---|
0,0 → 1,386 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega8 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 37 |
#------------------------------------------------------------------- |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
TARGET = BrushLess-Ctrl_V$(HAUPT_VERSION)_$(NEBEN_VERSION) |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c timer0.c analog.c PPM_Decode.c twislave.c BLMC.c |
#printf_P.c |
########################################################################################################## |
# If there is more than one source file, append them above, or modify and |
# uncomment the following: |
#SRC += foo.c bar.c |
# You can also wrap lines by appending a backslash to the end of the line: |
#SRC += baz.c \ |
#xyzzy.c |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -g -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) |
ifeq ($(AVR_CTRL_PLATINE), 1) |
CFLAGS += -DAVR_CTRL_PLATINE=$(AVR_CTRL_PLATINE) |
endif |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
#AVRDUDE_FLAGS += -V -E noreset |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
# $(REMOVE) $(TARGET).eep |
# $(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/tags/V0.37/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/tags/V0.37/timer0.c |
---|
0,0 → 1,59 |
/***************************************************************************** |
*****************************************************************************/ |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile unsigned char Timer0Overflow; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL(SIG_OVERFLOW0) |
{ |
static unsigned char cnt; |
Timer0Overflow++; |
if(!cnt--) |
{ |
cnt = 3; |
CountMilliseconds += 1; |
if(I2C_Timeout) I2C_Timeout--; |
if(PPM_Timeout) PPM_Timeout--; else anz_ppm_werte = 0; |
if(SIO_Timeout) SIO_Timeout--; |
} |
} |
void Timer0_Init(void) |
{ |
TCCR0 = TIMER_TEILER; |
// TCNT0 = -TIMER_RELOAD_VALUE; // reload |
TIM0_START; |
TIMER2_INT_ENABLE; |
} |
unsigned int SetDelay(unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
} |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
} |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
/tags/V0.37/timer0.h |
---|
0,0 → 1,15 |
#if defined (__AVR_ATmega8__) |
#define TIMER_TEILER CK8 |
//#define TIMER_RELOAD_VALUE 125 |
#endif |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char Timer0Overflow; |
void Timer1_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
/tags/V0.37/twislave.c |
---|
0,0 → 1,75 |
/*############################################################################ |
Slaveadr = 0x52 = Vorne, 0x54 = Hinten, 0x56 = Rechts, 0x58 = Links |
############################################################################*/ |
#include <avr/io.h> |
#include <util/twi.h> |
#include "main.h" |
unsigned char I2C_RXBuffer; |
unsigned char Byte_Counter=0; |
//############################################################################ |
//I2C (TWI) Interface Init |
void InitIC2_Slave(uint8_t adr) |
//############################################################################ |
{ |
TWAR = adr + (2*MotorAdresse); // Eigene Adresse setzen |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
//############################################################################ |
//ISR, die bei einem Ereignis auf dem Bus ausgelöst wird. Im Register TWSR befindet |
//sich dann ein Statuscode, anhand dessen die Situation festgestellt werden kann. |
ISR (TWI_vect) |
//############################################################################ |
{ |
switch (TWSR & 0xF8) |
{ |
case SR_SLA_ACK: |
TWCR |= (1<<TWINT); |
Byte_Counter=0; |
return; |
// Daten Empfangen |
case SR_PREV_ACK: |
I2C_RXBuffer = TWDR; |
I2C_Timeout = 500; |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_SLA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_DATA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_2: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_1: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
} |
TWCR =(1<<TWEA) | (1<<TWINT) | (1<<TWEN) | (1<<TWIE); // TWI Reset |
} |
/tags/V0.37/twislave.h |
---|
0,0 → 1,32 |
#ifndef _TWI_SLAVE_H_ |
#define _TWI_SLAVE_H_ |
extern unsigned char I2C_RXBuffer; |
extern unsigned char Byte_Counter; |
extern void InitIC2_Slave (uint8_t adr); |
#define TWI_BUS_ERR_1 0x00 |
#define TWI_BUS_ERR_2 0xF8 |
// Status Slave RX Mode |
#define SR_SLA_ACK 0x60 |
#define SR_LOST_ACK 0x68 |
#define SR_GEN_CALL_ACK 0x70 |
#define GEN_LOST_ACK 0x78 |
#define SR_PREV_ACK 0x80 |
#define SR_PREV_NACK 0x88 |
#define GEN_PREV_ACK 0x90 |
#define GEN_PREV_NACK 0x98 |
#define STOP_CONDITION 0xA0 |
#define REPEATED_START 0xA0 |
// Status Slave TX mode |
#define SW_SLA_ACK 0xA8 |
#define SW_LOST_ACK 0xB0 |
#define SW_DATA_ACK 0xB8 |
#define SW_DATA_NACK 0xC0 |
#define SW_LAST_ACK 0xC8 |
#endif |
/tags/V0.37/uart.c |
---|
0,0 → 1,277 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + (c) 01.2007 Holger Buss |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Keine Garantie auf Fehlerfreiheit |
// + Kommerzielle Nutzung nur mit meiner Zustimmung |
// + Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
// + www.mikrocontroller.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
#define MAX_SENDE_BUFF 100 |
#define MAX_EMPFANGS_BUFF 100 |
unsigned volatile char SIO_Sollwert = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned char MeineSlaveAdresse; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
struct str_DebugOut DebugOut; |
int Debug_Timer; |
SIGNAL(INT_VEC_TX) |
{ |
} |
void SendUart(void) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!(UCSRA & 0x40)) return; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
USR |= (1<TXC); |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
#if X3D_SIO == 1 |
static unsigned char serPacketCounter = 100; |
SioTmp = UDR; |
if(SioTmp == 0xF5) // Startzeichen |
{ |
serPacketCounter = 0; |
} |
else |
{ |
if(++serPacketCounter == MotorAdresse) // (1-4) |
{ |
SIO_Sollwert = SioTmp; |
SIO_Timeout = 200; // werte für 200ms gültig |
} |
else |
{ |
if(serPacketCounter > 100) serPacketCounter = 100; |
} |
} |
#else |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; }; |
if(CrcOkay) // Datensatz schon verarbeitet |
{ |
//NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
uart_putchar(RxdBuffer[2]); |
if (RxdBuffer[2] == 't') // Motortest |
{ Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
SIO_Sollwert = MotorTest[MotorAdresse - 1]; |
SIO_Timeout = 500; // werte für 500ms gültig |
} |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
#endif |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); // serieller Empfangsinterrupt |
// TX-Interrupt Freigabe |
// UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR= (SYSCLK / (BAUD_RATE * 8L) -1 ); |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
Debug_Timer = SetDelay(200); |
// Version beim Start ausgeben (nicht schön, aber geht... ) |
uart_putchar ('\n');uart_putchar ('B');uart_putchar ('L');uart_putchar (':'); |
uart_putchar ('V');uart_putchar (0x30 + VERSION_HAUPTVERSION);uart_putchar ('.');uart_putchar (0x30 + VERSION_NEBENVERSION/10); uart_putchar (0x30 + VERSION_NEBENVERSION%10); |
uart_putchar ('\n');uart_putchar ('A');uart_putchar ('D');uart_putchar ('R'); uart_putchar (':'); uart_putchar (0x30 + MotorAdresse); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen)) // im Singlestep-Betrieb in jedem Schtitt senden |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
Debug_Timer = SetDelay(50); // Sendeintervall |
} |
} |
/tags/V0.37/uart.h |
---|
0,0 → 1,82 |
#ifndef _UART_H |
#define _UART_H |
extern unsigned volatile char SIO_Sollwert; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned char MeineSlaveAdresse; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void SendUart(void); |
extern void DatenUebertragung(void); |
struct str_DebugOut |
{ |
unsigned char Digital[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned int Analog[8]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
//Die Baud_Rate der Seriellen Schnittstelle |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
#if X3D_SIO == 1 |
#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#else |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
#endif |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega8__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/tags/V0.41/BLMC.c |
---|
0,0 → 1,235 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Copyright (c) 12.2007 Holger Buss |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung oder Nutzung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile unsigned char Phase = 0,ShadowTCCR1A = 0; |
volatile unsigned char CompFreigabeTimer = 100; |
volatile unsigned char CompInterruptFreigabe = 0; |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW2) |
//############################################################################ |
{ |
} |
//############################################################################ |
// + Interruptroutine |
// + Wird durch den Analogkomperator ausgelöst |
// + Dadurch wird das Kommutieren erzeugt |
SIGNAL(SIG_COMPARATOR) |
//############################################################################ |
{ |
unsigned char sense = 0; |
do |
{ |
if(SENSE_H) sense = 1; else sense = 0; |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
if(sense) |
{ |
STEUER_C_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_FALLING_INT; |
SENSE_B; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_L; |
} |
break; |
case 1: |
STEUER_C_L; |
if(!sense) |
{ |
STEUER_B_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_H; |
} |
break; |
case 2: |
STEUER_B_H; |
if(sense) |
{ |
STEUER_A_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_L; |
} |
break; |
case 3: |
STEUER_A_L; |
if(!sense) |
{ |
STEUER_C_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_B; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_H; |
} |
break; |
case 4: |
STEUER_C_H; |
if(sense) |
{ |
STEUER_B_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_L; |
} |
break; |
case 5: |
STEUER_B_L; |
if(!sense) |
{ |
STEUER_A_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_RISING_INT; |
Phase = 0; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_H; |
} |
break; |
} |
} |
while((SENSE_L && sense) || (SENSE_H && !sense)); |
ZeitZumAdWandeln = 0; |
} |
//############################################################################ |
// |
void Manuell(void) |
//############################################################################ |
{ |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
STEUER_B_L; |
SENSE_C; |
SENSE_RISING_INT; |
break; |
case 1: |
STEUER_A_H; |
STEUER_C_L; |
SENSE_B; |
SENSE_FALLING_INT; |
break; |
case 2: |
STEUER_B_H; |
STEUER_C_L; |
SENSE_A; |
SENSE_RISING_INT; |
break; |
case 3: |
STEUER_B_H; |
STEUER_A_L; |
SENSE_C; |
SENSE_FALLING_INT; |
break; |
case 4: |
STEUER_C_H; |
STEUER_A_L; |
SENSE_B; |
SENSE_RISING_INT; |
break; |
case 5: |
STEUER_C_H; |
STEUER_B_L; |
SENSE_A; |
SENSE_FALLING_INT; |
break; |
} |
} |
/tags/V0.41/BLMC.h |
---|
0,0 → 1,97 |
/*############################################################################ |
############################################################################*/ |
#ifndef BLMC_H_ |
#define BLMC_H_ |
extern volatile unsigned char Phase; |
extern volatile unsigned char ShadowTCCR1A; |
extern volatile unsigned char CompInterruptFreigabe; |
void Blc(void); |
void Manuell(void); |
// anselm |
/* |
#define COM1A ((0 << COM1A0) | (1 << COM1A1)) // COM1A-> OC1A non inverting mode |
#define COM1B ((0 << COM1B0) | (1 << COM1B1)) // COM1B-> OC1B non inverting mode |
#define COM2 ((0 << COM20) | (1 << COM21)) // COM2-> OC2 non inverting mode |
#ifdef _32KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> fast PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (1 << WGM21) | (1 << CS20)) // WGM20:21-> fast PWM, no prescale |
#endif |
#ifdef _16KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> phase corr, PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (0 << WGM21) | (1 << CS20)) // WGM20:21-> phase corr. PWM, no prescale |
#endif |
#define PWM_C_ON {TCCR1A = COM1A | WGM1 | COM1B; TCCR2 = WGMCS2; |
DDRB = 0x02;} // Steuer_C+ output |
#define PWM_B_ON {TCCR1A = COM1B | WGM1 | COM1A; TCCR2 = WGMCS2; \ |
DDRB = 0x04;} // Steuer_B+ output |
#define PWM_A_ON {TCCR1A = WGM1; TCCR2 = COM2 | WGMCS2; \ |
DDRB = 0x08;} // Steuer_A+ output |
#define PWM_OFF {TCCR1A = WGM1; \ |
TCCR2 = WGMCS2; \ |
PORTB &= ~0x0E; DDRB = 0x0E;} // OC1x & OC2 disconnected, Steuer_X+ output low |
// anselm |
*/ |
#ifdef _32KHZ |
#define PWM_C_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xAD; TCCR2 = 0x69;DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x0D; TCCR2 = 0x49;PORTC &= ~0x0E;} |
#endif |
#ifdef _16KHZ |
// #define PWM_C_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0A;} |
// #define PWM_B_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0C;} |
// #define PWM_A_ON {TCCR1A = 0xA2; TCCR2 = 0x61; DDRB = 0x08;} |
// #define PWM_C_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0A;} else { TCCR1A = 0x81; DDRB = 0x0E;}} |
// #define PWM_B_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0C;} else { TCCR1A = 0x21; DDRB = 0x0E;}} |
// #define PWM_A_ON {TCCR2 = 0x61; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x08;} else { TCCR1A = 0x01; DDRB = 0x0E;}} |
#define PWM_C_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x02;} |
#define PWM_B_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x04;} |
#define PWM_A_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x08;} |
// #define PWM_C_ON {TCCR1A = 0x82; TCCR2 = 0x41; PORTB &= ~0x04; DDRB = 0x0E;} |
// #define PWM_B_ON {TCCR1A = 0x22; TCCR2 = 0x41; PORTB &= ~0x02; DDRB = 0x0E;} |
// #define PWM_A_ON {TCCR1A = 0x02; TCCR2 = 0x61; PORTB &= ~0x06; DDRB = 0x0E;} |
#define PWM_OFF {OCR1A = 0; OCR1B = 0; OCR2 = 0; TCCR1A = 0x01; TCCR2 = 0x41; DDRB = 0x0E; PORTB &= ~0x0E;} |
#endif |
#define STEUER_A_H {PWM_A_ON} |
#define STEUER_B_H {PWM_B_ON} |
#define STEUER_C_H {PWM_C_ON} |
#define STEUER_A_L {PORTD &= ~0x30; PORTD |= 0x08;} |
#define STEUER_B_L {PORTD &= ~0x28; PORTD |= 0x10;} |
#define STEUER_C_L {PORTD &= ~0x18; PORTD |= 0x20;} |
#define STEUER_OFF {PORTD &= ~0x38; PWM_OFF; } |
#define FETS_OFF {PORTD &= ~0x38; PORTB &= ~0x0E; } |
#define SENSE_A ADMUX = 0 | IntRef; |
#define SENSE_B ADMUX = 1 | IntRef; |
#define SENSE_C ADMUX = 2 | IntRef; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
#define ENABLE_SENSE_INT {CompInterruptFreigabe = 1;ACSR |= 0x0A; } |
#define DISABLE_SENSE_INT {CompInterruptFreigabe = 0; ACSR &= ~0x08; } |
#define SENSE_FALLING_INT ACSR &= ~0x01 |
#define SENSE_RISING_INT ACSR |= 0x03 |
#define SENSE_TOGGLE_INT ACSR &= ~0x03 |
#endif //BLMC_H_ |
/tags/V0.41/BL_Ctrl.pnproj |
---|
0,0 → 1,0 |
<Project name="avr_ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="analog.h"></File><File path="analog.c"></File><File path="PPM_Decode.c"></File><File path="PPM_Decode.h"></File><File path="twislave.c"></File><File path="twislave.h"></File><File path="BLMC.c"></File><File path="BLMC.h"></File></Project> |
/tags/V0.41/BL_Ctrl.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="avr_ctrl" x="true"></e></ViewState></pd> |
/tags/V0.41/Hex-Files/BL-Ctrl_V1_0/BootLoader_MEGA8_8MHZ_V0_2.hex |
---|
0,0 → 1,53 |
:101C000011241FBECFE5D4E0DEBFCDBF10E0A0E6BB |
:101C1000B0E0E0E3FFE102C005900D92A036B1070D |
:101C2000D9F710E0A0E6B0E001C01D92A23AB107DA |
:101C3000E1F714C000C008955D9BFECF8CB90895F4 |
:101C40005F9BFECF8CB1992708958DE4F5DF8BE47F |
:101C5000F3DF82E4F1DF8CE4EFDF0895CFE5D4E039 |
:101C6000DEBFCDBFE0E0F0E004917F01992481B7B1 |
:101C7000885081BF90BC80E189B9599A88E18AB9BE |
:101C800086E880BDEF01192D5F9B0BC0113029F450 |
:101C90008CB18A3A49F110E004C08CB18B3109F45F |
:101CA00011E0CE01219684369105C8F00F3F41F036 |
:101CB000002331F0E0916000F091610009950FC0C0 |
:101CC0008AE0BADF8DE0B8DF86E5B6DF80E3B4DF17 |
:101CD0008EE2B2DF82E3B0DF8AE3AEDF05C080E2EE |
:101CE0009EE40197F1F7D0CFB0DFAADF813611F47F |
:101CF00089E51CC1813461F4A3DFE82EFF24FE2CAA |
:101D0000EE249EDF9927E82AF92AF694E794E1C0A9 |
:101D1000823631F489E590DF80E08EDF80E406C111 |
:101D2000823409F070C08CDF8BDFD82E89DF082F5A |
:101D3000B2E6AB2EB0E0BB2E10E0E5010894A11C8A |
:101D4000B11C1D1510F47CDF01C08FEF88831F5F6D |
:101D5000103498F336E7931609F0C9C0063409F039 |
:101D60003CC08FEFE8168BE1F80608F033C0CD2DAC |
:101D7000A70166277727440F551F661F771F6A0143 |
:101D80007B01A2E6B0E011E08D9199272D913327D8 |
:101D9000322F2227822B932B0C01FA01109357002C |
:101DA000E89511244E5F5F4F6F4F7F4FC25061F730 |
:101DB00085E0F60180935700E89507B600FCFDCF5B |
:101DC00081E180935700E8957695679557954795FB |
:101DD0007A017FC080E030DF7CC0053409F079C033 |
:101DE000F7012D2DA2E6B0E0EEBB8F2F99278FBB18 |
:101DF0008D918DBB3196E29AE19AE199FECF215007 |
:101E000099F77F0166C08736B9F51ADF19DFC82F49 |
:101E100017DF863409F5C701AA27BB276C017D01AE |
:101E2000CC0CDD1CEE1CFF1CF60105911491802FDB |
:101E300003DF812F992700DF82E090E0A0E0B0E08F |
:101E4000C80ED91EEA1EFB1EC25071F7F694E79425 |
:101E5000D794C794760149CF853409F046CFEEBABE |
:101E60008F2D99278FBBE09A0894E11CF11C8DB34C |
:101E7000E3DEC150A1F739CF853601F596E7991613 |
:101E800041F580E090E0A0E0B0E023E0FC01209389 |
:101E90005700E89507B600FCFDCF805C9F4FAF4F21 |
:101EA000BF4F8F3F3BE1930730E0A30730E0B3071C |
:101EB00068F381E180935700E8950BC0853459F4AD |
:101EC00088E190E02CE00FB6F894A89581BD0FBE94 |
:101ED00021BD8DE02BC08035E1F38C34D1F3803708 |
:101EE00011F483E523C0843721F486E7A5DE80E082 |
:101EF0001DC0843519F4A4DE982EEBCF8B3109F484 |
:101F0000F3CE8A3A09F4F0CE863521F480E394DEEC |
:101F100082E30CC0833731F487E08EDE83E98CDE08 |
:101F20008EE104C08B3109F4E0CE8FE385DEDDCE97 |
:0400000300001C00DD |
:00000001FF |
/tags/V0.41/Hex-Files/BL-Ctrl_V1_0/Fuses_Mega8_8MHZ_Intern_MIT_Bootloader.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.41/Hex-Files/BL-Ctrl_V1_0/Fuses_Mega8_8MHZ_Intern_OHNE_Bootloader.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.41/Hex-Files/BL-Ctrl_V1_0/SET_BrushLess-Ctrl_V0_41_Adr_1-4_10A.zip |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.41/Hex-Files/BL-Ctrl_V1_0/SET_BrushLess-Ctrl_V0_41_Adr_1-4_6A.zip |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.41/Hex-Files/BL-Ctrl_V1_0/Test_Manuell_BL-Ctrl_V0_32.hex |
---|
0,0 → 1,330 |
:1000000012C0B9C62AC029C022C721C626C025C031 |
:100010000DC650C522C079C320C0CDC21EC01DC0B0 |
:1000200020C7C0C61AC011241FBECFE5D4E0DEBF72 |
:10003000CDBF10E0A0E6B0E0E6E7F4E102C0059035 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92AF39B107E1F736C1D2CF20918300AD |
:1000600080916200821710F4282FAB9A8091810052 |
:1000700090918200893C910560F01BBC1ABC19BCB0 |
:1000800018BC13BCAB9A01979093820080938100B7 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F9CE221 |
:1000E000A92E91E0B92EC12CD12C1092A3004398D7 |
:1000F00085E090E09093840080938300AFDFB6D7D3 |
:1001000088EC90E039D5C12FDD27D0938400C093CF |
:100110008300EE24FF248701EA14FB040C051D056F |
:1001200078F480916700882311F44FD201C0A8D4DD |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E072D9A21ABC |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D10428F489E1A82EBC |
:10017000B12CC12CD12C7AD78091A5008F5F8093B0 |
:10018000A5008091A50066E034D99093A50005D51F |
:10019000D0938400C093830061DF449BBACF82B3C5 |
:1001A00090E8892782BBB5CF80917B0090917C003D |
:1001B000892B09F04EC04091790050917A00411589 |
:1001C000510571F090918E008FEF989FC00111241E |
:1001D00068EC70E01AD9709386006093850041C086 |
:1001E00080919A00882341F120919C0030919D00DC |
:1001F00081E02D32380708F09A01293C310510F0D2 |
:1002000028EC30E02B30310528F4509386004093E1 |
:10021000850026C08CEF90E0289FA001299F500DFB |
:10022000389F500D1124CA01885D994064EB70E03D |
:10023000ECD8CB01039610C0809185009091860088 |
:10024000009729F001979093860080938500AB9AE0 |
:1002500008C080919403992790938600809385002D |
:10026000AB9880918500909186008F3F910539F081 |
:1002700030F08FEF90E0909386008093850080911E |
:100280008500992708958091810090918200909334 |
:1002900084038093830380917F0099279093860342 |
:1002A00080938503809170009091710090938803F2 |
:1002B0008093870380919C0090919D0090938A0386 |
:1002C000809389030895CFE5D4E0DEBFCDBF00E081 |
:1002D00088E084BB85BB8AEB81BB80E882BB8EE073 |
:1002E00087BB81E388BB88B3806C88BBB69B06C0A4 |
:1002F000B79B02C081E007C082E005C0B79B02C087 |
:1003000083E001C084E08093600087D318D47894A0 |
:10031000C0E0D0E0809160009927C817D90709F4A0 |
:10032000979A86E990E028D497988AEF90E024D4B1 |
:100330002196C530D10574F384EF91E01DD4B3DE6E |
:1003400080E528D566D485E690E002D486E690E084 |
:10035000FFD387E690E0FCD3EC018EEF90E0F8D37A |
:100360005C018DEE93E0F4D37C018EEE93E0F0D34C |
:100370006C01CE01F6D38823E1F3979A10928400A2 |
:10038000109283006BDE88E080BF11E017B98AE02D |
:1003900090E0DED3EC0181E090E0909386038093BF |
:1003A000850310929D0010929C00812F8DDEFCDE53 |
:1003B000992790938400809383008091A5008017F3 |
:1003C00051F0109263001092640082E390E0C0D379 |
:1003D000EC010091A5008091830090918400892B0D |
:1003E000C9F41092740010926400C401BAD3882337 |
:1003F000E1F01092A300439881E08093630082B300 |
:10040000877C82BB82E08FBD81E485BD85B3817F1F |
:1004100085BB0BC080916300882319F081E0809335 |
:1004200074008CED95E094D34C0180916300882397 |
:1004300021F0109284001092830010DE80916400FD |
:100440008F5F80936400813009F0B1CF80916300A9 |
:100450008111979AC50185D3882339F182E390E011 |
:1004600077D35C0180917F00482F55272091810030 |
:10047000309182004217530710F48F5F04C0241795 |
:10048000350718F4815080937F0080917F00909110 |
:100490006200893728F0915090936200AB9A05C0B2 |
:1004A0009F3F19F09F5F90936200C7015AD3882342 |
:1004B00019F18AE090E04CD37C01209172003091D8 |
:1004C0007300C901880F991F880F991F820F931F0E |
:1004D000820F931F66E070E098D77093710060936D |
:1004E0007000109273001092720080919A0088231D |
:1004F00019F481E080936100C60133D3882321F091 |
:100500008CED95E025D36C01CE012BD3882331F0FF |
:100510008091700090917100892B29F08091740076 |
:10052000882309F444CF11E0109363001092A300D4 |
:10053000439884E690E00CD3EC018091740088230A |
:1005400009F435CFAB98109274008AE0BDDD979A1C |
:10055000109263008091A50081508093A50081E0F6 |
:1005600090E0909384008093830078DD88B18C7F45 |
:1005700088B91093A30088B18A6088B984E690E0B6 |
:10058000E7D2EC01CE01EDD28823E1F38AE090E0DE |
:10059000909384008093830061DD88EC90E0D8D252 |
:1005A000EC01CE01DED28823E1F382E390E0D0D2E9 |
:1005B0007C0107E0FCCE1F920F920FB60F92112420 |
:1005C0000F900FBE0F901F9018955E9B24C08091D6 |
:1005D00067008823E1F480918F009091900001964C |
:1005E0009093900080938F00FC01E955FD4FE081CE |
:1005F000ED3019F08436910539F410929000109284 |
:100600008F0081E080936700589AECB908951092AA |
:10061000900010928F0008951F93CF93DF93EC0109 |
:1006200010E0662309F460C0A22FBB271297E42FC5 |
:10063000FF27E35FFC4F30813D534F5FE42FFF27DF |
:10064000E35FFC4F50815D534F5FE42FFF27E35F73 |
:10065000FC4F70817D534F5FE42FFF27E35FFC4F1A |
:10066000E081ED534F5F842F9927A817B907E4F174 |
:10067000832F9927880F991F880F991F352F32953F |
:100680003F70382B852F99278F70907054E0880F1A |
:10069000991F5A95E1F7572F56955695582B872F46 |
:1006A00099278370907026E0880F991F2A95E1F7AB |
:1006B0008E2B61506F3FC1F0FE01E10FF11D3083C1 |
:1006C0001F5F61506F3F81F0FE01E10FF11D50830C |
:1006D0001F5F61506F3F41F0FE01E10FF11D80830C |
:1006E0001F5F662309F0A3CFDF91CF911F9108957B |
:1006F000CF93C82F8A3011F48DE0FADF5D9BFECFD7 |
:10070000CCB980E090E0CF9108951F920F920FB680 |
:100710000F9211242F933F934F935F936F937F9387 |
:100720008F939F93AF93BF93CF93DF93EF93FF93F9 |
:100730008CB180938D0040919500443610F010925A |
:10074000960050918D005D3009F064C08091960054 |
:10075000823009F05FC010929600A42FBB27A35FE0 |
:10076000BC4FFD0132978081209191003091920021 |
:10077000281B3109ED0121978881281B3109C90106 |
:100780009F70909392008093910066E09695879574 |
:100790006A95E1F7982F935C909393002F733070D4 |
:1007A000235C209394008081981709F082C088818F |
:1007B000281709F07EC0409387005C9380910F0357 |
:1007C000823549F488E190E02CE00FB6F894A895C2 |
:1007D00081BD0FBE21BD80910F038ADF80910F0381 |
:1007E000843709F066C02091870043E064E088E820 |
:1007F00090E012DF80916000E82FFF27E957FF4F5C |
:10080000808180938E0084EF91E090937A008093B2 |
:1008100079004FC020919600822F99278130910551 |
:10082000F9F0823091051CF4892B21F040C0029729 |
:1008300011F13DC080918D00833239F480918C009C |
:10084000882319F481E08093960080918D00809335 |
:100850000D0381E08093950080918D00992722C03F |
:100860002F5F20939600E42FFF27E35FFC4F8091DA |
:100870008D00808309C0E42FFF27E35FFC4F809148 |
:100880008D008083443620F44F5F4093950002C072 |
:100890001092960020918D0080919100909192008D |
:1008A000820F911D909392008093910002C010924C |
:1008B0009600FF91EF91DF91CF91BF91AF919F9102 |
:1008C0008F917F916F915F914F913F912F910F90F9 |
:1008D0000FBE0F901F901895AC01A0E0B0E09D01F5 |
:1008E000A817B90748F4E7EAF2E08191280F311D13 |
:1008F0001196A417B507C8F33F70FD01E955FD4FE8 |
:10090000C90176E0969587957A95E1F7835C8083B7 |
:100910001196FD01E955FD4F2F733070822F835CD6 |
:100920008083A855BD4F8DE08C9310926700809115 |
:10093000A7028CB908951F93CF93DF93382FEA0154 |
:10094000722F10E083E28093A7026093A802309395 |
:10095000A902A3E0B0E0772309F458C0772311F48B |
:10096000972F07C0FE01E10FF11D1F5F90817150AD |
:1009700011F4472F0EC0FE01E10FF11D1F5F4081F2 |
:10098000715039F0FE01E10FF11D1F5F6081715060 |
:1009900001C0672FFD01E955FD4F892F869586958A |
:1009A000835C80831196FD01E955FD4F892F9927BE |
:1009B0008370907024E0880F991F2A95E1F75527DE |
:1009C0009A0194E0369527959A95E1F7822B835CFE |
:1009D00080831196FD01E955FD4F4F705070440F13 |
:1009E000551F440F551F862F992726E0969587950A |
:1009F0002A95E1F7842B835C80831196FD01E955EC |
:100A0000FD4F6F73635C60831196A5CFCD0164DFEA |
:100A1000DF91CF911F910895089588E18AB9599A7D |
:100A2000579A80E189B960E070E088E793E084D369 |
:100A300088EC90E08DD090930C0380930B038AE0B8 |
:100A400057DE82E455DE8CE453DE8AE351DE86E530 |
:100A50004FDE80E34DDE8EE24BDE83E349DE82E350 |
:100A600047DE8AE045DE81E443DE84E441DE82E560 |
:100A70003FDE8AE33DDE80916000805D39DE0895CF |
:100A800080910B0390910C036CD0882391F080919E |
:100A90006700882371F022E241E753E06091A602EB |
:100AA00084E449DF82E390E053D090930C03809379 |
:100AB0000B0308951F920F920FB60F9211248F937C |
:100AC0009F93809193038F5F80939303809199000C |
:100AD0008150809399008F3F59F583E0809399006E |
:100AE0008091970090919800019690939800809340 |
:100AF000970080917B0090917C00009729F00197EE |
:100B000090937C0080937B0080919A00882329F049 |
:100B100080919A00815080939A0080917900909101 |
:100B20007A00009729F0019790937A0080937900DA |
:100B30009F918F910F900FBE0F901F90189582E09C |
:100B400083BF89B7816089BF89B7806489BF0895F1 |
:100B50002091970030919800280F391FC901019703 |
:100B600008952091970030919800821B930B892F54 |
:100B70009927807899270895CF93DF93E9DFEC01D7 |
:100B8000CE01EFDF8823E1F3DF91CF91089586EA6C |
:100B900086B987E087B9369A089527B196E097B964 |
:100BA00010BE83ED86B9349A97B9369A349BFECF3E |
:100BB00027B944B155B1440F551F440F551F493C47 |
:100BC000510510F048EC50E02091810030918200F6 |
:100BD000C90163E0880F991F6A95E1F7821B930BA7 |
:100BE000840F951F23E0969587952A95E1F79093BA |
:100BF00082008093810020918000332728173907D5 |
:100C000020F4809181008093800016B888E080BF36 |
:100C100008958EB5806C8EBD8EB580648EBD89B70B |
:100C2000806289BF89B7846089BF08951F920F923F |
:100C30000FB60F9211248F9380919B008F5F80934A |
:100C40009B008F910F900FBE0F901F9018951F92D1 |
:100C50000F920FB60F9211242F933F938F939F9370 |
:100C60000EB406FE0FC010929B0086B597B5909308 |
:100C70009F0080939E008EB58F7B8EBD84E680930F |
:100C80009A0070C08EB580648EBD26B537B5809150 |
:100C90009E0090919F00281B390B80919B00992703 |
:100CA000982F8827990F280F391F689414F83695C4 |
:100CB00027951694E1F73093A1002093A0002851C6 |
:100CC000314030F488E191E09093A1008093A0003E |
:100CD0002091A0003091A100285131403093A10013 |
:100CE0002093A00080919C0090919D008217930713 |
:100CF00030F480919C0090919D0001960CC08091F1 |
:100D00009C0090919D002817390748F480919C0021 |
:100D100090919D00019790939D0080939C0020915D |
:100D20009C0030919D00C901880F991F880F991F61 |
:100D3000880F991F821B930B2091A0003091A10076 |
:100D4000820F931F23E0969587952A95E1F790935C |
:100D5000A1008093A00090939D0080939C0081E06F |
:100D6000809361009F918F913F912F910F900FBEC3 |
:100D70000F901F9018951F920F920FB60F9211248B |
:100D80008F938AB78F7B8ABF8F910F900FBE0F9082 |
:100D90001F90189590916000990F980F92B985EC6B |
:100DA00086BF08951F920F920FB60F9211248F9352 |
:100DB0009F9381B19927887F907080389105E9F0E1 |
:100DC0008138910534F40097B1F18036910579F0BE |
:100DD00035C0883B9105D9F0893B910524F4883AC8 |
:100DE0009105A9F02BC0883F910511F127C086B766 |
:100DF000806886BF1092A20023C083B180939403C1 |
:100E000084EF91E090937C0080937B000EC09091E2 |
:100E1000A200992339F480917F0083B99F5F90935A |
:100E2000A20003C08091620083B986B7806807C0C2 |
:100E300086B7806986BF86B7806986BF85EC86BF26 |
:100E40009F918F910F900FBE0F901F9018951F923A |
:100E50000F920FB60F9211240F900FBE0F901F909C |
:100E600018951F920F920FB60F9211241F932F9374 |
:100E70003F934F935F936F937F938F939F93AF9322 |
:100E8000BF93CF93EF93FF93459B02C011E001C046 |
:100E900010E08091A50099278230910509F450C097 |
:100EA000833091052CF4009779F0019739F1BFC098 |
:100EB0008430910509F478C0843091050CF45AC04F |
:100EC000059709F48BC0B3C082EA8FBD81E685BD6A |
:100ED00088E087BB112369F082B3877E82BB959A35 |
:100EE000C1E0C4BD80916100811157DE4098C7B94F |
:100EF0001BC082B3877D82BB949A99C082B3877EE0 |
:100F000082BB959A1123B1F482EA8FBD81E485BD3D |
:100F10008CE087BB81E084BD8091610081113DDE62 |
:100F200017B988B1836088B98091A5008F5F8093DD |
:100F3000A5006DC082EA8FBD81E685BD88E076C0E0 |
:100F400082EA8FBD81E485BD8CE087BB112369F007 |
:100F500082B38F7C82BB939A81E084BD80916100D3 |
:100F600081111BDE82E087B932C082B3877E82BBEB |
:100F7000959A5DC082B38F7C82BB939A112371F4E2 |
:100F800082EA8FBD81E485BD8AE087BBC1E0C4BD34 |
:100F900080916100811101DEC7B9C3CF82EA8FBDA4 |
:100FA00081E485BD8CE042C082EA8FBD81E485BDCD |
:100FB0008AE087BB112369F082B3877D82BB949A54 |
:100FC00081E084BD809161008111E7DD17B8409810 |
:100FD000ABCF82B38F7C82BB939A29C082B3877DCB |
:100FE00082BB949A1123E9F482EA8FBD81E685BD24 |
:100FF00088E087BB81E084BD809161008111CDDDF7 |
:1010000082E087B988B1836088B91093A500809188 |
:101010007200909173000196909373008093720018 |
:1010200006C082EA8FBD81E485BD8AE087BB459911 |
:1010300003C0112309F028CF459B03C0112309F4F5 |
:1010400023CF10926100FF91EF91CF91BF91AF91AB |
:101050009F918F917F916F915F914F913F912F91D0 |
:101060001F910F900FBE0F901F9018958091A500B3 |
:1010700099278230910551F1833091052CF4009726 |
:1010800069F00197B9F0089584309105E1F1843059 |
:1010900091055CF1059709F443C0089582EA8FBD7C |
:1010A00081E685BD88E087BB82B3877D82BB949A49 |
:1010B00082E034C082EA8FBD81E685BD88E087BBCF |
:1010C00082B3877E82BB959A81E01AC082EA8FBD87 |
:1010D00081E485BD8CE087BB82B3877E82BB959A15 |
:1010E00017B888B1836088B9089582EA8FBD81E41A |
:1010F00085BD8CE087BB82B38F7C82BB939A82E0F4 |
:1011000087B94098089582EA8FBD81E485BD8AE061 |
:1011100087BB82B38F7C82BB939A81E087B9E1CF92 |
:1011200082EA8FBD81E485BD8AE087BB82B3877D7B |
:1011300082BB949A17B8E5CF0F931F93CF93DF9399 |
:101140008C01EB01009711F4672BB9F16EE070E0B0 |
:1011500081E090E037D0FC01892B71F180E8838336 |
:10116000209771F0D387C28781E8838380919503AC |
:1011700090919603892B21F4F0939603E0939503C5 |
:1011800001151105C9F0118700878381826083836F |
:101190008091970390919803892B71F4F0939803B1 |
:1011A000E09397038091990390919A03892B21F4FE |
:1011B000F0939A03E0939903CF01DF91CF911F91B0 |
:1011C0000F9108950F931F93CF93DF93869F800114 |
:1011D000879F100D969F100D1124C8010DD0EC01B2 |
:1011E000009721F0A80160E070E0FCD0CE01DF9113 |
:1011F000CF911F910F910895CF93DF93AC01029788 |
:1012000010F442E050E020E030E0A0919D03B09166 |
:101210009E03BD01F901109709F44CC08D919C917A |
:1012200011978417950731F14817590738F421159C |
:10123000310519F08217930708F49C01FD01A28182 |
:10124000B381109759F721153105A1F1C901841B0C |
:10125000950B049708F4A901DB01E0E0F0E010979A |
:1012600049F18D919C91119782179307F9F44217D8 |
:10127000530779F4ED018A819B81309719F09383AC |
:10128000828304C090939E0380939D03CD010296B8 |
:101290004AC0241B350BFD01E20FF31F419351930C |
:1012A000225030402D933C93CF013DC0FD01A281DF |
:1012B000B381D5CF80919B0390919C03892B41F4FE |
:1012C00080916B0090916C0090939C0380939B03A2 |
:1012D000E0916900F0916A00309741F4EDB7FEB7F4 |
:1012E00080916D0090916E00E81BF90BA0919B031B |
:1012F000B0919C039F012A1B3B0B2417350788F0F4 |
:10130000CA0102962817390760F0CD01840F951F96 |
:10131000029690939C0380939B034D935D93CD0124 |
:1013200002C080E090E0DF91CF910895CF93DF93EA |
:10133000009709F454C0DC011297ED011B821A8258 |
:1013400080919D0390919E03009721F1FC0140E064 |
:1013500050E0EA17FB0718F1ED01FB83EA832D91BA |
:101360003C911197C20FD31FCE0102968E179F0793 |
:1013700071F48A819B81280F391F2E5F3F4F119690 |
:101380003C932E9382819381FD0193838283411547 |
:10139000510559F4B0939E03A0939D0320C0AF0163 |
:1013A0000280F381E02D3097A1F6EA01BB83AA8386 |
:1013B000CA01029628813981820F931F8A179B07E1 |
:1013C00071F48D919C911197280F391F2E5F3F4F1B |
:1013D00039832883FD01828193819B838A83DF91F6 |
:1013E000CF910895DC0101C06D9341505040E0F76A |
:1013F0000895991B79E004C0991F961708F0961B71 |
:10140000881F7A95C9F780950895AA1BBB1B51E1E7 |
:1014100007C0AA1FBB1FA617B70710F0A61BB70B64 |
:10142000881F991F5A95A9F780959095BC01CD0109 |
:101430000895A1E21A2EAA1BBB1BFD010DC0AA1F15 |
:10144000BB1FEE1FFF1FA217B307E407F50720F02D |
:10145000A21BB30BE40BF50B661F771F881F991FA8 |
:101460001A9469F760957095809590959B01AC01F1 |
:06147000BD01CF0108954B |
:101476000101FF01010A00016400009F0320000032 |
:00000001FF |
/tags/V0.41/Hex-Files/BL-Ctrl_V1_0/Test_Schub_BrushLess-Ctrl_V0_32.hex |
---|
0,0 → 1,333 |
:1000000012C0D3C62AC029C03CC73BC626C025C0E3 |
:1000100027C66AC522C093C320C0E7C21EC01DC048 |
:100020003AC7DAC61AC011241FBECFE5D4E0DEBF3E |
:10003000CDBF10E0A0E6B0E0EAEAF4E102C005902E |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92AF39B107E1F731C1D2CF20918300B2 |
:1000600080916200821710F4282FAB9A8091810052 |
:1000700090918200893C910560F01BBC1ABC19BCB0 |
:1000800018BC13BCAB9A01979093820080938100B7 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C1092A3004398E9 |
:1000F00085E090E09093840080938300AFDFD0D7B9 |
:1001000088EC90E053D5C12FDD27D0938400C093B5 |
:100110008300EE24FF248701EA14FB040C051D056F |
:1001200078F480916700882311F469D201C0C2D4A9 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E08CD9A21AA2 |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F099D78091DF |
:10017000A5008F5F8093A5008091A50066E053D90C |
:100180009093A50024D5D0938400C093830066DFAC |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089580917B0090917C00892B09F08D |
:1001C00043C04091790050917A004115510571F07A |
:1001D00090918E008FEF989FC001112468EC70E021 |
:1001E0002ED9709386006093850036C080919A0066 |
:1001F000882341F120919C0030919D0081E02D32B7 |
:10020000380708F09A01293C310510F028EC30E05D |
:100210002B30310528F450938600409385001BC095 |
:100220008CEF90E0289FA001299F500D389F500D22 |
:100230001124CA01885D994064EB70E000D9CB01BC |
:10024000039605C0AB9A08C08091940399279093B8 |
:10025000860080938500AB98809185009091860000 |
:100260008F3F910539F030F08FEF90E0909386004A |
:100270008093850080918500992708958091810061 |
:1002800090918200909384038093830380917F00F8 |
:1002900099279093860380938503809170009091B5 |
:1002A0007100909388038093870380919C009091C4 |
:1002B0009D0090938A03809389030895CFE5D4E04D |
:1002C000DEBFCDBFCC2488E084BB85BB8AEB81BB7D |
:1002D00080E882BB8EE087BB81E388BB88B3806CFB |
:1002E00088BBB69B06C0B79B02C081E007C082E016 |
:1002F00005C0B79B02C083E001C084E0809360002A |
:10030000A6D337D47894C0E0D0E0809160009927DC |
:10031000C817D90709F4979A86E990E047D49798C7 |
:100320008AEF90E043D42196C530D10574F3C5E03F |
:10033000D0E084EF91E03AD4B6DE80E545D583D4B1 |
:1003400085E690E01FD486E690E01CD487E690E036 |
:1003500019D48C018EEF90E015D44C018DEE93E012 |
:1003600011D47C018EEE93E00DD45C01C80113D44E |
:100370008823E1F3979A10928400109283006EDE36 |
:1003800088E080BF81E087B98AE090E0FBD38C01F0 |
:1003900081E090E0909386038093850310929D0006 |
:1003A00010929C008091A5008C1551F01092630072 |
:1003B0001092640082E390E0E5D38C01C090A50028 |
:1003C0008091830090918400892BC9F4109274006D |
:1003D00010926400C301DFD38823E1F01092A300E0 |
:1003E000439881E08093630082B3877C82BB82E084 |
:1003F0008FBD81E485BD85B3817F85BB0BC08091B6 |
:100400006300882319F081E0809374008CED95E0FF |
:10041000B9D33C0123DE809164008F5F8093640038 |
:10042000813009F0BFCF809163008111979AC40198 |
:10043000B2D3882339F182E390E0A4D34C018091B8 |
:100440007F00482F5527209181003091820042176C |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937F0080917F0090916200893728F00F |
:10047000915090936200AB9A05C09F3F19F09F5F27 |
:1004800090936200C70187D3882319F18AE090E036 |
:1004900079D37C012091720030917300C901880FDB |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E0C5D770937100609370001092730064 |
:1004C0001092720080919A00882319F481E0809341 |
:1004D0006100C50160D3882379F18CED95E052D39A |
:1004E0005C01C230D105A9F0C330D10534F42097A6 |
:1004F00051F0C130D10551F01DC0C330D10561F0BC |
:10050000249791F017C082E390E008C082E890E061 |
:1005100005C08CE390E002C08CE890E090938400EA |
:1005200080938300219608C086E990E09093840030 |
:1005300080938300C0E0D0E0C8012DD3882331F040 |
:100540008091700090917100892B29F08091740046 |
:10055000882309F427CF21E0D22ED0926300109295 |
:10056000A300439884E690E00DD38C018091740041 |
:10057000882309F417CFAB98109274008AE0A4DDA9 |
:10058000979A109263008091A50081508093A500F6 |
:1005900081E090E090938400809383005FDD88B1D8 |
:1005A0008C7F88B9D092A30088B18A6088B984E62C |
:1005B00090E0E8D28C01C801EED28823E1F38AE012 |
:1005C00090E0909384008093830048DD88EC90E075 |
:1005D000D9D28C01C801DFD28823E1F382E390E015 |
:1005E000D1D27C0197E0C92EDDCE1F920F920FB6BB |
:1005F0000F9211240F900FBE0F901F9018955E9BC5 |
:1006000024C0809167008823E1F480918F0090914D |
:10061000900001969093900080938F00FC01E95523 |
:10062000FD4FE081ED3019F08436910539F41092D8 |
:10063000900010928F0081E080936700589AECB987 |
:1006400008951092900010928F0008951F93CF93F9 |
:10065000DF93EC0110E0662309F460C0A22FBB27F2 |
:100660001297E42FFF27E35FFC4F30813D534F5F2C |
:10067000E42FFF27E35FFC4F50815D534F5FE42F72 |
:10068000FF27E35FFC4F70817D534F5FE42FFF270F |
:10069000E35FFC4FE081ED534F5F842F9927A8174C |
:1006A000B907E4F1832F9927880F991F880F991FA5 |
:1006B000352F32953F70382B852F99278F7090708A |
:1006C00054E0880F991F5A95E1F7572F5695569584 |
:1006D000582B872F99278370907026E0880F991FD9 |
:1006E0002A95E1F78E2B61506F3FC1F0FE01E10FBB |
:1006F000F11D30831F5F61506F3F81F0FE01E10FFC |
:10070000F11D50831F5F61506F3F41F0FE01E10F0B |
:10071000F11D80831F5F662309F0A3CFDF91CF9186 |
:100720001F910895CF93C82F8A3011F48DE0FADF1E |
:100730005D9BFECFCCB980E090E0CF9108951F92F1 |
:100740000F920FB60F9211242F933F934F935F9305 |
:100750006F937F938F939F93AF93BF93CF93DF93C9 |
:10076000EF93FF938CB180938D00409195004436B8 |
:1007700010F01092960050918D005D3009F064C029 |
:1007800080919600823009F05FC010929600A42FED |
:10079000BB27A35FBC4FFD01329780812091910060 |
:1007A00030919200281B3109ED0121978881281B87 |
:1007B0003109C9019F70909392008093910066E087 |
:1007C000969587956A95E1F7982F935C909393009F |
:1007D0002F733070235C209394008081981709F068 |
:1007E00082C08881281709F07EC0409387005C93FF |
:1007F00080910F03823549F488E190E02CE00FB638 |
:10080000F894A89581BD0FBE21BD80910F038ADFAA |
:1008100080910F03843709F066C02091870043E080 |
:1008200064E088E890E012DF80916000E82FFF2705 |
:10083000E957FF4F808180938E0084EF91E0909381 |
:100840007A00809379004FC020919600822F9927DB |
:1008500081309105F9F0823091051CF4892B21F04B |
:1008600040C0029711F13DC080918D00833239F470 |
:1008700080918C00882319F481E080939600809108 |
:100880008D0080930D0381E08093950080918D0011 |
:10089000992722C02F5F20939600E42FFF27E35F64 |
:1008A000FC4F80918D00808309C0E42FFF27E35F18 |
:1008B000FC4F80918D008083443620F44F5F40933D |
:1008C000950002C01092960020918D0080919100B9 |
:1008D00090919200820F911D9093920080939100CD |
:1008E00002C010929600FF91EF91DF91CF91BF91DE |
:1008F000AF919F918F917F916F915F914F913F91B8 |
:100900002F910F900FBE0F901F901895AC01A0E093 |
:10091000B0E09D01A817B90748F4E7EAF2E0819139 |
:10092000280F311D1196A417B507C8F33F70FD01BC |
:10093000E955FD4FC90176E0969587957A95E1F7DF |
:10094000835C80831196FD01E955FD4F2F73307054 |
:10095000822F835C8083A855BD4F8DE08C931092CD |
:1009600067008091A7028CB908951F93CF93DF93FE |
:10097000382FEA01722F10E083E28093A702609380 |
:10098000A8023093A902A3E0B0E0772309F458C08D |
:10099000772311F4972F07C0FE01E10FF11D1F5FB0 |
:1009A0009081715011F4472F0EC0FE01E10FF11D2F |
:1009B0001F5F4081715039F0FE01E10FF11D1F5F93 |
:1009C0006081715001C0672FFD01E955FD4F892FEE |
:1009D00086958695835C80831196FD01E955FD4FD0 |
:1009E000892F99278370907024E0880F991F2A958A |
:1009F000E1F755279A0194E0369527959A95E1F706 |
:100A0000822B835C80831196FD01E955FD4F4F7069 |
:100A10005070440F551F440F551F862F992726E00D |
:100A2000969587952A95E1F7842B835C80831196B0 |
:100A3000FD01E955FD4F6F73635C60831196A5CF8F |
:100A4000CD0164DFDF91CF911F910895089588E172 |
:100A50008AB9599A579A80E189B960E070E082E9D1 |
:100A600093E084D388EC90E08DD090930C03809336 |
:100A70000B038AE057DE82E455DE8CE453DE8AE322 |
:100A800051DE86E54FDE80E34DDE8EE24BDE83E312 |
:100A900049DE82E347DE8AE045DE81E443DE84E42A |
:100AA00041DE82E53FDE8AE33DDE80916000805DCD |
:100AB00039DE089580910B0390910C036CD088234C |
:100AC00091F080916700882371F022E241E753E0C2 |
:100AD0006091A60284E449DF82E390E053D09093D2 |
:100AE0000C0380930B0308951F920F920FB60F9281 |
:100AF00011248F939F93809193038F5F809393032F |
:100B0000809199008150809399008F3F59F583E03F |
:100B1000809399008091970090919800019690930E |
:100B200098008093970080917B0090917C000097C3 |
:100B300029F0019790937C0080937B0080919A002C |
:100B4000882329F080919A00815080939A008091A7 |
:100B5000790090917A00009729F0019790937A009C |
:100B6000809379009F918F910F900FBE0F901F90EF |
:100B7000189582E083BF89B7816089BF89B7806497 |
:100B800089BF08952091970030919800280F391F50 |
:100B9000C901019708952091970030919800821B18 |
:100BA000930B892F9927807899270895CF93DF9306 |
:100BB000E9DFEC01CE01EFDF8823E1F3DF91CF9194 |
:100BC000089586EA86B987E087B9369A089527B1ED |
:100BD00096E097B910BE83ED86B9349A97B9369AE4 |
:100BE000349BFECF27B944B155B1440F551F440F74 |
:100BF000551F493C510510F048EC50E02091810010 |
:100C000030918200C90163E0880F991F6A95E1F76E |
:100C1000821B930B840F951F23E0969587952A9549 |
:100C2000E1F7909382008093810020918000332728 |
:100C30002817390720F4809181008093800016B82E |
:100C400088E080BF08958EB5806C8EBD8EB58064BF |
:100C50008EBD89B7806289BF89B7846089BF0895D6 |
:100C60001F920F920FB60F9211248F9380919B00C9 |
:100C70008F5F80939B008F910F900FBE0F901F90FE |
:100C800018951F920F920FB60F9211242F933F9336 |
:100C90008F939F930EB406FE0FC010929B0086B5F3 |
:100CA00097B590939F0080939E008EB58F7B8EBDED |
:100CB00084E680939A0070C08EB580648EBD26B5A0 |
:100CC00037B580919E0090919F00281B390B809131 |
:100CD0009B009927982F8827990F280F391F689410 |
:100CE00014F8369527951694E1F73093A1002093D8 |
:100CF000A0002851314030F488E191E09093A100A8 |
:100D00008093A0002091A0003091A1002851314093 |
:100D10003093A1002093A00080919C0090919D00B1 |
:100D20008217930730F480919C0090919D0001966A |
:100D30000CC080919C0090919D002817390748F4C1 |
:100D400080919C0090919D00019790939D008093CD |
:100D50009C0020919C0030919D00C901880F991F33 |
:100D6000880F991F880F991F821B930B2091A00059 |
:100D70003091A100820F931F23E0969587952A95C5 |
:100D8000E1F79093A1008093A00090939D00809341 |
:100D90009C0081E0809361009F918F913F912F9102 |
:100DA0000F900FBE0F901F9018951F920F920FB6C5 |
:100DB0000F9211248F938AB78F7B8ABF8F910F90E8 |
:100DC0000FBE0F901F90189590916000990F980F8B |
:100DD00092B985EC86BF08951F920F920FB60F92BD |
:100DE00011248F939F9381B19927887F90708038C9 |
:100DF0009105E9F08138910534F40097B1F180361E |
:100E0000910579F035C0883B9105D9F0893B910572 |
:100E100024F4883A9105A9F02BC0883F910511F17F |
:100E200027C086B7806886BF1092A20023C083B116 |
:100E30008093940384EF91E090937C0080937B00F7 |
:100E40000EC09091A200992339F480917F0083B95C |
:100E50009F5F9093A20003C08091620083B986B720 |
:100E6000806807C086B7806986BF86B7806986BFFD |
:100E700085EC86BF9F918F910F900FBE0F901F90B2 |
:100E800018951F920F920FB60F9211240F900FBE5C |
:100E90000F901F9018951F920F920FB60F9211246A |
:100EA0001F932F933F934F935F936F937F938F93F2 |
:100EB0009F93AF93BF93CF93EF93FF93459B02C054 |
:100EC00011E001C010E08091A500992782309105C2 |
:100ED00009F450C0833091052CF4009779F0019704 |
:100EE00039F1BFC08430910509F478C08430910590 |
:100EF0000CF45AC0059709F48BC0B3C082EA8FBDC9 |
:100F000081E685BD88E087BB112369F082B3877EC7 |
:100F100082BB959AC1E0C4BD80916100811157DE0A |
:100F20004098C7B91BC082B3877D82BB949A99C091 |
:100F300082B3877E82BB959A1123B1F482EA8FBD7A |
:100F400081E485BD8CE087BB81E084BD8091610038 |
:100F500081113DDE17B988B1836088B98091A50001 |
:100F60008F5F8093A5006DC082EA8FBD81E685BD4D |
:100F700088E076C082EA8FBD81E485BD8CE087BBC6 |
:100F8000112369F082B38F7C82BB939A81E084BD88 |
:100F90008091610081111BDE82E087B932C082B38B |
:100FA000877E82BB959A5DC082B38F7C82BB939A09 |
:100FB000112371F482EA8FBD81E485BD8AE087BB8D |
:100FC000C1E0C4BD80916100811101DEC7B9C3CF0A |
:100FD00082EA8FBD81E485BD8CE042C082EA8FBD8C |
:100FE00081E485BD8AE087BB112369F082B3877DE8 |
:100FF00082BB949A81E084BD809161008111E7DD1C |
:1010000017B84098ABCF82B38F7C82BB939A29C02C |
:1010100082B3877D82BB949A1123E9F482EA8FBD63 |
:1010200081E685BD88E087BB81E084BD8091610059 |
:101030008111CDDD82E087B988B1836088B91093D2 |
:10104000A5008091720090917300019690937300B7 |
:101050008093720006C082EA8FBD81E485BD8AE07C |
:1010600087BB459903C0112309F028CF459B03C0D6 |
:10107000112309F423CF10926100FF91EF91CF91DA |
:10108000BF91AF919F918F917F916F915F914F91A0 |
:101090003F912F911F910F900FBE0F901F901895A9 |
:1010A0008091A50099278230910551F183309105F7 |
:1010B0002CF4009769F00197B9F0089584309105F8 |
:1010C000E1F1843091055CF1059709F443C008957E |
:1010D00082EA8FBD81E685BD88E087BB82B3877DCC |
:1010E00082BB949A82E034C082EA8FBD81E685BDDE |
:1010F00088E087BB82B3877E82BB959A81E01AC065 |
:1011000082EA8FBD81E485BD8CE087BB82B3877E98 |
:1011100082BB959A17B888B1836088B9089582EA2E |
:101120008FBD81E485BD8CE087BB82B38F7C82BBA1 |
:10113000939A82E087B94098089582EA8FBD81E44E |
:1011400085BD8AE087BB82B38F7C82BB939A81E0A6 |
:1011500087B9E1CF82EA8FBD81E485BD8AE087BB94 |
:1011600082B3877D82BB949A17B8E5CF0F931F9304 |
:10117000CF93DF938C01EB01009711F4672BB9F14A |
:101180006EE070E081E090E037D0FC01892B71F1D6 |
:1011900080E88383209771F0D387C28781E88383B7 |
:1011A0008091950390919603892B21F4F0939603F7 |
:1011B000E093950301151105C9F01187008783811C |
:1011C000826083838091970390919803892B71F4B7 |
:1011D000F0939803E09397038091990390919A0379 |
:1011E000892B21F4F0939A03E0939903CF01DF91C7 |
:1011F000CF911F910F9108950F931F93CF93DF937A |
:10120000869F8001879F100D969F100D1124C801A5 |
:101210000DD0EC01009721F0A80160E070E0FCD057 |
:10122000CE01DF91CF911F910F910895CF93DF935E |
:10123000AC01029710F442E050E020E030E0A091D1 |
:101240009D03B0919E03BD01F901109709F44CC0B4 |
:101250008D919C9111978417950731F14817590783 |
:1012600038F42115310519F08217930708F49C0111 |
:10127000FD01A281B381109759F721153105A1F124 |
:10128000C901841B950B049708F4A901DB01E0E078 |
:10129000F0E0109749F18D919C9111978217930777 |
:1012A000F9F44217530779F4ED018A819B81309755 |
:1012B00019F09383828304C090939E0380939D03CF |
:1012C000CD0102964AC0241B350BFD01E20FF31F2E |
:1012D00041935193225030402D933C93CF013DC018 |
:1012E000FD01A281B381D5CF80919B0390919C0396 |
:1012F000892B41F480916B0090916C0090939C033A |
:1013000080939B03E0916900F0916A00309741F46B |
:10131000EDB7FEB780916D0090916E00E81BF90B60 |
:10132000A0919B03B0919C039F012A1B3B0B2417A8 |
:10133000350788F0CA0102962817390760F0CD01F9 |
:10134000840F951F029690939C0380939B034D936B |
:101350005D93CD0102C080E090E0DF91CF910895D0 |
:10136000CF93DF93009709F454C0DC011297ED018D |
:101370001B821A8280919D0390919E03009721F118 |
:10138000FC0140E050E0EA17FB0718F1ED01FB8398 |
:10139000EA832D913C911197C20FD31FCE01029683 |
:1013A0008E179F0771F48A819B81280F391F2E5F4A |
:1013B0003F4F11963C932E9382819381FD0193833D |
:1013C00082834115510559F4B0939E03A0939D0368 |
:1013D00020C0AF010280F381E02D3097A1F6EA0131 |
:1013E000BB83AA83CA01029628813981820F931F89 |
:1013F0008A179B0771F48D919C911197280F391FC3 |
:101400002E5F3F4F39832883FD01828193819B8327 |
:101410008A83DF91CF910895DC0101C06D93415023 |
:101420005040E0F70895991B79E004C0991F961782 |
:1014300008F0961B881F7A95C9F780950895AA1B16 |
:10144000BB1B51E107C0AA1FBB1FA617B70710F0AF |
:10145000A61BB70B881F991F5A95A9F780959095E1 |
:10146000BC01CD010895A1E21A2EAA1BBB1BFD01F0 |
:101470000DC0AA1FBB1FEE1FFF1FA217B307E40773 |
:10148000F50720F0A21BB30BE40BF50B661F771FCB |
:10149000881F991F1A9469F76095709580959095AB |
:0A14A0009B01AC01BD01CF010895CE |
:1014AA000101FF01010A00016400009F03200000FE |
:00000001FF |
/tags/V0.41/Hex-Files/BL-Ctrl_V1_1_and_V1_2/BootLoader_MEGA8_8MHZ_V0_2.hex |
---|
0,0 → 1,53 |
:101C000011241FBECFE5D4E0DEBFCDBF10E0A0E6BB |
:101C1000B0E0E0E3FFE102C005900D92A036B1070D |
:101C2000D9F710E0A0E6B0E001C01D92A23AB107DA |
:101C3000E1F714C000C008955D9BFECF8CB90895F4 |
:101C40005F9BFECF8CB1992708958DE4F5DF8BE47F |
:101C5000F3DF82E4F1DF8CE4EFDF0895CFE5D4E039 |
:101C6000DEBFCDBFE0E0F0E004917F01992481B7B1 |
:101C7000885081BF90BC80E189B9599A88E18AB9BE |
:101C800086E880BDEF01192D5F9B0BC0113029F450 |
:101C90008CB18A3A49F110E004C08CB18B3109F45F |
:101CA00011E0CE01219684369105C8F00F3F41F036 |
:101CB000002331F0E0916000F091610009950FC0C0 |
:101CC0008AE0BADF8DE0B8DF86E5B6DF80E3B4DF17 |
:101CD0008EE2B2DF82E3B0DF8AE3AEDF05C080E2EE |
:101CE0009EE40197F1F7D0CFB0DFAADF813611F47F |
:101CF00089E51CC1813461F4A3DFE82EFF24FE2CAA |
:101D0000EE249EDF9927E82AF92AF694E794E1C0A9 |
:101D1000823631F489E590DF80E08EDF80E406C111 |
:101D2000823409F070C08CDF8BDFD82E89DF082F5A |
:101D3000B2E6AB2EB0E0BB2E10E0E5010894A11C8A |
:101D4000B11C1D1510F47CDF01C08FEF88831F5F6D |
:101D5000103498F336E7931609F0C9C0063409F039 |
:101D60003CC08FEFE8168BE1F80608F033C0CD2DAC |
:101D7000A70166277727440F551F661F771F6A0143 |
:101D80007B01A2E6B0E011E08D9199272D913327D8 |
:101D9000322F2227822B932B0C01FA01109357002C |
:101DA000E89511244E5F5F4F6F4F7F4FC25061F730 |
:101DB00085E0F60180935700E89507B600FCFDCF5B |
:101DC00081E180935700E8957695679557954795FB |
:101DD0007A017FC080E030DF7CC0053409F079C033 |
:101DE000F7012D2DA2E6B0E0EEBB8F2F99278FBB18 |
:101DF0008D918DBB3196E29AE19AE199FECF215007 |
:101E000099F77F0166C08736B9F51ADF19DFC82F49 |
:101E100017DF863409F5C701AA27BB276C017D01AE |
:101E2000CC0CDD1CEE1CFF1CF60105911491802FDB |
:101E300003DF812F992700DF82E090E0A0E0B0E08F |
:101E4000C80ED91EEA1EFB1EC25071F7F694E79425 |
:101E5000D794C794760149CF853409F046CFEEBABE |
:101E60008F2D99278FBBE09A0894E11CF11C8DB34C |
:101E7000E3DEC150A1F739CF853601F596E7991613 |
:101E800041F580E090E0A0E0B0E023E0FC01209389 |
:101E90005700E89507B600FCFDCF805C9F4FAF4F21 |
:101EA000BF4F8F3F3BE1930730E0A30730E0B3071C |
:101EB00068F381E180935700E8950BC0853459F4AD |
:101EC00088E190E02CE00FB6F894A89581BD0FBE94 |
:101ED00021BD8DE02BC08035E1F38C34D1F3803708 |
:101EE00011F483E523C0843721F486E7A5DE80E082 |
:101EF0001DC0843519F4A4DE982EEBCF8B3109F484 |
:101F0000F3CE8A3A09F4F0CE863521F480E394DEEC |
:101F100082E30CC0833731F487E08EDE83E98CDE08 |
:101F20008EE104C08B3109F4E0CE8FE385DEDDCE97 |
:0400000300001C00DD |
:00000001FF |
/tags/V0.41/Hex-Files/BL-Ctrl_V1_1_and_V1_2/BrushLess-Ctrl_MEGA8_V0_41_10A.hex |
---|
0,0 → 1,449 |
:1000000012C064CA2AC029C0CDCAC3C926C025C02F |
:10001000AFC9BEC822C0D7C620C02BC61EC01DC0D7 |
:10002000CBCA6BCA1AC011241FBECFE5D4E0DEBF15 |
:10003000CDBF10E0A0E6B0E0EEEDFBE102C0059020 |
:100040000D92A637B107D9F713E0A6E7B0E001C0DB |
:100050001D92AC39B107E1F73AC4D2CF40918A0082 |
:1000600080916300841710F4482FAB9A2091880088 |
:1000700030918900293C3105C8F01BBC1ABC19BC61 |
:1000800018BC13BC82B3877C82BBAB9A80918C0373 |
:1000900090918D03019690938D0380938C03215052 |
:1000A000304030938900209388000895842F992749 |
:1000B0009BBD8ABD99BD88BD43BD089580918800D0 |
:1000C00090918900909381038093800380918600B2 |
:1000D0009927909383038093820380917700909176 |
:1000E000780090938503809384038091A40090917D |
:1000F000A500909387038093860383B599279093F7 |
:1001000089038093880308951BBC1ABC19BC18BCD2 |
:1001100013BC91E09FBD81E485BD8EE087BB88B3B1 |
:10012000817F88BB9EBD089592B7980F82B7891BC7 |
:1001300087FDFCCF0895CF93C82F7894C150CF3F4F |
:1001400049F0AB9A8CE291E088D8AB988CE291E0D0 |
:1001500084D8F4CF88EE93E080D8CF910895AF9201 |
:10016000BF92CF92DF92EF92FF920F931F93CF93A4 |
:10017000DF93C82F8CE2A82E81E0B82EC12CD12CA1 |
:100180001092AB00439885E090E090938B008093B1 |
:100190008A0064DF14DB8CE291E04BD89093B002CC |
:1001A0008093AF0211C0B9D88091880090918900E6 |
:1001B0008937910548F082B3877C82BB1BBC1ABC8F |
:1001C00019BC18BC13BD34C08091AF029091B0022D |
:1001D00039D8182F882339F3DD27D0938B00C093AB |
:1001E0008A00EE24FF248701EA14FB040C051D0598 |
:1001F00078F480916D00882311F445D501C0AED705 |
:1002000084E692DF0894E11CF11C011D111DECCF66 |
:1002100055DF83D88091880090918900CD97B0F008 |
:1002200082B3877C82BB1BBC1ABC19BC18BC13BC34 |
:1002300081E08FBD81E485BD8EE087BB88B3817F7F |
:1002400088BB8AE078DF80E090E032C0C601B5016B |
:100250002FE030E040E050E0A0DCA21AB30AC40A6C |
:10026000D50A0894A108B108C108D10889E1A816E7 |
:10027000B104C104D10418F481E090E019C09FDA00 |
:100280008091AD008F5F8093AD008091AD0066E0FE |
:1002900064DC9093AD00F4D7D0938B00C0938A00B8 |
:1002A000DDDE449B9ECF82B390E8892782BB99CF45 |
:1002B000DF91CF911F910F91FF90EF90DF90CF9042 |
:1002C000BF90AF900895CF93DF93EC0121978FEF0C |
:1002D000CF3FD807B9F021D88091B1029091B202F6 |
:1002E00088589F4F2091880030918900821793078A |
:1002F00068F782B3877C82BB88B3817F88BB81E04B |
:1003000090E002C080E090E0DF91CF9108950197E6 |
:100310002FEF8F3F9207D9F780E090E008959F92EA |
:10032000AF92BF92CF92DF92EF92FF920F931F9303 |
:10033000CF93DF93CDB7DEB725970FB6F894DEBF26 |
:100340000FBECDBF5E010894A11CB11CD501E8E62B |
:10035000F0E085E001900D928150E1F7C82ED82E93 |
:1003600002E3902EAB9880916100F501E80FF11D3A |
:100370008081282F33278CE291E0289FA001299FBC |
:10038000500D389F500D1124CA0167D7C092AB00A1 |
:100390004398F8948AE00AD582B3877C82BB1BBC61 |
:1003A0001ABC19BC18BC13BC81E08FBD81E485BDAB |
:1003B0008EE087BB88B3817F88BB1092870082E381 |
:1003C00090E081DF8091870099279093B20280931B |
:1003D000B10210928900109288008CB1803249F5E8 |
:1003E0001FEFE12EF12EB8E29B2E8FE5DFD425C062 |
:1003F000A4E0CA2E84E3DAD482B3877C82BB88B3BC |
:10040000817F88BB4EC0F5E0CF2E85E3CFD482B389 |
:10041000877C82BB88B3817F88BB7AC0E6E0CE2E22 |
:1004200086E3C4D482B3877C82BB88B3817F88BBD8 |
:10043000A8C078EEE72E73E0F72E10928900109294 |
:10044000880000E010E00E151F0558F5939A81E032 |
:1004500090E039DF82B3877C82BB88B3817F88BB21 |
:1004600085E090E054DFC39A81E090E02CDF82B316 |
:10047000877C82BB88B3817F88BB8091B1029091D9 |
:10048000B202890D911D2091880030918900821758 |
:10049000930708F4ADCF85E090E039DF0F5F1F4F81 |
:1004A000D2CF80E197E233DF10928900109288006A |
:1004B00000E010E00E151F0558F5949A81E090E0D9 |
:1004C00002DF82B3877C82BB88B3817F88BB85E0F3 |
:1004D00090E01DDFC29A81E090E0F5DE82B3877C78 |
:1004E00082BB88B3817F88BB8091B1029091B202B8 |
:1004F000890D911D20918800309189008217930702 |
:1005000008F481CF85E090E002DF0F5F1F4FD2CF6C |
:10051000109289001092880080E197E2F8DE00E0F6 |
:1005200010E00E151F0558F5959A81E090E0CBDE9E |
:1005300082B3877C82BB88B3817F88BB85E090E0F3 |
:10054000E6DEC19A81E090E0BEDE82B3877C82BBAA |
:1005500088B3817F88BB8091B1029091B202890DEE |
:10056000911D20918800309189008217930708F42B |
:1005700055CF85E090E0CBDE0F5F1F4FD2CFCC2070 |
:1005800019F08C2DD8DDFDCF8091760087B982B32C |
:10059000877C82BB88B3817F88BB949A959A10929E |
:1005A00089001092880008E710E0C39A81E090E08B |
:1005B000AEDE80E090E09DD6C3971CF051E0D52AD6 |
:1005C00002C08EEFD82218BA8CE291E0A0DE015072 |
:1005D000104017FFEACF82B3877C82BB88B3817F4C |
:1005E00088BB939A959A04E810E0C29A81E090E063 |
:1005F0008EDE81E090E07DD6C3971CF0E2E0DE2A3B |
:1006000002C0FDEFDF2218BA8CE291E080DE0150DB |
:10061000104017FFEACF82B3877C82BB88B3817F0B |
:1006200088BB939A949A0EE610E0C19A81E090E01C |
:100630006EDE82E090E05DD6C3971CF044E0D42AE1 |
:1006400002C05BEFD52218BA8AE491E060DE015067 |
:10065000104017FFEACF82B3877C82BB88B3817FCB |
:1006600088BB939A08E710E0C29A81E090E04FDEE1 |
:1006700080E090E03ED6813891051CF087EFD822CB |
:1006800002C0E8E0DE2A18BA8AE491E040DE0150B8 |
:10069000104017FFE9CF959A04E810E0C29A81E074 |
:1006A00090E035DE82E090E024D6813891051CF0A0 |
:1006B000FFEDDF2202C040E2D42A18BA88E691E0BA |
:1006C00026DE0150104017FFE9CF82B3877C82BB42 |
:1006D00088B3817F88BB82B3877C82BB88B3817FEC |
:1006E00088BB949A0EE610E0C19A81E090E00FDE9C |
:1006F00081E090E0FED5813891051CF05FEED522B7 |
:1007000002C080E1D82A18BA88E691E000DE0150E4 |
:10071000104017FFE9CF82B3877C82BB88B3817F0B |
:1007200088BB789480916100A80EB11CF5012081EE |
:1007300084E090E0821B91092CE231E0829FA001CD |
:10074000839F500D929F500D1124CA0186D58D2D87 |
:10075000992780FD04C061E0C62E81E41DC081FDA3 |
:1007600004C052E0C52E82E417C082FD04C043E0FD |
:10077000C42E83E411C083FD04C034E0C32E81E69F |
:100780000BC084FD04C025E0C22E82E605C085FDB5 |
:1007900007C096E0C92E83E68CB98C2DCCDCFDCF4A |
:1007A0008C2DC9DC8EE202D325960FB6F894DEBFFD |
:1007B0000FBECDBFDF91CF911F910F91FF90EF90B2 |
:1007C000DF90CF90BF90AF909F900895809182006E |
:1007D00090918300892B09F05BC04091800050917B |
:1007E00081004115510599F0909195008FEF989FE8 |
:1007F000C001112468EC70E0BCD970938D00609347 |
:100800008C001092600089B78F7D89BF32C08091C3 |
:10081000A100853180F181E0809360002091A400E7 |
:100820003091A50081E02D32380708F09A01293C6B |
:10083000310510F028EC30E02B30310528F45093CE |
:100840008D0040938C0015C08CEF90E0289FA00194 |
:10085000299F500D389F500D1124CA01885D994081 |
:1008600064EB70E086D9CB01039690938D00809362 |
:100870008C00AB981AC080918C0090918D000097ED |
:1008800029F0019790938D0080938C00AB9A0DC056 |
:1008900080919103992790938D0080938C00109202 |
:1008A0006000AB9889B78F7D89BF80918C00909153 |
:1008B0008D008F3F910539F030F08FEF90E09093ED |
:1008C0008D0080938C0080918C0099270895CFE54E |
:1008D000D4E0DEBFCDBFDD2488E084BB85BB8AE3E6 |
:1008E00081BBD2BA8EE087BB81E388BB88B3806CC2 |
:1008F00088BB83EF91E0C29797FFFDCFB69B06C000 |
:10090000B79B02C081E007C082E005C0B79B02C070 |
:1009100083E001C084E0809361008BE08093AE00AF |
:10092000879B06C08CE08093AE0080EC80937600BD |
:100930008AEB81BBD0D374D47894E6DB80E5D5D53F |
:100940000AD585E690E075D486E690E072D487E615 |
:1009500090E06FD49093B0028093AF028EEF90E05E |
:1009600068D47C018DEE93E064D48C018EEE93E02C |
:1009700060D403C02BDF882339F48091AF029091BB |
:10098000B00260D48823B1F38091AE008C3010F4B3 |
:10099000979A01C0979810928B0010928A005EDBA4 |
:1009A00088E080BF81E087B98AE090E042D49093EC |
:1009B000B0028093AF0281E090E090938303809334 |
:1009C00082031092A5001092A40000DF882309F48E |
:1009D000A6DC81E388BBFADE992790938B00809395 |
:1009E0008A008091AD008D1569F01092640010921C |
:1009F00065008AEF90E01DD49093B0028093AF021F |
:100A0000D090AD00C0918A00D0918B002097F9F46E |
:100A100010927B0010926500C50114D4882311F157 |
:100A20001092AB00439891E09093640082B3877C6E |
:100A300082BBDBBDCABDD9BDC8BD13BC9FBD81E4AF |
:100A400085BD8EE087BB88B3817F88BB0BC080915A |
:100A50006400882319F081E080937B008CED95E0A1 |
:100A6000E8D35C0180916400882321F010928B0010 |
:100A700010928A00F3DA809165008F5F80936500A1 |
:100A8000813009F0A8CF80916400882341F08091E3 |
:100A9000AE008C3010F4979A01C097983ED4C701ED |
:100AA000D1D38823A9F182E390E0C3D37C01809164 |
:100AB0008600482F552720918800309189004217E1 |
:100AC000530710F48F5F04C02417350718F48150C2 |
:100AD00080938600293C310548F080916300982F6F |
:100AE000929596959770891B8093630080918600FC |
:100AF00090916300893738F0992319F091509093C1 |
:100B00006300AB9A05C09F3F19F09F5F909363000D |
:100B1000C80198D3882399F08AE090E08AD38C01A9 |
:100B20008091790090917A0090937800809377007B |
:100B300010927A001092790081E080936200809197 |
:100B4000AF029091B0027ED3882331F0809177007C |
:100B500090917800892B29F080917B00882309F4FB |
:100B60003ACFC1E0C09364001092AB00439884E692 |
:100B700090E05FD39093B0028093AF0280917B00AE |
:100B8000882309F428CFAB981092870010927B003D |
:100B90008AE0E5DA882309F465C08091AE008C30E4 |
:100BA00010F4979A01C09798109264008091AD005C |
:100BB00081508093AD0081E090E090938B00809312 |
:100BC0008A004CDA88B18C7F88B981E08093AB00D1 |
:100BD00088B18A6088B984E190E02BD39093B00209 |
:100BE0008093AF028091AF029091B0022BD3882303 |
:100BF000C9F38FE090E090938B0080938A002EDA07 |
:100C00008CE291E016D39093B0028093AF021BC0A8 |
:100C10008091880090918900CD97A8F082B3877C5D |
:100C200082BB1BBC1ABC19BC18BC23BD11E01FBD84 |
:100C300081E485BD8EE087BB88B3817F88BB8AE075 |
:100C40007ADA10937B008091AF029091B002FAD2D1 |
:100C5000282F8823E9F282E390E0EBD28C0187E031 |
:100C6000D82EB9CEB3DD882309F4B5CEC0937B006E |
:100C7000B2CE1F920F920FB60F9211240F900FBE9B |
:100C80000F901F9018955E9B24C080916D00882363 |
:100C9000E1F48091960090919700019690939700CF |
:100CA00080939600FC01EC54FD4FE081ED3019F08B |
:100CB0008436910539F4109297001092960081E0E5 |
:100CC00080936D00589AECB9089510929700109295 |
:100CD000960008951F93CF93DF93EC0110E06623F5 |
:100CE00009F460C0A22FBB271297E42FFF27E65E0E |
:100CF000FC4F30813D534F5FE42FFF27E65EFC4FF2 |
:100D000050815D534F5FE42FFF27E65EFC4F7081FB |
:100D10007D534F5FE42FFF27E65EFC4FE081ED53EC |
:100D20004F5F842F9927A817B907E4F1832F9927DC |
:100D3000880F991F880F991F352F32953F70382BD8 |
:100D4000852F99278F70907054E0880F991F5A95BE |
:100D5000E1F7572F56955695582B872F9927837073 |
:100D6000907026E0880F991F2A95E1F78E2B61502D |
:100D70006F3FC1F0FE01E10FF11D30831F5F615035 |
:100D80006F3F81F0FE01E10FF11D50831F5F615045 |
:100D90006F3F41F0FE01E10FF11D80831F5F66236D |
:100DA00009F0A3CFDF91CF911F910895CF93C82F62 |
:100DB0008A3011F48DE0FADF5D9BFECFCCB980E084 |
:100DC00090E0CF9108951F920F920FB60F921124C9 |
:100DD0002F933F934F935F936F937F938F939F9343 |
:100DE000AF93BF93CF93DF93EF93FF938CB1809337 |
:100DF000940040919C00443610F010929D00509158 |
:100E000094005D3009F064C080919D00823009F04B |
:100E10005FC010929D00A42FBB27A65EBC4FFD01B2 |
:100E2000329780812091980030919900281B3109D8 |
:100E3000ED0121978881281B3109C9019F7090938A |
:100E400099008093980066E0969587956A95E1F7FA |
:100E5000982F935C90939A002F733070235C2093AB |
:100E60009B008081981709F082C08881281709F0BB |
:100E70007EC040938E005C9380911C03823549F4C0 |
:100E800088E190E02CE00FB6F894A89581BD0FBEE4 |
:100E900021BD80911C038ADF80911C03843709F0F7 |
:100EA00066C020918E0043E064E08FE890E012DF9E |
:100EB00080916100E82FFF27E257FF4F80818093E8 |
:100EC000950084EF91E090938100809380004FC063 |
:100ED00020919D00822F992781309105F9F0823071 |
:100EE00091051CF4892B21F040C0029711F13DC0FF |
:100EF00080919400833239F480919300882319F40F |
:100F000081E080939D008091940080931A0381E09A |
:100F100080939C0080919400992722C02F5F20939A |
:100F20009D00E42FFF27E65EFC4F809194008083B4 |
:100F300009C0E42FFF27E65EFC4F80919400808378 |
:100F4000443620F44F5F40939C0002C010929D00F5 |
:100F5000209194008091980090919900820F911DAA |
:100F6000909399008093980002C010929D00FF9189 |
:100F7000EF91DF91CF91BF91AF919F918F917F9131 |
:100F80006F915F914F913F912F910F900FBE0F90F6 |
:100F90001F901895AC01A0E0B0E09D01A817B9071B |
:100FA00048F4E4EBF2E08191280F311D1196A4176B |
:100FB000B507C8F33F70FD01EC54FD4FC90176E061 |
:100FC000969587957A95E1F7835C80831196FD016C |
:100FD000EC54FD4F2F733070822F835C8083AB54B1 |
:100FE000BD4F8DE08C9310926D008091B4028CB94E |
:100FF00008951F93CF93DF93382FEA01722F10E0EB |
:1010000083E28093B4026093B5023093B602A3E00A |
:10101000B0E0772309F458C0772311F4972F07C065 |
:10102000FE01E10FF11D1F5F9081715011F4472FF8 |
:101030000EC0FE01E10FF11D1F5F4081715039F0BC |
:10104000FE01E10FF11D1F5F6081715001C0672F2C |
:10105000FD01EC54FD4F892F86958695835C808336 |
:101060001196FD01EC54FD4F892F992783709070E4 |
:1010700024E0880F991F2A95E1F755279A0194E0FB |
:10108000369527959A95E1F7822B835C808311969C |
:10109000FD01EC54FD4F4F705070440F551F440F2D |
:1010A000551F862F992726E0969587952A95E1F773 |
:1010B000842B835C80831196FD01EC54FD4F6F738C |
:1010C000635C60831196A5CFCD0164DFDF91CF9182 |
:1010D0001F910895089588E18AB9599A579A80E135 |
:1010E00089B960E070E086ED96E0DAD388EC90E0B4 |
:1010F000A0D090931903809318038AE057DE82E40E |
:1011000055DE8CE453DE8AE351DE86E54FDE80E374 |
:101110004DDE8EE24BDE84E349DE81E347DE8AE08A |
:1011200045DE88E443DE87E541DE8AE33FDE81E396 |
:101130003DDE8EE23BDE8091AE008A5D37DE8AE0E6 |
:1011400035DE81E433DE84E431DE82E52FDE8AE3BE |
:101150002DDE80916100805D29DE08958091180365 |
:10116000909119036FD0882391F080916D008823AE |
:1011700071F022E14EE753E06091B30284E439DF7D |
:1011800082E390E056D0909319038093180308955A |
:101190001F920F920FB60F9211248F939F938091FD |
:1011A00090038F5F809390038091A0008150809383 |
:1011B000A0008F3F71F583E08093A00080919E0096 |
:1011C00090919F00019690939F0080939E00809144 |
:1011D000820090918300009729F0019790938300FB |
:1011E000809382008091A200882331F08091A20038 |
:1011F00081508093A20002C08093A1008091800062 |
:1012000090918100009729F001979093810080933D |
:1012100080009F918F910F900FBE0F901F90189597 |
:1012200082E083BF89B7816089BF89B7806489BF45 |
:10123000089520919E0030919F00280F391FC90109 |
:101240000197089520919E0030919F00821B930B7F |
:10125000892F9927807899270895CF93DF93E9DF25 |
:10126000EC01CE01EFDF8823E1F3DF91CF91089508 |
:1012700086EA86B980917600876087B9369A0895A4 |
:1012800027B190917600966097B910BE83ED86B92C |
:10129000349A97B9369A349BFECF27B924B135B129 |
:1012A000220F331F220F331F409188005091890075 |
:1012B000CA0163E0880F991F6A95E1F7841B950BBB |
:1012C000280F391F83E0369527958A95E1F73093EB |
:1012D00089002093880080918700992782179307BF |
:1012E00020F4809188008093870016B888E080BF42 |
:1012F000089527B190917600982B97B910BE83ED91 |
:1013000086B9349A97B9369A349BFECF27B916B866 |
:1013100088E080BF84B195B1089586E0EADF9C0142 |
:10132000220F331F220F331F293C310510F028EC08 |
:1013300030E03093890020938800809187009927BE |
:101340008217930720F4809188008093870016B855 |
:1013500088E080BF08958EB5806C8EBD8EB58064A8 |
:101360008EBD89B7806289BF89B7846089BF0895BF |
:101370001F920F920FB60F9211248F938091A300AA |
:101380008F5F8093A3008F910F900FBE0F901F90DF |
:1013900018951F920F920FB60F9211242F933F931F |
:1013A0008F939F930EB406FE0FC01092A30086B5D4 |
:1013B00097B59093A7008093A6008EB58F7B8EBDC6 |
:1013C00084E68093A20079C08EB580648EBD26B578 |
:1013D00037B58091A6009091A700281B390B80910A |
:1013E000A3009927982F8827990F280F391F6894F1 |
:1013F00014F8369527951694E1F73093A9002093B9 |
:10140000A8002851314030F488E191E09093A90080 |
:101410008093A8002091A8003091A9002851314064 |
:101420003093A9002093A8008091A4009091A5007A |
:101430008217930730F48091A4009091A500019643 |
:101440000CC08091A4009091A5002817390748F49A |
:101450008091A4009091A50001979093A50080939E |
:10146000A4002091A4003091A500C901880F991F04 |
:10147000880F991F880F991F821B930B2091A8003A |
:101480003091A900820F931F23E0969587952A95A6 |
:10149000E1F79093A9008093A8009093A500809312 |
:1014A000A4008091A1008F3F29F08091A1008F5F5F |
:1014B0008093A10081E0809362009F918F913F9182 |
:1014C0002F910F900FBE0F901F9018951F920F92A3 |
:1014D0000FB60F9211248F938AB78F7B8ABF8F919B |
:1014E0000F900FBE0F901F90189590916100990F6B |
:1014F000980F92B985EC86BF08951F920F920FB690 |
:101500000F9211248F939F9381B19927887F9070B8 |
:1015100080389105E9F08138910534F40097B1F1F4 |
:101520008036910579F035C0883B9105D9F0893B2B |
:10153000910524F4883A9105A9F02BC0883F9105C4 |
:1015400011F127C086B7806886BF1092AA0023C019 |
:1015500083B18093910384EF91E090938300809313 |
:1015600082000EC09091AA00992339F480918600E0 |
:1015700083B99F5F9093AA0003C08091630083B9F1 |
:1015800086B7806807C086B7806986BF86B78069DE |
:1015900086BF85EC86BF9F918F910F900FBE0F90F5 |
:1015A0001F9018951F920F920FB60F9211240F9053 |
:1015B0000FBE0F901F9018951F920F920FB60F92AB |
:1015C00011242F933F934F935F936F937F938F9348 |
:1015D0009F93AF93BF93CF93EF93FF93459B02C02D |
:1015E000C1E001C0C0E08091AD0099278230910533 |
:1015F00009F451C0833091052CF4009779F00197DC |
:1016000041F1BFC08430910509F478C08430910560 |
:101610000CF45AC0059709F48BC0B3C081EA8FBDA2 |
:1016200081E685BD88E087BBCC2371F082B3877EDD |
:1016300082BB959A80916200811122DE4098809150 |
:101640007600816087B91BC082B3877D82BB949A84 |
:1016500098C082B3877E82BB959ACC23B1F481EA8D |
:101660008FBD81E685BD84E087BB809162008111DA |
:1016700007DE8091760087B988B1836088B9809150 |
:10168000AD008F5F8093AD006CC081EA8FBD81E6B5 |
:1016900085BD88E075C081EA8FBD81E685BD84E0A7 |
:1016A00087BBCC2361F082B38F7C82BB939A8091FD |
:1016B00062008111E5DD80917600826031C082B3E5 |
:1016C000877E82BB959A5DC082B38F7C82BB939AE2 |
:1016D000CC2371F481EA8FBD81E685BD82E087BBB2 |
:1016E000809162008111CCDD809176008160C3CF52 |
:1016F00081EA8FBD81E685BD84E042C081EA8FBD6D |
:1017000081E685BD82E087BBCC2369F082B3877D0B |
:1017100082BB949A809162008111B2DD8091760043 |
:1017200087B94098ACCF82B38F7C82BB939A29C093 |
:1017300082B3877D82BB949ACC23E9F481EA8FBD82 |
:1017400081E685BD88E087BB80916200811198DDCC |
:1017500080917600826087B988B1836088B9C09330 |
:10176000AD008091790090917A00019690937A0073 |
:101770008093790006C081EA8FBD81E685BD82E055 |
:1017800087BB459903C0CC2309F028CF459B03C0F4 |
:10179000CC2309F423CF10926200FF91EF91CF91F7 |
:1017A000BF91AF919F918F917F916F915F914F9179 |
:1017B0003F912F910F900FBE0F901F901895809121 |
:1017C000AD0099278230910579F1833091052CF491 |
:1017D000009771F00197D1F008958430910509F4D4 |
:1017E00044C0843091058CF1059709F44CC00895EC |
:1017F00081EA8FBD81E685BD88E087BB82B3877DA6 |
:1018000082BB949A8091760082601AC081EA8FBD73 |
:1018100081E685BD88E087BB82B3877E82BB959ACF |
:101820008091760081601EC081EA8FBD81E685BD12 |
:1018300084E087BB82B3877E82BB959A80917600D5 |
:1018400087B988B1836088B9089581EA8FBD81E640 |
:1018500085BD84E087BB82B38F7C82BB939A8091E5 |
:101860007600826087B94098089581EA8FBD81E64D |
:1018700085BD82E087BB82B38F7C82BB939A8091C7 |
:1018800076008160DDCF81EA8FBD81E685BD82E093 |
:1018900087BB82B3877D82BB949A80917600E2CF2A |
:1018A0000F931F93CF93DF938C01EB01009711F4FB |
:1018B000672BB9F16EE070E081E090E037D0FC0179 |
:1018C000892B71F180E88383209771F0D387C287D9 |
:1018D00081E883838091920390919303892B21F473 |
:1018E000F0939303E093920301151105C9F011875A |
:1018F0000087838182608383809194039091950314 |
:10190000892B71F4F0939503E093940380919603EF |
:1019100090919703892B21F4F0939703E09396031A |
:10192000CF01DF91CF911F910F9108950F931F93D6 |
:10193000CF93DF93869F8001879F100D969F100D98 |
:101940001124C8010DD0EC01009721F0A80160E03E |
:1019500070E0FCD0CE01DF91CF911F910F910895DF |
:10196000CF93DF93AC01029710F442E050E020E007 |
:1019700030E0A0919A03B0919B03BD01F90110974B |
:1019800009F44CC08D919C9111978417950731F102 |
:101990004817590738F42115310519F082179307B4 |
:1019A00008F49C01FD01A281B381109759F721151C |
:1019B0003105A1F1C901841B950B049708F4A90115 |
:1019C000DB01E0E0F0E0109749F18D919C911197D7 |
:1019D00082179307F9F44217530779F4ED018A81CE |
:1019E0009B81309719F09383828304C090939B036B |
:1019F00080939A03CD0102964AC0241B350BFD014A |
:101A0000E20FF31F41935193225030402D933C93AA |
:101A1000CF013DC0FD01A281B381D5CF8091980354 |
:101A200090919903892B41F48091710090917200FB |
:101A30009093990380939803E0916F00F091700068 |
:101A4000309741F4EDB7FEB7809173009091740028 |
:101A5000E81BF90BA0919803B09199039F012A1BF1 |
:101A60003B0B2417350788F0CA010296281739075F |
:101A700060F0CD01840F951F029690939903809397 |
:101A800098034D935D93CD0102C080E090E0DF911B |
:101A9000CF910895CF93DF93009709F454C0DC01F0 |
:101AA0001297ED011B821A8280919A0390919B03F9 |
:101AB000009721F1FC0140E050E0EA17FB0718F124 |
:101AC000ED01FB83EA832D913C911197C20FD31F47 |
:101AD000CE0102968E179F0771F48A819B81280F91 |
:101AE000391F2E5F3F4F11963C932E938281938135 |
:101AF000FD01938382834115510559F4B0939B03F3 |
:101B0000A0939A0320C0AF010280F381E02D3097AB |
:101B1000A1F6EA01BB83AA83CA0102962881398112 |
:101B2000820F931F8A179B0771F48D919C911197D7 |
:101B3000280F391F2E5F3F4F39832883FD01828193 |
:101B400093819B838A83DF91CF910895DC0101C04B |
:101B50006D9341505040E0F70895991B79E004C01F |
:101B6000991F961708F0961B881F7A95C9F78095DC |
:101B70000895AA1BBB1B51E107C0AA1FBB1FA617D4 |
:101B8000B70710F0A61BB70B881F991F5A95A9F726 |
:101B900080959095BC01CD010895A1E21A2EAA1B53 |
:101BA000BB1BFD010DC0AA1FBB1FEE1FFF1FA2170D |
:101BB000B307E407F50720F0A21BB30BE40BF50B0A |
:101BC000661F771F881F991F1A9469F76095709593 |
:0E1BD000809590959B01AC01BD01CF01089559 |
:101BDE00010101FF01010A0000000201030164007E |
:061BEE00009C0320000032 |
:00000001FF |
/tags/V0.41/Hex-Files/BL-Ctrl_V1_1_and_V1_2/BrushLess-Ctrl_MEGA8_V0_41_6A.hex |
---|
0,0 → 1,449 |
:1000000012C064CA2AC029C0CDCAC3C926C025C02F |
:10001000AFC9BEC822C0D7C620C02BC61EC01DC0D7 |
:10002000CBCA6BCA1AC011241FBECFE5D4E0DEBF15 |
:10003000CDBF10E0A0E6B0E0EEEDFBE102C0059020 |
:100040000D92A637B107D9F713E0A6E7B0E001C0DB |
:100050001D92AC39B107E1F73AC4D2CF40918A0082 |
:1000600080916300841710F4482FAB9A2091880088 |
:100070003091890023383105C8F01BBC1ABC19BC6B |
:1000800018BC13BC82B3877C82BBAB9A80918C0373 |
:1000900090918D03019690938D0380938C03215052 |
:1000A000304030938900209388000895842F992749 |
:1000B0009BBD8ABD99BD88BD43BD089580918800D0 |
:1000C00090918900909381038093800380918600B2 |
:1000D0009927909383038093820380917700909176 |
:1000E000780090938503809384038091A40090917D |
:1000F000A500909387038093860383B599279093F7 |
:1001000089038093880308951BBC1ABC19BC18BCD2 |
:1001100013BC91E09FBD81E485BD8EE087BB88B3B1 |
:10012000817F88BB9EBD089592B7980F82B7891BC7 |
:1001300087FDFCCF0895CF93C82F7894C150CF3F4F |
:1001400049F0AB9A8CE291E088D8AB988CE291E0D0 |
:1001500084D8F4CF88EE93E080D8CF910895AF9201 |
:10016000BF92CF92DF92EF92FF920F931F93CF93A4 |
:10017000DF93C82F8CE2A82E81E0B82EC12CD12CA1 |
:100180001092AB00439885E090E090938B008093B1 |
:100190008A0064DF14DB8CE291E04BD89093B002CC |
:1001A0008093AF0211C0B9D88091880090918900E6 |
:1001B0008937910548F082B3877C82BB1BBC1ABC8F |
:1001C00019BC18BC13BD34C08091AF029091B0022D |
:1001D00039D8182F882339F3DD27D0938B00C093AB |
:1001E0008A00EE24FF248701EA14FB040C051D0598 |
:1001F00078F480916D00882311F445D501C0AED705 |
:1002000084E692DF0894E11CF11C011D111DECCF66 |
:1002100055DF83D88091880090918900CD97B0F008 |
:1002200082B3877C82BB1BBC1ABC19BC18BC13BC34 |
:1002300081E08FBD81E485BD8EE087BB88B3817F7F |
:1002400088BB8AE078DF80E090E032C0C601B5016B |
:100250002FE030E040E050E0A0DCA21AB30AC40A6C |
:10026000D50A0894A108B108C108D10889E1A816E7 |
:10027000B104C104D10418F481E090E019C09FDA00 |
:100280008091AD008F5F8093AD008091AD0066E0FE |
:1002900064DC9093AD00F4D7D0938B00C0938A00B8 |
:1002A000DDDE449B9ECF82B390E8892782BB99CF45 |
:1002B000DF91CF911F910F91FF90EF90DF90CF9042 |
:1002C000BF90AF900895CF93DF93EC0121978FEF0C |
:1002D000CF3FD807B9F021D88091B1029091B202F6 |
:1002E00088589F4F2091880030918900821793078A |
:1002F00068F782B3877C82BB88B3817F88BB81E04B |
:1003000090E002C080E090E0DF91CF9108950197E6 |
:100310002FEF8F3F9207D9F780E090E008959F92EA |
:10032000AF92BF92CF92DF92EF92FF920F931F9303 |
:10033000CF93DF93CDB7DEB725970FB6F894DEBF26 |
:100340000FBECDBF5E010894A11CB11CD501E8E62B |
:10035000F0E085E001900D928150E1F7C82ED82E93 |
:1003600002E3902EAB9880916100F501E80FF11D3A |
:100370008081282F33278CE291E0289FA001299FBC |
:10038000500D389F500D1124CA0167D7C092AB00A1 |
:100390004398F8948AE00AD582B3877C82BB1BBC61 |
:1003A0001ABC19BC18BC13BC81E08FBD81E485BDAB |
:1003B0008EE087BB88B3817F88BB1092870082E381 |
:1003C00090E081DF8091870099279093B20280931B |
:1003D000B10210928900109288008CB1803249F5E8 |
:1003E0001FEFE12EF12EB8E29B2E8FE5DFD425C062 |
:1003F000A4E0CA2E84E3DAD482B3877C82BB88B3BC |
:10040000817F88BB4EC0F5E0CF2E85E3CFD482B389 |
:10041000877C82BB88B3817F88BB7AC0E6E0CE2E22 |
:1004200086E3C4D482B3877C82BB88B3817F88BBD8 |
:10043000A8C078EEE72E73E0F72E10928900109294 |
:10044000880000E010E00E151F0558F5939A81E032 |
:1004500090E039DF82B3877C82BB88B3817F88BB21 |
:1004600085E090E054DFC39A81E090E02CDF82B316 |
:10047000877C82BB88B3817F88BB8091B1029091D9 |
:10048000B202890D911D2091880030918900821758 |
:10049000930708F4ADCF85E090E039DF0F5F1F4F81 |
:1004A000D2CF80E197E233DF10928900109288006A |
:1004B00000E010E00E151F0558F5949A81E090E0D9 |
:1004C00002DF82B3877C82BB88B3817F88BB85E0F3 |
:1004D00090E01DDFC29A81E090E0F5DE82B3877C78 |
:1004E00082BB88B3817F88BB8091B1029091B202B8 |
:1004F000890D911D20918800309189008217930702 |
:1005000008F481CF85E090E002DF0F5F1F4FD2CF6C |
:10051000109289001092880080E197E2F8DE00E0F6 |
:1005200010E00E151F0558F5959A81E090E0CBDE9E |
:1005300082B3877C82BB88B3817F88BB85E090E0F3 |
:10054000E6DEC19A81E090E0BEDE82B3877C82BBAA |
:1005500088B3817F88BB8091B1029091B202890DEE |
:10056000911D20918800309189008217930708F42B |
:1005700055CF85E090E0CBDE0F5F1F4FD2CFCC2070 |
:1005800019F08C2DD8DDFDCF8091760087B982B32C |
:10059000877C82BB88B3817F88BB949A959A10929E |
:1005A00089001092880008E710E0C39A81E090E08B |
:1005B000AEDE80E090E09DD6C3971CF051E0D52AD6 |
:1005C00002C08EEFD82218BA8CE291E0A0DE015072 |
:1005D000104017FFEACF82B3877C82BB88B3817F4C |
:1005E00088BB939A959A04E810E0C29A81E090E063 |
:1005F0008EDE81E090E07DD6C3971CF0E2E0DE2A3B |
:1006000002C0FDEFDF2218BA8CE291E080DE0150DB |
:10061000104017FFEACF82B3877C82BB88B3817F0B |
:1006200088BB939A949A0EE610E0C19A81E090E01C |
:100630006EDE82E090E05DD6C3971CF044E0D42AE1 |
:1006400002C05BEFD52218BA8AE491E060DE015067 |
:10065000104017FFEACF82B3877C82BB88B3817FCB |
:1006600088BB939A08E710E0C29A81E090E04FDEE1 |
:1006700080E090E03ED6813891051CF087EFD822CB |
:1006800002C0E8E0DE2A18BA8AE491E040DE0150B8 |
:10069000104017FFE9CF959A04E810E0C29A81E074 |
:1006A00090E035DE82E090E024D6813891051CF0A0 |
:1006B000FFEDDF2202C040E2D42A18BA88E691E0BA |
:1006C00026DE0150104017FFE9CF82B3877C82BB42 |
:1006D00088B3817F88BB82B3877C82BB88B3817FEC |
:1006E00088BB949A0EE610E0C19A81E090E00FDE9C |
:1006F00081E090E0FED5813891051CF05FEED522B7 |
:1007000002C080E1D82A18BA88E691E000DE0150E4 |
:10071000104017FFE9CF82B3877C82BB88B3817F0B |
:1007200088BB789480916100A80EB11CF5012081EE |
:1007300084E090E0821B91092CE231E0829FA001CD |
:10074000839F500D929F500D1124CA0186D58D2D87 |
:10075000992780FD04C061E0C62E81E41DC081FDA3 |
:1007600004C052E0C52E82E417C082FD04C043E0FD |
:10077000C42E83E411C083FD04C034E0C32E81E69F |
:100780000BC084FD04C025E0C22E82E605C085FDB5 |
:1007900007C096E0C92E83E68CB98C2DCCDCFDCF4A |
:1007A0008C2DC9DC8EE202D325960FB6F894DEBFFD |
:1007B0000FBECDBFDF91CF911F910F91FF90EF90B2 |
:1007C000DF90CF90BF90AF909F900895809182006E |
:1007D00090918300892B09F05BC04091800050917B |
:1007E00081004115510599F0909195008FEF989FE8 |
:1007F000C001112468EC70E0BCD970938D00609347 |
:100800008C001092600089B78F7D89BF32C08091C3 |
:10081000A100853180F181E0809360002091A400E7 |
:100820003091A50081E02D32380708F09A01293C6B |
:10083000310510F028EC30E02B30310528F45093CE |
:100840008D0040938C0015C08CEF90E0289FA00194 |
:10085000299F500D389F500D1124CA01885D994081 |
:1008600064EB70E086D9CB01039690938D00809362 |
:100870008C00AB981AC080918C0090918D000097ED |
:1008800029F0019790938D0080938C00AB9A0DC056 |
:1008900080919103992790938D0080938C00109202 |
:1008A0006000AB9889B78F7D89BF80918C00909153 |
:1008B0008D008F3F910539F030F08FEF90E09093ED |
:1008C0008D0080938C0080918C0099270895CFE54E |
:1008D000D4E0DEBFCDBFDD2488E084BB85BB8AE3E6 |
:1008E00081BBD2BA8EE087BB81E388BB88B3806CC2 |
:1008F00088BB83EF91E0C29797FFFDCFB69B06C000 |
:10090000B79B02C081E007C082E005C0B79B02C070 |
:1009100083E001C084E0809361008BE08093AE00AF |
:10092000879B06C08CE08093AE0080EC80937600BD |
:100930008AEB81BBD0D374D47894E6DB80E5D5D53F |
:100940000AD585E690E075D486E690E072D487E615 |
:1009500090E06FD49093B0028093AF028EEF90E05E |
:1009600068D47C018DEE93E064D48C018EEE93E02C |
:1009700060D403C02BDF882339F48091AF029091BB |
:10098000B00260D48823B1F38091AE008C3010F4B3 |
:10099000979A01C0979810928B0010928A005EDBA4 |
:1009A00088E080BF81E087B98AE090E042D49093EC |
:1009B000B0028093AF0281E090E090938303809334 |
:1009C00082031092A5001092A40000DF882309F48E |
:1009D000A6DC81E388BBFADE992790938B00809395 |
:1009E0008A008091AD008D1569F01092640010921C |
:1009F00065008AEF90E01DD49093B0028093AF021F |
:100A0000D090AD00C0918A00D0918B002097F9F46E |
:100A100010927B0010926500C50114D4882311F157 |
:100A20001092AB00439891E09093640082B3877C6E |
:100A300082BBDBBDCABDD9BDC8BD13BC9FBD81E4AF |
:100A400085BD8EE087BB88B3817F88BB0BC080915A |
:100A50006400882319F081E080937B008CED95E0A1 |
:100A6000E8D35C0180916400882321F010928B0010 |
:100A700010928A00F3DA809165008F5F80936500A1 |
:100A8000813009F0A8CF80916400882341F08091E3 |
:100A9000AE008C3010F4979A01C097983ED4C701ED |
:100AA000D1D38823A9F182E390E0C3D37C01809164 |
:100AB0008600482F552720918800309189004217E1 |
:100AC000530710F48F5F04C02417350718F48150C2 |
:100AD000809386002338310548F080916300982F79 |
:100AE000929596959770891B8093630080918600FC |
:100AF00090916300823438F0992319F091509093CB |
:100B00006300AB9A05C09F3F19F09F5F909363000D |
:100B1000C80198D3882399F08AE090E08AD38C01A9 |
:100B20008091790090917A0090937800809377007B |
:100B300010927A001092790081E080936200809197 |
:100B4000AF029091B0027ED3882331F0809177007C |
:100B500090917800892B29F080917B00882309F4FB |
:100B60003ACFC1E0C09364001092AB00439884E692 |
:100B700090E05FD39093B0028093AF0280917B00AE |
:100B8000882309F428CFAB981092870010927B003D |
:100B90008AE0E5DA882309F465C08091AE008C30E4 |
:100BA00010F4979A01C09798109264008091AD005C |
:100BB00081508093AD0081E090E090938B00809312 |
:100BC0008A004CDA88B18C7F88B981E08093AB00D1 |
:100BD00088B18A6088B984E190E02BD39093B00209 |
:100BE0008093AF028091AF029091B0022BD3882303 |
:100BF000C9F38FE090E090938B0080938A002EDA07 |
:100C00008CE291E016D39093B0028093AF021BC0A8 |
:100C100080918800909189008197A8F082B3877CA9 |
:100C200082BB1BBC1ABC19BC18BC23BD11E01FBD84 |
:100C300081E485BD8EE087BB88B3817F88BB8AE075 |
:100C40007ADA10937B008091AF029091B002FAD2D1 |
:100C5000282F8823E9F282E390E0EBD28C0187E031 |
:100C6000D82EB9CEB3DD882309F4B5CEC0937B006E |
:100C7000B2CE1F920F920FB60F9211240F900FBE9B |
:100C80000F901F9018955E9B24C080916D00882363 |
:100C9000E1F48091960090919700019690939700CF |
:100CA00080939600FC01EC54FD4FE081ED3019F08B |
:100CB0008436910539F4109297001092960081E0E5 |
:100CC00080936D00589AECB9089510929700109295 |
:100CD000960008951F93CF93DF93EC0110E06623F5 |
:100CE00009F460C0A22FBB271297E42FFF27E65E0E |
:100CF000FC4F30813D534F5FE42FFF27E65EFC4FF2 |
:100D000050815D534F5FE42FFF27E65EFC4F7081FB |
:100D10007D534F5FE42FFF27E65EFC4FE081ED53EC |
:100D20004F5F842F9927A817B907E4F1832F9927DC |
:100D3000880F991F880F991F352F32953F70382BD8 |
:100D4000852F99278F70907054E0880F991F5A95BE |
:100D5000E1F7572F56955695582B872F9927837073 |
:100D6000907026E0880F991F2A95E1F78E2B61502D |
:100D70006F3FC1F0FE01E10FF11D30831F5F615035 |
:100D80006F3F81F0FE01E10FF11D50831F5F615045 |
:100D90006F3F41F0FE01E10FF11D80831F5F66236D |
:100DA00009F0A3CFDF91CF911F910895CF93C82F62 |
:100DB0008A3011F48DE0FADF5D9BFECFCCB980E084 |
:100DC00090E0CF9108951F920F920FB60F921124C9 |
:100DD0002F933F934F935F936F937F938F939F9343 |
:100DE000AF93BF93CF93DF93EF93FF938CB1809337 |
:100DF000940040919C00443610F010929D00509158 |
:100E000094005D3009F064C080919D00823009F04B |
:100E10005FC010929D00A42FBB27A65EBC4FFD01B2 |
:100E2000329780812091980030919900281B3109D8 |
:100E3000ED0121978881281B3109C9019F7090938A |
:100E400099008093980066E0969587956A95E1F7FA |
:100E5000982F935C90939A002F733070235C2093AB |
:100E60009B008081981709F082C08881281709F0BB |
:100E70007EC040938E005C9380911C03823549F4C0 |
:100E800088E190E02CE00FB6F894A89581BD0FBEE4 |
:100E900021BD80911C038ADF80911C03843709F0F7 |
:100EA00066C020918E0043E064E08FE890E012DF9E |
:100EB00080916100E82FFF27E257FF4F80818093E8 |
:100EC000950084EF91E090938100809380004FC063 |
:100ED00020919D00822F992781309105F9F0823071 |
:100EE00091051CF4892B21F040C0029711F13DC0FF |
:100EF00080919400833239F480919300882319F40F |
:100F000081E080939D008091940080931A0381E09A |
:100F100080939C0080919400992722C02F5F20939A |
:100F20009D00E42FFF27E65EFC4F809194008083B4 |
:100F300009C0E42FFF27E65EFC4F80919400808378 |
:100F4000443620F44F5F40939C0002C010929D00F5 |
:100F5000209194008091980090919900820F911DAA |
:100F6000909399008093980002C010929D00FF9189 |
:100F7000EF91DF91CF91BF91AF919F918F917F9131 |
:100F80006F915F914F913F912F910F900FBE0F90F6 |
:100F90001F901895AC01A0E0B0E09D01A817B9071B |
:100FA00048F4E4EBF2E08191280F311D1196A4176B |
:100FB000B507C8F33F70FD01EC54FD4FC90176E061 |
:100FC000969587957A95E1F7835C80831196FD016C |
:100FD000EC54FD4F2F733070822F835C8083AB54B1 |
:100FE000BD4F8DE08C9310926D008091B4028CB94E |
:100FF00008951F93CF93DF93382FEA01722F10E0EB |
:1010000083E28093B4026093B5023093B602A3E00A |
:10101000B0E0772309F458C0772311F4972F07C065 |
:10102000FE01E10FF11D1F5F9081715011F4472FF8 |
:101030000EC0FE01E10FF11D1F5F4081715039F0BC |
:10104000FE01E10FF11D1F5F6081715001C0672F2C |
:10105000FD01EC54FD4F892F86958695835C808336 |
:101060001196FD01EC54FD4F892F992783709070E4 |
:1010700024E0880F991F2A95E1F755279A0194E0FB |
:10108000369527959A95E1F7822B835C808311969C |
:10109000FD01EC54FD4F4F705070440F551F440F2D |
:1010A000551F862F992726E0969587952A95E1F773 |
:1010B000842B835C80831196FD01EC54FD4F6F738C |
:1010C000635C60831196A5CFCD0164DFDF91CF9182 |
:1010D0001F910895089588E18AB9599A579A80E135 |
:1010E00089B960E070E086ED96E0DAD388EC90E0B4 |
:1010F000A0D090931903809318038AE057DE82E40E |
:1011000055DE8CE453DE8AE351DE86E54FDE80E374 |
:101110004DDE8EE24BDE84E349DE81E347DE8AE08A |
:1011200045DE88E443DE87E541DE8AE33FDE81E396 |
:101130003DDE8EE23BDE8091AE008A5D37DE8AE0E6 |
:1011400035DE81E433DE84E431DE82E52FDE8AE3BE |
:101150002DDE80916100805D29DE08958091180365 |
:10116000909119036FD0882391F080916D008823AE |
:1011700071F022E14EE753E06091B30284E439DF7D |
:1011800082E390E056D0909319038093180308955A |
:101190001F920F920FB60F9211248F939F938091FD |
:1011A00090038F5F809390038091A0008150809383 |
:1011B000A0008F3F71F583E08093A00080919E0096 |
:1011C00090919F00019690939F0080939E00809144 |
:1011D000820090918300009729F0019790938300FB |
:1011E000809382008091A200882331F08091A20038 |
:1011F00081508093A20002C08093A1008091800062 |
:1012000090918100009729F001979093810080933D |
:1012100080009F918F910F900FBE0F901F90189597 |
:1012200082E083BF89B7816089BF89B7806489BF45 |
:10123000089520919E0030919F00280F391FC90109 |
:101240000197089520919E0030919F00821B930B7F |
:10125000892F9927807899270895CF93DF93E9DF25 |
:10126000EC01CE01EFDF8823E1F3DF91CF91089508 |
:1012700086EA86B980917600876087B9369A0895A4 |
:1012800027B190917600966097B910BE83ED86B92C |
:10129000349A97B9369A349BFECF27B924B135B129 |
:1012A000220F331F220F331F409188005091890075 |
:1012B000CA0163E0880F991F6A95E1F7841B950BBB |
:1012C000280F391F83E0369527958A95E1F73093EB |
:1012D00089002093880080918700992782179307BF |
:1012E00020F4809188008093870016B888E080BF42 |
:1012F000089527B190917600982B97B910BE83ED91 |
:1013000086B9349A97B9369A349BFECF27B916B866 |
:1013100088E080BF84B195B1089586E0EADF9C0142 |
:10132000220F331F220F331F293C310510F028EC08 |
:1013300030E03093890020938800809187009927BE |
:101340008217930720F4809188008093870016B855 |
:1013500088E080BF08958EB5806C8EBD8EB58064A8 |
:101360008EBD89B7806289BF89B7846089BF0895BF |
:101370001F920F920FB60F9211248F938091A300AA |
:101380008F5F8093A3008F910F900FBE0F901F90DF |
:1013900018951F920F920FB60F9211242F933F931F |
:1013A0008F939F930EB406FE0FC01092A30086B5D4 |
:1013B00097B59093A7008093A6008EB58F7B8EBDC6 |
:1013C00084E68093A20079C08EB580648EBD26B578 |
:1013D00037B58091A6009091A700281B390B80910A |
:1013E000A3009927982F8827990F280F391F6894F1 |
:1013F00014F8369527951694E1F73093A9002093B9 |
:10140000A8002851314030F488E191E09093A90080 |
:101410008093A8002091A8003091A9002851314064 |
:101420003093A9002093A8008091A4009091A5007A |
:101430008217930730F48091A4009091A500019643 |
:101440000CC08091A4009091A5002817390748F49A |
:101450008091A4009091A50001979093A50080939E |
:10146000A4002091A4003091A500C901880F991F04 |
:10147000880F991F880F991F821B930B2091A8003A |
:101480003091A900820F931F23E0969587952A95A6 |
:10149000E1F79093A9008093A8009093A500809312 |
:1014A000A4008091A1008F3F29F08091A1008F5F5F |
:1014B0008093A10081E0809362009F918F913F9182 |
:1014C0002F910F900FBE0F901F9018951F920F92A3 |
:1014D0000FB60F9211248F938AB78F7B8ABF8F919B |
:1014E0000F900FBE0F901F90189590916100990F6B |
:1014F000980F92B985EC86BF08951F920F920FB690 |
:101500000F9211248F939F9381B19927887F9070B8 |
:1015100080389105E9F08138910534F40097B1F1F4 |
:101520008036910579F035C0883B9105D9F0893B2B |
:10153000910524F4883A9105A9F02BC0883F9105C4 |
:1015400011F127C086B7806886BF1092AA0023C019 |
:1015500083B18093910384EF91E090938300809313 |
:1015600082000EC09091AA00992339F480918600E0 |
:1015700083B99F5F9093AA0003C08091630083B9F1 |
:1015800086B7806807C086B7806986BF86B78069DE |
:1015900086BF85EC86BF9F918F910F900FBE0F90F5 |
:1015A0001F9018951F920F920FB60F9211240F9053 |
:1015B0000FBE0F901F9018951F920F920FB60F92AB |
:1015C00011242F933F934F935F936F937F938F9348 |
:1015D0009F93AF93BF93CF93EF93FF93459B02C02D |
:1015E000C1E001C0C0E08091AD0099278230910533 |
:1015F00009F451C0833091052CF4009779F00197DC |
:1016000041F1BFC08430910509F478C08430910560 |
:101610000CF45AC0059709F48BC0B3C081EA8FBDA2 |
:1016200081E685BD88E087BBCC2371F082B3877EDD |
:1016300082BB959A80916200811122DE4098809150 |
:101640007600816087B91BC082B3877D82BB949A84 |
:1016500098C082B3877E82BB959ACC23B1F481EA8D |
:101660008FBD81E685BD84E087BB809162008111DA |
:1016700007DE8091760087B988B1836088B9809150 |
:10168000AD008F5F8093AD006CC081EA8FBD81E6B5 |
:1016900085BD88E075C081EA8FBD81E685BD84E0A7 |
:1016A00087BBCC2361F082B38F7C82BB939A8091FD |
:1016B00062008111E5DD80917600826031C082B3E5 |
:1016C000877E82BB959A5DC082B38F7C82BB939AE2 |
:1016D000CC2371F481EA8FBD81E685BD82E087BBB2 |
:1016E000809162008111CCDD809176008160C3CF52 |
:1016F00081EA8FBD81E685BD84E042C081EA8FBD6D |
:1017000081E685BD82E087BBCC2369F082B3877D0B |
:1017100082BB949A809162008111B2DD8091760043 |
:1017200087B94098ACCF82B38F7C82BB939A29C093 |
:1017300082B3877D82BB949ACC23E9F481EA8FBD82 |
:1017400081E685BD88E087BB80916200811198DDCC |
:1017500080917600826087B988B1836088B9C09330 |
:10176000AD008091790090917A00019690937A0073 |
:101770008093790006C081EA8FBD81E685BD82E055 |
:1017800087BB459903C0CC2309F028CF459B03C0F4 |
:10179000CC2309F423CF10926200FF91EF91CF91F7 |
:1017A000BF91AF919F918F917F916F915F914F9179 |
:1017B0003F912F910F900FBE0F901F901895809121 |
:1017C000AD0099278230910579F1833091052CF491 |
:1017D000009771F00197D1F008958430910509F4D4 |
:1017E00044C0843091058CF1059709F44CC00895EC |
:1017F00081EA8FBD81E685BD88E087BB82B3877DA6 |
:1018000082BB949A8091760082601AC081EA8FBD73 |
:1018100081E685BD88E087BB82B3877E82BB959ACF |
:101820008091760081601EC081EA8FBD81E685BD12 |
:1018300084E087BB82B3877E82BB959A80917600D5 |
:1018400087B988B1836088B9089581EA8FBD81E640 |
:1018500085BD84E087BB82B38F7C82BB939A8091E5 |
:101860007600826087B94098089581EA8FBD81E64D |
:1018700085BD82E087BB82B38F7C82BB939A8091C7 |
:1018800076008160DDCF81EA8FBD81E685BD82E093 |
:1018900087BB82B3877D82BB949A80917600E2CF2A |
:1018A0000F931F93CF93DF938C01EB01009711F4FB |
:1018B000672BB9F16EE070E081E090E037D0FC0179 |
:1018C000892B71F180E88383209771F0D387C287D9 |
:1018D00081E883838091920390919303892B21F473 |
:1018E000F0939303E093920301151105C9F011875A |
:1018F0000087838182608383809194039091950314 |
:10190000892B71F4F0939503E093940380919603EF |
:1019100090919703892B21F4F0939703E09396031A |
:10192000CF01DF91CF911F910F9108950F931F93D6 |
:10193000CF93DF93869F8001879F100D969F100D98 |
:101940001124C8010DD0EC01009721F0A80160E03E |
:1019500070E0FCD0CE01DF91CF911F910F910895DF |
:10196000CF93DF93AC01029710F442E050E020E007 |
:1019700030E0A0919A03B0919B03BD01F90110974B |
:1019800009F44CC08D919C9111978417950731F102 |
:101990004817590738F42115310519F082179307B4 |
:1019A00008F49C01FD01A281B381109759F721151C |
:1019B0003105A1F1C901841B950B049708F4A90115 |
:1019C000DB01E0E0F0E0109749F18D919C911197D7 |
:1019D00082179307F9F44217530779F4ED018A81CE |
:1019E0009B81309719F09383828304C090939B036B |
:1019F00080939A03CD0102964AC0241B350BFD014A |
:101A0000E20FF31F41935193225030402D933C93AA |
:101A1000CF013DC0FD01A281B381D5CF8091980354 |
:101A200090919903892B41F48091710090917200FB |
:101A30009093990380939803E0916F00F091700068 |
:101A4000309741F4EDB7FEB7809173009091740028 |
:101A5000E81BF90BA0919803B09199039F012A1BF1 |
:101A60003B0B2417350788F0CA010296281739075F |
:101A700060F0CD01840F951F029690939903809397 |
:101A800098034D935D93CD0102C080E090E0DF911B |
:101A9000CF910895CF93DF93009709F454C0DC01F0 |
:101AA0001297ED011B821A8280919A0390919B03F9 |
:101AB000009721F1FC0140E050E0EA17FB0718F124 |
:101AC000ED01FB83EA832D913C911197C20FD31F47 |
:101AD000CE0102968E179F0771F48A819B81280F91 |
:101AE000391F2E5F3F4F11963C932E938281938135 |
:101AF000FD01938382834115510559F4B0939B03F3 |
:101B0000A0939A0320C0AF010280F381E02D3097AB |
:101B1000A1F6EA01BB83AA83CA0102962881398112 |
:101B2000820F931F8A179B0771F48D919C911197D7 |
:101B3000280F391F2E5F3F4F39832883FD01828193 |
:101B400093819B838A83DF91CF910895DC0101C04B |
:101B50006D9341505040E0F70895991B79E004C01F |
:101B6000991F961708F0961B881F7A95C9F78095DC |
:101B70000895AA1BBB1B51E107C0AA1FBB1FA617D4 |
:101B8000B70710F0A61BB70B881F991F5A95A9F726 |
:101B900080959095BC01CD010895A1E21A2EAA1B53 |
:101BA000BB1BFD010DC0AA1FBB1FEE1FFF1FA2170D |
:101BB000B307E407F50720F0A21BB30BE40BF50B0A |
:101BC000661F771F881F991F1A9469F76095709593 |
:0E1BD000809590959B01AC01BD01CF01089559 |
:101BDE00010101FF01010A0000000201030164007E |
:061BEE00009C0320000032 |
:00000001FF |
/tags/V0.41/Hex-Files/_BL_Ctrl_History.txt |
---|
0,0 → 1,85 |
+++++++++++++++++++++++++++++++++++ |
Brushless-Control |
Holger Buss |
buss@Mikrocontroller.com |
+++++++++++++++++++++++++++++++++++ |
V0.21 13.01.2007 |
- Erste offizielle Version |
- Unterstützt I2C und PPM |
V0.23 |
- Bei niedrigen PWM-Werten, kam es am Motor zu einem "Knackgeräusch" (besonders in der 16kHz-Variante). |
- Manchmal reagierte der Regler nicht gleich auf das PPM-Einschalt-Signal, wenn der Regler länger auf 0% war |
- Die Kommutierungserkennung läuft jetzt im Interrupt |
- Komponenten zur Drehzahlregelung wieder entfernt, weil sie den Code unleserlich machten |
Kommt in einer späteren Version wahrscheinlich wieder rein |
V0.25 |
- Es wurden zu viele Kommutierungs-Interrupts ausgelöst |
V0.27 02.02.2007 |
- X3D-Protokoll implementiert (für eine Sonderversion des X3D mit serieller Ausgabe) |
V0.31 22.2.2007 |
- Das I2C-Bus Protokoll wurde geändert: |
Jeder Motor wird jetzt mit einem eigenen Datensatz angesprochen |
Aus den Motorreglern kann jetzt Strom und MaxPWM ausgelesen werden |
- Es hatte sich ein Fehler in der Umrechnung des seriellen Wertes (X-3D) eingeschlichen; das ist hier behoben |
Mittels eines PC-Programms (SimTxData.exe) kann das X-3D-Protokoll simuliert und so die Motoren angefahren werden |
V0.32 22.8.2007 - IB |
- Serielle Empfangsroutine eingefügt |
es wird das Resetkommando für ein Bootloader-Update ausgeführt |
- Timerabfragen korrigiert (Wiederanlauf) |
- Versionsausgabe beim Start |
- Screenshot für PonyProg aktualisert (jetzt mit 2,7V Brownout) |
- Adress-Jumper auf BL-Ctrl-Platine V1.1 wird ausgewertet (#define MOTORADRESSE dann auf 0) ! |
- Ausgabe der aktuellen Adresse (seriell) |
V0.33 18.9.2007 - HB |
- Zeitverzögerung bei Lesen der Adresse (für BL-Ctrl V1.1) |
V0.34 27.09.2007 - HB |
- Endstufentest mit Tonfolge implementiert |
Nach dem Start kommt eine Tonfolge, bei der der Regler seine Endstufe testet. |
Im Falle eines Fehlers, werden Buchstaben ausgegeben, die einen Hinweis auf den Fehlerhaften MosFet geben. |
Falls mehrere Buchstaben auftreten, ist der erste ausschlaggebend. |
Falls das Piepen ausbleibt, handelt es sich um einen Überstrom durch Kurzschluss oder dauerhaft eingeschalteten FET. |
Falls der Motor nach der Testprozedur öfter piept und dabei die rote LED blinkt, schaltet der entsprechende Mosfet nicht durch. |
Dann kann man am Blinken (und Buchstaben) den Fehler erkennen. |
Dabei ist: A=A+ (1) B=B+ (2) C=C+ (3) a=A- (4) b=B- (5) c=C- (6) (in Klammern der Blinkcode) |
V0.35 30.09.2007 - HB |
Endstufentest erweitert. |
Die Fehlercodes sind: |
1: Kurzschluss Phase A (gegen B) |
2: Kurzschluss Phase B (gegen A) |
3: Kurzschluss Phase C (gegen B) |
4: Mosfet NA- schaltet nicht ab |
5: Mosfet NB- schaltet nicht ab |
6: Mosfet NC- schaltet nicht ab |
7: Kurzschluss Phase C (gegen A) |
A: NA+ schaltet nicht ein |
B: NB+ schaltet nicht ein |
C: NC+ schaltet nicht ein |
a: NA- schaltet nicht ein |
b: NB- schaltet nicht ein |
c: NC- schaltet nicht ein |
V0.36 09.12.2007 - HB |
Überstrombegrenzung für die 20A-Software verbessert, um den Shunt zu schonen |
Schwellwert der Kurzschlusserkennung erhöht, wegen Motoren mit geringerer Impendanz |
V0.37 21.01.2008 - HB |
Die Genauigkeit der PWM war Drehzahlabhängig |
V0.38 05.03.2008 - HB |
Selbsttest-Routine etwas entschärft. Test auf Phasenkurzschluss entfernt |
V0.41 22.03.2008 - HB |
Version auch für Platinen V1.2 |
Überstromerkennung beim Anwerfen des Motors -> Blinkt 10 mal bei Überstrom in der Startphase |
Das Makefile erzeugt jetzt die richtigen HexFile-Namen |
/tags/V0.41/Hex-Files/_Files.txt |
---|
0,0 → 1,19 |
Dateien: |
-------- |
BrushLess-Ctrl_V0_xx_10A.hex --> Hexfile für BL-Ctrl V1.1 und 1.2 |
BootLoader_MEGA8_8MHZ_Vx_y.hex --> Bootloader für BL-Ctrl (Fusebits beachten !) |
BrushLess-Ctrl_ADR_Vx_xx.hex --> Software für ADR=Motorposition(1 bis 4) |
BrushLess-Ctrl_ADR_Vx_xx_10A.hex --> Software für ADR=Motorposition(1 bis 4) 10A-Stromgrenze |
Testprogramme (Achtung: Motor läuft an!) |
----------------------------------------- |
Test_Manuell_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft ungeregelt mit fester Frequenz |
Test_Schub_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft mit unterschiedlichen Leistungen |
Test_Sollwert_Fix_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft fix mit 7,8% PWM |
Sonstiges: |
---------- |
Fuses_Mega8_8MHZ_*.gif --> Fusebits von Ponyprog (mit und ohne Bootloader) |
/tags/V0.41/PPM_Decode.c |
---|
0,0 → 1,76 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned int PPM_Signal = 0; |
volatile unsigned char Timer1Overflow = 0; |
volatile unsigned char PPM_Timeout = 0, anz_ppm_werte = 0; // Ungültig, wenn Null |
//############################################################################ |
// |
void InitPPM(void) |
//############################################################################ |
{ |
TCCR1B |= (1<<ICES1)|(1<<ICNC1); |
ICP_POS_FLANKE; |
ICP_INT_ENABLE; |
TIMER1_INT_ENABLE; |
} |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW1) |
//############################################################################ |
{ |
Timer1Overflow++; |
} |
//############################################################################ |
// |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int tim_alt; |
static unsigned int ppm; |
if(TCCR1B & (1<<ICES1)) // Positive Flanke |
{ |
Timer1Overflow = 0; |
tim_alt = ICR1; |
ICP_NEG_FLANKE; |
PPM_Timeout = 100; |
} |
else // Negative Flanke |
{ |
ICP_POS_FLANKE; |
#ifdef _32KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 32; |
#endif |
#ifdef _16KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 32; |
#endif |
if(ppm < 280) ppm = 280; |
ppm -= 280; |
if(PPM_Signal < ppm) PPM_Signal++; |
else if(PPM_Signal > ppm) PPM_Signal--; |
if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern |
PPM_Signal = ppm; |
if(anz_ppm_werte < 255) anz_ppm_werte++; |
ZeitZumAdWandeln = 1; |
} |
} |
//############################################################################ |
// |
SIGNAL(SIG_INTERRUPT0) |
//############################################################################ |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
} |
/tags/V0.41/PPM_Decode.h |
---|
0,0 → 1,27 |
/*############################################################################ |
############################################################################*/ |
extern volatile unsigned int PPM_Signal; |
extern volatile unsigned char PPM_Timeout, anz_ppm_werte; |
void InitPPM(void); |
#define INT0_ENABLE GIMSK |= 0x40 |
#define INT0_DISABLE GIMSK &= ~0x40 |
#define TIM0_START TIMSK |= 0x01 |
#define TIM0_STOPP TIMSK &= ~0x01 |
#define ICP_INT_ENABLE TIMSK |= 0x20 |
#define ICP_INT_DISABLE TIMSK &= ~0x20 |
#define TIMER1_INT_ENABLE TIMSK |= 0x04 |
#define TIMER1_INT_DISABLE TIMSK &= ~0x04 |
#define TIMER2_INT_ENABLE TIMSK |= 0x40 |
#define TIMER2_INT_DISABLE TIMSK &= ~0x40 |
#define INT0_POS_FLANKE MCUCR |= 0x01 |
#define INT0_ANY_FLANKE MCUCR |= 0x01 |
#define INT0_NEG_FLANKE MCUCR &= ~0x01 |
#define CLR_INT0_FLAG GIFR &= ~0x40 |
#define INIT_INT0_FLANKE MCUCR &= ~0x03; MCUCR |= 0x02; |
#define TIMER0_PRESCALER TCCR0 |
#define ICP_POS_FLANKE TCCR1B |= (1<<ICES1) |
#define ICP_NEG_FLANKE TCCR1B &= ~(1<<ICES1) |
/tags/V0.41/analog.c |
---|
0,0 → 1,77 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
//############################################################################ |
//Init ADC |
void ADC_Init(void) |
//############################################################################ |
{ |
ADCSRA = 0xA6; // Free Run & 1MHZ |
ADMUX = 7 | IntRef; // Kanal 7 |
ADCSRA |= 0x40; // Start |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void AdConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = 0x06 | IntRef; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = 0x06 | IntRef; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
i = ADCW * 4; |
// if(i > 300) i = 300; |
Strom = (i + Strom * 7) / 8; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
//############################################################################ |
//Strom Analogwerte lesen |
unsigned int MessAD(unsigned char channel) |
//############################################################################ |
{ |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
channel |= IntRef; |
ADMUX = channel; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = channel; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
return(ADCW); |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void FastADConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
i = MessAD(6) * 4; |
// i = ADCW * 4; |
if(i > 200) i = 200; |
Strom = i;//(i + Strom * 1) / 2; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
/tags/V0.41/analog.h |
---|
0,0 → 1,6 |
extern void ADC_Init(void); |
extern void GetAnalogWerte(void); |
extern void AdConvert(void); |
extern void FastADConvert(void); |
/tags/V0.41/avr.mak |
---|
0,0 → 1,129 |
# TASKING EDE (Windows based integrated Embedded Development Environment) |
# |
# This makefile has been generated by TASKING EDE |
# |
# Toolchain: TASKING C for C166/ST10 v6.0 r4 |
# |
BINDIR = c:\c166\bin |
INCDIR = c:\c166\include |
LIBDIR = c:\c166\lib |
M166INC = c:\c166\include |
export M166INC |
CC166BIN = c:\c166\bin |
export CC166BIN |
PROJ = avr |
PROJDIR = c:\winavr\projects\flug\bl_mc_0_14 |
PRODDIR = c:\c166 |
OUTDIR = |
OPT_CC = -Ic:\c166\include -xmifp -Ms -FFSC -Ot -OB -OE -zautobitastruct-4 -zautobita-0 -zswitch_tabmem_default -s -wstrict -g -zvolatile_union -A1 -O1 |
OPT_MPP = DEF(_CPU,167) DEF(_EXT,1) DEF(__XPEN,0) DEF(__WRCFG,0) DEF(__CLKEN,0) DEF(__BYTDIS,0) DEF(__ROMEN,0) DEF(__RDYEN0,0) DEF(__SGTDIS,0) DEF(__STKSZ,0) DEF(__MCTC,1) DEF(__RWDC0,0) DEF(__MTTC0,0) DEF(__ALECTL0,0) DEF(__BUSACT0,1) DEF(__RDYEN0,0) DEF(__CSREN0,0) DEF(__CSWEN0,0) DEF(__BUSACT1,0) DEF(__BUSACT2,0) DEF(__BUSACT3,0) DEF(__BUSACT4,0) DEF(EVA,1) DEF(EX_AB,0) DEF(FLOAT,1) DEF(BIT_INIT,0) DEF(MODEL,SMALL) DEF(_USRSTACK,0) DEF(_SINGLE_FP,0) WA(1) |
OPT_AS = PL(60) PW(132) TA(8) WA(1) CHECKCPU16 CHECKBUS18 EX NOM166 SN(reg167.def) |
OPT_LC = _avr.ilo -cf -Ms -xmifp |
OPT_XVW = --single_instance -tcfg sim167.cfg -i -a 100 -b 200 -c 32 -s 26 |
all : "$(PROJ).abs" |
"uart.src" : "uart.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"uart.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "uart.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"uart.obj" : "uart.src" |
"c:\c166\bin\a166.exe" "uart.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"analog.src" : "analog.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"analog.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "analog.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"analog.obj" : "analog.src" |
"c:\c166\bin\a166.exe" "analog.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"interrupt4.src" : "interrupt4.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"interrupt4.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "interrupt4.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"interrupt4.obj" : "interrupt4.src" |
"c:\c166\bin\a166.exe" "interrupt4.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"main.src" : "main.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"main.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "main.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"main.obj" : "main.src" |
"c:\c166\bin\a166.exe" "main.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"ppm_decode.src" : "ppm_decode.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"ppm_decode.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "ppm_decode.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"ppm_decode.obj" : "ppm_decode.src" |
"c:\c166\bin\a166.exe" "ppm_decode.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"printf_p.src" : "printf_p.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"printf_p.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "printf_p.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"printf_p.obj" : "printf_p.src" |
"c:\c166\bin\a166.exe" "printf_p.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"timer0.src" : "timer0.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"timer0.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "timer0.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"timer0.obj" : "timer0.src" |
"c:\c166\bin\a166.exe" "timer0.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"twislave.src" : "twislave.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"twislave.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "twislave.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"twislave.obj" : "twislave.src" |
"c:\c166\bin\a166.exe" "twislave.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"$(PROJ).out" : "uart.obj" "analog.obj" "interrupt4.obj" "main.obj" "ppm_decode.obj" |
"$(PROJ).out" : "printf_p.obj" "timer0.obj" "twislave.obj" "_avr.ilo" |
"c:\c166\bin\cc166.exe" -o $@ -f <<EOF |
${separate "\n" $(match .obj $!) $(match .lno $!) $(match .lib $!) $(OPT_LC)} |
EOF |
"$(PROJ).abs" : "$(PROJ).out" |
"c:\c166\bin\ieee166.exe" $! $@ |
# Copyright (c) 2001 Altium, Ltd. |
# Serial: 979910-094 |
# EDE Version: 2.7 r5 |
/tags/V0.41/avr.opm |
---|
0,0 → 1,4 |
-G "C:\WinAVR\Projects\Flug\BL_MC_0_14\" |
-err "avr.err" |
-r |
-f "avr.mak" |
/tags/V0.41/avr_ctrl.psp |
---|
0,0 → 1,16 |
;Codewright Project Space File (do not remove or modify this line) |
[State] |
StateWindowFrame=10,18,939,1018,0x43097fca |
ProjSpaceFlags=0x00000000, 1 |
ProjViewSetShow=Abb |
[Project] |
ConfigSetUserWorkspace='' |
ConfigSetUserWorkspaceParser='' |
ConfigSetUserWorkspaceTimeStamp=0 |
ConfigSetUserWorkspaceAutoSync=0 |
[Project.".\avr.pjt"] |
[Project."..\Flight-Ctrl_V0_05\AVR.pjt"] |
/tags/V0.41/main.c |
---|
0,0 → 1,771 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Copyright (c) 12.2007 Holger Buss |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung oder Nutzung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, our webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int PWM = 0; |
unsigned int Strom = 0,RuheStrom; //ca. in 0,1A |
unsigned char Strom_max = 0; |
unsigned char Mittelstrom = 0; |
unsigned int Drehzahl = 0; // in 100UPM 60 = 6000 |
unsigned int KommutierDelay = 10; |
unsigned int I2C_Timeout = 0; |
unsigned int SIO_Timeout = 0; |
unsigned int SollDrehzahl = 0; |
unsigned int IstDrehzahl = 0; |
unsigned int DrehZahlTabelle[256];//vorberechnete Werte zur Drehzahlerfassung |
unsigned char ZeitFuerBerechnungen = 1; |
unsigned char MotorAnwerfen = 0; |
unsigned char MotorGestoppt = 1; |
unsigned char MaxPWM = MAX_PWM; |
unsigned int CntKommutierungen = 0; |
unsigned int SIO_Drehzahl = 0; |
unsigned char ZeitZumAdWandeln = 1; |
unsigned char MotorAdresse = 1; |
unsigned char PPM_Betrieb = 1; |
unsigned char HwVersion; |
unsigned char IntRef = 0; |
unsigned int MinUpmPulse; |
//############################################################################ |
// |
void SetPWM(void) |
//############################################################################ |
{ |
unsigned char tmp_pwm; |
tmp_pwm = PWM; |
if(tmp_pwm > MaxPWM) // Strombegrenzung |
{ |
tmp_pwm = MaxPWM; |
PORTC |= ROT; |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
PORTD &= ~0x38; |
PORTC |= ROT; |
DebugOut.Analog[6]++; |
Strom--; |
} |
else |
{ |
#ifdef _32KHZ |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
#ifdef _16KHZ |
//OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
} |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
DebugOut.Analog[4] = OCR2; |
// DebugOut.Analog[5] = PWM; |
} |
//############################################################################ |
// |
void PWM_Init(void) |
//############################################################################ |
{ |
PWM_OFF; |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
/* TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
*/ |
} |
//############################################################################ |
// |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
while((TCNT0 - dauer) & 0x80); |
} |
void RotBlink(unsigned char anz) |
{ |
sei(); // Interrupts ein |
while(anz--) |
{ |
PORTC |= ROT; |
Delay_ms(300); |
PORTC &= ~ROT; |
Delay_ms(300); |
} |
Delay_ms(1000); |
} |
//############################################################################ |
// |
char Anwerfen(unsigned char pwm) |
//############################################################################ |
{ |
unsigned long timer = 300,i; |
DISABLE_SENSE_INT; |
PWM = 5; |
SetPWM(); |
Manuell(); |
// Delay_ms(200); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) |
{ |
FastADConvert(); |
if(Strom > 120) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
} |
PWM = pwm; |
while(1) |
{ |
for(i=0;i<timer; i++) |
{ |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
Wait(100); // warten |
} |
DebugAusgaben(); |
FastADConvert(); |
if(Strom > 60) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
timer-= timer/15+1; |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return(1); } |
Manuell(); |
Phase++; |
Phase %= 6; |
AdConvert(); |
PWM = pwm; |
SetPWM(); |
if(SENSE) |
{ |
PORTD ^= GRUEN; |
} |
} |
} |
/* |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
*/ |
#define TEST_STROMGRENZE 120 |
unsigned char DelayM(unsigned int timer) |
{ |
while(timer--) |
{ |
FastADConvert(); |
if(Strom > (TEST_STROMGRENZE + RuheStrom)) |
{ |
FETS_OFF; |
return(1); |
} |
} |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
{ |
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
return(0); |
} |
/* |
void ShowSense(void) |
{ |
if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
*/ |
#define HIGH_A_EIN PORTB |= 0x08 |
#define HIGH_B_EIN PORTB |= 0x04 |
#define HIGH_C_EIN PORTB |= 0x02 |
#define LOW_A_EIN PORTD |= 0x08 |
#define LOW_B_EIN PORTD |= 0x10 |
#define LOW_C_EIN PORTD |= 0x20 |
void MotorTon(void) |
//############################################################################ |
{ |
unsigned char ADR_TAB[5] = {0,0,2,1,3}; |
unsigned int timer = 300,i; |
unsigned int t = 0; |
unsigned char anz = 0,MosfetOkay = 0, grenze = 50; |
PORTC &= ~ROT; |
Delay_ms(300 * ADR_TAB[MotorAdresse]); |
DISABLE_SENSE_INT; |
cli();//Globale Interrupts Ausschalten |
uart_putchar('\n'); |
STEUER_OFF; |
Strom_max = 0; |
DelayM(50); |
RuheStrom = Strom_max; |
// uart_putchar(RuheStrom + 'A'); |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Strom = 0; |
/* |
LOW_B_EIN; |
HIGH_A_EIN; |
if(DelayM(3)) |
{ |
anz = 1; |
uart_putchar('1'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_A_EIN; |
HIGH_B_EIN; |
if(DelayM(3)) |
{ |
anz = 2; |
uart_putchar('2'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_B_EIN; // Low C ein |
HIGH_C_EIN; // High B ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('3'); |
} |
FETS_OFF; |
Delay(1000); |
LOW_A_EIN; // Low A ein; und A gegen C |
HIGH_C_EIN; // High C ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('7'); |
} |
FETS_OFF; |
DelayM(10000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
*/ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ LOW-Mosfets auf Schalten und Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_A_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_A_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;} |
Delay(5); |
} |
Delay(10000); |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_B_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_B_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); FETS_OFF;break;} |
Delay(5); |
} |
Strom = 0; |
Delay(10000); |
for(i=0;i<t;i++) |
{ |
LOW_C_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_C_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); FETS_OFF; break;} |
Delay(5); |
} |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_A; |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
LOW_C_EIN; // Low C ein |
Strom = 0; |
#define TONDAUER 40000 |
#define SOUND_E 1 // 1 |
#define SOUND1_A 300 |
#define SOUND2_A 330 |
#define SOUND3_A 360 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_A_EIN; // Test A |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
FETS_OFF; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Low-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// SENSE_B; |
LOW_A_EIN; // Low A ein |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(0) > 128) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
//++++++++++++++++++++++++++++++++++++ |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(2) > 128) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(1) > 128) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
sei();//Globale Interrupts Einschalten |
// Delay_ms(250 * MotorAdresse); |
/* |
LOW_A_EIN; // Low B ein |
#define SOUND8_A 650 |
for(i=0; i<(TONDAUER / SOUND8_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
PORTB = 0; |
Delay(SOUND8_A); |
} |
*/ |
Delay_ms(300 * (4-ADR_TAB[MotorAdresse])); |
if(!(MosfetOkay & 0x01)) { anz = 1; UDR='A'; } else |
if(!(MosfetOkay & 0x02)) { anz = 2; UDR='B'; } else |
if(!(MosfetOkay & 0x04)) { anz = 3; UDR='C'; } else |
if(!(MosfetOkay & 0x08)) { anz = 4; UDR='a'; } else |
if(!(MosfetOkay & 0x10)) { anz = 5; UDR='b'; } else |
if(!(MosfetOkay & 0x20)) { anz = 6; UDR='c'; } |
// if(anz) Delay_ms(1000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
RotBlink(anz); |
uart_putchar('.'); |
} |
//############################################################################ |
// |
unsigned char SollwertErmittlung(void) |
//############################################################################ |
{ |
static unsigned int sollwert = 0; |
unsigned int ppm; |
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
PPM_Betrieb = 0; |
ICP_INT_DISABLE; |
PORTC &= ~ROT; |
} |
else |
if(anz_ppm_werte > 20) // es gibt gültige PPM-Daten |
{ |
PPM_Betrieb = 1; |
ppm = PPM_Signal; |
if(ppm > 300) ppm = 0; // ungültiges Signal |
if(ppm > 200) ppm = 200; |
if(ppm <= MIN_PPM) sollwert = 0; |
else |
{ |
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM); |
} |
PORTC &= ~ROT; |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
PORTC |= ROT; |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
PPM_Betrieb = 0; |
PORTC &= ~ROT; |
ICP_INT_DISABLE; |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
return(sollwert); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
char altPhase = 0; |
int test = 0; |
unsigned int Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
DDRC = 0x08; |
PORTC = 0x08; |
DDRD = 0x3A; |
PORTD = 0x00; |
DDRB = 0x0E; |
PORTB = 0x31; |
#if (MOTORADRESSE == 0) |
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl |
for(test=0;test<500;test++); |
if(PINB & ADR1) |
{ |
if (PINB & ADR2) MotorAdresse = 1; |
else MotorAdresse = 2; |
} |
else |
{ |
if (PINB & ADR2) MotorAdresse = 3; |
else MotorAdresse = 4; |
} |
HwVersion = 11; |
#else |
MotorAdresse = MOTORADRESSE; |
HwVersion = 10; |
#endif |
if(PIND & 0x80) {HwVersion = 12; IntRef = 0xc0;} |
DDRD = 0xBA; |
UART_Init(); |
Timer0_Init(); |
sei();//Globale Interrupts Einschalten |
// Am Blinken erkennt man die richtige Motoradresse |
/* |
for(test=0;test<5;test++) |
{ |
if(test == MotorAdresse) PORTD |= GRUEN; |
Delay_ms(150); |
PORTD &= ~GRUEN; |
Delay_ms(250); |
} |
Delay_ms(500); |
*/ |
// UART_Init(); // war doppelt |
PWM_Init(); |
InitIC2_Slave(0x50); |
InitPPM(); |
Blink = SetDelay(101); |
Blink2 = SetDelay(102); |
MinUpmPulse = SetDelay(103); |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)) |
{ |
if(SollwertErmittlung()) break; |
} |
GRN_ON; |
PWM = 0; |
SetPWM(); |
SFIOR = 0x08; // Analog Comperator ein |
ADMUX = 1; |
MinUpmPulse = SetDelay(10); |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
if(!SollwertErmittlung()) MotorTon(); |
//MotorTon(); |
PORTB = 0x31; // Pullups wieder einschalten |
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung |
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder |
while (1) |
{ |
//ShowSense(); |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt |
{ |
MotorGestoppt = 0; |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
MinUpmPulse = SetDelay(250); // Timeout, falls ein Motor stehen bleibt |
altPhase = Phase; |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!PWM) // Sollwert == 0 |
{ |
MotorAnwerfen = 0; // kein Startversuch |
ZeitFuerBerechnungen = 0; |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(MotorGestopptTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
STEUER_OFF; |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
MotorGestopptTimer = SetDelay(1500); |
} |
if(MotorGestoppt && !TEST_SCHUB) PWM = 0; |
SetPWM(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
{ |
if(MotorGestoppt) |
{ |
GRN_ON; |
FastADConvert(); |
} |
if(SIO_DEBUG) |
{ |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
} |
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung |
if(CheckDelay(MittelstromTimer)) |
{ |
MittelstromTimer = SetDelay(50); // alle 50ms |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
else if(Mittelstrom > Strom) Mittelstrom--; |
if(Strom > MAX_STROM) MaxPWM -= MaxPWM / 32; |
if((Mittelstrom > LIMIT_STROM))// Strom am Limit? |
{ |
if(MaxPWM) MaxPWM--;// dann die Maximale PWM herunterfahren |
PORTC |= ROT; |
} |
else |
{ |
if(MaxPWM < MAX_PWM) MaxPWM++; |
} |
} |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
{ |
DrehzahlMessTimer = SetDelay(10); |
SIO_Drehzahl = CntKommutierungen;//(6 * CntKommutierungen) / (POLANZAHL / 2); |
CntKommutierungen = 0; |
// if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
} |
#if TEST_SCHUB == 1 |
{ |
if(CheckDelay(TestschubTimer)) |
{ |
TestschubTimer = SetDelay(1500); |
switch(test) |
{ |
case 0: PWM = 50; test++; break; |
case 1: PWM = 130; test++; break; |
case 2: PWM = 60; test++; break; |
case 3: PWM = 140; test++; break; |
case 4: PWM = 150; test = 0; break; |
default: test = 0; |
} |
} |
} |
#endif |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
{ |
MotorGestoppt = 1; |
DISABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
if(MotorAnwerfen) |
{ |
PORTC &= ~ROT; |
Strom_max = 0; |
MotorAnwerfen = 0; |
if(Anwerfen(10)) |
{ |
GRN_ON; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(20); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 15; |
SetPWM(); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) // kurz Durchstarten |
{ |
if(Strom > LIMIT_STROM/2) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
MotorAnwerfen = 1; |
} |
} |
// Drehzahlmessung wieder aufsetzen |
DrehzahlMessTimer = SetDelay(50); |
altPhase = 7; |
} |
else if(SollwertErmittlung()) MotorAnwerfen = 1; |
} |
} |
} // ZeitFuerBerechnungen |
} // while(1) - Hauptschleife |
} |
/tags/V0.41/main.elf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.41/main.h |
---|
0,0 → 1,142 |
#ifndef _MAIN_H |
#define _MAIN_H |
//#define MOTORADRESSE 0 // Adresse (1-4) 0 = Motoradresse über Lötjumper auf BL-Ctrl V1.1 |
#define MANUELL_PWM 0 // zur manuellen Vorgabe der PWM Werte: 0-255 |
#define TEST_MANUELL 0 // zum Testen der Hardware ohne Kommutierungsdetektion Werte: 0-255 (PWM) |
#define TEST_SCHUB 0 // Erzeugt ein Schubmuster Werte: 0 = normal 1 = Test |
#define POLANZAHL 12 // Anzahl der Pole (Magnete) Wird nur zur Drehzahlausgabe über Debug gebraucht |
#define MAX_PWM 255 |
#define MIN_PWM 3 |
#define MIN_PPM 10 // ab hier (PPM-Signal) schaltet der Regler erst ein |
#define FILTER_PPM 7 // wie stark soll das PPM-Signal gefiltert werden (Werte: 0-30)? |
#define SIO_DEBUG 0 // Testwertausgaben auf der seriellen Schnittstelle |
#define X3D_SIO 0 // serielles Protokoll des X3D (38400Bd) Achtung: dann muss SIO_DEBUG = 0 sein |
#define _16KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define _32KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define FDD6637_IRLR7843 1 // bessere MosFet bestückt? bewirkt höhere Stromgrenzen |
#ifdef _16KHZ |
#if FDD_IRLR == 1 // bessere Fets = mehr Strom zulassen |
#define MAX_STROM 200 // ab ca. 20A PWM ausschalten |
#define LIMIT_STROM 120 // ab ca. 12A PWM begrenzen |
#else |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 65 // ab ca. 6,5A PWM begrenzen |
#endif |
#endif |
#ifdef _32KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 50 // ab ca. 5,0A PWM begrenzen |
#endif |
#define SYSCLK 8000000L //Quarz Frequenz in Hz |
#define GRN_ON {if(HwVersion < 12) PORTD |= GRUEN; else PORTD &= ~GRUEN;} |
#define GRN_OFF {if(HwVersion > 11) PORTD |= GRUEN; else PORTD &= ~GRUEN;} |
//Robbe Roxxy 2824-34 mit Todd 10x4,5 bei 16kHz |
//PWM Strom Schub |
//10 0,18A 21g |
//20 0,30A 38g |
//30 0,40A 49g |
//40 0,54A 60g |
//50 0,70A 83g |
//60 0,95A 102g |
//70 1,25A 128g |
//80 1,50A 151g |
//90 1,83A 175g |
//100 2,25A 206g |
//110 2,66A 228g |
//120 3,10A 257g |
//130 3,55A 278g |
//140 4,00A 305g |
//150 4,50A 330g |
//160 5,30A 355g |
//170 5,85A 387g |
//180 6,40A 400g |
//190 7,10A 425g |
//200 7,60A 460g |
//0,5A 63g 14% |
//1,0A 110g 24% |
//1,5A 170g 32% |
//2,0A 195g 37% |
//2,5A 230g 41% |
//3,0A 260g 46% |
//3,5A 290g 50% |
//4,0A 310g 53% |
//4,5A 340g 58% |
//5,0A 360g 63% |
//5,5A 380g 67% |
//6,0A 400g 68% |
//6,5A 420g 70% |
//7,0A 450g 75% |
//7,5A 460g 78% |
//8,0A 475g 82% |
//9,0A 550g 86% |
//11 A 600g 100% |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "twislave.h" |
#include "old_macros.h" |
#include "analog.h" |
#include "uart.h" |
#include "timer0.h" |
#include "BLMC.h" |
#include "PPM_Decode.h" |
extern unsigned int I2C_Timeout; |
extern unsigned int SIO_Timeout; |
extern unsigned int PWM; |
extern unsigned int Strom; //ca. in 0,1A |
extern unsigned char Strom_max; |
extern unsigned char Mittelstrom; |
extern unsigned int CntKommutierungen; |
extern unsigned char MotorAnwerfen; |
extern unsigned char MotorGestoppt; |
extern unsigned char ZeitZumAdWandeln; |
extern unsigned char MaxPWM; |
extern unsigned char MotorAdresse; |
extern unsigned char PPM_Betrieb; |
extern unsigned char HwVersion; |
extern unsigned char IntRef; |
#define ROT 0x08 |
#define GRUEN 0x80 |
#define ADR1 0x40 // für Motoradresswahl |
#define ADR2 0x80 // |
#if defined(__AVR_ATmega8__) |
# define OC1 PB1 |
# define DDROC DDRB |
# define OCR OCR1A |
# define PWM10 WGM10 |
# define PWM11 WGM11 |
#endif |
#endif //_MAIN_H |
/tags/V0.41/main.lss |
---|
0,0 → 1,4534 |
main.elf: file format elf32-avr |
Sections: |
Idx Name Size VMA LMA File off Algn |
0 .text 00001bec 00000000 00000000 00000094 2**0 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
1 .data 00000024 00800060 00001bec 00001c80 2**0 |
CONTENTS, ALLOC, LOAD, DATA |
2 .bss 00000156 00800084 00800084 00001ca4 2**0 |
ALLOC |
3 .noinit 00000000 008001da 008001da 00001ca4 2**0 |
CONTENTS |
4 .eeprom 00000000 00810000 00810000 00001ca4 2**0 |
CONTENTS |
5 .stab 0000036c 00000000 00000000 00001ca4 2**2 |
CONTENTS, READONLY, DEBUGGING |
6 .stabstr 00000084 00000000 00000000 00002010 2**0 |
CONTENTS, READONLY, DEBUGGING |
7 .debug_aranges 000000b4 00000000 00000000 00002094 2**0 |
CONTENTS, READONLY, DEBUGGING |
8 .debug_pubnames 000006f5 00000000 00000000 00002148 2**0 |
CONTENTS, READONLY, DEBUGGING |
9 .debug_info 00001a41 00000000 00000000 0000283d 2**0 |
CONTENTS, READONLY, DEBUGGING |
10 .debug_abbrev 00000774 00000000 00000000 0000427e 2**0 |
CONTENTS, READONLY, DEBUGGING |
11 .debug_line 0000169d 00000000 00000000 000049f2 2**0 |
CONTENTS, READONLY, DEBUGGING |
12 .debug_str 00000874 00000000 00000000 0000608f 2**0 |
CONTENTS, READONLY, DEBUGGING |
Disassembly of section .text: |
00000000 <__vectors>: |
0: 0c 94 85 00 jmp 0x10a <__init> |
4: 0c 94 7e 0b jmp 0x16fc <__vector_1> |
8: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
10: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
14: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
18: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
1c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
20: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
24: 0c 94 67 09 jmp 0x12ce <__vector_9> |
28: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
2c: 0c 94 96 0b jmp 0x172c <__vector_11> |
30: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
34: 0c 94 18 02 jmp 0x430 <__vector_13> |
38: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
3c: 0c 94 e3 01 jmp 0x3c6 <__vector_15> |
40: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
44: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
48: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
4c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
50: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
00000054 <__ctors_end>: |
54: 20 2d mov r18, r0 |
56: 2d 20 and r2, r13 |
58: 52 65 ori r21, 0x52 ; 82 |
5a: 6d 6f ori r22, 0xFD ; 253 |
5c: 74 65 ori r23, 0x54 ; 84 |
5e: 20 20 and r2, r0 |
60: 2d 2d mov r18, r13 |
62: 20 20 and r2, r0 |
64: 20 20 and r2, r0 |
66: 20 20 and r2, r0 |
... |
00000069 <__c.1>: |
69: 20 2d 2d 20 44 69 73 70 6c 61 79 20 2d 2d 20 20 -- Display -- |
79: 20 20 20 20 00 . |
0000007e <__c.2>: |
7e: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |
8e: 20 20 20 20 00 . |
00000093 <__c.3>: |
93: 20 20 77 77 77 2e 4d 69 63 72 6f 53 50 53 2e 63 www.MicroSPS.c |
a3: 6f 6d 20 20 00 om . |
000000a8 <__c.2>: |
a8: 25 73 00 %s. |
000000ab <__c.3>: |
ab: 25 73 00 %s. |
000000ae <__c.4>: |
ae: 25 73 00 %s. |
000000b1 <__c.5>: |
b1: 25 73 00 %s. |
000000b4 <__c.3>: |
b4: 56 65 72 62 69 6e 64 65 6e 20 6d 69 74 00 Verbinden mit. |
000000c2 <__c.4>: |
c2: 4d 69 63 72 6f 53 50 53 3a 25 32 69 20 00 MicroSPS:%2i . |
000000d0 <__c.5>: |
d0: 4d 61 78 20 41 64 72 65 73 73 65 00 Max Adresse. |
000000dc <__c.6>: |
dc: 25 32 69 20 00 %2i . |
000000e1 <__c.7>: |
e1: 43 68 65 63 6b 73 75 6d 00 Checksum. |
000000ea <__c.8>: |
ea: 45 72 72 6f 72 73 3a 25 35 69 20 00 Errors:%5i . |
000000f6 <__c.9>: |
f6: 44 69 73 70 6c 61 79 00 Display. |
000000fe <__c.10>: |
fe: 5a 65 69 6c 65 6e 3a 25 31 69 20 00 Zeilen:%1i . |
0000010a <__init>: |
10a: 11 24 eor r1, r1 |
10c: 1f be out 0x3f, r1 ; 63 |
10e: cf e5 ldi r28, 0x5F ; 95 |
110: d8 e0 ldi r29, 0x08 ; 8 |
112: de bf out 0x3e, r29 ; 62 |
114: cd bf out 0x3d, r28 ; 61 |
00000116 <__do_copy_data>: |
116: 10 e0 ldi r17, 0x00 ; 0 |
118: a0 e6 ldi r26, 0x60 ; 96 |
11a: b0 e0 ldi r27, 0x00 ; 0 |
11c: ec ee ldi r30, 0xEC ; 236 |
11e: fb e1 ldi r31, 0x1B ; 27 |
120: 02 c0 rjmp .+4 ; 0x126 <.do_copy_data_start> |
00000122 <.do_copy_data_loop>: |
122: 05 90 lpm r0, Z+ |
124: 0d 92 st X+, r0 |
00000126 <.do_copy_data_start>: |
126: a4 38 cpi r26, 0x84 ; 132 |
128: b1 07 cpc r27, r17 |
12a: d9 f7 brne .-10 ; 0x122 <.do_copy_data_loop> |
0000012c <__do_clear_bss>: |
12c: 11 e0 ldi r17, 0x01 ; 1 |
12e: a4 e8 ldi r26, 0x84 ; 132 |
130: b0 e0 ldi r27, 0x00 ; 0 |
132: 01 c0 rjmp .+2 ; 0x136 <.do_clear_bss_start> |
00000134 <.do_clear_bss_loop>: |
134: 1d 92 st X+, r1 |
00000136 <.do_clear_bss_start>: |
136: aa 3d cpi r26, 0xDA ; 218 |
138: b1 07 cpc r27, r17 |
13a: e1 f7 brne .-8 ; 0x134 <.do_clear_bss_loop> |
13c: 0c 94 e5 00 jmp 0x1ca <main> |
00000140 <__bad_interrupt>: |
140: 0c 94 00 00 jmp 0x0 <__vectors> |
00000144 <Sekundentakt_Init>: |
unsigned int IntervallDebug = 250, IntervallDisplay = 120; |
void Sekundentakt_Init(void) |
{ |
_SekTimer = SetDelay(1000); |
144: 88 ee ldi r24, 0xE8 ; 232 |
146: 93 e0 ldi r25, 0x03 ; 3 |
148: 0e 94 a8 09 call 0x1350 <SetDelay> |
14c: 90 93 91 00 sts 0x0091, r25 |
150: 80 93 90 00 sts 0x0090, r24 |
154: 08 95 ret |
00000156 <Sekundentakt>: |
} |
void Sekundentakt(void) |
{ |
if(CheckDelay(_SekTimer)) |
156: 80 91 90 00 lds r24, 0x0090 |
15a: 90 91 91 00 lds r25, 0x0091 |
15e: 0e 94 b1 09 call 0x1362 <CheckDelay> |
162: 88 23 and r24, r24 |
164: 31 f1 breq .+76 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
GetKeyboard(); |
166: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
_SekTimer += 1000; |
16a: 80 91 90 00 lds r24, 0x0090 |
16e: 90 91 91 00 lds r25, 0x0091 |
172: 88 51 subi r24, 0x18 ; 24 |
174: 9c 4f sbci r25, 0xFC ; 252 |
176: 90 93 91 00 sts 0x0091, r25 |
17a: 80 93 90 00 sts 0x0090, r24 |
if(!CntDatensaetzeProSekunde) UebertragungUnterbrochen = 1; else UebertragungUnterbrochen = 0; |
17e: 80 91 66 00 lds r24, 0x0066 |
182: 88 23 and r24, r24 |
184: 21 f4 brne .+8 ; 0x18e <Sekundentakt+0x38> |
186: 81 e0 ldi r24, 0x01 ; 1 |
188: 80 93 84 00 sts 0x0084, r24 |
18c: 02 c0 rjmp .+4 ; 0x192 <Sekundentakt+0x3c> |
18e: 10 92 84 00 sts 0x0084, r1 |
CntDatensaetzeProSekunde = 0; |
192: 10 92 66 00 sts 0x0066, r1 |
if(++Sekunde == 60) |
196: 80 91 8d 00 lds r24, 0x008D |
19a: 8f 5f subi r24, 0xFF ; 255 |
19c: 80 93 8d 00 sts 0x008D, r24 |
1a0: 8c 33 cpi r24, 0x3C ; 60 |
1a2: 39 f4 brne .+14 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
Sekunde = 0; |
1a4: 10 92 8d 00 sts 0x008D, r1 |
Minute++; |
1a8: 80 91 8c 00 lds r24, 0x008C |
1ac: 8f 5f subi r24, 0xFF ; 255 |
1ae: 80 93 8c 00 sts 0x008C, r24 |
1b2: 08 95 ret |
000001b4 <Init>: |
} |
} |
} |
void Init(void) |
{ |
VersionInfo.Hauptversion = 0; |
1b4: 10 92 c9 00 sts 0x00C9, r1 |
VersionInfo.Nebenversion = 99; |
1b8: 83 e6 ldi r24, 0x63 ; 99 |
1ba: 80 93 ca 00 sts 0x00CA, r24 |
VersionInfo.PCKompatibel = 1; |
1be: 81 e0 ldi r24, 0x01 ; 1 |
1c0: 80 93 cb 00 sts 0x00CB, r24 |
VersionInfo.Commercial = 0x00; |
1c4: 10 92 cc 00 sts 0x00CC, r1 |
1c8: 08 95 ret |
000001ca <main>: |
} |
#define MENU 0 |
#define REMOTE 1 |
//############################################################################ |
//Hauptprogramm |
void main (void) |
//############################################################################ |
{ |
1ca: ca e5 ldi r28, 0x5A ; 90 |
1cc: d8 e0 ldi r29, 0x08 ; 8 |
1ce: de bf out 0x3e, r29 ; 62 |
1d0: cd bf out 0x3d, r28 ; 61 |
char z,txt[]= {"Moin"},key,key_old = 255; |
1d2: de 01 movw r26, r28 |
1d4: 11 96 adiw r26, 0x01 ; 1 |
1d6: e7 e6 ldi r30, 0x67 ; 103 |
1d8: f0 e0 ldi r31, 0x00 ; 0 |
1da: 85 e0 ldi r24, 0x05 ; 5 |
1dc: 01 90 ld r0, Z+ |
1de: 0d 92 st X+, r0 |
1e0: 81 50 subi r24, 0x01 ; 1 |
1e2: e1 f7 brne .-8 ; 0x1dc <main+0x12> |
int test = 0; |
unsigned int DelayTast; |
unsigned int DelayDaten,DelayDisplay; |
unsigned char mode = REMOTE; |
1e4: 91 e0 ldi r25, 0x01 ; 1 |
1e6: b9 2e mov r11, r25 |
unsigned char neueDatenuebertragung = 1; |
UART_Init(); |
1e8: 0e 94 cc 04 call 0x998 <UART_Init> |
LCD_Init(); |
1ec: 0e 94 1f 06 call 0xc3e <LCD_Init> |
UART_Init(); |
1f0: 0e 94 cc 04 call 0x998 <UART_Init> |
Timer1_Init(); |
1f4: 0e 94 9e 09 call 0x133c <Timer1_Init> |
Keyboard_Init(); |
1f8: 0e 94 c9 09 call 0x1392 <Keyboard_Init> |
Sekundentakt_Init(); |
1fc: 0e 94 a2 00 call 0x144 <Sekundentakt_Init> |
InitIR(); |
200: 0e 94 67 0b call 0x16ce <InitIR> |
ADC_Init(); |
204: 0e 94 42 0c call 0x1884 <ADC_Init> |
Init(); |
208: 0e 94 da 00 call 0x1b4 <Init> |
sei ();//Globale Interrupts Einschalten |
20c: 78 94 sei |
DDRB = 0xff; |
20e: 8f ef ldi r24, 0xFF ; 255 |
210: 87 bb out 0x17, r24 ; 23 |
PORTB = 0x00; |
212: 18 ba out 0x18, r1 ; 24 |
LCD_Clear; |
214: 81 e0 ldi r24, 0x01 ; 1 |
216: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
21a: 0e 94 c9 05 call 0xb92 <_long_delay> |
/* while(1) |
*/ |
DelayTast = SetDelay(80); |
21e: 80 e5 ldi r24, 0x50 ; 80 |
220: 90 e0 ldi r25, 0x00 ; 0 |
222: 0e 94 a8 09 call 0x1350 <SetDelay> |
226: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
228: 88 ec ldi r24, 0xC8 ; 200 |
22a: 90 e0 ldi r25, 0x00 ; 0 |
22c: 0e 94 a8 09 call 0x1350 <SetDelay> |
230: 8c 01 movw r16, r24 |
DelayDisplay = SetDelay(300); |
232: 8c e2 ldi r24, 0x2C ; 44 |
234: 91 e0 ldi r25, 0x01 ; 1 |
236: 0e 94 a8 09 call 0x1350 <SetDelay> |
23a: 6c 01 movw r12, r24 |
ClearIntervalle(); |
23c: 0e 94 2e 05 call 0xa5c <ClearIntervalle> |
while (1) |
{ |
if(mode == MENU) |
240: bb 20 and r11, r11 |
242: 11 f5 brne .+68 ; 0x288 <main+0xbe> |
{ |
Delay_ms(10); |
244: 8a e0 ldi r24, 0x0A ; 10 |
246: 90 e0 ldi r25, 0x00 ; 0 |
248: 0e 94 bc 09 call 0x1378 <Delay_ms> |
key = GetKeyboard(); |
24c: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
Menu(key); |
250: 99 27 eor r25, r25 |
252: 0e 94 64 0a call 0x14c8 <Menu> |
if(_TASTE5) |
256: cb 9b sbis 0x19, 3 ; 25 |
258: f5 cf rjmp .-22 ; 0x244 <main+0x7a> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
25a: 8a e0 ldi r24, 0x0A ; 10 |
25c: 90 e0 ldi r25, 0x00 ; 0 |
25e: 0e 94 bc 09 call 0x1378 <Delay_ms> |
262: cb 99 sbic 0x19, 3 ; 25 |
264: fa cf rjmp .-12 ; 0x25a <main+0x90> |
mode = REMOTE; |
266: 81 e0 ldi r24, 0x01 ; 1 |
268: b8 2e mov r11, r24 |
DelayTast = SetDelay(100); |
26a: 84 e6 ldi r24, 0x64 ; 100 |
26c: 90 e0 ldi r25, 0x00 ; 0 |
26e: 0e 94 a8 09 call 0x1350 <SetDelay> |
272: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
274: 88 ec ldi r24, 0xC8 ; 200 |
276: 90 e0 ldi r25, 0x00 ; 0 |
278: 0e 94 a8 09 call 0x1350 <SetDelay> |
27c: 8c 01 movw r16, r24 |
LCD_Clear; |
27e: 8b 2d mov r24, r11 |
280: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
284: 0e 94 c9 05 call 0xb92 <_long_delay> |
} |
} |
else |
if(mode == REMOTE) |
288: 81 e0 ldi r24, 0x01 ; 1 |
28a: b8 16 cp r11, r24 |
28c: c9 f6 brne .-78 ; 0x240 <main+0x76> |
{ |
BearbeiteRxDaten(); |
28e: 0e 94 fe 03 call 0x7fc <BearbeiteRxDaten> |
if(CheckDelay(DelayDaten)) |
292: c8 01 movw r24, r16 |
294: 0e 94 b1 09 call 0x1362 <CheckDelay> |
298: 88 23 and r24, r24 |
29a: c9 f3 breq .-14 ; 0x28e <main+0xc4> |
{ |
Sekundentakt(); |
29c: 0e 94 ab 00 call 0x156 <Sekundentakt> |
DelayDaten = SetDelay(10); |
2a0: 8a e0 ldi r24, 0x0A ; 10 |
2a2: 90 e0 ldi r25, 0x00 ; 0 |
2a4: 0e 94 a8 09 call 0x1350 <SetDelay> |
2a8: 8c 01 movw r16, r24 |
if(CheckDelay(DelayDisplay)) |
2aa: c6 01 movw r24, r12 |
2ac: 0e 94 b1 09 call 0x1362 <CheckDelay> |
2b0: 88 23 and r24, r24 |
2b2: 39 f0 breq .+14 ; 0x2c2 <main+0xf8> |
{ |
DelayDisplay = SetDelay(300); |
2b4: 8c e2 ldi r24, 0x2C ; 44 |
2b6: 91 e0 ldi r25, 0x01 ; 1 |
2b8: 0e 94 a8 09 call 0x1350 <SetDelay> |
2bc: 6c 01 movw r12, r24 |
PollDisplay = 1; |
2be: b0 92 ed 00 sts 0x00ED, r11 |
} |
key = GetKeyboard2(); |
2c2: 0e 94 57 0a call 0x14ae <GetKeyboard2> |
DatenUebertragung(key); |
2c6: 99 27 eor r25, r25 |
2c8: 0e 94 51 05 call 0xaa2 <DatenUebertragung> |
if(UebertragungUnterbrochen) |
2cc: 80 91 84 00 lds r24, 0x0084 |
2d0: 88 23 and r24, r24 |
2d2: 81 f1 breq .+96 ; 0x334 <main+0x16a> |
{ |
//01234567890123456789 |
LCD_printfxy(0,0," -- Remote -- "); |
2d4: 60 e0 ldi r22, 0x00 ; 0 |
2d6: 86 2f mov r24, r22 |
2d8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2dc: 84 e5 ldi r24, 0x54 ; 84 |
2de: 90 e0 ldi r25, 0x00 ; 0 |
2e0: 9f 93 push r25 |
2e2: 8f 93 push r24 |
2e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1," -- Display -- "); |
2e8: 61 e0 ldi r22, 0x01 ; 1 |
2ea: 80 e0 ldi r24, 0x00 ; 0 |
2ec: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2f0: 0f 90 pop r0 |
2f2: 0f 90 pop r0 |
2f4: 89 e6 ldi r24, 0x69 ; 105 |
2f6: 90 e0 ldi r25, 0x00 ; 0 |
2f8: 9f 93 push r25 |
2fa: 8f 93 push r24 |
2fc: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,2," "); |
300: 62 e0 ldi r22, 0x02 ; 2 |
302: 80 e0 ldi r24, 0x00 ; 0 |
304: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
308: 0f 90 pop r0 |
30a: 0f 90 pop r0 |
30c: 8e e7 ldi r24, 0x7E ; 126 |
30e: 90 e0 ldi r25, 0x00 ; 0 |
310: 9f 93 push r25 |
312: 8f 93 push r24 |
314: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,3," www.MicroSPS.com "); |
318: 63 e0 ldi r22, 0x03 ; 3 |
31a: 80 e0 ldi r24, 0x00 ; 0 |
31c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
320: 0f 90 pop r0 |
322: 0f 90 pop r0 |
324: 83 e9 ldi r24, 0x93 ; 147 |
326: 90 e0 ldi r25, 0x00 ; 0 |
328: 9f 93 push r25 |
32a: 8f 93 push r24 |
32c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
330: 0f 90 pop r0 |
332: 0f 90 pop r0 |
} |
if(CheckDelay(DelayTast)) |
334: c7 01 movw r24, r14 |
336: 0e 94 b1 09 call 0x1362 <CheckDelay> |
33a: 88 23 and r24, r24 |
33c: 09 f4 brne .+2 ; 0x340 <main+0x176> |
33e: a7 cf rjmp .-178 ; 0x28e <main+0xc4> |
{ |
DelayTast = SetDelay(100); |
340: 84 e6 ldi r24, 0x64 ; 100 |
342: 90 e0 ldi r25, 0x00 ; 0 |
344: 0e 94 a8 09 call 0x1350 <SetDelay> |
348: 7c 01 movw r14, r24 |
if(_TASTE5) |
34a: cb 9b sbis 0x19, 3 ; 25 |
34c: 0c c0 rjmp .+24 ; 0x366 <main+0x19c> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
34e: 8a e0 ldi r24, 0x0A ; 10 |
350: 90 e0 ldi r25, 0x00 ; 0 |
352: 0e 94 bc 09 call 0x1378 <Delay_ms> |
356: cb 99 sbic 0x19, 3 ; 25 |
358: fa cf rjmp .-12 ; 0x34e <main+0x184> |
mode = MENU; |
35a: bb 24 eor r11, r11 |
LCD_Clear; |
35c: 81 e0 ldi r24, 0x01 ; 1 |
35e: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
362: 0e 94 c9 05 call 0xb92 <_long_delay> |
366: 80 91 be 00 lds r24, 0x00BE |
} |
// if(key & 0x10) DebugIn.Digital[0] |= 0x01; else DebugIn.Digital[0] &= ~0x01; |
if(PIND & 0x08) DebugIn.Digital[0] |= 0x02; else DebugIn.Digital[0] &= ~0x02; |
36a: 83 9b sbis 0x10, 3 ; 16 |
36c: 02 c0 rjmp .+4 ; 0x372 <main+0x1a8> |
36e: 82 60 ori r24, 0x02 ; 2 |
370: 01 c0 rjmp .+2 ; 0x374 <main+0x1aa> |
372: 8d 7f andi r24, 0xFD ; 253 |
374: 80 93 be 00 sts 0x00BE, r24 |
378: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x10) DebugIn.Digital[0] |= 0x04; else DebugIn.Digital[0] &= ~0x04; |
37c: 84 9b sbis 0x10, 4 ; 16 |
37e: 02 c0 rjmp .+4 ; 0x384 <main+0x1ba> |
380: 84 60 ori r24, 0x04 ; 4 |
382: 01 c0 rjmp .+2 ; 0x386 <main+0x1bc> |
384: 8b 7f andi r24, 0xFB ; 251 |
386: 80 93 be 00 sts 0x00BE, r24 |
38a: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x20) DebugIn.Digital[0] |= 0x08; else DebugIn.Digital[0] &= ~0x08; |
38e: 85 9b sbis 0x10, 5 ; 16 |
390: 02 c0 rjmp .+4 ; 0x396 <main+0x1cc> |
392: 88 60 ori r24, 0x08 ; 8 |
394: 01 c0 rjmp .+2 ; 0x398 <main+0x1ce> |
396: 87 7f andi r24, 0xF7 ; 247 |
398: 80 93 be 00 sts 0x00BE, r24 |
39c: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x40) DebugIn.Digital[0] |= 0x10; else DebugIn.Digital[0] &= ~0x10; |
3a0: 86 9b sbis 0x10, 6 ; 16 |
3a2: 02 c0 rjmp .+4 ; 0x3a8 <main+0x1de> |
3a4: 80 61 ori r24, 0x10 ; 16 |
3a6: 01 c0 rjmp .+2 ; 0x3aa <main+0x1e0> |
3a8: 8f 7e andi r24, 0xEF ; 239 |
3aa: 80 93 be 00 sts 0x00BE, r24 |
3ae: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x80) DebugIn.Digital[0] |= 0x20; else DebugIn.Digital[0] &= ~0x20; |
3b2: 87 9b sbis 0x10, 7 ; 16 |
3b4: 02 c0 rjmp .+4 ; 0x3ba <main+0x1f0> |
3b6: 80 62 ori r24, 0x20 ; 32 |
3b8: 01 c0 rjmp .+2 ; 0x3bc <main+0x1f2> |
3ba: 8f 7d andi r24, 0xDF ; 223 |
3bc: 80 93 be 00 sts 0x00BE, r24 |
GetAnalogWerte(); |
3c0: 0e 94 4e 0c call 0x189c <GetAnalogWerte> |
3c4: 3d cf rjmp .-390 ; 0x240 <main+0x76> |
000003c6 <__vector_15>: |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
3c6: 1f 92 push r1 |
3c8: 0f 92 push r0 |
3ca: 0f b6 in r0, 0x3f ; 63 |
3cc: 0f 92 push r0 |
3ce: 11 24 eor r1, r1 |
3d0: 8f 93 push r24 |
3d2: 9f 93 push r25 |
3d4: ef 93 push r30 |
3d6: ff 93 push r31 |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
3d8: 80 91 6e 00 lds r24, 0x006E |
3dc: 88 23 and r24, r24 |
3de: d9 f4 brne .+54 ; 0x416 <__vector_15+0x50> |
{ |
ptr++; // die [0] wurde schon gesendet |
3e0: 80 91 9d 00 lds r24, 0x009D |
3e4: 90 91 9e 00 lds r25, 0x009E |
3e8: 01 96 adiw r24, 0x01 ; 1 |
3ea: 90 93 9e 00 sts 0x009E, r25 |
3ee: 80 93 9d 00 sts 0x009D, r24 |
tmp_tx = SendeBuffer[ptr]; |
3f2: fc 01 movw r30, r24 |
3f4: e2 51 subi r30, 0x12 ; 18 |
3f6: ff 4f sbci r31, 0xFF ; 255 |
3f8: e0 81 ld r30, Z |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
3fa: ed 30 cpi r30, 0x0D ; 13 |
3fc: 19 f0 breq .+6 ; 0x404 <__vector_15+0x3e> |
3fe: 84 36 cpi r24, 0x64 ; 100 |
400: 91 05 cpc r25, r1 |
402: 39 f4 brne .+14 ; 0x412 <__vector_15+0x4c> |
{ |
ptr = 0; |
404: 10 92 9e 00 sts 0x009E, r1 |
408: 10 92 9d 00 sts 0x009D, r1 |
UebertragungAbgeschlossen = 1; |
40c: 81 e0 ldi r24, 0x01 ; 1 |
40e: 80 93 6e 00 sts 0x006E, r24 |
} |
UDR = tmp_tx; |
412: ec b9 out 0x0c, r30 ; 12 |
414: 04 c0 rjmp .+8 ; 0x41e <__vector_15+0x58> |
} |
else ptr = 0; |
416: 10 92 9e 00 sts 0x009E, r1 |
41a: 10 92 9d 00 sts 0x009D, r1 |
41e: ff 91 pop r31 |
420: ef 91 pop r30 |
422: 9f 91 pop r25 |
424: 8f 91 pop r24 |
426: 0f 90 pop r0 |
428: 0f be out 0x3f, r0 ; 63 |
42a: 0f 90 pop r0 |
42c: 1f 90 pop r1 |
42e: 18 95 reti |
00000430 <__vector_13>: |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
430: 1f 92 push r1 |
432: 0f 92 push r0 |
434: 0f b6 in r0, 0x3f ; 63 |
436: 0f 92 push r0 |
438: 11 24 eor r1, r1 |
43a: 2f 93 push r18 |
43c: 3f 93 push r19 |
43e: 4f 93 push r20 |
440: 5f 93 push r21 |
442: 8f 93 push r24 |
444: 9f 93 push r25 |
446: af 93 push r26 |
448: bf 93 push r27 |
44a: ef 93 push r30 |
44c: ff 93 push r31 |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
44e: 20 e0 ldi r18, 0x00 ; 0 |
SioTmp = UDR; |
450: 8c b1 in r24, 0x0c ; 12 |
452: 80 93 9c 00 sts 0x009C, r24 |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
456: 50 91 a3 00 lds r21, 0x00A3 |
45a: 54 36 cpi r21, 0x64 ; 100 |
45c: 10 f0 brcs .+4 ; 0x462 <__vector_13+0x32> |
45e: 20 93 a4 00 sts 0x00A4, r18 |
if(SioTmp == '\r' && UartState == 2) |
462: 80 91 9c 00 lds r24, 0x009C |
466: 8d 30 cpi r24, 0x0D ; 13 |
468: 09 f0 breq .+2 ; 0x46c <__vector_13+0x3c> |
46a: 5b c0 rjmp .+182 ; 0x522 <__vector_13+0xf2> |
46c: 80 91 a4 00 lds r24, 0x00A4 |
470: 82 30 cpi r24, 0x02 ; 2 |
472: 09 f0 breq .+2 ; 0x476 <__vector_13+0x46> |
474: 56 c0 rjmp .+172 ; 0x522 <__vector_13+0xf2> |
{ |
UartState = 0; |
476: 20 93 a4 00 sts 0x00A4, r18 |
crc -= RxdBuffer[buf_ptr-2]; |
47a: 85 2f mov r24, r21 |
47c: 99 27 eor r25, r25 |
47e: 8e 5a subi r24, 0xAE ; 174 |
480: 9e 4f sbci r25, 0xFE ; 254 |
482: fc 01 movw r30, r24 |
484: 32 97 sbiw r30, 0x02 ; 2 |
486: 40 81 ld r20, Z |
488: 20 91 9f 00 lds r18, 0x009F |
48c: 30 91 a0 00 lds r19, 0x00A0 |
490: 24 1b sub r18, r20 |
492: 31 09 sbc r19, r1 |
crc -= RxdBuffer[buf_ptr-1]; |
494: dc 01 movw r26, r24 |
496: 11 97 sbiw r26, 0x01 ; 1 |
498: 8c 91 ld r24, X |
49a: 28 1b sub r18, r24 |
49c: 31 09 sbc r19, r1 |
crc %= 4096; |
49e: c9 01 movw r24, r18 |
4a0: 9f 70 andi r25, 0x0F ; 15 |
4a2: 90 93 a0 00 sts 0x00A0, r25 |
4a6: 80 93 9f 00 sts 0x009F, r24 |
crc1 = '=' + crc / 64; |
4aa: 46 e0 ldi r20, 0x06 ; 6 |
4ac: 96 95 lsr r25 |
4ae: 87 95 ror r24 |
4b0: 4a 95 dec r20 |
4b2: e1 f7 brne .-8 ; 0x4ac <__vector_13+0x7c> |
4b4: 98 2f mov r25, r24 |
4b6: 93 5c subi r25, 0xC3 ; 195 |
4b8: 90 93 a1 00 sts 0x00A1, r25 |
crc2 = '=' + crc % 64; |
4bc: 2f 73 andi r18, 0x3F ; 63 |
4be: 30 70 andi r19, 0x00 ; 0 |
4c0: 23 5c subi r18, 0xC3 ; 195 |
4c2: 20 93 a2 00 sts 0x00A2, r18 |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
4c6: 80 81 ld r24, Z |
4c8: 98 17 cp r25, r24 |
4ca: 29 f4 brne .+10 ; 0x4d6 <__vector_13+0xa6> |
4cc: 8c 91 ld r24, X |
4ce: 28 17 cp r18, r24 |
4d0: 11 f4 brne .+4 ; 0x4d6 <__vector_13+0xa6> |
4d2: 21 e0 ldi r18, 0x01 ; 1 |
4d4: 0a c0 rjmp .+20 ; 0x4ea <__vector_13+0xba> |
4d6: 20 e0 ldi r18, 0x00 ; 0 |
4d8: 80 91 99 00 lds r24, 0x0099 |
4dc: 90 91 9a 00 lds r25, 0x009A |
4e0: 01 96 adiw r24, 0x01 ; 1 |
4e2: 90 93 9a 00 sts 0x009A, r25 |
4e6: 80 93 99 00 sts 0x0099, r24 |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
4ea: 80 91 9b 00 lds r24, 0x009B |
4ee: 88 23 and r24, r24 |
4f0: 09 f0 breq .+2 ; 0x4f4 <__vector_13+0xc4> |
4f2: 66 c0 rjmp .+204 ; 0x5c0 <__vector_13+0x190> |
4f4: 22 23 and r18, r18 |
4f6: 09 f4 brne .+2 ; 0x4fa <__vector_13+0xca> |
4f8: 63 c0 rjmp .+198 ; 0x5c0 <__vector_13+0x190> |
{ |
CntDatensaetzeProSekunde++; |
4fa: 80 91 66 00 lds r24, 0x0066 |
4fe: 8f 5f subi r24, 0xFF ; 255 |
500: 80 93 66 00 sts 0x0066, r24 |
PC_DebugTimeout = 10; |
504: 8a e0 ldi r24, 0x0A ; 10 |
506: 80 93 97 00 sts 0x0097, r24 |
NeuerDatensatzEmpfangen = 1; |
50a: 81 e0 ldi r24, 0x01 ; 1 |
50c: 80 93 9b 00 sts 0x009B, r24 |
AnzahlEmpfangsBytes = buf_ptr; |
510: 50 93 98 00 sts 0x0098, r21 |
RxdBuffer[buf_ptr] = '\r'; |
514: e5 2f mov r30, r21 |
516: ff 27 eor r31, r31 |
518: ee 5a subi r30, 0xAE ; 174 |
51a: fe 4f sbci r31, 0xFE ; 254 |
51c: 8d e0 ldi r24, 0x0D ; 13 |
51e: 80 83 st Z, r24 |
520: 4f c0 rjmp .+158 ; 0x5c0 <__vector_13+0x190> |
// if((RxdBuffer[1] == 's') && (RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
522: 20 91 a4 00 lds r18, 0x00A4 |
526: 82 2f mov r24, r18 |
528: 99 27 eor r25, r25 |
52a: 81 30 cpi r24, 0x01 ; 1 |
52c: 91 05 cpc r25, r1 |
52e: f9 f0 breq .+62 ; 0x56e <__vector_13+0x13e> |
530: 82 30 cpi r24, 0x02 ; 2 |
532: 91 05 cpc r25, r1 |
534: 1c f4 brge .+6 ; 0x53c <__vector_13+0x10c> |
536: 89 2b or r24, r25 |
538: 21 f0 breq .+8 ; 0x542 <__vector_13+0x112> |
53a: 40 c0 rjmp .+128 ; 0x5bc <__vector_13+0x18c> |
53c: 02 97 sbiw r24, 0x02 ; 2 |
53e: 11 f1 breq .+68 ; 0x584 <__vector_13+0x154> |
540: 3d c0 rjmp .+122 ; 0x5bc <__vector_13+0x18c> |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
542: 80 91 9c 00 lds r24, 0x009C |
546: 83 32 cpi r24, 0x23 ; 35 |
548: 39 f4 brne .+14 ; 0x558 <__vector_13+0x128> |
54a: 80 91 9b 00 lds r24, 0x009B |
54e: 88 23 and r24, r24 |
550: 19 f4 brne .+6 ; 0x558 <__vector_13+0x128> |
552: 81 e0 ldi r24, 0x01 ; 1 |
554: 80 93 a4 00 sts 0x00A4, r24 |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
558: 80 91 9c 00 lds r24, 0x009C |
55c: 80 93 52 01 sts 0x0152, r24 |
560: 81 e0 ldi r24, 0x01 ; 1 |
562: 80 93 a3 00 sts 0x00A3, r24 |
crc = SioTmp; |
566: 80 91 9c 00 lds r24, 0x009C |
56a: 99 27 eor r25, r25 |
56c: 22 c0 rjmp .+68 ; 0x5b2 <__vector_13+0x182> |
break; |
case 1: // Adresse auswerten |
UartState++; |
56e: 2f 5f subi r18, 0xFF ; 255 |
570: 20 93 a4 00 sts 0x00A4, r18 |
RxdBuffer[buf_ptr++] = SioTmp; |
574: e5 2f mov r30, r21 |
576: ff 27 eor r31, r31 |
578: ee 5a subi r30, 0xAE ; 174 |
57a: fe 4f sbci r31, 0xFE ; 254 |
57c: 80 91 9c 00 lds r24, 0x009C |
580: 80 83 st Z, r24 |
582: 09 c0 rjmp .+18 ; 0x596 <__vector_13+0x166> |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
584: e5 2f mov r30, r21 |
586: ff 27 eor r31, r31 |
588: ee 5a subi r30, 0xAE ; 174 |
58a: fe 4f sbci r31, 0xFE ; 254 |
58c: 80 91 9c 00 lds r24, 0x009C |
590: 80 83 st Z, r24 |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
592: 54 36 cpi r21, 0x64 ; 100 |
594: 20 f4 brcc .+8 ; 0x59e <__vector_13+0x16e> |
596: 5f 5f subi r21, 0xFF ; 255 |
598: 50 93 a3 00 sts 0x00A3, r21 |
59c: 02 c0 rjmp .+4 ; 0x5a2 <__vector_13+0x172> |
else UartState = 0; |
59e: 10 92 a4 00 sts 0x00A4, r1 |
crc += SioTmp; |
5a2: 20 91 9c 00 lds r18, 0x009C |
5a6: 80 91 9f 00 lds r24, 0x009F |
5aa: 90 91 a0 00 lds r25, 0x00A0 |
5ae: 82 0f add r24, r18 |
5b0: 91 1d adc r25, r1 |
5b2: 90 93 a0 00 sts 0x00A0, r25 |
5b6: 80 93 9f 00 sts 0x009F, r24 |
break; |
5ba: 02 c0 rjmp .+4 ; 0x5c0 <__vector_13+0x190> |
default: |
UartState = 0; |
5bc: 10 92 a4 00 sts 0x00A4, r1 |
5c0: ff 91 pop r31 |
5c2: ef 91 pop r30 |
5c4: bf 91 pop r27 |
5c6: af 91 pop r26 |
5c8: 9f 91 pop r25 |
5ca: 8f 91 pop r24 |
5cc: 5f 91 pop r21 |
5ce: 4f 91 pop r20 |
5d0: 3f 91 pop r19 |
5d2: 2f 91 pop r18 |
5d4: 0f 90 pop r0 |
5d6: 0f be out 0x3f, r0 ; 63 |
5d8: 0f 90 pop r0 |
5da: 1f 90 pop r1 |
5dc: 18 95 reti |
000005de <AddCRC>: |
break; |
} |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
5de: ac 01 movw r20, r24 |
unsigned int tmpCRC = 0,i; |
5e0: a0 e0 ldi r26, 0x00 ; 0 |
5e2: b0 e0 ldi r27, 0x00 ; 0 |
for(i = 0; i < wieviele;i++) |
5e4: 9d 01 movw r18, r26 |
5e6: a8 17 cp r26, r24 |
5e8: b9 07 cpc r27, r25 |
5ea: 48 f4 brcc .+18 ; 0x5fe <AddCRC+0x20> |
5ec: ee ee ldi r30, 0xEE ; 238 |
5ee: f0 e0 ldi r31, 0x00 ; 0 |
{ |
tmpCRC += SendeBuffer[i]; |
5f0: 81 91 ld r24, Z+ |
5f2: 28 0f add r18, r24 |
5f4: 31 1d adc r19, r1 |
5f6: 11 96 adiw r26, 0x01 ; 1 |
5f8: a4 17 cp r26, r20 |
5fa: b5 07 cpc r27, r21 |
5fc: c8 f3 brcs .-14 ; 0x5f0 <AddCRC+0x12> |
} |
tmpCRC %= 4096; |
5fe: 3f 70 andi r19, 0x0F ; 15 |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
600: fd 01 movw r30, r26 |
602: e2 51 subi r30, 0x12 ; 18 |
604: ff 4f sbci r31, 0xFF ; 255 |
606: c9 01 movw r24, r18 |
608: 56 e0 ldi r21, 0x06 ; 6 |
60a: 96 95 lsr r25 |
60c: 87 95 ror r24 |
60e: 5a 95 dec r21 |
610: e1 f7 brne .-8 ; 0x60a <AddCRC+0x2c> |
612: 83 5c subi r24, 0xC3 ; 195 |
614: 80 83 st Z, r24 |
616: 11 96 adiw r26, 0x01 ; 1 |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
618: fd 01 movw r30, r26 |
61a: e2 51 subi r30, 0x12 ; 18 |
61c: ff 4f sbci r31, 0xFF ; 255 |
61e: 2f 73 andi r18, 0x3F ; 63 |
620: 30 70 andi r19, 0x00 ; 0 |
622: 82 2f mov r24, r18 |
624: 83 5c subi r24, 0xC3 ; 195 |
626: 80 83 st Z, r24 |
SendeBuffer[i++] = '\r'; |
628: a1 51 subi r26, 0x11 ; 17 |
62a: bf 4f sbci r27, 0xFF ; 255 |
62c: 8d e0 ldi r24, 0x0D ; 13 |
62e: 8c 93 st X, r24 |
UebertragungAbgeschlossen = 0; |
630: 10 92 6e 00 sts 0x006E, r1 |
UDR = SendeBuffer[0]; |
634: 80 91 ee 00 lds r24, 0x00EE |
638: 8c b9 out 0x0c, r24 ; 12 |
63a: 08 95 ret |
0000063c <SendOutData>: |
// PrintSendeBuffer(); |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
63c: 1f 93 push r17 |
63e: cf 93 push r28 |
640: df 93 push r29 |
642: 38 2f mov r19, r24 |
644: 96 2f mov r25, r22 |
646: ea 01 movw r28, r20 |
648: 72 2f mov r23, r18 |
unsigned int pt = 0,i; |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
64a: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
//while(!UebertragungAbgeschlossen); |
SendeBuffer[pt++] = '#'; // Startzeichen |
64c: 83 e2 ldi r24, 0x23 ; 35 |
64e: 80 93 ee 00 sts 0x00EE, r24 |
SendeBuffer[pt++] = modul+'a'; // Adresse (a=0; b=1,...) |
652: 9f 59 subi r25, 0x9F ; 159 |
654: 90 93 ef 00 sts 0x00EF, r25 |
SendeBuffer[pt++] = cmd; // Commando |
658: 30 93 f0 00 sts 0x00F0, r19 |
65c: a3 e0 ldi r26, 0x03 ; 3 |
65e: b0 e0 ldi r27, 0x00 ; 0 |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
660: 77 23 and r23, r23 |
662: 09 f4 brne .+2 ; 0x666 <SendOutData+0x2a> |
664: 58 c0 rjmp .+176 ; 0x716 <SendOutData+0xda> |
666: 77 23 and r23, r23 |
668: 11 f4 brne .+4 ; 0x66e <SendOutData+0x32> |
66a: 97 2f mov r25, r23 |
66c: 07 c0 rjmp .+14 ; 0x67c <SendOutData+0x40> |
66e: fe 01 movw r30, r28 |
670: e1 0f add r30, r17 |
672: f1 1d adc r31, r1 |
674: 1f 5f subi r17, 0xFF ; 255 |
676: 90 81 ld r25, Z |
678: 71 50 subi r23, 0x01 ; 1 |
67a: 11 f4 brne .+4 ; 0x680 <SendOutData+0x44> |
67c: 47 2f mov r20, r23 |
67e: 0e c0 rjmp .+28 ; 0x69c <SendOutData+0x60> |
680: fe 01 movw r30, r28 |
682: e1 0f add r30, r17 |
684: f1 1d adc r31, r1 |
686: 1f 5f subi r17, 0xFF ; 255 |
688: 40 81 ld r20, Z |
68a: 71 50 subi r23, 0x01 ; 1 |
68c: 39 f0 breq .+14 ; 0x69c <SendOutData+0x60> |
68e: fe 01 movw r30, r28 |
690: e1 0f add r30, r17 |
692: f1 1d adc r31, r1 |
694: 1f 5f subi r17, 0xFF ; 255 |
696: 60 81 ld r22, Z |
698: 71 50 subi r23, 0x01 ; 1 |
69a: 01 c0 rjmp .+2 ; 0x69e <SendOutData+0x62> |
69c: 67 2f mov r22, r23 |
69e: fd 01 movw r30, r26 |
6a0: e2 51 subi r30, 0x12 ; 18 |
6a2: ff 4f sbci r31, 0xFF ; 255 |
6a4: 89 2f mov r24, r25 |
6a6: 86 95 lsr r24 |
6a8: 86 95 lsr r24 |
6aa: 83 5c subi r24, 0xC3 ; 195 |
6ac: 80 83 st Z, r24 |
6ae: 11 96 adiw r26, 0x01 ; 1 |
6b0: fd 01 movw r30, r26 |
6b2: e2 51 subi r30, 0x12 ; 18 |
6b4: ff 4f sbci r31, 0xFF ; 255 |
6b6: 89 2f mov r24, r25 |
6b8: 99 27 eor r25, r25 |
6ba: 83 70 andi r24, 0x03 ; 3 |
6bc: 90 70 andi r25, 0x00 ; 0 |
6be: 24 e0 ldi r18, 0x04 ; 4 |
6c0: 88 0f add r24, r24 |
6c2: 99 1f adc r25, r25 |
6c4: 2a 95 dec r18 |
6c6: e1 f7 brne .-8 ; 0x6c0 <SendOutData+0x84> |
6c8: 55 27 eor r21, r21 |
6ca: 9a 01 movw r18, r20 |
6cc: 94 e0 ldi r25, 0x04 ; 4 |
6ce: 36 95 lsr r19 |
6d0: 27 95 ror r18 |
6d2: 9a 95 dec r25 |
6d4: e1 f7 brne .-8 ; 0x6ce <SendOutData+0x92> |
6d6: 82 2b or r24, r18 |
6d8: 83 5c subi r24, 0xC3 ; 195 |
6da: 80 83 st Z, r24 |
6dc: 11 96 adiw r26, 0x01 ; 1 |
6de: fd 01 movw r30, r26 |
6e0: e2 51 subi r30, 0x12 ; 18 |
6e2: ff 4f sbci r31, 0xFF ; 255 |
6e4: 4f 70 andi r20, 0x0F ; 15 |
6e6: 50 70 andi r21, 0x00 ; 0 |
6e8: 44 0f add r20, r20 |
6ea: 55 1f adc r21, r21 |
6ec: 44 0f add r20, r20 |
6ee: 55 1f adc r21, r21 |
6f0: 86 2f mov r24, r22 |
6f2: 99 27 eor r25, r25 |
6f4: 26 e0 ldi r18, 0x06 ; 6 |
6f6: 96 95 lsr r25 |
6f8: 87 95 ror r24 |
6fa: 2a 95 dec r18 |
6fc: e1 f7 brne .-8 ; 0x6f6 <SendOutData+0xba> |
6fe: 84 2b or r24, r20 |
700: 83 5c subi r24, 0xC3 ; 195 |
702: 80 83 st Z, r24 |
704: 11 96 adiw r26, 0x01 ; 1 |
706: fd 01 movw r30, r26 |
708: e2 51 subi r30, 0x12 ; 18 |
70a: ff 4f sbci r31, 0xFF ; 255 |
70c: 6f 73 andi r22, 0x3F ; 63 |
70e: 63 5c subi r22, 0xC3 ; 195 |
710: 60 83 st Z, r22 |
712: 11 96 adiw r26, 0x01 ; 1 |
714: a5 cf rjmp .-182 ; 0x660 <SendOutData+0x24> |
} |
AddCRC(pt); |
716: cd 01 movw r24, r26 |
718: 0e 94 ef 02 call 0x5de <AddCRC> |
71c: df 91 pop r29 |
71e: cf 91 pop r28 |
720: 1f 91 pop r17 |
722: 08 95 ret |
00000724 <Decode64>: |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
724: 1f 93 push r17 |
726: cf 93 push r28 |
728: df 93 push r29 |
72a: ec 01 movw r28, r24 |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
72c: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
72e: 66 23 and r22, r22 |
730: 09 f4 brne .+2 ; 0x734 <Decode64+0x10> |
732: 60 c0 rjmp .+192 ; 0x7f4 <Decode64+0xd0> |
734: a2 2f mov r26, r18 |
736: bb 27 eor r27, r27 |
738: 12 97 sbiw r26, 0x02 ; 2 |
73a: e4 2f mov r30, r20 |
73c: ff 27 eor r31, r31 |
73e: ee 5a subi r30, 0xAE ; 174 |
740: fe 4f sbci r31, 0xFE ; 254 |
742: 30 81 ld r19, Z |
744: 3d 53 subi r19, 0x3D ; 61 |
746: 4f 5f subi r20, 0xFF ; 255 |
748: e4 2f mov r30, r20 |
74a: ff 27 eor r31, r31 |
74c: ee 5a subi r30, 0xAE ; 174 |
74e: fe 4f sbci r31, 0xFE ; 254 |
750: 50 81 ld r21, Z |
752: 5d 53 subi r21, 0x3D ; 61 |
754: 4f 5f subi r20, 0xFF ; 255 |
756: e4 2f mov r30, r20 |
758: ff 27 eor r31, r31 |
75a: ee 5a subi r30, 0xAE ; 174 |
75c: fe 4f sbci r31, 0xFE ; 254 |
75e: 70 81 ld r23, Z |
760: 7d 53 subi r23, 0x3D ; 61 |
762: 4f 5f subi r20, 0xFF ; 255 |
764: e4 2f mov r30, r20 |
766: ff 27 eor r31, r31 |
768: ee 5a subi r30, 0xAE ; 174 |
76a: fe 4f sbci r31, 0xFE ; 254 |
76c: e0 81 ld r30, Z |
76e: ed 53 subi r30, 0x3D ; 61 |
770: 4f 5f subi r20, 0xFF ; 255 |
772: 84 2f mov r24, r20 |
774: 99 27 eor r25, r25 |
776: a8 17 cp r26, r24 |
778: b9 07 cpc r27, r25 |
77a: e4 f1 brlt .+120 ; 0x7f4 <Decode64+0xd0> |
77c: 83 2f mov r24, r19 |
77e: 99 27 eor r25, r25 |
780: 88 0f add r24, r24 |
782: 99 1f adc r25, r25 |
784: 88 0f add r24, r24 |
786: 99 1f adc r25, r25 |
788: 35 2f mov r19, r21 |
78a: 32 95 swap r19 |
78c: 3f 70 andi r19, 0x0F ; 15 |
78e: 38 2b or r19, r24 |
790: 85 2f mov r24, r21 |
792: 99 27 eor r25, r25 |
794: 8f 70 andi r24, 0x0F ; 15 |
796: 90 70 andi r25, 0x00 ; 0 |
798: f4 e0 ldi r31, 0x04 ; 4 |
79a: 88 0f add r24, r24 |
79c: 99 1f adc r25, r25 |
79e: fa 95 dec r31 |
7a0: e1 f7 brne .-8 ; 0x79a <Decode64+0x76> |
7a2: 57 2f mov r21, r23 |
7a4: 56 95 lsr r21 |
7a6: 56 95 lsr r21 |
7a8: 58 2b or r21, r24 |
7aa: 87 2f mov r24, r23 |
7ac: 99 27 eor r25, r25 |
7ae: 83 70 andi r24, 0x03 ; 3 |
7b0: 90 70 andi r25, 0x00 ; 0 |
7b2: 76 e0 ldi r23, 0x06 ; 6 |
7b4: 88 0f add r24, r24 |
7b6: 99 1f adc r25, r25 |
7b8: 7a 95 dec r23 |
7ba: e1 f7 brne .-8 ; 0x7b4 <Decode64+0x90> |
7bc: 8e 2b or r24, r30 |
7be: 61 50 subi r22, 0x01 ; 1 |
7c0: 6f 3f cpi r22, 0xFF ; 255 |
7c2: c1 f0 breq .+48 ; 0x7f4 <Decode64+0xd0> |
7c4: fe 01 movw r30, r28 |
7c6: e1 0f add r30, r17 |
7c8: f1 1d adc r31, r1 |
7ca: 30 83 st Z, r19 |
7cc: 1f 5f subi r17, 0xFF ; 255 |
7ce: 61 50 subi r22, 0x01 ; 1 |
7d0: 6f 3f cpi r22, 0xFF ; 255 |
7d2: 81 f0 breq .+32 ; 0x7f4 <Decode64+0xd0> |
7d4: fe 01 movw r30, r28 |
7d6: e1 0f add r30, r17 |
7d8: f1 1d adc r31, r1 |
7da: 50 83 st Z, r21 |
7dc: 1f 5f subi r17, 0xFF ; 255 |
7de: 61 50 subi r22, 0x01 ; 1 |
7e0: 6f 3f cpi r22, 0xFF ; 255 |
7e2: 41 f0 breq .+16 ; 0x7f4 <Decode64+0xd0> |
7e4: fe 01 movw r30, r28 |
7e6: e1 0f add r30, r17 |
7e8: f1 1d adc r31, r1 |
7ea: 80 83 st Z, r24 |
7ec: 1f 5f subi r17, 0xFF ; 255 |
7ee: 66 23 and r22, r22 |
7f0: 09 f0 breq .+2 ; 0x7f4 <Decode64+0xd0> |
7f2: a3 cf rjmp .-186 ; 0x73a <Decode64+0x16> |
7f4: df 91 pop r29 |
7f6: cf 91 pop r28 |
7f8: 1f 91 pop r17 |
7fa: 08 95 ret |
000007fc <BearbeiteRxDaten>: |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
7fc: cf 93 push r28 |
7fe: df 93 push r29 |
800: cd b7 in r28, 0x3d ; 61 |
802: de b7 in r29, 0x3e ; 62 |
804: ad 97 sbiw r28, 0x2d ; 45 |
806: 0f b6 in r0, 0x3f ; 63 |
808: f8 94 cli |
80a: de bf out 0x3e, r29 ; 62 |
80c: 0f be out 0x3f, r0 ; 63 |
80e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr1[1]; |
unsigned int tmp_int_arr2[2]; |
unsigned int tmp_int_arr20[21]; |
unsigned char tmp_char_arr3[3]; |
// unsigned int tmp_int_arr4[4]; |
if(!NeuerDatensatzEmpfangen) return; |
810: 80 91 9b 00 lds r24, 0x009B |
814: 88 23 and r24, r24 |
816: 09 f4 brne .+2 ; 0x81a <BearbeiteRxDaten+0x1e> |
818: a7 c0 rjmp .+334 ; 0x968 <__stack+0x109> |
NeuerDatensatzEmpfangen = 0; |
81a: 10 92 9b 00 sts 0x009B, r1 |
if(ErwarteAntwort == RxdBuffer[2]) AntwortEingetroffen = 1; |
81e: 90 91 6d 00 lds r25, 0x006D |
822: 80 91 54 01 lds r24, 0x0154 |
826: 98 17 cp r25, r24 |
828: 19 f4 brne .+6 ; 0x830 <BearbeiteRxDaten+0x34> |
82a: 81 e0 ldi r24, 0x01 ; 1 |
82c: 80 93 92 00 sts 0x0092, r24 |
switch(RxdBuffer[2]) |
830: 80 91 54 01 lds r24, 0x0154 |
834: 99 27 eor r25, r25 |
836: 82 33 cpi r24, 0x32 ; 50 |
838: 91 05 cpc r25, r1 |
83a: 09 f4 brne .+2 ; 0x83e <BearbeiteRxDaten+0x42> |
83c: 46 c0 rjmp .+140 ; 0x8ca <__stack+0x6b> |
83e: 83 33 cpi r24, 0x33 ; 51 |
840: 91 05 cpc r25, r1 |
842: 34 f4 brge .+12 ; 0x850 <BearbeiteRxDaten+0x54> |
844: 80 33 cpi r24, 0x30 ; 48 |
846: 91 05 cpc r25, r1 |
848: 99 f0 breq .+38 ; 0x870 <__stack+0x11> |
84a: c1 97 sbiw r24, 0x31 ; 49 |
84c: 49 f1 breq .+82 ; 0x8a0 <__stack+0x41> |
84e: 8c c0 rjmp .+280 ; 0x968 <__stack+0x109> |
850: 84 34 cpi r24, 0x44 ; 68 |
852: 91 05 cpc r25, r1 |
854: 09 f4 brne .+2 ; 0x858 <BearbeiteRxDaten+0x5c> |
856: 6b c0 rjmp .+214 ; 0x92e <__stack+0xcf> |
858: 85 34 cpi r24, 0x45 ; 69 |
85a: 91 05 cpc r25, r1 |
85c: 24 f4 brge .+8 ; 0x866 <__stack+0x7> |
85e: c3 97 sbiw r24, 0x33 ; 51 |
860: 09 f4 brne .+2 ; 0x864 <__stack+0x5> |
862: 48 c0 rjmp .+144 ; 0x8f4 <__stack+0x95> |
864: 81 c0 rjmp .+258 ; 0x968 <__stack+0x109> |
866: 8b 34 cpi r24, 0x4B ; 75 |
868: 91 05 cpc r25, r1 |
86a: 09 f4 brne .+2 ; 0x86e <__stack+0xf> |
86c: 6c c0 rjmp .+216 ; 0x946 <__stack+0xe7> |
86e: 7c c0 rjmp .+248 ; 0x968 <__stack+0x109> |
{ |
case '0':// LCD-Zeile0 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
870: 20 91 98 00 lds r18, 0x0098 |
874: 43 e0 ldi r20, 0x03 ; 3 |
876: 6a e2 ldi r22, 0x2A ; 42 |
878: ce 01 movw r24, r28 |
87a: 01 96 adiw r24, 0x01 ; 1 |
87c: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
880: 1a a6 std Y+42, r1 ; 0x2a |
882: 19 a6 std Y+41, r1 ; 0x29 |
DisplayBusy = 1; |
884: 81 e0 ldi r24, 0x01 ; 1 |
886: 80 93 93 00 sts 0x0093, r24 |
LCD_printfxy(0,0,"%s",tmp_int_arr20); |
88a: 60 e0 ldi r22, 0x00 ; 0 |
88c: 86 2f mov r24, r22 |
88e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
892: ce 01 movw r24, r28 |
894: 01 96 adiw r24, 0x01 ; 1 |
896: 9f 93 push r25 |
898: 8f 93 push r24 |
89a: 88 ea ldi r24, 0xA8 ; 168 |
89c: 90 e0 ldi r25, 0x00 ; 0 |
89e: 3e c0 rjmp .+124 ; 0x91c <__stack+0xbd> |
break; |
case '1':// LCD-Zeile1 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8a0: 20 91 98 00 lds r18, 0x0098 |
8a4: 43 e0 ldi r20, 0x03 ; 3 |
8a6: 6a e2 ldi r22, 0x2A ; 42 |
8a8: ce 01 movw r24, r28 |
8aa: 01 96 adiw r24, 0x01 ; 1 |
8ac: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8b0: 1a a6 std Y+42, r1 ; 0x2a |
8b2: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,1,"%s",tmp_int_arr20); |
8b4: 61 e0 ldi r22, 0x01 ; 1 |
8b6: 80 e0 ldi r24, 0x00 ; 0 |
8b8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8bc: ce 01 movw r24, r28 |
8be: 01 96 adiw r24, 0x01 ; 1 |
8c0: 9f 93 push r25 |
8c2: 8f 93 push r24 |
8c4: 8b ea ldi r24, 0xAB ; 171 |
8c6: 90 e0 ldi r25, 0x00 ; 0 |
8c8: 29 c0 rjmp .+82 ; 0x91c <__stack+0xbd> |
break; |
case '2':// LCD-Zeile2 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8ca: 20 91 98 00 lds r18, 0x0098 |
8ce: 43 e0 ldi r20, 0x03 ; 3 |
8d0: 6a e2 ldi r22, 0x2A ; 42 |
8d2: ce 01 movw r24, r28 |
8d4: 01 96 adiw r24, 0x01 ; 1 |
8d6: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8da: 1a a6 std Y+42, r1 ; 0x2a |
8dc: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,2,"%s",tmp_int_arr20); |
8de: 62 e0 ldi r22, 0x02 ; 2 |
8e0: 80 e0 ldi r24, 0x00 ; 0 |
8e2: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8e6: ce 01 movw r24, r28 |
8e8: 01 96 adiw r24, 0x01 ; 1 |
8ea: 9f 93 push r25 |
8ec: 8f 93 push r24 |
8ee: 8e ea ldi r24, 0xAE ; 174 |
8f0: 90 e0 ldi r25, 0x00 ; 0 |
8f2: 14 c0 rjmp .+40 ; 0x91c <__stack+0xbd> |
break; |
case '3':// LCD-Zeile3 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8f4: 20 91 98 00 lds r18, 0x0098 |
8f8: 43 e0 ldi r20, 0x03 ; 3 |
8fa: 6a e2 ldi r22, 0x2A ; 42 |
8fc: ce 01 movw r24, r28 |
8fe: 01 96 adiw r24, 0x01 ; 1 |
900: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
904: 1a a6 std Y+42, r1 ; 0x2a |
906: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,3,"%s",tmp_int_arr20); |
908: 63 e0 ldi r22, 0x03 ; 3 |
90a: 80 e0 ldi r24, 0x00 ; 0 |
90c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
910: ce 01 movw r24, r28 |
912: 01 96 adiw r24, 0x01 ; 1 |
914: 9f 93 push r25 |
916: 8f 93 push r24 |
918: 81 eb ldi r24, 0xB1 ; 177 |
91a: 90 e0 ldi r25, 0x00 ; 0 |
91c: 9f 93 push r25 |
91e: 8f 93 push r24 |
920: 0e 94 e3 06 call 0xdc6 <_printf_P> |
break; |
924: 0f 90 pop r0 |
926: 0f 90 pop r0 |
928: 0f 90 pop r0 |
92a: 0f 90 pop r0 |
92c: 1d c0 rjmp .+58 ; 0x968 <__stack+0x109> |
case 'D': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugOut,sizeof(DebugOut),3,AnzahlEmpfangsBytes); |
92e: 20 91 98 00 lds r18, 0x0098 |
932: 43 e0 ldi r20, 0x03 ; 3 |
934: 6a e1 ldi r22, 0x1A ; 26 |
936: 83 ed ldi r24, 0xD3 ; 211 |
938: 90 e0 ldi r25, 0x00 ; 0 |
93a: 0e 94 92 03 call 0x724 <Decode64> |
PORTB = DebugOut.Digital[1]; |
93e: 80 91 d4 00 lds r24, 0x00D4 |
942: 88 bb out 0x18, r24 ; 24 |
break; |
944: 11 c0 rjmp .+34 ; 0x968 <__stack+0x109> |
case 'K': // Debug Eingangsdaten |
Decode64(tmp_char_arr3,sizeof(tmp_char_arr3),3,AnzahlEmpfangsBytes); |
946: 20 91 98 00 lds r18, 0x0098 |
94a: 43 e0 ldi r20, 0x03 ; 3 |
94c: 64 2f mov r22, r20 |
94e: ce 01 movw r24, r28 |
950: 8b 96 adiw r24, 0x2b ; 43 |
952: 0e 94 92 03 call 0x724 <Decode64> |
TX_DigTransferKanalL = tmp_char_arr3[0]; |
956: 8b a5 ldd r24, Y+43 ; 0x2b |
958: 80 93 96 00 sts 0x0096, r24 |
TX_DigTransferKanalH = tmp_char_arr3[1]; |
95c: 8c a5 ldd r24, Y+44 ; 0x2c |
95e: 80 93 95 00 sts 0x0095, r24 |
TX_DigTransferKanalDaten = tmp_char_arr3[2]; |
962: 8d a5 ldd r24, Y+45 ; 0x2d |
964: 80 93 94 00 sts 0x0094, r24 |
968: ad 96 adiw r28, 0x2d ; 45 |
96a: 0f b6 in r0, 0x3f ; 63 |
96c: f8 94 cli |
96e: de bf out 0x3e, r29 ; 62 |
970: 0f be out 0x3f, r0 ; 63 |
972: cd bf out 0x3d, r28 ; 61 |
974: df 91 pop r29 |
976: cf 91 pop r28 |
978: 08 95 ret |
0000097a <uart_putchar>: |
//if(RxdBuffer[1] == 'b') LCD_printfxy(0,0,"b:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
//if(RxdBuffer[1] == 'c') LCD_printfxy(0,1,"c:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
break; |
/* |
unsigned char Digital[13]; // 0 = Taster, Hauptkarte |
// 1 + 2 = Debugkanäle |
// 3 = Digin, Hauptkarte |
// 4 = Relais, Hauptkarte |
// 5 + 6 = Extern IO1 (12Bit ein 4 Bit aus) |
// 7 + 8 = Extern IO2 (12Bit ein 4 Bit aus) |
// 9 + 10 = Extern IO3 (12Bit ein 4 Bit aus) |
// 11 + 12= Extern IO4 (12Bit ein 4 Bit aus) |
*/ |
/* case 'd': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
} |
break; |
case 'g': // "Get"-Anforderung für Debug-Daten // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'u': // Uhr stellen |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
ZEITWERT = tmp_int_arr2[0]; |
SEK = tmp_int_arr2[1]; |
make_time_variables(ZEITWERT); |
RTC_SetTime(STD, MIN, SEK); |
RTC_SetWDay(TAG); |
break; |
case 'i': // Intervalle für die Datenübertragung |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
Debug_Timer_Intervall = tmp_int_arr2[0]; |
Debug_Display_Intervall = tmp_int_arr2[1]; |
SendeDummyDaten = 1; |
break; |
case 's': // single Step 1 = Stop 2 = noch einen Zyklus 3 = noch 2 Zyklen |
Decode64((unsigned char *) &tmp_int_arr1[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
SingleStep = tmp_int_arr1[0]; |
break; |
*/ |
} |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
97a: cf 93 push r28 |
97c: c8 2f mov r28, r24 |
if (c == '\n') |
97e: 8a 30 cpi r24, 0x0A ; 10 |
980: 19 f4 brne .+6 ; 0x988 <uart_putchar+0xe> |
uart_putchar('\r'); |
982: 8d e0 ldi r24, 0x0D ; 13 |
984: 0e 94 bd 04 call 0x97a <uart_putchar> |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
988: 5d 9b sbis 0x0b, 5 ; 11 |
98a: fe cf rjmp .-4 ; 0x988 <uart_putchar+0xe> |
//Ausgabe des Zeichens |
UDR = c; |
98c: cc b9 out 0x0c, r28 ; 12 |
return (0); |
} |
98e: 80 e0 ldi r24, 0x00 ; 0 |
990: 90 e0 ldi r25, 0x00 ; 0 |
992: cf 91 pop r28 |
994: 08 95 ret |
00000996 <WriteProgramData>: |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
996: 08 95 ret |
00000998 <UART_Init>: |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
998: 88 e1 ldi r24, 0x18 ; 24 |
99a: 8a b9 out 0x0a, r24 ; 10 |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
99c: 59 9a sbi 0x0b, 1 ; 11 |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
99e: 57 9a sbi 0x0a, 7 ; 10 |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
9a0: 56 9a sbi 0x0a, 6 ; 10 |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
9a2: 81 e2 ldi r24, 0x21 ; 33 |
9a4: 89 b9 out 0x09, r24 ; 9 |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
9a6: 60 e0 ldi r22, 0x00 ; 0 |
9a8: 70 e0 ldi r23, 0x00 ; 0 |
9aa: 8d eb ldi r24, 0xBD ; 189 |
9ac: 94 e0 ldi r25, 0x04 ; 4 |
9ae: 0e 94 71 0c call 0x18e2 <fdevopen> |
9b2: 08 95 ret |
000009b4 <SendeRemoteTasten>: |
//sbi(PORTD,4); |
} |
/* |
struct str_DebugIn |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
unsigned int Analog[4]; |
}; |
*/ |
void SendeRemoteTasten(unsigned char keys) |
{ |
9b4: 98 2f mov r25, r24 |
while(!UebertragungAbgeschlossen); // evtl warten |
9b6: 80 91 6e 00 lds r24, 0x006E |
9ba: 88 23 and r24, r24 |
9bc: e1 f3 breq .-8 ; 0x9b6 <SendeRemoteTasten+0x2> |
DebugIn.RemoteTasten = keys; |
9be: 90 93 c0 00 sts 0x00C0, r25 |
DebugIn.Analog[0] = AnalogWerte[0]; |
9c2: 80 91 ca 01 lds r24, 0x01CA |
9c6: 90 91 cb 01 lds r25, 0x01CB |
9ca: 90 93 c2 00 sts 0x00C2, r25 |
9ce: 80 93 c1 00 sts 0x00C1, r24 |
DebugIn.Analog[1] = AnalogWerte[1]; |
9d2: 80 91 cc 01 lds r24, 0x01CC |
9d6: 90 91 cd 01 lds r25, 0x01CD |
9da: 90 93 c4 00 sts 0x00C4, r25 |
9de: 80 93 c3 00 sts 0x00C3, r24 |
DebugIn.Analog[2] = AnalogWerte[2]; |
9e2: 80 91 ce 01 lds r24, 0x01CE |
9e6: 90 91 cf 01 lds r25, 0x01CF |
9ea: 90 93 c6 00 sts 0x00C6, r25 |
9ee: 80 93 c5 00 sts 0x00C5, r24 |
DebugIn.Analog[3] = IR_Code; |
9f2: 80 91 c7 01 lds r24, 0x01C7 |
9f6: 90 91 c8 01 lds r25, 0x01C8 |
9fa: 90 93 c8 00 sts 0x00C8, r25 |
9fe: 80 93 c7 00 sts 0x00C7, r24 |
SendOutData('d',SlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
a02: 2b e0 ldi r18, 0x0B ; 11 |
a04: 4e eb ldi r20, 0xBE ; 190 |
a06: 50 e0 ldi r21, 0x00 ; 0 |
a08: 60 91 64 00 lds r22, 0x0064 |
a0c: 84 e6 ldi r24, 0x64 ; 100 |
a0e: 0e 94 1e 03 call 0x63c <SendOutData> |
a12: 08 95 ret |
00000a14 <SendIntervalle>: |
} |
void SendIntervalle(unsigned int debug, unsigned int disp) |
{ |
a14: cf 93 push r28 |
a16: df 93 push r29 |
a18: cd b7 in r28, 0x3d ; 61 |
a1a: de b7 in r29, 0x3e ; 62 |
a1c: 24 97 sbiw r28, 0x04 ; 4 |
a1e: 0f b6 in r0, 0x3f ; 63 |
a20: f8 94 cli |
a22: de bf out 0x3e, r29 ; 62 |
a24: 0f be out 0x3f, r0 ; 63 |
a26: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = debug; |
a28: 9a 83 std Y+2, r25 ; 0x02 |
a2a: 89 83 std Y+1, r24 ; 0x01 |
tmp_int_arr2[1] = disp; |
a2c: 7c 83 std Y+4, r23 ; 0x04 |
a2e: 6b 83 std Y+3, r22 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a30: 80 91 6e 00 lds r24, 0x006E |
a34: 88 23 and r24, r24 |
a36: e1 f3 breq .-8 ; 0xa30 <SendIntervalle+0x1c> |
SendOutData('i',SlaveAdresse,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); |
a38: 24 e0 ldi r18, 0x04 ; 4 |
a3a: ae 01 movw r20, r28 |
a3c: 4f 5f subi r20, 0xFF ; 255 |
a3e: 5f 4f sbci r21, 0xFF ; 255 |
a40: 60 91 64 00 lds r22, 0x0064 |
a44: 89 e6 ldi r24, 0x69 ; 105 |
a46: 0e 94 1e 03 call 0x63c <SendOutData> |
a4a: 24 96 adiw r28, 0x04 ; 4 |
a4c: 0f b6 in r0, 0x3f ; 63 |
a4e: f8 94 cli |
a50: de bf out 0x3e, r29 ; 62 |
a52: 0f be out 0x3f, r0 ; 63 |
a54: cd bf out 0x3d, r28 ; 61 |
a56: df 91 pop r29 |
a58: cf 91 pop r28 |
a5a: 08 95 ret |
00000a5c <ClearIntervalle>: |
} |
void ClearIntervalle(void) |
{ |
a5c: cf 93 push r28 |
a5e: df 93 push r29 |
a60: cd b7 in r28, 0x3d ; 61 |
a62: de b7 in r29, 0x3e ; 62 |
a64: 24 97 sbiw r28, 0x04 ; 4 |
a66: 0f b6 in r0, 0x3f ; 63 |
a68: f8 94 cli |
a6a: de bf out 0x3e, r29 ; 62 |
a6c: 0f be out 0x3f, r0 ; 63 |
a6e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = 0; |
a70: 1a 82 std Y+2, r1 ; 0x02 |
a72: 19 82 std Y+1, r1 ; 0x01 |
tmp_int_arr2[1] = 0; |
a74: 1c 82 std Y+4, r1 ; 0x04 |
a76: 1b 82 std Y+3, r1 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a78: 80 91 6e 00 lds r24, 0x006E |
a7c: 88 23 and r24, r24 |
a7e: e1 f3 breq .-8 ; 0xa78 <ClearIntervalle+0x1c> |
SendOutData('i',0,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); // 0= an alle |
a80: 24 e0 ldi r18, 0x04 ; 4 |
a82: ae 01 movw r20, r28 |
a84: 4f 5f subi r20, 0xFF ; 255 |
a86: 5f 4f sbci r21, 0xFF ; 255 |
a88: 60 e0 ldi r22, 0x00 ; 0 |
a8a: 89 e6 ldi r24, 0x69 ; 105 |
a8c: 0e 94 1e 03 call 0x63c <SendOutData> |
a90: 24 96 adiw r28, 0x04 ; 4 |
a92: 0f b6 in r0, 0x3f ; 63 |
a94: f8 94 cli |
a96: de bf out 0x3e, r29 ; 62 |
a98: 0f be out 0x3f, r0 ; 63 |
a9a: cd bf out 0x3d, r28 ; 61 |
a9c: df 91 pop r29 |
a9e: cf 91 pop r28 |
aa0: 08 95 ret |
00000aa2 <DatenUebertragung>: |
} |
void DatenUebertragung(unsigned char key) |
{ |
aa2: cf 93 push r28 |
aa4: df 93 push r29 |
aa6: cd b7 in r28, 0x3d ; 61 |
aa8: de b7 in r29, 0x3e ; 62 |
aaa: 25 97 sbiw r28, 0x05 ; 5 |
aac: 0f b6 in r0, 0x3f ; 63 |
aae: f8 94 cli |
ab0: de bf out 0x3e, r29 ; 62 |
ab2: 0f be out 0x3f, r0 ; 63 |
ab4: cd bf out 0x3d, r28 ; 61 |
ab6: 98 2f mov r25, r24 |
static unsigned char state = 1; |
unsigned char temp_1[1]; |
unsigned char temp_2[2]; |
unsigned char temp_3[3]; |
unsigned int tmp_int_arr2[2]; |
while(!UebertragungAbgeschlossen); // evtl warten |
ab8: 80 91 6e 00 lds r24, 0x006E |
abc: 88 23 and r24, r24 |
abe: e1 f3 breq .-8 ; 0xab8 <DatenUebertragung+0x16> |
static unsigned char KanalSlave = 1; |
if(PollDisplay) |
ac0: 80 91 ed 00 lds r24, 0x00ED |
ac4: 88 23 and r24, r24 |
ac6: e1 f0 breq .+56 ; 0xb00 <DatenUebertragung+0x5e> |
{ |
temp_2[0] = key; |
ac8: 9c 83 std Y+4, r25 ; 0x04 |
temp_2[1] = 6; |
aca: 86 e0 ldi r24, 0x06 ; 6 |
acc: 8d 83 std Y+5, r24 ; 0x05 |
if(DisplayZeilen == 4) temp_2[1] = 4 + 9; // anzahl Zeilen --> + 8 bedeutet: ersten Pollingzyklus freilassen |
ace: 80 91 65 00 lds r24, 0x0065 |
ad2: 84 30 cpi r24, 0x04 ; 4 |
ad4: 11 f4 brne .+4 ; 0xada <DatenUebertragung+0x38> |
ad6: 8d e0 ldi r24, 0x0D ; 13 |
ad8: 01 c0 rjmp .+2 ; 0xadc <DatenUebertragung+0x3a> |
else temp_2[1] = 2 + 9; |
ada: 8b e0 ldi r24, 0x0B ; 11 |
adc: 8d 83 std Y+5, r24 ; 0x05 |
SendOutData('h',SlaveAdresse,(unsigned char *) &temp_2,sizeof(temp_2)); |
ade: 22 e0 ldi r18, 0x02 ; 2 |
ae0: ae 01 movw r20, r28 |
ae2: 4c 5f subi r20, 0xFC ; 252 |
ae4: 5f 4f sbci r21, 0xFF ; 255 |
ae6: 60 91 64 00 lds r22, 0x0064 |
aea: 88 e6 ldi r24, 0x68 ; 104 |
aec: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = '0'; |
af0: 80 e3 ldi r24, 0x30 ; 48 |
af2: 80 93 6d 00 sts 0x006D, r24 |
DisplayBusy = 90; |
af6: 8a e5 ldi r24, 0x5A ; 90 |
af8: 80 93 93 00 sts 0x0093, r24 |
PollDisplay = 0; |
afc: 10 92 ed 00 sts 0x00ED, r1 |
} |
if(!DisplayBusy) |
b00: 60 91 93 00 lds r22, 0x0093 |
b04: 66 23 and r22, r22 |
b06: e1 f5 brne .+120 ; 0xb80 <DatenUebertragung+0xde> |
switch(state) |
b08: 80 91 6f 00 lds r24, 0x006F |
b0c: 99 27 eor r25, r25 |
b0e: 81 30 cpi r24, 0x01 ; 1 |
b10: 91 05 cpc r25, r1 |
b12: 19 f0 breq .+6 ; 0xb1a <DatenUebertragung+0x78> |
b14: 02 97 sbiw r24, 0x02 ; 2 |
b16: e9 f0 breq .+58 ; 0xb52 <DatenUebertragung+0xb0> |
b18: 30 c0 rjmp .+96 ; 0xb7a <DatenUebertragung+0xd8> |
{ |
case 1:// Display |
SendOutData('k',KanalSlave,(unsigned char *) &temp_3,sizeof(temp_3)); |
b1a: 23 e0 ldi r18, 0x03 ; 3 |
b1c: ae 01 movw r20, r28 |
b1e: 4f 5f subi r20, 0xFF ; 255 |
b20: 5f 4f sbci r21, 0xFF ; 255 |
b22: 60 91 70 00 lds r22, 0x0070 |
b26: 8b e6 ldi r24, 0x6B ; 107 |
b28: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = 'K'; |
b2c: 8b e4 ldi r24, 0x4B ; 75 |
b2e: 80 93 6d 00 sts 0x006D, r24 |
if(++KanalSlave > AnzahlTeilnehmer) KanalSlave = 1; |
b32: 80 91 70 00 lds r24, 0x0070 |
b36: 8f 5f subi r24, 0xFF ; 255 |
b38: 80 93 70 00 sts 0x0070, r24 |
b3c: 90 91 6c 00 lds r25, 0x006C |
b40: 98 17 cp r25, r24 |
b42: 18 f4 brcc .+6 ; 0xb4a <DatenUebertragung+0xa8> |
b44: 81 e0 ldi r24, 0x01 ; 1 |
b46: 80 93 70 00 sts 0x0070, r24 |
state++; |
b4a: 80 91 6f 00 lds r24, 0x006F |
b4e: 8f 5f subi r24, 0xFF ; 255 |
b50: 15 c0 rjmp .+42 ; 0xb7c <DatenUebertragung+0xda> |
break; |
case 2: |
temp_3[0] = TX_DigTransferKanalL; |
b52: 80 91 96 00 lds r24, 0x0096 |
b56: 89 83 std Y+1, r24 ; 0x01 |
temp_3[1] = TX_DigTransferKanalH; |
b58: 80 91 95 00 lds r24, 0x0095 |
b5c: 8a 83 std Y+2, r24 ; 0x02 |
temp_3[2] = TX_DigTransferKanalDaten; |
b5e: 80 91 94 00 lds r24, 0x0094 |
b62: 8b 83 std Y+3, r24 ; 0x03 |
SendOutData('l',0,(unsigned char *) &temp_3,sizeof(temp_3)); |
b64: 23 e0 ldi r18, 0x03 ; 3 |
b66: ae 01 movw r20, r28 |
b68: 4f 5f subi r20, 0xFF ; 255 |
b6a: 5f 4f sbci r21, 0xFF ; 255 |
b6c: 8c e6 ldi r24, 0x6C ; 108 |
b6e: 0e 94 1e 03 call 0x63c <SendOutData> |
AntwortEingetroffen = 1; // erwarte keine Antwort |
b72: 81 e0 ldi r24, 0x01 ; 1 |
b74: 80 93 92 00 sts 0x0092, r24 |
b78: 01 c0 rjmp .+2 ; 0xb7c <DatenUebertragung+0xda> |
state = 1; |
break; |
default: state = 1; |
b7a: 81 e0 ldi r24, 0x01 ; 1 |
b7c: 80 93 6f 00 sts 0x006F, r24 |
b80: 25 96 adiw r28, 0x05 ; 5 |
b82: 0f b6 in r0, 0x3f ; 63 |
b84: f8 94 cli |
b86: de bf out 0x3e, r29 ; 62 |
b88: 0f be out 0x3f, r0 ; 63 |
b8a: cd bf out 0x3d, r28 ; 61 |
b8c: df 91 pop r29 |
b8e: cf 91 pop r28 |
b90: 08 95 ret |
00000b92 <_long_delay>: |
#include "main.h" |
void _long_delay(void) |
{ |
long t = 5000; |
b92: 88 e8 ldi r24, 0x88 ; 136 |
b94: 93 e1 ldi r25, 0x13 ; 19 |
b96: a0 e0 ldi r26, 0x00 ; 0 |
b98: b0 e0 ldi r27, 0x00 ; 0 |
while (t--); |
b9a: 03 97 sbiw r24, 0x03 ; 3 |
b9c: a1 09 sbc r26, r1 |
b9e: b1 09 sbc r27, r1 |
ba0: 8f 3f cpi r24, 0xFF ; 255 |
ba2: 2f ef ldi r18, 0xFF ; 255 |
ba4: 92 07 cpc r25, r18 |
ba6: 2f ef ldi r18, 0xFF ; 255 |
ba8: a2 07 cpc r26, r18 |
baa: 2f ef ldi r18, 0xFF ; 255 |
bac: b2 07 cpc r27, r18 |
bae: a9 f7 brne .-22 ; 0xb9a <_long_delay+0x8> |
bb0: 08 95 ret |
00000bb2 <_short_delay>: |
} |
void _short_delay(void) |
{ |
int t = 500; |
bb2: 84 ef ldi r24, 0xF4 ; 244 |
bb4: 91 e0 ldi r25, 0x01 ; 1 |
while (t--); |
bb6: 03 97 sbiw r24, 0x03 ; 3 |
bb8: 2f ef ldi r18, 0xFF ; 255 |
bba: 8f 3f cpi r24, 0xFF ; 255 |
bbc: 92 07 cpc r25, r18 |
bbe: d9 f7 brne .-10 ; 0xbb6 <_short_delay+0x4> |
bc0: 08 95 ret |
00000bc2 <_lcd_write_command>: |
} |
void _lcd_write_command(unsigned char data) |
{ |
bc2: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bc4: 80 7f andi r24, 0xF0 ; 240 |
bc6: 98 2f mov r25, r24 |
bc8: 94 60 ori r25, 0x04 ; 4 |
bca: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bcc: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bce: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bd0: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bd2: 82 2f mov r24, r18 |
bd4: 99 27 eor r25, r25 |
bd6: 34 e0 ldi r19, 0x04 ; 4 |
bd8: 88 0f add r24, r24 |
bda: 99 1f adc r25, r25 |
bdc: 3a 95 dec r19 |
bde: e1 f7 brne .-8 ; 0xbd8 <_lcd_write_command+0x16> |
be0: 84 60 ori r24, 0x04 ; 4 |
be2: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
be4: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4); |
be6: 22 95 swap r18 |
be8: 20 7f andi r18, 0xF0 ; 240 |
bea: 25 bb out 0x15, r18 ; 21 |
bec: 08 95 ret |
00000bee <_lcd_write_4bit>: |
} |
void _lcd_write_4bit(unsigned char data) |
{ |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bee: 28 2f mov r18, r24 |
bf0: 33 27 eor r19, r19 |
bf2: 44 e0 ldi r20, 0x04 ; 4 |
bf4: 22 0f add r18, r18 |
bf6: 33 1f adc r19, r19 |
bf8: 4a 95 dec r20 |
bfa: e1 f7 brne .-8 ; 0xbf4 <_lcd_write_4bit+0x6> |
bfc: 92 2f mov r25, r18 |
bfe: 94 60 ori r25, 0x04 ; 4 |
c00: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
c02: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4); |
c04: 82 95 swap r24 |
c06: 80 7f andi r24, 0xF0 ; 240 |
c08: 85 bb out 0x15, r24 ; 21 |
c0a: 08 95 ret |
00000c0c <lcd_write_byte>: |
} |
void lcd_write_byte(unsigned char data) |
{ |
c0c: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN | DISPLAY_RS; |
c0e: 80 7f andi r24, 0xF0 ; 240 |
c10: 98 2f mov r25, r24 |
c12: 95 60 ori r25, 0x05 ; 5 |
c14: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_RS; |
c16: 81 60 ori r24, 0x01 ; 1 |
c18: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN | DISPLAY_RS; |
c1a: 82 2f mov r24, r18 |
c1c: 99 27 eor r25, r25 |
c1e: 54 e0 ldi r21, 0x04 ; 4 |
c20: 88 0f add r24, r24 |
c22: 99 1f adc r25, r25 |
c24: 5a 95 dec r21 |
c26: e1 f7 brne .-8 ; 0xc20 <lcd_write_byte+0x14> |
c28: 28 2f mov r18, r24 |
c2a: 25 60 ori r18, 0x05 ; 5 |
c2c: 25 bb out 0x15, r18 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_RS; |
c2e: 81 60 ori r24, 0x01 ; 1 |
c30: 85 bb out 0x15, r24 ; 21 |
c32: 08 95 ret |
00000c34 <my_pput>: |
} |
int my_pput(int zeichen) |
{ |
lcd_write_byte((char) zeichen); |
c34: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
c38: 81 e0 ldi r24, 0x01 ; 1 |
c3a: 90 e0 ldi r25, 0x00 ; 0 |
c3c: 08 95 ret |
00000c3e <LCD_Init>: |
// initialize the LCD controller |
void LCD_Init(void) |
{ |
LCD_PORT_DDR = 0xff;//0xf0 | DISPLAY_RS | DISPLAY_EN; |
c3e: 8f ef ldi r24, 0xFF ; 255 |
c40: 84 bb out 0x14, r24 ; 20 |
_long_delay(); |
c42: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c46: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c4a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c4e: 83 e0 ldi r24, 0x03 ; 3 |
c50: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c54: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c58: 83 e0 ldi r24, 0x03 ; 3 |
c5a: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c5e: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c62: 83 e0 ldi r24, 0x03 ; 3 |
c64: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c68: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x02); // jetzt 4 Bit |
c6c: 82 e0 ldi r24, 0x02 ; 2 |
c6e: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c72: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x28); // 4 Bit Zweizeilig |
c76: 88 e2 ldi r24, 0x28 ; 40 |
c78: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c7c: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08); // Display aus |
c80: 88 e0 ldi r24, 0x08 ; 8 |
c82: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c86: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x01); // Clear |
c8a: 81 e0 ldi r24, 0x01 ; 1 |
c8c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c90: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x06); //Entry mode |
c94: 86 e0 ldi r24, 0x06 ; 6 |
c96: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c9a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08 + 4); // Display an |
c9e: 8c e0 ldi r24, 0x0C ; 12 |
ca0: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
ca4: 0e 94 c9 05 call 0xb92 <_long_delay> |
ca8: 08 95 ret |
00000caa <LCD_Gotoxy>: |
} |
void LCD_Gotoxy(unsigned char x , unsigned char y) |
{ |
caa: 1f 93 push r17 |
cac: cf 93 push r28 |
cae: c8 2f mov r28, r24 |
cb0: 16 2f mov r17, r22 |
_short_delay(); |
cb2: 0e 94 d9 05 call 0xbb2 <_short_delay> |
switch(y) |
cb6: 81 2f mov r24, r17 |
cb8: 99 27 eor r25, r25 |
cba: 81 30 cpi r24, 0x01 ; 1 |
cbc: 91 05 cpc r25, r1 |
cbe: 79 f0 breq .+30 ; 0xcde <LCD_Gotoxy+0x34> |
cc0: 82 30 cpi r24, 0x02 ; 2 |
cc2: 91 05 cpc r25, r1 |
cc4: 1c f4 brge .+6 ; 0xccc <LCD_Gotoxy+0x22> |
cc6: 89 2b or r24, r25 |
cc8: 39 f0 breq .+14 ; 0xcd8 <LCD_Gotoxy+0x2e> |
cca: 13 c0 rjmp .+38 ; 0xcf2 <LCD_Gotoxy+0x48> |
ccc: 82 30 cpi r24, 0x02 ; 2 |
cce: 91 05 cpc r25, r1 |
cd0: 49 f0 breq .+18 ; 0xce4 <LCD_Gotoxy+0x3a> |
cd2: 03 97 sbiw r24, 0x03 ; 3 |
cd4: 51 f0 breq .+20 ; 0xcea <LCD_Gotoxy+0x40> |
cd6: 0d c0 rjmp .+26 ; 0xcf2 <LCD_Gotoxy+0x48> |
{ case 0 : _lcd_write_command(x + 0x80); break; |
cd8: 8c 2f mov r24, r28 |
cda: 80 58 subi r24, 0x80 ; 128 |
cdc: 08 c0 rjmp .+16 ; 0xcee <LCD_Gotoxy+0x44> |
case 1 : _lcd_write_command(x + 0xC0); break; |
cde: 8c 2f mov r24, r28 |
ce0: 80 54 subi r24, 0x40 ; 64 |
ce2: 05 c0 rjmp .+10 ; 0xcee <LCD_Gotoxy+0x44> |
case 2 : _lcd_write_command(x + (0x80 + 20)); break; |
ce4: 8c 2f mov r24, r28 |
ce6: 8c 56 subi r24, 0x6C ; 108 |
ce8: 02 c0 rjmp .+4 ; 0xcee <LCD_Gotoxy+0x44> |
case 3 : _lcd_write_command(x + (0xC0 + 20)); break; |
cea: 8c 2f mov r24, r28 |
cec: 8c 52 subi r24, 0x2C ; 44 |
cee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
cf2: cf 91 pop r28 |
cf4: 1f 91 pop r17 |
cf6: 08 95 ret |
00000cf8 <LCD_Write>: |
} |
} |
void LCD_Write(unsigned char *this_text) |
{ |
cf8: 1f 93 push r17 |
cfa: cf 93 push r28 |
cfc: df 93 push r29 |
cfe: ec 01 movw r28, r24 |
unsigned char i = 0; |
d00: 10 e0 ldi r17, 0x00 ; 0 |
while(this_text[i] != 0) |
{ |
lcd_write_byte(this_text[i++]); |
_long_delay(); |
d02: 88 81 ld r24, Y |
d04: 88 23 and r24, r24 |
d06: 79 f0 breq .+30 ; 0xd26 <LCD_Write+0x2e> |
d08: fe 01 movw r30, r28 |
d0a: e1 0f add r30, r17 |
d0c: f1 1d adc r31, r1 |
d0e: 1f 5f subi r17, 0xFF ; 255 |
d10: 80 81 ld r24, Z |
d12: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
d16: 0e 94 c9 05 call 0xb92 <_long_delay> |
d1a: fe 01 movw r30, r28 |
d1c: e1 0f add r30, r17 |
d1e: f1 1d adc r31, r1 |
d20: 80 81 ld r24, Z |
d22: 88 23 and r24, r24 |
d24: 89 f7 brne .-30 ; 0xd08 <LCD_Write+0x10> |
d26: df 91 pop r29 |
d28: cf 91 pop r28 |
d2a: 1f 91 pop r17 |
d2c: 08 95 ret |
00000d2e <LCD_Putchar>: |
} |
} |
char LCD_Putchar(char zeichen) |
{ |
d2e: 1f 93 push r17 |
d30: 18 2f mov r17, r24 |
_short_delay(); |
d32: 0e 94 d9 05 call 0xbb2 <_short_delay> |
lcd_write_byte((char) zeichen); |
d36: 81 2f mov r24, r17 |
d38: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
d3c: 81 e0 ldi r24, 0x01 ; 1 |
d3e: 90 e0 ldi r25, 0x00 ; 0 |
d40: 1f 91 pop r17 |
d42: 08 95 ret |
00000d44 <PRINT>: |
#include "old_macros.h" |
//#define LIGHTPRINTF |
void PRINT(const char * ptr, unsigned int len) { |
d44: 0f 93 push r16 |
d46: 1f 93 push r17 |
d48: cf 93 push r28 |
d4a: df 93 push r29 |
d4c: 8c 01 movw r16, r24 |
d4e: eb 01 movw r28, r22 |
for(;len;len--) |
d50: 67 2b or r22, r23 |
d52: 39 f0 breq .+14 ; 0xd62 <PRINT+0x1e> |
LCD_Putchar(*ptr++); |
d54: f8 01 movw r30, r16 |
d56: 81 91 ld r24, Z+ |
d58: 8f 01 movw r16, r30 |
d5a: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d5e: 21 97 sbiw r28, 0x01 ; 1 |
d60: c9 f7 brne .-14 ; 0xd54 <PRINT+0x10> |
d62: df 91 pop r29 |
d64: cf 91 pop r28 |
d66: 1f 91 pop r17 |
d68: 0f 91 pop r16 |
d6a: 08 95 ret |
00000d6c <PRINTP>: |
} |
void PRINTP(const char * ptr, unsigned int len) { |
d6c: 0f 93 push r16 |
d6e: 1f 93 push r17 |
d70: cf 93 push r28 |
d72: df 93 push r29 |
d74: 8c 01 movw r16, r24 |
d76: eb 01 movw r28, r22 |
for(;len;len--) |
d78: 67 2b or r22, r23 |
d7a: 41 f0 breq .+16 ; 0xd8c <PRINTP+0x20> |
// LCD_Putchar(PRG_RDB(ptr++)); |
LCD_Putchar(pgm_read_byte(ptr++)); |
d7c: f8 01 movw r30, r16 |
d7e: 0f 5f subi r16, 0xFF ; 255 |
d80: 1f 4f sbci r17, 0xFF ; 255 |
d82: 84 91 lpm r24, Z |
d84: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d88: 21 97 sbiw r28, 0x01 ; 1 |
d8a: c1 f7 brne .-16 ; 0xd7c <PRINTP+0x10> |
d8c: df 91 pop r29 |
d8e: cf 91 pop r28 |
d90: 1f 91 pop r17 |
d92: 0f 91 pop r16 |
d94: 08 95 ret |
00000d96 <PAD_SP>: |
} |
void PAD_SP(signed char howmany) { |
d96: cf 93 push r28 |
d98: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
d9a: 18 16 cp r1, r24 |
d9c: 34 f4 brge .+12 ; 0xdaa <PAD_SP+0x14> |
LCD_Putchar(' '); |
d9e: 80 e2 ldi r24, 0x20 ; 32 |
da0: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
da4: c1 50 subi r28, 0x01 ; 1 |
da6: 1c 16 cp r1, r28 |
da8: d4 f3 brlt .-12 ; 0xd9e <PAD_SP+0x8> |
daa: cf 91 pop r28 |
dac: 08 95 ret |
00000dae <PAD_0>: |
} |
void PAD_0(signed char howmany) { |
dae: cf 93 push r28 |
db0: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
db2: 18 16 cp r1, r24 |
db4: 34 f4 brge .+12 ; 0xdc2 <PAD_0+0x14> |
LCD_Putchar('0'); |
db6: 80 e3 ldi r24, 0x30 ; 48 |
db8: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
dbc: c1 50 subi r28, 0x01 ; 1 |
dbe: 1c 16 cp r1, r28 |
dc0: d4 f3 brlt .-12 ; 0xdb6 <PAD_0+0x8> |
dc2: cf 91 pop r28 |
dc4: 08 95 ret |
00000dc6 <_printf_P>: |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
dc6: 2f 92 push r2 |
dc8: 3f 92 push r3 |
dca: 4f 92 push r4 |
dcc: 5f 92 push r5 |
dce: 6f 92 push r6 |
dd0: 7f 92 push r7 |
dd2: 8f 92 push r8 |
dd4: 9f 92 push r9 |
dd6: af 92 push r10 |
dd8: bf 92 push r11 |
dda: cf 92 push r12 |
ddc: df 92 push r13 |
dde: ef 92 push r14 |
de0: ff 92 push r15 |
de2: 0f 93 push r16 |
de4: 1f 93 push r17 |
de6: cf 93 push r28 |
de8: df 93 push r29 |
dea: cd b7 in r28, 0x3d ; 61 |
dec: de b7 in r29, 0x3e ; 62 |
dee: e0 97 sbiw r28, 0x30 ; 48 |
df0: 0f b6 in r0, 0x3f ; 63 |
df2: f8 94 cli |
df4: de bf out 0x3e, r29 ; 62 |
df6: 0f be out 0x3f, r0 ; 63 |
df8: cd bf out 0x3d, r28 ; 61 |
dfa: a5 e4 ldi r26, 0x45 ; 69 |
dfc: 6a 2e mov r6, r26 |
dfe: 71 2c mov r7, r1 |
e00: 6c 0e add r6, r28 |
e02: 7d 1e adc r7, r29 |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
e04: 1c a6 std Y+44, r1 ; 0x2c |
e06: 1d a6 std Y+45, r1 ; 0x2d |
e08: 1e a6 std Y+46, r1 ; 0x2e |
e0a: 1f a6 std Y+47, r1 ; 0x2f |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
va_start(ap, fmt0); |
fmt = fmt0; |
e0c: d3 01 movw r26, r6 |
e0e: ad 90 ld r10, X+ |
e10: bd 90 ld r11, X+ |
e12: 3d 01 movw r6, r26 |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
e14: c5 01 movw r24, r10 |
e16: 05 c0 rjmp .+10 ; 0xe22 <_printf_P+0x5c> |
e18: 05 32 cpi r16, 0x25 ; 37 |
e1a: 39 f0 breq .+14 ; 0xe2a <_printf_P+0x64> |
e1c: 08 94 sec |
e1e: a1 1c adc r10, r1 |
e20: b1 1c adc r11, r1 |
e22: f5 01 movw r30, r10 |
e24: 04 91 lpm r16, Z |
e26: 00 23 and r16, r16 |
e28: b9 f7 brne .-18 ; 0xe18 <_printf_P+0x52> |
/* void */; |
if ((n = fmt - fmark) != 0) { |
e2a: b5 01 movw r22, r10 |
e2c: 68 1b sub r22, r24 |
e2e: 79 0b sbc r23, r25 |
e30: 11 f0 breq .+4 ; 0xe36 <_printf_P+0x70> |
PRINTP(fmark, n); |
e32: 0e 94 b6 06 call 0xd6c <PRINTP> |
} |
if (ch == '\0') |
e36: 00 23 and r16, r16 |
e38: 09 f4 brne .+2 ; 0xe3c <_printf_P+0x76> |
e3a: 30 c2 rjmp .+1120 ; 0x129c <_printf_P+0x4d6> |
goto done; |
fmt++; /* skip over '%' */ |
e3c: 08 94 sec |
e3e: a1 1c adc r10, r1 |
e40: b1 1c adc r11, r1 |
flags = 0; |
e42: 55 24 eor r5, r5 |
dprec = 0; |
e44: 58 aa std Y+48, r5 ; 0x30 |
width = 0; |
e46: 25 2c mov r2, r5 |
prec = -1; |
e48: 1f ef ldi r17, 0xFF ; 255 |
sign = '\0'; |
e4a: 59 a6 std Y+41, r5 ; 0x29 |
rflag: ch = PRG_RDB(fmt++); |
e4c: f5 01 movw r30, r10 |
e4e: 08 94 sec |
e50: a1 1c adc r10, r1 |
e52: b1 1c adc r11, r1 |
e54: 04 91 lpm r16, Z |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
e56: 05 37 cpi r16, 0x75 ; 117 |
e58: 21 f0 breq .+8 ; 0xe62 <_printf_P+0x9c> |
e5a: 80 2f mov r24, r16 |
e5c: 80 62 ori r24, 0x20 ; 32 |
e5e: 88 37 cpi r24, 0x78 ; 120 |
e60: f1 f4 brne .+60 ; 0xe9e <_printf_P+0xd8> |
#endif |
if (flags&LONGINT) { |
e62: 50 fe sbrs r5, 0 |
e64: 0e c0 rjmp .+28 ; 0xe82 <_printf_P+0xbc> |
_ulong=va_arg(ap, unsigned long); |
e66: f3 01 movw r30, r6 |
e68: 24 e0 ldi r18, 0x04 ; 4 |
e6a: 30 e0 ldi r19, 0x00 ; 0 |
e6c: 62 0e add r6, r18 |
e6e: 73 1e adc r7, r19 |
e70: 80 81 ld r24, Z |
e72: 91 81 ldd r25, Z+1 ; 0x01 |
e74: a2 81 ldd r26, Z+2 ; 0x02 |
e76: b3 81 ldd r27, Z+3 ; 0x03 |
e78: 8c a7 std Y+44, r24 ; 0x2c |
e7a: 9d a7 std Y+45, r25 ; 0x2d |
e7c: ae a7 std Y+46, r26 ; 0x2e |
e7e: bf a7 std Y+47, r27 ; 0x2f |
e80: 0e c0 rjmp .+28 ; 0xe9e <_printf_P+0xd8> |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
e82: f3 01 movw r30, r6 |
e84: a2 e0 ldi r26, 0x02 ; 2 |
e86: b0 e0 ldi r27, 0x00 ; 0 |
e88: 6a 0e add r6, r26 |
e8a: 7b 1e adc r7, r27 |
e8c: 80 81 ld r24, Z |
e8e: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
e90: 9c 01 movw r18, r24 |
e92: 44 27 eor r20, r20 |
e94: 55 27 eor r21, r21 |
e96: 2c a7 std Y+44, r18 ; 0x2c |
e98: 3d a7 std Y+45, r19 ; 0x2d |
e9a: 4e a7 std Y+46, r20 ; 0x2e |
e9c: 5f a7 std Y+47, r21 ; 0x2f |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
e9e: 00 32 cpi r16, 0x20 ; 32 |
ea0: 21 f4 brne .+8 ; 0xeaa <_printf_P+0xe4> |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
ea2: 89 a5 ldd r24, Y+41 ; 0x29 |
ea4: 88 23 and r24, r24 |
ea6: 91 f6 brne .-92 ; 0xe4c <_printf_P+0x86> |
ea8: 1b c0 rjmp .+54 ; 0xee0 <_printf_P+0x11a> |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
eaa: 03 32 cpi r16, 0x23 ; 35 |
eac: 11 f4 brne .+4 ; 0xeb2 <_printf_P+0xec> |
flags |= ALT; |
eae: 38 e0 ldi r19, 0x08 ; 8 |
eb0: 81 c0 rjmp .+258 ; 0xfb4 <_printf_P+0x1ee> |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
eb2: 0a 32 cpi r16, 0x2A ; 42 |
eb4: 11 f0 breq .+4 ; 0xeba <_printf_P+0xf4> |
eb6: 0d 32 cpi r16, 0x2D ; 45 |
eb8: 89 f4 brne .+34 ; 0xedc <_printf_P+0x116> |
if (ch=='*') { |
eba: 0a 32 cpi r16, 0x2A ; 42 |
ebc: 51 f4 brne .+20 ; 0xed2 <_printf_P+0x10c> |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
ebe: f3 01 movw r30, r6 |
ec0: 42 e0 ldi r20, 0x02 ; 2 |
ec2: 50 e0 ldi r21, 0x00 ; 0 |
ec4: 64 0e add r6, r20 |
ec6: 75 1e adc r7, r21 |
ec8: 20 80 ld r2, Z |
eca: 22 20 and r2, r2 |
ecc: 0c f0 brlt .+2 ; 0xed0 <_printf_P+0x10a> |
ece: be cf rjmp .-132 ; 0xe4c <_printf_P+0x86> |
goto rflag; |
width = -width; |
ed0: 21 94 neg r2 |
} |
flags |= LADJUST; |
ed2: 50 e1 ldi r21, 0x10 ; 16 |
ed4: 55 2a or r5, r21 |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
ed6: 8f ed ldi r24, 0xDF ; 223 |
ed8: 58 22 and r5, r24 |
goto rflag; |
eda: b8 cf rjmp .-144 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='+') { |
edc: 0b 32 cpi r16, 0x2B ; 43 |
ede: 11 f4 brne .+4 ; 0xee4 <_printf_P+0x11e> |
sign = '+'; |
ee0: 09 a7 std Y+41, r16 ; 0x29 |
goto rflag; |
ee2: b4 cf rjmp .-152 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='.') { |
ee4: 0e 32 cpi r16, 0x2E ; 46 |
ee6: c1 f5 brne .+112 ; 0xf58 <_printf_P+0x192> |
if ((ch = PRG_RDB(fmt++)) == '*') { |
ee8: f5 01 movw r30, r10 |
eea: 08 94 sec |
eec: a1 1c adc r10, r1 |
eee: b1 1c adc r11, r1 |
ef0: 04 91 lpm r16, Z |
ef2: 0a 32 cpi r16, 0x2A ; 42 |
ef4: 79 f4 brne .+30 ; 0xf14 <_printf_P+0x14e> |
n = va_arg(ap, int); |
ef6: f3 01 movw r30, r6 |
ef8: a2 e0 ldi r26, 0x02 ; 2 |
efa: b0 e0 ldi r27, 0x00 ; 0 |
efc: 6a 0e add r6, r26 |
efe: 7b 1e adc r7, r27 |
f00: 60 81 ld r22, Z |
f02: 71 81 ldd r23, Z+1 ; 0x01 |
prec = n < 0 ? -1 : n; |
f04: bf ef ldi r27, 0xFF ; 255 |
f06: 6f 3f cpi r22, 0xFF ; 255 |
f08: 7b 07 cpc r23, r27 |
f0a: 14 f4 brge .+4 ; 0xf10 <_printf_P+0x14a> |
f0c: 6f ef ldi r22, 0xFF ; 255 |
f0e: 7f ef ldi r23, 0xFF ; 255 |
f10: 16 2f mov r17, r22 |
goto rflag; |
f12: 9c cf rjmp .-200 ; 0xe4c <_printf_P+0x86> |
} |
n = 0; |
f14: 60 e0 ldi r22, 0x00 ; 0 |
f16: 70 e0 ldi r23, 0x00 ; 0 |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
f18: 80 2f mov r24, r16 |
f1a: 80 53 subi r24, 0x30 ; 48 |
f1c: 8a 30 cpi r24, 0x0A ; 10 |
f1e: a0 f4 brcc .+40 ; 0xf48 <_printf_P+0x182> |
f20: cb 01 movw r24, r22 |
f22: f3 e0 ldi r31, 0x03 ; 3 |
f24: 88 0f add r24, r24 |
f26: 99 1f adc r25, r25 |
f28: fa 95 dec r31 |
f2a: e1 f7 brne .-8 ; 0xf24 <_printf_P+0x15e> |
f2c: 86 0f add r24, r22 |
f2e: 97 1f adc r25, r23 |
f30: 68 0f add r22, r24 |
f32: 79 1f adc r23, r25 |
f34: 60 0f add r22, r16 |
f36: 71 1d adc r23, r1 |
f38: 60 53 subi r22, 0x30 ; 48 |
f3a: 70 40 sbci r23, 0x00 ; 0 |
f3c: f5 01 movw r30, r10 |
f3e: 08 94 sec |
f40: a1 1c adc r10, r1 |
f42: b1 1c adc r11, r1 |
f44: 04 91 lpm r16, Z |
f46: e8 cf rjmp .-48 ; 0xf18 <_printf_P+0x152> |
} |
prec = n < 0 ? -1 : n; |
f48: ef ef ldi r30, 0xFF ; 255 |
f4a: 6f 3f cpi r22, 0xFF ; 255 |
f4c: 7e 07 cpc r23, r30 |
f4e: 14 f4 brge .+4 ; 0xf54 <_printf_P+0x18e> |
f50: 6f ef ldi r22, 0xFF ; 255 |
f52: 7f ef ldi r23, 0xFF ; 255 |
f54: 16 2f mov r17, r22 |
goto reswitch; |
f56: 7f cf rjmp .-258 ; 0xe56 <_printf_P+0x90> |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
f58: 00 33 cpi r16, 0x30 ; 48 |
f5a: 29 f4 brne .+10 ; 0xf66 <_printf_P+0x1a0> |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
f5c: 54 fc sbrc r5, 4 |
f5e: 76 cf rjmp .-276 ; 0xe4c <_printf_P+0x86> |
flags |= ZEROPAD; /* '-' disables '0' */ |
f60: f0 e2 ldi r31, 0x20 ; 32 |
f62: 5f 2a or r5, r31 |
goto rflag; |
f64: 73 cf rjmp .-282 ; 0xe4c <_printf_P+0x86> |
} else if (ch>='1' && ch<='9') { |
f66: 80 2f mov r24, r16 |
f68: 81 53 subi r24, 0x31 ; 49 |
f6a: 89 30 cpi r24, 0x09 ; 9 |
f6c: d8 f4 brcc .+54 ; 0xfa4 <_printf_P+0x1de> |
n = 0; |
f6e: 60 e0 ldi r22, 0x00 ; 0 |
f70: 70 e0 ldi r23, 0x00 ; 0 |
do { |
n = 10 * n + to_digit(ch); |
f72: cb 01 movw r24, r22 |
f74: e3 e0 ldi r30, 0x03 ; 3 |
f76: 88 0f add r24, r24 |
f78: 99 1f adc r25, r25 |
f7a: ea 95 dec r30 |
f7c: e1 f7 brne .-8 ; 0xf76 <_printf_P+0x1b0> |
f7e: 86 0f add r24, r22 |
f80: 97 1f adc r25, r23 |
f82: 68 0f add r22, r24 |
f84: 79 1f adc r23, r25 |
f86: 60 0f add r22, r16 |
f88: 71 1d adc r23, r1 |
f8a: 60 53 subi r22, 0x30 ; 48 |
f8c: 70 40 sbci r23, 0x00 ; 0 |
ch = PRG_RDB(fmt++); |
f8e: f5 01 movw r30, r10 |
f90: 08 94 sec |
f92: a1 1c adc r10, r1 |
f94: b1 1c adc r11, r1 |
f96: 04 91 lpm r16, Z |
} while (is_digit(ch)); |
f98: 80 2f mov r24, r16 |
f9a: 80 53 subi r24, 0x30 ; 48 |
f9c: 8a 30 cpi r24, 0x0A ; 10 |
f9e: 48 f3 brcs .-46 ; 0xf72 <_printf_P+0x1ac> |
width = n; |
fa0: 26 2e mov r2, r22 |
goto reswitch; |
fa2: 59 cf rjmp .-334 ; 0xe56 <_printf_P+0x90> |
} else if (ch=='h') { |
fa4: 08 36 cpi r16, 0x68 ; 104 |
fa6: 19 f4 brne .+6 ; 0xfae <_printf_P+0x1e8> |
flags |= SHORTINT; |
fa8: 24 e0 ldi r18, 0x04 ; 4 |
faa: 52 2a or r5, r18 |
goto rflag; |
fac: 4f cf rjmp .-354 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='l') { |
fae: 0c 36 cpi r16, 0x6C ; 108 |
fb0: 19 f4 brne .+6 ; 0xfb8 <_printf_P+0x1f2> |
flags |= LONGINT; |
fb2: 31 e0 ldi r19, 0x01 ; 1 |
fb4: 53 2a or r5, r19 |
goto rflag; |
fb6: 4a cf rjmp .-364 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='c') { |
fb8: 03 36 cpi r16, 0x63 ; 99 |
fba: 61 f4 brne .+24 ; 0xfd4 <_printf_P+0x20e> |
*(cp = buf) = va_arg(ap, int); |
fbc: 4e 01 movw r8, r28 |
fbe: 08 94 sec |
fc0: 81 1c adc r8, r1 |
fc2: 91 1c adc r9, r1 |
fc4: f3 01 movw r30, r6 |
fc6: 42 e0 ldi r20, 0x02 ; 2 |
fc8: 50 e0 ldi r21, 0x00 ; 0 |
fca: 64 0e add r6, r20 |
fcc: 75 1e adc r7, r21 |
fce: 80 81 ld r24, Z |
fd0: 89 83 std Y+1, r24 ; 0x01 |
fd2: 1b c1 rjmp .+566 ; 0x120a <_printf_P+0x444> |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
fd4: 04 34 cpi r16, 0x44 ; 68 |
fd6: 21 f0 breq .+8 ; 0xfe0 <_printf_P+0x21a> |
fd8: 04 36 cpi r16, 0x64 ; 100 |
fda: 11 f0 breq .+4 ; 0xfe0 <_printf_P+0x21a> |
fdc: 09 36 cpi r16, 0x69 ; 105 |
fde: b1 f5 brne .+108 ; 0x104c <_printf_P+0x286> |
if(ch=='D') |
fe0: 04 34 cpi r16, 0x44 ; 68 |
fe2: 11 f4 brne .+4 ; 0xfe8 <_printf_P+0x222> |
flags |= LONGINT; |
fe4: 51 e0 ldi r21, 0x01 ; 1 |
fe6: 55 2a or r5, r21 |
if (flags&LONGINT) { |
fe8: 50 fe sbrs r5, 0 |
fea: 0a c0 rjmp .+20 ; 0x1000 <_printf_P+0x23a> |
_ulong=va_arg(ap, long); |
fec: f3 01 movw r30, r6 |
fee: 84 e0 ldi r24, 0x04 ; 4 |
ff0: 90 e0 ldi r25, 0x00 ; 0 |
ff2: 68 0e add r6, r24 |
ff4: 79 1e adc r7, r25 |
ff6: 20 81 ld r18, Z |
ff8: 31 81 ldd r19, Z+1 ; 0x01 |
ffa: 42 81 ldd r20, Z+2 ; 0x02 |
ffc: 53 81 ldd r21, Z+3 ; 0x03 |
ffe: 0c c0 rjmp .+24 ; 0x1018 <_printf_P+0x252> |
} else { |
register int _d; |
_d=va_arg(ap, int); |
1000: f3 01 movw r30, r6 |
1002: 42 e0 ldi r20, 0x02 ; 2 |
1004: 50 e0 ldi r21, 0x00 ; 0 |
1006: 64 0e add r6, r20 |
1008: 75 1e adc r7, r21 |
100a: 80 81 ld r24, Z |
100c: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
100e: 9c 01 movw r18, r24 |
1010: 44 27 eor r20, r20 |
1012: 37 fd sbrc r19, 7 |
1014: 40 95 com r20 |
1016: 54 2f mov r21, r20 |
1018: 2c a7 std Y+44, r18 ; 0x2c |
101a: 3d a7 std Y+45, r19 ; 0x2d |
101c: 4e a7 std Y+46, r20 ; 0x2e |
101e: 5f a7 std Y+47, r21 ; 0x2f |
} |
if ((long)_ulong < 0) { |
1020: 8c a5 ldd r24, Y+44 ; 0x2c |
1022: 9d a5 ldd r25, Y+45 ; 0x2d |
1024: ae a5 ldd r26, Y+46 ; 0x2e |
1026: bf a5 ldd r27, Y+47 ; 0x2f |
1028: b7 ff sbrs r27, 7 |
102a: 0d c0 rjmp .+26 ; 0x1046 <_printf_P+0x280> |
_ulong = -_ulong; |
102c: b0 95 com r27 |
102e: a0 95 com r26 |
1030: 90 95 com r25 |
1032: 81 95 neg r24 |
1034: 9f 4f sbci r25, 0xFF ; 255 |
1036: af 4f sbci r26, 0xFF ; 255 |
1038: bf 4f sbci r27, 0xFF ; 255 |
103a: 8c a7 std Y+44, r24 ; 0x2c |
103c: 9d a7 std Y+45, r25 ; 0x2d |
103e: ae a7 std Y+46, r26 ; 0x2e |
1040: bf a7 std Y+47, r27 ; 0x2f |
sign = '-'; |
1042: 8d e2 ldi r24, 0x2D ; 45 |
1044: 89 a7 std Y+41, r24 ; 0x29 |
} |
base = DEC; |
1046: 7a e0 ldi r23, 0x0A ; 10 |
1048: 47 2e mov r4, r23 |
goto number; |
104a: 7b c0 rjmp .+246 ; 0x1142 <_printf_P+0x37c> |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
104c: 0f 34 cpi r16, 0x4F ; 79 |
104e: 11 f0 breq .+4 ; 0x1054 <_printf_P+0x28e> |
1050: 0f 36 cpi r16, 0x6F ; 111 |
1052: 39 f4 brne .+14 ; 0x1062 <_printf_P+0x29c> |
if (ch=='O') |
1054: 0f 34 cpi r16, 0x4F ; 79 |
1056: 11 f4 brne .+4 ; 0x105c <_printf_P+0x296> |
flags |= LONGINT; |
1058: 91 e0 ldi r25, 0x01 ; 1 |
105a: 59 2a or r5, r25 |
base = OCT; |
105c: 68 e0 ldi r22, 0x08 ; 8 |
105e: 46 2e mov r4, r22 |
goto nosign; |
1060: 6f c0 rjmp .+222 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='p') { |
1062: 00 37 cpi r16, 0x70 ; 112 |
1064: a1 f4 brne .+40 ; 0x108e <_printf_P+0x2c8> |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
1066: f3 01 movw r30, r6 |
1068: a2 e0 ldi r26, 0x02 ; 2 |
106a: b0 e0 ldi r27, 0x00 ; 0 |
106c: 6a 0e add r6, r26 |
106e: 7b 1e adc r7, r27 |
1070: 80 81 ld r24, Z |
1072: 91 81 ldd r25, Z+1 ; 0x01 |
1074: 9c 01 movw r18, r24 |
1076: 44 27 eor r20, r20 |
1078: 55 27 eor r21, r21 |
107a: 2c a7 std Y+44, r18 ; 0x2c |
107c: 3d a7 std Y+45, r19 ; 0x2d |
107e: 4e a7 std Y+46, r20 ; 0x2e |
1080: 5f a7 std Y+47, r21 ; 0x2f |
base = HEX; |
1082: 50 e1 ldi r21, 0x10 ; 16 |
1084: 45 2e mov r4, r21 |
flags |= HEXPREFIX; |
1086: 30 e4 ldi r19, 0x40 ; 64 |
1088: 53 2a or r5, r19 |
ch = 'x'; |
108a: 08 e7 ldi r16, 0x78 ; 120 |
goto nosign; |
108c: 59 c0 rjmp .+178 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='s') { // print a string from RAM |
108e: 03 37 cpi r16, 0x73 ; 115 |
1090: c1 f5 brne .+112 ; 0x1102 <_printf_P+0x33c> |
if ((cp = va_arg(ap, char *)) == NULL) { |
1092: f3 01 movw r30, r6 |
1094: 42 e0 ldi r20, 0x02 ; 2 |
1096: 50 e0 ldi r21, 0x00 ; 0 |
1098: 64 0e add r6, r20 |
109a: 75 1e adc r7, r21 |
109c: 80 80 ld r8, Z |
109e: 91 80 ldd r9, Z+1 ; 0x01 |
10a0: 81 14 cp r8, r1 |
10a2: 91 04 cpc r9, r1 |
10a4: 89 f4 brne .+34 ; 0x10c8 <_printf_P+0x302> |
cp=buf; |
10a6: 4e 01 movw r8, r28 |
10a8: 08 94 sec |
10aa: 81 1c adc r8, r1 |
10ac: 91 1c adc r9, r1 |
cp[0] = '('; |
10ae: 88 e2 ldi r24, 0x28 ; 40 |
10b0: 89 83 std Y+1, r24 ; 0x01 |
cp[1] = 'n'; |
10b2: 8e e6 ldi r24, 0x6E ; 110 |
10b4: f4 01 movw r30, r8 |
10b6: 81 83 std Z+1, r24 ; 0x01 |
cp[2] = 'u'; |
10b8: 85 e7 ldi r24, 0x75 ; 117 |
10ba: 8b 83 std Y+3, r24 ; 0x03 |
cp[4] = cp[3] = 'l'; |
10bc: 8c e6 ldi r24, 0x6C ; 108 |
10be: 8c 83 std Y+4, r24 ; 0x04 |
10c0: 8d 83 std Y+5, r24 ; 0x05 |
cp[5] = ')'; |
10c2: 89 e2 ldi r24, 0x29 ; 41 |
10c4: 8e 83 std Y+6, r24 ; 0x06 |
cp[6] = '\0'; |
10c6: 1f 82 std Y+7, r1 ; 0x07 |
} |
if (prec >= 0) { |
10c8: 17 fd sbrc r17, 7 |
10ca: 13 c0 rjmp .+38 ; 0x10f2 <_printf_P+0x32c> |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
10cc: 81 2f mov r24, r17 |
10ce: 99 27 eor r25, r25 |
10d0: 87 fd sbrc r24, 7 |
10d2: 90 95 com r25 |
10d4: ac 01 movw r20, r24 |
10d6: 60 e0 ldi r22, 0x00 ; 0 |
10d8: 70 e0 ldi r23, 0x00 ; 0 |
10da: c4 01 movw r24, r8 |
10dc: 0e 94 64 0c call 0x18c8 <memchr> |
if (p != NULL) { |
10e0: 00 97 sbiw r24, 0x00 ; 0 |
10e2: 29 f0 breq .+10 ; 0x10ee <_printf_P+0x328> |
size = p - cp; |
10e4: d8 2e mov r13, r24 |
10e6: d8 18 sub r13, r8 |
if (size > prec) |
10e8: 1d 15 cp r17, r13 |
10ea: 0c f0 brlt .+2 ; 0x10ee <_printf_P+0x328> |
10ec: 90 c0 rjmp .+288 ; 0x120e <_printf_P+0x448> |
size = prec; |
} else |
size = prec; |
10ee: d1 2e mov r13, r17 |
10f0: 8e c0 rjmp .+284 ; 0x120e <_printf_P+0x448> |
} else |
size = strlen(cp); |
10f2: f4 01 movw r30, r8 |
10f4: 01 90 ld r0, Z+ |
10f6: 00 20 and r0, r0 |
10f8: e9 f7 brne .-6 ; 0x10f4 <_printf_P+0x32e> |
10fa: 31 97 sbiw r30, 0x01 ; 1 |
10fc: de 2e mov r13, r30 |
10fe: d8 18 sub r13, r8 |
1100: 86 c0 rjmp .+268 ; 0x120e <_printf_P+0x448> |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
1102: 05 35 cpi r16, 0x55 ; 85 |
1104: 11 f0 breq .+4 ; 0x110a <_printf_P+0x344> |
1106: 05 37 cpi r16, 0x75 ; 117 |
1108: 39 f4 brne .+14 ; 0x1118 <_printf_P+0x352> |
if (ch=='U') |
110a: 05 35 cpi r16, 0x55 ; 85 |
110c: 11 f4 brne .+4 ; 0x1112 <_printf_P+0x34c> |
flags |= LONGINT; |
110e: f1 e0 ldi r31, 0x01 ; 1 |
1110: 5f 2a or r5, r31 |
base = DEC; |
1112: 4a e0 ldi r20, 0x0A ; 10 |
1114: 44 2e mov r4, r20 |
goto nosign; |
1116: 14 c0 rjmp .+40 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='X'||ch=='x') { |
1118: 08 35 cpi r16, 0x58 ; 88 |
111a: 19 f0 breq .+6 ; 0x1122 <_printf_P+0x35c> |
111c: 08 37 cpi r16, 0x78 ; 120 |
111e: 09 f0 breq .+2 ; 0x1122 <_printf_P+0x35c> |
1120: 6c c0 rjmp .+216 ; 0x11fa <_printf_P+0x434> |
base = HEX; |
1122: 30 e1 ldi r19, 0x10 ; 16 |
1124: 43 2e mov r4, r19 |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
1126: 53 fe sbrs r5, 3 |
1128: 0b c0 rjmp .+22 ; 0x1140 <_printf_P+0x37a> |
112a: 2c a5 ldd r18, Y+44 ; 0x2c |
112c: 3d a5 ldd r19, Y+45 ; 0x2d |
112e: 4e a5 ldd r20, Y+46 ; 0x2e |
1130: 5f a5 ldd r21, Y+47 ; 0x2f |
1132: 21 15 cp r18, r1 |
1134: 31 05 cpc r19, r1 |
1136: 41 05 cpc r20, r1 |
1138: 51 05 cpc r21, r1 |
113a: 11 f0 breq .+4 ; 0x1140 <_printf_P+0x37a> |
flags |= HEXPREFIX; |
113c: 30 e4 ldi r19, 0x40 ; 64 |
113e: 53 2a or r5, r19 |
/* unsigned conversions */ |
nosign: sign = '\0'; |
1140: 19 a6 std Y+41, r1 ; 0x29 |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
1142: 18 ab std Y+48, r17 ; 0x30 |
1144: 17 fd sbrc r17, 7 |
1146: 02 c0 rjmp .+4 ; 0x114c <_printf_P+0x386> |
flags &= ~ZEROPAD; |
1148: 4f ed ldi r20, 0xDF ; 223 |
114a: 54 22 and r5, r20 |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
114c: 29 e2 ldi r18, 0x29 ; 41 |
114e: 82 2e mov r8, r18 |
1150: 91 2c mov r9, r1 |
1152: 8c 0e add r8, r28 |
1154: 9d 1e adc r9, r29 |
if (_ulong != 0 || prec != 0) { |
1156: 8c a5 ldd r24, Y+44 ; 0x2c |
1158: 9d a5 ldd r25, Y+45 ; 0x2d |
115a: ae a5 ldd r26, Y+46 ; 0x2e |
115c: bf a5 ldd r27, Y+47 ; 0x2f |
115e: 00 97 sbiw r24, 0x00 ; 0 |
1160: a1 05 cpc r26, r1 |
1162: b1 05 cpc r27, r1 |
1164: 21 f4 brne .+8 ; 0x116e <_printf_P+0x3a8> |
1166: 98 a9 ldd r25, Y+48 ; 0x30 |
1168: 99 23 and r25, r25 |
116a: 09 f4 brne .+2 ; 0x116e <_printf_P+0x3a8> |
116c: 3f c0 rjmp .+126 ; 0x11ec <_printf_P+0x426> |
116e: c4 2c mov r12, r4 |
1170: dd 24 eor r13, r13 |
1172: ee 24 eor r14, r14 |
1174: ff 24 eor r15, r15 |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
1176: 33 24 eor r3, r3 |
1178: 2c a5 ldd r18, Y+44 ; 0x2c |
117a: 3d a5 ldd r19, Y+45 ; 0x2d |
117c: 4e a5 ldd r20, Y+46 ; 0x2e |
117e: 5f a5 ldd r21, Y+47 ; 0x2f |
1180: 2c 15 cp r18, r12 |
1182: 3d 05 cpc r19, r13 |
1184: 4e 05 cpc r20, r14 |
1186: 5f 05 cpc r21, r15 |
1188: 10 f0 brcs .+4 ; 0x118e <_printf_P+0x3c8> |
118a: 91 e0 ldi r25, 0x01 ; 1 |
118c: 39 2e mov r3, r25 |
_d = _ulong % base; |
118e: 6c a5 ldd r22, Y+44 ; 0x2c |
1190: 7d a5 ldd r23, Y+45 ; 0x2d |
1192: 8e a5 ldd r24, Y+46 ; 0x2e |
1194: 9f a5 ldd r25, Y+47 ; 0x2f |
1196: a7 01 movw r20, r14 |
1198: 96 01 movw r18, r12 |
119a: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
119e: dc 01 movw r26, r24 |
11a0: cb 01 movw r24, r22 |
11a2: 18 2f mov r17, r24 |
if (_d<10) { |
11a4: 8a 30 cpi r24, 0x0A ; 10 |
11a6: 10 f4 brcc .+4 ; 0x11ac <_printf_P+0x3e6> |
_d+='0'; |
11a8: 10 5d subi r17, 0xD0 ; 208 |
11aa: 04 c0 rjmp .+8 ; 0x11b4 <_printf_P+0x3ee> |
} else { |
_d+='a'-10; |
11ac: 19 5a subi r17, 0xA9 ; 169 |
if (ch=='X') _d&=~0x20; |
11ae: 08 35 cpi r16, 0x58 ; 88 |
11b0: 09 f4 brne .+2 ; 0x11b4 <_printf_P+0x3ee> |
11b2: 1f 7d andi r17, 0xDF ; 223 |
} |
*--cp=_d; |
11b4: d4 01 movw r26, r8 |
11b6: 1e 93 st -X, r17 |
11b8: 4d 01 movw r8, r26 |
_ulong /= base; |
11ba: 6c a5 ldd r22, Y+44 ; 0x2c |
11bc: 7d a5 ldd r23, Y+45 ; 0x2d |
11be: 8e a5 ldd r24, Y+46 ; 0x2e |
11c0: 9f a5 ldd r25, Y+47 ; 0x2f |
11c2: a7 01 movw r20, r14 |
11c4: 96 01 movw r18, r12 |
11c6: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
11ca: 2c a7 std Y+44, r18 ; 0x2c |
11cc: 3d a7 std Y+45, r19 ; 0x2d |
11ce: 4e a7 std Y+46, r20 ; 0x2e |
11d0: 5f a7 std Y+47, r21 ; 0x2f |
} while (notlastdigit); |
11d2: 33 20 and r3, r3 |
11d4: 81 f6 brne .-96 ; 0x1176 <_printf_P+0x3b0> |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
11d6: b8 e0 ldi r27, 0x08 ; 8 |
11d8: 4b 16 cp r4, r27 |
11da: 41 f4 brne .+16 ; 0x11ec <_printf_P+0x426> |
11dc: 53 fe sbrs r5, 3 |
11de: 06 c0 rjmp .+12 ; 0x11ec <_printf_P+0x426> |
11e0: 10 33 cpi r17, 0x30 ; 48 |
11e2: 21 f0 breq .+8 ; 0x11ec <_printf_P+0x426> |
*--cp = '0'; |
11e4: 80 e3 ldi r24, 0x30 ; 48 |
11e6: f4 01 movw r30, r8 |
11e8: 82 93 st -Z, r24 |
11ea: 4f 01 movw r8, r30 |
#endif |
} |
size = buf + BUF - cp; |
11ec: ce 01 movw r24, r28 |
11ee: 01 96 adiw r24, 0x01 ; 1 |
11f0: d8 2e mov r13, r24 |
11f2: d8 18 sub r13, r8 |
11f4: f8 e2 ldi r31, 0x28 ; 40 |
11f6: df 0e add r13, r31 |
11f8: 0b c0 rjmp .+22 ; 0x1210 <_printf_P+0x44a> |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
11fa: 00 23 and r16, r16 |
11fc: 09 f4 brne .+2 ; 0x1200 <_printf_P+0x43a> |
11fe: 4e c0 rjmp .+156 ; 0x129c <_printf_P+0x4d6> |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
1200: 4e 01 movw r8, r28 |
1202: 08 94 sec |
1204: 81 1c adc r8, r1 |
1206: 91 1c adc r9, r1 |
*cp = ch; |
1208: 09 83 std Y+1, r16 ; 0x01 |
size = 1; |
120a: 81 e0 ldi r24, 0x01 ; 1 |
120c: d8 2e mov r13, r24 |
sign = '\0'; |
120e: 19 a6 std Y+41, r1 ; 0x29 |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
1210: 1d 2d mov r17, r13 |
dpad = dprec - size; |
1212: c8 a8 ldd r12, Y+48 ; 0x30 |
1214: cd 18 sub r12, r13 |
if (dpad < 0) |
1216: c7 fc sbrc r12, 7 |
dpad = 0; |
1218: cc 24 eor r12, r12 |
if (sign) |
121a: 89 a5 ldd r24, Y+41 ; 0x29 |
121c: 88 23 and r24, r24 |
121e: 11 f0 breq .+4 ; 0x1224 <_printf_P+0x45e> |
fieldsz++; |
1220: 1f 5f subi r17, 0xFF ; 255 |
1222: 02 c0 rjmp .+4 ; 0x1228 <_printf_P+0x462> |
else if (flags & HEXPREFIX) |
1224: 56 fc sbrc r5, 6 |
fieldsz += 2; |
1226: 1e 5f subi r17, 0xFE ; 254 |
fieldsz += dpad; |
1228: 1c 0d add r17, r12 |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
122a: e5 2c mov r14, r5 |
122c: ff 24 eor r15, r15 |
122e: c7 01 movw r24, r14 |
1230: 80 73 andi r24, 0x30 ; 48 |
1232: 90 70 andi r25, 0x00 ; 0 |
1234: 89 2b or r24, r25 |
1236: 21 f4 brne .+8 ; 0x1240 <_printf_P+0x47a> |
PAD_SP(width - fieldsz); |
1238: 82 2d mov r24, r2 |
123a: 81 1b sub r24, r17 |
123c: 0e 94 cb 06 call 0xd96 <PAD_SP> |
/* prefix */ |
if (sign) { |
1240: 89 a5 ldd r24, Y+41 ; 0x29 |
1242: 88 23 and r24, r24 |
1244: 29 f0 breq .+10 ; 0x1250 <_printf_P+0x48a> |
PRINT(&sign, 1); |
1246: 61 e0 ldi r22, 0x01 ; 1 |
1248: 70 e0 ldi r23, 0x00 ; 0 |
124a: ce 01 movw r24, r28 |
124c: 89 96 adiw r24, 0x29 ; 41 |
124e: 09 c0 rjmp .+18 ; 0x1262 <_printf_P+0x49c> |
} else if (flags & HEXPREFIX) { |
1250: e6 fe sbrs r14, 6 |
1252: 09 c0 rjmp .+18 ; 0x1266 <_printf_P+0x4a0> |
ox[0] = '0'; |
1254: 80 e3 ldi r24, 0x30 ; 48 |
1256: 8a a7 std Y+42, r24 ; 0x2a |
ox[1] = ch; |
1258: 0b a7 std Y+43, r16 ; 0x2b |
PRINT(ox, 2); |
125a: 62 e0 ldi r22, 0x02 ; 2 |
125c: 70 e0 ldi r23, 0x00 ; 0 |
125e: ce 01 movw r24, r28 |
1260: 8a 96 adiw r24, 0x2a ; 42 |
1262: 0e 94 a2 06 call 0xd44 <PRINT> |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
1266: c7 01 movw r24, r14 |
1268: 80 73 andi r24, 0x30 ; 48 |
126a: 90 70 andi r25, 0x00 ; 0 |
126c: 80 97 sbiw r24, 0x20 ; 32 |
126e: 21 f4 brne .+8 ; 0x1278 <_printf_P+0x4b2> |
PAD_0(width - fieldsz); |
1270: 82 2d mov r24, r2 |
1272: 81 1b sub r24, r17 |
1274: 0e 94 d7 06 call 0xdae <PAD_0> |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
1278: 8c 2d mov r24, r12 |
127a: 0e 94 d7 06 call 0xdae <PAD_0> |
/* the string or number proper */ |
PRINT(cp, size); |
127e: 8d 2d mov r24, r13 |
1280: 99 27 eor r25, r25 |
1282: 87 fd sbrc r24, 7 |
1284: 90 95 com r25 |
1286: bc 01 movw r22, r24 |
1288: c4 01 movw r24, r8 |
128a: 0e 94 a2 06 call 0xd44 <PRINT> |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
128e: e4 fe sbrs r14, 4 |
1290: c1 cd rjmp .-1150 ; 0xe14 <_printf_P+0x4e> |
PAD_SP(width - fieldsz); |
1292: 82 2d mov r24, r2 |
1294: 81 1b sub r24, r17 |
1296: 0e 94 cb 06 call 0xd96 <PAD_SP> |
129a: bc cd rjmp .-1160 ; 0xe14 <_printf_P+0x4e> |
129c: e0 96 adiw r28, 0x30 ; 48 |
129e: 0f b6 in r0, 0x3f ; 63 |
12a0: f8 94 cli |
12a2: de bf out 0x3e, r29 ; 62 |
12a4: 0f be out 0x3f, r0 ; 63 |
12a6: cd bf out 0x3d, r28 ; 61 |
12a8: df 91 pop r29 |
12aa: cf 91 pop r28 |
12ac: 1f 91 pop r17 |
12ae: 0f 91 pop r16 |
12b0: ff 90 pop r15 |
12b2: ef 90 pop r14 |
12b4: df 90 pop r13 |
12b6: cf 90 pop r12 |
12b8: bf 90 pop r11 |
12ba: af 90 pop r10 |
12bc: 9f 90 pop r9 |
12be: 8f 90 pop r8 |
12c0: 7f 90 pop r7 |
12c2: 6f 90 pop r6 |
12c4: 5f 90 pop r5 |
12c6: 4f 90 pop r4 |
12c8: 3f 90 pop r3 |
12ca: 2f 90 pop r2 |
12cc: 08 95 ret |
000012ce <__vector_9>: |
}; |
SIGNAL (SIG_OVERFLOW1) |
{ |
12ce: 1f 92 push r1 |
12d0: 0f 92 push r0 |
12d2: 0f b6 in r0, 0x3f ; 63 |
12d4: 0f 92 push r0 |
12d6: 11 24 eor r1, r1 |
12d8: 8f 93 push r24 |
12da: 9f 93 push r25 |
static unsigned char cnt_10ms = 0; |
TCNT1 -= TIMER_RELOAD_VALUE; |
12dc: 8c b5 in r24, 0x2c ; 44 |
12de: 9d b5 in r25, 0x2d ; 45 |
12e0: 8a 5f subi r24, 0xFA ; 250 |
12e2: 90 40 sbci r25, 0x00 ; 0 |
12e4: 9d bd out 0x2d, r25 ; 45 |
12e6: 8c bd out 0x2c, r24 ; 44 |
CountMilliseconds++; |
12e8: 80 91 a5 00 lds r24, 0x00A5 |
12ec: 90 91 a6 00 lds r25, 0x00A6 |
12f0: 01 96 adiw r24, 0x01 ; 1 |
12f2: 90 93 a6 00 sts 0x00A6, r25 |
12f6: 80 93 a5 00 sts 0x00A5, r24 |
if(DisplayBusy) DisplayBusy--; |
12fa: 80 91 93 00 lds r24, 0x0093 |
12fe: 88 23 and r24, r24 |
1300: 29 f0 breq .+10 ; 0x130c <__vector_9+0x3e> |
1302: 80 91 93 00 lds r24, 0x0093 |
1306: 81 50 subi r24, 0x01 ; 1 |
1308: 80 93 93 00 sts 0x0093, r24 |
if(LoescheIrCodeTimer) |
130c: 80 91 7c 00 lds r24, 0x007C |
1310: 90 91 7d 00 lds r25, 0x007D |
1314: 00 97 sbiw r24, 0x00 ; 0 |
1316: 59 f0 breq .+22 ; 0x132e <__vector_9+0x60> |
{ |
if(--LoescheIrCodeTimer == 0) IR_Code = 0; |
1318: 01 97 sbiw r24, 0x01 ; 1 |
131a: 90 93 7d 00 sts 0x007D, r25 |
131e: 80 93 7c 00 sts 0x007C, r24 |
1322: 00 97 sbiw r24, 0x00 ; 0 |
1324: 21 f4 brne .+8 ; 0x132e <__vector_9+0x60> |
1326: 90 93 c8 01 sts 0x01C8, r25 |
132a: 80 93 c7 01 sts 0x01C7, r24 |
132e: 9f 91 pop r25 |
1330: 8f 91 pop r24 |
1332: 0f 90 pop r0 |
1334: 0f be out 0x3f, r0 ; 63 |
1336: 0f 90 pop r0 |
1338: 1f 90 pop r1 |
133a: 18 95 reti |
0000133c <Timer1_Init>: |
} |
} |
void Timer1_Init(void) |
{ |
TCCR1B = TIMER_TEILER; |
133c: 83 e0 ldi r24, 0x03 ; 3 |
133e: 8e bd out 0x2e, r24 ; 46 |
TCNT1 = -TIMER_RELOAD_VALUE; // reload |
1340: 86 e0 ldi r24, 0x06 ; 6 |
1342: 9f ef ldi r25, 0xFF ; 255 |
1344: 9d bd out 0x2d, r25 ; 45 |
1346: 8c bd out 0x2c, r24 ; 44 |
//OCR1 = 0x00; |
// Timer(s)/Counter(s) Interrupt(s) initialization |
#if defined (__AVR_ATmega32__) |
TIMSK |= 0x04; |
1348: 89 b7 in r24, 0x39 ; 57 |
134a: 84 60 ori r24, 0x04 ; 4 |
134c: 89 bf out 0x39, r24 ; 57 |
134e: 08 95 ret |
00001350 <SetDelay>: |
#endif |
#if defined (__AVR_ATmega644__) |
TIMSK1 |= _BV(TOIE1); |
#endif |
} |
unsigned int SetDelay (unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
1350: 20 91 a5 00 lds r18, 0x00A5 |
1354: 30 91 a6 00 lds r19, 0x00A6 |
1358: 28 0f add r18, r24 |
135a: 39 1f adc r19, r25 |
} |
135c: c9 01 movw r24, r18 |
135e: 01 97 sbiw r24, 0x01 ; 1 |
1360: 08 95 ret |
00001362 <CheckDelay>: |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
1362: 20 91 a5 00 lds r18, 0x00A5 |
1366: 30 91 a6 00 lds r19, 0x00A6 |
136a: 82 1b sub r24, r18 |
136c: 93 0b sbc r25, r19 |
136e: 89 2f mov r24, r25 |
1370: 99 27 eor r25, r25 |
1372: 80 78 andi r24, 0x80 ; 128 |
} |
1374: 99 27 eor r25, r25 |
1376: 08 95 ret |
00001378 <Delay_ms>: |
void Delay_ms(unsigned int w) |
{ |
1378: cf 93 push r28 |
137a: df 93 push r29 |
unsigned int akt; |
akt = SetDelay(w); |
137c: 0e 94 a8 09 call 0x1350 <SetDelay> |
1380: ec 01 movw r28, r24 |
while (!CheckDelay(akt)); |
1382: ce 01 movw r24, r28 |
1384: 0e 94 b1 09 call 0x1362 <CheckDelay> |
1388: 88 23 and r24, r24 |
138a: d9 f3 breq .-10 ; 0x1382 <Delay_ms+0xa> |
138c: df 91 pop r29 |
138e: cf 91 pop r28 |
1390: 08 95 ret |
00001392 <Keyboard_Init>: |
unsigned int KeyTimer = 0; |
void Keyboard_Init(void) |
{ |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1392: 82 e3 ldi r24, 0x32 ; 50 |
1394: 90 e0 ldi r25, 0x00 ; 0 |
1396: 0e 94 a8 09 call 0x1350 <SetDelay> |
139a: 90 93 a9 00 sts 0x00A9, r25 |
139e: 80 93 a8 00 sts 0x00A8, r24 |
13a2: 08 95 ret |
000013a4 <GetKeyboard>: |
} |
unsigned char GetKeyboard(void) |
{ |
13a4: cf 93 push r28 |
static char taste1 = 0, taste2 = 0,taste3 = 0,taste4 = 0,taste5 = 0; |
unsigned char ret = 0; |
13a6: c0 e0 ldi r28, 0x00 ; 0 |
if(CheckDelay(KeyTimer)) |
13a8: 80 91 a8 00 lds r24, 0x00A8 |
13ac: 90 91 a9 00 lds r25, 0x00A9 |
13b0: 0e 94 b1 09 call 0x1362 <CheckDelay> |
13b4: 88 23 and r24, r24 |
13b6: 09 f4 brne .+2 ; 0x13ba <GetKeyboard+0x16> |
13b8: 76 c0 rjmp .+236 ; 0x14a6 <GetKeyboard+0x102> |
{ |
if(_TASTE1) { if(taste1++ == 0 || taste1 == CNT_TASTE) ret |= KEY1; if(taste1 == CNT_TASTE) taste1 = CNT_TASTE-CNT_TASTE/3;} else taste1 = 0; |
13ba: cf 9b sbis 0x19, 7 ; 25 |
13bc: 12 c0 rjmp .+36 ; 0x13e2 <GetKeyboard+0x3e> |
13be: 80 91 aa 00 lds r24, 0x00AA |
13c2: 8f 5f subi r24, 0xFF ; 255 |
13c4: 80 93 aa 00 sts 0x00AA, r24 |
13c8: 81 30 cpi r24, 0x01 ; 1 |
13ca: 11 f0 breq .+4 ; 0x13d0 <GetKeyboard+0x2c> |
13cc: 8a 30 cpi r24, 0x0A ; 10 |
13ce: 09 f4 brne .+2 ; 0x13d2 <GetKeyboard+0x2e> |
13d0: c1 e0 ldi r28, 0x01 ; 1 |
13d2: 80 91 aa 00 lds r24, 0x00AA |
13d6: 8a 30 cpi r24, 0x0A ; 10 |
13d8: 31 f4 brne .+12 ; 0x13e6 <GetKeyboard+0x42> |
13da: 87 e0 ldi r24, 0x07 ; 7 |
13dc: 80 93 aa 00 sts 0x00AA, r24 |
13e0: 02 c0 rjmp .+4 ; 0x13e6 <GetKeyboard+0x42> |
13e2: c0 93 aa 00 sts 0x00AA, r28 |
if(_TASTE2) { if(taste2++ == 0 || taste2 == CNT_TASTE) ret |= KEY2; if(taste2 == CNT_TASTE) taste2 = CNT_TASTE-CNT_TASTE/3;} else taste2 = 0; |
13e6: ce 9b sbis 0x19, 6 ; 25 |
13e8: 12 c0 rjmp .+36 ; 0x140e <GetKeyboard+0x6a> |
13ea: 80 91 ab 00 lds r24, 0x00AB |
13ee: 8f 5f subi r24, 0xFF ; 255 |
13f0: 80 93 ab 00 sts 0x00AB, r24 |
13f4: 81 30 cpi r24, 0x01 ; 1 |
13f6: 11 f0 breq .+4 ; 0x13fc <GetKeyboard+0x58> |
13f8: 8a 30 cpi r24, 0x0A ; 10 |
13fa: 09 f4 brne .+2 ; 0x13fe <GetKeyboard+0x5a> |
13fc: c2 60 ori r28, 0x02 ; 2 |
13fe: 80 91 ab 00 lds r24, 0x00AB |
1402: 8a 30 cpi r24, 0x0A ; 10 |
1404: 31 f4 brne .+12 ; 0x1412 <GetKeyboard+0x6e> |
1406: 87 e0 ldi r24, 0x07 ; 7 |
1408: 80 93 ab 00 sts 0x00AB, r24 |
140c: 02 c0 rjmp .+4 ; 0x1412 <GetKeyboard+0x6e> |
140e: 10 92 ab 00 sts 0x00AB, r1 |
if(_TASTE3) { if(taste3++ == 0 || taste3 == CNT_TASTE) ret |= KEY3; if(taste3 == CNT_TASTE) taste3 = CNT_TASTE-CNT_TASTE/3;} else taste3 = 0; |
1412: cd 9b sbis 0x19, 5 ; 25 |
1414: 12 c0 rjmp .+36 ; 0x143a <GetKeyboard+0x96> |
1416: 80 91 ac 00 lds r24, 0x00AC |
141a: 8f 5f subi r24, 0xFF ; 255 |
141c: 80 93 ac 00 sts 0x00AC, r24 |
1420: 81 30 cpi r24, 0x01 ; 1 |
1422: 11 f0 breq .+4 ; 0x1428 <GetKeyboard+0x84> |
1424: 8a 30 cpi r24, 0x0A ; 10 |
1426: 09 f4 brne .+2 ; 0x142a <GetKeyboard+0x86> |
1428: c4 60 ori r28, 0x04 ; 4 |
142a: 80 91 ac 00 lds r24, 0x00AC |
142e: 8a 30 cpi r24, 0x0A ; 10 |
1430: 31 f4 brne .+12 ; 0x143e <GetKeyboard+0x9a> |
1432: 87 e0 ldi r24, 0x07 ; 7 |
1434: 80 93 ac 00 sts 0x00AC, r24 |
1438: 02 c0 rjmp .+4 ; 0x143e <GetKeyboard+0x9a> |
143a: 10 92 ac 00 sts 0x00AC, r1 |
if(_TASTE4) { if(taste4++ == 0 || taste4 == CNT_TASTE) ret |= KEY4; if(taste4 == CNT_TASTE) taste4 = CNT_TASTE-CNT_TASTE/3;} else taste4 = 0; |
143e: cc 9b sbis 0x19, 4 ; 25 |
1440: 12 c0 rjmp .+36 ; 0x1466 <GetKeyboard+0xc2> |
1442: 80 91 ad 00 lds r24, 0x00AD |
1446: 8f 5f subi r24, 0xFF ; 255 |
1448: 80 93 ad 00 sts 0x00AD, r24 |
144c: 81 30 cpi r24, 0x01 ; 1 |
144e: 11 f0 breq .+4 ; 0x1454 <GetKeyboard+0xb0> |
1450: 8a 30 cpi r24, 0x0A ; 10 |
1452: 09 f4 brne .+2 ; 0x1456 <GetKeyboard+0xb2> |
1454: c8 60 ori r28, 0x08 ; 8 |
1456: 80 91 ad 00 lds r24, 0x00AD |
145a: 8a 30 cpi r24, 0x0A ; 10 |
145c: 31 f4 brne .+12 ; 0x146a <GetKeyboard+0xc6> |
145e: 87 e0 ldi r24, 0x07 ; 7 |
1460: 80 93 ad 00 sts 0x00AD, r24 |
1464: 02 c0 rjmp .+4 ; 0x146a <GetKeyboard+0xc6> |
1466: 10 92 ad 00 sts 0x00AD, r1 |
if(_TASTE5) { if(taste5++ == 0 || taste5 == CNT_TASTE) ret |= KEY5; if(taste5 == CNT_TASTE) taste5 = CNT_TASTE-CNT_TASTE/3;} else taste5 = 0; |
146a: cb 9b sbis 0x19, 3 ; 25 |
146c: 12 c0 rjmp .+36 ; 0x1492 <GetKeyboard+0xee> |
146e: 80 91 ae 00 lds r24, 0x00AE |
1472: 8f 5f subi r24, 0xFF ; 255 |
1474: 80 93 ae 00 sts 0x00AE, r24 |
1478: 81 30 cpi r24, 0x01 ; 1 |
147a: 11 f0 breq .+4 ; 0x1480 <GetKeyboard+0xdc> |
147c: 8a 30 cpi r24, 0x0A ; 10 |
147e: 09 f4 brne .+2 ; 0x1482 <GetKeyboard+0xde> |
1480: c0 61 ori r28, 0x10 ; 16 |
1482: 80 91 ae 00 lds r24, 0x00AE |
1486: 8a 30 cpi r24, 0x0A ; 10 |
1488: 31 f4 brne .+12 ; 0x1496 <GetKeyboard+0xf2> |
148a: 87 e0 ldi r24, 0x07 ; 7 |
148c: 80 93 ae 00 sts 0x00AE, r24 |
1490: 02 c0 rjmp .+4 ; 0x1496 <GetKeyboard+0xf2> |
1492: 10 92 ae 00 sts 0x00AE, r1 |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1496: 82 e3 ldi r24, 0x32 ; 50 |
1498: 90 e0 ldi r25, 0x00 ; 0 |
149a: 0e 94 a8 09 call 0x1350 <SetDelay> |
149e: 90 93 a9 00 sts 0x00A9, r25 |
14a2: 80 93 a8 00 sts 0x00A8, r24 |
} |
return(ret); |
} |
14a6: 8c 2f mov r24, r28 |
14a8: 99 27 eor r25, r25 |
14aa: cf 91 pop r28 |
14ac: 08 95 ret |
000014ae <GetKeyboard2>: |
unsigned char GetKeyboard2(void) |
{ |
unsigned char ret = 0; |
14ae: 80 e0 ldi r24, 0x00 ; 0 |
if(_TASTE1) ret |= KEY1; |
14b0: cf 99 sbic 0x19, 7 ; 25 |
14b2: 81 e0 ldi r24, 0x01 ; 1 |
if(_TASTE2) ret |= KEY2; |
14b4: ce 99 sbic 0x19, 6 ; 25 |
14b6: 82 60 ori r24, 0x02 ; 2 |
if(_TASTE3) ret |= KEY3; |
14b8: cd 99 sbic 0x19, 5 ; 25 |
14ba: 84 60 ori r24, 0x04 ; 4 |
if(_TASTE4) ret |= KEY4; |
14bc: cc 99 sbic 0x19, 4 ; 25 |
14be: 88 60 ori r24, 0x08 ; 8 |
if(_TASTE5) ret |= KEY5; |
14c0: cb 99 sbic 0x19, 3 ; 25 |
14c2: 80 61 ori r24, 0x10 ; 16 |
return(ret); |
} |
14c4: 99 27 eor r25, r25 |
14c6: 08 95 ret |
000014c8 <Menu>: |
unsigned char KanalVon[MAX_KANAL]; |
unsigned char KanalAn[MAX_KANAL]; |
void Menu(unsigned char key) |
{ |
14c8: 0f 93 push r16 |
14ca: 1f 93 push r17 |
14cc: cf 93 push r28 |
14ce: df 93 push r29 |
static unsigned int arr = 0; |
static unsigned char MaxMenue = 2,MenuePunkt=0; |
unsigned char kanal = 0; |
if(key & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LCD_Clear; } |
14d0: c8 2f mov r28, r24 |
14d2: dd 27 eor r29, r29 |
14d4: c0 ff sbrs r28, 0 |
14d6: 0f c0 rjmp .+30 ; 0x14f6 <Menu+0x2e> |
14d8: 80 91 b3 00 lds r24, 0x00B3 |
14dc: 88 23 and r24, r24 |
14de: 11 f0 breq .+4 ; 0x14e4 <Menu+0x1c> |
14e0: 81 50 subi r24, 0x01 ; 1 |
14e2: 02 c0 rjmp .+4 ; 0x14e8 <Menu+0x20> |
14e4: 80 91 7b 00 lds r24, 0x007B |
14e8: 80 93 b3 00 sts 0x00B3, r24 |
14ec: 81 e0 ldi r24, 0x01 ; 1 |
14ee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
14f2: 0e 94 c9 05 call 0xb92 <_long_delay> |
if(key & KEY2) { MenuePunkt++; LCD_Clear; } |
14f6: 8e 01 movw r16, r28 |
14f8: 02 70 andi r16, 0x02 ; 2 |
14fa: 10 70 andi r17, 0x00 ; 0 |
14fc: c1 ff sbrs r28, 1 |
14fe: 0a c0 rjmp .+20 ; 0x1514 <Menu+0x4c> |
1500: 80 91 b3 00 lds r24, 0x00B3 |
1504: 8f 5f subi r24, 0xFF ; 255 |
1506: 80 93 b3 00 sts 0x00B3, r24 |
150a: 81 e0 ldi r24, 0x01 ; 1 |
150c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
1510: 0e 94 c9 05 call 0xb92 <_long_delay> |
if((key & KEY1) && (key & KEY2)) MenuePunkt = 0; |
1514: c0 ff sbrs r28, 0 |
1516: 04 c0 rjmp .+8 ; 0x1520 <Menu+0x58> |
1518: 01 2b or r16, r17 |
151a: 11 f0 breq .+4 ; 0x1520 <Menu+0x58> |
151c: 10 92 b3 00 sts 0x00B3, r1 |
// LCD_printfxy(13,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
1520: 20 91 b3 00 lds r18, 0x00B3 |
1524: 82 2f mov r24, r18 |
1526: 99 27 eor r25, r25 |
1528: 81 30 cpi r24, 0x01 ; 1 |
152a: 91 05 cpc r25, r1 |
152c: 09 f4 brne .+2 ; 0x1530 <Menu+0x68> |
152e: 41 c0 rjmp .+130 ; 0x15b2 <Menu+0xea> |
1530: 82 30 cpi r24, 0x02 ; 2 |
1532: 91 05 cpc r25, r1 |
1534: 1c f4 brge .+6 ; 0x153c <Menu+0x74> |
1536: 89 2b or r24, r25 |
1538: 49 f0 breq .+18 ; 0x154c <Menu+0x84> |
153a: bf c0 rjmp .+382 ; 0x16ba <Menu+0x1f2> |
153c: 82 30 cpi r24, 0x02 ; 2 |
153e: 91 05 cpc r25, r1 |
1540: 09 f4 brne .+2 ; 0x1544 <Menu+0x7c> |
1542: 6a c0 rjmp .+212 ; 0x1618 <Menu+0x150> |
1544: 03 97 sbiw r24, 0x03 ; 3 |
1546: 09 f4 brne .+2 ; 0x154a <Menu+0x82> |
1548: 8e c0 rjmp .+284 ; 0x1666 <Menu+0x19e> |
154a: b7 c0 rjmp .+366 ; 0x16ba <Menu+0x1f2> |
{ |
case 0: |
LCD_printfxy(0,0,"Verbinden mit"); |
154c: 60 e0 ldi r22, 0x00 ; 0 |
154e: 86 2f mov r24, r22 |
1550: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1554: 84 eb ldi r24, 0xB4 ; 180 |
1556: 90 e0 ldi r25, 0x00 ; 0 |
1558: 9f 93 push r25 |
155a: 8f 93 push r24 |
155c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"MicroSPS:%2i ",SlaveAdresse); |
1560: 61 e0 ldi r22, 0x01 ; 1 |
1562: 80 e0 ldi r24, 0x00 ; 0 |
1564: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1568: 0f 90 pop r0 |
156a: 0f 90 pop r0 |
156c: 80 91 64 00 lds r24, 0x0064 |
1570: 99 27 eor r25, r25 |
1572: 9f 93 push r25 |
1574: 8f 93 push r24 |
1576: 82 ec ldi r24, 0xC2 ; 194 |
1578: 90 e0 ldi r25, 0x00 ; 0 |
157a: 9f 93 push r25 |
157c: 8f 93 push r24 |
157e: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && SlaveAdresse > 1) SlaveAdresse--; |
1582: 0f 90 pop r0 |
1584: 0f 90 pop r0 |
1586: 0f 90 pop r0 |
1588: 0f 90 pop r0 |
158a: c2 ff sbrs r28, 2 |
158c: 07 c0 rjmp .+14 ; 0x159c <Menu+0xd4> |
158e: 80 91 64 00 lds r24, 0x0064 |
1592: 82 30 cpi r24, 0x02 ; 2 |
1594: 18 f0 brcs .+6 ; 0x159c <Menu+0xd4> |
1596: 81 50 subi r24, 0x01 ; 1 |
1598: 80 93 64 00 sts 0x0064, r24 |
if(key & KEY4 && SlaveAdresse < 26) SlaveAdresse++; |
159c: c3 ff sbrs r28, 3 |
159e: 92 c0 rjmp .+292 ; 0x16c4 <Menu+0x1fc> |
15a0: 80 91 64 00 lds r24, 0x0064 |
15a4: 8a 31 cpi r24, 0x1A ; 26 |
15a6: 08 f0 brcs .+2 ; 0x15aa <Menu+0xe2> |
15a8: 8d c0 rjmp .+282 ; 0x16c4 <Menu+0x1fc> |
15aa: 8f 5f subi r24, 0xFF ; 255 |
15ac: 80 93 64 00 sts 0x0064, r24 |
break; |
15b0: 89 c0 rjmp .+274 ; 0x16c4 <Menu+0x1fc> |
case 1: |
LCD_printfxy(0,0,"Max Adresse"); |
15b2: 60 e0 ldi r22, 0x00 ; 0 |
15b4: 86 2f mov r24, r22 |
15b6: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ba: 80 ed ldi r24, 0xD0 ; 208 |
15bc: 90 e0 ldi r25, 0x00 ; 0 |
15be: 9f 93 push r25 |
15c0: 8f 93 push r24 |
15c2: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"%2i ",AnzahlTeilnehmer); |
15c6: 61 e0 ldi r22, 0x01 ; 1 |
15c8: 80 e0 ldi r24, 0x00 ; 0 |
15ca: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ce: 0f 90 pop r0 |
15d0: 0f 90 pop r0 |
15d2: 80 91 6c 00 lds r24, 0x006C |
15d6: 99 27 eor r25, r25 |
15d8: 9f 93 push r25 |
15da: 8f 93 push r24 |
15dc: 8c ed ldi r24, 0xDC ; 220 |
15de: 90 e0 ldi r25, 0x00 ; 0 |
15e0: 9f 93 push r25 |
15e2: 8f 93 push r24 |
15e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && AnzahlTeilnehmer > 1) AnzahlTeilnehmer--; |
15e8: 0f 90 pop r0 |
15ea: 0f 90 pop r0 |
15ec: 0f 90 pop r0 |
15ee: 0f 90 pop r0 |
15f0: c2 ff sbrs r28, 2 |
15f2: 07 c0 rjmp .+14 ; 0x1602 <Menu+0x13a> |
15f4: 80 91 6c 00 lds r24, 0x006C |
15f8: 82 30 cpi r24, 0x02 ; 2 |
15fa: 18 f0 brcs .+6 ; 0x1602 <Menu+0x13a> |
15fc: 81 50 subi r24, 0x01 ; 1 |
15fe: 80 93 6c 00 sts 0x006C, r24 |
if(key & KEY4 && AnzahlTeilnehmer < 26) AnzahlTeilnehmer++; |
1602: c3 ff sbrs r28, 3 |
1604: 5f c0 rjmp .+190 ; 0x16c4 <Menu+0x1fc> |
1606: 80 91 6c 00 lds r24, 0x006C |
160a: 8a 31 cpi r24, 0x1A ; 26 |
160c: 08 f0 brcs .+2 ; 0x1610 <Menu+0x148> |
160e: 5a c0 rjmp .+180 ; 0x16c4 <Menu+0x1fc> |
1610: 8f 5f subi r24, 0xFF ; 255 |
1612: 80 93 6c 00 sts 0x006C, r24 |
break; |
1616: 56 c0 rjmp .+172 ; 0x16c4 <Menu+0x1fc> |
case 2: |
LCD_printfxy(0,0,"Checksum"); |
1618: 60 e0 ldi r22, 0x00 ; 0 |
161a: 86 2f mov r24, r22 |
161c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1620: 81 ee ldi r24, 0xE1 ; 225 |
1622: 90 e0 ldi r25, 0x00 ; 0 |
1624: 9f 93 push r25 |
1626: 8f 93 push r24 |
1628: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Errors:%5i ",CntCrcError); |
162c: 61 e0 ldi r22, 0x01 ; 1 |
162e: 80 e0 ldi r24, 0x00 ; 0 |
1630: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1634: 0f 90 pop r0 |
1636: 0f 90 pop r0 |
1638: 80 91 99 00 lds r24, 0x0099 |
163c: 90 91 9a 00 lds r25, 0x009A |
1640: 9f 93 push r25 |
1642: 8f 93 push r24 |
1644: 8a ee ldi r24, 0xEA ; 234 |
1646: 90 e0 ldi r25, 0x00 ; 0 |
1648: 9f 93 push r25 |
164a: 8f 93 push r24 |
164c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) CntCrcError = 0; |
1650: 0f 90 pop r0 |
1652: 0f 90 pop r0 |
1654: 0f 90 pop r0 |
1656: 0f 90 pop r0 |
1658: c2 ff sbrs r28, 2 |
165a: 34 c0 rjmp .+104 ; 0x16c4 <Menu+0x1fc> |
165c: 10 92 9a 00 sts 0x009A, r1 |
1660: 10 92 99 00 sts 0x0099, r1 |
break; |
1664: 2f c0 rjmp .+94 ; 0x16c4 <Menu+0x1fc> |
case 3: |
LCD_printfxy(0,0,"Display"); |
1666: 60 e0 ldi r22, 0x00 ; 0 |
1668: 86 2f mov r24, r22 |
166a: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
166e: 86 ef ldi r24, 0xF6 ; 246 |
1670: 90 e0 ldi r25, 0x00 ; 0 |
1672: 9f 93 push r25 |
1674: 8f 93 push r24 |
1676: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Zeilen:%1i ",DisplayZeilen); |
167a: 61 e0 ldi r22, 0x01 ; 1 |
167c: 80 e0 ldi r24, 0x00 ; 0 |
167e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1682: 0f 90 pop r0 |
1684: 0f 90 pop r0 |
1686: 80 91 65 00 lds r24, 0x0065 |
168a: 99 27 eor r25, r25 |
168c: 9f 93 push r25 |
168e: 8f 93 push r24 |
1690: 8e ef ldi r24, 0xFE ; 254 |
1692: 90 e0 ldi r25, 0x00 ; 0 |
1694: 9f 93 push r25 |
1696: 8f 93 push r24 |
1698: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) DisplayZeilen = 4; |
169c: 0f 90 pop r0 |
169e: 0f 90 pop r0 |
16a0: 0f 90 pop r0 |
16a2: 0f 90 pop r0 |
16a4: c2 ff sbrs r28, 2 |
16a6: 03 c0 rjmp .+6 ; 0x16ae <Menu+0x1e6> |
16a8: 84 e0 ldi r24, 0x04 ; 4 |
16aa: 80 93 65 00 sts 0x0065, r24 |
if(key & KEY4) DisplayZeilen = 2; |
16ae: c3 ff sbrs r28, 3 |
16b0: 09 c0 rjmp .+18 ; 0x16c4 <Menu+0x1fc> |
16b2: 82 e0 ldi r24, 0x02 ; 2 |
16b4: 80 93 65 00 sts 0x0065, r24 |
break; |
16b8: 05 c0 rjmp .+10 ; 0x16c4 <Menu+0x1fc> |
/* case 1: |
case 2: |
case 3: |
case 4: |
kanal = MenuePunkt - 1; |
LCD_printfxy(0,0,"Datenkanal:%2i",kanal); |
LCD_printfxy(0,1,"Von:%2i an %2i ",KanalVon[kanal],KanalAn[kanal]); |
if(key & KEY3) KanalVon[kanal]++; |
if(key & KEY4) KanalAn[kanal]++; |
KanalVon[kanal] % MAX_KANAL; |
KanalAn[kanal] % MAX_KANAL; |
break; |
*/ |
/* |
case 1: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Display:%3ims ",IntervallDisplay); |
if(key & KEY3 && IntervallDisplay > 25) IntervallDisplay -= 5; |
if(key & KEY4 && IntervallDisplay < 990) IntervallDisplay += 5; |
break; |
case 2: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Debug:%3ims ",IntervallDebug); |
if(key & KEY3 && IntervallDebug > 25) IntervallDebug -= 5; |
if(key & KEY4 && IntervallDebug < 990) IntervallDebug += 5; |
break; |
case 1: |
LCD_printfxy(0,0,"Time"); |
LCD_printfxy(0,1,"%3i:%02i",Minute,Sekunde); |
if(key & KEY3) if(Minute) Minute--; |
if(key & KEY4) Minute++; |
if(key & KEY5) Sekunde = 0; |
break; |
case 2: |
LCD_printfxy(0,0,"Testvariable"); |
LCD_printfxy(0,1,"TestInt:%5i",TestInt); |
if(key & KEY3) TestInt--; |
if(key & KEY4) TestInt++; |
break; |
case 3: |
LCD_printfxy(0,0,"Testarray"); |
LCD_printfxy(0,1,"Array[%i]=%3i",arr,Array[arr]); |
if(key & KEY5) if(++arr == ARRAYGROESSE) arr = 0; |
if(key & KEY3) Array[arr]--; |
if(key & KEY4) Array[arr]++; |
break; |
case 4: |
LCD_printfxy(0,0,"Infrarot RC5:"); |
LCD_printfxy(0,1,"Adr:%2i Cmd:%3i",(IR_Code >> 8), IR_Code & 0xff); |
break; |
*/ |
default: MaxMenue = MenuePunkt - 1; |
16ba: 21 50 subi r18, 0x01 ; 1 |
16bc: 20 93 7b 00 sts 0x007B, r18 |
MenuePunkt = 0; |
16c0: 10 92 b3 00 sts 0x00B3, r1 |
16c4: df 91 pop r29 |
16c6: cf 91 pop r28 |
16c8: 1f 91 pop r17 |
16ca: 0f 91 pop r16 |
16cc: 08 95 ret |
000016ce <InitIR>: |
// Init IR |
// ************************************************************************ |
void InitIR(void) |
{ |
INT0_ENABLE; // ext. Int0 enable |
16ce: 8b b7 in r24, 0x3b ; 59 |
16d0: 80 64 ori r24, 0x40 ; 64 |
16d2: 8b bf out 0x3b, r24 ; 59 |
CLR_INT0_FLAG; // war |= 0x40 |
16d4: 8a b7 in r24, 0x3a ; 58 |
16d6: 8f 7b andi r24, 0xBF ; 191 |
16d8: 8a bf out 0x3a, r24 ; 58 |
INIT_INT0_FLANKE; |
16da: 85 b7 in r24, 0x35 ; 53 |
16dc: 8c 7f andi r24, 0xFC ; 252 |
16de: 85 bf out 0x35, r24 ; 53 |
16e0: 85 b7 in r24, 0x35 ; 53 |
16e2: 82 60 ori r24, 0x02 ; 2 |
16e4: 85 bf out 0x35, r24 ; 53 |
TIMER0_PRESCALER = 0x04; // Timer0: Clk div 256 |
16e6: 84 e0 ldi r24, 0x04 ; 4 |
16e8: 83 bf out 0x33, r24 ; 51 |
Decodierung_Lauft = 0; |
16ea: 10 92 c9 01 sts 0x01C9, r1 |
New_IR_Code = 0; |
16ee: 10 92 c6 01 sts 0x01C6, r1 |
IR_Code = 0; |
16f2: 10 92 c8 01 sts 0x01C8, r1 |
16f6: 10 92 c7 01 sts 0x01C7, r1 |
16fa: 08 95 ret |
000016fc <__vector_1>: |
} |
// ************************************************************************** |
// * aufgerufen durch: externer Interrupt |
// ************************************************************************** |
// * Die Funktion wird durch einen externen Interrupt aufgerufen. |
// * Sie dient nur zum Starten der Abtastsequenz und zum Triggern auf die |
// * Signalflanken in der Mitte der Daten. |
// ************************************************************************** |
SIGNAL (SIG_INTERRUPT0) |
{ |
16fc: 1f 92 push r1 |
16fe: 0f 92 push r0 |
1700: 0f b6 in r0, 0x3f ; 63 |
1702: 0f 92 push r0 |
1704: 11 24 eor r1, r1 |
1706: 8f 93 push r24 |
// Zeitbasis fuer Timer einstellen |
// Entspricht 1,5 mal einer Bitlaenge |
// PORTB++; |
TCNT0 = -41; |
1708: 87 ed ldi r24, 0xD7 ; 215 |
170a: 82 bf out 0x32, r24 ; 50 |
TIM0_START; // Timer 0 starten, |
170c: 89 b7 in r24, 0x39 ; 57 |
170e: 81 60 ori r24, 0x01 ; 1 |
1710: 89 bf out 0x39, r24 ; 57 |
if(Decodierung_Lauft) INT0_DISABLE; // die erneute Int.-Auslsung soll |
1712: 80 91 c9 01 lds r24, 0x01C9 |
1716: 88 23 and r24, r24 |
1718: 19 f0 breq .+6 ; 0x1720 <__vector_1+0x24> |
171a: 8b b7 in r24, 0x3b ; 59 |
171c: 8f 7b andi r24, 0xBF ; 191 |
171e: 8b bf out 0x3b, r24 ; 59 |
1720: 8f 91 pop r24 |
1722: 0f 90 pop r0 |
1724: 0f be out 0x3f, r0 ; 63 |
1726: 0f 90 pop r0 |
1728: 1f 90 pop r1 |
172a: 18 95 reti |
0000172c <__vector_11>: |
// nur die Timer-Routine erlauben |
} |
// ************************************************************************** |
// * aufgerufen durch: Timerueberlauf Timer 0 |
// ************************************************************************** |
// * Die Funktion wird durch einen Timer0-Interrupt aufgerufen. |
// * Der Timer wird vom ext. Int0 gestartet. |
// * Das Infrarotsignal wird hier abgetastet und die Wertigkeiten der |
// * Bits entsprechend aufaddiert. Das empfangende Zeichen wird in der |
// * globalen Variablen IR_Code gespeichert. Nach Empfang wird das Bit |
// * Neues_Zeichen gesetzt. |
// ************************************************************************** |
SIGNAL (SIG_OVERFLOW0) |
{ |
172c: 1f 92 push r1 |
172e: 0f 92 push r0 |
1730: 0f b6 in r0, 0x3f ; 63 |
1732: 0f 92 push r0 |
1734: 11 24 eor r1, r1 |
1736: 2f 93 push r18 |
1738: 3f 93 push r19 |
173a: 4f 93 push r20 |
173c: 8f 93 push r24 |
173e: 9f 93 push r25 |
static unsigned int Shift,IR_Code_tmp; |
static unsigned char IR_Zaehler=0,IRSperrCounter=0; |
// Reinitialize Timer's 0 value |
TCNT1 = -41; |
1740: 87 ed ldi r24, 0xD7 ; 215 |
1742: 9f ef ldi r25, 0xFF ; 255 |
1744: 9d bd out 0x2d, r25 ; 45 |
1746: 8c bd out 0x2c, r24 ; 44 |
if (IRSperrCounter) |
1748: 80 91 b9 00 lds r24, 0x00B9 |
174c: 88 23 and r24, r24 |
174e: 69 f0 breq .+26 ; 0x176a <__vector_11+0x3e> |
{ IRSperrCounter--; |
1750: 81 50 subi r24, 0x01 ; 1 |
1752: 80 93 b9 00 sts 0x00B9, r24 |
if (!IRSperrCounter) |
1756: 88 23 and r24, r24 |
1758: 09 f0 breq .+2 ; 0x175c <__vector_11+0x30> |
175a: 8a c0 rjmp .+276 ; 0x1870 <__vector_11+0x144> |
{ |
TIM0_STOPP; // Timer0 sperre wird durch ExtInt0 gestartet |
175c: 89 b7 in r24, 0x39 ; 57 |
175e: 8e 7f andi r24, 0xFE ; 254 |
1760: 89 bf out 0x39, r24 ; 57 |
CLR_INT0_FLAG; // IntFlag Loeschen |
1762: 8a b7 in r24, 0x3a ; 58 |
1764: 8f 7b andi r24, 0xBF ; 191 |
1766: 8a bf out 0x3a, r24 ; 58 |
1768: 80 c0 rjmp .+256 ; 0x186a <__vector_11+0x13e> |
INT0_ENABLE; // externen Interrupt wieder freigenben |
} |
} |
else |
{ |
if(IR_Zaehler > 1) |
176a: 40 91 b8 00 lds r20, 0x00B8 |
176e: 42 30 cpi r20, 0x02 ; 2 |
1770: 88 f0 brcs .+34 ; 0x1794 <__vector_11+0x68> |
{ |
Decodierung_Lauft = 1; |
1772: 81 e0 ldi r24, 0x01 ; 1 |
1774: 80 93 c9 01 sts 0x01C9, r24 |
{ |
CLR_INT0_FLAG; // Interrupt Flag loeschen |
1778: 8a b7 in r24, 0x3a ; 58 |
177a: 8f 7b andi r24, 0xBF ; 191 |
177c: 8a bf out 0x3a, r24 ; 58 |
if(IR_PP) INT0_NEG_FLANKE; // naechste fallende Flanke soll Int0 ausloesen |
177e: 82 9b sbis 0x10, 2 ; 16 |
1780: 03 c0 rjmp .+6 ; 0x1788 <__vector_11+0x5c> |
1782: 85 b7 in r24, 0x35 ; 53 |
1784: 8e 7f andi r24, 0xFE ; 254 |
1786: 02 c0 rjmp .+4 ; 0x178c <__vector_11+0x60> |
else INT0_POS_FLANKE; // naechste steigende Flanke soll Int0 ausloesen |
1788: 85 b7 in r24, 0x35 ; 53 |
178a: 81 60 ori r24, 0x01 ; 1 |
178c: 85 bf out 0x35, r24 ; 53 |
INT0_ENABLE; // externen Int frei |
178e: 8b b7 in r24, 0x3b ; 59 |
1790: 80 64 ori r24, 0x40 ; 64 |
1792: 8b bf out 0x3b, r24 ; 59 |
} |
} |
if(!IR_Zaehler) // es beginnt eine neue Abtastung |
1794: 44 23 and r20, r20 |
1796: 59 f4 brne .+22 ; 0x17ae <__vector_11+0x82> |
{ // es handelt sich um das 1. Sync-Bit |
IR_Code_tmp=0; // Merker löschen |
1798: 10 92 b7 00 sts 0x00B7, r1 |
179c: 10 92 b6 00 sts 0x00B6, r1 |
Shift=0x8000; //;8192; // Maske auf MSB |
17a0: 80 e0 ldi r24, 0x00 ; 0 |
17a2: 90 e8 ldi r25, 0x80 ; 128 |
17a4: 90 93 b5 00 sts 0x00B5, r25 |
17a8: 80 93 b4 00 sts 0x00B4, r24 |
17ac: 14 c0 rjmp .+40 ; 0x17d6 <__vector_11+0xaa> |
} |
else |
if(IR_PP==1) // das empfangende Bit ist logisch High |
17ae: 82 9b sbis 0x10, 2 ; 16 |
17b0: 10 c0 rjmp .+32 ; 0x17d2 <__vector_11+0xa6> |
{ if(IR_Zaehler>2) // (IR_Zaehler ist gleich 1 beim 2. Sync-Bit) |
17b2: 43 30 cpi r20, 0x03 ; 3 |
17b4: 70 f0 brcs .+28 ; 0x17d2 <__vector_11+0xa6> |
{ // 2 --> Toggle-Bit (wird übersprungen) |
IR_Code_tmp |= Shift; // entsprechendse Bit setzen |
17b6: 80 91 b6 00 lds r24, 0x00B6 |
17ba: 90 91 b7 00 lds r25, 0x00B7 |
17be: 20 91 b4 00 lds r18, 0x00B4 |
17c2: 30 91 b5 00 lds r19, 0x00B5 |
17c6: 82 2b or r24, r18 |
17c8: 93 2b or r25, r19 |
17ca: 90 93 b7 00 sts 0x00B7, r25 |
17ce: 80 93 b6 00 sts 0x00B6, r24 |
} |
} |
if ((IR_Zaehler < 2) && !(IR_PP==1)) // startbits überprüfen |
17d2: 42 30 cpi r20, 0x02 ; 2 |
17d4: 20 f4 brcc .+8 ; 0x17de <__vector_11+0xb2> |
17d6: 82 99 sbic 0x10, 2 ; 16 |
17d8: 02 c0 rjmp .+4 ; 0x17de <__vector_11+0xb2> |
{ |
IR_Zaehler = 0; |
17da: 10 92 b8 00 sts 0x00B8, r1 |
} |
Shift >>=1; // Shiftregister um 1 nach rechts schieben |
17de: 80 91 b4 00 lds r24, 0x00B4 |
17e2: 90 91 b5 00 lds r25, 0x00B5 |
17e6: 96 95 lsr r25 |
17e8: 87 95 ror r24 |
17ea: 90 93 b5 00 sts 0x00B5, r25 |
17ee: 80 93 b4 00 sts 0x00B4, r24 |
// (für das nächste empf. Bit |
if (Shift == 128) Shift = 32; // Adresse ins HighByte, Kommando ins LowByte |
17f2: 80 38 cpi r24, 0x80 ; 128 |
17f4: 91 05 cpc r25, r1 |
17f6: 31 f4 brne .+12 ; 0x1804 <__vector_11+0xd8> |
17f8: 80 e2 ldi r24, 0x20 ; 32 |
17fa: 90 e0 ldi r25, 0x00 ; 0 |
17fc: 90 93 b5 00 sts 0x00B5, r25 |
1800: 80 93 b4 00 sts 0x00B4, r24 |
if(IR_Zaehler++==15) // Das IR-Wort wurde vollstaendig abgetastet |
1804: 80 91 b8 00 lds r24, 0x00B8 |
1808: 8f 5f subi r24, 0xFF ; 255 |
180a: 80 93 b8 00 sts 0x00B8, r24 |
180e: 80 31 cpi r24, 0x10 ; 16 |
1810: 79 f5 brne .+94 ; 0x1870 <__vector_11+0x144> |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
1812: 8a b7 in r24, 0x3a ; 58 |
1814: 8f 7b andi r24, 0xBF ; 191 |
1816: 8a bf out 0x3a, r24 ; 58 |
INT0_NEG_FLANKE; // fallende Flanke |
1818: 85 b7 in r24, 0x35 ; 53 |
181a: 8e 7f andi r24, 0xFE ; 254 |
181c: 85 bf out 0x35, r24 ; 53 |
IR_Zaehler = 0; |
181e: 10 92 b8 00 sts 0x00B8, r1 |
Decodierung_Lauft=0; |
1822: 10 92 c9 01 sts 0x01C9, r1 |
/* if ((HIGH(IR_Code_tmp)==ALLOWED1)|| (HIGH(IR_Code_tmp)==ALLOWED2)|| |
(HIGH(IR_Code_tmp)==ALLOWED3)||(HIGH(IR_Code_tmp)==ALLOWED4)|| |
(HIGH(IR_Code_tmp)==ALLOWED5) ) |
if ((HIGH(IR_Code_tmp)< 10))*/ |
if ((HIGH(IR_Code_tmp)< 10 ) && (LOW(IR_Code_tmp)!=0x3F) ) |
1826: 80 91 b7 00 lds r24, 0x00B7 |
182a: 8a 30 cpi r24, 0x0A ; 10 |
182c: d8 f4 brcc .+54 ; 0x1864 <__vector_11+0x138> |
182e: 80 91 b6 00 lds r24, 0x00B6 |
1832: 8f 33 cpi r24, 0x3F ; 63 |
1834: b9 f0 breq .+46 ; 0x1864 <__vector_11+0x138> |
{ // nur erlaubt Adressen werden akzepetiert |
IR_Code=IR_Code_tmp; // IR-Wort in die globale Variable schreiben |
1836: 80 91 b6 00 lds r24, 0x00B6 |
183a: 90 91 b7 00 lds r25, 0x00B7 |
183e: 90 93 c8 01 sts 0x01C8, r25 |
1842: 80 93 c7 01 sts 0x01C7, r24 |
New_IR_Code = 1; // Es ist ein neues Zeichen eingetragen worden |
1846: 81 e0 ldi r24, 0x01 ; 1 |
1848: 80 93 c6 01 sts 0x01C6, r24 |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
184c: 84 e0 ldi r24, 0x04 ; 4 |
184e: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
1852: 8b b7 in r24, 0x3b ; 59 |
1854: 80 64 ori r24, 0x40 ; 64 |
1856: 8b bf out 0x3b, r24 ; 59 |
LoescheIrCodeTimer = 250; |
1858: 8a ef ldi r24, 0xFA ; 250 |
185a: 90 e0 ldi r25, 0x00 ; 0 |
185c: 90 93 7d 00 sts 0x007D, r25 |
1860: 80 93 7c 00 sts 0x007C, r24 |
} |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
1864: 84 e0 ldi r24, 0x04 ; 4 |
1866: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
186a: 8b b7 in r24, 0x3b ; 59 |
186c: 80 64 ori r24, 0x40 ; 64 |
186e: 8b bf out 0x3b, r24 ; 59 |
1870: 9f 91 pop r25 |
1872: 8f 91 pop r24 |
1874: 4f 91 pop r20 |
1876: 3f 91 pop r19 |
1878: 2f 91 pop r18 |
187a: 0f 90 pop r0 |
187c: 0f be out 0x3f, r0 ; 63 |
187e: 0f 90 pop r0 |
1880: 1f 90 pop r1 |
1882: 18 95 reti |
00001884 <ADC_Init>: |
// --------------------------------------------------------------------------------------- |
void ADC_Init(void) |
{ |
ADMUX = 0; |
1884: 17 b8 out 0x07, r1 ; 7 |
ADCSRA = 0x86; |
1886: 86 e8 ldi r24, 0x86 ; 134 |
1888: 86 b9 out 0x06, r24 ; 6 |
188a: 08 95 ret |
0000188c <ReadADC>: |
} |
// --------------------------------------------------------------------------------------- |
unsigned int ReadADC(unsigned char adc_input) |
{ |
ADMUX = adc_input; |
188c: 87 b9 out 0x07, r24 ; 7 |
ADCSRA |= 0x40; |
188e: 36 9a sbi 0x06, 6 ; 6 |
//Delay_ms(10); |
while ((ADCSRA & 0x10) == 0); |
1890: 34 9b sbis 0x06, 4 ; 6 |
1892: fe cf rjmp .-4 ; 0x1890 <ReadADC+0x4> |
ADCSRA |= 0x10; |
1894: 34 9a sbi 0x06, 4 ; 6 |
return ADCW; // read ad and calc. temp. |
1896: 84 b1 in r24, 0x04 ; 4 |
1898: 95 b1 in r25, 0x05 ; 5 |
189a: 08 95 ret |
0000189c <GetAnalogWerte>: |
} |
void GetAnalogWerte(void) |
{ |
AnalogWerte[0] = ReadADC(0); |
189c: 80 e0 ldi r24, 0x00 ; 0 |
189e: 0e 94 46 0c call 0x188c <ReadADC> |
18a2: 90 93 cb 01 sts 0x01CB, r25 |
18a6: 80 93 ca 01 sts 0x01CA, r24 |
AnalogWerte[1] = ReadADC(1); |
18aa: 81 e0 ldi r24, 0x01 ; 1 |
18ac: 0e 94 46 0c call 0x188c <ReadADC> |
18b0: 90 93 cd 01 sts 0x01CD, r25 |
18b4: 80 93 cc 01 sts 0x01CC, r24 |
AnalogWerte[2] = ReadADC(2); |
18b8: 82 e0 ldi r24, 0x02 ; 2 |
18ba: 0e 94 46 0c call 0x188c <ReadADC> |
18be: 90 93 cf 01 sts 0x01CF, r25 |
18c2: 80 93 ce 01 sts 0x01CE, r24 |
18c6: 08 95 ret |
000018c8 <memchr>: |
18c8: fc 01 movw r30, r24 |
18ca: 41 50 subi r20, 0x01 ; 1 |
18cc: 50 40 sbci r21, 0x00 ; 0 |
18ce: 30 f0 brcs .+12 ; 0x18dc <memchr+0x14> |
18d0: 01 90 ld r0, Z+ |
18d2: 06 16 cp r0, r22 |
18d4: d1 f7 brne .-12 ; 0x18ca <memchr+0x2> |
18d6: 31 97 sbiw r30, 0x01 ; 1 |
18d8: cf 01 movw r24, r30 |
18da: 08 95 ret |
18dc: 88 27 eor r24, r24 |
18de: 99 27 eor r25, r25 |
18e0: 08 95 ret |
000018e2 <fdevopen>: |
18e2: 0f 93 push r16 |
18e4: 1f 93 push r17 |
18e6: cf 93 push r28 |
18e8: df 93 push r29 |
18ea: 8c 01 movw r16, r24 |
18ec: eb 01 movw r28, r22 |
18ee: 00 97 sbiw r24, 0x00 ; 0 |
18f0: 11 f4 brne .+4 ; 0x18f6 <fdevopen+0x14> |
18f2: 67 2b or r22, r23 |
18f4: c1 f1 breq .+112 ; 0x1966 <fdevopen+0x84> |
18f6: 6e e0 ldi r22, 0x0E ; 14 |
18f8: 70 e0 ldi r23, 0x00 ; 0 |
18fa: 81 e0 ldi r24, 0x01 ; 1 |
18fc: 90 e0 ldi r25, 0x00 ; 0 |
18fe: 0e 94 b8 0c call 0x1970 <calloc> |
1902: fc 01 movw r30, r24 |
1904: 89 2b or r24, r25 |
1906: 71 f1 breq .+92 ; 0x1964 <fdevopen+0x82> |
1908: 80 e8 ldi r24, 0x80 ; 128 |
190a: 83 83 std Z+3, r24 ; 0x03 |
190c: 20 97 sbiw r28, 0x00 ; 0 |
190e: 71 f0 breq .+28 ; 0x192c <fdevopen+0x4a> |
1910: d3 87 std Z+11, r29 ; 0x0b |
1912: c2 87 std Z+10, r28 ; 0x0a |
1914: 81 e8 ldi r24, 0x81 ; 129 |
1916: 83 83 std Z+3, r24 ; 0x03 |
1918: 80 91 d0 01 lds r24, 0x01D0 |
191c: 90 91 d1 01 lds r25, 0x01D1 |
1920: 89 2b or r24, r25 |
1922: 21 f4 brne .+8 ; 0x192c <fdevopen+0x4a> |
1924: f0 93 d1 01 sts 0x01D1, r31 |
1928: e0 93 d0 01 sts 0x01D0, r30 |
192c: 01 15 cp r16, r1 |
192e: 11 05 cpc r17, r1 |
1930: c9 f0 breq .+50 ; 0x1964 <fdevopen+0x82> |
1932: 11 87 std Z+9, r17 ; 0x09 |
1934: 00 87 std Z+8, r16 ; 0x08 |
1936: 83 81 ldd r24, Z+3 ; 0x03 |
1938: 82 60 ori r24, 0x02 ; 2 |
193a: 83 83 std Z+3, r24 ; 0x03 |
193c: 80 91 d2 01 lds r24, 0x01D2 |
1940: 90 91 d3 01 lds r25, 0x01D3 |
1944: 89 2b or r24, r25 |
1946: 71 f4 brne .+28 ; 0x1964 <fdevopen+0x82> |
1948: f0 93 d3 01 sts 0x01D3, r31 |
194c: e0 93 d2 01 sts 0x01D2, r30 |
1950: 80 91 d4 01 lds r24, 0x01D4 |
1954: 90 91 d5 01 lds r25, 0x01D5 |
1958: 89 2b or r24, r25 |
195a: 21 f4 brne .+8 ; 0x1964 <fdevopen+0x82> |
195c: f0 93 d5 01 sts 0x01D5, r31 |
1960: e0 93 d4 01 sts 0x01D4, r30 |
1964: cf 01 movw r24, r30 |
1966: df 91 pop r29 |
1968: cf 91 pop r28 |
196a: 1f 91 pop r17 |
196c: 0f 91 pop r16 |
196e: 08 95 ret |
00001970 <calloc>: |
1970: 0f 93 push r16 |
1972: 1f 93 push r17 |
1974: cf 93 push r28 |
1976: df 93 push r29 |
1978: 86 9f mul r24, r22 |
197a: 80 01 movw r16, r0 |
197c: 87 9f mul r24, r23 |
197e: 10 0d add r17, r0 |
1980: 96 9f mul r25, r22 |
1982: 10 0d add r17, r0 |
1984: 11 24 eor r1, r1 |
1986: c8 01 movw r24, r16 |
1988: 0e 94 d4 0c call 0x19a8 <malloc> |
198c: ec 01 movw r28, r24 |
198e: 00 97 sbiw r24, 0x00 ; 0 |
1990: 29 f0 breq .+10 ; 0x199c <calloc+0x2c> |
1992: a8 01 movw r20, r16 |
1994: 60 e0 ldi r22, 0x00 ; 0 |
1996: 70 e0 ldi r23, 0x00 ; 0 |
1998: 0e 94 ca 0d call 0x1b94 <memset> |
199c: ce 01 movw r24, r28 |
199e: df 91 pop r29 |
19a0: cf 91 pop r28 |
19a2: 1f 91 pop r17 |
19a4: 0f 91 pop r16 |
19a6: 08 95 ret |
000019a8 <malloc>: |
19a8: cf 93 push r28 |
19aa: df 93 push r29 |
19ac: ac 01 movw r20, r24 |
19ae: 02 97 sbiw r24, 0x02 ; 2 |
19b0: 10 f4 brcc .+4 ; 0x19b6 <malloc+0xe> |
19b2: 42 e0 ldi r20, 0x02 ; 2 |
19b4: 50 e0 ldi r21, 0x00 ; 0 |
19b6: 20 e0 ldi r18, 0x00 ; 0 |
19b8: 30 e0 ldi r19, 0x00 ; 0 |
19ba: a0 91 d8 01 lds r26, 0x01D8 |
19be: b0 91 d9 01 lds r27, 0x01D9 |
19c2: bd 01 movw r22, r26 |
19c4: f9 01 movw r30, r18 |
19c6: 10 97 sbiw r26, 0x00 ; 0 |
19c8: 09 f4 brne .+2 ; 0x19cc <malloc+0x24> |
19ca: 4c c0 rjmp .+152 ; 0x1a64 <malloc+0xbc> |
19cc: 8d 91 ld r24, X+ |
19ce: 9c 91 ld r25, X |
19d0: 11 97 sbiw r26, 0x01 ; 1 |
19d2: 84 17 cp r24, r20 |
19d4: 95 07 cpc r25, r21 |
19d6: 31 f1 breq .+76 ; 0x1a24 <malloc+0x7c> |
19d8: 48 17 cp r20, r24 |
19da: 59 07 cpc r21, r25 |
19dc: 38 f4 brcc .+14 ; 0x19ec <malloc+0x44> |
19de: 21 15 cp r18, r1 |
19e0: 31 05 cpc r19, r1 |
19e2: 19 f0 breq .+6 ; 0x19ea <malloc+0x42> |
19e4: 82 17 cp r24, r18 |
19e6: 93 07 cpc r25, r19 |
19e8: 08 f4 brcc .+2 ; 0x19ec <malloc+0x44> |
19ea: 9c 01 movw r18, r24 |
19ec: fd 01 movw r30, r26 |
19ee: a2 81 ldd r26, Z+2 ; 0x02 |
19f0: b3 81 ldd r27, Z+3 ; 0x03 |
19f2: 10 97 sbiw r26, 0x00 ; 0 |
19f4: 59 f7 brne .-42 ; 0x19cc <malloc+0x24> |
19f6: 21 15 cp r18, r1 |
19f8: 31 05 cpc r19, r1 |
19fa: a1 f1 breq .+104 ; 0x1a64 <malloc+0xbc> |
19fc: c9 01 movw r24, r18 |
19fe: 84 1b sub r24, r20 |
1a00: 95 0b sbc r25, r21 |
1a02: 04 97 sbiw r24, 0x04 ; 4 |
1a04: 08 f4 brcc .+2 ; 0x1a08 <malloc+0x60> |
1a06: a9 01 movw r20, r18 |
1a08: db 01 movw r26, r22 |
1a0a: e0 e0 ldi r30, 0x00 ; 0 |
1a0c: f0 e0 ldi r31, 0x00 ; 0 |
1a0e: 10 97 sbiw r26, 0x00 ; 0 |
1a10: 49 f1 breq .+82 ; 0x1a64 <malloc+0xbc> |
1a12: 8d 91 ld r24, X+ |
1a14: 9c 91 ld r25, X |
1a16: 11 97 sbiw r26, 0x01 ; 1 |
1a18: 82 17 cp r24, r18 |
1a1a: 93 07 cpc r25, r19 |
1a1c: f9 f4 brne .+62 ; 0x1a5c <malloc+0xb4> |
1a1e: 42 17 cp r20, r18 |
1a20: 53 07 cpc r21, r19 |
1a22: 79 f4 brne .+30 ; 0x1a42 <malloc+0x9a> |
1a24: ed 01 movw r28, r26 |
1a26: 8a 81 ldd r24, Y+2 ; 0x02 |
1a28: 9b 81 ldd r25, Y+3 ; 0x03 |
1a2a: 30 97 sbiw r30, 0x00 ; 0 |
1a2c: 19 f0 breq .+6 ; 0x1a34 <malloc+0x8c> |
1a2e: 93 83 std Z+3, r25 ; 0x03 |
1a30: 82 83 std Z+2, r24 ; 0x02 |
1a32: 04 c0 rjmp .+8 ; 0x1a3c <malloc+0x94> |
1a34: 90 93 d9 01 sts 0x01D9, r25 |
1a38: 80 93 d8 01 sts 0x01D8, r24 |
1a3c: cd 01 movw r24, r26 |
1a3e: 02 96 adiw r24, 0x02 ; 2 |
1a40: 4a c0 rjmp .+148 ; 0x1ad6 <malloc+0x12e> |
1a42: 24 1b sub r18, r20 |
1a44: 35 0b sbc r19, r21 |
1a46: fd 01 movw r30, r26 |
1a48: e2 0f add r30, r18 |
1a4a: f3 1f adc r31, r19 |
1a4c: 41 93 st Z+, r20 |
1a4e: 51 93 st Z+, r21 |
1a50: 22 50 subi r18, 0x02 ; 2 |
1a52: 30 40 sbci r19, 0x00 ; 0 |
1a54: 2d 93 st X+, r18 |
1a56: 3c 93 st X, r19 |
1a58: cf 01 movw r24, r30 |
1a5a: 3d c0 rjmp .+122 ; 0x1ad6 <malloc+0x12e> |
1a5c: fd 01 movw r30, r26 |
1a5e: a2 81 ldd r26, Z+2 ; 0x02 |
1a60: b3 81 ldd r27, Z+3 ; 0x03 |
1a62: d5 cf rjmp .-86 ; 0x1a0e <malloc+0x66> |
1a64: 80 91 d6 01 lds r24, 0x01D6 |
1a68: 90 91 d7 01 lds r25, 0x01D7 |
1a6c: 89 2b or r24, r25 |
1a6e: 41 f4 brne .+16 ; 0x1a80 <malloc+0xd8> |
1a70: 80 91 80 00 lds r24, 0x0080 |
1a74: 90 91 81 00 lds r25, 0x0081 |
1a78: 90 93 d7 01 sts 0x01D7, r25 |
1a7c: 80 93 d6 01 sts 0x01D6, r24 |
1a80: e0 91 7e 00 lds r30, 0x007E |
1a84: f0 91 7f 00 lds r31, 0x007F |
1a88: 30 97 sbiw r30, 0x00 ; 0 |
1a8a: 41 f4 brne .+16 ; 0x1a9c <malloc+0xf4> |
1a8c: ed b7 in r30, 0x3d ; 61 |
1a8e: fe b7 in r31, 0x3e ; 62 |
1a90: 80 91 82 00 lds r24, 0x0082 |
1a94: 90 91 83 00 lds r25, 0x0083 |
1a98: e8 1b sub r30, r24 |
1a9a: f9 0b sbc r31, r25 |
1a9c: a0 91 d6 01 lds r26, 0x01D6 |
1aa0: b0 91 d7 01 lds r27, 0x01D7 |
1aa4: 9f 01 movw r18, r30 |
1aa6: 2a 1b sub r18, r26 |
1aa8: 3b 0b sbc r19, r27 |
1aaa: 24 17 cp r18, r20 |
1aac: 35 07 cpc r19, r21 |
1aae: 88 f0 brcs .+34 ; 0x1ad2 <malloc+0x12a> |
1ab0: ca 01 movw r24, r20 |
1ab2: 02 96 adiw r24, 0x02 ; 2 |
1ab4: 28 17 cp r18, r24 |
1ab6: 39 07 cpc r19, r25 |
1ab8: 60 f0 brcs .+24 ; 0x1ad2 <malloc+0x12a> |
1aba: cd 01 movw r24, r26 |
1abc: 84 0f add r24, r20 |
1abe: 95 1f adc r25, r21 |
1ac0: 02 96 adiw r24, 0x02 ; 2 |
1ac2: 90 93 d7 01 sts 0x01D7, r25 |
1ac6: 80 93 d6 01 sts 0x01D6, r24 |
1aca: 4d 93 st X+, r20 |
1acc: 5d 93 st X+, r21 |
1ace: cd 01 movw r24, r26 |
1ad0: 02 c0 rjmp .+4 ; 0x1ad6 <malloc+0x12e> |
1ad2: 80 e0 ldi r24, 0x00 ; 0 |
1ad4: 90 e0 ldi r25, 0x00 ; 0 |
1ad6: df 91 pop r29 |
1ad8: cf 91 pop r28 |
1ada: 08 95 ret |
00001adc <free>: |
1adc: cf 93 push r28 |
1ade: df 93 push r29 |
1ae0: 00 97 sbiw r24, 0x00 ; 0 |
1ae2: 09 f4 brne .+2 ; 0x1ae6 <free+0xa> |
1ae4: 54 c0 rjmp .+168 ; 0x1b8e <free+0xb2> |
1ae6: dc 01 movw r26, r24 |
1ae8: 12 97 sbiw r26, 0x02 ; 2 |
1aea: ed 01 movw r28, r26 |
1aec: 1b 82 std Y+3, r1 ; 0x03 |
1aee: 1a 82 std Y+2, r1 ; 0x02 |
1af0: 80 91 d8 01 lds r24, 0x01D8 |
1af4: 90 91 d9 01 lds r25, 0x01D9 |
1af8: 00 97 sbiw r24, 0x00 ; 0 |
1afa: 21 f1 breq .+72 ; 0x1b44 <free+0x68> |
1afc: fc 01 movw r30, r24 |
1afe: 40 e0 ldi r20, 0x00 ; 0 |
1b00: 50 e0 ldi r21, 0x00 ; 0 |
1b02: ea 17 cp r30, r26 |
1b04: fb 07 cpc r31, r27 |
1b06: 18 f1 brcs .+70 ; 0x1b4e <free+0x72> |
1b08: ed 01 movw r28, r26 |
1b0a: fb 83 std Y+3, r31 ; 0x03 |
1b0c: ea 83 std Y+2, r30 ; 0x02 |
1b0e: 2d 91 ld r18, X+ |
1b10: 3c 91 ld r19, X |
1b12: 11 97 sbiw r26, 0x01 ; 1 |
1b14: c2 0f add r28, r18 |
1b16: d3 1f adc r29, r19 |
1b18: ce 01 movw r24, r28 |
1b1a: 02 96 adiw r24, 0x02 ; 2 |
1b1c: 8e 17 cp r24, r30 |
1b1e: 9f 07 cpc r25, r31 |
1b20: 71 f4 brne .+28 ; 0x1b3e <free+0x62> |
1b22: 8a 81 ldd r24, Y+2 ; 0x02 |
1b24: 9b 81 ldd r25, Y+3 ; 0x03 |
1b26: 28 0f add r18, r24 |
1b28: 39 1f adc r19, r25 |
1b2a: 2e 5f subi r18, 0xFE ; 254 |
1b2c: 3f 4f sbci r19, 0xFF ; 255 |
1b2e: 11 96 adiw r26, 0x01 ; 1 |
1b30: 3c 93 st X, r19 |
1b32: 2e 93 st -X, r18 |
1b34: 82 81 ldd r24, Z+2 ; 0x02 |
1b36: 93 81 ldd r25, Z+3 ; 0x03 |
1b38: fd 01 movw r30, r26 |
1b3a: 93 83 std Z+3, r25 ; 0x03 |
1b3c: 82 83 std Z+2, r24 ; 0x02 |
1b3e: 41 15 cp r20, r1 |
1b40: 51 05 cpc r21, r1 |
1b42: 59 f4 brne .+22 ; 0x1b5a <free+0x7e> |
1b44: b0 93 d9 01 sts 0x01D9, r27 |
1b48: a0 93 d8 01 sts 0x01D8, r26 |
1b4c: 20 c0 rjmp .+64 ; 0x1b8e <free+0xb2> |
1b4e: af 01 movw r20, r30 |
1b50: 02 80 ldd r0, Z+2 ; 0x02 |
1b52: f3 81 ldd r31, Z+3 ; 0x03 |
1b54: e0 2d mov r30, r0 |
1b56: 30 97 sbiw r30, 0x00 ; 0 |
1b58: a1 f6 brne .-88 ; 0x1b02 <free+0x26> |
1b5a: ea 01 movw r28, r20 |
1b5c: bb 83 std Y+3, r27 ; 0x03 |
1b5e: aa 83 std Y+2, r26 ; 0x02 |
1b60: ca 01 movw r24, r20 |
1b62: 02 96 adiw r24, 0x02 ; 2 |
1b64: 28 81 ld r18, Y |
1b66: 39 81 ldd r19, Y+1 ; 0x01 |
1b68: 82 0f add r24, r18 |
1b6a: 93 1f adc r25, r19 |
1b6c: 8a 17 cp r24, r26 |
1b6e: 9b 07 cpc r25, r27 |
1b70: 71 f4 brne .+28 ; 0x1b8e <free+0xb2> |
1b72: 8d 91 ld r24, X+ |
1b74: 9c 91 ld r25, X |
1b76: 11 97 sbiw r26, 0x01 ; 1 |
1b78: 28 0f add r18, r24 |
1b7a: 39 1f adc r19, r25 |
1b7c: 2e 5f subi r18, 0xFE ; 254 |
1b7e: 3f 4f sbci r19, 0xFF ; 255 |
1b80: 39 83 std Y+1, r19 ; 0x01 |
1b82: 28 83 st Y, r18 |
1b84: fd 01 movw r30, r26 |
1b86: 82 81 ldd r24, Z+2 ; 0x02 |
1b88: 93 81 ldd r25, Z+3 ; 0x03 |
1b8a: 9b 83 std Y+3, r25 ; 0x03 |
1b8c: 8a 83 std Y+2, r24 ; 0x02 |
1b8e: df 91 pop r29 |
1b90: cf 91 pop r28 |
1b92: 08 95 ret |
00001b94 <memset>: |
1b94: dc 01 movw r26, r24 |
1b96: 40 ff sbrs r20, 0 |
1b98: 03 c0 rjmp .+6 ; 0x1ba0 <memset+0xc> |
1b9a: 01 c0 rjmp .+2 ; 0x1b9e <memset+0xa> |
1b9c: 6d 93 st X+, r22 |
1b9e: 6d 93 st X+, r22 |
1ba0: 42 50 subi r20, 0x02 ; 2 |
1ba2: 50 40 sbci r21, 0x00 ; 0 |
1ba4: d8 f7 brcc .-10 ; 0x1b9c <memset+0x8> |
1ba6: 08 95 ret |
00001ba8 <__udivmodsi4>: |
1ba8: a1 e2 ldi r26, 0x21 ; 33 |
1baa: 1a 2e mov r1, r26 |
1bac: aa 1b sub r26, r26 |
1bae: bb 1b sub r27, r27 |
1bb0: fd 01 movw r30, r26 |
1bb2: 0d c0 rjmp .+26 ; 0x1bce <__udivmodsi4_ep> |
00001bb4 <__udivmodsi4_loop>: |
1bb4: aa 1f adc r26, r26 |
1bb6: bb 1f adc r27, r27 |
1bb8: ee 1f adc r30, r30 |
1bba: ff 1f adc r31, r31 |
1bbc: a2 17 cp r26, r18 |
1bbe: b3 07 cpc r27, r19 |
1bc0: e4 07 cpc r30, r20 |
1bc2: f5 07 cpc r31, r21 |
1bc4: 20 f0 brcs .+8 ; 0x1bce <__udivmodsi4_ep> |
1bc6: a2 1b sub r26, r18 |
1bc8: b3 0b sbc r27, r19 |
1bca: e4 0b sbc r30, r20 |
1bcc: f5 0b sbc r31, r21 |
00001bce <__udivmodsi4_ep>: |
1bce: 66 1f adc r22, r22 |
1bd0: 77 1f adc r23, r23 |
1bd2: 88 1f adc r24, r24 |
1bd4: 99 1f adc r25, r25 |
1bd6: 1a 94 dec r1 |
1bd8: 69 f7 brne .-38 ; 0x1bb4 <__udivmodsi4_loop> |
1bda: 60 95 com r22 |
1bdc: 70 95 com r23 |
1bde: 80 95 com r24 |
1be0: 90 95 com r25 |
1be2: 9b 01 movw r18, r22 |
1be4: ac 01 movw r20, r24 |
1be6: bd 01 movw r22, r26 |
1be8: cf 01 movw r24, r30 |
1bea: 08 95 ret |
/tags/V0.41/main.map |
---|
0,0 → 1,764 |
Archive member included because of file (symbol) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o (__udivmodsi4) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
main.o (__do_copy_data) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
main.o (__do_clear_bss) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o (memchr) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o (fdevopen) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (__iob) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (calloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (malloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (memset) |
Allocating common symbols |
Common symbol size file |
SendeBuffer 0x64 uart.o |
Debug_Timer 0x2 main.o |
Debug_Display_Timer |
0x2 main.o |
__brkval 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
DebugIn 0xb main.o |
VersionInfo 0xa main.o |
New_IR_Code 0x1 ir.o |
RxdBuffer 0x64 uart.o |
AnalogWerte 0x6 analog.o |
IR_Code 0x2 ir.o |
KanalVon 0x8 menu.o |
Decodierung_Lauft 0x1 ir.o |
DebugOut 0x1a main.o |
KanalAn 0x8 menu.o |
__flp 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
PollDisplay 0x1 main.o |
__iob 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
Memory Configuration |
Name Origin Length Attributes |
text 0x00000000 0x00020000 xr |
data 0x00800060 0x0000ffa0 rw !x |
eeprom 0x00810000 0x00010000 rw !x |
*default* 0x00000000 0xffffffff |
Linker script and memory map |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
LOAD main.o |
LOAD uart.o |
LOAD lcd.o |
LOAD printf_P.o |
LOAD timer0.o |
LOAD keyboard.o |
LOAD menu.o |
LOAD ir.o |
LOAD analog.o |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libm.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
.hash |
*(.hash) |
.dynsym |
*(.dynsym) |
.dynstr |
*(.dynstr) |
.gnu.version |
*(.gnu.version) |
.gnu.version_d |
*(.gnu.version_d) |
.gnu.version_r |
*(.gnu.version_r) |
.rel.init |
*(.rel.init) |
.rela.init |
*(.rela.init) |
.rel.text |
*(.rel.text) |
*(.rel.text.*) |
*(.rel.gnu.linkonce.t*) |
.rela.text |
*(.rela.text) |
*(.rela.text.*) |
*(.rela.gnu.linkonce.t*) |
.rel.fini |
*(.rel.fini) |
.rela.fini |
*(.rela.fini) |
.rel.rodata |
*(.rel.rodata) |
*(.rel.rodata.*) |
*(.rel.gnu.linkonce.r*) |
.rela.rodata |
*(.rela.rodata) |
*(.rela.rodata.*) |
*(.rela.gnu.linkonce.r*) |
.rel.data |
*(.rel.data) |
*(.rel.data.*) |
*(.rel.gnu.linkonce.d*) |
.rela.data |
*(.rela.data) |
*(.rela.data.*) |
*(.rela.gnu.linkonce.d*) |
.rel.ctors |
*(.rel.ctors) |
.rela.ctors |
*(.rela.ctors) |
.rel.dtors |
*(.rel.dtors) |
.rela.dtors |
*(.rela.dtors) |
.rel.got |
*(.rel.got) |
.rela.got |
*(.rela.got) |
.rel.bss |
*(.rel.bss) |
.rela.bss |
*(.rela.bss) |
.rel.plt |
*(.rel.plt) |
.rela.plt |
*(.rela.plt) |
.text 0x00000000 0x1c18 |
*(.vectors) |
.vectors 0x00000000 0x54 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000000 __vectors |
0x00000000 __vector_default |
0x00000054 __ctors_start = . |
*(.ctors) |
0x00000054 __ctors_end = . |
0x00000054 __dtors_start = . |
*(.dtors) |
0x00000054 __dtors_end = . |
*(.progmem.gcc*) |
*(.progmem*) |
.progmem.data 0x00000054 0x54 main.o |
.progmem.data 0x000000a8 0xc uart.o |
.progmem.data 0x000000b4 0x56 menu.o |
0x0000010a . = ALIGN (0x2) |
*(.init0) |
*(.init1) |
*(.init2) |
.init2 0x0000010a 0xc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.init3) |
*(.init4) |
.init4 0x00000116 0x16 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
0x00000116 __do_copy_data |
.init4 0x0000012c 0x10 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
0x0000012c __do_clear_bss |
*(.init5) |
*(.init6) |
*(.init7) |
*(.init8) |
*(.init9) |
.init9 0x0000013c 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.text) |
.text 0x00000140 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000140 __vector_12 |
0x00000140 __bad_interrupt |
0x00000140 __vector_6 |
0x00000140 __vector_3 |
0x00000140 __vector_17 |
0x00000140 __vector_19 |
0x00000140 __vector_7 |
0x00000140 __vector_5 |
0x00000140 __vector_4 |
0x00000140 __vector_2 |
0x00000140 __vector_8 |
0x00000140 __vector_14 |
0x00000140 __vector_10 |
0x00000140 __vector_16 |
0x00000140 __vector_18 |
0x00000140 __vector_20 |
.text 0x00000144 0x282 main.o |
0x000001b4 Init |
0x00000156 Sekundentakt |
0x000001ca main |
0x00000144 Sekundentakt_Init |
.text 0x000003c6 0x7e6 uart.o |
0x000009f8 WriteProgramData |
0x00000a16 SendeRemoteTasten |
0x000009fa UART_Init |
0x00000430 __vector_13 |
0x0000080a BearbeiteRxDaten |
0x00000abe ClearIntervalle |
0x00000a76 SendIntervalle |
0x000005de AddCRC |
0x00000b04 DatenUebertragung |
0x00000732 Decode64 |
0x000003c6 __vector_15 |
0x0000064a SendOutData |
0x000009dc uart_putchar |
.text 0x00000bac 0x1b2 lcd.o |
0x00000cc4 LCD_Gotoxy |
0x00000c4e my_pput |
0x00000c08 _lcd_write_4bit |
0x00000bcc _short_delay |
0x00000c26 lcd_write_byte |
0x00000bdc _lcd_write_command |
0x00000c58 LCD_Init |
0x00000d48 LCD_Putchar |
0x00000d12 LCD_Write |
0x00000bac _long_delay |
.text 0x00000d5e 0x58a printf_P.o |
0x00000de0 _printf_P |
0x00000dc8 PAD_0 |
0x00000d86 PRINTP |
0x00000d5e PRINT |
0x00000db0 PAD_SP |
.text 0x000012e8 0xd6 timer0.o |
0x0000137c SetDelay |
0x0000138e CheckDelay |
0x000013a4 Delay_ms |
0x000012e8 __vector_9 |
0x00001368 Timer1_Init |
.text 0x000013be 0x136 keyboard.o |
0x000014da GetKeyboard2 |
0x000013be Keyboard_Init |
0x000013d0 GetKeyboard |
.text 0x000014f4 0x206 menu.o |
0x000014f4 Menu |
.text 0x000016fa 0x1b6 ir.o |
0x00001728 __vector_1 |
0x00001758 __vector_11 |
0x000016fa InitIR |
.text 0x000018b0 0x44 analog.o |
0x000018c8 GetAnalogWerte |
0x000018b8 ReadADC |
0x000018b0 ADC_Init |
.text 0x000018f4 0x1a C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
0x000018f4 memchr |
.text 0x0000190e 0x8e C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
0x0000190e fdevopen |
.text 0x0000199c 0x38 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
0x0000199c calloc |
.text 0x000019d4 0x1ec C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x000019d4 malloc |
0x00001b08 free |
.text 0x00001bc0 0x14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
0x00001bc0 memset |
0x00001bd4 . = ALIGN (0x2) |
*(.text.*) |
.text.libgcc 0x00001bd4 0x44 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
0x00001bd4 __udivmodsi4 |
0x00001c18 . = ALIGN (0x2) |
*(.fini9) |
*(.fini8) |
*(.fini7) |
*(.fini6) |
*(.fini5) |
*(.fini4) |
*(.fini3) |
*(.fini2) |
*(.fini1) |
*(.fini0) |
0x00001c18 _etext = . |
.data 0x00800060 0x24 load address 0x00001c18 |
0x00800060 PROVIDE (__data_start, .) |
*(.data) |
.data 0x00800060 0xc main.o |
0x00800065 DisplayZeilen |
0x00800064 SlaveAdresse |
0x00800066 CntDatensaetzeProSekunde |
0x00800062 IntervallDebug |
0x00800060 IntervallDisplay |
.data 0x0080006c 0x5 uart.o |
0x0080006e UebertragungAbgeschlossen |
0x0080006c AnzahlTeilnehmer |
0x0080006d ErwarteAntwort |
.data 0x00800071 0xb menu.o |
0x00800071 Array |
.data 0x0080007c 0x2 ir.o |
0x0080007c LoescheIrCodeTimer |
.data 0x0080007e 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x00800080 __malloc_heap_start |
0x0080007e __malloc_heap_end |
0x00800082 __malloc_margin |
*(.gnu.linkonce.d*) |
0x00800084 . = ALIGN (0x2) |
0x00800084 _edata = . |
0x00800084 PROVIDE (__data_end, .) |
.bss 0x00800084 0x157 |
0x00800084 PROVIDE (__bss_start, .) |
*(.bss) |
.bss 0x00800084 0xe main.o |
0x00800087 DebugGetAnforderung |
0x00800088 Debug_Display_Intervall |
0x00800086 GetVersionAnforderung |
0x0080008d Sekunde |
0x00800085 SendeDummyDaten |
0x0080008e _TastTimer |
0x0080008c Minute |
0x0080008a Debug_Timer_Intervall |
0x00800084 UebertragungUnterbrochen |
0x00800090 _SekTimer |
.bss 0x00800092 0x14 uart.o |
0x0080009d SioTmp |
0x00800098 PC_DebugTimeout |
0x0080009c NeuerDatensatzEmpfangen |
0x0080009a CntCrcError |
0x00800097 TX_DigTransferKanalL |
0x00800094 DisplayBusy |
0x00800092 WaitTXD |
0x00800099 AnzahlEmpfangsBytes |
0x00800095 TX_DigTransferKanalDaten |
0x00800093 AntwortEingetroffen |
0x00800096 TX_DigTransferKanalH |
.bss 0x008000a6 0x3 timer0.o |
0x008000a6 CountMilliseconds |
.bss 0x008000a9 0x7 keyboard.o |
0x008000a9 KeyTimer |
.bss 0x008000b0 0x5 menu.o |
0x008000b0 TestInt |
.bss 0x008000b5 0x6 ir.o |
*(COMMON) |
COMMON 0x008000bb 0x34 main.o |
0x008000bb Debug_Timer |
0x008000bd Debug_Display_Timer |
0x008000bf DebugIn |
0x008000ca VersionInfo |
0x008000d4 DebugOut |
0x008000ee PollDisplay |
COMMON 0x008000ef 0xc8 uart.o |
0x008000ef SendeBuffer |
0x00800153 RxdBuffer |
COMMON 0x008001b7 0x10 menu.o |
0x008001b7 KanalVon |
0x008001bf KanalAn |
COMMON 0x008001c7 0x4 ir.o |
0x008001c7 New_IR_Code |
0x008001c8 IR_Code |
0x008001ca Decodierung_Lauft |
COMMON 0x008001cb 0x6 analog.o |
0x008001cb AnalogWerte |
COMMON 0x008001d1 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
0x008001d1 __iob |
COMMON 0x008001d7 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x008001d7 __brkval |
0x008001d9 __flp |
0x008001db PROVIDE (__bss_end, .) |
0x00001c18 __data_load_start = LOADADDR (.data) |
0x00001c3c __data_load_end = (__data_load_start + SIZEOF (.data)) |
.noinit 0x008001db 0x0 |
0x008001db PROVIDE (__noinit_start, .) |
*(.noinit*) |
0x008001db PROVIDE (__noinit_end, .) |
0x008001db _end = . |
0x008001db PROVIDE (__heap_start, .) |
.eeprom 0x00810000 0x0 |
*(.eeprom*) |
0x00810000 __eeprom_end = . |
.stab 0x00000000 0x36c |
*(.stab) |
.stab 0x00000000 0x36c C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stabstr 0x00000000 0x84 |
*(.stabstr) |
.stabstr 0x00000000 0x84 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stab.excl |
*(.stab.excl) |
.stab.exclstr |
*(.stab.exclstr) |
.stab.index |
*(.stab.index) |
.stab.indexstr |
*(.stab.indexstr) |
.comment |
*(.comment) |
.debug |
*(.debug) |
.line |
*(.line) |
.debug_srcinfo |
*(.debug_srcinfo) |
.debug_sfnames |
*(.debug_sfnames) |
.debug_aranges 0x00000000 0xb4 |
*(.debug_aranges) |
.debug_aranges |
0x00000000 0x14 main.o |
.debug_aranges |
0x00000014 0x14 uart.o |
.debug_aranges |
0x00000028 0x14 lcd.o |
.debug_aranges |
0x0000003c 0x14 printf_P.o |
.debug_aranges |
0x00000050 0x14 timer0.o |
.debug_aranges |
0x00000064 0x14 keyboard.o |
.debug_aranges |
0x00000078 0x14 menu.o |
.debug_aranges |
0x0000008c 0x14 ir.o |
.debug_aranges |
0x000000a0 0x14 analog.o |
.debug_pubnames |
0x00000000 0x701 |
*(.debug_pubnames) |
.debug_pubnames |
0x00000000 0x1e1 main.o |
.debug_pubnames |
0x000001e1 0x240 uart.o |
.debug_pubnames |
0x00000421 0xb7 lcd.o |
.debug_pubnames |
0x000004d8 0x4a printf_P.o |
.debug_pubnames |
0x00000522 0x70 timer0.o |
.debug_pubnames |
0x00000592 0x52 keyboard.o |
.debug_pubnames |
0x000005e4 0x4a menu.o |
.debug_pubnames |
0x0000062e 0x85 ir.o |
.debug_pubnames |
0x000006b3 0x4e analog.o |
.debug_info 0x00000000 0x1a6c |
*(.debug_info) |
.debug_info 0x00000000 0x469 main.o |
.debug_info 0x00000469 0x7ba uart.o |
.debug_info 0x00000c23 0x260 lcd.o |
.debug_info 0x00000e83 0x45d printf_P.o |
.debug_info 0x000012e0 0x1d7 timer0.o |
.debug_info 0x000014b7 0x177 keyboard.o |
.debug_info 0x0000162e 0x1a7 menu.o |
.debug_info 0x000017d5 0x171 ir.o |
.debug_info 0x00001946 0x126 analog.o |
*(.gnu.linkonce.wi.*) |
.debug_abbrev 0x00000000 0x774 |
*(.debug_abbrev) |
.debug_abbrev 0x00000000 0x10c main.o |
.debug_abbrev 0x0000010c 0x178 uart.o |
.debug_abbrev 0x00000284 0xbc lcd.o |
.debug_abbrev 0x00000340 0x132 printf_P.o |
.debug_abbrev 0x00000472 0xc5 timer0.o |
.debug_abbrev 0x00000537 0x87 keyboard.o |
.debug_abbrev 0x000005be 0xb6 menu.o |
.debug_abbrev 0x00000674 0x76 ir.o |
.debug_abbrev 0x000006ea 0x8a analog.o |
.debug_line 0x00000000 0x16a3 |
*(.debug_line) |
.debug_line 0x00000000 0x2aa main.o |
.debug_line 0x000002aa 0x4c4 uart.o |
.debug_line 0x0000076e 0x279 lcd.o |
.debug_line 0x000009e7 0x4e2 printf_P.o |
.debug_line 0x00000ec9 0x180 timer0.o |
.debug_line 0x00001049 0x170 keyboard.o |
.debug_line 0x000011b9 0x19a menu.o |
.debug_line 0x00001353 0x212 ir.o |
.debug_line 0x00001565 0x13e analog.o |
.debug_frame |
*(.debug_frame) |
.debug_str 0x00000000 0x889 |
*(.debug_str) |
.debug_str 0x00000000 0x2e2 main.o |
0x371 (size before relaxing) |
.debug_str 0x000002e2 0x26b uart.o |
0x423 (size before relaxing) |
.debug_str 0x0000054d 0x9a lcd.o |
0x17b (size before relaxing) |
.debug_str 0x000005e7 0xf9 printf_P.o |
0x1bd (size before relaxing) |
.debug_str 0x000006e0 0x6b timer0.o |
0x168 (size before relaxing) |
.debug_str 0x0000074b 0x5e keyboard.o |
0x13f (size before relaxing) |
.debug_str 0x000007a9 0x40 menu.o |
0x15e (size before relaxing) |
.debug_str 0x000007e9 0x6d ir.o |
0x169 (size before relaxing) |
.debug_str 0x00000856 0x33 analog.o |
0x120 (size before relaxing) |
.debug_loc |
*(.debug_loc) |
.debug_macinfo |
*(.debug_macinfo) |
OUTPUT(main.elf elf32-avr) |
Cross Reference Table |
Symbol File |
ADC_Init analog.o |
main.o |
AddCRC uart.o |
AnalogWerte analog.o |
uart.o |
AntwortEingetroffen uart.o |
AnzahlEmpfangsBytes uart.o |
AnzahlTeilnehmer uart.o |
menu.o |
Array menu.o |
BearbeiteRxDaten uart.o |
main.o |
CheckDelay timer0.o |
keyboard.o |
main.o |
ClearIntervalle uart.o |
main.o |
CntCrcError uart.o |
menu.o |
CntDatensaetzeProSekunde main.o |
uart.o |
CountMilliseconds timer0.o |
DatenUebertragung uart.o |
main.o |
DebugGetAnforderung main.o |
DebugIn uart.o |
main.o |
DebugOut uart.o |
main.o |
Debug_Display_Intervall main.o |
Debug_Display_Timer main.o |
Debug_Timer main.o |
Debug_Timer_Intervall main.o |
Decode64 uart.o |
Decodierung_Lauft ir.o |
Delay_ms timer0.o |
main.o |
DisplayBusy uart.o |
timer0.o |
DisplayZeilen main.o |
menu.o |
uart.o |
ErwarteAntwort uart.o |
GetAnalogWerte analog.o |
main.o |
GetKeyboard keyboard.o |
main.o |
GetKeyboard2 keyboard.o |
main.o |
GetVersionAnforderung main.o |
IR_Code ir.o |
timer0.o |
uart.o |
Init main.o |
InitIR ir.o |
main.o |
IntervallDebug main.o |
IntervallDisplay main.o |
KanalAn menu.o |
KanalVon menu.o |
KeyTimer keyboard.o |
Keyboard_Init keyboard.o |
main.o |
LCD_Gotoxy lcd.o |
menu.o |
uart.o |
main.o |
LCD_Init lcd.o |
main.o |
LCD_Putchar lcd.o |
printf_P.o |
LCD_Write lcd.o |
LoescheIrCodeTimer ir.o |
timer0.o |
Menu menu.o |
main.o |
Minute main.o |
NeuerDatensatzEmpfangen uart.o |
New_IR_Code ir.o |
PAD_0 printf_P.o |
PAD_SP printf_P.o |
PC_DebugTimeout uart.o |
PRINT printf_P.o |
PRINTP printf_P.o |
PollDisplay uart.o |
main.o |
ReadADC analog.o |
RxdBuffer uart.o |
Sekunde main.o |
Sekundentakt main.o |
Sekundentakt_Init main.o |
SendIntervalle uart.o |
SendOutData uart.o |
SendeBuffer uart.o |
SendeDummyDaten main.o |
SendeRemoteTasten uart.o |
SetDelay timer0.o |
keyboard.o |
main.o |
SioTmp uart.o |
SlaveAdresse main.o |
menu.o |
uart.o |
TX_DigTransferKanalDaten uart.o |
TX_DigTransferKanalH uart.o |
TX_DigTransferKanalL uart.o |
TestInt menu.o |
Timer1_Init timer0.o |
main.o |
UART_Init uart.o |
main.o |
UebertragungAbgeschlossen uart.o |
UebertragungUnterbrochen main.o |
VersionInfo main.o |
WaitTXD uart.o |
timer0.o |
WriteProgramData uart.o |
_SekTimer main.o |
_TastTimer main.o |
__bad_interrupt C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__brkval C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__bss_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__bss_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__data_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_load_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__do_clear_bss C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__do_copy_data C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__flp C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__init C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__iob C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
__malloc_heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_margin C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__stack C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
main.o |
__udivmodsi4 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o |
__vector_1 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_10 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_11 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_12 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_13 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_15 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_16 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_17 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_18 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_19 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_20 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_3 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_5 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_7 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_8 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_9 timer0.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_default C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vectors C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
_lcd_write_4bit lcd.o |
_lcd_write_command lcd.o |
menu.o |
main.o |
_long_delay lcd.o |
menu.o |
main.o |
_printf_P printf_P.o |
menu.o |
uart.o |
main.o |
_short_delay lcd.o |
calloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
fdevopen C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o |
free C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
lcd_write_byte lcd.o |
main main.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
malloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
memchr C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o |
memset C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
my_pput lcd.o |
uart_putchar uart.o |
/tags/V0.41/main.sym |
---|
0,0 → 1,253 |
00000000 W __heap_end |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 W __vector_default |
00000000 T __vectors |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
00000054 t __c.0 |
00000054 T __ctors_end |
00000054 T __ctors_start |
00000054 T __dtors_end |
00000054 T __dtors_start |
00000069 t __c.1 |
0000007e t __c.2 |
00000093 t __c.3 |
000000a8 t __c.2 |
000000ab t __c.3 |
000000ae t __c.4 |
000000b1 t __c.5 |
000000b4 t __c.3 |
000000c2 t __c.4 |
000000d0 t __c.5 |
000000dc t __c.6 |
000000e1 t __c.7 |
000000ea t __c.8 |
000000f6 t __c.9 |
000000fe t __c.10 |
0000010a W __init |
00000116 T __do_copy_data |
00000122 t .do_copy_data_loop |
00000126 t .do_copy_data_start |
0000012c T __do_clear_bss |
00000134 t .do_clear_bss_loop |
00000136 t .do_clear_bss_start |
00000140 T __bad_interrupt |
00000140 W __vector_10 |
00000140 W __vector_12 |
00000140 W __vector_14 |
00000140 W __vector_16 |
00000140 W __vector_17 |
00000140 W __vector_18 |
00000140 W __vector_19 |
00000140 W __vector_2 |
00000140 W __vector_20 |
00000140 W __vector_3 |
00000140 W __vector_4 |
00000140 W __vector_5 |
00000140 W __vector_6 |
00000140 W __vector_7 |
00000140 W __vector_8 |
00000144 T Sekundentakt_Init |
00000156 T Sekundentakt |
000001b4 T Init |
000001ca T main |
000003c6 T __vector_15 |
00000430 T __vector_13 |
000005de T AddCRC |
0000063c T SendOutData |
00000724 T Decode64 |
000007fc T BearbeiteRxDaten |
0000085f W __stack |
0000097a T uart_putchar |
00000996 T WriteProgramData |
00000998 T UART_Init |
000009b4 T SendeRemoteTasten |
00000a14 T SendIntervalle |
00000a5c T ClearIntervalle |
00000aa2 T DatenUebertragung |
00000b92 T _long_delay |
00000bb2 T _short_delay |
00000bc2 T _lcd_write_command |
00000bee T _lcd_write_4bit |
00000c0c T lcd_write_byte |
00000c34 T my_pput |
00000c3e T LCD_Init |
00000caa T LCD_Gotoxy |
00000cf8 T LCD_Write |
00000d2e T LCD_Putchar |
00000d44 T PRINT |
00000d6c T PRINTP |
00000d96 T PAD_SP |
00000dae T PAD_0 |
00000dc6 T _printf_P |
000012ce T __vector_9 |
0000133c T Timer1_Init |
00001350 T SetDelay |
00001362 T CheckDelay |
00001378 T Delay_ms |
00001392 T Keyboard_Init |
000013a4 T GetKeyboard |
000014ae T GetKeyboard2 |
000014c8 T Menu |
000016ce T InitIR |
000016fc T __vector_1 |
0000172c T __vector_11 |
00001884 T ADC_Init |
0000188c T ReadADC |
0000189c T GetAnalogWerte |
000018c8 T memchr |
000018e2 T fdevopen |
00001970 T calloc |
000019a8 T malloc |
00001adc T free |
00001b94 T memset |
00001ba8 T __udivmodsi4 |
00001bb4 t __udivmodsi4_loop |
00001bce t __udivmodsi4_ep |
00001bec A __data_load_start |
00001bec T _etext |
00001c10 A __data_load_end |
00800060 D __data_start |
00800060 D IntervallDisplay |
00800062 D IntervallDebug |
00800064 D SlaveAdresse |
00800065 D DisplayZeilen |
00800066 D CntDatensaetzeProSekunde |
0080006c D AnzahlTeilnehmer |
0080006d D ErwarteAntwort |
0080006e D UebertragungAbgeschlossen |
0080006f d state.0 |
00800070 d KanalSlave.1 |
00800071 D Array |
0080007b d MaxMenue.1 |
0080007c D LoescheIrCodeTimer |
0080007e D __malloc_heap_end |
00800080 D __malloc_heap_start |
00800082 D __malloc_margin |
00800084 B __bss_start |
00800084 D __data_end |
00800084 D _edata |
00800084 B UebertragungUnterbrochen |
00800085 B SendeDummyDaten |
00800086 B GetVersionAnforderung |
00800087 B DebugGetAnforderung |
00800088 B Debug_Display_Intervall |
0080008a B Debug_Timer_Intervall |
0080008c B Minute |
0080008d B Sekunde |
0080008e B _TastTimer |
00800090 B _SekTimer |
00800092 B AntwortEingetroffen |
00800093 B DisplayBusy |
00800094 B TX_DigTransferKanalDaten |
00800095 B TX_DigTransferKanalH |
00800096 B TX_DigTransferKanalL |
00800097 B PC_DebugTimeout |
00800098 B AnzahlEmpfangsBytes |
00800099 B CntCrcError |
0080009b B NeuerDatensatzEmpfangen |
0080009c B SioTmp |
0080009d b ptr.11 |
0080009f b crc.6 |
008000a1 b crc1.7 |
008000a2 b crc2.8 |
008000a3 b buf_ptr.9 |
008000a4 b UartState.10 |
008000a5 B CountMilliseconds |
008000a7 b cnt_10ms.0 |
008000a8 B KeyTimer |
008000aa b taste1.0 |
008000ab b taste2.1 |
008000ac b taste3.2 |
008000ad b taste4.3 |
008000ae b taste5.4 |
008000af B TestInt |
008000b1 b arr.0 |
008000b3 b MenuePunkt.2 |
008000b4 b Shift.0 |
008000b6 b IR_Code_tmp.1 |
008000b8 b IR_Zaehler.2 |
008000b9 b IRSperrCounter.3 |
008000ba B Debug_Timer |
008000bc B Debug_Display_Timer |
008000be B DebugIn |
008000c9 B VersionInfo |
008000d3 B DebugOut |
008000ed B PollDisplay |
008000ee B SendeBuffer |
00800152 B RxdBuffer |
008001b6 B KanalVon |
008001be B KanalAn |
008001c6 B New_IR_Code |
008001c7 B IR_Code |
008001c9 B Decodierung_Lauft |
008001ca B AnalogWerte |
008001d0 B __iob |
008001d6 B __brkval |
008001d8 B __flp |
008001da B __bss_end |
008001da ? __heap_start |
008001da ? _end |
00810000 ? __eeprom_end |
/tags/V0.41/makefile |
---|
0,0 → 1,402 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega8 |
#------------------------------------------------------------------- |
# ACHTUNG: Immer "Make Clean" machen, wenn hier etwas geändert wird! |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 41 |
MotorAdresse = 4 |
FDD_IRLR = 1 |
#------------------------------------------------------------------- |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
ifeq ($(MotorAdresse), 0) |
ifeq ($(FDD_IRLR), 1) |
TARGET = BrushLess-Ctrl_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_10A |
else |
TARGET = BrushLess-Ctrl_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_6A |
endif |
else |
ifeq ($(FDD_IRLR), 1) |
TARGET = BrushLess-Ctrl_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_10A_ADR_$(MotorAdresse)_for_BL-Ctrl_V1_0 |
else |
TARGET = BrushLess-Ctrl_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_6A_ADR_$(MotorAdresse)_for_BL-Ctrl_V1_0 |
endif |
endif |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c timer0.c analog.c PPM_Decode.c twislave.c BLMC.c |
#printf_P.c |
########################################################################################################## |
# If there is more than one source file, append them above, or modify and |
# uncomment the following: |
#SRC += foo.c bar.c |
# You can also wrap lines by appending a backslash to the end of the line: |
#SRC += baz.c \ |
#xyzzy.c |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -g -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DMOTORADRESSE=$(MotorAdresse) -DFDD_IRLR=$(FDD_IRLR) |
ifeq ($(AVR_CTRL_PLATINE), 1) |
CFLAGS += -DAVR_CTRL_PLATINE=$(AVR_CTRL_PLATINE) |
endif |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
#AVRDUDE_FLAGS += -V -E noreset |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
# $(REMOVE) $(TARGET).eep |
# $(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/tags/V0.41/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/tags/V0.41/timer0.c |
---|
0,0 → 1,59 |
/***************************************************************************** |
*****************************************************************************/ |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile unsigned char Timer0Overflow; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL(SIG_OVERFLOW0) |
{ |
static unsigned char cnt; |
Timer0Overflow++; |
if(!cnt--) |
{ |
cnt = 3; |
CountMilliseconds += 1; |
if(I2C_Timeout) I2C_Timeout--; |
if(PPM_Timeout) PPM_Timeout--; else anz_ppm_werte = 0; |
if(SIO_Timeout) SIO_Timeout--; |
} |
} |
void Timer0_Init(void) |
{ |
TCCR0 = TIMER_TEILER; |
// TCNT0 = -TIMER_RELOAD_VALUE; // reload |
TIM0_START; |
TIMER2_INT_ENABLE; |
} |
unsigned int SetDelay(unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
} |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
} |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
/tags/V0.41/timer0.h |
---|
0,0 → 1,15 |
#if defined (__AVR_ATmega8__) |
#define TIMER_TEILER CK8 |
//#define TIMER_RELOAD_VALUE 125 |
#endif |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char Timer0Overflow; |
void Timer1_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
/tags/V0.41/twislave.c |
---|
0,0 → 1,75 |
/*############################################################################ |
Slaveadr = 0x52 = Vorne, 0x54 = Hinten, 0x56 = Rechts, 0x58 = Links |
############################################################################*/ |
#include <avr/io.h> |
#include <util/twi.h> |
#include "main.h" |
unsigned char I2C_RXBuffer; |
unsigned char Byte_Counter=0; |
//############################################################################ |
//I2C (TWI) Interface Init |
void InitIC2_Slave(uint8_t adr) |
//############################################################################ |
{ |
TWAR = adr + (2*MotorAdresse); // Eigene Adresse setzen |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
//############################################################################ |
//ISR, die bei einem Ereignis auf dem Bus ausgelöst wird. Im Register TWSR befindet |
//sich dann ein Statuscode, anhand dessen die Situation festgestellt werden kann. |
ISR (TWI_vect) |
//############################################################################ |
{ |
switch (TWSR & 0xF8) |
{ |
case SR_SLA_ACK: |
TWCR |= (1<<TWINT); |
Byte_Counter=0; |
return; |
// Daten Empfangen |
case SR_PREV_ACK: |
I2C_RXBuffer = TWDR; |
I2C_Timeout = 500; |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_SLA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_DATA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_2: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_1: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
} |
TWCR =(1<<TWEA) | (1<<TWINT) | (1<<TWEN) | (1<<TWIE); // TWI Reset |
} |
/tags/V0.41/twislave.h |
---|
0,0 → 1,32 |
#ifndef _TWI_SLAVE_H_ |
#define _TWI_SLAVE_H_ |
extern unsigned char I2C_RXBuffer; |
extern unsigned char Byte_Counter; |
extern void InitIC2_Slave (uint8_t adr); |
#define TWI_BUS_ERR_1 0x00 |
#define TWI_BUS_ERR_2 0xF8 |
// Status Slave RX Mode |
#define SR_SLA_ACK 0x60 |
#define SR_LOST_ACK 0x68 |
#define SR_GEN_CALL_ACK 0x70 |
#define GEN_LOST_ACK 0x78 |
#define SR_PREV_ACK 0x80 |
#define SR_PREV_NACK 0x88 |
#define GEN_PREV_ACK 0x90 |
#define GEN_PREV_NACK 0x98 |
#define STOP_CONDITION 0xA0 |
#define REPEATED_START 0xA0 |
// Status Slave TX mode |
#define SW_SLA_ACK 0xA8 |
#define SW_LOST_ACK 0xB0 |
#define SW_DATA_ACK 0xB8 |
#define SW_DATA_NACK 0xC0 |
#define SW_LAST_ACK 0xC8 |
#endif |
/tags/V0.41/uart.c |
---|
0,0 → 1,278 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + (c) 01.2007 Holger Buss |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Keine Garantie auf Fehlerfreiheit |
// + Kommerzielle Nutzung nur mit meiner Zustimmung |
// + Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
// + www.mikrocontroller.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
#define MAX_SENDE_BUFF 100 |
#define MAX_EMPFANGS_BUFF 100 |
unsigned volatile char SIO_Sollwert = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned char MeineSlaveAdresse; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
struct str_DebugOut DebugOut; |
int Debug_Timer; |
SIGNAL(INT_VEC_TX) |
{ |
} |
void SendUart(void) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!(UCSRA & 0x40)) return; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
USR |= (1<TXC); |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
#if X3D_SIO == 1 |
static unsigned char serPacketCounter = 100; |
SioTmp = UDR; |
if(SioTmp == 0xF5) // Startzeichen |
{ |
serPacketCounter = 0; |
} |
else |
{ |
if(++serPacketCounter == MotorAdresse) // (1-4) |
{ |
SIO_Sollwert = SioTmp; |
SIO_Timeout = 200; // werte für 200ms gültig |
} |
else |
{ |
if(serPacketCounter > 100) serPacketCounter = 100; |
} |
} |
#else |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; }; |
if(CrcOkay) // Datensatz schon verarbeitet |
{ |
//NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
uart_putchar(RxdBuffer[2]); |
if (RxdBuffer[2] == 't') // Motortest |
{ Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
SIO_Sollwert = MotorTest[MotorAdresse - 1]; |
SIO_Timeout = 500; // werte für 500ms gültig |
} |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
#endif |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); // serieller Empfangsinterrupt |
// TX-Interrupt Freigabe |
// UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR= (SYSCLK / (BAUD_RATE * 8L) -1 ); |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
Debug_Timer = SetDelay(200); |
// Version beim Start ausgeben (nicht schön, aber geht... ) |
uart_putchar ('\n');uart_putchar ('B');uart_putchar ('L');uart_putchar (':'); |
uart_putchar ('V');uart_putchar (0x30 + VERSION_HAUPTVERSION);uart_putchar ('.');uart_putchar (0x30 + VERSION_NEBENVERSION/10); uart_putchar (0x30 + VERSION_NEBENVERSION%10); |
uart_putchar ('\n');uart_putchar('H');uart_putchar('W');uart_putchar (':');uart_putchar('1');uart_putchar('.');uart_putchar ((0x30-10) + HwVersion); |
uart_putchar ('\n');uart_putchar ('A');uart_putchar ('D');uart_putchar ('R'); uart_putchar (':'); uart_putchar (0x30 + MotorAdresse); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen)) // im Singlestep-Betrieb in jedem Schtitt senden |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
Debug_Timer = SetDelay(50); // Sendeintervall |
} |
} |
/tags/V0.41/uart.h |
---|
0,0 → 1,79 |
#ifndef _UART_H |
#define _UART_H |
extern unsigned volatile char SIO_Sollwert; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned char MeineSlaveAdresse; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void SendUart(void); |
extern void DatenUebertragung(void); |
struct str_DebugOut |
{ |
unsigned char Digital[2]; |
unsigned int Analog[8]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
//Die Baud_Rate der Seriellen Schnittstelle |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
#if X3D_SIO == 1 |
#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#else |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
#endif |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega8__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/tags/V0.42/BLMC.c |
---|
0,0 → 1,235 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Copyright (c) 12.2007 Holger Buss |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung oder Nutzung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile unsigned char Phase = 0,ShadowTCCR1A = 0; |
volatile unsigned char CompFreigabeTimer = 100; |
volatile unsigned char CompInterruptFreigabe = 0; |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW2) |
//############################################################################ |
{ |
} |
//############################################################################ |
// + Interruptroutine |
// + Wird durch den Analogkomperator ausgelöst |
// + Dadurch wird das Kommutieren erzeugt |
SIGNAL(SIG_COMPARATOR) |
//############################################################################ |
{ |
unsigned char sense = 0; |
do |
{ |
if(SENSE_H) sense = 1; else sense = 0; |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
if(sense) |
{ |
STEUER_C_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_FALLING_INT; |
SENSE_B; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_L; |
} |
break; |
case 1: |
STEUER_C_L; |
if(!sense) |
{ |
STEUER_B_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_H; |
} |
break; |
case 2: |
STEUER_B_H; |
if(sense) |
{ |
STEUER_A_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_L; |
} |
break; |
case 3: |
STEUER_A_L; |
if(!sense) |
{ |
STEUER_C_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_B; |
SENSE_RISING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_B_H; |
} |
break; |
case 4: |
STEUER_C_H; |
if(sense) |
{ |
STEUER_B_L; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_FALLING_INT; |
Phase++; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_A_L; |
} |
break; |
case 5: |
STEUER_B_L; |
if(!sense) |
{ |
STEUER_A_H; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_RISING_INT; |
Phase = 0; |
CntKommutierungen++; |
} |
else |
{ |
STEUER_C_H; |
} |
break; |
} |
} |
while((SENSE_L && sense) || (SENSE_H && !sense)); |
ZeitZumAdWandeln = 0; |
} |
//############################################################################ |
// |
void Manuell(void) |
//############################################################################ |
{ |
switch(Phase) |
{ |
case 0: |
STEUER_A_H; |
STEUER_B_L; |
SENSE_C; |
SENSE_RISING_INT; |
break; |
case 1: |
STEUER_A_H; |
STEUER_C_L; |
SENSE_B; |
SENSE_FALLING_INT; |
break; |
case 2: |
STEUER_B_H; |
STEUER_C_L; |
SENSE_A; |
SENSE_RISING_INT; |
break; |
case 3: |
STEUER_B_H; |
STEUER_A_L; |
SENSE_C; |
SENSE_FALLING_INT; |
break; |
case 4: |
STEUER_C_H; |
STEUER_A_L; |
SENSE_B; |
SENSE_RISING_INT; |
break; |
case 5: |
STEUER_C_H; |
STEUER_B_L; |
SENSE_A; |
SENSE_FALLING_INT; |
break; |
} |
} |
/tags/V0.42/BLMC.h |
---|
0,0 → 1,97 |
/*############################################################################ |
############################################################################*/ |
#ifndef BLMC_H_ |
#define BLMC_H_ |
extern volatile unsigned char Phase; |
extern volatile unsigned char ShadowTCCR1A; |
extern volatile unsigned char CompInterruptFreigabe; |
void Blc(void); |
void Manuell(void); |
// anselm |
/* |
#define COM1A ((0 << COM1A0) | (1 << COM1A1)) // COM1A-> OC1A non inverting mode |
#define COM1B ((0 << COM1B0) | (1 << COM1B1)) // COM1B-> OC1B non inverting mode |
#define COM2 ((0 << COM20) | (1 << COM21)) // COM2-> OC2 non inverting mode |
#ifdef _32KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> fast PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (1 << WGM21) | (1 << CS20)) // WGM20:21-> fast PWM, no prescale |
#endif |
#ifdef _16KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> phase corr, PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (0 << WGM21) | (1 << CS20)) // WGM20:21-> phase corr. PWM, no prescale |
#endif |
#define PWM_C_ON {TCCR1A = COM1A | WGM1 | COM1B; TCCR2 = WGMCS2; |
DDRB = 0x02;} // Steuer_C+ output |
#define PWM_B_ON {TCCR1A = COM1B | WGM1 | COM1A; TCCR2 = WGMCS2; \ |
DDRB = 0x04;} // Steuer_B+ output |
#define PWM_A_ON {TCCR1A = WGM1; TCCR2 = COM2 | WGMCS2; \ |
DDRB = 0x08;} // Steuer_A+ output |
#define PWM_OFF {TCCR1A = WGM1; \ |
TCCR2 = WGMCS2; \ |
PORTB &= ~0x0E; DDRB = 0x0E;} // OC1x & OC2 disconnected, Steuer_X+ output low |
// anselm |
*/ |
#ifdef _32KHZ |
#define PWM_C_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xAD; TCCR2 = 0x69;DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x0D; TCCR2 = 0x49;PORTC &= ~0x0E;} |
#endif |
#ifdef _16KHZ |
// #define PWM_C_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0A;} |
// #define PWM_B_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0C;} |
// #define PWM_A_ON {TCCR1A = 0xA2; TCCR2 = 0x61; DDRB = 0x08;} |
// #define PWM_C_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0A;} else { TCCR1A = 0x81; DDRB = 0x0E;}} |
// #define PWM_B_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0C;} else { TCCR1A = 0x21; DDRB = 0x0E;}} |
// #define PWM_A_ON {TCCR2 = 0x61; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x08;} else { TCCR1A = 0x01; DDRB = 0x0E;}} |
#define PWM_C_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x02;} |
#define PWM_B_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x04;} |
#define PWM_A_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x08;} |
// #define PWM_C_ON {TCCR1A = 0x82; TCCR2 = 0x41; PORTB &= ~0x04; DDRB = 0x0E;} |
// #define PWM_B_ON {TCCR1A = 0x22; TCCR2 = 0x41; PORTB &= ~0x02; DDRB = 0x0E;} |
// #define PWM_A_ON {TCCR1A = 0x02; TCCR2 = 0x61; PORTB &= ~0x06; DDRB = 0x0E;} |
#define PWM_OFF {OCR1A = 0; OCR1B = 0; OCR2 = 0; TCCR1A = 0x01; TCCR2 = 0x41; DDRB = 0x0E; PORTB &= ~0x0E;} |
#endif |
#define STEUER_A_H {PWM_A_ON} |
#define STEUER_B_H {PWM_B_ON} |
#define STEUER_C_H {PWM_C_ON} |
#define STEUER_A_L {PORTD &= ~0x30; PORTD |= 0x08;} |
#define STEUER_B_L {PORTD &= ~0x28; PORTD |= 0x10;} |
#define STEUER_C_L {PORTD &= ~0x18; PORTD |= 0x20;} |
#define STEUER_OFF {PORTD &= ~0x38; PWM_OFF; } |
#define FETS_OFF {PORTD &= ~0x38; PORTB &= ~0x0E; } |
#define SENSE_A ADMUX = 0 | IntRef; |
#define SENSE_B ADMUX = 1 | IntRef; |
#define SENSE_C ADMUX = 2 | IntRef; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
#define ENABLE_SENSE_INT {CompInterruptFreigabe = 1;ACSR |= 0x0A; } |
#define DISABLE_SENSE_INT {CompInterruptFreigabe = 0; ACSR &= ~0x08; } |
#define SENSE_FALLING_INT ACSR &= ~0x01 |
#define SENSE_RISING_INT ACSR |= 0x03 |
#define SENSE_TOGGLE_INT ACSR &= ~0x03 |
#endif //BLMC_H_ |
/tags/V0.42/BL_Ctrl.pnproj |
---|
0,0 → 1,0 |
<Project name="avr_ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="analog.h"></File><File path="analog.c"></File><File path="PPM_Decode.c"></File><File path="PPM_Decode.h"></File><File path="twislave.c"></File><File path="twislave.h"></File><File path="BLMC.c"></File><File path="BLMC.h"></File></Project> |
/tags/V0.42/BL_Ctrl.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="avr_ctrl" x="true"></e></ViewState></pd> |
/tags/V0.42/Hex-Files/BL-Ctrl_V1_0/BootLoader_MEGA8_8MHZ_V0_2.hex |
---|
0,0 → 1,53 |
:101C000011241FBECFE5D4E0DEBFCDBF10E0A0E6BB |
:101C1000B0E0E0E3FFE102C005900D92A036B1070D |
:101C2000D9F710E0A0E6B0E001C01D92A23AB107DA |
:101C3000E1F714C000C008955D9BFECF8CB90895F4 |
:101C40005F9BFECF8CB1992708958DE4F5DF8BE47F |
:101C5000F3DF82E4F1DF8CE4EFDF0895CFE5D4E039 |
:101C6000DEBFCDBFE0E0F0E004917F01992481B7B1 |
:101C7000885081BF90BC80E189B9599A88E18AB9BE |
:101C800086E880BDEF01192D5F9B0BC0113029F450 |
:101C90008CB18A3A49F110E004C08CB18B3109F45F |
:101CA00011E0CE01219684369105C8F00F3F41F036 |
:101CB000002331F0E0916000F091610009950FC0C0 |
:101CC0008AE0BADF8DE0B8DF86E5B6DF80E3B4DF17 |
:101CD0008EE2B2DF82E3B0DF8AE3AEDF05C080E2EE |
:101CE0009EE40197F1F7D0CFB0DFAADF813611F47F |
:101CF00089E51CC1813461F4A3DFE82EFF24FE2CAA |
:101D0000EE249EDF9927E82AF92AF694E794E1C0A9 |
:101D1000823631F489E590DF80E08EDF80E406C111 |
:101D2000823409F070C08CDF8BDFD82E89DF082F5A |
:101D3000B2E6AB2EB0E0BB2E10E0E5010894A11C8A |
:101D4000B11C1D1510F47CDF01C08FEF88831F5F6D |
:101D5000103498F336E7931609F0C9C0063409F039 |
:101D60003CC08FEFE8168BE1F80608F033C0CD2DAC |
:101D7000A70166277727440F551F661F771F6A0143 |
:101D80007B01A2E6B0E011E08D9199272D913327D8 |
:101D9000322F2227822B932B0C01FA01109357002C |
:101DA000E89511244E5F5F4F6F4F7F4FC25061F730 |
:101DB00085E0F60180935700E89507B600FCFDCF5B |
:101DC00081E180935700E8957695679557954795FB |
:101DD0007A017FC080E030DF7CC0053409F079C033 |
:101DE000F7012D2DA2E6B0E0EEBB8F2F99278FBB18 |
:101DF0008D918DBB3196E29AE19AE199FECF215007 |
:101E000099F77F0166C08736B9F51ADF19DFC82F49 |
:101E100017DF863409F5C701AA27BB276C017D01AE |
:101E2000CC0CDD1CEE1CFF1CF60105911491802FDB |
:101E300003DF812F992700DF82E090E0A0E0B0E08F |
:101E4000C80ED91EEA1EFB1EC25071F7F694E79425 |
:101E5000D794C794760149CF853409F046CFEEBABE |
:101E60008F2D99278FBBE09A0894E11CF11C8DB34C |
:101E7000E3DEC150A1F739CF853601F596E7991613 |
:101E800041F580E090E0A0E0B0E023E0FC01209389 |
:101E90005700E89507B600FCFDCF805C9F4FAF4F21 |
:101EA000BF4F8F3F3BE1930730E0A30730E0B3071C |
:101EB00068F381E180935700E8950BC0853459F4AD |
:101EC00088E190E02CE00FB6F894A89581BD0FBE94 |
:101ED00021BD8DE02BC08035E1F38C34D1F3803708 |
:101EE00011F483E523C0843721F486E7A5DE80E082 |
:101EF0001DC0843519F4A4DE982EEBCF8B3109F484 |
:101F0000F3CE8A3A09F4F0CE863521F480E394DEEC |
:101F100082E30CC0833731F487E08EDE83E98CDE08 |
:101F20008EE104C08B3109F4E0CE8FE385DEDDCE97 |
:0400000300001C00DD |
:00000001FF |
/tags/V0.42/Hex-Files/BL-Ctrl_V1_0/Fuses_Mega8_8MHZ_Intern_MIT_Bootloader.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.42/Hex-Files/BL-Ctrl_V1_0/Fuses_Mega8_8MHZ_Intern_OHNE_Bootloader.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.42/Hex-Files/BL-Ctrl_V1_0/SET_BrushLess-Ctrl_V0_41_Adr_1-12_10A.zip |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.42/Hex-Files/BL-Ctrl_V1_0/SET_BrushLess-Ctrl_V0_42_Adr_1-12_6A.zip |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.42/Hex-Files/BL-Ctrl_V1_0/Test_Manuell_BL-Ctrl_V0_32.hex |
---|
0,0 → 1,330 |
:1000000012C0B9C62AC029C022C721C626C025C031 |
:100010000DC650C522C079C320C0CDC21EC01DC0B0 |
:1000200020C7C0C61AC011241FBECFE5D4E0DEBF72 |
:10003000CDBF10E0A0E6B0E0E6E7F4E102C0059035 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92AF39B107E1F736C1D2CF20918300AD |
:1000600080916200821710F4282FAB9A8091810052 |
:1000700090918200893C910560F01BBC1ABC19BCB0 |
:1000800018BC13BCAB9A01979093820080938100B7 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F9CE221 |
:1000E000A92E91E0B92EC12CD12C1092A3004398D7 |
:1000F00085E090E09093840080938300AFDFB6D7D3 |
:1001000088EC90E039D5C12FDD27D0938400C093CF |
:100110008300EE24FF248701EA14FB040C051D056F |
:1001200078F480916700882311F44FD201C0A8D4DD |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E072D9A21ABC |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D10428F489E1A82EBC |
:10017000B12CC12CD12C7AD78091A5008F5F8093B0 |
:10018000A5008091A50066E034D99093A50005D51F |
:10019000D0938400C093830061DF449BBACF82B3C5 |
:1001A00090E8892782BBB5CF80917B0090917C003D |
:1001B000892B09F04EC04091790050917A00411589 |
:1001C000510571F090918E008FEF989FC00111241E |
:1001D00068EC70E01AD9709386006093850041C086 |
:1001E00080919A00882341F120919C0030919D00DC |
:1001F00081E02D32380708F09A01293C310510F0D2 |
:1002000028EC30E02B30310528F4509386004093E1 |
:10021000850026C08CEF90E0289FA001299F500DFB |
:10022000389F500D1124CA01885D994064EB70E03D |
:10023000ECD8CB01039610C0809185009091860088 |
:10024000009729F001979093860080938500AB9AE0 |
:1002500008C080919403992790938600809385002D |
:10026000AB9880918500909186008F3F910539F081 |
:1002700030F08FEF90E0909386008093850080911E |
:100280008500992708958091810090918200909334 |
:1002900084038093830380917F0099279093860342 |
:1002A00080938503809170009091710090938803F2 |
:1002B0008093870380919C0090919D0090938A0386 |
:1002C000809389030895CFE5D4E0DEBFCDBF00E081 |
:1002D00088E084BB85BB8AEB81BB80E882BB8EE073 |
:1002E00087BB81E388BB88B3806C88BBB69B06C0A4 |
:1002F000B79B02C081E007C082E005C0B79B02C087 |
:1003000083E001C084E08093600087D318D47894A0 |
:10031000C0E0D0E0809160009927C817D90709F4A0 |
:10032000979A86E990E028D497988AEF90E024D4B1 |
:100330002196C530D10574F384EF91E01DD4B3DE6E |
:1003400080E528D566D485E690E002D486E690E084 |
:10035000FFD387E690E0FCD3EC018EEF90E0F8D37A |
:100360005C018DEE93E0F4D37C018EEE93E0F0D34C |
:100370006C01CE01F6D38823E1F3979A10928400A2 |
:10038000109283006BDE88E080BF11E017B98AE02D |
:1003900090E0DED3EC0181E090E0909386038093BF |
:1003A000850310929D0010929C00812F8DDEFCDE53 |
:1003B000992790938400809383008091A5008017F3 |
:1003C00051F0109263001092640082E390E0C0D379 |
:1003D000EC010091A5008091830090918400892B0D |
:1003E000C9F41092740010926400C401BAD3882337 |
:1003F000E1F01092A300439881E08093630082B300 |
:10040000877C82BB82E08FBD81E485BD85B3817F1F |
:1004100085BB0BC080916300882319F081E0809335 |
:1004200074008CED95E094D34C0180916300882397 |
:1004300021F0109284001092830010DE80916400FD |
:100440008F5F80936400813009F0B1CF80916300A9 |
:100450008111979AC50185D3882339F182E390E011 |
:1004600077D35C0180917F00482F55272091810030 |
:10047000309182004217530710F48F5F04C0241795 |
:10048000350718F4815080937F0080917F00909110 |
:100490006200893728F0915090936200AB9A05C0B2 |
:1004A0009F3F19F09F5F90936200C7015AD3882342 |
:1004B00019F18AE090E04CD37C01209172003091D8 |
:1004C0007300C901880F991F880F991F820F931F0E |
:1004D000820F931F66E070E098D77093710060936D |
:1004E0007000109273001092720080919A0088231D |
:1004F00019F481E080936100C60133D3882321F091 |
:100500008CED95E025D36C01CE012BD3882331F0FF |
:100510008091700090917100892B29F08091740076 |
:10052000882309F444CF11E0109363001092A300D4 |
:10053000439884E690E00CD3EC018091740088230A |
:1005400009F435CFAB98109274008AE0BDDD979A1C |
:10055000109263008091A50081508093A50081E0F6 |
:1005600090E0909384008093830078DD88B18C7F45 |
:1005700088B91093A30088B18A6088B984E690E0B6 |
:10058000E7D2EC01CE01EDD28823E1F38AE090E0DE |
:10059000909384008093830061DD88EC90E0D8D252 |
:1005A000EC01CE01DED28823E1F382E390E0D0D2E9 |
:1005B0007C0107E0FCCE1F920F920FB60F92112420 |
:1005C0000F900FBE0F901F9018955E9B24C08091D6 |
:1005D00067008823E1F480918F009091900001964C |
:1005E0009093900080938F00FC01E955FD4FE081CE |
:1005F000ED3019F08436910539F410929000109284 |
:100600008F0081E080936700589AECB908951092AA |
:10061000900010928F0008951F93CF93DF93EC0109 |
:1006200010E0662309F460C0A22FBB271297E42FC5 |
:10063000FF27E35FFC4F30813D534F5FE42FFF27DF |
:10064000E35FFC4F50815D534F5FE42FFF27E35F73 |
:10065000FC4F70817D534F5FE42FFF27E35FFC4F1A |
:10066000E081ED534F5F842F9927A817B907E4F174 |
:10067000832F9927880F991F880F991F352F32953F |
:100680003F70382B852F99278F70907054E0880F1A |
:10069000991F5A95E1F7572F56955695582B872F46 |
:1006A00099278370907026E0880F991F2A95E1F7AB |
:1006B0008E2B61506F3FC1F0FE01E10FF11D3083C1 |
:1006C0001F5F61506F3F81F0FE01E10FF11D50830C |
:1006D0001F5F61506F3F41F0FE01E10FF11D80830C |
:1006E0001F5F662309F0A3CFDF91CF911F9108957B |
:1006F000CF93C82F8A3011F48DE0FADF5D9BFECFD7 |
:10070000CCB980E090E0CF9108951F920F920FB680 |
:100710000F9211242F933F934F935F936F937F9387 |
:100720008F939F93AF93BF93CF93DF93EF93FF93F9 |
:100730008CB180938D0040919500443610F010925A |
:10074000960050918D005D3009F064C08091960054 |
:10075000823009F05FC010929600A42FBB27A35FE0 |
:10076000BC4FFD0132978081209191003091920021 |
:10077000281B3109ED0121978881281B3109C90106 |
:100780009F70909392008093910066E09695879574 |
:100790006A95E1F7982F935C909393002F733070D4 |
:1007A000235C209394008081981709F082C088818F |
:1007B000281709F07EC0409387005C9380910F0357 |
:1007C000823549F488E190E02CE00FB6F894A895C2 |
:1007D00081BD0FBE21BD80910F038ADF80910F0381 |
:1007E000843709F066C02091870043E064E088E820 |
:1007F00090E012DF80916000E82FFF27E957FF4F5C |
:10080000808180938E0084EF91E090937A008093B2 |
:1008100079004FC020919600822F99278130910551 |
:10082000F9F0823091051CF4892B21F040C0029729 |
:1008300011F13DC080918D00833239F480918C009C |
:10084000882319F481E08093960080918D00809335 |
:100850000D0381E08093950080918D00992722C03F |
:100860002F5F20939600E42FFF27E35FFC4F8091DA |
:100870008D00808309C0E42FFF27E35FFC4F809148 |
:100880008D008083443620F44F5F4093950002C072 |
:100890001092960020918D0080919100909192008D |
:1008A000820F911D909392008093910002C010924C |
:1008B0009600FF91EF91DF91CF91BF91AF919F9102 |
:1008C0008F917F916F915F914F913F912F910F90F9 |
:1008D0000FBE0F901F901895AC01A0E0B0E09D01F5 |
:1008E000A817B90748F4E7EAF2E08191280F311D13 |
:1008F0001196A417B507C8F33F70FD01E955FD4FE8 |
:10090000C90176E0969587957A95E1F7835C8083B7 |
:100910001196FD01E955FD4F2F733070822F835CD6 |
:100920008083A855BD4F8DE08C9310926700809115 |
:10093000A7028CB908951F93CF93DF93382FEA0154 |
:10094000722F10E083E28093A7026093A802309395 |
:10095000A902A3E0B0E0772309F458C0772311F48B |
:10096000972F07C0FE01E10FF11D1F5F90817150AD |
:1009700011F4472F0EC0FE01E10FF11D1F5F4081F2 |
:10098000715039F0FE01E10FF11D1F5F6081715060 |
:1009900001C0672FFD01E955FD4F892F869586958A |
:1009A000835C80831196FD01E955FD4F892F9927BE |
:1009B0008370907024E0880F991F2A95E1F75527DE |
:1009C0009A0194E0369527959A95E1F7822B835CFE |
:1009D00080831196FD01E955FD4F4F705070440F13 |
:1009E000551F440F551F862F992726E0969587950A |
:1009F0002A95E1F7842B835C80831196FD01E955EC |
:100A0000FD4F6F73635C60831196A5CFCD0164DFEA |
:100A1000DF91CF911F910895089588E18AB9599A7D |
:100A2000579A80E189B960E070E088E793E084D369 |
:100A300088EC90E08DD090930C0380930B038AE0B8 |
:100A400057DE82E455DE8CE453DE8AE351DE86E530 |
:100A50004FDE80E34DDE8EE24BDE83E349DE82E350 |
:100A600047DE8AE045DE81E443DE84E441DE82E560 |
:100A70003FDE8AE33DDE80916000805D39DE0895CF |
:100A800080910B0390910C036CD0882391F080919E |
:100A90006700882371F022E241E753E06091A602EB |
:100AA00084E449DF82E390E053D090930C03809379 |
:100AB0000B0308951F920F920FB60F9211248F937C |
:100AC0009F93809193038F5F80939303809199000C |
:100AD0008150809399008F3F59F583E0809399006E |
:100AE0008091970090919800019690939800809340 |
:100AF000970080917B0090917C00009729F00197EE |
:100B000090937C0080937B0080919A00882329F049 |
:100B100080919A00815080939A0080917900909101 |
:100B20007A00009729F0019790937A0080937900DA |
:100B30009F918F910F900FBE0F901F90189582E09C |
:100B400083BF89B7816089BF89B7806489BF0895F1 |
:100B50002091970030919800280F391FC901019703 |
:100B600008952091970030919800821B930B892F54 |
:100B70009927807899270895CF93DF93E9DFEC01D7 |
:100B8000CE01EFDF8823E1F3DF91CF91089586EA6C |
:100B900086B987E087B9369A089527B196E097B964 |
:100BA00010BE83ED86B9349A97B9369A349BFECF3E |
:100BB00027B944B155B1440F551F440F551F493C47 |
:100BC000510510F048EC50E02091810030918200F6 |
:100BD000C90163E0880F991F6A95E1F7821B930BA7 |
:100BE000840F951F23E0969587952A95E1F79093BA |
:100BF00082008093810020918000332728173907D5 |
:100C000020F4809181008093800016B888E080BF36 |
:100C100008958EB5806C8EBD8EB580648EBD89B70B |
:100C2000806289BF89B7846089BF08951F920F923F |
:100C30000FB60F9211248F9380919B008F5F80934A |
:100C40009B008F910F900FBE0F901F9018951F92D1 |
:100C50000F920FB60F9211242F933F938F939F9370 |
:100C60000EB406FE0FC010929B0086B597B5909308 |
:100C70009F0080939E008EB58F7B8EBD84E680930F |
:100C80009A0070C08EB580648EBD26B537B5809150 |
:100C90009E0090919F00281B390B80919B00992703 |
:100CA000982F8827990F280F391F689414F83695C4 |
:100CB00027951694E1F73093A1002093A0002851C6 |
:100CC000314030F488E191E09093A1008093A0003E |
:100CD0002091A0003091A100285131403093A10013 |
:100CE0002093A00080919C0090919D008217930713 |
:100CF00030F480919C0090919D0001960CC08091F1 |
:100D00009C0090919D002817390748F480919C0021 |
:100D100090919D00019790939D0080939C0020915D |
:100D20009C0030919D00C901880F991F880F991F61 |
:100D3000880F991F821B930B2091A0003091A10076 |
:100D4000820F931F23E0969587952A95E1F790935C |
:100D5000A1008093A00090939D0080939C0081E06F |
:100D6000809361009F918F913F912F910F900FBEC3 |
:100D70000F901F9018951F920F920FB60F9211248B |
:100D80008F938AB78F7B8ABF8F910F900FBE0F9082 |
:100D90001F90189590916000990F980F92B985EC6B |
:100DA00086BF08951F920F920FB60F9211248F9352 |
:100DB0009F9381B19927887F907080389105E9F0E1 |
:100DC0008138910534F40097B1F18036910579F0BE |
:100DD00035C0883B9105D9F0893B910524F4883AC8 |
:100DE0009105A9F02BC0883F910511F127C086B766 |
:100DF000806886BF1092A20023C083B180939403C1 |
:100E000084EF91E090937C0080937B000EC09091E2 |
:100E1000A200992339F480917F0083B99F5F90935A |
:100E2000A20003C08091620083B986B7806807C0C2 |
:100E300086B7806986BF86B7806986BF85EC86BF26 |
:100E40009F918F910F900FBE0F901F9018951F923A |
:100E50000F920FB60F9211240F900FBE0F901F909C |
:100E600018951F920F920FB60F9211241F932F9374 |
:100E70003F934F935F936F937F938F939F93AF9322 |
:100E8000BF93CF93EF93FF93459B02C011E001C046 |
:100E900010E08091A50099278230910509F450C097 |
:100EA000833091052CF4009779F0019739F1BFC098 |
:100EB0008430910509F478C0843091050CF45AC04F |
:100EC000059709F48BC0B3C082EA8FBD81E685BD6A |
:100ED00088E087BB112369F082B3877E82BB959A35 |
:100EE000C1E0C4BD80916100811157DE4098C7B94F |
:100EF0001BC082B3877D82BB949A99C082B3877EE0 |
:100F000082BB959A1123B1F482EA8FBD81E485BD3D |
:100F10008CE087BB81E084BD8091610081113DDE62 |
:100F200017B988B1836088B98091A5008F5F8093DD |
:100F3000A5006DC082EA8FBD81E685BD88E076C0E0 |
:100F400082EA8FBD81E485BD8CE087BB112369F007 |
:100F500082B38F7C82BB939A81E084BD80916100D3 |
:100F600081111BDE82E087B932C082B3877E82BBEB |
:100F7000959A5DC082B38F7C82BB939A112371F4E2 |
:100F800082EA8FBD81E485BD8AE087BBC1E0C4BD34 |
:100F900080916100811101DEC7B9C3CF82EA8FBDA4 |
:100FA00081E485BD8CE042C082EA8FBD81E485BDCD |
:100FB0008AE087BB112369F082B3877D82BB949A54 |
:100FC00081E084BD809161008111E7DD17B8409810 |
:100FD000ABCF82B38F7C82BB939A29C082B3877DCB |
:100FE00082BB949A1123E9F482EA8FBD81E685BD24 |
:100FF00088E087BB81E084BD809161008111CDDDF7 |
:1010000082E087B988B1836088B91093A500809188 |
:101010007200909173000196909373008093720018 |
:1010200006C082EA8FBD81E485BD8AE087BB459911 |
:1010300003C0112309F028CF459B03C0112309F4F5 |
:1010400023CF10926100FF91EF91CF91BF91AF91AB |
:101050009F918F917F916F915F914F913F912F91D0 |
:101060001F910F900FBE0F901F9018958091A500B3 |
:1010700099278230910551F1833091052CF4009726 |
:1010800069F00197B9F0089584309105E1F1843059 |
:1010900091055CF1059709F443C0089582EA8FBD7C |
:1010A00081E685BD88E087BB82B3877D82BB949A49 |
:1010B00082E034C082EA8FBD81E685BD88E087BBCF |
:1010C00082B3877E82BB959A81E01AC082EA8FBD87 |
:1010D00081E485BD8CE087BB82B3877E82BB959A15 |
:1010E00017B888B1836088B9089582EA8FBD81E41A |
:1010F00085BD8CE087BB82B38F7C82BB939A82E0F4 |
:1011000087B94098089582EA8FBD81E485BD8AE061 |
:1011100087BB82B38F7C82BB939A81E087B9E1CF92 |
:1011200082EA8FBD81E485BD8AE087BB82B3877D7B |
:1011300082BB949A17B8E5CF0F931F93CF93DF9399 |
:101140008C01EB01009711F4672BB9F16EE070E0B0 |
:1011500081E090E037D0FC01892B71F180E8838336 |
:10116000209771F0D387C28781E8838380919503AC |
:1011700090919603892B21F4F0939603E0939503C5 |
:1011800001151105C9F0118700878381826083836F |
:101190008091970390919803892B71F4F0939803B1 |
:1011A000E09397038091990390919A03892B21F4FE |
:1011B000F0939A03E0939903CF01DF91CF911F91B0 |
:1011C0000F9108950F931F93CF93DF93869F800114 |
:1011D000879F100D969F100D1124C8010DD0EC01B2 |
:1011E000009721F0A80160E070E0FCD0CE01DF9113 |
:1011F000CF911F910F910895CF93DF93AC01029788 |
:1012000010F442E050E020E030E0A0919D03B09166 |
:101210009E03BD01F901109709F44CC08D919C917A |
:1012200011978417950731F14817590738F421159C |
:10123000310519F08217930708F49C01FD01A28182 |
:10124000B381109759F721153105A1F1C901841B0C |
:10125000950B049708F4A901DB01E0E0F0E010979A |
:1012600049F18D919C91119782179307F9F44217D8 |
:10127000530779F4ED018A819B81309719F09383AC |
:10128000828304C090939E0380939D03CD010296B8 |
:101290004AC0241B350BFD01E20FF31F419351930C |
:1012A000225030402D933C93CF013DC0FD01A281DF |
:1012B000B381D5CF80919B0390919C03892B41F4FE |
:1012C00080916B0090916C0090939C0380939B03A2 |
:1012D000E0916900F0916A00309741F4EDB7FEB7F4 |
:1012E00080916D0090916E00E81BF90BA0919B031B |
:1012F000B0919C039F012A1B3B0B2417350788F0F4 |
:10130000CA0102962817390760F0CD01840F951F96 |
:10131000029690939C0380939B034D935D93CD0124 |
:1013200002C080E090E0DF91CF910895CF93DF93EA |
:10133000009709F454C0DC011297ED011B821A8258 |
:1013400080919D0390919E03009721F1FC0140E064 |
:1013500050E0EA17FB0718F1ED01FB83EA832D91BA |
:101360003C911197C20FD31FCE0102968E179F0793 |
:1013700071F48A819B81280F391F2E5F3F4F119690 |
:101380003C932E9382819381FD0193838283411547 |
:10139000510559F4B0939E03A0939D0320C0AF0163 |
:1013A0000280F381E02D3097A1F6EA01BB83AA8386 |
:1013B000CA01029628813981820F931F8A179B07E1 |
:1013C00071F48D919C911197280F391F2E5F3F4F1B |
:1013D00039832883FD01828193819B838A83DF91F6 |
:1013E000CF910895DC0101C06D9341505040E0F76A |
:1013F0000895991B79E004C0991F961708F0961B71 |
:10140000881F7A95C9F780950895AA1BBB1B51E1E7 |
:1014100007C0AA1FBB1FA617B70710F0A61BB70B64 |
:10142000881F991F5A95A9F780959095BC01CD0109 |
:101430000895A1E21A2EAA1BBB1BFD010DC0AA1F15 |
:10144000BB1FEE1FFF1FA217B307E407F50720F02D |
:10145000A21BB30BE40BF50B661F771F881F991FA8 |
:101460001A9469F760957095809590959B01AC01F1 |
:06147000BD01CF0108954B |
:101476000101FF01010A00016400009F0320000032 |
:00000001FF |
/tags/V0.42/Hex-Files/BL-Ctrl_V1_0/Test_Schub_BrushLess-Ctrl_V0_32.hex |
---|
0,0 → 1,333 |
:1000000012C0D3C62AC029C03CC73BC626C025C0E3 |
:1000100027C66AC522C093C320C0E7C21EC01DC048 |
:100020003AC7DAC61AC011241FBECFE5D4E0DEBF3E |
:10003000CDBF10E0A0E6B0E0EAEAF4E102C005902E |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92AF39B107E1F731C1D2CF20918300B2 |
:1000600080916200821710F4282FAB9A8091810052 |
:1000700090918200893C910560F01BBC1ABC19BCB0 |
:1000800018BC13BCAB9A01979093820080938100B7 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C1092A3004398E9 |
:1000F00085E090E09093840080938300AFDFD0D7B9 |
:1001000088EC90E053D5C12FDD27D0938400C093B5 |
:100110008300EE24FF248701EA14FB040C051D056F |
:1001200078F480916700882311F469D201C0C2D4A9 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E08CD9A21AA2 |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F099D78091DF |
:10017000A5008F5F8093A5008091A50066E053D90C |
:100180009093A50024D5D0938400C093830066DFAC |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089580917B0090917C00892B09F08D |
:1001C00043C04091790050917A004115510571F07A |
:1001D00090918E008FEF989FC001112468EC70E021 |
:1001E0002ED9709386006093850036C080919A0066 |
:1001F000882341F120919C0030919D0081E02D32B7 |
:10020000380708F09A01293C310510F028EC30E05D |
:100210002B30310528F450938600409385001BC095 |
:100220008CEF90E0289FA001299F500D389F500D22 |
:100230001124CA01885D994064EB70E000D9CB01BC |
:10024000039605C0AB9A08C08091940399279093B8 |
:10025000860080938500AB98809185009091860000 |
:100260008F3F910539F030F08FEF90E0909386004A |
:100270008093850080918500992708958091810061 |
:1002800090918200909384038093830380917F00F8 |
:1002900099279093860380938503809170009091B5 |
:1002A0007100909388038093870380919C009091C4 |
:1002B0009D0090938A03809389030895CFE5D4E04D |
:1002C000DEBFCDBFCC2488E084BB85BB8AEB81BB7D |
:1002D00080E882BB8EE087BB81E388BB88B3806CFB |
:1002E00088BBB69B06C0B79B02C081E007C082E016 |
:1002F00005C0B79B02C083E001C084E0809360002A |
:10030000A6D337D47894C0E0D0E0809160009927DC |
:10031000C817D90709F4979A86E990E047D49798C7 |
:100320008AEF90E043D42196C530D10574F3C5E03F |
:10033000D0E084EF91E03AD4B6DE80E545D583D4B1 |
:1003400085E690E01FD486E690E01CD487E690E036 |
:1003500019D48C018EEF90E015D44C018DEE93E012 |
:1003600011D47C018EEE93E00DD45C01C80113D44E |
:100370008823E1F3979A10928400109283006EDE36 |
:1003800088E080BF81E087B98AE090E0FBD38C01F0 |
:1003900081E090E0909386038093850310929D0006 |
:1003A00010929C008091A5008C1551F01092630072 |
:1003B0001092640082E390E0E5D38C01C090A50028 |
:1003C0008091830090918400892BC9F4109274006D |
:1003D00010926400C301DFD38823E1F01092A300E0 |
:1003E000439881E08093630082B3877C82BB82E084 |
:1003F0008FBD81E485BD85B3817F85BB0BC08091B6 |
:100400006300882319F081E0809374008CED95E0FF |
:10041000B9D33C0123DE809164008F5F8093640038 |
:10042000813009F0BFCF809163008111979AC40198 |
:10043000B2D3882339F182E390E0A4D34C018091B8 |
:100440007F00482F5527209181003091820042176C |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937F0080917F0090916200893728F00F |
:10047000915090936200AB9A05C09F3F19F09F5F27 |
:1004800090936200C70187D3882319F18AE090E036 |
:1004900079D37C012091720030917300C901880FDB |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E0C5D770937100609370001092730064 |
:1004C0001092720080919A00882319F481E0809341 |
:1004D0006100C50160D3882379F18CED95E052D39A |
:1004E0005C01C230D105A9F0C330D10534F42097A6 |
:1004F00051F0C130D10551F01DC0C330D10561F0BC |
:10050000249791F017C082E390E008C082E890E061 |
:1005100005C08CE390E002C08CE890E090938400EA |
:1005200080938300219608C086E990E09093840030 |
:1005300080938300C0E0D0E0C8012DD3882331F040 |
:100540008091700090917100892B29F08091740046 |
:10055000882309F427CF21E0D22ED0926300109295 |
:10056000A300439884E690E00DD38C018091740041 |
:10057000882309F417CFAB98109274008AE0A4DDA9 |
:10058000979A109263008091A50081508093A500F6 |
:1005900081E090E090938400809383005FDD88B1D8 |
:1005A0008C7F88B9D092A30088B18A6088B984E62C |
:1005B00090E0E8D28C01C801EED28823E1F38AE012 |
:1005C00090E0909384008093830048DD88EC90E075 |
:1005D000D9D28C01C801DFD28823E1F382E390E015 |
:1005E000D1D27C0197E0C92EDDCE1F920F920FB6BB |
:1005F0000F9211240F900FBE0F901F9018955E9BC5 |
:1006000024C0809167008823E1F480918F0090914D |
:10061000900001969093900080938F00FC01E95523 |
:10062000FD4FE081ED3019F08436910539F41092D8 |
:10063000900010928F0081E080936700589AECB987 |
:1006400008951092900010928F0008951F93CF93F9 |
:10065000DF93EC0110E0662309F460C0A22FBB27F2 |
:100660001297E42FFF27E35FFC4F30813D534F5F2C |
:10067000E42FFF27E35FFC4F50815D534F5FE42F72 |
:10068000FF27E35FFC4F70817D534F5FE42FFF270F |
:10069000E35FFC4FE081ED534F5F842F9927A8174C |
:1006A000B907E4F1832F9927880F991F880F991FA5 |
:1006B000352F32953F70382B852F99278F7090708A |
:1006C00054E0880F991F5A95E1F7572F5695569584 |
:1006D000582B872F99278370907026E0880F991FD9 |
:1006E0002A95E1F78E2B61506F3FC1F0FE01E10FBB |
:1006F000F11D30831F5F61506F3F81F0FE01E10FFC |
:10070000F11D50831F5F61506F3F41F0FE01E10F0B |
:10071000F11D80831F5F662309F0A3CFDF91CF9186 |
:100720001F910895CF93C82F8A3011F48DE0FADF1E |
:100730005D9BFECFCCB980E090E0CF9108951F92F1 |
:100740000F920FB60F9211242F933F934F935F9305 |
:100750006F937F938F939F93AF93BF93CF93DF93C9 |
:10076000EF93FF938CB180938D00409195004436B8 |
:1007700010F01092960050918D005D3009F064C029 |
:1007800080919600823009F05FC010929600A42FED |
:10079000BB27A35FBC4FFD01329780812091910060 |
:1007A00030919200281B3109ED0121978881281B87 |
:1007B0003109C9019F70909392008093910066E087 |
:1007C000969587956A95E1F7982F935C909393009F |
:1007D0002F733070235C209394008081981709F068 |
:1007E00082C08881281709F07EC0409387005C93FF |
:1007F00080910F03823549F488E190E02CE00FB638 |
:10080000F894A89581BD0FBE21BD80910F038ADFAA |
:1008100080910F03843709F066C02091870043E080 |
:1008200064E088E890E012DF80916000E82FFF2705 |
:10083000E957FF4F808180938E0084EF91E0909381 |
:100840007A00809379004FC020919600822F9927DB |
:1008500081309105F9F0823091051CF4892B21F04B |
:1008600040C0029711F13DC080918D00833239F470 |
:1008700080918C00882319F481E080939600809108 |
:100880008D0080930D0381E08093950080918D0011 |
:10089000992722C02F5F20939600E42FFF27E35F64 |
:1008A000FC4F80918D00808309C0E42FFF27E35F18 |
:1008B000FC4F80918D008083443620F44F5F40933D |
:1008C000950002C01092960020918D0080919100B9 |
:1008D00090919200820F911D9093920080939100CD |
:1008E00002C010929600FF91EF91DF91CF91BF91DE |
:1008F000AF919F918F917F916F915F914F913F91B8 |
:100900002F910F900FBE0F901F901895AC01A0E093 |
:10091000B0E09D01A817B90748F4E7EAF2E0819139 |
:10092000280F311D1196A417B507C8F33F70FD01BC |
:10093000E955FD4FC90176E0969587957A95E1F7DF |
:10094000835C80831196FD01E955FD4F2F73307054 |
:10095000822F835C8083A855BD4F8DE08C931092CD |
:1009600067008091A7028CB908951F93CF93DF93FE |
:10097000382FEA01722F10E083E28093A702609380 |
:10098000A8023093A902A3E0B0E0772309F458C08D |
:10099000772311F4972F07C0FE01E10FF11D1F5FB0 |
:1009A0009081715011F4472F0EC0FE01E10FF11D2F |
:1009B0001F5F4081715039F0FE01E10FF11D1F5F93 |
:1009C0006081715001C0672FFD01E955FD4F892FEE |
:1009D00086958695835C80831196FD01E955FD4FD0 |
:1009E000892F99278370907024E0880F991F2A958A |
:1009F000E1F755279A0194E0369527959A95E1F706 |
:100A0000822B835C80831196FD01E955FD4F4F7069 |
:100A10005070440F551F440F551F862F992726E00D |
:100A2000969587952A95E1F7842B835C80831196B0 |
:100A3000FD01E955FD4F6F73635C60831196A5CF8F |
:100A4000CD0164DFDF91CF911F910895089588E172 |
:100A50008AB9599A579A80E189B960E070E082E9D1 |
:100A600093E084D388EC90E08DD090930C03809336 |
:100A70000B038AE057DE82E455DE8CE453DE8AE322 |
:100A800051DE86E54FDE80E34DDE8EE24BDE83E312 |
:100A900049DE82E347DE8AE045DE81E443DE84E42A |
:100AA00041DE82E53FDE8AE33DDE80916000805DCD |
:100AB00039DE089580910B0390910C036CD088234C |
:100AC00091F080916700882371F022E241E753E0C2 |
:100AD0006091A60284E449DF82E390E053D09093D2 |
:100AE0000C0380930B0308951F920F920FB60F9281 |
:100AF00011248F939F93809193038F5F809393032F |
:100B0000809199008150809399008F3F59F583E03F |
:100B1000809399008091970090919800019690930E |
:100B200098008093970080917B0090917C000097C3 |
:100B300029F0019790937C0080937B0080919A002C |
:100B4000882329F080919A00815080939A008091A7 |
:100B5000790090917A00009729F0019790937A009C |
:100B6000809379009F918F910F900FBE0F901F90EF |
:100B7000189582E083BF89B7816089BF89B7806497 |
:100B800089BF08952091970030919800280F391F50 |
:100B9000C901019708952091970030919800821B18 |
:100BA000930B892F9927807899270895CF93DF9306 |
:100BB000E9DFEC01CE01EFDF8823E1F3DF91CF9194 |
:100BC000089586EA86B987E087B9369A089527B1ED |
:100BD00096E097B910BE83ED86B9349A97B9369AE4 |
:100BE000349BFECF27B944B155B1440F551F440F74 |
:100BF000551F493C510510F048EC50E02091810010 |
:100C000030918200C90163E0880F991F6A95E1F76E |
:100C1000821B930B840F951F23E0969587952A9549 |
:100C2000E1F7909382008093810020918000332728 |
:100C30002817390720F4809181008093800016B82E |
:100C400088E080BF08958EB5806C8EBD8EB58064BF |
:100C50008EBD89B7806289BF89B7846089BF0895D6 |
:100C60001F920F920FB60F9211248F9380919B00C9 |
:100C70008F5F80939B008F910F900FBE0F901F90FE |
:100C800018951F920F920FB60F9211242F933F9336 |
:100C90008F939F930EB406FE0FC010929B0086B5F3 |
:100CA00097B590939F0080939E008EB58F7B8EBDED |
:100CB00084E680939A0070C08EB580648EBD26B5A0 |
:100CC00037B580919E0090919F00281B390B809131 |
:100CD0009B009927982F8827990F280F391F689410 |
:100CE00014F8369527951694E1F73093A1002093D8 |
:100CF000A0002851314030F488E191E09093A100A8 |
:100D00008093A0002091A0003091A1002851314093 |
:100D10003093A1002093A00080919C0090919D00B1 |
:100D20008217930730F480919C0090919D0001966A |
:100D30000CC080919C0090919D002817390748F4C1 |
:100D400080919C0090919D00019790939D008093CD |
:100D50009C0020919C0030919D00C901880F991F33 |
:100D6000880F991F880F991F821B930B2091A00059 |
:100D70003091A100820F931F23E0969587952A95C5 |
:100D8000E1F79093A1008093A00090939D00809341 |
:100D90009C0081E0809361009F918F913F912F9102 |
:100DA0000F900FBE0F901F9018951F920F920FB6C5 |
:100DB0000F9211248F938AB78F7B8ABF8F910F90E8 |
:100DC0000FBE0F901F90189590916000990F980F8B |
:100DD00092B985EC86BF08951F920F920FB60F92BD |
:100DE00011248F939F9381B19927887F90708038C9 |
:100DF0009105E9F08138910534F40097B1F180361E |
:100E0000910579F035C0883B9105D9F0893B910572 |
:100E100024F4883A9105A9F02BC0883F910511F17F |
:100E200027C086B7806886BF1092A20023C083B116 |
:100E30008093940384EF91E090937C0080937B00F7 |
:100E40000EC09091A200992339F480917F0083B95C |
:100E50009F5F9093A20003C08091620083B986B720 |
:100E6000806807C086B7806986BF86B7806986BFFD |
:100E700085EC86BF9F918F910F900FBE0F901F90B2 |
:100E800018951F920F920FB60F9211240F900FBE5C |
:100E90000F901F9018951F920F920FB60F9211246A |
:100EA0001F932F933F934F935F936F937F938F93F2 |
:100EB0009F93AF93BF93CF93EF93FF93459B02C054 |
:100EC00011E001C010E08091A500992782309105C2 |
:100ED00009F450C0833091052CF4009779F0019704 |
:100EE00039F1BFC08430910509F478C08430910590 |
:100EF0000CF45AC0059709F48BC0B3C082EA8FBDC9 |
:100F000081E685BD88E087BB112369F082B3877EC7 |
:100F100082BB959AC1E0C4BD80916100811157DE0A |
:100F20004098C7B91BC082B3877D82BB949A99C091 |
:100F300082B3877E82BB959A1123B1F482EA8FBD7A |
:100F400081E485BD8CE087BB81E084BD8091610038 |
:100F500081113DDE17B988B1836088B98091A50001 |
:100F60008F5F8093A5006DC082EA8FBD81E685BD4D |
:100F700088E076C082EA8FBD81E485BD8CE087BBC6 |
:100F8000112369F082B38F7C82BB939A81E084BD88 |
:100F90008091610081111BDE82E087B932C082B38B |
:100FA000877E82BB959A5DC082B38F7C82BB939A09 |
:100FB000112371F482EA8FBD81E485BD8AE087BB8D |
:100FC000C1E0C4BD80916100811101DEC7B9C3CF0A |
:100FD00082EA8FBD81E485BD8CE042C082EA8FBD8C |
:100FE00081E485BD8AE087BB112369F082B3877DE8 |
:100FF00082BB949A81E084BD809161008111E7DD1C |
:1010000017B84098ABCF82B38F7C82BB939A29C02C |
:1010100082B3877D82BB949A1123E9F482EA8FBD63 |
:1010200081E685BD88E087BB81E084BD8091610059 |
:101030008111CDDD82E087B988B1836088B91093D2 |
:10104000A5008091720090917300019690937300B7 |
:101050008093720006C082EA8FBD81E485BD8AE07C |
:1010600087BB459903C0112309F028CF459B03C0D6 |
:10107000112309F423CF10926100FF91EF91CF91DA |
:10108000BF91AF919F918F917F916F915F914F91A0 |
:101090003F912F911F910F900FBE0F901F901895A9 |
:1010A0008091A50099278230910551F183309105F7 |
:1010B0002CF4009769F00197B9F0089584309105F8 |
:1010C000E1F1843091055CF1059709F443C008957E |
:1010D00082EA8FBD81E685BD88E087BB82B3877DCC |
:1010E00082BB949A82E034C082EA8FBD81E685BDDE |
:1010F00088E087BB82B3877E82BB959A81E01AC065 |
:1011000082EA8FBD81E485BD8CE087BB82B3877E98 |
:1011100082BB959A17B888B1836088B9089582EA2E |
:101120008FBD81E485BD8CE087BB82B38F7C82BBA1 |
:10113000939A82E087B94098089582EA8FBD81E44E |
:1011400085BD8AE087BB82B38F7C82BB939A81E0A6 |
:1011500087B9E1CF82EA8FBD81E485BD8AE087BB94 |
:1011600082B3877D82BB949A17B8E5CF0F931F9304 |
:10117000CF93DF938C01EB01009711F4672BB9F14A |
:101180006EE070E081E090E037D0FC01892B71F1D6 |
:1011900080E88383209771F0D387C28781E88383B7 |
:1011A0008091950390919603892B21F4F0939603F7 |
:1011B000E093950301151105C9F01187008783811C |
:1011C000826083838091970390919803892B71F4B7 |
:1011D000F0939803E09397038091990390919A0379 |
:1011E000892B21F4F0939A03E0939903CF01DF91C7 |
:1011F000CF911F910F9108950F931F93CF93DF937A |
:10120000869F8001879F100D969F100D1124C801A5 |
:101210000DD0EC01009721F0A80160E070E0FCD057 |
:10122000CE01DF91CF911F910F910895CF93DF935E |
:10123000AC01029710F442E050E020E030E0A091D1 |
:101240009D03B0919E03BD01F901109709F44CC0B4 |
:101250008D919C9111978417950731F14817590783 |
:1012600038F42115310519F08217930708F49C0111 |
:10127000FD01A281B381109759F721153105A1F124 |
:10128000C901841B950B049708F4A901DB01E0E078 |
:10129000F0E0109749F18D919C9111978217930777 |
:1012A000F9F44217530779F4ED018A819B81309755 |
:1012B00019F09383828304C090939E0380939D03CF |
:1012C000CD0102964AC0241B350BFD01E20FF31F2E |
:1012D00041935193225030402D933C93CF013DC018 |
:1012E000FD01A281B381D5CF80919B0390919C0396 |
:1012F000892B41F480916B0090916C0090939C033A |
:1013000080939B03E0916900F0916A00309741F46B |
:10131000EDB7FEB780916D0090916E00E81BF90B60 |
:10132000A0919B03B0919C039F012A1B3B0B2417A8 |
:10133000350788F0CA0102962817390760F0CD01F9 |
:10134000840F951F029690939C0380939B034D936B |
:101350005D93CD0102C080E090E0DF91CF910895D0 |
:10136000CF93DF93009709F454C0DC011297ED018D |
:101370001B821A8280919D0390919E03009721F118 |
:10138000FC0140E050E0EA17FB0718F1ED01FB8398 |
:10139000EA832D913C911197C20FD31FCE01029683 |
:1013A0008E179F0771F48A819B81280F391F2E5F4A |
:1013B0003F4F11963C932E9382819381FD0193833D |
:1013C00082834115510559F4B0939E03A0939D0368 |
:1013D00020C0AF010280F381E02D3097A1F6EA0131 |
:1013E000BB83AA83CA01029628813981820F931F89 |
:1013F0008A179B0771F48D919C911197280F391FC3 |
:101400002E5F3F4F39832883FD01828193819B8327 |
:101410008A83DF91CF910895DC0101C06D93415023 |
:101420005040E0F70895991B79E004C0991F961782 |
:1014300008F0961B881F7A95C9F780950895AA1B16 |
:10144000BB1B51E107C0AA1FBB1FA617B70710F0AF |
:10145000A61BB70B881F991F5A95A9F780959095E1 |
:10146000BC01CD010895A1E21A2EAA1BBB1BFD01F0 |
:101470000DC0AA1FBB1FEE1FFF1FA217B307E40773 |
:10148000F50720F0A21BB30BE40BF50B661F771FCB |
:10149000881F991F1A9469F76095709580959095AB |
:0A14A0009B01AC01BD01CF010895CE |
:1014AA000101FF01010A00016400009F03200000FE |
:00000001FF |
/tags/V0.42/Hex-Files/BL-Ctrl_V1_1_and_V1_2/BootLoader_MEGA8_8MHZ_V0_2.hex |
---|
0,0 → 1,53 |
:101C000011241FBECFE5D4E0DEBFCDBF10E0A0E6BB |
:101C1000B0E0E0E3FFE102C005900D92A036B1070D |
:101C2000D9F710E0A0E6B0E001C01D92A23AB107DA |
:101C3000E1F714C000C008955D9BFECF8CB90895F4 |
:101C40005F9BFECF8CB1992708958DE4F5DF8BE47F |
:101C5000F3DF82E4F1DF8CE4EFDF0895CFE5D4E039 |
:101C6000DEBFCDBFE0E0F0E004917F01992481B7B1 |
:101C7000885081BF90BC80E189B9599A88E18AB9BE |
:101C800086E880BDEF01192D5F9B0BC0113029F450 |
:101C90008CB18A3A49F110E004C08CB18B3109F45F |
:101CA00011E0CE01219684369105C8F00F3F41F036 |
:101CB000002331F0E0916000F091610009950FC0C0 |
:101CC0008AE0BADF8DE0B8DF86E5B6DF80E3B4DF17 |
:101CD0008EE2B2DF82E3B0DF8AE3AEDF05C080E2EE |
:101CE0009EE40197F1F7D0CFB0DFAADF813611F47F |
:101CF00089E51CC1813461F4A3DFE82EFF24FE2CAA |
:101D0000EE249EDF9927E82AF92AF694E794E1C0A9 |
:101D1000823631F489E590DF80E08EDF80E406C111 |
:101D2000823409F070C08CDF8BDFD82E89DF082F5A |
:101D3000B2E6AB2EB0E0BB2E10E0E5010894A11C8A |
:101D4000B11C1D1510F47CDF01C08FEF88831F5F6D |
:101D5000103498F336E7931609F0C9C0063409F039 |
:101D60003CC08FEFE8168BE1F80608F033C0CD2DAC |
:101D7000A70166277727440F551F661F771F6A0143 |
:101D80007B01A2E6B0E011E08D9199272D913327D8 |
:101D9000322F2227822B932B0C01FA01109357002C |
:101DA000E89511244E5F5F4F6F4F7F4FC25061F730 |
:101DB00085E0F60180935700E89507B600FCFDCF5B |
:101DC00081E180935700E8957695679557954795FB |
:101DD0007A017FC080E030DF7CC0053409F079C033 |
:101DE000F7012D2DA2E6B0E0EEBB8F2F99278FBB18 |
:101DF0008D918DBB3196E29AE19AE199FECF215007 |
:101E000099F77F0166C08736B9F51ADF19DFC82F49 |
:101E100017DF863409F5C701AA27BB276C017D01AE |
:101E2000CC0CDD1CEE1CFF1CF60105911491802FDB |
:101E300003DF812F992700DF82E090E0A0E0B0E08F |
:101E4000C80ED91EEA1EFB1EC25071F7F694E79425 |
:101E5000D794C794760149CF853409F046CFEEBABE |
:101E60008F2D99278FBBE09A0894E11CF11C8DB34C |
:101E7000E3DEC150A1F739CF853601F596E7991613 |
:101E800041F580E090E0A0E0B0E023E0FC01209389 |
:101E90005700E89507B600FCFDCF805C9F4FAF4F21 |
:101EA000BF4F8F3F3BE1930730E0A30730E0B3071C |
:101EB00068F381E180935700E8950BC0853459F4AD |
:101EC00088E190E02CE00FB6F894A89581BD0FBE94 |
:101ED00021BD8DE02BC08035E1F38C34D1F3803708 |
:101EE00011F483E523C0843721F486E7A5DE80E082 |
:101EF0001DC0843519F4A4DE982EEBCF8B3109F484 |
:101F0000F3CE8A3A09F4F0CE863521F480E394DEEC |
:101F100082E30CC0833731F487E08EDE83E98CDE08 |
:101F20008EE104C08B3109F4E0CE8FE385DEDDCE97 |
:0400000300001C00DD |
:00000001FF |
/tags/V0.42/Hex-Files/BL-Ctrl_V1_1_and_V1_2/BrushLess-Ctrl_MEGA8_V0_42_10A.hex |
---|
0,0 → 1,450 |
:1000000012C054CA2AC029C0CFCAB3C926C025C04D |
:100010009FC9AEC822C0C7C620C01BC61EC01DC017 |
:10002000CDCA5BCA1AC011241FBECFE5D4E0DEBF23 |
:10003000CDBF10E0A0E6B0E0E2EEFBE102C005902B |
:100040000D92AA37B107D9F713E0AAE7B0E001C0D3 |
:100050001D92A03AB107E1F73AC4D2CF40918E0089 |
:1000600080916300841710F4482FAB9A20918C0084 |
:1000700030918D00293C3105C8F01BBC1ABC19BC5D |
:1000800018BC13BC82B3877C82BBAB9A809190036F |
:100090009091910301969093910380939003215046 |
:1000A000304030938D0020938C000895842F992741 |
:1000B0009BBD8ABD99BD88BD43BD089580918C00CC |
:1000C00090918D00909385038093840380918A00A2 |
:1000D0009927909387038093860380917B0090916A |
:1000E0007C0090938903809388038091A80090916D |
:1000F000A90090938B0380938A0383B599279093EB |
:100100008D0380938C0308951BBC1ABC19BC18BCCA |
:1001100013BC91E09FBD81E485BD8EE087BB88B3B1 |
:10012000817F88BB9EBD089592B7980F82B7891BC7 |
:1001300087FDFCCF0895CF93C82F7894C150CF3F4F |
:1001400049F0AB9A8CE291E078D8AB988CE291E0E0 |
:1001500074D8F4CF88EE93E070D8CF910895AF9221 |
:10016000BF92CF92DF92EF92FF920F931F93CF93A4 |
:10017000DF93C82F8CE2A82E81E0B82EC12CD12CA1 |
:100180001092AF00439885E090E090938F008093A9 |
:100190008E0064DF16DB8CE291E03BD89093B402D2 |
:1001A0008093B30211C0A9D880918C0090918D00EA |
:1001B0008937910548F082B3877C82BB1BBC1ABC8F |
:1001C00019BC18BC13BD34C08091B3029091B40225 |
:1001D00029D8182F882339F3DD27D0938F00C093B7 |
:1001E0008E00EE24FF248701EA14FB040C051D0594 |
:1001F00078F480917100882311F435D501C09ED721 |
:1002000084E692DF0894E11CF11C011D111DECCF66 |
:1002100055DF73D880918C0090918D00CD97B0F010 |
:1002200082B3877C82BB1BBC1ABC19BC18BC13BC34 |
:1002300081E08FBD81E485BD8EE087BB88B3817F7F |
:1002400088BB8AE078DF80E090E032C0C601B5016B |
:100250002FE030E040E050E0A2DCA21AB30AC40A6A |
:10026000D50A0894A108B108C108D10889E1A816E7 |
:10027000B104C104D10418F481E090E019C0A1DAFE |
:100280008091B1008F5F8093B1008091B10066E0F2 |
:1002900066DC9093B100E4D7D0938F00C0938E00BA |
:1002A000DDDE449B9ECF82B390E8892782BB99CF45 |
:1002B000DF91CF911F910F91FF90EF90DF90CF9042 |
:1002C000BF90AF900895CF93DF93EC0121978FEF0C |
:1002D000CF3FD807B9F011D88091B5029091B602FE |
:1002E00088589F4F20918C0030918D008217930782 |
:1002F00068F782B3877C82BB88B3817F88BB81E04B |
:1003000090E002C080E090E0DF91CF9108950197E6 |
:100310002FEF8F3F9207D9F780E090E008959F92EA |
:10032000AF92BF92CF92DF92EF92FF920F931F9303 |
:10033000CF93DF93CDB7DEB729970FB6F894DEBF22 |
:100340000FBECDBF5E010894A11CB11C89E0E8E698 |
:10035000F0E0D50101900D928A95E1F7CC24DC2CD8 |
:1003600002E3902EAB9880916100F501E80FF11D3A |
:100370008081282F33278CE291E0289FF001299F6C |
:10038000F00D389FF00D1124CF0157D7C092AF0068 |
:100390004398F8948AE0FAD482B3877C82BB1BBC72 |
:1003A0001ABC19BC18BC13BC81E08FBD81E485BDAB |
:1003B0008EE087BB88B3817F88BB10928B0082E37D |
:1003C00090E081DF80918B0099279093B602809313 |
:1003D000B50210928D0010928C008CB1803249F5DC |
:1003E0001FEFE12EF12EB8E29B2E8FE5CFD425C072 |
:1003F000A4E0CA2E84E3CAD482B3877C82BB88B3CC |
:10040000817F88BB4EC0F5E0CF2E85E3BFD482B399 |
:10041000877C82BB88B3817F88BB7AC0E6E0CE2E22 |
:1004200086E3B4D482B3877C82BB88B3817F88BBE8 |
:10043000A8C078EEE72E73E0F72E10928D00109290 |
:100440008C0000E010E00E151F0558F5939A81E02E |
:1004500090E039DF82B3877C82BB88B3817F88BB21 |
:1004600085E090E054DFC39A81E090E02CDF82B316 |
:10047000877C82BB88B3817F88BB8091B5029091D5 |
:10048000B602890D911D20918C0030918D0082174C |
:10049000930708F4ADCF85E090E039DF0F5F1F4F81 |
:1004A000D2CF80E197E233DF10928D0010928C0062 |
:1004B00000E010E00E151F0558F5949A81E090E0D9 |
:1004C00002DF82B3877C82BB88B3817F88BB85E0F3 |
:1004D00090E01DDFC29A81E090E0F5DE82B3877C78 |
:1004E00082BB88B3817F88BB8091B5029091B602B0 |
:1004F000890D911D20918C0030918D0082179307FA |
:1005000008F481CF85E090E002DF0F5F1F4FD2CF6C |
:1005100010928D0010928C0080E197E2F8DE00E0EE |
:1005200010E00E151F0558F5959A81E090E0CBDE9E |
:1005300082B3877C82BB88B3817F88BB85E090E0F3 |
:10054000E6DEC19A81E090E0BEDE82B3877C82BBAA |
:1005500088B3817F88BB8091B5029091B602890DE6 |
:10056000911D20918C0030918D008217930708F423 |
:1005700055CF85E090E0CBDE0F5F1F4FD2CFCC2070 |
:1005800019F08C2DD8DDFDCF80917A0087B982B328 |
:10059000877C82BB88B3817F88BB949A959A10929E |
:1005A0008D0010928C0008E710E0C39A81E090E083 |
:1005B000AEDE80E090E08DD6C3971CF0F1E0DF2A3C |
:1005C00002C04EEFD42218BA8CE291E0A0DE0150B6 |
:1005D000104017FFEACF82B3877C82BB88B3817F4C |
:1005E00088BB939A959A04E810E0C29A81E090E063 |
:1005F0008EDE81E090E06DD6C3971CF052E0D52AE4 |
:1006000002C08DEFD82218BA8CE291E080DE015052 |
:10061000104017FFEACF82B3877C82BB88B3817F0B |
:1006200088BB939A949A0EE610E0C19A81E090E01C |
:100630006EDE82E090E04DD6C3971CF0A4E0DA2A8B |
:1006400002C0BBEFDB2218BA8AE491E060DE015001 |
:10065000104017FFEACF82B3877C82BB88B3817FCB |
:1006600088BB939A08E710E0C29A81E090E04FDEE1 |
:1006700080E090E02ED6813891051CF0E7EFDE2275 |
:1006800002C0F8E0DF2A18BA8AE491E040DE0150A7 |
:10069000104017FFE9CF959A04E810E0C29A81E074 |
:1006A00090E035DE82E090E014D6813891051CF0B0 |
:1006B0004FEDD42202C050E2D52A18BA88E691E064 |
:1006C00026DE0150104017FFE9CF82B3877C82BB42 |
:1006D00088B3817F88BB82B3877C82BB88B3817FEC |
:1006E00088BB949A0EE610E0C19A81E090E00FDE9C |
:1006F00081E090E0EED5813891051CF08FEED82294 |
:1007000002C0A0E1DA2A18BA88E691E000DE0150C2 |
:10071000104017FFE9CF82B3877C82BB88B3817F0B |
:1007200088BB789480916100A80EB11CF5012081EE |
:1007300084E090E0821B91092CE231E0829FA001CD |
:10074000839F500D929F500D1124CA0176D58D2D97 |
:10075000992780FD04C061E0C62E81E41DC081FDA3 |
:1007600004C052E0C52E82E417C082FD04C043E0FD |
:10077000C42E83E411C083FD04C034E0C32E81E69F |
:100780000BC084FD04C025E0C22E82E605C085FDB5 |
:1007900007C096E0C92E83E68CB98C2DCCDCFDCF4A |
:1007A0008C2DC9DC8EE2F2D229960FB6F894DEBF0A |
:1007B0000FBECDBFDF91CF911F910F91FF90EF90B2 |
:1007C000DF90CF90BF90AF909F900895809186006A |
:1007D00090918700892B09F05BC040918400509173 |
:1007E00085004115510599F0909199008FEF989FE0 |
:1007F000C001112468EC70E0BED970939100609341 |
:1008000090001092600089B78F7D89BF32C08091BF |
:10081000A500853180F181E0809360002091A800DF |
:100820003091A90081E02D32380708F09A01293C67 |
:10083000310510F028EC30E02B30310528F45093CE |
:1008400091004093900015C08CEF90E0289FA0018C |
:10085000299F500D389F500D1124CA01885D994081 |
:1008600064EB70E088D9CB0103969093910080935C |
:100870009000AB981AC080919000909191000097E1 |
:1008800029F001979093910080939000AB9A0DC04E |
:1008900080919503992790939100809390001092F6 |
:1008A0006000AB9889B78F7D89BF8091900090914F |
:1008B00091008F3F910539F030F08FEF90E09093E9 |
:1008C0009100809390008091900099270895CFE542 |
:1008D000D4E0DEBFCDBFDD2488E084BB85BB8AE3E6 |
:1008E00081BBD2BA8EE087BB81E388BB88B3806CC2 |
:1008F00088BB83EF91E0C29797FFFDCFB69B06C000 |
:10090000B79B02C081E007C082E005C0B79B02C070 |
:1009100083E001C084E0809361008BE08093B200AB |
:10092000879B06C08CE08093B20080EC80937A00B5 |
:100930008AEB81BBC0D364D47894E6DB80E5C5D56F |
:10094000FAD485E690E065D486E690E062D487E646 |
:1009500090E05FD49093B4028093B3028EEF90E066 |
:1009600058D47C018DEE93E054D48C018EEE93E04C |
:1009700050D403C02BDF882339F48091B3029091C7 |
:10098000B40250D48823B1F38091B2008C3010F4BB |
:10099000979A01C0979810928F0010928E005EDB9C |
:1009A00088E080BF81E087B98AE090E032D49093FC |
:1009B000B4028093B30281E090E090938703809328 |
:1009C00086031092A9001092A80000DF882309F482 |
:1009D000A6DC81E388BBFADE992790938F00809391 |
:1009E0008E008091B1008D1569F010926400109214 |
:1009F00065008AEF90E00DD49093B4028093B30227 |
:100A0000D090B100C0918E00D0918F002097F9F462 |
:100A100010927F0010926500C50104D4882311F163 |
:100A20001092AF00439891E09093640082B3877C6A |
:100A300082BBDBBDCABDD9BDC8BD13BC9FBD81E4AF |
:100A400085BD8EE087BB88B3817F88BB0BC080915A |
:100A50006400882319F081E080937F008CED95E09D |
:100A6000D8D35C0180916400882321F010928F001C |
:100A700010928E00F3DA809165008F5F809365009D |
:100A8000813009F0A8CF80916400811136D4C7016C |
:100A9000C9D38823A9F182E390E0BBD37C01809184 |
:100AA0008A00482F552720918C0030918D004217E5 |
:100AB000530710F48F5F04C02417350718F48150D2 |
:100AC00080938A00293C310548F080916300982F7B |
:100AD000929596959770891B8093630080918A0008 |
:100AE00090916300893738F0992319F091509093D1 |
:100AF0006300AB9A05C09F3F19F09F5F909363001E |
:100B0000C80190D3882399F08AE090E082D38C01C9 |
:100B100080917D0090917E0090937C0080937B007B |
:100B200010927E0010927D0081E08093620080919F |
:100B3000B3029091B40276D3882331F080917B0088 |
:100B400090917C00892B29F080917F00882309F403 |
:100B500042CFC1E0C09364001092AF00439884E696 |
:100B600090E057D39093B4028093B30280917F00BA |
:100B7000882309F430CFAB9810928B0010927F003D |
:100B80008AE0EDDA882309F45DC010926400809158 |
:100B9000B10081508093B10081E090E090938F008C |
:100BA00080938E005BDA88B18C7F88B9C093AF00E8 |
:100BB00088B18A6088B984E190E02BD39093B40225 |
:100BC0008093B3028091B3029091B4022BD3882317 |
:100BD000C9F38FE090E090938F0080938E003EDA0F |
:100BE0008CE291E016D39093B4028093B3021BC0C1 |
:100BF00080918C0090918D00CD97A8F082B3877C76 |
:100C000082BB1BBC1ABC19BC18BC23BD11E01FBDA4 |
:100C100081E485BD8EE087BB88B3817F88BB8AE095 |
:100C20008ADA10937F008091B3029091B402FAD2D5 |
:100C3000282F8823E9F282E390E0EBD28C0187E051 |
:100C4000D82EC9CEC3DD882309F4C5CEC0937F005A |
:100C5000C2CE1F920F920FB60F9211240F900FBEAB |
:100C60000F901F9018955E9B24C08091710088237F |
:100C7000E1F480919A0090919B00019690939B00E3 |
:100C800080939A00FC01E854FD4FE081ED3019F0AB |
:100C90008436910539F410929B0010929A0081E0FD |
:100CA00080937100589AECB9089510929B001092AD |
:100CB0009A0008951F93CF93DF93EC0110E0662311 |
:100CC00009F460C0A22FBB271297E42FFF27E25E32 |
:100CD000FC4F30813D534F5FE42FFF27E25EFC4F16 |
:100CE00050815D534F5FE42FFF27E25EFC4F708120 |
:100CF0007D534F5FE42FFF27E25EFC4FE081ED5311 |
:100D00004F5F842F9927A817B907E4F1832F9927FC |
:100D1000880F991F880F991F352F32953F70382BF8 |
:100D2000852F99278F70907054E0880F991F5A95DE |
:100D3000E1F7572F56955695582B872F9927837093 |
:100D4000907026E0880F991F2A95E1F78E2B61504D |
:100D50006F3FC1F0FE01E10FF11D30831F5F615055 |
:100D60006F3F81F0FE01E10FF11D50831F5F615065 |
:100D70006F3F41F0FE01E10FF11D80831F5F66238D |
:100D800009F0A3CFDF91CF911F910895CF93C82F82 |
:100D90008A3011F48DE0FADF5D9BFECFCCB980E0A4 |
:100DA00090E0CF9108951F920F920FB60F921124E9 |
:100DB0002F933F934F935F936F937F938F939F9363 |
:100DC000AF93BF93CF93DF93EF93FF938CB1809357 |
:100DD00098004091A000443610F01092A10050916C |
:100DE00098005D3009F064C08091A100823009F064 |
:100DF0005FC01092A100A42FBB27A25EBC4FFD01D3 |
:100E00003297808120919C0030919D00281B3109F0 |
:100E1000ED0121978881281B3109C9019F709093AA |
:100E20009D0080939C0066E0969587956A95E1F712 |
:100E3000982F935C90939E002F733070235C2093C7 |
:100E40009F008081981709F082C08881281709F0D7 |
:100E50007EC0409392005C9380912003823549F4D8 |
:100E600088E190E02CE00FB6F894A89581BD0FBE04 |
:100E700021BD809120038ADF80912003843709F00F |
:100E800066C02091920043E064E083E990E012DFC5 |
:100E900080916100E82FFF27EE56FF4F80818093FD |
:100EA000990084EF91E090938500809384004FC077 |
:100EB0002091A100822F992781309105F9F082308D |
:100EC00091051CF4892B21F040C0029711F13DC01F |
:100ED00080919800833239F480919700882319F427 |
:100EE00081E08093A1008091980080931E0381E0AF |
:100EF0008093A00080919800992722C02F5F2093B3 |
:100F0000A100E42FFF27E25EFC4F809198008083D0 |
:100F100009C0E42FFF27E25EFC4F80919800808398 |
:100F2000443620F44F5F4093A00002C01092A1000D |
:100F30002091980080919C0090919D00820F911DBE |
:100F400090939D0080939C0002C01092A100FF919D |
:100F5000EF91DF91CF91BF91AF919F918F917F9151 |
:100F60006F915F914F913F912F910F900FBE0F9016 |
:100F70001F901895AC01A0E0B0E09D01A817B9073B |
:100F800048F4E8EBF2E08191280F311D1196A41787 |
:100F9000B507C8F33F70FD01E854FD4FC90176E085 |
:100FA000969587957A95E1F7835C80831196FD018C |
:100FB000E854FD4F2F733070822F835C8083A754D9 |
:100FC000BD4F8DE08C93109271008091B8028CB966 |
:100FD00008951F93CF93DF93382FEA01722F10E00B |
:100FE00083E28093B8026093B9023093BA02A3E01F |
:100FF000B0E0772309F458C0772311F4972F07C086 |
:10100000FE01E10FF11D1F5F9081715011F4472F18 |
:101010000EC0FE01E10FF11D1F5F4081715039F0DC |
:10102000FE01E10FF11D1F5F6081715001C0672F4C |
:10103000FD01E854FD4F892F86958695835C80835A |
:101040001196FD01E854FD4F892F99278370907008 |
:1010500024E0880F991F2A95E1F755279A0194E01B |
:10106000369527959A95E1F7822B835C80831196BC |
:10107000FD01E854FD4F4F705070440F551F440F51 |
:10108000551F862F992726E0969587952A95E1F793 |
:10109000842B835C80831196FD01E854FD4F6F73B0 |
:1010A000635C60831196A5CFCD0164DFDF91CF91A2 |
:1010B0001F910895089588E18AB9599A579A80E155 |
:1010C00089B960E070E086EC96E0ECD388EC90E0C3 |
:1010D000A0D090931D0380931C038AE057DE82E426 |
:1010E00055DE8CE453DE8AE351DE86E54FDE80E395 |
:1010F0004DDE8EE24BDE84E349DE82E347DE8AE0AA |
:1011000045DE88E443DE87E541DE8AE33FDE81E3B6 |
:101110003DDE8EE23BDE8091B2008A5D37DE8AE002 |
:1011200035DE81E433DE84E431DE82E52FDE8AE3DE |
:101130002DDE80916100805D29DE089580911C0381 |
:1011400090911D036FD0882391F0809171008823C6 |
:1011500071F022E142E853E06091B70284E439DFA4 |
:1011600082E390E056D090931D0380931C03089572 |
:101170001F920F920FB60F9211248F939F9380911D |
:1011800094038F5F809394038091A4008150809397 |
:10119000A4008F3F71F583E08093A4008091A200AA |
:1011A0009091A30001969093A3008093A200809158 |
:1011B000860090918700009729F00197909387000F |
:1011C000809386008091A600882331F08091A6004C |
:1011D00081508093A60002C08093A5008091840076 |
:1011E00090918500009729F0019790938500809356 |
:1011F00084009F918F910F900FBE0F901F901895B4 |
:1012000082E083BF89B7816089BF89B7806489BF65 |
:1012100008952091A2003091A300280F391FC90121 |
:10122000019708952091A2003091A300821B930B97 |
:10123000892F9927807899270895CF93DF93E9DF45 |
:10124000EC01CE01EFDF8823E1F3DF91CF91089528 |
:1012500086EA86B980917A00876087B9369A0895C0 |
:1012600027B190917A00966097B910BE83ED86B948 |
:10127000349A97B9369A349BFECF27B924B135B149 |
:10128000220F331F220F331F40918C0050918D008D |
:10129000CA0163E0880F991F6A95E1F7841B950BDB |
:1012A000280F391F83E0369527958A95E1F730930B |
:1012B0008D0020938C0080918B00992782179307D3 |
:1012C00020F480918C0080938B0016B888E080BF5A |
:1012D000089527B190917A00982B97B910BE83EDAD |
:1012E00086B9349A97B9369A349BFECF27B916B887 |
:1012F00088E080BF84B195B1089586E0EADF9C0163 |
:10130000220F331F220F331F293C310510F028EC28 |
:1013100030E030938D0020938C0080918B009927D2 |
:101320008217930720F480918C0080938B0016B86D |
:1013300088E080BF08958EB5806C8EBD8EB58064C8 |
:101340008EBD89B7806289BF89B7846089BF0895DF |
:101350001F920F920FB60F9211248F938091A700C6 |
:101360008F5F8093A7008F910F900FBE0F901F90FB |
:1013700018951F920F920FB60F9211242F933F933F |
:101380008F939F930EB406FE0FC01092A70086B5F0 |
:1013900097B59093AB008093AA008EB58F7B8EBDDE |
:1013A00084E68093A60079C08EB580648EBD26B594 |
:1013B00037B58091AA009091AB00281B390B809122 |
:1013C000A7009927982F8827990F280F391F68940D |
:1013D00014F8369527951694E1F73093AD002093D5 |
:1013E000AC002851314030F488E191E09093AD0099 |
:1013F0008093AC002091AC003091AD002851314079 |
:101400003093AD002093AC008091A8009091A9008A |
:101410008217930730F48091A8009091A90001965B |
:101420000CC08091A8009091A9002817390748F4B2 |
:101430008091A8009091A90001979093A9008093B2 |
:10144000A8002091A8003091A900C901880F991F18 |
:10145000880F991F880F991F821B930B2091AC0056 |
:101460003091AD00820F931F23E0969587952A95C2 |
:10147000E1F79093AD008093AC009093A900809326 |
:10148000A8008091A5008F3F29F08091A5008F5F73 |
:101490008093A50081E0809362009F918F913F919E |
:1014A0002F910F900FBE0F901F9018951F920F92C3 |
:1014B0000FB60F9211248F938AB78F7B8ABF8F91BB |
:1014C0000F900FBE0F901F90189590916100990F8B |
:1014D000980F92B985EC86BF08951F920F920FB6B0 |
:1014E0000F9211242F938F939F9381B19927887F17 |
:1014F000907080389105F1F0813891053CF40097A7 |
:1015000009F445C08036910579F044C0883B9105C7 |
:1015100051F1893B910524F4883A910521F13AC0B3 |
:10152000883F910589F136C086B7806886BF1092E2 |
:10153000AE0032C02091B2002C3010F0979A01C05A |
:10154000979883B18093950384EF91E090938700FF |
:101550008093860086B7806886BF2C3010F4979AF7 |
:101560001BC0979819C09091AE00992339F48091CF |
:101570008A0083B99F5F9093AE0003C0809163009F |
:1015800083B986B7806807C086B7806986BF86B78B |
:10159000806986BF85EC86BF9F918F912F910F90B8 |
:1015A0000FBE0F901F9018951F920F920FB60F92BB |
:1015B00011240F900FBE0F901F9018951F920F923D |
:1015C0000FB60F9211242F933F934F935F936F9316 |
:1015D0007F938F939F93AF93BF93CF93EF93FF939B |
:1015E000459B02C0C1E001C0C0E08091B1009927D5 |
:1015F0008230910509F451C0833091052CF4009795 |
:1016000079F0019741F1BFC08430910509F478C0A9 |
:10161000843091050CF45AC0059709F48BC0B3C00F |
:1016200081EA8FBD81E685BD88E087BBCC2371F060 |
:1016300082B3877E82BB959A80916200811110DE11 |
:10164000409880917A00816087B91BC082B3877D02 |
:1016500082BB949A98C082B3877E82BB959ACC2332 |
:10166000B1F481EA8FBD81E685BD84E087BB8091BE |
:1016700062008111F5DD80917A0087B988B18360BD |
:1016800088B98091B1008F5F8093B1006CC081EA0E |
:101690008FBD81E685BD88E075C081EA8FBD81E69A |
:1016A00085BD84E087BBCC2361F082B38F7C82BB95 |
:1016B000939A809162008111D3DD80917A008260DB |
:1016C00031C082B3877E82BB959A5DC082B38F7C26 |
:1016D00082BB939ACC2371F481EA8FBD81E685BDEC |
:1016E00082E087BB809162008111BADD80917A002F |
:1016F0008160C3CF81EA8FBD81E685BD84E042C0B1 |
:1017000081EA8FBD81E685BD82E087BBCC2369F08D |
:1017100082B3877D82BB949A809162008111A0DDA3 |
:1017200080917A0087B94098ACCF82B38F7C82BB1E |
:10173000939A29C082B3877D82BB949ACC23E9F423 |
:1017400081EA8FBD81E685BD88E087BB809162001C |
:10175000811186DD80917A00826087B988B18360CB |
:1017600088B9C093B10080917D0090917E00019670 |
:1017700090937E0080937D0006C081EA8FBD81E654 |
:1017800085BD82E087BB459903C0CC2309F028CFF3 |
:10179000459B03C0CC2309F423CF10926200FF9134 |
:1017A000EF91CF91BF91AF919F918F917F916F9169 |
:1017B0005F914F913F912F910F900FBE0F901F900F |
:1017C00018958091B10099278230910579F1833085 |
:1017D00091052CF4009771F00197D1F008958430B1 |
:1017E000910509F444C0843091058CF1059709F402 |
:1017F0004CC0089581EA8FBD81E685BD88E087BB36 |
:1018000082B3877D82BB949A80917A0082601AC0ED |
:1018100081EA8FBD81E685BD88E087BB82B3877E84 |
:1018200082BB959A80917A0081601EC081EA8FBD4B |
:1018300081E685BD84E087BB82B3877E82BB959AB3 |
:1018400080917A0087B988B1836088B9089581EA68 |
:101850008FBD81E685BD84E087BB82B38F7C82BB70 |
:10186000939A80917A00826087B94098089581EABE |
:101870008FBD81E685BD82E087BB82B38F7C82BB52 |
:10188000939A80917A008160DDCF81EA8FBD81E6F5 |
:1018900085BD82E087BB82B3877D82BB949A8091AD |
:1018A0007A00E2CF0F931F93CF93DF938C01EB016C |
:1018B000009711F4672BB9F16EE070E081E090E0E1 |
:1018C00037D0FC01892B71F180E88383209771F078 |
:1018D000D387C28781E88383809196039091970391 |
:1018E000892B21F4F0939703E093960301151105DA |
:1018F000C9F0118700878381826083838091980378 |
:1019000090919903892B71F4F0939903E0939803D4 |
:1019100080919A0390919B03892B21F4F0939B0370 |
:10192000E0939A03CF01DF91CF911F910F9108951A |
:101930000F931F93CF93DF93869F8001879F100D96 |
:10194000969F100D1124C8010DD0EC01009721F0D5 |
:10195000A80160E070E0FCD0CE01DF91CF911F9133 |
:101960000F910895CF93DF93AC01029710F442E0FA |
:1019700050E020E030E0A0919E03B0919F03BD01B4 |
:10198000F901109709F44CC08D919C91119784171F |
:10199000950731F14817590738F42115310519F029 |
:1019A0008217930708F49C01FD01A281B38110976F |
:1019B00059F721153105A1F1C901841B950B049735 |
:1019C00008F4A901DB01E0E0F0E0109749F18D9106 |
:1019D0009C91119782179307F9F44217530779F4F2 |
:1019E000ED018A819B81309719F09383828304C033 |
:1019F00090939F0380939E03CD0102964AC0241BBF |
:101A0000350BFD01E20FF31F4193519322503040FB |
:101A10002D933C93CF013DC0FD01A281B381D5CF71 |
:101A200080919C0390919D03892B41F480917500D6 |
:101A30009091760090939D0380939C03E0917300B6 |
:101A4000F0917400309741F4EDB7FEB780917700C4 |
:101A500090917800E81BF90BA0919C03B0919D0335 |
:101A60009F012A1B3B0B2417350788F0CA010296F9 |
:101A70002817390760F0CD01840F951F02969093C7 |
:101A80009D0380939C034D935D93CD0102C080E044 |
:101A900090E0DF91CF910895CF93DF93009709F401 |
:101AA00054C0DC011297ED011B821A8280919E03C3 |
:101AB00090919F03009721F1FC0140E050E0EA176C |
:101AC000FB0718F1ED01FB83EA832D913C911197FF |
:101AD000C20FD31FCE0102968E179F0771F48A8121 |
:101AE0009B81280F391F2E5F3F4F11963C932E93F9 |
:101AF00082819381FD01938382834115510559F4BD |
:101B0000B0939F03A0939E0320C0AF010280F38196 |
:101B1000E02D3097A1F6EA01BB83AA83CA010296A1 |
:101B200028813981820F931F8A179B0771F48D9149 |
:101B30009C911197280F391F2E5F3F4F39832883BF |
:101B4000FD01828193819B838A83DF91CF910895E8 |
:101B5000DC0101C06D9341505040E0F70895991B9E |
:101B600079E004C0991F961708F0961B881F7A9594 |
:101B7000C9F780950895AA1BBB1B51E107C0AA1F96 |
:101B8000BB1FA617B70710F0A61BB70B881F991F1E |
:101B90005A95A9F780959095BC01CD010895A1E2D1 |
:101BA0001A2EAA1BBB1BFD010DC0AA1FBB1FEE1FD7 |
:101BB000FF1FA217B307E407F50720F0A21BB30B22 |
:101BC000E40BF50B661F771F881F991F1A9469F79E |
:101BD00060957095809590959B01AC01BD01CF01FA |
:021BE000089566 |
:101BE200010101FF01010A000000020103040506D0 |
:0A1BF2000701640000A003200000BA |
:00000001FF |
/tags/V0.42/Hex-Files/BL-Ctrl_V1_1_and_V1_2/BrushLess-Ctrl_MEGA8_V0_42_10A_ADR5-8.hex |
---|
0,0 → 1,449 |
:1000000012C064CA2AC029C0CDCAC3C926C025C02F |
:10001000AFC9BEC822C0D7C620C02BC61EC01DC0D7 |
:10002000CBCA6BCA1AC011241FBECFE5D4E0DEBF15 |
:10003000CDBF10E0A0E6B0E0EEEDFBE102C0059020 |
:100040000D92AA37B107D9F713E0AAE7B0E001C0D3 |
:100050001D92A03AB107E1F73AC4D2CF40918E0089 |
:1000600080916300841710F4482FAB9A20918C0084 |
:1000700030918D00293C3105C8F01BBC1ABC19BC5D |
:1000800018BC13BC82B3877C82BBAB9A809190036F |
:100090009091910301969093910380939003215046 |
:1000A000304030938D0020938C000895842F992741 |
:1000B0009BBD8ABD99BD88BD43BD089580918C00CC |
:1000C00090918D00909385038093840380918A00A2 |
:1000D0009927909387038093860380917B0090916A |
:1000E0007C0090938903809388038091A80090916D |
:1000F000A90090938B0380938A0383B599279093EB |
:100100008D0380938C0308951BBC1ABC19BC18BCCA |
:1001100013BC91E09FBD81E485BD8EE087BB88B3B1 |
:10012000817F88BB9EBD089592B7980F82B7891BC7 |
:1001300087FDFCCF0895CF93C82F7894C150CF3F4F |
:1001400049F0AB9A8CE291E088D8AB988CE291E0D0 |
:1001500084D8F4CF88EE93E080D8CF910895AF9201 |
:10016000BF92CF92DF92EF92FF920F931F93CF93A4 |
:10017000DF93C82F8CE2A82E81E0B82EC12CD12CA1 |
:100180001092AF00439885E090E090938F008093A9 |
:100190008E0064DF14DB8CE291E04BD89093B402C4 |
:1001A0008093B30211C0B9D880918C0090918D00DA |
:1001B0008937910548F082B3877C82BB1BBC1ABC8F |
:1001C00019BC18BC13BD34C08091B3029091B40225 |
:1001D00039D8182F882339F3DD27D0938F00C093A7 |
:1001E0008E00EE24FF248701EA14FB040C051D0594 |
:1001F00078F480917100882311F445D501C0AED701 |
:1002000084E692DF0894E11CF11C011D111DECCF66 |
:1002100055DF83D880918C0090918D00CD97B0F000 |
:1002200082B3877C82BB1BBC1ABC19BC18BC13BC34 |
:1002300081E08FBD81E485BD8EE087BB88B3817F7F |
:1002400088BB8AE078DF80E090E032C0C601B5016B |
:100250002FE030E040E050E0A0DCA21AB30AC40A6C |
:10026000D50A0894A108B108C108D10889E1A816E7 |
:10027000B104C104D10418F481E090E019C09FDA00 |
:100280008091B1008F5F8093B1008091B10066E0F2 |
:1002900064DC9093B100F4D7D0938F00C0938E00AC |
:1002A000DDDE449B9ECF82B390E8892782BB99CF45 |
:1002B000DF91CF911F910F91FF90EF90DF90CF9042 |
:1002C000BF90AF900895CF93DF93EC0121978FEF0C |
:1002D000CF3FD807B9F021D88091B5029091B602EE |
:1002E00088589F4F20918C0030918D008217930782 |
:1002F00068F782B3877C82BB88B3817F88BB81E04B |
:1003000090E002C080E090E0DF91CF9108950197E6 |
:100310002FEF8F3F9207D9F780E090E008959F92EA |
:10032000AF92BF92CF92DF92EF92FF920F931F9303 |
:10033000CF93DF93CDB7DEB729970FB6F894DEBF22 |
:100340000FBECDBF5E010894A11CB11CD501E8E62B |
:10035000F0E089E001900D928150E1F7C82ED82E8F |
:1003600002E3902EAB9880916100F501E80FF11D3A |
:100370008081282F33278CE291E0289FA001299FBC |
:10038000500D389F500D1124CA0167D7C092AF009D |
:100390004398F8948AE00AD582B3877C82BB1BBC61 |
:1003A0001ABC19BC18BC13BC81E08FBD81E485BDAB |
:1003B0008EE087BB88B3817F88BB10928B0082E37D |
:1003C00090E081DF80918B0099279093B602809313 |
:1003D000B50210928D0010928C008CB1803249F5DC |
:1003E0001FEFE12EF12EB8E29B2E8FE5DFD425C062 |
:1003F000A4E0CA2E84E3DAD482B3877C82BB88B3BC |
:10040000817F88BB4EC0F5E0CF2E85E3CFD482B389 |
:10041000877C82BB88B3817F88BB7AC0E6E0CE2E22 |
:1004200086E3C4D482B3877C82BB88B3817F88BBD8 |
:10043000A8C078EEE72E73E0F72E10928D00109290 |
:100440008C0000E010E00E151F0558F5939A81E02E |
:1004500090E039DF82B3877C82BB88B3817F88BB21 |
:1004600085E090E054DFC39A81E090E02CDF82B316 |
:10047000877C82BB88B3817F88BB8091B5029091D5 |
:10048000B602890D911D20918C0030918D0082174C |
:10049000930708F4ADCF85E090E039DF0F5F1F4F81 |
:1004A000D2CF80E197E233DF10928D0010928C0062 |
:1004B00000E010E00E151F0558F5949A81E090E0D9 |
:1004C00002DF82B3877C82BB88B3817F88BB85E0F3 |
:1004D00090E01DDFC29A81E090E0F5DE82B3877C78 |
:1004E00082BB88B3817F88BB8091B5029091B602B0 |
:1004F000890D911D20918C0030918D0082179307FA |
:1005000008F481CF85E090E002DF0F5F1F4FD2CF6C |
:1005100010928D0010928C0080E197E2F8DE00E0EE |
:1005200010E00E151F0558F5959A81E090E0CBDE9E |
:1005300082B3877C82BB88B3817F88BB85E090E0F3 |
:10054000E6DEC19A81E090E0BEDE82B3877C82BBAA |
:1005500088B3817F88BB8091B5029091B602890DE6 |
:10056000911D20918C0030918D008217930708F423 |
:1005700055CF85E090E0CBDE0F5F1F4FD2CFCC2070 |
:1005800019F08C2DD8DDFDCF80917A0087B982B328 |
:10059000877C82BB88B3817F88BB949A959A10929E |
:1005A0008D0010928C0008E710E0C39A81E090E083 |
:1005B000AEDE80E090E09DD6C3971CF051E0D52AD6 |
:1005C00002C08EEFD82218BA8CE291E0A0DE015072 |
:1005D000104017FFEACF82B3877C82BB88B3817F4C |
:1005E00088BB939A959A04E810E0C29A81E090E063 |
:1005F0008EDE81E090E07DD6C3971CF0E2E0DE2A3B |
:1006000002C0FDEFDF2218BA8CE291E080DE0150DB |
:10061000104017FFEACF82B3877C82BB88B3817F0B |
:1006200088BB939A949A0EE610E0C19A81E090E01C |
:100630006EDE82E090E05DD6C3971CF044E0D42AE1 |
:1006400002C05BEFD52218BA8AE491E060DE015067 |
:10065000104017FFEACF82B3877C82BB88B3817FCB |
:1006600088BB939A08E710E0C29A81E090E04FDEE1 |
:1006700080E090E03ED6813891051CF087EFD822CB |
:1006800002C0E8E0DE2A18BA8AE491E040DE0150B8 |
:10069000104017FFE9CF959A04E810E0C29A81E074 |
:1006A00090E035DE82E090E024D6813891051CF0A0 |
:1006B000FFEDDF2202C040E2D42A18BA88E691E0BA |
:1006C00026DE0150104017FFE9CF82B3877C82BB42 |
:1006D00088B3817F88BB82B3877C82BB88B3817FEC |
:1006E00088BB949A0EE610E0C19A81E090E00FDE9C |
:1006F00081E090E0FED5813891051CF05FEED522B7 |
:1007000002C080E1D82A18BA88E691E000DE0150E4 |
:10071000104017FFE9CF82B3877C82BB88B3817F0B |
:1007200088BB789480916100A80EB11CF5012081EE |
:1007300084E090E0821B91092CE231E0829FA001CD |
:10074000839F500D929F500D1124CA0186D58D2D87 |
:10075000992780FD04C061E0C62E81E41DC081FDA3 |
:1007600004C052E0C52E82E417C082FD04C043E0FD |
:10077000C42E83E411C083FD04C034E0C32E81E69F |
:100780000BC084FD04C025E0C22E82E605C085FDB5 |
:1007900007C096E0C92E83E68CB98C2DCCDCFDCF4A |
:1007A0008C2DC9DC8EE202D329960FB6F894DEBFF9 |
:1007B0000FBECDBFDF91CF911F910F91FF90EF90B2 |
:1007C000DF90CF90BF90AF909F900895809186006A |
:1007D00090918700892B09F05BC040918400509173 |
:1007E00085004115510599F0909199008FEF989FE0 |
:1007F000C001112468EC70E0BCD970939100609343 |
:1008000090001092600089B78F7D89BF32C08091BF |
:10081000A500853180F181E0809360002091A800DF |
:100820003091A90081E02D32380708F09A01293C67 |
:10083000310510F028EC30E02B30310528F45093CE |
:1008400091004093900015C08CEF90E0289FA0018C |
:10085000299F500D389F500D1124CA01885D994081 |
:1008600064EB70E086D9CB0103969093910080935E |
:100870009000AB981AC080919000909191000097E1 |
:1008800029F001979093910080939000AB9A0DC04E |
:1008900080919503992790939100809390001092F6 |
:1008A0006000AB9889B78F7D89BF8091900090914F |
:1008B00091008F3F910539F030F08FEF90E09093E9 |
:1008C0009100809390008091900099270895CFE542 |
:1008D000D4E0DEBFCDBFDD2488E084BB85BB8AE3E6 |
:1008E00081BBD2BA8EE087BB81E388BB88B3806CC2 |
:1008F00088BB83EF91E0C29797FFFDCFB69B06C000 |
:10090000B79B02C085E007C086E005C0B79B02C068 |
:1009100087E001C088E0809361008BE08093B200A3 |
:10092000879B06C08CE08093B20080EC80937A00B5 |
:100930008AEB81BBD0D374D47894E6DB80E5D5D53F |
:100940000AD585E690E075D486E690E072D487E615 |
:1009500090E06FD49093B4028093B3028EEF90E056 |
:1009600068D47C018DEE93E064D48C018EEE93E02C |
:1009700060D403C02BDF882339F48091B3029091B7 |
:10098000B40260D48823B1F38091B2008C3010F4AB |
:10099000979A01C0979810928F0010928E005EDB9C |
:1009A00088E080BF81E087B98AE090E042D49093EC |
:1009B000B4028093B30281E090E090938703809328 |
:1009C00086031092A9001092A80000DF882309F482 |
:1009D000A6DC81E388BBFADE992790938F00809391 |
:1009E0008E008091B1008D1569F010926400109214 |
:1009F00065008AEF90E01DD49093B4028093B30217 |
:100A0000D090B100C0918E00D0918F002097F9F462 |
:100A100010927F0010926500C50114D4882311F153 |
:100A20001092AF00439891E09093640082B3877C6A |
:100A300082BBDBBDCABDD9BDC8BD13BC9FBD81E4AF |
:100A400085BD8EE087BB88B3817F88BB0BC080915A |
:100A50006400882319F081E080937F008CED95E09D |
:100A6000E8D35C0180916400882321F010928F000C |
:100A700010928E00F3DA809165008F5F809365009D |
:100A8000813009F0A8CF80916400882341F08091E3 |
:100A9000B2008C3010F4979A01C097983ED4C701E9 |
:100AA000D1D38823A9F182E390E0C3D37C01809164 |
:100AB0008A00482F552720918C0030918D004217D5 |
:100AC000530710F48F5F04C02417350718F48150C2 |
:100AD00080938A00293C310548F080916300982F6B |
:100AE000929596959770891B8093630080918A00F8 |
:100AF00090916300893738F0992319F091509093C1 |
:100B00006300AB9A05C09F3F19F09F5F909363000D |
:100B1000C80198D3882399F08AE090E08AD38C01A9 |
:100B200080917D0090917E0090937C0080937B006B |
:100B300010927E0010927D0081E08093620080918F |
:100B4000B3029091B4027ED3882331F080917B0070 |
:100B500090917C00892B29F080917F00882309F4F3 |
:100B60003ACFC1E0C09364001092AF00439884E68E |
:100B700090E05FD39093B4028093B30280917F00A2 |
:100B8000882309F428CFAB9810928B0010927F0035 |
:100B90008AE0E5DA882309F465C08091B2008C30E0 |
:100BA00010F4979A01C09798109264008091B10058 |
:100BB00081508093B10081E090E090938F0080930A |
:100BC0008E004CDA88B18C7F88B981E08093AF00C9 |
:100BD00088B18A6088B984E190E02BD39093B40205 |
:100BE0008093B3028091B3029091B4022BD38823F7 |
:100BF000C9F38FE090E090938F0080938E002EDAFF |
:100C00008CE291E016D39093B4028093B3021BC0A0 |
:100C100080918C0090918D00CD97A8F082B3877C55 |
:100C200082BB1BBC1ABC19BC18BC23BD11E01FBD84 |
:100C300081E485BD8EE087BB88B3817F88BB8AE075 |
:100C40007ADA10937F008091B3029091B402FAD2C5 |
:100C5000282F8823E9F282E390E0EBD28C0187E031 |
:100C6000D82EB9CEB3DD882309F4B5CEC0937F006A |
:100C7000B2CE1F920F920FB60F9211240F900FBE9B |
:100C80000F901F9018955E9B24C08091710088235F |
:100C9000E1F480919A0090919B00019690939B00C3 |
:100CA00080939A00FC01E854FD4FE081ED3019F08B |
:100CB0008436910539F410929B0010929A0081E0DD |
:100CC00080937100589AECB9089510929B0010928D |
:100CD0009A0008951F93CF93DF93EC0110E06623F1 |
:100CE00009F460C0A22FBB271297E42FFF27E25E12 |
:100CF000FC4F30813D534F5FE42FFF27E25EFC4FF6 |
:100D000050815D534F5FE42FFF27E25EFC4F7081FF |
:100D10007D534F5FE42FFF27E25EFC4FE081ED53F0 |
:100D20004F5F842F9927A817B907E4F1832F9927DC |
:100D3000880F991F880F991F352F32953F70382BD8 |
:100D4000852F99278F70907054E0880F991F5A95BE |
:100D5000E1F7572F56955695582B872F9927837073 |
:100D6000907026E0880F991F2A95E1F78E2B61502D |
:100D70006F3FC1F0FE01E10FF11D30831F5F615035 |
:100D80006F3F81F0FE01E10FF11D50831F5F615045 |
:100D90006F3F41F0FE01E10FF11D80831F5F66236D |
:100DA00009F0A3CFDF91CF911F910895CF93C82F62 |
:100DB0008A3011F48DE0FADF5D9BFECFCCB980E084 |
:100DC00090E0CF9108951F920F920FB60F921124C9 |
:100DD0002F933F934F935F936F937F938F939F9343 |
:100DE000AF93BF93CF93DF93EF93FF938CB1809337 |
:100DF00098004091A000443610F01092A10050914C |
:100E000098005D3009F064C08091A100823009F043 |
:100E10005FC01092A100A42FBB27A25EBC4FFD01B2 |
:100E20003297808120919C0030919D00281B3109D0 |
:100E3000ED0121978881281B3109C9019F7090938A |
:100E40009D0080939C0066E0969587956A95E1F7F2 |
:100E5000982F935C90939E002F733070235C2093A7 |
:100E60009F008081981709F082C08881281709F0B7 |
:100E70007EC0409392005C9380912003823549F4B8 |
:100E800088E190E02CE00FB6F894A89581BD0FBEE4 |
:100E900021BD809120038ADF80912003843709F0EF |
:100EA00066C02091920043E064E083E990E012DFA5 |
:100EB00080916100E82FFF27EE56FF4F80818093DD |
:100EC000990084EF91E090938500809384004FC057 |
:100ED0002091A100822F992781309105F9F082306D |
:100EE00091051CF4892B21F040C0029711F13DC0FF |
:100EF00080919800833239F480919700882319F407 |
:100F000081E08093A1008091980080931E0381E08E |
:100F10008093A00080919800992722C02F5F209392 |
:100F2000A100E42FFF27E25EFC4F809198008083B0 |
:100F300009C0E42FFF27E25EFC4F80919800808378 |
:100F4000443620F44F5F4093A00002C01092A100ED |
:100F50002091980080919C0090919D00820F911D9E |
:100F600090939D0080939C0002C01092A100FF917D |
:100F7000EF91DF91CF91BF91AF919F918F917F9131 |
:100F80006F915F914F913F912F910F900FBE0F90F6 |
:100F90001F901895AC01A0E0B0E09D01A817B9071B |
:100FA00048F4E8EBF2E08191280F311D1196A41767 |
:100FB000B507C8F33F70FD01E854FD4FC90176E065 |
:100FC000969587957A95E1F7835C80831196FD016C |
:100FD000E854FD4F2F733070822F835C8083A754B9 |
:100FE000BD4F8DE08C93109271008091B8028CB946 |
:100FF00008951F93CF93DF93382FEA01722F10E0EB |
:1010000083E28093B8026093B9023093BA02A3E0FE |
:10101000B0E0772309F458C0772311F4972F07C065 |
:10102000FE01E10FF11D1F5F9081715011F4472FF8 |
:101030000EC0FE01E10FF11D1F5F4081715039F0BC |
:10104000FE01E10FF11D1F5F6081715001C0672F2C |
:10105000FD01E854FD4F892F86958695835C80833A |
:101060001196FD01E854FD4F892F992783709070E8 |
:1010700024E0880F991F2A95E1F755279A0194E0FB |
:10108000369527959A95E1F7822B835C808311969C |
:10109000FD01E854FD4F4F705070440F551F440F31 |
:1010A000551F862F992726E0969587952A95E1F773 |
:1010B000842B835C80831196FD01E854FD4F6F7390 |
:1010C000635C60831196A5CFCD0164DFDF91CF9182 |
:1010D0001F910895089588E18AB9599A579A80E135 |
:1010E00089B960E070E086ED96E0DAD388EC90E0B4 |
:1010F000A0D090931D0380931C038AE057DE82E406 |
:1011000055DE8CE453DE8AE351DE86E54FDE80E374 |
:101110004DDE8EE24BDE84E349DE82E347DE8AE089 |
:1011200045DE88E443DE87E541DE8AE33FDE81E396 |
:101130003DDE8EE23BDE8091B2008A5D37DE8AE0E2 |
:1011400035DE81E433DE84E431DE82E52FDE8AE3BE |
:101150002DDE80916100805D29DE089580911C0361 |
:1011600090911D036FD0882391F0809171008823A6 |
:1011700071F022E142E853E06091B70284E439DF84 |
:1011800082E390E056D090931D0380931C03089552 |
:101190001F920F920FB60F9211248F939F938091FD |
:1011A00094038F5F809394038091A4008150809377 |
:1011B000A4008F3F71F583E08093A4008091A2008A |
:1011C0009091A30001969093A3008093A200809138 |
:1011D000860090918700009729F0019790938700EF |
:1011E000809386008091A600882331F08091A6002C |
:1011F00081508093A60002C08093A5008091840056 |
:1012000090918500009729F0019790938500809335 |
:1012100084009F918F910F900FBE0F901F90189593 |
:1012200082E083BF89B7816089BF89B7806489BF45 |
:1012300008952091A2003091A300280F391FC90101 |
:10124000019708952091A2003091A300821B930B77 |
:10125000892F9927807899270895CF93DF93E9DF25 |
:10126000EC01CE01EFDF8823E1F3DF91CF91089508 |
:1012700086EA86B980917A00876087B9369A0895A0 |
:1012800027B190917A00966097B910BE83ED86B928 |
:10129000349A97B9369A349BFECF27B924B135B129 |
:1012A000220F331F220F331F40918C0050918D006D |
:1012B000CA0163E0880F991F6A95E1F7841B950BBB |
:1012C000280F391F83E0369527958A95E1F73093EB |
:1012D0008D0020938C0080918B00992782179307B3 |
:1012E00020F480918C0080938B0016B888E080BF3A |
:1012F000089527B190917A00982B97B910BE83ED8D |
:1013000086B9349A97B9369A349BFECF27B916B866 |
:1013100088E080BF84B195B1089586E0EADF9C0142 |
:10132000220F331F220F331F293C310510F028EC08 |
:1013300030E030938D0020938C0080918B009927B2 |
:101340008217930720F480918C0080938B0016B84D |
:1013500088E080BF08958EB5806C8EBD8EB58064A8 |
:101360008EBD89B7806289BF89B7846089BF0895BF |
:101370001F920F920FB60F9211248F938091A700A6 |
:101380008F5F8093A7008F910F900FBE0F901F90DB |
:1013900018951F920F920FB60F9211242F933F931F |
:1013A0008F939F930EB406FE0FC01092A70086B5D0 |
:1013B00097B59093AB008093AA008EB58F7B8EBDBE |
:1013C00084E68093A60079C08EB580648EBD26B574 |
:1013D00037B58091AA009091AB00281B390B809102 |
:1013E000A7009927982F8827990F280F391F6894ED |
:1013F00014F8369527951694E1F73093AD002093B5 |
:10140000AC002851314030F488E191E09093AD0078 |
:101410008093AC002091AC003091AD002851314058 |
:101420003093AD002093AC008091A8009091A9006A |
:101430008217930730F48091A8009091A90001963B |
:101440000CC08091A8009091A9002817390748F492 |
:101450008091A8009091A90001979093A900809392 |
:10146000A8002091A8003091A900C901880F991FF8 |
:10147000880F991F880F991F821B930B2091AC0036 |
:101480003091AD00820F931F23E0969587952A95A2 |
:10149000E1F79093AD008093AC009093A900809306 |
:1014A000A8008091A5008F3F29F08091A5008F5F53 |
:1014B0008093A50081E0809362009F918F913F917E |
:1014C0002F910F900FBE0F901F9018951F920F92A3 |
:1014D0000FB60F9211248F938AB78F7B8ABF8F919B |
:1014E0000F900FBE0F901F90189590916100990F6B |
:1014F000980F92B985EC86BF08951F920F920FB690 |
:101500000F9211248F939F9381B19927887F9070B8 |
:1015100080389105E9F08138910534F40097B1F1F4 |
:101520008036910579F035C0883B9105D9F0893B2B |
:10153000910524F4883A9105A9F02BC0883F9105C4 |
:1015400011F127C086B7806886BF1092AE0023C015 |
:1015500083B18093950384EF91E09093870080930B |
:1015600086000EC09091AE00992339F480918A00D4 |
:1015700083B99F5F9093AE0003C08091630083B9ED |
:1015800086B7806807C086B7806986BF86B78069DE |
:1015900086BF85EC86BF9F918F910F900FBE0F90F5 |
:1015A0001F9018951F920F920FB60F9211240F9053 |
:1015B0000FBE0F901F9018951F920F920FB60F92AB |
:1015C00011242F933F934F935F936F937F938F9348 |
:1015D0009F93AF93BF93CF93EF93FF93459B02C02D |
:1015E000C1E001C0C0E08091B1009927823091052F |
:1015F00009F451C0833091052CF4009779F00197DC |
:1016000041F1BFC08430910509F478C08430910560 |
:101610000CF45AC0059709F48BC0B3C081EA8FBDA2 |
:1016200081E685BD88E087BBCC2371F082B3877EDD |
:1016300082BB959A80916200811122DE4098809150 |
:101640007A00816087B91BC082B3877D82BB949A80 |
:1016500098C082B3877E82BB959ACC23B1F481EA8D |
:101660008FBD81E685BD84E087BB809162008111DA |
:1016700007DE80917A0087B988B1836088B980914C |
:10168000B1008F5F8093B1006CC081EA8FBD81E6AD |
:1016900085BD88E075C081EA8FBD81E685BD84E0A7 |
:1016A00087BBCC2361F082B38F7C82BB939A8091FD |
:1016B00062008111E5DD80917A00826031C082B3E1 |
:1016C000877E82BB959A5DC082B38F7C82BB939AE2 |
:1016D000CC2371F481EA8FBD81E685BD82E087BBB2 |
:1016E000809162008111CCDD80917A008160C3CF4E |
:1016F00081EA8FBD81E685BD84E042C081EA8FBD6D |
:1017000081E685BD82E087BBCC2369F082B3877D0B |
:1017100082BB949A809162008111B2DD80917A003F |
:1017200087B94098ACCF82B38F7C82BB939A29C093 |
:1017300082B3877D82BB949ACC23E9F481EA8FBD82 |
:1017400081E685BD88E087BB80916200811198DDCC |
:1017500080917A00826087B988B1836088B9C0932C |
:10176000B10080917D0090917E00019690937E0063 |
:1017700080937D0006C081EA8FBD81E685BD82E051 |
:1017800087BB459903C0CC2309F028CF459B03C0F4 |
:10179000CC2309F423CF10926200FF91EF91CF91F7 |
:1017A000BF91AF919F918F917F916F915F914F9179 |
:1017B0003F912F910F900FBE0F901F901895809121 |
:1017C000B10099278230910579F1833091052CF48D |
:1017D000009771F00197D1F008958430910509F4D4 |
:1017E00044C0843091058CF1059709F44CC00895EC |
:1017F00081EA8FBD81E685BD88E087BB82B3877DA6 |
:1018000082BB949A80917A0082601AC081EA8FBD6F |
:1018100081E685BD88E087BB82B3877E82BB959ACF |
:1018200080917A0081601EC081EA8FBD81E685BD0E |
:1018300084E087BB82B3877E82BB959A80917A00D1 |
:1018400087B988B1836088B9089581EA8FBD81E640 |
:1018500085BD84E087BB82B38F7C82BB939A8091E5 |
:101860007A00826087B94098089581EA8FBD81E649 |
:1018700085BD82E087BB82B38F7C82BB939A8091C7 |
:101880007A008160DDCF81EA8FBD81E685BD82E08F |
:1018900087BB82B3877D82BB949A80917A00E2CF26 |
:1018A0000F931F93CF93DF938C01EB01009711F4FB |
:1018B000672BB9F16EE070E081E090E037D0FC0179 |
:1018C000892B71F180E88383209771F0D387C287D9 |
:1018D00081E883838091960390919703892B21F46B |
:1018E000F0939703E093960301151105C9F0118752 |
:1018F000008783818260838380919803909199030C |
:10190000892B71F4F0939903E093980380919A03E3 |
:1019100090919B03892B21F4F0939B03E0939A030E |
:10192000CF01DF91CF911F910F9108950F931F93D6 |
:10193000CF93DF93869F8001879F100D969F100D98 |
:101940001124C8010DD0EC01009721F0A80160E03E |
:1019500070E0FCD0CE01DF91CF911F910F910895DF |
:10196000CF93DF93AC01029710F442E050E020E007 |
:1019700030E0A0919E03B0919F03BD01F901109743 |
:1019800009F44CC08D919C9111978417950731F102 |
:101990004817590738F42115310519F082179307B4 |
:1019A00008F49C01FD01A281B381109759F721151C |
:1019B0003105A1F1C901841B950B049708F4A90115 |
:1019C000DB01E0E0F0E0109749F18D919C911197D7 |
:1019D00082179307F9F44217530779F4ED018A81CE |
:1019E0009B81309719F09383828304C090939F0367 |
:1019F00080939E03CD0102964AC0241B350BFD0146 |
:101A0000E20FF31F41935193225030402D933C93AA |
:101A1000CF013DC0FD01A281B381D5CF80919C0350 |
:101A200090919D03892B41F48091750090917600EF |
:101A300090939D0380939C03E0917300F091740058 |
:101A4000309741F4EDB7FEB7809177009091780020 |
:101A5000E81BF90BA0919C03B0919D039F012A1BE9 |
:101A60003B0B2417350788F0CA010296281739075F |
:101A700060F0CD01840F951F029690939D03809393 |
:101A80009C034D935D93CD0102C080E090E0DF9117 |
:101A9000CF910895CF93DF93009709F454C0DC01F0 |
:101AA0001297ED011B821A8280919E0390919F03F1 |
:101AB000009721F1FC0140E050E0EA17FB0718F124 |
:101AC000ED01FB83EA832D913C911197C20FD31F47 |
:101AD000CE0102968E179F0771F48A819B81280F91 |
:101AE000391F2E5F3F4F11963C932E938281938135 |
:101AF000FD01938382834115510559F4B0939F03EF |
:101B0000A0939E0320C0AF010280F381E02D3097A7 |
:101B1000A1F6EA01BB83AA83CA0102962881398112 |
:101B2000820F931F8A179B0771F48D919C911197D7 |
:101B3000280F391F2E5F3F4F39832883FD01828193 |
:101B400093819B838A83DF91CF910895DC0101C04B |
:101B50006D9341505040E0F70895991B79E004C01F |
:101B6000991F961708F0961B881F7A95C9F78095DC |
:101B70000895AA1BBB1B51E107C0AA1FBB1FA617D4 |
:101B8000B70710F0A61BB70B881F991F5A95A9F726 |
:101B900080959095BC01CD010895A1E21A2EAA1B53 |
:101BA000BB1BFD010DC0AA1FBB1FEE1FFF1FA2170D |
:101BB000B307E407F50720F0A21BB30BE40BF50B0A |
:101BC000661F771F881F991F1A9469F76095709593 |
:0E1BD000809590959B01AC01BD01CF01089559 |
:101BDE00010101FF01010A000000020103040506D4 |
:0A1BEE000701640000A003200000BE |
:00000001FF |
/tags/V0.42/Hex-Files/BL-Ctrl_V1_1_and_V1_2/BrushLess-Ctrl_MEGA8_V0_42_10A_ADR8-12.hex |
---|
0,0 → 1,450 |
:1000000012C054CA2AC029C0CFCAB3C926C025C04D |
:100010009FC9AEC822C0C7C620C01BC61EC01DC017 |
:10002000CDCA5BCA1AC011241FBECFE5D4E0DEBF23 |
:10003000CDBF10E0A0E6B0E0E2EEFBE102C005902B |
:100040000D92AA37B107D9F713E0AAE7B0E001C0D3 |
:100050001D92A03AB107E1F73AC4D2CF40918E0089 |
:1000600080916300841710F4482FAB9A20918C0084 |
:1000700030918D00293C3105C8F01BBC1ABC19BC5D |
:1000800018BC13BC82B3877C82BBAB9A809190036F |
:100090009091910301969093910380939003215046 |
:1000A000304030938D0020938C000895842F992741 |
:1000B0009BBD8ABD99BD88BD43BD089580918C00CC |
:1000C00090918D00909385038093840380918A00A2 |
:1000D0009927909387038093860380917B0090916A |
:1000E0007C0090938903809388038091A80090916D |
:1000F000A90090938B0380938A0383B599279093EB |
:100100008D0380938C0308951BBC1ABC19BC18BCCA |
:1001100013BC91E09FBD81E485BD8EE087BB88B3B1 |
:10012000817F88BB9EBD089592B7980F82B7891BC7 |
:1001300087FDFCCF0895CF93C82F7894C150CF3F4F |
:1001400049F0AB9A8CE291E078D8AB988CE291E0E0 |
:1001500074D8F4CF88EE93E070D8CF910895AF9221 |
:10016000BF92CF92DF92EF92FF920F931F93CF93A4 |
:10017000DF93C82F8CE2A82E81E0B82EC12CD12CA1 |
:100180001092AF00439885E090E090938F008093A9 |
:100190008E0064DF16DB8CE291E03BD89093B402D2 |
:1001A0008093B30211C0A9D880918C0090918D00EA |
:1001B0008937910548F082B3877C82BB1BBC1ABC8F |
:1001C00019BC18BC13BD34C08091B3029091B40225 |
:1001D00029D8182F882339F3DD27D0938F00C093B7 |
:1001E0008E00EE24FF248701EA14FB040C051D0594 |
:1001F00078F480917100882311F435D501C09ED721 |
:1002000084E692DF0894E11CF11C011D111DECCF66 |
:1002100055DF73D880918C0090918D00CD97B0F010 |
:1002200082B3877C82BB1BBC1ABC19BC18BC13BC34 |
:1002300081E08FBD81E485BD8EE087BB88B3817F7F |
:1002400088BB8AE078DF80E090E032C0C601B5016B |
:100250002FE030E040E050E0A2DCA21AB30AC40A6A |
:10026000D50A0894A108B108C108D10889E1A816E7 |
:10027000B104C104D10418F481E090E019C0A1DAFE |
:100280008091B1008F5F8093B1008091B10066E0F2 |
:1002900066DC9093B100E4D7D0938F00C0938E00BA |
:1002A000DDDE449B9ECF82B390E8892782BB99CF45 |
:1002B000DF91CF911F910F91FF90EF90DF90CF9042 |
:1002C000BF90AF900895CF93DF93EC0121978FEF0C |
:1002D000CF3FD807B9F011D88091B5029091B602FE |
:1002E00088589F4F20918C0030918D008217930782 |
:1002F00068F782B3877C82BB88B3817F88BB81E04B |
:1003000090E002C080E090E0DF91CF9108950197E6 |
:100310002FEF8F3F9207D9F780E090E008959F92EA |
:10032000AF92BF92CF92DF92EF92FF920F931F9303 |
:10033000CF93DF93CDB7DEB729970FB6F894DEBF22 |
:100340000FBECDBF5E010894A11CB11C89E0E8E698 |
:10035000F0E0D50101900D928A95E1F7CC24DC2CD8 |
:1003600002E3902EAB9880916100F501E80FF11D3A |
:100370008081282F33278CE291E0289FF001299F6C |
:10038000F00D389FF00D1124CF0157D7C092AF0068 |
:100390004398F8948AE0FAD482B3877C82BB1BBC72 |
:1003A0001ABC19BC18BC13BC81E08FBD81E485BDAB |
:1003B0008EE087BB88B3817F88BB10928B0082E37D |
:1003C00090E081DF80918B0099279093B602809313 |
:1003D000B50210928D0010928C008CB1803249F5DC |
:1003E0001FEFE12EF12EB8E29B2E8FE5CFD425C072 |
:1003F000A4E0CA2E84E3CAD482B3877C82BB88B3CC |
:10040000817F88BB4EC0F5E0CF2E85E3BFD482B399 |
:10041000877C82BB88B3817F88BB7AC0E6E0CE2E22 |
:1004200086E3B4D482B3877C82BB88B3817F88BBE8 |
:10043000A8C078EEE72E73E0F72E10928D00109290 |
:100440008C0000E010E00E151F0558F5939A81E02E |
:1004500090E039DF82B3877C82BB88B3817F88BB21 |
:1004600085E090E054DFC39A81E090E02CDF82B316 |
:10047000877C82BB88B3817F88BB8091B5029091D5 |
:10048000B602890D911D20918C0030918D0082174C |
:10049000930708F4ADCF85E090E039DF0F5F1F4F81 |
:1004A000D2CF80E197E233DF10928D0010928C0062 |
:1004B00000E010E00E151F0558F5949A81E090E0D9 |
:1004C00002DF82B3877C82BB88B3817F88BB85E0F3 |
:1004D00090E01DDFC29A81E090E0F5DE82B3877C78 |
:1004E00082BB88B3817F88BB8091B5029091B602B0 |
:1004F000890D911D20918C0030918D0082179307FA |
:1005000008F481CF85E090E002DF0F5F1F4FD2CF6C |
:1005100010928D0010928C0080E197E2F8DE00E0EE |
:1005200010E00E151F0558F5959A81E090E0CBDE9E |
:1005300082B3877C82BB88B3817F88BB85E090E0F3 |
:10054000E6DEC19A81E090E0BEDE82B3877C82BBAA |
:1005500088B3817F88BB8091B5029091B602890DE6 |
:10056000911D20918C0030918D008217930708F423 |
:1005700055CF85E090E0CBDE0F5F1F4FD2CFCC2070 |
:1005800019F08C2DD8DDFDCF80917A0087B982B328 |
:10059000877C82BB88B3817F88BB949A959A10929E |
:1005A0008D0010928C0008E710E0C39A81E090E083 |
:1005B000AEDE80E090E08DD6C3971CF0F1E0DF2A3C |
:1005C00002C04EEFD42218BA8CE291E0A0DE0150B6 |
:1005D000104017FFEACF82B3877C82BB88B3817F4C |
:1005E00088BB939A959A04E810E0C29A81E090E063 |
:1005F0008EDE81E090E06DD6C3971CF052E0D52AE4 |
:1006000002C08DEFD82218BA8CE291E080DE015052 |
:10061000104017FFEACF82B3877C82BB88B3817F0B |
:1006200088BB939A949A0EE610E0C19A81E090E01C |
:100630006EDE82E090E04DD6C3971CF0A4E0DA2A8B |
:1006400002C0BBEFDB2218BA8AE491E060DE015001 |
:10065000104017FFEACF82B3877C82BB88B3817FCB |
:1006600088BB939A08E710E0C29A81E090E04FDEE1 |
:1006700080E090E02ED6813891051CF0E7EFDE2275 |
:1006800002C0F8E0DF2A18BA8AE491E040DE0150A7 |
:10069000104017FFE9CF959A04E810E0C29A81E074 |
:1006A00090E035DE82E090E014D6813891051CF0B0 |
:1006B0004FEDD42202C050E2D52A18BA88E691E064 |
:1006C00026DE0150104017FFE9CF82B3877C82BB42 |
:1006D00088B3817F88BB82B3877C82BB88B3817FEC |
:1006E00088BB949A0EE610E0C19A81E090E00FDE9C |
:1006F00081E090E0EED5813891051CF08FEED82294 |
:1007000002C0A0E1DA2A18BA88E691E000DE0150C2 |
:10071000104017FFE9CF82B3877C82BB88B3817F0B |
:1007200088BB789480916100A80EB11CF5012081EE |
:1007300084E090E0821B91092CE231E0829FA001CD |
:10074000839F500D929F500D1124CA0176D58D2D97 |
:10075000992780FD04C061E0C62E81E41DC081FDA3 |
:1007600004C052E0C52E82E417C082FD04C043E0FD |
:10077000C42E83E411C083FD04C034E0C32E81E69F |
:100780000BC084FD04C025E0C22E82E605C085FDB5 |
:1007900007C096E0C92E83E68CB98C2DCCDCFDCF4A |
:1007A0008C2DC9DC8EE2F2D229960FB6F894DEBF0A |
:1007B0000FBECDBFDF91CF911F910F91FF90EF90B2 |
:1007C000DF90CF90BF90AF909F900895809186006A |
:1007D00090918700892B09F05BC040918400509173 |
:1007E00085004115510599F0909199008FEF989FE0 |
:1007F000C001112468EC70E0BED970939100609341 |
:1008000090001092600089B78F7D89BF32C08091BF |
:10081000A500853180F181E0809360002091A800DF |
:100820003091A90081E02D32380708F09A01293C67 |
:10083000310510F028EC30E02B30310528F45093CE |
:1008400091004093900015C08CEF90E0289FA0018C |
:10085000299F500D389F500D1124CA01885D994081 |
:1008600064EB70E088D9CB0103969093910080935C |
:100870009000AB981AC080919000909191000097E1 |
:1008800029F001979093910080939000AB9A0DC04E |
:1008900080919503992790939100809390001092F6 |
:1008A0006000AB9889B78F7D89BF8091900090914F |
:1008B00091008F3F910539F030F08FEF90E09093E9 |
:1008C0009100809390008091900099270895CFE542 |
:1008D000D4E0DEBFCDBFDD2488E084BB85BB8AE3E6 |
:1008E00081BBD2BA8EE087BB81E388BB88B3806CC2 |
:1008F00088BB83EF91E0C29797FFFDCFB69B06C000 |
:10090000B79B02C089E007C08AE005C0B79B02C060 |
:100910008BE001C08CE0809361008BE08093B2009B |
:10092000879B06C08CE08093B20080EC80937A00B5 |
:100930008AEB81BBC0D364D47894E6DB80E5C5D56F |
:10094000FAD485E690E065D486E690E062D487E646 |
:1009500090E05FD49093B4028093B3028EEF90E066 |
:1009600058D47C018DEE93E054D48C018EEE93E04C |
:1009700050D403C02BDF882339F48091B3029091C7 |
:10098000B40250D48823B1F38091B2008C3010F4BB |
:10099000979A01C0979810928F0010928E005EDB9C |
:1009A00088E080BF81E087B98AE090E032D49093FC |
:1009B000B4028093B30281E090E090938703809328 |
:1009C00086031092A9001092A80000DF882309F482 |
:1009D000A6DC81E388BBFADE992790938F00809391 |
:1009E0008E008091B1008D1569F010926400109214 |
:1009F00065008AEF90E00DD49093B4028093B30227 |
:100A0000D090B100C0918E00D0918F002097F9F462 |
:100A100010927F0010926500C50104D4882311F163 |
:100A20001092AF00439891E09093640082B3877C6A |
:100A300082BBDBBDCABDD9BDC8BD13BC9FBD81E4AF |
:100A400085BD8EE087BB88B3817F88BB0BC080915A |
:100A50006400882319F081E080937F008CED95E09D |
:100A6000D8D35C0180916400882321F010928F001C |
:100A700010928E00F3DA809165008F5F809365009D |
:100A8000813009F0A8CF80916400811136D4C7016C |
:100A9000C9D38823A9F182E390E0BBD37C01809184 |
:100AA0008A00482F552720918C0030918D004217E5 |
:100AB000530710F48F5F04C02417350718F48150D2 |
:100AC00080938A00293C310548F080916300982F7B |
:100AD000929596959770891B8093630080918A0008 |
:100AE00090916300893738F0992319F091509093D1 |
:100AF0006300AB9A05C09F3F19F09F5F909363001E |
:100B0000C80190D3882399F08AE090E082D38C01C9 |
:100B100080917D0090917E0090937C0080937B007B |
:100B200010927E0010927D0081E08093620080919F |
:100B3000B3029091B40276D3882331F080917B0088 |
:100B400090917C00892B29F080917F00882309F403 |
:100B500042CFC1E0C09364001092AF00439884E696 |
:100B600090E057D39093B4028093B30280917F00BA |
:100B7000882309F430CFAB9810928B0010927F003D |
:100B80008AE0EDDA882309F45DC010926400809158 |
:100B9000B10081508093B10081E090E090938F008C |
:100BA00080938E005BDA88B18C7F88B9C093AF00E8 |
:100BB00088B18A6088B984E190E02BD39093B40225 |
:100BC0008093B3028091B3029091B4022BD3882317 |
:100BD000C9F38FE090E090938F0080938E003EDA0F |
:100BE0008CE291E016D39093B4028093B3021BC0C1 |
:100BF00080918C0090918D00CD97A8F082B3877C76 |
:100C000082BB1BBC1ABC19BC18BC23BD11E01FBDA4 |
:100C100081E485BD8EE087BB88B3817F88BB8AE095 |
:100C20008ADA10937F008091B3029091B402FAD2D5 |
:100C3000282F8823E9F282E390E0EBD28C0187E051 |
:100C4000D82EC9CEC3DD882309F4C5CEC0937F005A |
:100C5000C2CE1F920F920FB60F9211240F900FBEAB |
:100C60000F901F9018955E9B24C08091710088237F |
:100C7000E1F480919A0090919B00019690939B00E3 |
:100C800080939A00FC01E854FD4FE081ED3019F0AB |
:100C90008436910539F410929B0010929A0081E0FD |
:100CA00080937100589AECB9089510929B001092AD |
:100CB0009A0008951F93CF93DF93EC0110E0662311 |
:100CC00009F460C0A22FBB271297E42FFF27E25E32 |
:100CD000FC4F30813D534F5FE42FFF27E25EFC4F16 |
:100CE00050815D534F5FE42FFF27E25EFC4F708120 |
:100CF0007D534F5FE42FFF27E25EFC4FE081ED5311 |
:100D00004F5F842F9927A817B907E4F1832F9927FC |
:100D1000880F991F880F991F352F32953F70382BF8 |
:100D2000852F99278F70907054E0880F991F5A95DE |
:100D3000E1F7572F56955695582B872F9927837093 |
:100D4000907026E0880F991F2A95E1F78E2B61504D |
:100D50006F3FC1F0FE01E10FF11D30831F5F615055 |
:100D60006F3F81F0FE01E10FF11D50831F5F615065 |
:100D70006F3F41F0FE01E10FF11D80831F5F66238D |
:100D800009F0A3CFDF91CF911F910895CF93C82F82 |
:100D90008A3011F48DE0FADF5D9BFECFCCB980E0A4 |
:100DA00090E0CF9108951F920F920FB60F921124E9 |
:100DB0002F933F934F935F936F937F938F939F9363 |
:100DC000AF93BF93CF93DF93EF93FF938CB1809357 |
:100DD00098004091A000443610F01092A10050916C |
:100DE00098005D3009F064C08091A100823009F064 |
:100DF0005FC01092A100A42FBB27A25EBC4FFD01D3 |
:100E00003297808120919C0030919D00281B3109F0 |
:100E1000ED0121978881281B3109C9019F709093AA |
:100E20009D0080939C0066E0969587956A95E1F712 |
:100E3000982F935C90939E002F733070235C2093C7 |
:100E40009F008081981709F082C08881281709F0D7 |
:100E50007EC0409392005C9380912003823549F4D8 |
:100E600088E190E02CE00FB6F894A89581BD0FBE04 |
:100E700021BD809120038ADF80912003843709F00F |
:100E800066C02091920043E064E083E990E012DFC5 |
:100E900080916100E82FFF27EE56FF4F80818093FD |
:100EA000990084EF91E090938500809384004FC077 |
:100EB0002091A100822F992781309105F9F082308D |
:100EC00091051CF4892B21F040C0029711F13DC01F |
:100ED00080919800833239F480919700882319F427 |
:100EE00081E08093A1008091980080931E0381E0AF |
:100EF0008093A00080919800992722C02F5F2093B3 |
:100F0000A100E42FFF27E25EFC4F809198008083D0 |
:100F100009C0E42FFF27E25EFC4F80919800808398 |
:100F2000443620F44F5F4093A00002C01092A1000D |
:100F30002091980080919C0090919D00820F911DBE |
:100F400090939D0080939C0002C01092A100FF919D |
:100F5000EF91DF91CF91BF91AF919F918F917F9151 |
:100F60006F915F914F913F912F910F900FBE0F9016 |
:100F70001F901895AC01A0E0B0E09D01A817B9073B |
:100F800048F4E8EBF2E08191280F311D1196A41787 |
:100F9000B507C8F33F70FD01E854FD4FC90176E085 |
:100FA000969587957A95E1F7835C80831196FD018C |
:100FB000E854FD4F2F733070822F835C8083A754D9 |
:100FC000BD4F8DE08C93109271008091B8028CB966 |
:100FD00008951F93CF93DF93382FEA01722F10E00B |
:100FE00083E28093B8026093B9023093BA02A3E01F |
:100FF000B0E0772309F458C0772311F4972F07C086 |
:10100000FE01E10FF11D1F5F9081715011F4472F18 |
:101010000EC0FE01E10FF11D1F5F4081715039F0DC |
:10102000FE01E10FF11D1F5F6081715001C0672F4C |
:10103000FD01E854FD4F892F86958695835C80835A |
:101040001196FD01E854FD4F892F99278370907008 |
:1010500024E0880F991F2A95E1F755279A0194E01B |
:10106000369527959A95E1F7822B835C80831196BC |
:10107000FD01E854FD4F4F705070440F551F440F51 |
:10108000551F862F992726E0969587952A95E1F793 |
:10109000842B835C80831196FD01E854FD4F6F73B0 |
:1010A000635C60831196A5CFCD0164DFDF91CF91A2 |
:1010B0001F910895089588E18AB9599A579A80E155 |
:1010C00089B960E070E086EC96E0ECD388EC90E0C3 |
:1010D000A0D090931D0380931C038AE057DE82E426 |
:1010E00055DE8CE453DE8AE351DE86E54FDE80E395 |
:1010F0004DDE8EE24BDE84E349DE82E347DE8AE0AA |
:1011000045DE88E443DE87E541DE8AE33FDE81E3B6 |
:101110003DDE8EE23BDE8091B2008A5D37DE8AE002 |
:1011200035DE81E433DE84E431DE82E52FDE8AE3DE |
:101130002DDE80916100805D29DE089580911C0381 |
:1011400090911D036FD0882391F0809171008823C6 |
:1011500071F022E142E853E06091B70284E439DFA4 |
:1011600082E390E056D090931D0380931C03089572 |
:101170001F920F920FB60F9211248F939F9380911D |
:1011800094038F5F809394038091A4008150809397 |
:10119000A4008F3F71F583E08093A4008091A200AA |
:1011A0009091A30001969093A3008093A200809158 |
:1011B000860090918700009729F00197909387000F |
:1011C000809386008091A600882331F08091A6004C |
:1011D00081508093A60002C08093A5008091840076 |
:1011E00090918500009729F0019790938500809356 |
:1011F00084009F918F910F900FBE0F901F901895B4 |
:1012000082E083BF89B7816089BF89B7806489BF65 |
:1012100008952091A2003091A300280F391FC90121 |
:10122000019708952091A2003091A300821B930B97 |
:10123000892F9927807899270895CF93DF93E9DF45 |
:10124000EC01CE01EFDF8823E1F3DF91CF91089528 |
:1012500086EA86B980917A00876087B9369A0895C0 |
:1012600027B190917A00966097B910BE83ED86B948 |
:10127000349A97B9369A349BFECF27B924B135B149 |
:10128000220F331F220F331F40918C0050918D008D |
:10129000CA0163E0880F991F6A95E1F7841B950BDB |
:1012A000280F391F83E0369527958A95E1F730930B |
:1012B0008D0020938C0080918B00992782179307D3 |
:1012C00020F480918C0080938B0016B888E080BF5A |
:1012D000089527B190917A00982B97B910BE83EDAD |
:1012E00086B9349A97B9369A349BFECF27B916B887 |
:1012F00088E080BF84B195B1089586E0EADF9C0163 |
:10130000220F331F220F331F293C310510F028EC28 |
:1013100030E030938D0020938C0080918B009927D2 |
:101320008217930720F480918C0080938B0016B86D |
:1013300088E080BF08958EB5806C8EBD8EB58064C8 |
:101340008EBD89B7806289BF89B7846089BF0895DF |
:101350001F920F920FB60F9211248F938091A700C6 |
:101360008F5F8093A7008F910F900FBE0F901F90FB |
:1013700018951F920F920FB60F9211242F933F933F |
:101380008F939F930EB406FE0FC01092A70086B5F0 |
:1013900097B59093AB008093AA008EB58F7B8EBDDE |
:1013A00084E68093A60079C08EB580648EBD26B594 |
:1013B00037B58091AA009091AB00281B390B809122 |
:1013C000A7009927982F8827990F280F391F68940D |
:1013D00014F8369527951694E1F73093AD002093D5 |
:1013E000AC002851314030F488E191E09093AD0099 |
:1013F0008093AC002091AC003091AD002851314079 |
:101400003093AD002093AC008091A8009091A9008A |
:101410008217930730F48091A8009091A90001965B |
:101420000CC08091A8009091A9002817390748F4B2 |
:101430008091A8009091A90001979093A9008093B2 |
:10144000A8002091A8003091A900C901880F991F18 |
:10145000880F991F880F991F821B930B2091AC0056 |
:101460003091AD00820F931F23E0969587952A95C2 |
:10147000E1F79093AD008093AC009093A900809326 |
:10148000A8008091A5008F3F29F08091A5008F5F73 |
:101490008093A50081E0809362009F918F913F919E |
:1014A0002F910F900FBE0F901F9018951F920F92C3 |
:1014B0000FB60F9211248F938AB78F7B8ABF8F91BB |
:1014C0000F900FBE0F901F90189590916100990F8B |
:1014D000980F92B985EC86BF08951F920F920FB6B0 |
:1014E0000F9211242F938F939F9381B19927887F17 |
:1014F000907080389105F1F0813891053CF40097A7 |
:1015000009F445C08036910579F044C0883B9105C7 |
:1015100051F1893B910524F4883A910521F13AC0B3 |
:10152000883F910589F136C086B7806886BF1092E2 |
:10153000AE0032C02091B2002C3010F0979A01C05A |
:10154000979883B18093950384EF91E090938700FF |
:101550008093860086B7806886BF2C3010F4979AF7 |
:101560001BC0979819C09091AE00992339F48091CF |
:101570008A0083B99F5F9093AE0003C0809163009F |
:1015800083B986B7806807C086B7806986BF86B78B |
:10159000806986BF85EC86BF9F918F912F910F90B8 |
:1015A0000FBE0F901F9018951F920F920FB60F92BB |
:1015B00011240F900FBE0F901F9018951F920F923D |
:1015C0000FB60F9211242F933F934F935F936F9316 |
:1015D0007F938F939F93AF93BF93CF93EF93FF939B |
:1015E000459B02C0C1E001C0C0E08091B1009927D5 |
:1015F0008230910509F451C0833091052CF4009795 |
:1016000079F0019741F1BFC08430910509F478C0A9 |
:10161000843091050CF45AC0059709F48BC0B3C00F |
:1016200081EA8FBD81E685BD88E087BBCC2371F060 |
:1016300082B3877E82BB959A80916200811110DE11 |
:10164000409880917A00816087B91BC082B3877D02 |
:1016500082BB949A98C082B3877E82BB959ACC2332 |
:10166000B1F481EA8FBD81E685BD84E087BB8091BE |
:1016700062008111F5DD80917A0087B988B18360BD |
:1016800088B98091B1008F5F8093B1006CC081EA0E |
:101690008FBD81E685BD88E075C081EA8FBD81E69A |
:1016A00085BD84E087BBCC2361F082B38F7C82BB95 |
:1016B000939A809162008111D3DD80917A008260DB |
:1016C00031C082B3877E82BB959A5DC082B38F7C26 |
:1016D00082BB939ACC2371F481EA8FBD81E685BDEC |
:1016E00082E087BB809162008111BADD80917A002F |
:1016F0008160C3CF81EA8FBD81E685BD84E042C0B1 |
:1017000081EA8FBD81E685BD82E087BBCC2369F08D |
:1017100082B3877D82BB949A809162008111A0DDA3 |
:1017200080917A0087B94098ACCF82B38F7C82BB1E |
:10173000939A29C082B3877D82BB949ACC23E9F423 |
:1017400081EA8FBD81E685BD88E087BB809162001C |
:10175000811186DD80917A00826087B988B18360CB |
:1017600088B9C093B10080917D0090917E00019670 |
:1017700090937E0080937D0006C081EA8FBD81E654 |
:1017800085BD82E087BB459903C0CC2309F028CFF3 |
:10179000459B03C0CC2309F423CF10926200FF9134 |
:1017A000EF91CF91BF91AF919F918F917F916F9169 |
:1017B0005F914F913F912F910F900FBE0F901F900F |
:1017C00018958091B10099278230910579F1833085 |
:1017D00091052CF4009771F00197D1F008958430B1 |
:1017E000910509F444C0843091058CF1059709F402 |
:1017F0004CC0089581EA8FBD81E685BD88E087BB36 |
:1018000082B3877D82BB949A80917A0082601AC0ED |
:1018100081EA8FBD81E685BD88E087BB82B3877E84 |
:1018200082BB959A80917A0081601EC081EA8FBD4B |
:1018300081E685BD84E087BB82B3877E82BB959AB3 |
:1018400080917A0087B988B1836088B9089581EA68 |
:101850008FBD81E685BD84E087BB82B38F7C82BB70 |
:10186000939A80917A00826087B94098089581EABE |
:101870008FBD81E685BD82E087BB82B38F7C82BB52 |
:10188000939A80917A008160DDCF81EA8FBD81E6F5 |
:1018900085BD82E087BB82B3877D82BB949A8091AD |
:1018A0007A00E2CF0F931F93CF93DF938C01EB016C |
:1018B000009711F4672BB9F16EE070E081E090E0E1 |
:1018C00037D0FC01892B71F180E88383209771F078 |
:1018D000D387C28781E88383809196039091970391 |
:1018E000892B21F4F0939703E093960301151105DA |
:1018F000C9F0118700878381826083838091980378 |
:1019000090919903892B71F4F0939903E0939803D4 |
:1019100080919A0390919B03892B21F4F0939B0370 |
:10192000E0939A03CF01DF91CF911F910F9108951A |
:101930000F931F93CF93DF93869F8001879F100D96 |
:10194000969F100D1124C8010DD0EC01009721F0D5 |
:10195000A80160E070E0FCD0CE01DF91CF911F9133 |
:101960000F910895CF93DF93AC01029710F442E0FA |
:1019700050E020E030E0A0919E03B0919F03BD01B4 |
:10198000F901109709F44CC08D919C91119784171F |
:10199000950731F14817590738F42115310519F029 |
:1019A0008217930708F49C01FD01A281B38110976F |
:1019B00059F721153105A1F1C901841B950B049735 |
:1019C00008F4A901DB01E0E0F0E0109749F18D9106 |
:1019D0009C91119782179307F9F44217530779F4F2 |
:1019E000ED018A819B81309719F09383828304C033 |
:1019F00090939F0380939E03CD0102964AC0241BBF |
:101A0000350BFD01E20FF31F4193519322503040FB |
:101A10002D933C93CF013DC0FD01A281B381D5CF71 |
:101A200080919C0390919D03892B41F480917500D6 |
:101A30009091760090939D0380939C03E0917300B6 |
:101A4000F0917400309741F4EDB7FEB780917700C4 |
:101A500090917800E81BF90BA0919C03B0919D0335 |
:101A60009F012A1B3B0B2417350788F0CA010296F9 |
:101A70002817390760F0CD01840F951F02969093C7 |
:101A80009D0380939C034D935D93CD0102C080E044 |
:101A900090E0DF91CF910895CF93DF93009709F401 |
:101AA00054C0DC011297ED011B821A8280919E03C3 |
:101AB00090919F03009721F1FC0140E050E0EA176C |
:101AC000FB0718F1ED01FB83EA832D913C911197FF |
:101AD000C20FD31FCE0102968E179F0771F48A8121 |
:101AE0009B81280F391F2E5F3F4F11963C932E93F9 |
:101AF00082819381FD01938382834115510559F4BD |
:101B0000B0939F03A0939E0320C0AF010280F38196 |
:101B1000E02D3097A1F6EA01BB83AA83CA010296A1 |
:101B200028813981820F931F8A179B0771F48D9149 |
:101B30009C911197280F391F2E5F3F4F39832883BF |
:101B4000FD01828193819B838A83DF91CF910895E8 |
:101B5000DC0101C06D9341505040E0F70895991B9E |
:101B600079E004C0991F961708F0961B881F7A9594 |
:101B7000C9F780950895AA1BBB1B51E107C0AA1F96 |
:101B8000BB1FA617B70710F0A61BB70B881F991F1E |
:101B90005A95A9F780959095BC01CD010895A1E2D1 |
:101BA0001A2EAA1BBB1BFD010DC0AA1FBB1FEE1FD7 |
:101BB000FF1FA217B307E407F50720F0A21BB30B22 |
:101BC000E40BF50B661F771F881F991F1A9469F79E |
:101BD00060957095809590959B01AC01BD01CF01FA |
:021BE000089566 |
:101BE200010101FF01010A000000020103040506D0 |
:0A1BF2000701640000A003200000BA |
:00000001FF |
/tags/V0.42/Hex-Files/_BL_Ctrl_History.txt |
---|
0,0 → 1,86 |
+++++++++++++++++++++++++++++++++++ |
Brushless-Control |
Holger Buss |
buss@Mikrocontroller.com |
+++++++++++++++++++++++++++++++++++ |
V0.21 13.01.2007 |
- Erste offizielle Version |
- Unterstützt I2C und PPM |
V0.23 |
- Bei niedrigen PWM-Werten, kam es am Motor zu einem "Knackgeräusch" (besonders in der 16kHz-Variante). |
- Manchmal reagierte der Regler nicht gleich auf das PPM-Einschalt-Signal, wenn der Regler länger auf 0% war |
- Die Kommutierungserkennung läuft jetzt im Interrupt |
- Komponenten zur Drehzahlregelung wieder entfernt, weil sie den Code unleserlich machten |
Kommt in einer späteren Version wahrscheinlich wieder rein |
V0.25 |
- Es wurden zu viele Kommutierungs-Interrupts ausgelöst |
V0.27 02.02.2007 |
- X3D-Protokoll implementiert (für eine Sonderversion des X3D mit serieller Ausgabe) |
V0.31 22.2.2007 |
- Das I2C-Bus Protokoll wurde geändert: |
Jeder Motor wird jetzt mit einem eigenen Datensatz angesprochen |
Aus den Motorreglern kann jetzt Strom und MaxPWM ausgelesen werden |
- Es hatte sich ein Fehler in der Umrechnung des seriellen Wertes (X-3D) eingeschlichen; das ist hier behoben |
Mittels eines PC-Programms (SimTxData.exe) kann das X-3D-Protokoll simuliert und so die Motoren angefahren werden |
V0.32 22.8.2007 - IB |
- Serielle Empfangsroutine eingefügt |
es wird das Resetkommando für ein Bootloader-Update ausgeführt |
- Timerabfragen korrigiert (Wiederanlauf) |
- Versionsausgabe beim Start |
- Screenshot für PonyProg aktualisert (jetzt mit 2,7V Brownout) |
- Adress-Jumper auf BL-Ctrl-Platine V1.1 wird ausgewertet (#define MOTORADRESSE dann auf 0) ! |
- Ausgabe der aktuellen Adresse (seriell) |
V0.33 18.9.2007 - HB |
- Zeitverzögerung bei Lesen der Adresse (für BL-Ctrl V1.1) |
V0.34 27.09.2007 - HB |
- Endstufentest mit Tonfolge implementiert |
Nach dem Start kommt eine Tonfolge, bei der der Regler seine Endstufe testet. |
Im Falle eines Fehlers, werden Buchstaben ausgegeben, die einen Hinweis auf den Fehlerhaften MosFet geben. |
Falls mehrere Buchstaben auftreten, ist der erste ausschlaggebend. |
Falls das Piepen ausbleibt, handelt es sich um einen Überstrom durch Kurzschluss oder dauerhaft eingeschalteten FET. |
Falls der Motor nach der Testprozedur öfter piept und dabei die rote LED blinkt, schaltet der entsprechende Mosfet nicht durch. |
Dann kann man am Blinken (und Buchstaben) den Fehler erkennen. |
Dabei ist: A=A+ (1) B=B+ (2) C=C+ (3) a=A- (4) b=B- (5) c=C- (6) (in Klammern der Blinkcode) |
V0.35 30.09.2007 - HB |
Endstufentest erweitert. |
Die Fehlercodes sind: |
1: Kurzschluss Phase A (gegen B) |
2: Kurzschluss Phase B (gegen A) |
3: Kurzschluss Phase C (gegen B) |
4: Mosfet NA- schaltet nicht ab |
5: Mosfet NB- schaltet nicht ab |
6: Mosfet NC- schaltet nicht ab |
7: Kurzschluss Phase C (gegen A) |
A: NA+ schaltet nicht ein |
B: NB+ schaltet nicht ein |
C: NC+ schaltet nicht ein |
a: NA- schaltet nicht ein |
b: NB- schaltet nicht ein |
c: NC- schaltet nicht ein |
V0.36 09.12.2007 - HB |
Überstrombegrenzung für die 20A-Software verbessert, um den Shunt zu schonen |
Schwellwert der Kurzschlusserkennung erhöht, wegen Motoren mit geringerer Impendanz |
V0.37 21.01.2008 - HB |
Die Genauigkeit der PWM war Drehzahlabhängig |
V0.38 05.03.2008 - HB |
Selbsttest-Routine etwas entschärft. Test auf Phasenkurzschluss entfernt |
V0.41 22.03.2008 - HB |
Version auch für Platinen V1.2 |
Überstromerkennung beim Anwerfen des Motors -> Blinkt 10 mal bei Überstrom in der Startphase |
Das Makefile erzeugt jetzt die richtigen HexFile-Namen |
V0.42 05.04.2009 - HB |
BL-Adressen 5-8 und 9-12 eingefügt |
/tags/V0.42/Hex-Files/_Files.txt |
---|
0,0 → 1,19 |
Dateien: |
-------- |
BrushLess-Ctrl_V0_xx_10A.hex --> Hexfile für BL-Ctrl V1.1 und 1.2 |
BootLoader_MEGA8_8MHZ_Vx_y.hex --> Bootloader für BL-Ctrl (Fusebits beachten !) |
BrushLess-Ctrl_ADR_Vx_xx.hex --> Software für ADR=Motorposition(1 bis 4) |
BrushLess-Ctrl_ADR_Vx_xx_10A.hex --> Software für ADR=Motorposition(1 bis 4) 10A-Stromgrenze |
Testprogramme (Achtung: Motor läuft an!) |
----------------------------------------- |
Test_Manuell_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft ungeregelt mit fester Frequenz |
Test_Schub_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft mit unterschiedlichen Leistungen |
Test_Sollwert_Fix_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft fix mit 7,8% PWM |
Sonstiges: |
---------- |
Fuses_Mega8_8MHZ_*.gif --> Fusebits von Ponyprog (mit und ohne Bootloader) |
/tags/V0.42/PPM_Decode.c |
---|
0,0 → 1,76 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
#include "main.h" |
volatile unsigned int PPM_Signal = 0; |
volatile unsigned char Timer1Overflow = 0; |
volatile unsigned char PPM_Timeout = 0, anz_ppm_werte = 0; // Ungültig, wenn Null |
//############################################################################ |
// |
void InitPPM(void) |
//############################################################################ |
{ |
TCCR1B |= (1<<ICES1)|(1<<ICNC1); |
ICP_POS_FLANKE; |
ICP_INT_ENABLE; |
TIMER1_INT_ENABLE; |
} |
//############################################################################ |
// |
SIGNAL(SIG_OVERFLOW1) |
//############################################################################ |
{ |
Timer1Overflow++; |
} |
//############################################################################ |
// |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int tim_alt; |
static unsigned int ppm; |
if(TCCR1B & (1<<ICES1)) // Positive Flanke |
{ |
Timer1Overflow = 0; |
tim_alt = ICR1; |
ICP_NEG_FLANKE; |
PPM_Timeout = 100; |
} |
else // Negative Flanke |
{ |
ICP_POS_FLANKE; |
#ifdef _32KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 256) / 32; |
#endif |
#ifdef _16KHZ |
ppm = (ICR1 - tim_alt + (int) Timer1Overflow * 512) / 32; |
#endif |
if(ppm < 280) ppm = 280; |
ppm -= 280; |
if(PPM_Signal < ppm) PPM_Signal++; |
else if(PPM_Signal > ppm) PPM_Signal--; |
if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern |
PPM_Signal = ppm; |
if(anz_ppm_werte < 255) anz_ppm_werte++; |
ZeitZumAdWandeln = 1; |
} |
} |
//############################################################################ |
// |
SIGNAL(SIG_INTERRUPT0) |
//############################################################################ |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
} |
/tags/V0.42/PPM_Decode.h |
---|
0,0 → 1,27 |
/*############################################################################ |
############################################################################*/ |
extern volatile unsigned int PPM_Signal; |
extern volatile unsigned char PPM_Timeout, anz_ppm_werte; |
void InitPPM(void); |
#define INT0_ENABLE GIMSK |= 0x40 |
#define INT0_DISABLE GIMSK &= ~0x40 |
#define TIM0_START TIMSK |= 0x01 |
#define TIM0_STOPP TIMSK &= ~0x01 |
#define ICP_INT_ENABLE TIMSK |= 0x20 |
#define ICP_INT_DISABLE TIMSK &= ~0x20 |
#define TIMER1_INT_ENABLE TIMSK |= 0x04 |
#define TIMER1_INT_DISABLE TIMSK &= ~0x04 |
#define TIMER2_INT_ENABLE TIMSK |= 0x40 |
#define TIMER2_INT_DISABLE TIMSK &= ~0x40 |
#define INT0_POS_FLANKE MCUCR |= 0x01 |
#define INT0_ANY_FLANKE MCUCR |= 0x01 |
#define INT0_NEG_FLANKE MCUCR &= ~0x01 |
#define CLR_INT0_FLAG GIFR &= ~0x40 |
#define INIT_INT0_FLANKE MCUCR &= ~0x03; MCUCR |= 0x02; |
#define TIMER0_PRESCALER TCCR0 |
#define ICP_POS_FLANKE TCCR1B |= (1<<ICES1) |
#define ICP_NEG_FLANKE TCCR1B &= ~(1<<ICES1) |
/tags/V0.42/analog.c |
---|
0,0 → 1,77 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
//############################################################################ |
//Init ADC |
void ADC_Init(void) |
//############################################################################ |
{ |
ADCSRA = 0xA6; // Free Run & 1MHZ |
ADMUX = 7 | IntRef; // Kanal 7 |
ADCSRA |= 0x40; // Start |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void AdConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = 0x06 | IntRef; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = 0x06 | IntRef; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
i = ADCW * 4; |
// if(i > 300) i = 300; |
Strom = (i + Strom * 7) / 8; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
//############################################################################ |
//Strom Analogwerte lesen |
unsigned int MessAD(unsigned char channel) |
//############################################################################ |
{ |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
channel |= IntRef; |
ADMUX = channel; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = channel; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
return(ADCW); |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void FastADConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
i = MessAD(6) * 4; |
// i = ADCW * 4; |
if(i > 200) i = 200; |
Strom = i;//(i + Strom * 1) / 2; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
/tags/V0.42/analog.h |
---|
0,0 → 1,6 |
extern void ADC_Init(void); |
extern void GetAnalogWerte(void); |
extern void AdConvert(void); |
extern void FastADConvert(void); |
/tags/V0.42/avr.mak |
---|
0,0 → 1,129 |
# TASKING EDE (Windows based integrated Embedded Development Environment) |
# |
# This makefile has been generated by TASKING EDE |
# |
# Toolchain: TASKING C for C166/ST10 v6.0 r4 |
# |
BINDIR = c:\c166\bin |
INCDIR = c:\c166\include |
LIBDIR = c:\c166\lib |
M166INC = c:\c166\include |
export M166INC |
CC166BIN = c:\c166\bin |
export CC166BIN |
PROJ = avr |
PROJDIR = c:\winavr\projects\flug\bl_mc_0_14 |
PRODDIR = c:\c166 |
OUTDIR = |
OPT_CC = -Ic:\c166\include -xmifp -Ms -FFSC -Ot -OB -OE -zautobitastruct-4 -zautobita-0 -zswitch_tabmem_default -s -wstrict -g -zvolatile_union -A1 -O1 |
OPT_MPP = DEF(_CPU,167) DEF(_EXT,1) DEF(__XPEN,0) DEF(__WRCFG,0) DEF(__CLKEN,0) DEF(__BYTDIS,0) DEF(__ROMEN,0) DEF(__RDYEN0,0) DEF(__SGTDIS,0) DEF(__STKSZ,0) DEF(__MCTC,1) DEF(__RWDC0,0) DEF(__MTTC0,0) DEF(__ALECTL0,0) DEF(__BUSACT0,1) DEF(__RDYEN0,0) DEF(__CSREN0,0) DEF(__CSWEN0,0) DEF(__BUSACT1,0) DEF(__BUSACT2,0) DEF(__BUSACT3,0) DEF(__BUSACT4,0) DEF(EVA,1) DEF(EX_AB,0) DEF(FLOAT,1) DEF(BIT_INIT,0) DEF(MODEL,SMALL) DEF(_USRSTACK,0) DEF(_SINGLE_FP,0) WA(1) |
OPT_AS = PL(60) PW(132) TA(8) WA(1) CHECKCPU16 CHECKBUS18 EX NOM166 SN(reg167.def) |
OPT_LC = _avr.ilo -cf -Ms -xmifp |
OPT_XVW = --single_instance -tcfg sim167.cfg -i -a 100 -b 200 -c 32 -s 26 |
all : "$(PROJ).abs" |
"uart.src" : "uart.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"uart.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "uart.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"uart.obj" : "uart.src" |
"c:\c166\bin\a166.exe" "uart.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"analog.src" : "analog.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"analog.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "analog.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"analog.obj" : "analog.src" |
"c:\c166\bin\a166.exe" "analog.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"interrupt4.src" : "interrupt4.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"interrupt4.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "interrupt4.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"interrupt4.obj" : "interrupt4.src" |
"c:\c166\bin\a166.exe" "interrupt4.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"main.src" : "main.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" "printf_p.h" |
"main.src" : "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "main.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"main.obj" : "main.src" |
"c:\c166\bin\a166.exe" "main.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"ppm_decode.src" : "ppm_decode.c" "main.h" "twislave.h" "old_macros.h" "analog.h" |
"ppm_decode.src" : "uart.h" "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "ppm_decode.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"ppm_decode.obj" : "ppm_decode.src" |
"c:\c166\bin\a166.exe" "ppm_decode.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"printf_p.src" : "printf_p.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"printf_p.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "printf_p.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"printf_p.obj" : "printf_p.src" |
"c:\c166\bin\a166.exe" "printf_p.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"timer0.src" : "timer0.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"timer0.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "timer0.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"timer0.obj" : "timer0.src" |
"c:\c166\bin\a166.exe" "timer0.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"twislave.src" : "twislave.c" "main.h" "twislave.h" "old_macros.h" "analog.h" "uart.h" |
"twislave.src" : "printf_p.h" "timer0.h" "ppm_decode.h" |
"c:\c166\bin\c166.exe" "twislave.c" -f <<EOF |
${separate "\n" $(OPT_CC) } |
EOF |
"twislave.obj" : "twislave.src" |
"c:\c166\bin\a166.exe" "twislave.src" -f <<EOF |
${separate "\n" $(OPT_AS) } |
EOF |
"$(PROJ).out" : "uart.obj" "analog.obj" "interrupt4.obj" "main.obj" "ppm_decode.obj" |
"$(PROJ).out" : "printf_p.obj" "timer0.obj" "twislave.obj" "_avr.ilo" |
"c:\c166\bin\cc166.exe" -o $@ -f <<EOF |
${separate "\n" $(match .obj $!) $(match .lno $!) $(match .lib $!) $(OPT_LC)} |
EOF |
"$(PROJ).abs" : "$(PROJ).out" |
"c:\c166\bin\ieee166.exe" $! $@ |
# Copyright (c) 2001 Altium, Ltd. |
# Serial: 979910-094 |
# EDE Version: 2.7 r5 |
/tags/V0.42/avr.opm |
---|
0,0 → 1,4 |
-G "C:\WinAVR\Projects\Flug\BL_MC_0_14\" |
-err "avr.err" |
-r |
-f "avr.mak" |
/tags/V0.42/avr_ctrl.psp |
---|
0,0 → 1,16 |
;Codewright Project Space File (do not remove or modify this line) |
[State] |
StateWindowFrame=10,18,939,1018,0x43097fca |
ProjSpaceFlags=0x00000000, 1 |
ProjViewSetShow=Abb |
[Project] |
ConfigSetUserWorkspace='' |
ConfigSetUserWorkspaceParser='' |
ConfigSetUserWorkspaceTimeStamp=0 |
ConfigSetUserWorkspaceAutoSync=0 |
[Project.".\avr.pjt"] |
[Project."..\Flight-Ctrl_V0_05\AVR.pjt"] |
/tags/V0.42/main.c |
---|
0,0 → 1,774 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Copyright (c) 12.2007 Holger Buss |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung oder Nutzung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, our webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int PWM = 0; |
unsigned int Strom = 0,RuheStrom; //ca. in 0,1A |
unsigned char Strom_max = 0; |
unsigned char Mittelstrom = 0; |
unsigned int Drehzahl = 0; // in 100UPM 60 = 6000 |
unsigned int KommutierDelay = 10; |
unsigned int I2C_Timeout = 0; |
unsigned int SIO_Timeout = 0; |
unsigned int SollDrehzahl = 0; |
unsigned int IstDrehzahl = 0; |
unsigned int DrehZahlTabelle[256];//vorberechnete Werte zur Drehzahlerfassung |
unsigned char ZeitFuerBerechnungen = 1; |
unsigned char MotorAnwerfen = 0; |
unsigned char MotorGestoppt = 1; |
unsigned char MaxPWM = MAX_PWM; |
unsigned int CntKommutierungen = 0; |
unsigned int SIO_Drehzahl = 0; |
unsigned char ZeitZumAdWandeln = 1; |
unsigned char MotorAdresse = 1; |
unsigned char PPM_Betrieb = 1; |
unsigned char HwVersion; |
unsigned char IntRef = 0; |
unsigned int MinUpmPulse; |
//############################################################################ |
// |
void SetPWM(void) |
//############################################################################ |
{ |
unsigned char tmp_pwm; |
tmp_pwm = PWM; |
if(tmp_pwm > MaxPWM) // Strombegrenzung |
{ |
tmp_pwm = MaxPWM; |
PORTC |= ROT; |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
PORTD &= ~0x38; |
PORTC |= ROT; |
DebugOut.Analog[6]++; |
Strom--; |
} |
else |
{ |
#ifdef _32KHZ |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
#ifdef _16KHZ |
//OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
} |
//GRN_ON; |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
DebugOut.Analog[4] = OCR2; |
// DebugOut.Analog[5] = PWM; |
} |
//############################################################################ |
// |
void PWM_Init(void) |
//############################################################################ |
{ |
PWM_OFF; |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
/* TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
*/ |
} |
//############################################################################ |
// |
void Wait(unsigned char dauer) |
//############################################################################ |
{ |
dauer = (unsigned char)TCNT0 + dauer; |
while((TCNT0 - dauer) & 0x80); |
} |
void RotBlink(unsigned char anz) |
{ |
sei(); // Interrupts ein |
while(anz--) |
{ |
PORTC |= ROT; |
Delay_ms(300); |
PORTC &= ~ROT; |
Delay_ms(300); |
} |
Delay_ms(1000); |
} |
//############################################################################ |
// |
char Anwerfen(unsigned char pwm) |
//############################################################################ |
{ |
unsigned long timer = 300,i; |
DISABLE_SENSE_INT; |
PWM = 5; |
SetPWM(); |
Manuell(); |
// Delay_ms(200); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) |
{ |
FastADConvert(); |
if(Strom > 120) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
} |
PWM = pwm; |
while(1) |
{ |
for(i=0;i<timer; i++) |
{ |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
Wait(100); // warten |
} |
DebugAusgaben(); |
FastADConvert(); |
if(Strom > 60) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
timer-= timer/15+1; |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return(1); } |
Manuell(); |
Phase++; |
Phase %= 6; |
AdConvert(); |
PWM = pwm; |
SetPWM(); |
if(SENSE) |
{ |
PORTD ^= GRUEN; |
} |
} |
} |
/* |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
*/ |
#define TEST_STROMGRENZE 120 |
unsigned char DelayM(unsigned int timer) |
{ |
while(timer--) |
{ |
FastADConvert(); |
if(Strom > (TEST_STROMGRENZE + RuheStrom)) |
{ |
FETS_OFF; |
return(1); |
} |
} |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
{ |
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
return(0); |
} |
/* |
void ShowSense(void) |
{ |
if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
*/ |
#define HIGH_A_EIN PORTB |= 0x08 |
#define HIGH_B_EIN PORTB |= 0x04 |
#define HIGH_C_EIN PORTB |= 0x02 |
#define LOW_A_EIN PORTD |= 0x08 |
#define LOW_B_EIN PORTD |= 0x10 |
#define LOW_C_EIN PORTD |= 0x20 |
void MotorTon(void) |
//############################################################################ |
{ |
unsigned char ADR_TAB[9] = {0,0,2,1,3,4,5,6,7}; |
unsigned int timer = 300,i; |
unsigned int t = 0; |
unsigned char anz = 0,MosfetOkay = 0, grenze = 50; |
PORTC &= ~ROT; |
Delay_ms(300 * ADR_TAB[MotorAdresse]); |
DISABLE_SENSE_INT; |
cli();//Globale Interrupts Ausschalten |
uart_putchar('\n'); |
STEUER_OFF; |
Strom_max = 0; |
DelayM(50); |
RuheStrom = Strom_max; |
// uart_putchar(RuheStrom + 'A'); |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Strom = 0; |
/* |
LOW_B_EIN; |
HIGH_A_EIN; |
if(DelayM(3)) |
{ |
anz = 1; |
uart_putchar('1'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_A_EIN; |
HIGH_B_EIN; |
if(DelayM(3)) |
{ |
anz = 2; |
uart_putchar('2'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_B_EIN; // Low C ein |
HIGH_C_EIN; // High B ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('3'); |
} |
FETS_OFF; |
Delay(1000); |
LOW_A_EIN; // Low A ein; und A gegen C |
HIGH_C_EIN; // High C ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('7'); |
} |
FETS_OFF; |
DelayM(10000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
*/ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ LOW-Mosfets auf Schalten und Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_A_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_A_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;} |
Delay(5); |
} |
Delay(10000); |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_B_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_B_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); FETS_OFF;break;} |
Delay(5); |
} |
Strom = 0; |
Delay(10000); |
for(i=0;i<t;i++) |
{ |
LOW_C_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_C_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); FETS_OFF; break;} |
Delay(5); |
} |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_A; |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
LOW_C_EIN; // Low C ein |
Strom = 0; |
#define TONDAUER 40000 |
#define SOUND_E 1 // 1 |
#define SOUND1_A 300 |
#define SOUND2_A 330 |
#define SOUND3_A 360 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_A_EIN; // Test A |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
FETS_OFF; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Low-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// SENSE_B; |
LOW_A_EIN; // Low A ein |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(0) > 128) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
//++++++++++++++++++++++++++++++++++++ |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(2) > 128) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(1) > 128) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
sei();//Globale Interrupts Einschalten |
// Delay_ms(250 * MotorAdresse); |
/* |
LOW_A_EIN; // Low B ein |
#define SOUND8_A 650 |
for(i=0; i<(TONDAUER / SOUND8_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
PORTB = 0; |
Delay(SOUND8_A); |
} |
*/ |
Delay_ms(300 * (4-ADR_TAB[MotorAdresse])); |
if(!(MosfetOkay & 0x01)) { anz = 1; UDR='A'; } else |
if(!(MosfetOkay & 0x02)) { anz = 2; UDR='B'; } else |
if(!(MosfetOkay & 0x04)) { anz = 3; UDR='C'; } else |
if(!(MosfetOkay & 0x08)) { anz = 4; UDR='a'; } else |
if(!(MosfetOkay & 0x10)) { anz = 5; UDR='b'; } else |
if(!(MosfetOkay & 0x20)) { anz = 6; UDR='c'; } |
// if(anz) Delay_ms(1000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
RotBlink(anz); |
uart_putchar('.'); |
} |
//############################################################################ |
// |
unsigned char SollwertErmittlung(void) |
//############################################################################ |
{ |
static unsigned int sollwert = 0; |
unsigned int ppm; |
if(!I2C_Timeout) // bei Erreichen von 0 ist der Wert ungültig |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
PPM_Betrieb = 0; |
ICP_INT_DISABLE; |
PORTC &= ~ROT; |
} |
else |
if(anz_ppm_werte > 20) // es gibt gültige PPM-Daten |
{ |
PPM_Betrieb = 1; |
ppm = PPM_Signal; |
if(ppm > 300) ppm = 0; // ungültiges Signal |
if(ppm > 200) ppm = 200; |
if(ppm <= MIN_PPM) sollwert = 0; |
else |
{ |
sollwert = (int) MIN_PWM + ((MAX_PWM - MIN_PWM) * (ppm - MIN_PPM)) / (190 - MIN_PPM); |
} |
PORTC &= ~ROT; |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
PORTC |= ROT; |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
PPM_Betrieb = 0; |
PORTC &= ~ROT; |
ICP_INT_DISABLE; |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
return(sollwert); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
char altPhase = 0; |
int test = 0; |
unsigned int Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
DDRC = 0x08; |
PORTC = 0x08; |
DDRD = 0x3A; |
PORTD = 0x00; |
DDRB = 0x0E; |
PORTB = 0x31; |
#define ADRESSOFFSET 0 |
#if (MOTORADRESSE == 0) |
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl |
for(test=0;test<500;test++); |
if(PINB & ADR1) |
{ |
if (PINB & ADR2) MotorAdresse = 1 + ADRESSOFFSET; |
else MotorAdresse = 2 + ADRESSOFFSET; |
} |
else |
{ |
if (PINB & ADR2) MotorAdresse = 3 + ADRESSOFFSET; |
else MotorAdresse = 4 + ADRESSOFFSET; |
} |
HwVersion = 11; |
#else |
MotorAdresse = MOTORADRESSE; |
HwVersion = 10; |
#endif |
if(PIND & 0x80) {HwVersion = 12; IntRef = 0xc0;} |
DDRD = 0xBA; |
UART_Init(); |
Timer0_Init(); |
sei();//Globale Interrupts Einschalten |
// Am Blinken erkennt man die richtige Motoradresse |
/* |
for(test=0;test<5;test++) |
{ |
if(test == MotorAdresse) PORTD |= GRUEN; |
Delay_ms(150); |
PORTD &= ~GRUEN; |
Delay_ms(250); |
} |
Delay_ms(500); |
*/ |
// UART_Init(); // war doppelt |
PWM_Init(); |
InitIC2_Slave(0x50); |
InitPPM(); |
Blink = SetDelay(101); |
Blink2 = SetDelay(102); |
MinUpmPulse = SetDelay(103); |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)) |
{ |
if(SollwertErmittlung()) break; |
} |
GRN_ON; |
PWM = 0; |
SetPWM(); |
SFIOR = 0x08; // Analog Comperator ein |
ADMUX = 1; |
MinUpmPulse = SetDelay(10); |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
if(!SollwertErmittlung()) MotorTon(); |
//MotorTon(); |
PORTB = 0x31; // Pullups wieder einschalten |
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung |
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder |
while (1) |
{ |
//ShowSense(); |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Phase != altPhase) // es gab eine Kommutierung im Interrupt |
{ |
MotorGestoppt = 0; |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
MinUpmPulse = SetDelay(250); // Timeout, falls ein Motor stehen bleibt |
altPhase = Phase; |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!PWM) // Sollwert == 0 |
{ |
MotorAnwerfen = 0; // kein Startversuch |
ZeitFuerBerechnungen = 0; |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(MotorGestopptTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
STEUER_OFF; |
} |
} |
else |
{ |
if(MotorGestoppt) MotorAnwerfen = 1; // Startversuch |
MotorGestopptTimer = SetDelay(1500); |
} |
if(MotorGestoppt && !TEST_SCHUB) PWM = 0; |
SetPWM(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
{ |
if(MotorGestoppt) |
{ |
// GRN_ON; |
FastADConvert(); |
} |
if(SIO_DEBUG) |
{ |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
if(!UebertragungAbgeschlossen) SendUart(); |
else DatenUebertragung(); |
} |
// Berechnen des Mittleren Stroms zur (langsamen) Strombegrenzung |
if(CheckDelay(MittelstromTimer)) |
{ |
MittelstromTimer = SetDelay(50); // alle 50ms |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
else if(Mittelstrom > Strom) Mittelstrom--; |
if(Strom > MAX_STROM) MaxPWM -= MaxPWM / 32; |
if((Mittelstrom > LIMIT_STROM))// Strom am Limit? |
{ |
if(MaxPWM) MaxPWM--;// dann die Maximale PWM herunterfahren |
PORTC |= ROT; |
} |
else |
{ |
if(MaxPWM < MAX_PWM) MaxPWM++; |
} |
} |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
{ |
DrehzahlMessTimer = SetDelay(10); |
SIO_Drehzahl = CntKommutierungen;//(6 * CntKommutierungen) / (POLANZAHL / 2); |
CntKommutierungen = 0; |
// if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
} |
#if TEST_SCHUB == 1 |
{ |
if(CheckDelay(TestschubTimer)) |
{ |
TestschubTimer = SetDelay(1500); |
switch(test) |
{ |
case 0: PWM = 50; test++; break; |
case 1: PWM = 130; test++; break; |
case 2: PWM = 60; test++; break; |
case 3: PWM = 140; test++; break; |
case 4: PWM = 150; test = 0; break; |
default: test = 0; |
} |
} |
} |
#endif |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
{ |
MotorGestoppt = 1; |
DISABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
if(MotorAnwerfen) |
{ |
PORTC &= ~ROT; |
Strom_max = 0; |
MotorAnwerfen = 0; |
if(Anwerfen(10)) |
{ |
// GRN_ON; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(20); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 15; |
SetPWM(); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) // kurz Durchstarten |
{ |
if(Strom > LIMIT_STROM/2) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
MotorAnwerfen = 1; |
} |
} |
// Drehzahlmessung wieder aufsetzen |
DrehzahlMessTimer = SetDelay(50); |
altPhase = 7; |
} |
else if(SollwertErmittlung()) MotorAnwerfen = 1; |
} |
} |
} // ZeitFuerBerechnungen |
} // while(1) - Hauptschleife |
} |
/tags/V0.42/main.elf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.42/main.h |
---|
0,0 → 1,142 |
#ifndef _MAIN_H |
#define _MAIN_H |
//#define MOTORADRESSE 0 // Adresse (1-4) 0 = Motoradresse über Lötjumper auf BL-Ctrl V1.1 |
#define MANUELL_PWM 0 // zur manuellen Vorgabe der PWM Werte: 0-255 |
#define TEST_MANUELL 0 // zum Testen der Hardware ohne Kommutierungsdetektion Werte: 0-255 (PWM) |
#define TEST_SCHUB 0 // Erzeugt ein Schubmuster Werte: 0 = normal 1 = Test |
#define POLANZAHL 12 // Anzahl der Pole (Magnete) Wird nur zur Drehzahlausgabe über Debug gebraucht |
#define MAX_PWM 255 |
#define MIN_PWM 3 |
#define MIN_PPM 10 // ab hier (PPM-Signal) schaltet der Regler erst ein |
#define FILTER_PPM 7 // wie stark soll das PPM-Signal gefiltert werden (Werte: 0-30)? |
#define SIO_DEBUG 0 // Testwertausgaben auf der seriellen Schnittstelle |
#define X3D_SIO 0 // serielles Protokoll des X3D (38400Bd) Achtung: dann muss SIO_DEBUG = 0 sein |
#define _16KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define _32KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define FDD6637_IRLR7843 1 // bessere MosFet bestückt? bewirkt höhere Stromgrenzen |
#ifdef _16KHZ |
#if FDD_IRLR == 1 // bessere Fets = mehr Strom zulassen |
#define MAX_STROM 200 // ab ca. 20A PWM ausschalten |
#define LIMIT_STROM 120 // ab ca. 12A PWM begrenzen |
#else |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 65 // ab ca. 6,5A PWM begrenzen |
#endif |
#endif |
#ifdef _32KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 50 // ab ca. 5,0A PWM begrenzen |
#endif |
#define SYSCLK 8000000L //Quarz Frequenz in Hz |
#define GRN_ON {if(HwVersion < 12) PORTD |= GRUEN; else PORTD &= ~GRUEN;} |
#define GRN_OFF {if(HwVersion > 11) PORTD |= GRUEN; else PORTD &= ~GRUEN;} |
//Robbe Roxxy 2824-34 mit Todd 10x4,5 bei 16kHz |
//PWM Strom Schub |
//10 0,18A 21g |
//20 0,30A 38g |
//30 0,40A 49g |
//40 0,54A 60g |
//50 0,70A 83g |
//60 0,95A 102g |
//70 1,25A 128g |
//80 1,50A 151g |
//90 1,83A 175g |
//100 2,25A 206g |
//110 2,66A 228g |
//120 3,10A 257g |
//130 3,55A 278g |
//140 4,00A 305g |
//150 4,50A 330g |
//160 5,30A 355g |
//170 5,85A 387g |
//180 6,40A 400g |
//190 7,10A 425g |
//200 7,60A 460g |
//0,5A 63g 14% |
//1,0A 110g 24% |
//1,5A 170g 32% |
//2,0A 195g 37% |
//2,5A 230g 41% |
//3,0A 260g 46% |
//3,5A 290g 50% |
//4,0A 310g 53% |
//4,5A 340g 58% |
//5,0A 360g 63% |
//5,5A 380g 67% |
//6,0A 400g 68% |
//6,5A 420g 70% |
//7,0A 450g 75% |
//7,5A 460g 78% |
//8,0A 475g 82% |
//9,0A 550g 86% |
//11 A 600g 100% |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "twislave.h" |
#include "old_macros.h" |
#include "analog.h" |
#include "uart.h" |
#include "timer0.h" |
#include "BLMC.h" |
#include "PPM_Decode.h" |
extern unsigned int I2C_Timeout; |
extern unsigned int SIO_Timeout; |
extern unsigned int PWM; |
extern unsigned int Strom; //ca. in 0,1A |
extern unsigned char Strom_max; |
extern unsigned char Mittelstrom; |
extern unsigned int CntKommutierungen; |
extern unsigned char MotorAnwerfen; |
extern unsigned char MotorGestoppt; |
extern unsigned char ZeitZumAdWandeln; |
extern unsigned char MaxPWM; |
extern unsigned char MotorAdresse; |
extern unsigned char PPM_Betrieb; |
extern unsigned char HwVersion; |
extern unsigned char IntRef; |
#define ROT 0x08 |
#define GRUEN 0x80 |
#define ADR1 0x40 // für Motoradresswahl |
#define ADR2 0x80 // |
#if defined(__AVR_ATmega8__) |
# define OC1 PB1 |
# define DDROC DDRB |
# define OCR OCR1A |
# define PWM10 WGM10 |
# define PWM11 WGM11 |
#endif |
#endif //_MAIN_H |
/tags/V0.42/main.lss |
---|
0,0 → 1,4534 |
main.elf: file format elf32-avr |
Sections: |
Idx Name Size VMA LMA File off Algn |
0 .text 00001bec 00000000 00000000 00000094 2**0 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
1 .data 00000024 00800060 00001bec 00001c80 2**0 |
CONTENTS, ALLOC, LOAD, DATA |
2 .bss 00000156 00800084 00800084 00001ca4 2**0 |
ALLOC |
3 .noinit 00000000 008001da 008001da 00001ca4 2**0 |
CONTENTS |
4 .eeprom 00000000 00810000 00810000 00001ca4 2**0 |
CONTENTS |
5 .stab 0000036c 00000000 00000000 00001ca4 2**2 |
CONTENTS, READONLY, DEBUGGING |
6 .stabstr 00000084 00000000 00000000 00002010 2**0 |
CONTENTS, READONLY, DEBUGGING |
7 .debug_aranges 000000b4 00000000 00000000 00002094 2**0 |
CONTENTS, READONLY, DEBUGGING |
8 .debug_pubnames 000006f5 00000000 00000000 00002148 2**0 |
CONTENTS, READONLY, DEBUGGING |
9 .debug_info 00001a41 00000000 00000000 0000283d 2**0 |
CONTENTS, READONLY, DEBUGGING |
10 .debug_abbrev 00000774 00000000 00000000 0000427e 2**0 |
CONTENTS, READONLY, DEBUGGING |
11 .debug_line 0000169d 00000000 00000000 000049f2 2**0 |
CONTENTS, READONLY, DEBUGGING |
12 .debug_str 00000874 00000000 00000000 0000608f 2**0 |
CONTENTS, READONLY, DEBUGGING |
Disassembly of section .text: |
00000000 <__vectors>: |
0: 0c 94 85 00 jmp 0x10a <__init> |
4: 0c 94 7e 0b jmp 0x16fc <__vector_1> |
8: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
10: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
14: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
18: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
1c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
20: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
24: 0c 94 67 09 jmp 0x12ce <__vector_9> |
28: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
2c: 0c 94 96 0b jmp 0x172c <__vector_11> |
30: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
34: 0c 94 18 02 jmp 0x430 <__vector_13> |
38: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
3c: 0c 94 e3 01 jmp 0x3c6 <__vector_15> |
40: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
44: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
48: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
4c: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
50: 0c 94 a0 00 jmp 0x140 <__bad_interrupt> |
00000054 <__ctors_end>: |
54: 20 2d mov r18, r0 |
56: 2d 20 and r2, r13 |
58: 52 65 ori r21, 0x52 ; 82 |
5a: 6d 6f ori r22, 0xFD ; 253 |
5c: 74 65 ori r23, 0x54 ; 84 |
5e: 20 20 and r2, r0 |
60: 2d 2d mov r18, r13 |
62: 20 20 and r2, r0 |
64: 20 20 and r2, r0 |
66: 20 20 and r2, r0 |
... |
00000069 <__c.1>: |
69: 20 2d 2d 20 44 69 73 70 6c 61 79 20 2d 2d 20 20 -- Display -- |
79: 20 20 20 20 00 . |
0000007e <__c.2>: |
7e: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |
8e: 20 20 20 20 00 . |
00000093 <__c.3>: |
93: 20 20 77 77 77 2e 4d 69 63 72 6f 53 50 53 2e 63 www.MicroSPS.c |
a3: 6f 6d 20 20 00 om . |
000000a8 <__c.2>: |
a8: 25 73 00 %s. |
000000ab <__c.3>: |
ab: 25 73 00 %s. |
000000ae <__c.4>: |
ae: 25 73 00 %s. |
000000b1 <__c.5>: |
b1: 25 73 00 %s. |
000000b4 <__c.3>: |
b4: 56 65 72 62 69 6e 64 65 6e 20 6d 69 74 00 Verbinden mit. |
000000c2 <__c.4>: |
c2: 4d 69 63 72 6f 53 50 53 3a 25 32 69 20 00 MicroSPS:%2i . |
000000d0 <__c.5>: |
d0: 4d 61 78 20 41 64 72 65 73 73 65 00 Max Adresse. |
000000dc <__c.6>: |
dc: 25 32 69 20 00 %2i . |
000000e1 <__c.7>: |
e1: 43 68 65 63 6b 73 75 6d 00 Checksum. |
000000ea <__c.8>: |
ea: 45 72 72 6f 72 73 3a 25 35 69 20 00 Errors:%5i . |
000000f6 <__c.9>: |
f6: 44 69 73 70 6c 61 79 00 Display. |
000000fe <__c.10>: |
fe: 5a 65 69 6c 65 6e 3a 25 31 69 20 00 Zeilen:%1i . |
0000010a <__init>: |
10a: 11 24 eor r1, r1 |
10c: 1f be out 0x3f, r1 ; 63 |
10e: cf e5 ldi r28, 0x5F ; 95 |
110: d8 e0 ldi r29, 0x08 ; 8 |
112: de bf out 0x3e, r29 ; 62 |
114: cd bf out 0x3d, r28 ; 61 |
00000116 <__do_copy_data>: |
116: 10 e0 ldi r17, 0x00 ; 0 |
118: a0 e6 ldi r26, 0x60 ; 96 |
11a: b0 e0 ldi r27, 0x00 ; 0 |
11c: ec ee ldi r30, 0xEC ; 236 |
11e: fb e1 ldi r31, 0x1B ; 27 |
120: 02 c0 rjmp .+4 ; 0x126 <.do_copy_data_start> |
00000122 <.do_copy_data_loop>: |
122: 05 90 lpm r0, Z+ |
124: 0d 92 st X+, r0 |
00000126 <.do_copy_data_start>: |
126: a4 38 cpi r26, 0x84 ; 132 |
128: b1 07 cpc r27, r17 |
12a: d9 f7 brne .-10 ; 0x122 <.do_copy_data_loop> |
0000012c <__do_clear_bss>: |
12c: 11 e0 ldi r17, 0x01 ; 1 |
12e: a4 e8 ldi r26, 0x84 ; 132 |
130: b0 e0 ldi r27, 0x00 ; 0 |
132: 01 c0 rjmp .+2 ; 0x136 <.do_clear_bss_start> |
00000134 <.do_clear_bss_loop>: |
134: 1d 92 st X+, r1 |
00000136 <.do_clear_bss_start>: |
136: aa 3d cpi r26, 0xDA ; 218 |
138: b1 07 cpc r27, r17 |
13a: e1 f7 brne .-8 ; 0x134 <.do_clear_bss_loop> |
13c: 0c 94 e5 00 jmp 0x1ca <main> |
00000140 <__bad_interrupt>: |
140: 0c 94 00 00 jmp 0x0 <__vectors> |
00000144 <Sekundentakt_Init>: |
unsigned int IntervallDebug = 250, IntervallDisplay = 120; |
void Sekundentakt_Init(void) |
{ |
_SekTimer = SetDelay(1000); |
144: 88 ee ldi r24, 0xE8 ; 232 |
146: 93 e0 ldi r25, 0x03 ; 3 |
148: 0e 94 a8 09 call 0x1350 <SetDelay> |
14c: 90 93 91 00 sts 0x0091, r25 |
150: 80 93 90 00 sts 0x0090, r24 |
154: 08 95 ret |
00000156 <Sekundentakt>: |
} |
void Sekundentakt(void) |
{ |
if(CheckDelay(_SekTimer)) |
156: 80 91 90 00 lds r24, 0x0090 |
15a: 90 91 91 00 lds r25, 0x0091 |
15e: 0e 94 b1 09 call 0x1362 <CheckDelay> |
162: 88 23 and r24, r24 |
164: 31 f1 breq .+76 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
GetKeyboard(); |
166: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
_SekTimer += 1000; |
16a: 80 91 90 00 lds r24, 0x0090 |
16e: 90 91 91 00 lds r25, 0x0091 |
172: 88 51 subi r24, 0x18 ; 24 |
174: 9c 4f sbci r25, 0xFC ; 252 |
176: 90 93 91 00 sts 0x0091, r25 |
17a: 80 93 90 00 sts 0x0090, r24 |
if(!CntDatensaetzeProSekunde) UebertragungUnterbrochen = 1; else UebertragungUnterbrochen = 0; |
17e: 80 91 66 00 lds r24, 0x0066 |
182: 88 23 and r24, r24 |
184: 21 f4 brne .+8 ; 0x18e <Sekundentakt+0x38> |
186: 81 e0 ldi r24, 0x01 ; 1 |
188: 80 93 84 00 sts 0x0084, r24 |
18c: 02 c0 rjmp .+4 ; 0x192 <Sekundentakt+0x3c> |
18e: 10 92 84 00 sts 0x0084, r1 |
CntDatensaetzeProSekunde = 0; |
192: 10 92 66 00 sts 0x0066, r1 |
if(++Sekunde == 60) |
196: 80 91 8d 00 lds r24, 0x008D |
19a: 8f 5f subi r24, 0xFF ; 255 |
19c: 80 93 8d 00 sts 0x008D, r24 |
1a0: 8c 33 cpi r24, 0x3C ; 60 |
1a2: 39 f4 brne .+14 ; 0x1b2 <Sekundentakt+0x5c> |
{ |
Sekunde = 0; |
1a4: 10 92 8d 00 sts 0x008D, r1 |
Minute++; |
1a8: 80 91 8c 00 lds r24, 0x008C |
1ac: 8f 5f subi r24, 0xFF ; 255 |
1ae: 80 93 8c 00 sts 0x008C, r24 |
1b2: 08 95 ret |
000001b4 <Init>: |
} |
} |
} |
void Init(void) |
{ |
VersionInfo.Hauptversion = 0; |
1b4: 10 92 c9 00 sts 0x00C9, r1 |
VersionInfo.Nebenversion = 99; |
1b8: 83 e6 ldi r24, 0x63 ; 99 |
1ba: 80 93 ca 00 sts 0x00CA, r24 |
VersionInfo.PCKompatibel = 1; |
1be: 81 e0 ldi r24, 0x01 ; 1 |
1c0: 80 93 cb 00 sts 0x00CB, r24 |
VersionInfo.Commercial = 0x00; |
1c4: 10 92 cc 00 sts 0x00CC, r1 |
1c8: 08 95 ret |
000001ca <main>: |
} |
#define MENU 0 |
#define REMOTE 1 |
//############################################################################ |
//Hauptprogramm |
void main (void) |
//############################################################################ |
{ |
1ca: ca e5 ldi r28, 0x5A ; 90 |
1cc: d8 e0 ldi r29, 0x08 ; 8 |
1ce: de bf out 0x3e, r29 ; 62 |
1d0: cd bf out 0x3d, r28 ; 61 |
char z,txt[]= {"Moin"},key,key_old = 255; |
1d2: de 01 movw r26, r28 |
1d4: 11 96 adiw r26, 0x01 ; 1 |
1d6: e7 e6 ldi r30, 0x67 ; 103 |
1d8: f0 e0 ldi r31, 0x00 ; 0 |
1da: 85 e0 ldi r24, 0x05 ; 5 |
1dc: 01 90 ld r0, Z+ |
1de: 0d 92 st X+, r0 |
1e0: 81 50 subi r24, 0x01 ; 1 |
1e2: e1 f7 brne .-8 ; 0x1dc <main+0x12> |
int test = 0; |
unsigned int DelayTast; |
unsigned int DelayDaten,DelayDisplay; |
unsigned char mode = REMOTE; |
1e4: 91 e0 ldi r25, 0x01 ; 1 |
1e6: b9 2e mov r11, r25 |
unsigned char neueDatenuebertragung = 1; |
UART_Init(); |
1e8: 0e 94 cc 04 call 0x998 <UART_Init> |
LCD_Init(); |
1ec: 0e 94 1f 06 call 0xc3e <LCD_Init> |
UART_Init(); |
1f0: 0e 94 cc 04 call 0x998 <UART_Init> |
Timer1_Init(); |
1f4: 0e 94 9e 09 call 0x133c <Timer1_Init> |
Keyboard_Init(); |
1f8: 0e 94 c9 09 call 0x1392 <Keyboard_Init> |
Sekundentakt_Init(); |
1fc: 0e 94 a2 00 call 0x144 <Sekundentakt_Init> |
InitIR(); |
200: 0e 94 67 0b call 0x16ce <InitIR> |
ADC_Init(); |
204: 0e 94 42 0c call 0x1884 <ADC_Init> |
Init(); |
208: 0e 94 da 00 call 0x1b4 <Init> |
sei ();//Globale Interrupts Einschalten |
20c: 78 94 sei |
DDRB = 0xff; |
20e: 8f ef ldi r24, 0xFF ; 255 |
210: 87 bb out 0x17, r24 ; 23 |
PORTB = 0x00; |
212: 18 ba out 0x18, r1 ; 24 |
LCD_Clear; |
214: 81 e0 ldi r24, 0x01 ; 1 |
216: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
21a: 0e 94 c9 05 call 0xb92 <_long_delay> |
/* while(1) |
*/ |
DelayTast = SetDelay(80); |
21e: 80 e5 ldi r24, 0x50 ; 80 |
220: 90 e0 ldi r25, 0x00 ; 0 |
222: 0e 94 a8 09 call 0x1350 <SetDelay> |
226: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
228: 88 ec ldi r24, 0xC8 ; 200 |
22a: 90 e0 ldi r25, 0x00 ; 0 |
22c: 0e 94 a8 09 call 0x1350 <SetDelay> |
230: 8c 01 movw r16, r24 |
DelayDisplay = SetDelay(300); |
232: 8c e2 ldi r24, 0x2C ; 44 |
234: 91 e0 ldi r25, 0x01 ; 1 |
236: 0e 94 a8 09 call 0x1350 <SetDelay> |
23a: 6c 01 movw r12, r24 |
ClearIntervalle(); |
23c: 0e 94 2e 05 call 0xa5c <ClearIntervalle> |
while (1) |
{ |
if(mode == MENU) |
240: bb 20 and r11, r11 |
242: 11 f5 brne .+68 ; 0x288 <main+0xbe> |
{ |
Delay_ms(10); |
244: 8a e0 ldi r24, 0x0A ; 10 |
246: 90 e0 ldi r25, 0x00 ; 0 |
248: 0e 94 bc 09 call 0x1378 <Delay_ms> |
key = GetKeyboard(); |
24c: 0e 94 d2 09 call 0x13a4 <GetKeyboard> |
Menu(key); |
250: 99 27 eor r25, r25 |
252: 0e 94 64 0a call 0x14c8 <Menu> |
if(_TASTE5) |
256: cb 9b sbis 0x19, 3 ; 25 |
258: f5 cf rjmp .-22 ; 0x244 <main+0x7a> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
25a: 8a e0 ldi r24, 0x0A ; 10 |
25c: 90 e0 ldi r25, 0x00 ; 0 |
25e: 0e 94 bc 09 call 0x1378 <Delay_ms> |
262: cb 99 sbic 0x19, 3 ; 25 |
264: fa cf rjmp .-12 ; 0x25a <main+0x90> |
mode = REMOTE; |
266: 81 e0 ldi r24, 0x01 ; 1 |
268: b8 2e mov r11, r24 |
DelayTast = SetDelay(100); |
26a: 84 e6 ldi r24, 0x64 ; 100 |
26c: 90 e0 ldi r25, 0x00 ; 0 |
26e: 0e 94 a8 09 call 0x1350 <SetDelay> |
272: 7c 01 movw r14, r24 |
DelayDaten = SetDelay(200); |
274: 88 ec ldi r24, 0xC8 ; 200 |
276: 90 e0 ldi r25, 0x00 ; 0 |
278: 0e 94 a8 09 call 0x1350 <SetDelay> |
27c: 8c 01 movw r16, r24 |
LCD_Clear; |
27e: 8b 2d mov r24, r11 |
280: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
284: 0e 94 c9 05 call 0xb92 <_long_delay> |
} |
} |
else |
if(mode == REMOTE) |
288: 81 e0 ldi r24, 0x01 ; 1 |
28a: b8 16 cp r11, r24 |
28c: c9 f6 brne .-78 ; 0x240 <main+0x76> |
{ |
BearbeiteRxDaten(); |
28e: 0e 94 fe 03 call 0x7fc <BearbeiteRxDaten> |
if(CheckDelay(DelayDaten)) |
292: c8 01 movw r24, r16 |
294: 0e 94 b1 09 call 0x1362 <CheckDelay> |
298: 88 23 and r24, r24 |
29a: c9 f3 breq .-14 ; 0x28e <main+0xc4> |
{ |
Sekundentakt(); |
29c: 0e 94 ab 00 call 0x156 <Sekundentakt> |
DelayDaten = SetDelay(10); |
2a0: 8a e0 ldi r24, 0x0A ; 10 |
2a2: 90 e0 ldi r25, 0x00 ; 0 |
2a4: 0e 94 a8 09 call 0x1350 <SetDelay> |
2a8: 8c 01 movw r16, r24 |
if(CheckDelay(DelayDisplay)) |
2aa: c6 01 movw r24, r12 |
2ac: 0e 94 b1 09 call 0x1362 <CheckDelay> |
2b0: 88 23 and r24, r24 |
2b2: 39 f0 breq .+14 ; 0x2c2 <main+0xf8> |
{ |
DelayDisplay = SetDelay(300); |
2b4: 8c e2 ldi r24, 0x2C ; 44 |
2b6: 91 e0 ldi r25, 0x01 ; 1 |
2b8: 0e 94 a8 09 call 0x1350 <SetDelay> |
2bc: 6c 01 movw r12, r24 |
PollDisplay = 1; |
2be: b0 92 ed 00 sts 0x00ED, r11 |
} |
key = GetKeyboard2(); |
2c2: 0e 94 57 0a call 0x14ae <GetKeyboard2> |
DatenUebertragung(key); |
2c6: 99 27 eor r25, r25 |
2c8: 0e 94 51 05 call 0xaa2 <DatenUebertragung> |
if(UebertragungUnterbrochen) |
2cc: 80 91 84 00 lds r24, 0x0084 |
2d0: 88 23 and r24, r24 |
2d2: 81 f1 breq .+96 ; 0x334 <main+0x16a> |
{ |
//01234567890123456789 |
LCD_printfxy(0,0," -- Remote -- "); |
2d4: 60 e0 ldi r22, 0x00 ; 0 |
2d6: 86 2f mov r24, r22 |
2d8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2dc: 84 e5 ldi r24, 0x54 ; 84 |
2de: 90 e0 ldi r25, 0x00 ; 0 |
2e0: 9f 93 push r25 |
2e2: 8f 93 push r24 |
2e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1," -- Display -- "); |
2e8: 61 e0 ldi r22, 0x01 ; 1 |
2ea: 80 e0 ldi r24, 0x00 ; 0 |
2ec: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
2f0: 0f 90 pop r0 |
2f2: 0f 90 pop r0 |
2f4: 89 e6 ldi r24, 0x69 ; 105 |
2f6: 90 e0 ldi r25, 0x00 ; 0 |
2f8: 9f 93 push r25 |
2fa: 8f 93 push r24 |
2fc: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,2," "); |
300: 62 e0 ldi r22, 0x02 ; 2 |
302: 80 e0 ldi r24, 0x00 ; 0 |
304: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
308: 0f 90 pop r0 |
30a: 0f 90 pop r0 |
30c: 8e e7 ldi r24, 0x7E ; 126 |
30e: 90 e0 ldi r25, 0x00 ; 0 |
310: 9f 93 push r25 |
312: 8f 93 push r24 |
314: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,3," www.MicroSPS.com "); |
318: 63 e0 ldi r22, 0x03 ; 3 |
31a: 80 e0 ldi r24, 0x00 ; 0 |
31c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
320: 0f 90 pop r0 |
322: 0f 90 pop r0 |
324: 83 e9 ldi r24, 0x93 ; 147 |
326: 90 e0 ldi r25, 0x00 ; 0 |
328: 9f 93 push r25 |
32a: 8f 93 push r24 |
32c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
330: 0f 90 pop r0 |
332: 0f 90 pop r0 |
} |
if(CheckDelay(DelayTast)) |
334: c7 01 movw r24, r14 |
336: 0e 94 b1 09 call 0x1362 <CheckDelay> |
33a: 88 23 and r24, r24 |
33c: 09 f4 brne .+2 ; 0x340 <main+0x176> |
33e: a7 cf rjmp .-178 ; 0x28e <main+0xc4> |
{ |
DelayTast = SetDelay(100); |
340: 84 e6 ldi r24, 0x64 ; 100 |
342: 90 e0 ldi r25, 0x00 ; 0 |
344: 0e 94 a8 09 call 0x1350 <SetDelay> |
348: 7c 01 movw r14, r24 |
if(_TASTE5) |
34a: cb 9b sbis 0x19, 3 ; 25 |
34c: 0c c0 rjmp .+24 ; 0x366 <main+0x19c> |
{ |
do { Delay_ms(10);} while(_TASTE5); |
34e: 8a e0 ldi r24, 0x0A ; 10 |
350: 90 e0 ldi r25, 0x00 ; 0 |
352: 0e 94 bc 09 call 0x1378 <Delay_ms> |
356: cb 99 sbic 0x19, 3 ; 25 |
358: fa cf rjmp .-12 ; 0x34e <main+0x184> |
mode = MENU; |
35a: bb 24 eor r11, r11 |
LCD_Clear; |
35c: 81 e0 ldi r24, 0x01 ; 1 |
35e: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
362: 0e 94 c9 05 call 0xb92 <_long_delay> |
366: 80 91 be 00 lds r24, 0x00BE |
} |
// if(key & 0x10) DebugIn.Digital[0] |= 0x01; else DebugIn.Digital[0] &= ~0x01; |
if(PIND & 0x08) DebugIn.Digital[0] |= 0x02; else DebugIn.Digital[0] &= ~0x02; |
36a: 83 9b sbis 0x10, 3 ; 16 |
36c: 02 c0 rjmp .+4 ; 0x372 <main+0x1a8> |
36e: 82 60 ori r24, 0x02 ; 2 |
370: 01 c0 rjmp .+2 ; 0x374 <main+0x1aa> |
372: 8d 7f andi r24, 0xFD ; 253 |
374: 80 93 be 00 sts 0x00BE, r24 |
378: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x10) DebugIn.Digital[0] |= 0x04; else DebugIn.Digital[0] &= ~0x04; |
37c: 84 9b sbis 0x10, 4 ; 16 |
37e: 02 c0 rjmp .+4 ; 0x384 <main+0x1ba> |
380: 84 60 ori r24, 0x04 ; 4 |
382: 01 c0 rjmp .+2 ; 0x386 <main+0x1bc> |
384: 8b 7f andi r24, 0xFB ; 251 |
386: 80 93 be 00 sts 0x00BE, r24 |
38a: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x20) DebugIn.Digital[0] |= 0x08; else DebugIn.Digital[0] &= ~0x08; |
38e: 85 9b sbis 0x10, 5 ; 16 |
390: 02 c0 rjmp .+4 ; 0x396 <main+0x1cc> |
392: 88 60 ori r24, 0x08 ; 8 |
394: 01 c0 rjmp .+2 ; 0x398 <main+0x1ce> |
396: 87 7f andi r24, 0xF7 ; 247 |
398: 80 93 be 00 sts 0x00BE, r24 |
39c: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x40) DebugIn.Digital[0] |= 0x10; else DebugIn.Digital[0] &= ~0x10; |
3a0: 86 9b sbis 0x10, 6 ; 16 |
3a2: 02 c0 rjmp .+4 ; 0x3a8 <main+0x1de> |
3a4: 80 61 ori r24, 0x10 ; 16 |
3a6: 01 c0 rjmp .+2 ; 0x3aa <main+0x1e0> |
3a8: 8f 7e andi r24, 0xEF ; 239 |
3aa: 80 93 be 00 sts 0x00BE, r24 |
3ae: 80 91 be 00 lds r24, 0x00BE |
if(PIND & 0x80) DebugIn.Digital[0] |= 0x20; else DebugIn.Digital[0] &= ~0x20; |
3b2: 87 9b sbis 0x10, 7 ; 16 |
3b4: 02 c0 rjmp .+4 ; 0x3ba <main+0x1f0> |
3b6: 80 62 ori r24, 0x20 ; 32 |
3b8: 01 c0 rjmp .+2 ; 0x3bc <main+0x1f2> |
3ba: 8f 7d andi r24, 0xDF ; 223 |
3bc: 80 93 be 00 sts 0x00BE, r24 |
GetAnalogWerte(); |
3c0: 0e 94 4e 0c call 0x189c <GetAnalogWerte> |
3c4: 3d cf rjmp .-390 ; 0x240 <main+0x76> |
000003c6 <__vector_15>: |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
3c6: 1f 92 push r1 |
3c8: 0f 92 push r0 |
3ca: 0f b6 in r0, 0x3f ; 63 |
3cc: 0f 92 push r0 |
3ce: 11 24 eor r1, r1 |
3d0: 8f 93 push r24 |
3d2: 9f 93 push r25 |
3d4: ef 93 push r30 |
3d6: ff 93 push r31 |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
3d8: 80 91 6e 00 lds r24, 0x006E |
3dc: 88 23 and r24, r24 |
3de: d9 f4 brne .+54 ; 0x416 <__vector_15+0x50> |
{ |
ptr++; // die [0] wurde schon gesendet |
3e0: 80 91 9d 00 lds r24, 0x009D |
3e4: 90 91 9e 00 lds r25, 0x009E |
3e8: 01 96 adiw r24, 0x01 ; 1 |
3ea: 90 93 9e 00 sts 0x009E, r25 |
3ee: 80 93 9d 00 sts 0x009D, r24 |
tmp_tx = SendeBuffer[ptr]; |
3f2: fc 01 movw r30, r24 |
3f4: e2 51 subi r30, 0x12 ; 18 |
3f6: ff 4f sbci r31, 0xFF ; 255 |
3f8: e0 81 ld r30, Z |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
3fa: ed 30 cpi r30, 0x0D ; 13 |
3fc: 19 f0 breq .+6 ; 0x404 <__vector_15+0x3e> |
3fe: 84 36 cpi r24, 0x64 ; 100 |
400: 91 05 cpc r25, r1 |
402: 39 f4 brne .+14 ; 0x412 <__vector_15+0x4c> |
{ |
ptr = 0; |
404: 10 92 9e 00 sts 0x009E, r1 |
408: 10 92 9d 00 sts 0x009D, r1 |
UebertragungAbgeschlossen = 1; |
40c: 81 e0 ldi r24, 0x01 ; 1 |
40e: 80 93 6e 00 sts 0x006E, r24 |
} |
UDR = tmp_tx; |
412: ec b9 out 0x0c, r30 ; 12 |
414: 04 c0 rjmp .+8 ; 0x41e <__vector_15+0x58> |
} |
else ptr = 0; |
416: 10 92 9e 00 sts 0x009E, r1 |
41a: 10 92 9d 00 sts 0x009D, r1 |
41e: ff 91 pop r31 |
420: ef 91 pop r30 |
422: 9f 91 pop r25 |
424: 8f 91 pop r24 |
426: 0f 90 pop r0 |
428: 0f be out 0x3f, r0 ; 63 |
42a: 0f 90 pop r0 |
42c: 1f 90 pop r1 |
42e: 18 95 reti |
00000430 <__vector_13>: |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
430: 1f 92 push r1 |
432: 0f 92 push r0 |
434: 0f b6 in r0, 0x3f ; 63 |
436: 0f 92 push r0 |
438: 11 24 eor r1, r1 |
43a: 2f 93 push r18 |
43c: 3f 93 push r19 |
43e: 4f 93 push r20 |
440: 5f 93 push r21 |
442: 8f 93 push r24 |
444: 9f 93 push r25 |
446: af 93 push r26 |
448: bf 93 push r27 |
44a: ef 93 push r30 |
44c: ff 93 push r31 |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
44e: 20 e0 ldi r18, 0x00 ; 0 |
SioTmp = UDR; |
450: 8c b1 in r24, 0x0c ; 12 |
452: 80 93 9c 00 sts 0x009C, r24 |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
456: 50 91 a3 00 lds r21, 0x00A3 |
45a: 54 36 cpi r21, 0x64 ; 100 |
45c: 10 f0 brcs .+4 ; 0x462 <__vector_13+0x32> |
45e: 20 93 a4 00 sts 0x00A4, r18 |
if(SioTmp == '\r' && UartState == 2) |
462: 80 91 9c 00 lds r24, 0x009C |
466: 8d 30 cpi r24, 0x0D ; 13 |
468: 09 f0 breq .+2 ; 0x46c <__vector_13+0x3c> |
46a: 5b c0 rjmp .+182 ; 0x522 <__vector_13+0xf2> |
46c: 80 91 a4 00 lds r24, 0x00A4 |
470: 82 30 cpi r24, 0x02 ; 2 |
472: 09 f0 breq .+2 ; 0x476 <__vector_13+0x46> |
474: 56 c0 rjmp .+172 ; 0x522 <__vector_13+0xf2> |
{ |
UartState = 0; |
476: 20 93 a4 00 sts 0x00A4, r18 |
crc -= RxdBuffer[buf_ptr-2]; |
47a: 85 2f mov r24, r21 |
47c: 99 27 eor r25, r25 |
47e: 8e 5a subi r24, 0xAE ; 174 |
480: 9e 4f sbci r25, 0xFE ; 254 |
482: fc 01 movw r30, r24 |
484: 32 97 sbiw r30, 0x02 ; 2 |
486: 40 81 ld r20, Z |
488: 20 91 9f 00 lds r18, 0x009F |
48c: 30 91 a0 00 lds r19, 0x00A0 |
490: 24 1b sub r18, r20 |
492: 31 09 sbc r19, r1 |
crc -= RxdBuffer[buf_ptr-1]; |
494: dc 01 movw r26, r24 |
496: 11 97 sbiw r26, 0x01 ; 1 |
498: 8c 91 ld r24, X |
49a: 28 1b sub r18, r24 |
49c: 31 09 sbc r19, r1 |
crc %= 4096; |
49e: c9 01 movw r24, r18 |
4a0: 9f 70 andi r25, 0x0F ; 15 |
4a2: 90 93 a0 00 sts 0x00A0, r25 |
4a6: 80 93 9f 00 sts 0x009F, r24 |
crc1 = '=' + crc / 64; |
4aa: 46 e0 ldi r20, 0x06 ; 6 |
4ac: 96 95 lsr r25 |
4ae: 87 95 ror r24 |
4b0: 4a 95 dec r20 |
4b2: e1 f7 brne .-8 ; 0x4ac <__vector_13+0x7c> |
4b4: 98 2f mov r25, r24 |
4b6: 93 5c subi r25, 0xC3 ; 195 |
4b8: 90 93 a1 00 sts 0x00A1, r25 |
crc2 = '=' + crc % 64; |
4bc: 2f 73 andi r18, 0x3F ; 63 |
4be: 30 70 andi r19, 0x00 ; 0 |
4c0: 23 5c subi r18, 0xC3 ; 195 |
4c2: 20 93 a2 00 sts 0x00A2, r18 |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
4c6: 80 81 ld r24, Z |
4c8: 98 17 cp r25, r24 |
4ca: 29 f4 brne .+10 ; 0x4d6 <__vector_13+0xa6> |
4cc: 8c 91 ld r24, X |
4ce: 28 17 cp r18, r24 |
4d0: 11 f4 brne .+4 ; 0x4d6 <__vector_13+0xa6> |
4d2: 21 e0 ldi r18, 0x01 ; 1 |
4d4: 0a c0 rjmp .+20 ; 0x4ea <__vector_13+0xba> |
4d6: 20 e0 ldi r18, 0x00 ; 0 |
4d8: 80 91 99 00 lds r24, 0x0099 |
4dc: 90 91 9a 00 lds r25, 0x009A |
4e0: 01 96 adiw r24, 0x01 ; 1 |
4e2: 90 93 9a 00 sts 0x009A, r25 |
4e6: 80 93 99 00 sts 0x0099, r24 |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
4ea: 80 91 9b 00 lds r24, 0x009B |
4ee: 88 23 and r24, r24 |
4f0: 09 f0 breq .+2 ; 0x4f4 <__vector_13+0xc4> |
4f2: 66 c0 rjmp .+204 ; 0x5c0 <__vector_13+0x190> |
4f4: 22 23 and r18, r18 |
4f6: 09 f4 brne .+2 ; 0x4fa <__vector_13+0xca> |
4f8: 63 c0 rjmp .+198 ; 0x5c0 <__vector_13+0x190> |
{ |
CntDatensaetzeProSekunde++; |
4fa: 80 91 66 00 lds r24, 0x0066 |
4fe: 8f 5f subi r24, 0xFF ; 255 |
500: 80 93 66 00 sts 0x0066, r24 |
PC_DebugTimeout = 10; |
504: 8a e0 ldi r24, 0x0A ; 10 |
506: 80 93 97 00 sts 0x0097, r24 |
NeuerDatensatzEmpfangen = 1; |
50a: 81 e0 ldi r24, 0x01 ; 1 |
50c: 80 93 9b 00 sts 0x009B, r24 |
AnzahlEmpfangsBytes = buf_ptr; |
510: 50 93 98 00 sts 0x0098, r21 |
RxdBuffer[buf_ptr] = '\r'; |
514: e5 2f mov r30, r21 |
516: ff 27 eor r31, r31 |
518: ee 5a subi r30, 0xAE ; 174 |
51a: fe 4f sbci r31, 0xFE ; 254 |
51c: 8d e0 ldi r24, 0x0D ; 13 |
51e: 80 83 st Z, r24 |
520: 4f c0 rjmp .+158 ; 0x5c0 <__vector_13+0x190> |
// if((RxdBuffer[1] == 's') && (RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
522: 20 91 a4 00 lds r18, 0x00A4 |
526: 82 2f mov r24, r18 |
528: 99 27 eor r25, r25 |
52a: 81 30 cpi r24, 0x01 ; 1 |
52c: 91 05 cpc r25, r1 |
52e: f9 f0 breq .+62 ; 0x56e <__vector_13+0x13e> |
530: 82 30 cpi r24, 0x02 ; 2 |
532: 91 05 cpc r25, r1 |
534: 1c f4 brge .+6 ; 0x53c <__vector_13+0x10c> |
536: 89 2b or r24, r25 |
538: 21 f0 breq .+8 ; 0x542 <__vector_13+0x112> |
53a: 40 c0 rjmp .+128 ; 0x5bc <__vector_13+0x18c> |
53c: 02 97 sbiw r24, 0x02 ; 2 |
53e: 11 f1 breq .+68 ; 0x584 <__vector_13+0x154> |
540: 3d c0 rjmp .+122 ; 0x5bc <__vector_13+0x18c> |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
542: 80 91 9c 00 lds r24, 0x009C |
546: 83 32 cpi r24, 0x23 ; 35 |
548: 39 f4 brne .+14 ; 0x558 <__vector_13+0x128> |
54a: 80 91 9b 00 lds r24, 0x009B |
54e: 88 23 and r24, r24 |
550: 19 f4 brne .+6 ; 0x558 <__vector_13+0x128> |
552: 81 e0 ldi r24, 0x01 ; 1 |
554: 80 93 a4 00 sts 0x00A4, r24 |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
558: 80 91 9c 00 lds r24, 0x009C |
55c: 80 93 52 01 sts 0x0152, r24 |
560: 81 e0 ldi r24, 0x01 ; 1 |
562: 80 93 a3 00 sts 0x00A3, r24 |
crc = SioTmp; |
566: 80 91 9c 00 lds r24, 0x009C |
56a: 99 27 eor r25, r25 |
56c: 22 c0 rjmp .+68 ; 0x5b2 <__vector_13+0x182> |
break; |
case 1: // Adresse auswerten |
UartState++; |
56e: 2f 5f subi r18, 0xFF ; 255 |
570: 20 93 a4 00 sts 0x00A4, r18 |
RxdBuffer[buf_ptr++] = SioTmp; |
574: e5 2f mov r30, r21 |
576: ff 27 eor r31, r31 |
578: ee 5a subi r30, 0xAE ; 174 |
57a: fe 4f sbci r31, 0xFE ; 254 |
57c: 80 91 9c 00 lds r24, 0x009C |
580: 80 83 st Z, r24 |
582: 09 c0 rjmp .+18 ; 0x596 <__vector_13+0x166> |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
584: e5 2f mov r30, r21 |
586: ff 27 eor r31, r31 |
588: ee 5a subi r30, 0xAE ; 174 |
58a: fe 4f sbci r31, 0xFE ; 254 |
58c: 80 91 9c 00 lds r24, 0x009C |
590: 80 83 st Z, r24 |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
592: 54 36 cpi r21, 0x64 ; 100 |
594: 20 f4 brcc .+8 ; 0x59e <__vector_13+0x16e> |
596: 5f 5f subi r21, 0xFF ; 255 |
598: 50 93 a3 00 sts 0x00A3, r21 |
59c: 02 c0 rjmp .+4 ; 0x5a2 <__vector_13+0x172> |
else UartState = 0; |
59e: 10 92 a4 00 sts 0x00A4, r1 |
crc += SioTmp; |
5a2: 20 91 9c 00 lds r18, 0x009C |
5a6: 80 91 9f 00 lds r24, 0x009F |
5aa: 90 91 a0 00 lds r25, 0x00A0 |
5ae: 82 0f add r24, r18 |
5b0: 91 1d adc r25, r1 |
5b2: 90 93 a0 00 sts 0x00A0, r25 |
5b6: 80 93 9f 00 sts 0x009F, r24 |
break; |
5ba: 02 c0 rjmp .+4 ; 0x5c0 <__vector_13+0x190> |
default: |
UartState = 0; |
5bc: 10 92 a4 00 sts 0x00A4, r1 |
5c0: ff 91 pop r31 |
5c2: ef 91 pop r30 |
5c4: bf 91 pop r27 |
5c6: af 91 pop r26 |
5c8: 9f 91 pop r25 |
5ca: 8f 91 pop r24 |
5cc: 5f 91 pop r21 |
5ce: 4f 91 pop r20 |
5d0: 3f 91 pop r19 |
5d2: 2f 91 pop r18 |
5d4: 0f 90 pop r0 |
5d6: 0f be out 0x3f, r0 ; 63 |
5d8: 0f 90 pop r0 |
5da: 1f 90 pop r1 |
5dc: 18 95 reti |
000005de <AddCRC>: |
break; |
} |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
5de: ac 01 movw r20, r24 |
unsigned int tmpCRC = 0,i; |
5e0: a0 e0 ldi r26, 0x00 ; 0 |
5e2: b0 e0 ldi r27, 0x00 ; 0 |
for(i = 0; i < wieviele;i++) |
5e4: 9d 01 movw r18, r26 |
5e6: a8 17 cp r26, r24 |
5e8: b9 07 cpc r27, r25 |
5ea: 48 f4 brcc .+18 ; 0x5fe <AddCRC+0x20> |
5ec: ee ee ldi r30, 0xEE ; 238 |
5ee: f0 e0 ldi r31, 0x00 ; 0 |
{ |
tmpCRC += SendeBuffer[i]; |
5f0: 81 91 ld r24, Z+ |
5f2: 28 0f add r18, r24 |
5f4: 31 1d adc r19, r1 |
5f6: 11 96 adiw r26, 0x01 ; 1 |
5f8: a4 17 cp r26, r20 |
5fa: b5 07 cpc r27, r21 |
5fc: c8 f3 brcs .-14 ; 0x5f0 <AddCRC+0x12> |
} |
tmpCRC %= 4096; |
5fe: 3f 70 andi r19, 0x0F ; 15 |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
600: fd 01 movw r30, r26 |
602: e2 51 subi r30, 0x12 ; 18 |
604: ff 4f sbci r31, 0xFF ; 255 |
606: c9 01 movw r24, r18 |
608: 56 e0 ldi r21, 0x06 ; 6 |
60a: 96 95 lsr r25 |
60c: 87 95 ror r24 |
60e: 5a 95 dec r21 |
610: e1 f7 brne .-8 ; 0x60a <AddCRC+0x2c> |
612: 83 5c subi r24, 0xC3 ; 195 |
614: 80 83 st Z, r24 |
616: 11 96 adiw r26, 0x01 ; 1 |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
618: fd 01 movw r30, r26 |
61a: e2 51 subi r30, 0x12 ; 18 |
61c: ff 4f sbci r31, 0xFF ; 255 |
61e: 2f 73 andi r18, 0x3F ; 63 |
620: 30 70 andi r19, 0x00 ; 0 |
622: 82 2f mov r24, r18 |
624: 83 5c subi r24, 0xC3 ; 195 |
626: 80 83 st Z, r24 |
SendeBuffer[i++] = '\r'; |
628: a1 51 subi r26, 0x11 ; 17 |
62a: bf 4f sbci r27, 0xFF ; 255 |
62c: 8d e0 ldi r24, 0x0D ; 13 |
62e: 8c 93 st X, r24 |
UebertragungAbgeschlossen = 0; |
630: 10 92 6e 00 sts 0x006E, r1 |
UDR = SendeBuffer[0]; |
634: 80 91 ee 00 lds r24, 0x00EE |
638: 8c b9 out 0x0c, r24 ; 12 |
63a: 08 95 ret |
0000063c <SendOutData>: |
// PrintSendeBuffer(); |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
63c: 1f 93 push r17 |
63e: cf 93 push r28 |
640: df 93 push r29 |
642: 38 2f mov r19, r24 |
644: 96 2f mov r25, r22 |
646: ea 01 movw r28, r20 |
648: 72 2f mov r23, r18 |
unsigned int pt = 0,i; |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
64a: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
//while(!UebertragungAbgeschlossen); |
SendeBuffer[pt++] = '#'; // Startzeichen |
64c: 83 e2 ldi r24, 0x23 ; 35 |
64e: 80 93 ee 00 sts 0x00EE, r24 |
SendeBuffer[pt++] = modul+'a'; // Adresse (a=0; b=1,...) |
652: 9f 59 subi r25, 0x9F ; 159 |
654: 90 93 ef 00 sts 0x00EF, r25 |
SendeBuffer[pt++] = cmd; // Commando |
658: 30 93 f0 00 sts 0x00F0, r19 |
65c: a3 e0 ldi r26, 0x03 ; 3 |
65e: b0 e0 ldi r27, 0x00 ; 0 |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
660: 77 23 and r23, r23 |
662: 09 f4 brne .+2 ; 0x666 <SendOutData+0x2a> |
664: 58 c0 rjmp .+176 ; 0x716 <SendOutData+0xda> |
666: 77 23 and r23, r23 |
668: 11 f4 brne .+4 ; 0x66e <SendOutData+0x32> |
66a: 97 2f mov r25, r23 |
66c: 07 c0 rjmp .+14 ; 0x67c <SendOutData+0x40> |
66e: fe 01 movw r30, r28 |
670: e1 0f add r30, r17 |
672: f1 1d adc r31, r1 |
674: 1f 5f subi r17, 0xFF ; 255 |
676: 90 81 ld r25, Z |
678: 71 50 subi r23, 0x01 ; 1 |
67a: 11 f4 brne .+4 ; 0x680 <SendOutData+0x44> |
67c: 47 2f mov r20, r23 |
67e: 0e c0 rjmp .+28 ; 0x69c <SendOutData+0x60> |
680: fe 01 movw r30, r28 |
682: e1 0f add r30, r17 |
684: f1 1d adc r31, r1 |
686: 1f 5f subi r17, 0xFF ; 255 |
688: 40 81 ld r20, Z |
68a: 71 50 subi r23, 0x01 ; 1 |
68c: 39 f0 breq .+14 ; 0x69c <SendOutData+0x60> |
68e: fe 01 movw r30, r28 |
690: e1 0f add r30, r17 |
692: f1 1d adc r31, r1 |
694: 1f 5f subi r17, 0xFF ; 255 |
696: 60 81 ld r22, Z |
698: 71 50 subi r23, 0x01 ; 1 |
69a: 01 c0 rjmp .+2 ; 0x69e <SendOutData+0x62> |
69c: 67 2f mov r22, r23 |
69e: fd 01 movw r30, r26 |
6a0: e2 51 subi r30, 0x12 ; 18 |
6a2: ff 4f sbci r31, 0xFF ; 255 |
6a4: 89 2f mov r24, r25 |
6a6: 86 95 lsr r24 |
6a8: 86 95 lsr r24 |
6aa: 83 5c subi r24, 0xC3 ; 195 |
6ac: 80 83 st Z, r24 |
6ae: 11 96 adiw r26, 0x01 ; 1 |
6b0: fd 01 movw r30, r26 |
6b2: e2 51 subi r30, 0x12 ; 18 |
6b4: ff 4f sbci r31, 0xFF ; 255 |
6b6: 89 2f mov r24, r25 |
6b8: 99 27 eor r25, r25 |
6ba: 83 70 andi r24, 0x03 ; 3 |
6bc: 90 70 andi r25, 0x00 ; 0 |
6be: 24 e0 ldi r18, 0x04 ; 4 |
6c0: 88 0f add r24, r24 |
6c2: 99 1f adc r25, r25 |
6c4: 2a 95 dec r18 |
6c6: e1 f7 brne .-8 ; 0x6c0 <SendOutData+0x84> |
6c8: 55 27 eor r21, r21 |
6ca: 9a 01 movw r18, r20 |
6cc: 94 e0 ldi r25, 0x04 ; 4 |
6ce: 36 95 lsr r19 |
6d0: 27 95 ror r18 |
6d2: 9a 95 dec r25 |
6d4: e1 f7 brne .-8 ; 0x6ce <SendOutData+0x92> |
6d6: 82 2b or r24, r18 |
6d8: 83 5c subi r24, 0xC3 ; 195 |
6da: 80 83 st Z, r24 |
6dc: 11 96 adiw r26, 0x01 ; 1 |
6de: fd 01 movw r30, r26 |
6e0: e2 51 subi r30, 0x12 ; 18 |
6e2: ff 4f sbci r31, 0xFF ; 255 |
6e4: 4f 70 andi r20, 0x0F ; 15 |
6e6: 50 70 andi r21, 0x00 ; 0 |
6e8: 44 0f add r20, r20 |
6ea: 55 1f adc r21, r21 |
6ec: 44 0f add r20, r20 |
6ee: 55 1f adc r21, r21 |
6f0: 86 2f mov r24, r22 |
6f2: 99 27 eor r25, r25 |
6f4: 26 e0 ldi r18, 0x06 ; 6 |
6f6: 96 95 lsr r25 |
6f8: 87 95 ror r24 |
6fa: 2a 95 dec r18 |
6fc: e1 f7 brne .-8 ; 0x6f6 <SendOutData+0xba> |
6fe: 84 2b or r24, r20 |
700: 83 5c subi r24, 0xC3 ; 195 |
702: 80 83 st Z, r24 |
704: 11 96 adiw r26, 0x01 ; 1 |
706: fd 01 movw r30, r26 |
708: e2 51 subi r30, 0x12 ; 18 |
70a: ff 4f sbci r31, 0xFF ; 255 |
70c: 6f 73 andi r22, 0x3F ; 63 |
70e: 63 5c subi r22, 0xC3 ; 195 |
710: 60 83 st Z, r22 |
712: 11 96 adiw r26, 0x01 ; 1 |
714: a5 cf rjmp .-182 ; 0x660 <SendOutData+0x24> |
} |
AddCRC(pt); |
716: cd 01 movw r24, r26 |
718: 0e 94 ef 02 call 0x5de <AddCRC> |
71c: df 91 pop r29 |
71e: cf 91 pop r28 |
720: 1f 91 pop r17 |
722: 08 95 ret |
00000724 <Decode64>: |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
724: 1f 93 push r17 |
726: cf 93 push r28 |
728: df 93 push r29 |
72a: ec 01 movw r28, r24 |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
72c: 10 e0 ldi r17, 0x00 ; 0 |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
72e: 66 23 and r22, r22 |
730: 09 f4 brne .+2 ; 0x734 <Decode64+0x10> |
732: 60 c0 rjmp .+192 ; 0x7f4 <Decode64+0xd0> |
734: a2 2f mov r26, r18 |
736: bb 27 eor r27, r27 |
738: 12 97 sbiw r26, 0x02 ; 2 |
73a: e4 2f mov r30, r20 |
73c: ff 27 eor r31, r31 |
73e: ee 5a subi r30, 0xAE ; 174 |
740: fe 4f sbci r31, 0xFE ; 254 |
742: 30 81 ld r19, Z |
744: 3d 53 subi r19, 0x3D ; 61 |
746: 4f 5f subi r20, 0xFF ; 255 |
748: e4 2f mov r30, r20 |
74a: ff 27 eor r31, r31 |
74c: ee 5a subi r30, 0xAE ; 174 |
74e: fe 4f sbci r31, 0xFE ; 254 |
750: 50 81 ld r21, Z |
752: 5d 53 subi r21, 0x3D ; 61 |
754: 4f 5f subi r20, 0xFF ; 255 |
756: e4 2f mov r30, r20 |
758: ff 27 eor r31, r31 |
75a: ee 5a subi r30, 0xAE ; 174 |
75c: fe 4f sbci r31, 0xFE ; 254 |
75e: 70 81 ld r23, Z |
760: 7d 53 subi r23, 0x3D ; 61 |
762: 4f 5f subi r20, 0xFF ; 255 |
764: e4 2f mov r30, r20 |
766: ff 27 eor r31, r31 |
768: ee 5a subi r30, 0xAE ; 174 |
76a: fe 4f sbci r31, 0xFE ; 254 |
76c: e0 81 ld r30, Z |
76e: ed 53 subi r30, 0x3D ; 61 |
770: 4f 5f subi r20, 0xFF ; 255 |
772: 84 2f mov r24, r20 |
774: 99 27 eor r25, r25 |
776: a8 17 cp r26, r24 |
778: b9 07 cpc r27, r25 |
77a: e4 f1 brlt .+120 ; 0x7f4 <Decode64+0xd0> |
77c: 83 2f mov r24, r19 |
77e: 99 27 eor r25, r25 |
780: 88 0f add r24, r24 |
782: 99 1f adc r25, r25 |
784: 88 0f add r24, r24 |
786: 99 1f adc r25, r25 |
788: 35 2f mov r19, r21 |
78a: 32 95 swap r19 |
78c: 3f 70 andi r19, 0x0F ; 15 |
78e: 38 2b or r19, r24 |
790: 85 2f mov r24, r21 |
792: 99 27 eor r25, r25 |
794: 8f 70 andi r24, 0x0F ; 15 |
796: 90 70 andi r25, 0x00 ; 0 |
798: f4 e0 ldi r31, 0x04 ; 4 |
79a: 88 0f add r24, r24 |
79c: 99 1f adc r25, r25 |
79e: fa 95 dec r31 |
7a0: e1 f7 brne .-8 ; 0x79a <Decode64+0x76> |
7a2: 57 2f mov r21, r23 |
7a4: 56 95 lsr r21 |
7a6: 56 95 lsr r21 |
7a8: 58 2b or r21, r24 |
7aa: 87 2f mov r24, r23 |
7ac: 99 27 eor r25, r25 |
7ae: 83 70 andi r24, 0x03 ; 3 |
7b0: 90 70 andi r25, 0x00 ; 0 |
7b2: 76 e0 ldi r23, 0x06 ; 6 |
7b4: 88 0f add r24, r24 |
7b6: 99 1f adc r25, r25 |
7b8: 7a 95 dec r23 |
7ba: e1 f7 brne .-8 ; 0x7b4 <Decode64+0x90> |
7bc: 8e 2b or r24, r30 |
7be: 61 50 subi r22, 0x01 ; 1 |
7c0: 6f 3f cpi r22, 0xFF ; 255 |
7c2: c1 f0 breq .+48 ; 0x7f4 <Decode64+0xd0> |
7c4: fe 01 movw r30, r28 |
7c6: e1 0f add r30, r17 |
7c8: f1 1d adc r31, r1 |
7ca: 30 83 st Z, r19 |
7cc: 1f 5f subi r17, 0xFF ; 255 |
7ce: 61 50 subi r22, 0x01 ; 1 |
7d0: 6f 3f cpi r22, 0xFF ; 255 |
7d2: 81 f0 breq .+32 ; 0x7f4 <Decode64+0xd0> |
7d4: fe 01 movw r30, r28 |
7d6: e1 0f add r30, r17 |
7d8: f1 1d adc r31, r1 |
7da: 50 83 st Z, r21 |
7dc: 1f 5f subi r17, 0xFF ; 255 |
7de: 61 50 subi r22, 0x01 ; 1 |
7e0: 6f 3f cpi r22, 0xFF ; 255 |
7e2: 41 f0 breq .+16 ; 0x7f4 <Decode64+0xd0> |
7e4: fe 01 movw r30, r28 |
7e6: e1 0f add r30, r17 |
7e8: f1 1d adc r31, r1 |
7ea: 80 83 st Z, r24 |
7ec: 1f 5f subi r17, 0xFF ; 255 |
7ee: 66 23 and r22, r22 |
7f0: 09 f0 breq .+2 ; 0x7f4 <Decode64+0xd0> |
7f2: a3 cf rjmp .-186 ; 0x73a <Decode64+0x16> |
7f4: df 91 pop r29 |
7f6: cf 91 pop r28 |
7f8: 1f 91 pop r17 |
7fa: 08 95 ret |
000007fc <BearbeiteRxDaten>: |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
7fc: cf 93 push r28 |
7fe: df 93 push r29 |
800: cd b7 in r28, 0x3d ; 61 |
802: de b7 in r29, 0x3e ; 62 |
804: ad 97 sbiw r28, 0x2d ; 45 |
806: 0f b6 in r0, 0x3f ; 63 |
808: f8 94 cli |
80a: de bf out 0x3e, r29 ; 62 |
80c: 0f be out 0x3f, r0 ; 63 |
80e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr1[1]; |
unsigned int tmp_int_arr2[2]; |
unsigned int tmp_int_arr20[21]; |
unsigned char tmp_char_arr3[3]; |
// unsigned int tmp_int_arr4[4]; |
if(!NeuerDatensatzEmpfangen) return; |
810: 80 91 9b 00 lds r24, 0x009B |
814: 88 23 and r24, r24 |
816: 09 f4 brne .+2 ; 0x81a <BearbeiteRxDaten+0x1e> |
818: a7 c0 rjmp .+334 ; 0x968 <__stack+0x109> |
NeuerDatensatzEmpfangen = 0; |
81a: 10 92 9b 00 sts 0x009B, r1 |
if(ErwarteAntwort == RxdBuffer[2]) AntwortEingetroffen = 1; |
81e: 90 91 6d 00 lds r25, 0x006D |
822: 80 91 54 01 lds r24, 0x0154 |
826: 98 17 cp r25, r24 |
828: 19 f4 brne .+6 ; 0x830 <BearbeiteRxDaten+0x34> |
82a: 81 e0 ldi r24, 0x01 ; 1 |
82c: 80 93 92 00 sts 0x0092, r24 |
switch(RxdBuffer[2]) |
830: 80 91 54 01 lds r24, 0x0154 |
834: 99 27 eor r25, r25 |
836: 82 33 cpi r24, 0x32 ; 50 |
838: 91 05 cpc r25, r1 |
83a: 09 f4 brne .+2 ; 0x83e <BearbeiteRxDaten+0x42> |
83c: 46 c0 rjmp .+140 ; 0x8ca <__stack+0x6b> |
83e: 83 33 cpi r24, 0x33 ; 51 |
840: 91 05 cpc r25, r1 |
842: 34 f4 brge .+12 ; 0x850 <BearbeiteRxDaten+0x54> |
844: 80 33 cpi r24, 0x30 ; 48 |
846: 91 05 cpc r25, r1 |
848: 99 f0 breq .+38 ; 0x870 <__stack+0x11> |
84a: c1 97 sbiw r24, 0x31 ; 49 |
84c: 49 f1 breq .+82 ; 0x8a0 <__stack+0x41> |
84e: 8c c0 rjmp .+280 ; 0x968 <__stack+0x109> |
850: 84 34 cpi r24, 0x44 ; 68 |
852: 91 05 cpc r25, r1 |
854: 09 f4 brne .+2 ; 0x858 <BearbeiteRxDaten+0x5c> |
856: 6b c0 rjmp .+214 ; 0x92e <__stack+0xcf> |
858: 85 34 cpi r24, 0x45 ; 69 |
85a: 91 05 cpc r25, r1 |
85c: 24 f4 brge .+8 ; 0x866 <__stack+0x7> |
85e: c3 97 sbiw r24, 0x33 ; 51 |
860: 09 f4 brne .+2 ; 0x864 <__stack+0x5> |
862: 48 c0 rjmp .+144 ; 0x8f4 <__stack+0x95> |
864: 81 c0 rjmp .+258 ; 0x968 <__stack+0x109> |
866: 8b 34 cpi r24, 0x4B ; 75 |
868: 91 05 cpc r25, r1 |
86a: 09 f4 brne .+2 ; 0x86e <__stack+0xf> |
86c: 6c c0 rjmp .+216 ; 0x946 <__stack+0xe7> |
86e: 7c c0 rjmp .+248 ; 0x968 <__stack+0x109> |
{ |
case '0':// LCD-Zeile0 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
870: 20 91 98 00 lds r18, 0x0098 |
874: 43 e0 ldi r20, 0x03 ; 3 |
876: 6a e2 ldi r22, 0x2A ; 42 |
878: ce 01 movw r24, r28 |
87a: 01 96 adiw r24, 0x01 ; 1 |
87c: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
880: 1a a6 std Y+42, r1 ; 0x2a |
882: 19 a6 std Y+41, r1 ; 0x29 |
DisplayBusy = 1; |
884: 81 e0 ldi r24, 0x01 ; 1 |
886: 80 93 93 00 sts 0x0093, r24 |
LCD_printfxy(0,0,"%s",tmp_int_arr20); |
88a: 60 e0 ldi r22, 0x00 ; 0 |
88c: 86 2f mov r24, r22 |
88e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
892: ce 01 movw r24, r28 |
894: 01 96 adiw r24, 0x01 ; 1 |
896: 9f 93 push r25 |
898: 8f 93 push r24 |
89a: 88 ea ldi r24, 0xA8 ; 168 |
89c: 90 e0 ldi r25, 0x00 ; 0 |
89e: 3e c0 rjmp .+124 ; 0x91c <__stack+0xbd> |
break; |
case '1':// LCD-Zeile1 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8a0: 20 91 98 00 lds r18, 0x0098 |
8a4: 43 e0 ldi r20, 0x03 ; 3 |
8a6: 6a e2 ldi r22, 0x2A ; 42 |
8a8: ce 01 movw r24, r28 |
8aa: 01 96 adiw r24, 0x01 ; 1 |
8ac: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8b0: 1a a6 std Y+42, r1 ; 0x2a |
8b2: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,1,"%s",tmp_int_arr20); |
8b4: 61 e0 ldi r22, 0x01 ; 1 |
8b6: 80 e0 ldi r24, 0x00 ; 0 |
8b8: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8bc: ce 01 movw r24, r28 |
8be: 01 96 adiw r24, 0x01 ; 1 |
8c0: 9f 93 push r25 |
8c2: 8f 93 push r24 |
8c4: 8b ea ldi r24, 0xAB ; 171 |
8c6: 90 e0 ldi r25, 0x00 ; 0 |
8c8: 29 c0 rjmp .+82 ; 0x91c <__stack+0xbd> |
break; |
case '2':// LCD-Zeile2 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8ca: 20 91 98 00 lds r18, 0x0098 |
8ce: 43 e0 ldi r20, 0x03 ; 3 |
8d0: 6a e2 ldi r22, 0x2A ; 42 |
8d2: ce 01 movw r24, r28 |
8d4: 01 96 adiw r24, 0x01 ; 1 |
8d6: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
8da: 1a a6 std Y+42, r1 ; 0x2a |
8dc: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,2,"%s",tmp_int_arr20); |
8de: 62 e0 ldi r22, 0x02 ; 2 |
8e0: 80 e0 ldi r24, 0x00 ; 0 |
8e2: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
8e6: ce 01 movw r24, r28 |
8e8: 01 96 adiw r24, 0x01 ; 1 |
8ea: 9f 93 push r25 |
8ec: 8f 93 push r24 |
8ee: 8e ea ldi r24, 0xAE ; 174 |
8f0: 90 e0 ldi r25, 0x00 ; 0 |
8f2: 14 c0 rjmp .+40 ; 0x91c <__stack+0xbd> |
break; |
case '3':// LCD-Zeile3 |
Decode64((unsigned char *) &tmp_int_arr20,sizeof(tmp_int_arr20),3,AnzahlEmpfangsBytes); |
8f4: 20 91 98 00 lds r18, 0x0098 |
8f8: 43 e0 ldi r20, 0x03 ; 3 |
8fa: 6a e2 ldi r22, 0x2A ; 42 |
8fc: ce 01 movw r24, r28 |
8fe: 01 96 adiw r24, 0x01 ; 1 |
900: 0e 94 92 03 call 0x724 <Decode64> |
tmp_int_arr20[20] = 0; |
904: 1a a6 std Y+42, r1 ; 0x2a |
906: 19 a6 std Y+41, r1 ; 0x29 |
LCD_printfxy(0,3,"%s",tmp_int_arr20); |
908: 63 e0 ldi r22, 0x03 ; 3 |
90a: 80 e0 ldi r24, 0x00 ; 0 |
90c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
910: ce 01 movw r24, r28 |
912: 01 96 adiw r24, 0x01 ; 1 |
914: 9f 93 push r25 |
916: 8f 93 push r24 |
918: 81 eb ldi r24, 0xB1 ; 177 |
91a: 90 e0 ldi r25, 0x00 ; 0 |
91c: 9f 93 push r25 |
91e: 8f 93 push r24 |
920: 0e 94 e3 06 call 0xdc6 <_printf_P> |
break; |
924: 0f 90 pop r0 |
926: 0f 90 pop r0 |
928: 0f 90 pop r0 |
92a: 0f 90 pop r0 |
92c: 1d c0 rjmp .+58 ; 0x968 <__stack+0x109> |
case 'D': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugOut,sizeof(DebugOut),3,AnzahlEmpfangsBytes); |
92e: 20 91 98 00 lds r18, 0x0098 |
932: 43 e0 ldi r20, 0x03 ; 3 |
934: 6a e1 ldi r22, 0x1A ; 26 |
936: 83 ed ldi r24, 0xD3 ; 211 |
938: 90 e0 ldi r25, 0x00 ; 0 |
93a: 0e 94 92 03 call 0x724 <Decode64> |
PORTB = DebugOut.Digital[1]; |
93e: 80 91 d4 00 lds r24, 0x00D4 |
942: 88 bb out 0x18, r24 ; 24 |
break; |
944: 11 c0 rjmp .+34 ; 0x968 <__stack+0x109> |
case 'K': // Debug Eingangsdaten |
Decode64(tmp_char_arr3,sizeof(tmp_char_arr3),3,AnzahlEmpfangsBytes); |
946: 20 91 98 00 lds r18, 0x0098 |
94a: 43 e0 ldi r20, 0x03 ; 3 |
94c: 64 2f mov r22, r20 |
94e: ce 01 movw r24, r28 |
950: 8b 96 adiw r24, 0x2b ; 43 |
952: 0e 94 92 03 call 0x724 <Decode64> |
TX_DigTransferKanalL = tmp_char_arr3[0]; |
956: 8b a5 ldd r24, Y+43 ; 0x2b |
958: 80 93 96 00 sts 0x0096, r24 |
TX_DigTransferKanalH = tmp_char_arr3[1]; |
95c: 8c a5 ldd r24, Y+44 ; 0x2c |
95e: 80 93 95 00 sts 0x0095, r24 |
TX_DigTransferKanalDaten = tmp_char_arr3[2]; |
962: 8d a5 ldd r24, Y+45 ; 0x2d |
964: 80 93 94 00 sts 0x0094, r24 |
968: ad 96 adiw r28, 0x2d ; 45 |
96a: 0f b6 in r0, 0x3f ; 63 |
96c: f8 94 cli |
96e: de bf out 0x3e, r29 ; 62 |
970: 0f be out 0x3f, r0 ; 63 |
972: cd bf out 0x3d, r28 ; 61 |
974: df 91 pop r29 |
976: cf 91 pop r28 |
978: 08 95 ret |
0000097a <uart_putchar>: |
//if(RxdBuffer[1] == 'b') LCD_printfxy(0,0,"b:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
//if(RxdBuffer[1] == 'c') LCD_printfxy(0,1,"c:%4d %2x",(int)TX_DigTransferKanalH * 256 + TX_DigTransferKanalL,TX_DigTransferKanalDaten); |
break; |
/* |
unsigned char Digital[13]; // 0 = Taster, Hauptkarte |
// 1 + 2 = Debugkanäle |
// 3 = Digin, Hauptkarte |
// 4 = Relais, Hauptkarte |
// 5 + 6 = Extern IO1 (12Bit ein 4 Bit aus) |
// 7 + 8 = Extern IO2 (12Bit ein 4 Bit aus) |
// 9 + 10 = Extern IO3 (12Bit ein 4 Bit aus) |
// 11 + 12= Extern IO4 (12Bit ein 4 Bit aus) |
*/ |
/* case 'd': // Debug Eingangsdaten |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
} |
break; |
case 'g': // "Get"-Anforderung für Debug-Daten // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'u': // Uhr stellen |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
ZEITWERT = tmp_int_arr2[0]; |
SEK = tmp_int_arr2[1]; |
make_time_variables(ZEITWERT); |
RTC_SetTime(STD, MIN, SEK); |
RTC_SetWDay(TAG); |
break; |
case 'i': // Intervalle für die Datenübertragung |
Decode64((unsigned char *) &tmp_int_arr2[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
Debug_Timer_Intervall = tmp_int_arr2[0]; |
Debug_Display_Intervall = tmp_int_arr2[1]; |
SendeDummyDaten = 1; |
break; |
case 's': // single Step 1 = Stop 2 = noch einen Zyklus 3 = noch 2 Zyklen |
Decode64((unsigned char *) &tmp_int_arr1[0],sizeof(tmp_int_arr2),3,AnzahlEmpfangsBytes); |
SingleStep = tmp_int_arr1[0]; |
break; |
*/ |
} |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
97a: cf 93 push r28 |
97c: c8 2f mov r28, r24 |
if (c == '\n') |
97e: 8a 30 cpi r24, 0x0A ; 10 |
980: 19 f4 brne .+6 ; 0x988 <uart_putchar+0xe> |
uart_putchar('\r'); |
982: 8d e0 ldi r24, 0x0D ; 13 |
984: 0e 94 bd 04 call 0x97a <uart_putchar> |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
988: 5d 9b sbis 0x0b, 5 ; 11 |
98a: fe cf rjmp .-4 ; 0x988 <uart_putchar+0xe> |
//Ausgabe des Zeichens |
UDR = c; |
98c: cc b9 out 0x0c, r28 ; 12 |
return (0); |
} |
98e: 80 e0 ldi r24, 0x00 ; 0 |
990: 90 e0 ldi r25, 0x00 ; 0 |
992: cf 91 pop r28 |
994: 08 95 ret |
00000996 <WriteProgramData>: |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
996: 08 95 ret |
00000998 <UART_Init>: |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
998: 88 e1 ldi r24, 0x18 ; 24 |
99a: 8a b9 out 0x0a, r24 ; 10 |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
99c: 59 9a sbi 0x0b, 1 ; 11 |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
99e: 57 9a sbi 0x0a, 7 ; 10 |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
9a0: 56 9a sbi 0x0a, 6 ; 10 |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
9a2: 81 e2 ldi r24, 0x21 ; 33 |
9a4: 89 b9 out 0x09, r24 ; 9 |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
9a6: 60 e0 ldi r22, 0x00 ; 0 |
9a8: 70 e0 ldi r23, 0x00 ; 0 |
9aa: 8d eb ldi r24, 0xBD ; 189 |
9ac: 94 e0 ldi r25, 0x04 ; 4 |
9ae: 0e 94 71 0c call 0x18e2 <fdevopen> |
9b2: 08 95 ret |
000009b4 <SendeRemoteTasten>: |
//sbi(PORTD,4); |
} |
/* |
struct str_DebugIn |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
unsigned int Analog[4]; |
}; |
*/ |
void SendeRemoteTasten(unsigned char keys) |
{ |
9b4: 98 2f mov r25, r24 |
while(!UebertragungAbgeschlossen); // evtl warten |
9b6: 80 91 6e 00 lds r24, 0x006E |
9ba: 88 23 and r24, r24 |
9bc: e1 f3 breq .-8 ; 0x9b6 <SendeRemoteTasten+0x2> |
DebugIn.RemoteTasten = keys; |
9be: 90 93 c0 00 sts 0x00C0, r25 |
DebugIn.Analog[0] = AnalogWerte[0]; |
9c2: 80 91 ca 01 lds r24, 0x01CA |
9c6: 90 91 cb 01 lds r25, 0x01CB |
9ca: 90 93 c2 00 sts 0x00C2, r25 |
9ce: 80 93 c1 00 sts 0x00C1, r24 |
DebugIn.Analog[1] = AnalogWerte[1]; |
9d2: 80 91 cc 01 lds r24, 0x01CC |
9d6: 90 91 cd 01 lds r25, 0x01CD |
9da: 90 93 c4 00 sts 0x00C4, r25 |
9de: 80 93 c3 00 sts 0x00C3, r24 |
DebugIn.Analog[2] = AnalogWerte[2]; |
9e2: 80 91 ce 01 lds r24, 0x01CE |
9e6: 90 91 cf 01 lds r25, 0x01CF |
9ea: 90 93 c6 00 sts 0x00C6, r25 |
9ee: 80 93 c5 00 sts 0x00C5, r24 |
DebugIn.Analog[3] = IR_Code; |
9f2: 80 91 c7 01 lds r24, 0x01C7 |
9f6: 90 91 c8 01 lds r25, 0x01C8 |
9fa: 90 93 c8 00 sts 0x00C8, r25 |
9fe: 80 93 c7 00 sts 0x00C7, r24 |
SendOutData('d',SlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
a02: 2b e0 ldi r18, 0x0B ; 11 |
a04: 4e eb ldi r20, 0xBE ; 190 |
a06: 50 e0 ldi r21, 0x00 ; 0 |
a08: 60 91 64 00 lds r22, 0x0064 |
a0c: 84 e6 ldi r24, 0x64 ; 100 |
a0e: 0e 94 1e 03 call 0x63c <SendOutData> |
a12: 08 95 ret |
00000a14 <SendIntervalle>: |
} |
void SendIntervalle(unsigned int debug, unsigned int disp) |
{ |
a14: cf 93 push r28 |
a16: df 93 push r29 |
a18: cd b7 in r28, 0x3d ; 61 |
a1a: de b7 in r29, 0x3e ; 62 |
a1c: 24 97 sbiw r28, 0x04 ; 4 |
a1e: 0f b6 in r0, 0x3f ; 63 |
a20: f8 94 cli |
a22: de bf out 0x3e, r29 ; 62 |
a24: 0f be out 0x3f, r0 ; 63 |
a26: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = debug; |
a28: 9a 83 std Y+2, r25 ; 0x02 |
a2a: 89 83 std Y+1, r24 ; 0x01 |
tmp_int_arr2[1] = disp; |
a2c: 7c 83 std Y+4, r23 ; 0x04 |
a2e: 6b 83 std Y+3, r22 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a30: 80 91 6e 00 lds r24, 0x006E |
a34: 88 23 and r24, r24 |
a36: e1 f3 breq .-8 ; 0xa30 <SendIntervalle+0x1c> |
SendOutData('i',SlaveAdresse,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); |
a38: 24 e0 ldi r18, 0x04 ; 4 |
a3a: ae 01 movw r20, r28 |
a3c: 4f 5f subi r20, 0xFF ; 255 |
a3e: 5f 4f sbci r21, 0xFF ; 255 |
a40: 60 91 64 00 lds r22, 0x0064 |
a44: 89 e6 ldi r24, 0x69 ; 105 |
a46: 0e 94 1e 03 call 0x63c <SendOutData> |
a4a: 24 96 adiw r28, 0x04 ; 4 |
a4c: 0f b6 in r0, 0x3f ; 63 |
a4e: f8 94 cli |
a50: de bf out 0x3e, r29 ; 62 |
a52: 0f be out 0x3f, r0 ; 63 |
a54: cd bf out 0x3d, r28 ; 61 |
a56: df 91 pop r29 |
a58: cf 91 pop r28 |
a5a: 08 95 ret |
00000a5c <ClearIntervalle>: |
} |
void ClearIntervalle(void) |
{ |
a5c: cf 93 push r28 |
a5e: df 93 push r29 |
a60: cd b7 in r28, 0x3d ; 61 |
a62: de b7 in r29, 0x3e ; 62 |
a64: 24 97 sbiw r28, 0x04 ; 4 |
a66: 0f b6 in r0, 0x3f ; 63 |
a68: f8 94 cli |
a6a: de bf out 0x3e, r29 ; 62 |
a6c: 0f be out 0x3f, r0 ; 63 |
a6e: cd bf out 0x3d, r28 ; 61 |
unsigned int tmp_int_arr2[2]; |
tmp_int_arr2[0] = 0; |
a70: 1a 82 std Y+2, r1 ; 0x02 |
a72: 19 82 std Y+1, r1 ; 0x01 |
tmp_int_arr2[1] = 0; |
a74: 1c 82 std Y+4, r1 ; 0x04 |
a76: 1b 82 std Y+3, r1 ; 0x03 |
while(!UebertragungAbgeschlossen); // evtl warten |
a78: 80 91 6e 00 lds r24, 0x006E |
a7c: 88 23 and r24, r24 |
a7e: e1 f3 breq .-8 ; 0xa78 <ClearIntervalle+0x1c> |
SendOutData('i',0,(unsigned char *) &tmp_int_arr2,sizeof(tmp_int_arr2)); // 0= an alle |
a80: 24 e0 ldi r18, 0x04 ; 4 |
a82: ae 01 movw r20, r28 |
a84: 4f 5f subi r20, 0xFF ; 255 |
a86: 5f 4f sbci r21, 0xFF ; 255 |
a88: 60 e0 ldi r22, 0x00 ; 0 |
a8a: 89 e6 ldi r24, 0x69 ; 105 |
a8c: 0e 94 1e 03 call 0x63c <SendOutData> |
a90: 24 96 adiw r28, 0x04 ; 4 |
a92: 0f b6 in r0, 0x3f ; 63 |
a94: f8 94 cli |
a96: de bf out 0x3e, r29 ; 62 |
a98: 0f be out 0x3f, r0 ; 63 |
a9a: cd bf out 0x3d, r28 ; 61 |
a9c: df 91 pop r29 |
a9e: cf 91 pop r28 |
aa0: 08 95 ret |
00000aa2 <DatenUebertragung>: |
} |
void DatenUebertragung(unsigned char key) |
{ |
aa2: cf 93 push r28 |
aa4: df 93 push r29 |
aa6: cd b7 in r28, 0x3d ; 61 |
aa8: de b7 in r29, 0x3e ; 62 |
aaa: 25 97 sbiw r28, 0x05 ; 5 |
aac: 0f b6 in r0, 0x3f ; 63 |
aae: f8 94 cli |
ab0: de bf out 0x3e, r29 ; 62 |
ab2: 0f be out 0x3f, r0 ; 63 |
ab4: cd bf out 0x3d, r28 ; 61 |
ab6: 98 2f mov r25, r24 |
static unsigned char state = 1; |
unsigned char temp_1[1]; |
unsigned char temp_2[2]; |
unsigned char temp_3[3]; |
unsigned int tmp_int_arr2[2]; |
while(!UebertragungAbgeschlossen); // evtl warten |
ab8: 80 91 6e 00 lds r24, 0x006E |
abc: 88 23 and r24, r24 |
abe: e1 f3 breq .-8 ; 0xab8 <DatenUebertragung+0x16> |
static unsigned char KanalSlave = 1; |
if(PollDisplay) |
ac0: 80 91 ed 00 lds r24, 0x00ED |
ac4: 88 23 and r24, r24 |
ac6: e1 f0 breq .+56 ; 0xb00 <DatenUebertragung+0x5e> |
{ |
temp_2[0] = key; |
ac8: 9c 83 std Y+4, r25 ; 0x04 |
temp_2[1] = 6; |
aca: 86 e0 ldi r24, 0x06 ; 6 |
acc: 8d 83 std Y+5, r24 ; 0x05 |
if(DisplayZeilen == 4) temp_2[1] = 4 + 9; // anzahl Zeilen --> + 8 bedeutet: ersten Pollingzyklus freilassen |
ace: 80 91 65 00 lds r24, 0x0065 |
ad2: 84 30 cpi r24, 0x04 ; 4 |
ad4: 11 f4 brne .+4 ; 0xada <DatenUebertragung+0x38> |
ad6: 8d e0 ldi r24, 0x0D ; 13 |
ad8: 01 c0 rjmp .+2 ; 0xadc <DatenUebertragung+0x3a> |
else temp_2[1] = 2 + 9; |
ada: 8b e0 ldi r24, 0x0B ; 11 |
adc: 8d 83 std Y+5, r24 ; 0x05 |
SendOutData('h',SlaveAdresse,(unsigned char *) &temp_2,sizeof(temp_2)); |
ade: 22 e0 ldi r18, 0x02 ; 2 |
ae0: ae 01 movw r20, r28 |
ae2: 4c 5f subi r20, 0xFC ; 252 |
ae4: 5f 4f sbci r21, 0xFF ; 255 |
ae6: 60 91 64 00 lds r22, 0x0064 |
aea: 88 e6 ldi r24, 0x68 ; 104 |
aec: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = '0'; |
af0: 80 e3 ldi r24, 0x30 ; 48 |
af2: 80 93 6d 00 sts 0x006D, r24 |
DisplayBusy = 90; |
af6: 8a e5 ldi r24, 0x5A ; 90 |
af8: 80 93 93 00 sts 0x0093, r24 |
PollDisplay = 0; |
afc: 10 92 ed 00 sts 0x00ED, r1 |
} |
if(!DisplayBusy) |
b00: 60 91 93 00 lds r22, 0x0093 |
b04: 66 23 and r22, r22 |
b06: e1 f5 brne .+120 ; 0xb80 <DatenUebertragung+0xde> |
switch(state) |
b08: 80 91 6f 00 lds r24, 0x006F |
b0c: 99 27 eor r25, r25 |
b0e: 81 30 cpi r24, 0x01 ; 1 |
b10: 91 05 cpc r25, r1 |
b12: 19 f0 breq .+6 ; 0xb1a <DatenUebertragung+0x78> |
b14: 02 97 sbiw r24, 0x02 ; 2 |
b16: e9 f0 breq .+58 ; 0xb52 <DatenUebertragung+0xb0> |
b18: 30 c0 rjmp .+96 ; 0xb7a <DatenUebertragung+0xd8> |
{ |
case 1:// Display |
SendOutData('k',KanalSlave,(unsigned char *) &temp_3,sizeof(temp_3)); |
b1a: 23 e0 ldi r18, 0x03 ; 3 |
b1c: ae 01 movw r20, r28 |
b1e: 4f 5f subi r20, 0xFF ; 255 |
b20: 5f 4f sbci r21, 0xFF ; 255 |
b22: 60 91 70 00 lds r22, 0x0070 |
b26: 8b e6 ldi r24, 0x6B ; 107 |
b28: 0e 94 1e 03 call 0x63c <SendOutData> |
ErwarteAntwort = 'K'; |
b2c: 8b e4 ldi r24, 0x4B ; 75 |
b2e: 80 93 6d 00 sts 0x006D, r24 |
if(++KanalSlave > AnzahlTeilnehmer) KanalSlave = 1; |
b32: 80 91 70 00 lds r24, 0x0070 |
b36: 8f 5f subi r24, 0xFF ; 255 |
b38: 80 93 70 00 sts 0x0070, r24 |
b3c: 90 91 6c 00 lds r25, 0x006C |
b40: 98 17 cp r25, r24 |
b42: 18 f4 brcc .+6 ; 0xb4a <DatenUebertragung+0xa8> |
b44: 81 e0 ldi r24, 0x01 ; 1 |
b46: 80 93 70 00 sts 0x0070, r24 |
state++; |
b4a: 80 91 6f 00 lds r24, 0x006F |
b4e: 8f 5f subi r24, 0xFF ; 255 |
b50: 15 c0 rjmp .+42 ; 0xb7c <DatenUebertragung+0xda> |
break; |
case 2: |
temp_3[0] = TX_DigTransferKanalL; |
b52: 80 91 96 00 lds r24, 0x0096 |
b56: 89 83 std Y+1, r24 ; 0x01 |
temp_3[1] = TX_DigTransferKanalH; |
b58: 80 91 95 00 lds r24, 0x0095 |
b5c: 8a 83 std Y+2, r24 ; 0x02 |
temp_3[2] = TX_DigTransferKanalDaten; |
b5e: 80 91 94 00 lds r24, 0x0094 |
b62: 8b 83 std Y+3, r24 ; 0x03 |
SendOutData('l',0,(unsigned char *) &temp_3,sizeof(temp_3)); |
b64: 23 e0 ldi r18, 0x03 ; 3 |
b66: ae 01 movw r20, r28 |
b68: 4f 5f subi r20, 0xFF ; 255 |
b6a: 5f 4f sbci r21, 0xFF ; 255 |
b6c: 8c e6 ldi r24, 0x6C ; 108 |
b6e: 0e 94 1e 03 call 0x63c <SendOutData> |
AntwortEingetroffen = 1; // erwarte keine Antwort |
b72: 81 e0 ldi r24, 0x01 ; 1 |
b74: 80 93 92 00 sts 0x0092, r24 |
b78: 01 c0 rjmp .+2 ; 0xb7c <DatenUebertragung+0xda> |
state = 1; |
break; |
default: state = 1; |
b7a: 81 e0 ldi r24, 0x01 ; 1 |
b7c: 80 93 6f 00 sts 0x006F, r24 |
b80: 25 96 adiw r28, 0x05 ; 5 |
b82: 0f b6 in r0, 0x3f ; 63 |
b84: f8 94 cli |
b86: de bf out 0x3e, r29 ; 62 |
b88: 0f be out 0x3f, r0 ; 63 |
b8a: cd bf out 0x3d, r28 ; 61 |
b8c: df 91 pop r29 |
b8e: cf 91 pop r28 |
b90: 08 95 ret |
00000b92 <_long_delay>: |
#include "main.h" |
void _long_delay(void) |
{ |
long t = 5000; |
b92: 88 e8 ldi r24, 0x88 ; 136 |
b94: 93 e1 ldi r25, 0x13 ; 19 |
b96: a0 e0 ldi r26, 0x00 ; 0 |
b98: b0 e0 ldi r27, 0x00 ; 0 |
while (t--); |
b9a: 03 97 sbiw r24, 0x03 ; 3 |
b9c: a1 09 sbc r26, r1 |
b9e: b1 09 sbc r27, r1 |
ba0: 8f 3f cpi r24, 0xFF ; 255 |
ba2: 2f ef ldi r18, 0xFF ; 255 |
ba4: 92 07 cpc r25, r18 |
ba6: 2f ef ldi r18, 0xFF ; 255 |
ba8: a2 07 cpc r26, r18 |
baa: 2f ef ldi r18, 0xFF ; 255 |
bac: b2 07 cpc r27, r18 |
bae: a9 f7 brne .-22 ; 0xb9a <_long_delay+0x8> |
bb0: 08 95 ret |
00000bb2 <_short_delay>: |
} |
void _short_delay(void) |
{ |
int t = 500; |
bb2: 84 ef ldi r24, 0xF4 ; 244 |
bb4: 91 e0 ldi r25, 0x01 ; 1 |
while (t--); |
bb6: 03 97 sbiw r24, 0x03 ; 3 |
bb8: 2f ef ldi r18, 0xFF ; 255 |
bba: 8f 3f cpi r24, 0xFF ; 255 |
bbc: 92 07 cpc r25, r18 |
bbe: d9 f7 brne .-10 ; 0xbb6 <_short_delay+0x4> |
bc0: 08 95 ret |
00000bc2 <_lcd_write_command>: |
} |
void _lcd_write_command(unsigned char data) |
{ |
bc2: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bc4: 80 7f andi r24, 0xF0 ; 240 |
bc6: 98 2f mov r25, r24 |
bc8: 94 60 ori r25, 0x04 ; 4 |
bca: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN; |
bcc: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bce: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data & 0xf0); |
bd0: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bd2: 82 2f mov r24, r18 |
bd4: 99 27 eor r25, r25 |
bd6: 34 e0 ldi r19, 0x04 ; 4 |
bd8: 88 0f add r24, r24 |
bda: 99 1f adc r25, r25 |
bdc: 3a 95 dec r19 |
bde: e1 f7 brne .-8 ; 0xbd8 <_lcd_write_command+0x16> |
be0: 84 60 ori r24, 0x04 ; 4 |
be2: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
be4: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4); |
be6: 22 95 swap r18 |
be8: 20 7f andi r18, 0xF0 ; 240 |
bea: 25 bb out 0x15, r18 ; 21 |
bec: 08 95 ret |
00000bee <_lcd_write_4bit>: |
} |
void _lcd_write_4bit(unsigned char data) |
{ |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
bee: 28 2f mov r18, r24 |
bf0: 33 27 eor r19, r19 |
bf2: 44 e0 ldi r20, 0x04 ; 4 |
bf4: 22 0f add r18, r18 |
bf6: 33 1f adc r19, r19 |
bf8: 4a 95 dec r20 |
bfa: e1 f7 brne .-8 ; 0xbf4 <_lcd_write_4bit+0x6> |
bfc: 92 2f mov r25, r18 |
bfe: 94 60 ori r25, 0x04 ; 4 |
c00: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN; |
c02: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data << 4); |
c04: 82 95 swap r24 |
c06: 80 7f andi r24, 0xF0 ; 240 |
c08: 85 bb out 0x15, r24 ; 21 |
c0a: 08 95 ret |
00000c0c <lcd_write_byte>: |
} |
void lcd_write_byte(unsigned char data) |
{ |
c0c: 28 2f mov r18, r24 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_EN | DISPLAY_RS; |
c0e: 80 7f andi r24, 0xF0 ; 240 |
c10: 98 2f mov r25, r24 |
c12: 95 60 ori r25, 0x05 ; 5 |
c14: 95 bb out 0x15, r25 ; 21 |
LCD_PORT_w = (data & 0xf0) | DISPLAY_RS; |
c16: 81 60 ori r24, 0x01 ; 1 |
c18: 85 bb out 0x15, r24 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_EN | DISPLAY_RS; |
c1a: 82 2f mov r24, r18 |
c1c: 99 27 eor r25, r25 |
c1e: 54 e0 ldi r21, 0x04 ; 4 |
c20: 88 0f add r24, r24 |
c22: 99 1f adc r25, r25 |
c24: 5a 95 dec r21 |
c26: e1 f7 brne .-8 ; 0xc20 <lcd_write_byte+0x14> |
c28: 28 2f mov r18, r24 |
c2a: 25 60 ori r18, 0x05 ; 5 |
c2c: 25 bb out 0x15, r18 ; 21 |
LCD_PORT_w = (data << 4) | DISPLAY_RS; |
c2e: 81 60 ori r24, 0x01 ; 1 |
c30: 85 bb out 0x15, r24 ; 21 |
c32: 08 95 ret |
00000c34 <my_pput>: |
} |
int my_pput(int zeichen) |
{ |
lcd_write_byte((char) zeichen); |
c34: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
c38: 81 e0 ldi r24, 0x01 ; 1 |
c3a: 90 e0 ldi r25, 0x00 ; 0 |
c3c: 08 95 ret |
00000c3e <LCD_Init>: |
// initialize the LCD controller |
void LCD_Init(void) |
{ |
LCD_PORT_DDR = 0xff;//0xf0 | DISPLAY_RS | DISPLAY_EN; |
c3e: 8f ef ldi r24, 0xFF ; 255 |
c40: 84 bb out 0x14, r24 ; 20 |
_long_delay(); |
c42: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c46: 0e 94 c9 05 call 0xb92 <_long_delay> |
_long_delay(); |
c4a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c4e: 83 e0 ldi r24, 0x03 ; 3 |
c50: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c54: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c58: 83 e0 ldi r24, 0x03 ; 3 |
c5a: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c5e: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x03); // noch 8 Bit |
c62: 83 e0 ldi r24, 0x03 ; 3 |
c64: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c68: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_4bit(0x02); // jetzt 4 Bit |
c6c: 82 e0 ldi r24, 0x02 ; 2 |
c6e: 0e 94 f7 05 call 0xbee <_lcd_write_4bit> |
_long_delay(); |
c72: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x28); // 4 Bit Zweizeilig |
c76: 88 e2 ldi r24, 0x28 ; 40 |
c78: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c7c: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08); // Display aus |
c80: 88 e0 ldi r24, 0x08 ; 8 |
c82: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c86: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x01); // Clear |
c8a: 81 e0 ldi r24, 0x01 ; 1 |
c8c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c90: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x06); //Entry mode |
c94: 86 e0 ldi r24, 0x06 ; 6 |
c96: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
c9a: 0e 94 c9 05 call 0xb92 <_long_delay> |
_lcd_write_command(0x08 + 4); // Display an |
c9e: 8c e0 ldi r24, 0x0C ; 12 |
ca0: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
_long_delay(); |
ca4: 0e 94 c9 05 call 0xb92 <_long_delay> |
ca8: 08 95 ret |
00000caa <LCD_Gotoxy>: |
} |
void LCD_Gotoxy(unsigned char x , unsigned char y) |
{ |
caa: 1f 93 push r17 |
cac: cf 93 push r28 |
cae: c8 2f mov r28, r24 |
cb0: 16 2f mov r17, r22 |
_short_delay(); |
cb2: 0e 94 d9 05 call 0xbb2 <_short_delay> |
switch(y) |
cb6: 81 2f mov r24, r17 |
cb8: 99 27 eor r25, r25 |
cba: 81 30 cpi r24, 0x01 ; 1 |
cbc: 91 05 cpc r25, r1 |
cbe: 79 f0 breq .+30 ; 0xcde <LCD_Gotoxy+0x34> |
cc0: 82 30 cpi r24, 0x02 ; 2 |
cc2: 91 05 cpc r25, r1 |
cc4: 1c f4 brge .+6 ; 0xccc <LCD_Gotoxy+0x22> |
cc6: 89 2b or r24, r25 |
cc8: 39 f0 breq .+14 ; 0xcd8 <LCD_Gotoxy+0x2e> |
cca: 13 c0 rjmp .+38 ; 0xcf2 <LCD_Gotoxy+0x48> |
ccc: 82 30 cpi r24, 0x02 ; 2 |
cce: 91 05 cpc r25, r1 |
cd0: 49 f0 breq .+18 ; 0xce4 <LCD_Gotoxy+0x3a> |
cd2: 03 97 sbiw r24, 0x03 ; 3 |
cd4: 51 f0 breq .+20 ; 0xcea <LCD_Gotoxy+0x40> |
cd6: 0d c0 rjmp .+26 ; 0xcf2 <LCD_Gotoxy+0x48> |
{ case 0 : _lcd_write_command(x + 0x80); break; |
cd8: 8c 2f mov r24, r28 |
cda: 80 58 subi r24, 0x80 ; 128 |
cdc: 08 c0 rjmp .+16 ; 0xcee <LCD_Gotoxy+0x44> |
case 1 : _lcd_write_command(x + 0xC0); break; |
cde: 8c 2f mov r24, r28 |
ce0: 80 54 subi r24, 0x40 ; 64 |
ce2: 05 c0 rjmp .+10 ; 0xcee <LCD_Gotoxy+0x44> |
case 2 : _lcd_write_command(x + (0x80 + 20)); break; |
ce4: 8c 2f mov r24, r28 |
ce6: 8c 56 subi r24, 0x6C ; 108 |
ce8: 02 c0 rjmp .+4 ; 0xcee <LCD_Gotoxy+0x44> |
case 3 : _lcd_write_command(x + (0xC0 + 20)); break; |
cea: 8c 2f mov r24, r28 |
cec: 8c 52 subi r24, 0x2C ; 44 |
cee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
cf2: cf 91 pop r28 |
cf4: 1f 91 pop r17 |
cf6: 08 95 ret |
00000cf8 <LCD_Write>: |
} |
} |
void LCD_Write(unsigned char *this_text) |
{ |
cf8: 1f 93 push r17 |
cfa: cf 93 push r28 |
cfc: df 93 push r29 |
cfe: ec 01 movw r28, r24 |
unsigned char i = 0; |
d00: 10 e0 ldi r17, 0x00 ; 0 |
while(this_text[i] != 0) |
{ |
lcd_write_byte(this_text[i++]); |
_long_delay(); |
d02: 88 81 ld r24, Y |
d04: 88 23 and r24, r24 |
d06: 79 f0 breq .+30 ; 0xd26 <LCD_Write+0x2e> |
d08: fe 01 movw r30, r28 |
d0a: e1 0f add r30, r17 |
d0c: f1 1d adc r31, r1 |
d0e: 1f 5f subi r17, 0xFF ; 255 |
d10: 80 81 ld r24, Z |
d12: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
d16: 0e 94 c9 05 call 0xb92 <_long_delay> |
d1a: fe 01 movw r30, r28 |
d1c: e1 0f add r30, r17 |
d1e: f1 1d adc r31, r1 |
d20: 80 81 ld r24, Z |
d22: 88 23 and r24, r24 |
d24: 89 f7 brne .-30 ; 0xd08 <LCD_Write+0x10> |
d26: df 91 pop r29 |
d28: cf 91 pop r28 |
d2a: 1f 91 pop r17 |
d2c: 08 95 ret |
00000d2e <LCD_Putchar>: |
} |
} |
char LCD_Putchar(char zeichen) |
{ |
d2e: 1f 93 push r17 |
d30: 18 2f mov r17, r24 |
_short_delay(); |
d32: 0e 94 d9 05 call 0xbb2 <_short_delay> |
lcd_write_byte((char) zeichen); |
d36: 81 2f mov r24, r17 |
d38: 0e 94 06 06 call 0xc0c <lcd_write_byte> |
return(1); |
} |
d3c: 81 e0 ldi r24, 0x01 ; 1 |
d3e: 90 e0 ldi r25, 0x00 ; 0 |
d40: 1f 91 pop r17 |
d42: 08 95 ret |
00000d44 <PRINT>: |
#include "old_macros.h" |
//#define LIGHTPRINTF |
void PRINT(const char * ptr, unsigned int len) { |
d44: 0f 93 push r16 |
d46: 1f 93 push r17 |
d48: cf 93 push r28 |
d4a: df 93 push r29 |
d4c: 8c 01 movw r16, r24 |
d4e: eb 01 movw r28, r22 |
for(;len;len--) |
d50: 67 2b or r22, r23 |
d52: 39 f0 breq .+14 ; 0xd62 <PRINT+0x1e> |
LCD_Putchar(*ptr++); |
d54: f8 01 movw r30, r16 |
d56: 81 91 ld r24, Z+ |
d58: 8f 01 movw r16, r30 |
d5a: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d5e: 21 97 sbiw r28, 0x01 ; 1 |
d60: c9 f7 brne .-14 ; 0xd54 <PRINT+0x10> |
d62: df 91 pop r29 |
d64: cf 91 pop r28 |
d66: 1f 91 pop r17 |
d68: 0f 91 pop r16 |
d6a: 08 95 ret |
00000d6c <PRINTP>: |
} |
void PRINTP(const char * ptr, unsigned int len) { |
d6c: 0f 93 push r16 |
d6e: 1f 93 push r17 |
d70: cf 93 push r28 |
d72: df 93 push r29 |
d74: 8c 01 movw r16, r24 |
d76: eb 01 movw r28, r22 |
for(;len;len--) |
d78: 67 2b or r22, r23 |
d7a: 41 f0 breq .+16 ; 0xd8c <PRINTP+0x20> |
// LCD_Putchar(PRG_RDB(ptr++)); |
LCD_Putchar(pgm_read_byte(ptr++)); |
d7c: f8 01 movw r30, r16 |
d7e: 0f 5f subi r16, 0xFF ; 255 |
d80: 1f 4f sbci r17, 0xFF ; 255 |
d82: 84 91 lpm r24, Z |
d84: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
d88: 21 97 sbiw r28, 0x01 ; 1 |
d8a: c1 f7 brne .-16 ; 0xd7c <PRINTP+0x10> |
d8c: df 91 pop r29 |
d8e: cf 91 pop r28 |
d90: 1f 91 pop r17 |
d92: 0f 91 pop r16 |
d94: 08 95 ret |
00000d96 <PAD_SP>: |
} |
void PAD_SP(signed char howmany) { |
d96: cf 93 push r28 |
d98: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
d9a: 18 16 cp r1, r24 |
d9c: 34 f4 brge .+12 ; 0xdaa <PAD_SP+0x14> |
LCD_Putchar(' '); |
d9e: 80 e2 ldi r24, 0x20 ; 32 |
da0: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
da4: c1 50 subi r28, 0x01 ; 1 |
da6: 1c 16 cp r1, r28 |
da8: d4 f3 brlt .-12 ; 0xd9e <PAD_SP+0x8> |
daa: cf 91 pop r28 |
dac: 08 95 ret |
00000dae <PAD_0>: |
} |
void PAD_0(signed char howmany) { |
dae: cf 93 push r28 |
db0: c8 2f mov r28, r24 |
for(;howmany>0;howmany--) |
db2: 18 16 cp r1, r24 |
db4: 34 f4 brge .+12 ; 0xdc2 <PAD_0+0x14> |
LCD_Putchar('0'); |
db6: 80 e3 ldi r24, 0x30 ; 48 |
db8: 0e 94 97 06 call 0xd2e <LCD_Putchar> |
dbc: c1 50 subi r28, 0x01 ; 1 |
dbe: 1c 16 cp r1, r28 |
dc0: d4 f3 brlt .-12 ; 0xdb6 <PAD_0+0x8> |
dc2: cf 91 pop r28 |
dc4: 08 95 ret |
00000dc6 <_printf_P>: |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
dc6: 2f 92 push r2 |
dc8: 3f 92 push r3 |
dca: 4f 92 push r4 |
dcc: 5f 92 push r5 |
dce: 6f 92 push r6 |
dd0: 7f 92 push r7 |
dd2: 8f 92 push r8 |
dd4: 9f 92 push r9 |
dd6: af 92 push r10 |
dd8: bf 92 push r11 |
dda: cf 92 push r12 |
ddc: df 92 push r13 |
dde: ef 92 push r14 |
de0: ff 92 push r15 |
de2: 0f 93 push r16 |
de4: 1f 93 push r17 |
de6: cf 93 push r28 |
de8: df 93 push r29 |
dea: cd b7 in r28, 0x3d ; 61 |
dec: de b7 in r29, 0x3e ; 62 |
dee: e0 97 sbiw r28, 0x30 ; 48 |
df0: 0f b6 in r0, 0x3f ; 63 |
df2: f8 94 cli |
df4: de bf out 0x3e, r29 ; 62 |
df6: 0f be out 0x3f, r0 ; 63 |
df8: cd bf out 0x3d, r28 ; 61 |
dfa: a5 e4 ldi r26, 0x45 ; 69 |
dfc: 6a 2e mov r6, r26 |
dfe: 71 2c mov r7, r1 |
e00: 6c 0e add r6, r28 |
e02: 7d 1e adc r7, r29 |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
e04: 1c a6 std Y+44, r1 ; 0x2c |
e06: 1d a6 std Y+45, r1 ; 0x2d |
e08: 1e a6 std Y+46, r1 ; 0x2e |
e0a: 1f a6 std Y+47, r1 ; 0x2f |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
va_start(ap, fmt0); |
fmt = fmt0; |
e0c: d3 01 movw r26, r6 |
e0e: ad 90 ld r10, X+ |
e10: bd 90 ld r11, X+ |
e12: 3d 01 movw r6, r26 |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
e14: c5 01 movw r24, r10 |
e16: 05 c0 rjmp .+10 ; 0xe22 <_printf_P+0x5c> |
e18: 05 32 cpi r16, 0x25 ; 37 |
e1a: 39 f0 breq .+14 ; 0xe2a <_printf_P+0x64> |
e1c: 08 94 sec |
e1e: a1 1c adc r10, r1 |
e20: b1 1c adc r11, r1 |
e22: f5 01 movw r30, r10 |
e24: 04 91 lpm r16, Z |
e26: 00 23 and r16, r16 |
e28: b9 f7 brne .-18 ; 0xe18 <_printf_P+0x52> |
/* void */; |
if ((n = fmt - fmark) != 0) { |
e2a: b5 01 movw r22, r10 |
e2c: 68 1b sub r22, r24 |
e2e: 79 0b sbc r23, r25 |
e30: 11 f0 breq .+4 ; 0xe36 <_printf_P+0x70> |
PRINTP(fmark, n); |
e32: 0e 94 b6 06 call 0xd6c <PRINTP> |
} |
if (ch == '\0') |
e36: 00 23 and r16, r16 |
e38: 09 f4 brne .+2 ; 0xe3c <_printf_P+0x76> |
e3a: 30 c2 rjmp .+1120 ; 0x129c <_printf_P+0x4d6> |
goto done; |
fmt++; /* skip over '%' */ |
e3c: 08 94 sec |
e3e: a1 1c adc r10, r1 |
e40: b1 1c adc r11, r1 |
flags = 0; |
e42: 55 24 eor r5, r5 |
dprec = 0; |
e44: 58 aa std Y+48, r5 ; 0x30 |
width = 0; |
e46: 25 2c mov r2, r5 |
prec = -1; |
e48: 1f ef ldi r17, 0xFF ; 255 |
sign = '\0'; |
e4a: 59 a6 std Y+41, r5 ; 0x29 |
rflag: ch = PRG_RDB(fmt++); |
e4c: f5 01 movw r30, r10 |
e4e: 08 94 sec |
e50: a1 1c adc r10, r1 |
e52: b1 1c adc r11, r1 |
e54: 04 91 lpm r16, Z |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
e56: 05 37 cpi r16, 0x75 ; 117 |
e58: 21 f0 breq .+8 ; 0xe62 <_printf_P+0x9c> |
e5a: 80 2f mov r24, r16 |
e5c: 80 62 ori r24, 0x20 ; 32 |
e5e: 88 37 cpi r24, 0x78 ; 120 |
e60: f1 f4 brne .+60 ; 0xe9e <_printf_P+0xd8> |
#endif |
if (flags&LONGINT) { |
e62: 50 fe sbrs r5, 0 |
e64: 0e c0 rjmp .+28 ; 0xe82 <_printf_P+0xbc> |
_ulong=va_arg(ap, unsigned long); |
e66: f3 01 movw r30, r6 |
e68: 24 e0 ldi r18, 0x04 ; 4 |
e6a: 30 e0 ldi r19, 0x00 ; 0 |
e6c: 62 0e add r6, r18 |
e6e: 73 1e adc r7, r19 |
e70: 80 81 ld r24, Z |
e72: 91 81 ldd r25, Z+1 ; 0x01 |
e74: a2 81 ldd r26, Z+2 ; 0x02 |
e76: b3 81 ldd r27, Z+3 ; 0x03 |
e78: 8c a7 std Y+44, r24 ; 0x2c |
e7a: 9d a7 std Y+45, r25 ; 0x2d |
e7c: ae a7 std Y+46, r26 ; 0x2e |
e7e: bf a7 std Y+47, r27 ; 0x2f |
e80: 0e c0 rjmp .+28 ; 0xe9e <_printf_P+0xd8> |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
e82: f3 01 movw r30, r6 |
e84: a2 e0 ldi r26, 0x02 ; 2 |
e86: b0 e0 ldi r27, 0x00 ; 0 |
e88: 6a 0e add r6, r26 |
e8a: 7b 1e adc r7, r27 |
e8c: 80 81 ld r24, Z |
e8e: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
e90: 9c 01 movw r18, r24 |
e92: 44 27 eor r20, r20 |
e94: 55 27 eor r21, r21 |
e96: 2c a7 std Y+44, r18 ; 0x2c |
e98: 3d a7 std Y+45, r19 ; 0x2d |
e9a: 4e a7 std Y+46, r20 ; 0x2e |
e9c: 5f a7 std Y+47, r21 ; 0x2f |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
e9e: 00 32 cpi r16, 0x20 ; 32 |
ea0: 21 f4 brne .+8 ; 0xeaa <_printf_P+0xe4> |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
ea2: 89 a5 ldd r24, Y+41 ; 0x29 |
ea4: 88 23 and r24, r24 |
ea6: 91 f6 brne .-92 ; 0xe4c <_printf_P+0x86> |
ea8: 1b c0 rjmp .+54 ; 0xee0 <_printf_P+0x11a> |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
eaa: 03 32 cpi r16, 0x23 ; 35 |
eac: 11 f4 brne .+4 ; 0xeb2 <_printf_P+0xec> |
flags |= ALT; |
eae: 38 e0 ldi r19, 0x08 ; 8 |
eb0: 81 c0 rjmp .+258 ; 0xfb4 <_printf_P+0x1ee> |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
eb2: 0a 32 cpi r16, 0x2A ; 42 |
eb4: 11 f0 breq .+4 ; 0xeba <_printf_P+0xf4> |
eb6: 0d 32 cpi r16, 0x2D ; 45 |
eb8: 89 f4 brne .+34 ; 0xedc <_printf_P+0x116> |
if (ch=='*') { |
eba: 0a 32 cpi r16, 0x2A ; 42 |
ebc: 51 f4 brne .+20 ; 0xed2 <_printf_P+0x10c> |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
ebe: f3 01 movw r30, r6 |
ec0: 42 e0 ldi r20, 0x02 ; 2 |
ec2: 50 e0 ldi r21, 0x00 ; 0 |
ec4: 64 0e add r6, r20 |
ec6: 75 1e adc r7, r21 |
ec8: 20 80 ld r2, Z |
eca: 22 20 and r2, r2 |
ecc: 0c f0 brlt .+2 ; 0xed0 <_printf_P+0x10a> |
ece: be cf rjmp .-132 ; 0xe4c <_printf_P+0x86> |
goto rflag; |
width = -width; |
ed0: 21 94 neg r2 |
} |
flags |= LADJUST; |
ed2: 50 e1 ldi r21, 0x10 ; 16 |
ed4: 55 2a or r5, r21 |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
ed6: 8f ed ldi r24, 0xDF ; 223 |
ed8: 58 22 and r5, r24 |
goto rflag; |
eda: b8 cf rjmp .-144 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='+') { |
edc: 0b 32 cpi r16, 0x2B ; 43 |
ede: 11 f4 brne .+4 ; 0xee4 <_printf_P+0x11e> |
sign = '+'; |
ee0: 09 a7 std Y+41, r16 ; 0x29 |
goto rflag; |
ee2: b4 cf rjmp .-152 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='.') { |
ee4: 0e 32 cpi r16, 0x2E ; 46 |
ee6: c1 f5 brne .+112 ; 0xf58 <_printf_P+0x192> |
if ((ch = PRG_RDB(fmt++)) == '*') { |
ee8: f5 01 movw r30, r10 |
eea: 08 94 sec |
eec: a1 1c adc r10, r1 |
eee: b1 1c adc r11, r1 |
ef0: 04 91 lpm r16, Z |
ef2: 0a 32 cpi r16, 0x2A ; 42 |
ef4: 79 f4 brne .+30 ; 0xf14 <_printf_P+0x14e> |
n = va_arg(ap, int); |
ef6: f3 01 movw r30, r6 |
ef8: a2 e0 ldi r26, 0x02 ; 2 |
efa: b0 e0 ldi r27, 0x00 ; 0 |
efc: 6a 0e add r6, r26 |
efe: 7b 1e adc r7, r27 |
f00: 60 81 ld r22, Z |
f02: 71 81 ldd r23, Z+1 ; 0x01 |
prec = n < 0 ? -1 : n; |
f04: bf ef ldi r27, 0xFF ; 255 |
f06: 6f 3f cpi r22, 0xFF ; 255 |
f08: 7b 07 cpc r23, r27 |
f0a: 14 f4 brge .+4 ; 0xf10 <_printf_P+0x14a> |
f0c: 6f ef ldi r22, 0xFF ; 255 |
f0e: 7f ef ldi r23, 0xFF ; 255 |
f10: 16 2f mov r17, r22 |
goto rflag; |
f12: 9c cf rjmp .-200 ; 0xe4c <_printf_P+0x86> |
} |
n = 0; |
f14: 60 e0 ldi r22, 0x00 ; 0 |
f16: 70 e0 ldi r23, 0x00 ; 0 |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
f18: 80 2f mov r24, r16 |
f1a: 80 53 subi r24, 0x30 ; 48 |
f1c: 8a 30 cpi r24, 0x0A ; 10 |
f1e: a0 f4 brcc .+40 ; 0xf48 <_printf_P+0x182> |
f20: cb 01 movw r24, r22 |
f22: f3 e0 ldi r31, 0x03 ; 3 |
f24: 88 0f add r24, r24 |
f26: 99 1f adc r25, r25 |
f28: fa 95 dec r31 |
f2a: e1 f7 brne .-8 ; 0xf24 <_printf_P+0x15e> |
f2c: 86 0f add r24, r22 |
f2e: 97 1f adc r25, r23 |
f30: 68 0f add r22, r24 |
f32: 79 1f adc r23, r25 |
f34: 60 0f add r22, r16 |
f36: 71 1d adc r23, r1 |
f38: 60 53 subi r22, 0x30 ; 48 |
f3a: 70 40 sbci r23, 0x00 ; 0 |
f3c: f5 01 movw r30, r10 |
f3e: 08 94 sec |
f40: a1 1c adc r10, r1 |
f42: b1 1c adc r11, r1 |
f44: 04 91 lpm r16, Z |
f46: e8 cf rjmp .-48 ; 0xf18 <_printf_P+0x152> |
} |
prec = n < 0 ? -1 : n; |
f48: ef ef ldi r30, 0xFF ; 255 |
f4a: 6f 3f cpi r22, 0xFF ; 255 |
f4c: 7e 07 cpc r23, r30 |
f4e: 14 f4 brge .+4 ; 0xf54 <_printf_P+0x18e> |
f50: 6f ef ldi r22, 0xFF ; 255 |
f52: 7f ef ldi r23, 0xFF ; 255 |
f54: 16 2f mov r17, r22 |
goto reswitch; |
f56: 7f cf rjmp .-258 ; 0xe56 <_printf_P+0x90> |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
f58: 00 33 cpi r16, 0x30 ; 48 |
f5a: 29 f4 brne .+10 ; 0xf66 <_printf_P+0x1a0> |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
f5c: 54 fc sbrc r5, 4 |
f5e: 76 cf rjmp .-276 ; 0xe4c <_printf_P+0x86> |
flags |= ZEROPAD; /* '-' disables '0' */ |
f60: f0 e2 ldi r31, 0x20 ; 32 |
f62: 5f 2a or r5, r31 |
goto rflag; |
f64: 73 cf rjmp .-282 ; 0xe4c <_printf_P+0x86> |
} else if (ch>='1' && ch<='9') { |
f66: 80 2f mov r24, r16 |
f68: 81 53 subi r24, 0x31 ; 49 |
f6a: 89 30 cpi r24, 0x09 ; 9 |
f6c: d8 f4 brcc .+54 ; 0xfa4 <_printf_P+0x1de> |
n = 0; |
f6e: 60 e0 ldi r22, 0x00 ; 0 |
f70: 70 e0 ldi r23, 0x00 ; 0 |
do { |
n = 10 * n + to_digit(ch); |
f72: cb 01 movw r24, r22 |
f74: e3 e0 ldi r30, 0x03 ; 3 |
f76: 88 0f add r24, r24 |
f78: 99 1f adc r25, r25 |
f7a: ea 95 dec r30 |
f7c: e1 f7 brne .-8 ; 0xf76 <_printf_P+0x1b0> |
f7e: 86 0f add r24, r22 |
f80: 97 1f adc r25, r23 |
f82: 68 0f add r22, r24 |
f84: 79 1f adc r23, r25 |
f86: 60 0f add r22, r16 |
f88: 71 1d adc r23, r1 |
f8a: 60 53 subi r22, 0x30 ; 48 |
f8c: 70 40 sbci r23, 0x00 ; 0 |
ch = PRG_RDB(fmt++); |
f8e: f5 01 movw r30, r10 |
f90: 08 94 sec |
f92: a1 1c adc r10, r1 |
f94: b1 1c adc r11, r1 |
f96: 04 91 lpm r16, Z |
} while (is_digit(ch)); |
f98: 80 2f mov r24, r16 |
f9a: 80 53 subi r24, 0x30 ; 48 |
f9c: 8a 30 cpi r24, 0x0A ; 10 |
f9e: 48 f3 brcs .-46 ; 0xf72 <_printf_P+0x1ac> |
width = n; |
fa0: 26 2e mov r2, r22 |
goto reswitch; |
fa2: 59 cf rjmp .-334 ; 0xe56 <_printf_P+0x90> |
} else if (ch=='h') { |
fa4: 08 36 cpi r16, 0x68 ; 104 |
fa6: 19 f4 brne .+6 ; 0xfae <_printf_P+0x1e8> |
flags |= SHORTINT; |
fa8: 24 e0 ldi r18, 0x04 ; 4 |
faa: 52 2a or r5, r18 |
goto rflag; |
fac: 4f cf rjmp .-354 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='l') { |
fae: 0c 36 cpi r16, 0x6C ; 108 |
fb0: 19 f4 brne .+6 ; 0xfb8 <_printf_P+0x1f2> |
flags |= LONGINT; |
fb2: 31 e0 ldi r19, 0x01 ; 1 |
fb4: 53 2a or r5, r19 |
goto rflag; |
fb6: 4a cf rjmp .-364 ; 0xe4c <_printf_P+0x86> |
} else if (ch=='c') { |
fb8: 03 36 cpi r16, 0x63 ; 99 |
fba: 61 f4 brne .+24 ; 0xfd4 <_printf_P+0x20e> |
*(cp = buf) = va_arg(ap, int); |
fbc: 4e 01 movw r8, r28 |
fbe: 08 94 sec |
fc0: 81 1c adc r8, r1 |
fc2: 91 1c adc r9, r1 |
fc4: f3 01 movw r30, r6 |
fc6: 42 e0 ldi r20, 0x02 ; 2 |
fc8: 50 e0 ldi r21, 0x00 ; 0 |
fca: 64 0e add r6, r20 |
fcc: 75 1e adc r7, r21 |
fce: 80 81 ld r24, Z |
fd0: 89 83 std Y+1, r24 ; 0x01 |
fd2: 1b c1 rjmp .+566 ; 0x120a <_printf_P+0x444> |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
fd4: 04 34 cpi r16, 0x44 ; 68 |
fd6: 21 f0 breq .+8 ; 0xfe0 <_printf_P+0x21a> |
fd8: 04 36 cpi r16, 0x64 ; 100 |
fda: 11 f0 breq .+4 ; 0xfe0 <_printf_P+0x21a> |
fdc: 09 36 cpi r16, 0x69 ; 105 |
fde: b1 f5 brne .+108 ; 0x104c <_printf_P+0x286> |
if(ch=='D') |
fe0: 04 34 cpi r16, 0x44 ; 68 |
fe2: 11 f4 brne .+4 ; 0xfe8 <_printf_P+0x222> |
flags |= LONGINT; |
fe4: 51 e0 ldi r21, 0x01 ; 1 |
fe6: 55 2a or r5, r21 |
if (flags&LONGINT) { |
fe8: 50 fe sbrs r5, 0 |
fea: 0a c0 rjmp .+20 ; 0x1000 <_printf_P+0x23a> |
_ulong=va_arg(ap, long); |
fec: f3 01 movw r30, r6 |
fee: 84 e0 ldi r24, 0x04 ; 4 |
ff0: 90 e0 ldi r25, 0x00 ; 0 |
ff2: 68 0e add r6, r24 |
ff4: 79 1e adc r7, r25 |
ff6: 20 81 ld r18, Z |
ff8: 31 81 ldd r19, Z+1 ; 0x01 |
ffa: 42 81 ldd r20, Z+2 ; 0x02 |
ffc: 53 81 ldd r21, Z+3 ; 0x03 |
ffe: 0c c0 rjmp .+24 ; 0x1018 <_printf_P+0x252> |
} else { |
register int _d; |
_d=va_arg(ap, int); |
1000: f3 01 movw r30, r6 |
1002: 42 e0 ldi r20, 0x02 ; 2 |
1004: 50 e0 ldi r21, 0x00 ; 0 |
1006: 64 0e add r6, r20 |
1008: 75 1e adc r7, r21 |
100a: 80 81 ld r24, Z |
100c: 91 81 ldd r25, Z+1 ; 0x01 |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
100e: 9c 01 movw r18, r24 |
1010: 44 27 eor r20, r20 |
1012: 37 fd sbrc r19, 7 |
1014: 40 95 com r20 |
1016: 54 2f mov r21, r20 |
1018: 2c a7 std Y+44, r18 ; 0x2c |
101a: 3d a7 std Y+45, r19 ; 0x2d |
101c: 4e a7 std Y+46, r20 ; 0x2e |
101e: 5f a7 std Y+47, r21 ; 0x2f |
} |
if ((long)_ulong < 0) { |
1020: 8c a5 ldd r24, Y+44 ; 0x2c |
1022: 9d a5 ldd r25, Y+45 ; 0x2d |
1024: ae a5 ldd r26, Y+46 ; 0x2e |
1026: bf a5 ldd r27, Y+47 ; 0x2f |
1028: b7 ff sbrs r27, 7 |
102a: 0d c0 rjmp .+26 ; 0x1046 <_printf_P+0x280> |
_ulong = -_ulong; |
102c: b0 95 com r27 |
102e: a0 95 com r26 |
1030: 90 95 com r25 |
1032: 81 95 neg r24 |
1034: 9f 4f sbci r25, 0xFF ; 255 |
1036: af 4f sbci r26, 0xFF ; 255 |
1038: bf 4f sbci r27, 0xFF ; 255 |
103a: 8c a7 std Y+44, r24 ; 0x2c |
103c: 9d a7 std Y+45, r25 ; 0x2d |
103e: ae a7 std Y+46, r26 ; 0x2e |
1040: bf a7 std Y+47, r27 ; 0x2f |
sign = '-'; |
1042: 8d e2 ldi r24, 0x2D ; 45 |
1044: 89 a7 std Y+41, r24 ; 0x29 |
} |
base = DEC; |
1046: 7a e0 ldi r23, 0x0A ; 10 |
1048: 47 2e mov r4, r23 |
goto number; |
104a: 7b c0 rjmp .+246 ; 0x1142 <_printf_P+0x37c> |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
104c: 0f 34 cpi r16, 0x4F ; 79 |
104e: 11 f0 breq .+4 ; 0x1054 <_printf_P+0x28e> |
1050: 0f 36 cpi r16, 0x6F ; 111 |
1052: 39 f4 brne .+14 ; 0x1062 <_printf_P+0x29c> |
if (ch=='O') |
1054: 0f 34 cpi r16, 0x4F ; 79 |
1056: 11 f4 brne .+4 ; 0x105c <_printf_P+0x296> |
flags |= LONGINT; |
1058: 91 e0 ldi r25, 0x01 ; 1 |
105a: 59 2a or r5, r25 |
base = OCT; |
105c: 68 e0 ldi r22, 0x08 ; 8 |
105e: 46 2e mov r4, r22 |
goto nosign; |
1060: 6f c0 rjmp .+222 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='p') { |
1062: 00 37 cpi r16, 0x70 ; 112 |
1064: a1 f4 brne .+40 ; 0x108e <_printf_P+0x2c8> |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
1066: f3 01 movw r30, r6 |
1068: a2 e0 ldi r26, 0x02 ; 2 |
106a: b0 e0 ldi r27, 0x00 ; 0 |
106c: 6a 0e add r6, r26 |
106e: 7b 1e adc r7, r27 |
1070: 80 81 ld r24, Z |
1072: 91 81 ldd r25, Z+1 ; 0x01 |
1074: 9c 01 movw r18, r24 |
1076: 44 27 eor r20, r20 |
1078: 55 27 eor r21, r21 |
107a: 2c a7 std Y+44, r18 ; 0x2c |
107c: 3d a7 std Y+45, r19 ; 0x2d |
107e: 4e a7 std Y+46, r20 ; 0x2e |
1080: 5f a7 std Y+47, r21 ; 0x2f |
base = HEX; |
1082: 50 e1 ldi r21, 0x10 ; 16 |
1084: 45 2e mov r4, r21 |
flags |= HEXPREFIX; |
1086: 30 e4 ldi r19, 0x40 ; 64 |
1088: 53 2a or r5, r19 |
ch = 'x'; |
108a: 08 e7 ldi r16, 0x78 ; 120 |
goto nosign; |
108c: 59 c0 rjmp .+178 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='s') { // print a string from RAM |
108e: 03 37 cpi r16, 0x73 ; 115 |
1090: c1 f5 brne .+112 ; 0x1102 <_printf_P+0x33c> |
if ((cp = va_arg(ap, char *)) == NULL) { |
1092: f3 01 movw r30, r6 |
1094: 42 e0 ldi r20, 0x02 ; 2 |
1096: 50 e0 ldi r21, 0x00 ; 0 |
1098: 64 0e add r6, r20 |
109a: 75 1e adc r7, r21 |
109c: 80 80 ld r8, Z |
109e: 91 80 ldd r9, Z+1 ; 0x01 |
10a0: 81 14 cp r8, r1 |
10a2: 91 04 cpc r9, r1 |
10a4: 89 f4 brne .+34 ; 0x10c8 <_printf_P+0x302> |
cp=buf; |
10a6: 4e 01 movw r8, r28 |
10a8: 08 94 sec |
10aa: 81 1c adc r8, r1 |
10ac: 91 1c adc r9, r1 |
cp[0] = '('; |
10ae: 88 e2 ldi r24, 0x28 ; 40 |
10b0: 89 83 std Y+1, r24 ; 0x01 |
cp[1] = 'n'; |
10b2: 8e e6 ldi r24, 0x6E ; 110 |
10b4: f4 01 movw r30, r8 |
10b6: 81 83 std Z+1, r24 ; 0x01 |
cp[2] = 'u'; |
10b8: 85 e7 ldi r24, 0x75 ; 117 |
10ba: 8b 83 std Y+3, r24 ; 0x03 |
cp[4] = cp[3] = 'l'; |
10bc: 8c e6 ldi r24, 0x6C ; 108 |
10be: 8c 83 std Y+4, r24 ; 0x04 |
10c0: 8d 83 std Y+5, r24 ; 0x05 |
cp[5] = ')'; |
10c2: 89 e2 ldi r24, 0x29 ; 41 |
10c4: 8e 83 std Y+6, r24 ; 0x06 |
cp[6] = '\0'; |
10c6: 1f 82 std Y+7, r1 ; 0x07 |
} |
if (prec >= 0) { |
10c8: 17 fd sbrc r17, 7 |
10ca: 13 c0 rjmp .+38 ; 0x10f2 <_printf_P+0x32c> |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
10cc: 81 2f mov r24, r17 |
10ce: 99 27 eor r25, r25 |
10d0: 87 fd sbrc r24, 7 |
10d2: 90 95 com r25 |
10d4: ac 01 movw r20, r24 |
10d6: 60 e0 ldi r22, 0x00 ; 0 |
10d8: 70 e0 ldi r23, 0x00 ; 0 |
10da: c4 01 movw r24, r8 |
10dc: 0e 94 64 0c call 0x18c8 <memchr> |
if (p != NULL) { |
10e0: 00 97 sbiw r24, 0x00 ; 0 |
10e2: 29 f0 breq .+10 ; 0x10ee <_printf_P+0x328> |
size = p - cp; |
10e4: d8 2e mov r13, r24 |
10e6: d8 18 sub r13, r8 |
if (size > prec) |
10e8: 1d 15 cp r17, r13 |
10ea: 0c f0 brlt .+2 ; 0x10ee <_printf_P+0x328> |
10ec: 90 c0 rjmp .+288 ; 0x120e <_printf_P+0x448> |
size = prec; |
} else |
size = prec; |
10ee: d1 2e mov r13, r17 |
10f0: 8e c0 rjmp .+284 ; 0x120e <_printf_P+0x448> |
} else |
size = strlen(cp); |
10f2: f4 01 movw r30, r8 |
10f4: 01 90 ld r0, Z+ |
10f6: 00 20 and r0, r0 |
10f8: e9 f7 brne .-6 ; 0x10f4 <_printf_P+0x32e> |
10fa: 31 97 sbiw r30, 0x01 ; 1 |
10fc: de 2e mov r13, r30 |
10fe: d8 18 sub r13, r8 |
1100: 86 c0 rjmp .+268 ; 0x120e <_printf_P+0x448> |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
1102: 05 35 cpi r16, 0x55 ; 85 |
1104: 11 f0 breq .+4 ; 0x110a <_printf_P+0x344> |
1106: 05 37 cpi r16, 0x75 ; 117 |
1108: 39 f4 brne .+14 ; 0x1118 <_printf_P+0x352> |
if (ch=='U') |
110a: 05 35 cpi r16, 0x55 ; 85 |
110c: 11 f4 brne .+4 ; 0x1112 <_printf_P+0x34c> |
flags |= LONGINT; |
110e: f1 e0 ldi r31, 0x01 ; 1 |
1110: 5f 2a or r5, r31 |
base = DEC; |
1112: 4a e0 ldi r20, 0x0A ; 10 |
1114: 44 2e mov r4, r20 |
goto nosign; |
1116: 14 c0 rjmp .+40 ; 0x1140 <_printf_P+0x37a> |
} else if (ch=='X'||ch=='x') { |
1118: 08 35 cpi r16, 0x58 ; 88 |
111a: 19 f0 breq .+6 ; 0x1122 <_printf_P+0x35c> |
111c: 08 37 cpi r16, 0x78 ; 120 |
111e: 09 f0 breq .+2 ; 0x1122 <_printf_P+0x35c> |
1120: 6c c0 rjmp .+216 ; 0x11fa <_printf_P+0x434> |
base = HEX; |
1122: 30 e1 ldi r19, 0x10 ; 16 |
1124: 43 2e mov r4, r19 |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
1126: 53 fe sbrs r5, 3 |
1128: 0b c0 rjmp .+22 ; 0x1140 <_printf_P+0x37a> |
112a: 2c a5 ldd r18, Y+44 ; 0x2c |
112c: 3d a5 ldd r19, Y+45 ; 0x2d |
112e: 4e a5 ldd r20, Y+46 ; 0x2e |
1130: 5f a5 ldd r21, Y+47 ; 0x2f |
1132: 21 15 cp r18, r1 |
1134: 31 05 cpc r19, r1 |
1136: 41 05 cpc r20, r1 |
1138: 51 05 cpc r21, r1 |
113a: 11 f0 breq .+4 ; 0x1140 <_printf_P+0x37a> |
flags |= HEXPREFIX; |
113c: 30 e4 ldi r19, 0x40 ; 64 |
113e: 53 2a or r5, r19 |
/* unsigned conversions */ |
nosign: sign = '\0'; |
1140: 19 a6 std Y+41, r1 ; 0x29 |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
1142: 18 ab std Y+48, r17 ; 0x30 |
1144: 17 fd sbrc r17, 7 |
1146: 02 c0 rjmp .+4 ; 0x114c <_printf_P+0x386> |
flags &= ~ZEROPAD; |
1148: 4f ed ldi r20, 0xDF ; 223 |
114a: 54 22 and r5, r20 |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
114c: 29 e2 ldi r18, 0x29 ; 41 |
114e: 82 2e mov r8, r18 |
1150: 91 2c mov r9, r1 |
1152: 8c 0e add r8, r28 |
1154: 9d 1e adc r9, r29 |
if (_ulong != 0 || prec != 0) { |
1156: 8c a5 ldd r24, Y+44 ; 0x2c |
1158: 9d a5 ldd r25, Y+45 ; 0x2d |
115a: ae a5 ldd r26, Y+46 ; 0x2e |
115c: bf a5 ldd r27, Y+47 ; 0x2f |
115e: 00 97 sbiw r24, 0x00 ; 0 |
1160: a1 05 cpc r26, r1 |
1162: b1 05 cpc r27, r1 |
1164: 21 f4 brne .+8 ; 0x116e <_printf_P+0x3a8> |
1166: 98 a9 ldd r25, Y+48 ; 0x30 |
1168: 99 23 and r25, r25 |
116a: 09 f4 brne .+2 ; 0x116e <_printf_P+0x3a8> |
116c: 3f c0 rjmp .+126 ; 0x11ec <_printf_P+0x426> |
116e: c4 2c mov r12, r4 |
1170: dd 24 eor r13, r13 |
1172: ee 24 eor r14, r14 |
1174: ff 24 eor r15, r15 |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
1176: 33 24 eor r3, r3 |
1178: 2c a5 ldd r18, Y+44 ; 0x2c |
117a: 3d a5 ldd r19, Y+45 ; 0x2d |
117c: 4e a5 ldd r20, Y+46 ; 0x2e |
117e: 5f a5 ldd r21, Y+47 ; 0x2f |
1180: 2c 15 cp r18, r12 |
1182: 3d 05 cpc r19, r13 |
1184: 4e 05 cpc r20, r14 |
1186: 5f 05 cpc r21, r15 |
1188: 10 f0 brcs .+4 ; 0x118e <_printf_P+0x3c8> |
118a: 91 e0 ldi r25, 0x01 ; 1 |
118c: 39 2e mov r3, r25 |
_d = _ulong % base; |
118e: 6c a5 ldd r22, Y+44 ; 0x2c |
1190: 7d a5 ldd r23, Y+45 ; 0x2d |
1192: 8e a5 ldd r24, Y+46 ; 0x2e |
1194: 9f a5 ldd r25, Y+47 ; 0x2f |
1196: a7 01 movw r20, r14 |
1198: 96 01 movw r18, r12 |
119a: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
119e: dc 01 movw r26, r24 |
11a0: cb 01 movw r24, r22 |
11a2: 18 2f mov r17, r24 |
if (_d<10) { |
11a4: 8a 30 cpi r24, 0x0A ; 10 |
11a6: 10 f4 brcc .+4 ; 0x11ac <_printf_P+0x3e6> |
_d+='0'; |
11a8: 10 5d subi r17, 0xD0 ; 208 |
11aa: 04 c0 rjmp .+8 ; 0x11b4 <_printf_P+0x3ee> |
} else { |
_d+='a'-10; |
11ac: 19 5a subi r17, 0xA9 ; 169 |
if (ch=='X') _d&=~0x20; |
11ae: 08 35 cpi r16, 0x58 ; 88 |
11b0: 09 f4 brne .+2 ; 0x11b4 <_printf_P+0x3ee> |
11b2: 1f 7d andi r17, 0xDF ; 223 |
} |
*--cp=_d; |
11b4: d4 01 movw r26, r8 |
11b6: 1e 93 st -X, r17 |
11b8: 4d 01 movw r8, r26 |
_ulong /= base; |
11ba: 6c a5 ldd r22, Y+44 ; 0x2c |
11bc: 7d a5 ldd r23, Y+45 ; 0x2d |
11be: 8e a5 ldd r24, Y+46 ; 0x2e |
11c0: 9f a5 ldd r25, Y+47 ; 0x2f |
11c2: a7 01 movw r20, r14 |
11c4: 96 01 movw r18, r12 |
11c6: 0e 94 d4 0d call 0x1ba8 <__udivmodsi4> |
11ca: 2c a7 std Y+44, r18 ; 0x2c |
11cc: 3d a7 std Y+45, r19 ; 0x2d |
11ce: 4e a7 std Y+46, r20 ; 0x2e |
11d0: 5f a7 std Y+47, r21 ; 0x2f |
} while (notlastdigit); |
11d2: 33 20 and r3, r3 |
11d4: 81 f6 brne .-96 ; 0x1176 <_printf_P+0x3b0> |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
11d6: b8 e0 ldi r27, 0x08 ; 8 |
11d8: 4b 16 cp r4, r27 |
11da: 41 f4 brne .+16 ; 0x11ec <_printf_P+0x426> |
11dc: 53 fe sbrs r5, 3 |
11de: 06 c0 rjmp .+12 ; 0x11ec <_printf_P+0x426> |
11e0: 10 33 cpi r17, 0x30 ; 48 |
11e2: 21 f0 breq .+8 ; 0x11ec <_printf_P+0x426> |
*--cp = '0'; |
11e4: 80 e3 ldi r24, 0x30 ; 48 |
11e6: f4 01 movw r30, r8 |
11e8: 82 93 st -Z, r24 |
11ea: 4f 01 movw r8, r30 |
#endif |
} |
size = buf + BUF - cp; |
11ec: ce 01 movw r24, r28 |
11ee: 01 96 adiw r24, 0x01 ; 1 |
11f0: d8 2e mov r13, r24 |
11f2: d8 18 sub r13, r8 |
11f4: f8 e2 ldi r31, 0x28 ; 40 |
11f6: df 0e add r13, r31 |
11f8: 0b c0 rjmp .+22 ; 0x1210 <_printf_P+0x44a> |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
11fa: 00 23 and r16, r16 |
11fc: 09 f4 brne .+2 ; 0x1200 <_printf_P+0x43a> |
11fe: 4e c0 rjmp .+156 ; 0x129c <_printf_P+0x4d6> |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
1200: 4e 01 movw r8, r28 |
1202: 08 94 sec |
1204: 81 1c adc r8, r1 |
1206: 91 1c adc r9, r1 |
*cp = ch; |
1208: 09 83 std Y+1, r16 ; 0x01 |
size = 1; |
120a: 81 e0 ldi r24, 0x01 ; 1 |
120c: d8 2e mov r13, r24 |
sign = '\0'; |
120e: 19 a6 std Y+41, r1 ; 0x29 |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
1210: 1d 2d mov r17, r13 |
dpad = dprec - size; |
1212: c8 a8 ldd r12, Y+48 ; 0x30 |
1214: cd 18 sub r12, r13 |
if (dpad < 0) |
1216: c7 fc sbrc r12, 7 |
dpad = 0; |
1218: cc 24 eor r12, r12 |
if (sign) |
121a: 89 a5 ldd r24, Y+41 ; 0x29 |
121c: 88 23 and r24, r24 |
121e: 11 f0 breq .+4 ; 0x1224 <_printf_P+0x45e> |
fieldsz++; |
1220: 1f 5f subi r17, 0xFF ; 255 |
1222: 02 c0 rjmp .+4 ; 0x1228 <_printf_P+0x462> |
else if (flags & HEXPREFIX) |
1224: 56 fc sbrc r5, 6 |
fieldsz += 2; |
1226: 1e 5f subi r17, 0xFE ; 254 |
fieldsz += dpad; |
1228: 1c 0d add r17, r12 |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
122a: e5 2c mov r14, r5 |
122c: ff 24 eor r15, r15 |
122e: c7 01 movw r24, r14 |
1230: 80 73 andi r24, 0x30 ; 48 |
1232: 90 70 andi r25, 0x00 ; 0 |
1234: 89 2b or r24, r25 |
1236: 21 f4 brne .+8 ; 0x1240 <_printf_P+0x47a> |
PAD_SP(width - fieldsz); |
1238: 82 2d mov r24, r2 |
123a: 81 1b sub r24, r17 |
123c: 0e 94 cb 06 call 0xd96 <PAD_SP> |
/* prefix */ |
if (sign) { |
1240: 89 a5 ldd r24, Y+41 ; 0x29 |
1242: 88 23 and r24, r24 |
1244: 29 f0 breq .+10 ; 0x1250 <_printf_P+0x48a> |
PRINT(&sign, 1); |
1246: 61 e0 ldi r22, 0x01 ; 1 |
1248: 70 e0 ldi r23, 0x00 ; 0 |
124a: ce 01 movw r24, r28 |
124c: 89 96 adiw r24, 0x29 ; 41 |
124e: 09 c0 rjmp .+18 ; 0x1262 <_printf_P+0x49c> |
} else if (flags & HEXPREFIX) { |
1250: e6 fe sbrs r14, 6 |
1252: 09 c0 rjmp .+18 ; 0x1266 <_printf_P+0x4a0> |
ox[0] = '0'; |
1254: 80 e3 ldi r24, 0x30 ; 48 |
1256: 8a a7 std Y+42, r24 ; 0x2a |
ox[1] = ch; |
1258: 0b a7 std Y+43, r16 ; 0x2b |
PRINT(ox, 2); |
125a: 62 e0 ldi r22, 0x02 ; 2 |
125c: 70 e0 ldi r23, 0x00 ; 0 |
125e: ce 01 movw r24, r28 |
1260: 8a 96 adiw r24, 0x2a ; 42 |
1262: 0e 94 a2 06 call 0xd44 <PRINT> |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
1266: c7 01 movw r24, r14 |
1268: 80 73 andi r24, 0x30 ; 48 |
126a: 90 70 andi r25, 0x00 ; 0 |
126c: 80 97 sbiw r24, 0x20 ; 32 |
126e: 21 f4 brne .+8 ; 0x1278 <_printf_P+0x4b2> |
PAD_0(width - fieldsz); |
1270: 82 2d mov r24, r2 |
1272: 81 1b sub r24, r17 |
1274: 0e 94 d7 06 call 0xdae <PAD_0> |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
1278: 8c 2d mov r24, r12 |
127a: 0e 94 d7 06 call 0xdae <PAD_0> |
/* the string or number proper */ |
PRINT(cp, size); |
127e: 8d 2d mov r24, r13 |
1280: 99 27 eor r25, r25 |
1282: 87 fd sbrc r24, 7 |
1284: 90 95 com r25 |
1286: bc 01 movw r22, r24 |
1288: c4 01 movw r24, r8 |
128a: 0e 94 a2 06 call 0xd44 <PRINT> |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
128e: e4 fe sbrs r14, 4 |
1290: c1 cd rjmp .-1150 ; 0xe14 <_printf_P+0x4e> |
PAD_SP(width - fieldsz); |
1292: 82 2d mov r24, r2 |
1294: 81 1b sub r24, r17 |
1296: 0e 94 cb 06 call 0xd96 <PAD_SP> |
129a: bc cd rjmp .-1160 ; 0xe14 <_printf_P+0x4e> |
129c: e0 96 adiw r28, 0x30 ; 48 |
129e: 0f b6 in r0, 0x3f ; 63 |
12a0: f8 94 cli |
12a2: de bf out 0x3e, r29 ; 62 |
12a4: 0f be out 0x3f, r0 ; 63 |
12a6: cd bf out 0x3d, r28 ; 61 |
12a8: df 91 pop r29 |
12aa: cf 91 pop r28 |
12ac: 1f 91 pop r17 |
12ae: 0f 91 pop r16 |
12b0: ff 90 pop r15 |
12b2: ef 90 pop r14 |
12b4: df 90 pop r13 |
12b6: cf 90 pop r12 |
12b8: bf 90 pop r11 |
12ba: af 90 pop r10 |
12bc: 9f 90 pop r9 |
12be: 8f 90 pop r8 |
12c0: 7f 90 pop r7 |
12c2: 6f 90 pop r6 |
12c4: 5f 90 pop r5 |
12c6: 4f 90 pop r4 |
12c8: 3f 90 pop r3 |
12ca: 2f 90 pop r2 |
12cc: 08 95 ret |
000012ce <__vector_9>: |
}; |
SIGNAL (SIG_OVERFLOW1) |
{ |
12ce: 1f 92 push r1 |
12d0: 0f 92 push r0 |
12d2: 0f b6 in r0, 0x3f ; 63 |
12d4: 0f 92 push r0 |
12d6: 11 24 eor r1, r1 |
12d8: 8f 93 push r24 |
12da: 9f 93 push r25 |
static unsigned char cnt_10ms = 0; |
TCNT1 -= TIMER_RELOAD_VALUE; |
12dc: 8c b5 in r24, 0x2c ; 44 |
12de: 9d b5 in r25, 0x2d ; 45 |
12e0: 8a 5f subi r24, 0xFA ; 250 |
12e2: 90 40 sbci r25, 0x00 ; 0 |
12e4: 9d bd out 0x2d, r25 ; 45 |
12e6: 8c bd out 0x2c, r24 ; 44 |
CountMilliseconds++; |
12e8: 80 91 a5 00 lds r24, 0x00A5 |
12ec: 90 91 a6 00 lds r25, 0x00A6 |
12f0: 01 96 adiw r24, 0x01 ; 1 |
12f2: 90 93 a6 00 sts 0x00A6, r25 |
12f6: 80 93 a5 00 sts 0x00A5, r24 |
if(DisplayBusy) DisplayBusy--; |
12fa: 80 91 93 00 lds r24, 0x0093 |
12fe: 88 23 and r24, r24 |
1300: 29 f0 breq .+10 ; 0x130c <__vector_9+0x3e> |
1302: 80 91 93 00 lds r24, 0x0093 |
1306: 81 50 subi r24, 0x01 ; 1 |
1308: 80 93 93 00 sts 0x0093, r24 |
if(LoescheIrCodeTimer) |
130c: 80 91 7c 00 lds r24, 0x007C |
1310: 90 91 7d 00 lds r25, 0x007D |
1314: 00 97 sbiw r24, 0x00 ; 0 |
1316: 59 f0 breq .+22 ; 0x132e <__vector_9+0x60> |
{ |
if(--LoescheIrCodeTimer == 0) IR_Code = 0; |
1318: 01 97 sbiw r24, 0x01 ; 1 |
131a: 90 93 7d 00 sts 0x007D, r25 |
131e: 80 93 7c 00 sts 0x007C, r24 |
1322: 00 97 sbiw r24, 0x00 ; 0 |
1324: 21 f4 brne .+8 ; 0x132e <__vector_9+0x60> |
1326: 90 93 c8 01 sts 0x01C8, r25 |
132a: 80 93 c7 01 sts 0x01C7, r24 |
132e: 9f 91 pop r25 |
1330: 8f 91 pop r24 |
1332: 0f 90 pop r0 |
1334: 0f be out 0x3f, r0 ; 63 |
1336: 0f 90 pop r0 |
1338: 1f 90 pop r1 |
133a: 18 95 reti |
0000133c <Timer1_Init>: |
} |
} |
void Timer1_Init(void) |
{ |
TCCR1B = TIMER_TEILER; |
133c: 83 e0 ldi r24, 0x03 ; 3 |
133e: 8e bd out 0x2e, r24 ; 46 |
TCNT1 = -TIMER_RELOAD_VALUE; // reload |
1340: 86 e0 ldi r24, 0x06 ; 6 |
1342: 9f ef ldi r25, 0xFF ; 255 |
1344: 9d bd out 0x2d, r25 ; 45 |
1346: 8c bd out 0x2c, r24 ; 44 |
//OCR1 = 0x00; |
// Timer(s)/Counter(s) Interrupt(s) initialization |
#if defined (__AVR_ATmega32__) |
TIMSK |= 0x04; |
1348: 89 b7 in r24, 0x39 ; 57 |
134a: 84 60 ori r24, 0x04 ; 4 |
134c: 89 bf out 0x39, r24 ; 57 |
134e: 08 95 ret |
00001350 <SetDelay>: |
#endif |
#if defined (__AVR_ATmega644__) |
TIMSK1 |= _BV(TOIE1); |
#endif |
} |
unsigned int SetDelay (unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
1350: 20 91 a5 00 lds r18, 0x00A5 |
1354: 30 91 a6 00 lds r19, 0x00A6 |
1358: 28 0f add r18, r24 |
135a: 39 1f adc r19, r25 |
} |
135c: c9 01 movw r24, r18 |
135e: 01 97 sbiw r24, 0x01 ; 1 |
1360: 08 95 ret |
00001362 <CheckDelay>: |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
1362: 20 91 a5 00 lds r18, 0x00A5 |
1366: 30 91 a6 00 lds r19, 0x00A6 |
136a: 82 1b sub r24, r18 |
136c: 93 0b sbc r25, r19 |
136e: 89 2f mov r24, r25 |
1370: 99 27 eor r25, r25 |
1372: 80 78 andi r24, 0x80 ; 128 |
} |
1374: 99 27 eor r25, r25 |
1376: 08 95 ret |
00001378 <Delay_ms>: |
void Delay_ms(unsigned int w) |
{ |
1378: cf 93 push r28 |
137a: df 93 push r29 |
unsigned int akt; |
akt = SetDelay(w); |
137c: 0e 94 a8 09 call 0x1350 <SetDelay> |
1380: ec 01 movw r28, r24 |
while (!CheckDelay(akt)); |
1382: ce 01 movw r24, r28 |
1384: 0e 94 b1 09 call 0x1362 <CheckDelay> |
1388: 88 23 and r24, r24 |
138a: d9 f3 breq .-10 ; 0x1382 <Delay_ms+0xa> |
138c: df 91 pop r29 |
138e: cf 91 pop r28 |
1390: 08 95 ret |
00001392 <Keyboard_Init>: |
unsigned int KeyTimer = 0; |
void Keyboard_Init(void) |
{ |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1392: 82 e3 ldi r24, 0x32 ; 50 |
1394: 90 e0 ldi r25, 0x00 ; 0 |
1396: 0e 94 a8 09 call 0x1350 <SetDelay> |
139a: 90 93 a9 00 sts 0x00A9, r25 |
139e: 80 93 a8 00 sts 0x00A8, r24 |
13a2: 08 95 ret |
000013a4 <GetKeyboard>: |
} |
unsigned char GetKeyboard(void) |
{ |
13a4: cf 93 push r28 |
static char taste1 = 0, taste2 = 0,taste3 = 0,taste4 = 0,taste5 = 0; |
unsigned char ret = 0; |
13a6: c0 e0 ldi r28, 0x00 ; 0 |
if(CheckDelay(KeyTimer)) |
13a8: 80 91 a8 00 lds r24, 0x00A8 |
13ac: 90 91 a9 00 lds r25, 0x00A9 |
13b0: 0e 94 b1 09 call 0x1362 <CheckDelay> |
13b4: 88 23 and r24, r24 |
13b6: 09 f4 brne .+2 ; 0x13ba <GetKeyboard+0x16> |
13b8: 76 c0 rjmp .+236 ; 0x14a6 <GetKeyboard+0x102> |
{ |
if(_TASTE1) { if(taste1++ == 0 || taste1 == CNT_TASTE) ret |= KEY1; if(taste1 == CNT_TASTE) taste1 = CNT_TASTE-CNT_TASTE/3;} else taste1 = 0; |
13ba: cf 9b sbis 0x19, 7 ; 25 |
13bc: 12 c0 rjmp .+36 ; 0x13e2 <GetKeyboard+0x3e> |
13be: 80 91 aa 00 lds r24, 0x00AA |
13c2: 8f 5f subi r24, 0xFF ; 255 |
13c4: 80 93 aa 00 sts 0x00AA, r24 |
13c8: 81 30 cpi r24, 0x01 ; 1 |
13ca: 11 f0 breq .+4 ; 0x13d0 <GetKeyboard+0x2c> |
13cc: 8a 30 cpi r24, 0x0A ; 10 |
13ce: 09 f4 brne .+2 ; 0x13d2 <GetKeyboard+0x2e> |
13d0: c1 e0 ldi r28, 0x01 ; 1 |
13d2: 80 91 aa 00 lds r24, 0x00AA |
13d6: 8a 30 cpi r24, 0x0A ; 10 |
13d8: 31 f4 brne .+12 ; 0x13e6 <GetKeyboard+0x42> |
13da: 87 e0 ldi r24, 0x07 ; 7 |
13dc: 80 93 aa 00 sts 0x00AA, r24 |
13e0: 02 c0 rjmp .+4 ; 0x13e6 <GetKeyboard+0x42> |
13e2: c0 93 aa 00 sts 0x00AA, r28 |
if(_TASTE2) { if(taste2++ == 0 || taste2 == CNT_TASTE) ret |= KEY2; if(taste2 == CNT_TASTE) taste2 = CNT_TASTE-CNT_TASTE/3;} else taste2 = 0; |
13e6: ce 9b sbis 0x19, 6 ; 25 |
13e8: 12 c0 rjmp .+36 ; 0x140e <GetKeyboard+0x6a> |
13ea: 80 91 ab 00 lds r24, 0x00AB |
13ee: 8f 5f subi r24, 0xFF ; 255 |
13f0: 80 93 ab 00 sts 0x00AB, r24 |
13f4: 81 30 cpi r24, 0x01 ; 1 |
13f6: 11 f0 breq .+4 ; 0x13fc <GetKeyboard+0x58> |
13f8: 8a 30 cpi r24, 0x0A ; 10 |
13fa: 09 f4 brne .+2 ; 0x13fe <GetKeyboard+0x5a> |
13fc: c2 60 ori r28, 0x02 ; 2 |
13fe: 80 91 ab 00 lds r24, 0x00AB |
1402: 8a 30 cpi r24, 0x0A ; 10 |
1404: 31 f4 brne .+12 ; 0x1412 <GetKeyboard+0x6e> |
1406: 87 e0 ldi r24, 0x07 ; 7 |
1408: 80 93 ab 00 sts 0x00AB, r24 |
140c: 02 c0 rjmp .+4 ; 0x1412 <GetKeyboard+0x6e> |
140e: 10 92 ab 00 sts 0x00AB, r1 |
if(_TASTE3) { if(taste3++ == 0 || taste3 == CNT_TASTE) ret |= KEY3; if(taste3 == CNT_TASTE) taste3 = CNT_TASTE-CNT_TASTE/3;} else taste3 = 0; |
1412: cd 9b sbis 0x19, 5 ; 25 |
1414: 12 c0 rjmp .+36 ; 0x143a <GetKeyboard+0x96> |
1416: 80 91 ac 00 lds r24, 0x00AC |
141a: 8f 5f subi r24, 0xFF ; 255 |
141c: 80 93 ac 00 sts 0x00AC, r24 |
1420: 81 30 cpi r24, 0x01 ; 1 |
1422: 11 f0 breq .+4 ; 0x1428 <GetKeyboard+0x84> |
1424: 8a 30 cpi r24, 0x0A ; 10 |
1426: 09 f4 brne .+2 ; 0x142a <GetKeyboard+0x86> |
1428: c4 60 ori r28, 0x04 ; 4 |
142a: 80 91 ac 00 lds r24, 0x00AC |
142e: 8a 30 cpi r24, 0x0A ; 10 |
1430: 31 f4 brne .+12 ; 0x143e <GetKeyboard+0x9a> |
1432: 87 e0 ldi r24, 0x07 ; 7 |
1434: 80 93 ac 00 sts 0x00AC, r24 |
1438: 02 c0 rjmp .+4 ; 0x143e <GetKeyboard+0x9a> |
143a: 10 92 ac 00 sts 0x00AC, r1 |
if(_TASTE4) { if(taste4++ == 0 || taste4 == CNT_TASTE) ret |= KEY4; if(taste4 == CNT_TASTE) taste4 = CNT_TASTE-CNT_TASTE/3;} else taste4 = 0; |
143e: cc 9b sbis 0x19, 4 ; 25 |
1440: 12 c0 rjmp .+36 ; 0x1466 <GetKeyboard+0xc2> |
1442: 80 91 ad 00 lds r24, 0x00AD |
1446: 8f 5f subi r24, 0xFF ; 255 |
1448: 80 93 ad 00 sts 0x00AD, r24 |
144c: 81 30 cpi r24, 0x01 ; 1 |
144e: 11 f0 breq .+4 ; 0x1454 <GetKeyboard+0xb0> |
1450: 8a 30 cpi r24, 0x0A ; 10 |
1452: 09 f4 brne .+2 ; 0x1456 <GetKeyboard+0xb2> |
1454: c8 60 ori r28, 0x08 ; 8 |
1456: 80 91 ad 00 lds r24, 0x00AD |
145a: 8a 30 cpi r24, 0x0A ; 10 |
145c: 31 f4 brne .+12 ; 0x146a <GetKeyboard+0xc6> |
145e: 87 e0 ldi r24, 0x07 ; 7 |
1460: 80 93 ad 00 sts 0x00AD, r24 |
1464: 02 c0 rjmp .+4 ; 0x146a <GetKeyboard+0xc6> |
1466: 10 92 ad 00 sts 0x00AD, r1 |
if(_TASTE5) { if(taste5++ == 0 || taste5 == CNT_TASTE) ret |= KEY5; if(taste5 == CNT_TASTE) taste5 = CNT_TASTE-CNT_TASTE/3;} else taste5 = 0; |
146a: cb 9b sbis 0x19, 3 ; 25 |
146c: 12 c0 rjmp .+36 ; 0x1492 <GetKeyboard+0xee> |
146e: 80 91 ae 00 lds r24, 0x00AE |
1472: 8f 5f subi r24, 0xFF ; 255 |
1474: 80 93 ae 00 sts 0x00AE, r24 |
1478: 81 30 cpi r24, 0x01 ; 1 |
147a: 11 f0 breq .+4 ; 0x1480 <GetKeyboard+0xdc> |
147c: 8a 30 cpi r24, 0x0A ; 10 |
147e: 09 f4 brne .+2 ; 0x1482 <GetKeyboard+0xde> |
1480: c0 61 ori r28, 0x10 ; 16 |
1482: 80 91 ae 00 lds r24, 0x00AE |
1486: 8a 30 cpi r24, 0x0A ; 10 |
1488: 31 f4 brne .+12 ; 0x1496 <GetKeyboard+0xf2> |
148a: 87 e0 ldi r24, 0x07 ; 7 |
148c: 80 93 ae 00 sts 0x00AE, r24 |
1490: 02 c0 rjmp .+4 ; 0x1496 <GetKeyboard+0xf2> |
1492: 10 92 ae 00 sts 0x00AE, r1 |
KeyTimer = SetDelay(KEY_DELAY_MS); |
1496: 82 e3 ldi r24, 0x32 ; 50 |
1498: 90 e0 ldi r25, 0x00 ; 0 |
149a: 0e 94 a8 09 call 0x1350 <SetDelay> |
149e: 90 93 a9 00 sts 0x00A9, r25 |
14a2: 80 93 a8 00 sts 0x00A8, r24 |
} |
return(ret); |
} |
14a6: 8c 2f mov r24, r28 |
14a8: 99 27 eor r25, r25 |
14aa: cf 91 pop r28 |
14ac: 08 95 ret |
000014ae <GetKeyboard2>: |
unsigned char GetKeyboard2(void) |
{ |
unsigned char ret = 0; |
14ae: 80 e0 ldi r24, 0x00 ; 0 |
if(_TASTE1) ret |= KEY1; |
14b0: cf 99 sbic 0x19, 7 ; 25 |
14b2: 81 e0 ldi r24, 0x01 ; 1 |
if(_TASTE2) ret |= KEY2; |
14b4: ce 99 sbic 0x19, 6 ; 25 |
14b6: 82 60 ori r24, 0x02 ; 2 |
if(_TASTE3) ret |= KEY3; |
14b8: cd 99 sbic 0x19, 5 ; 25 |
14ba: 84 60 ori r24, 0x04 ; 4 |
if(_TASTE4) ret |= KEY4; |
14bc: cc 99 sbic 0x19, 4 ; 25 |
14be: 88 60 ori r24, 0x08 ; 8 |
if(_TASTE5) ret |= KEY5; |
14c0: cb 99 sbic 0x19, 3 ; 25 |
14c2: 80 61 ori r24, 0x10 ; 16 |
return(ret); |
} |
14c4: 99 27 eor r25, r25 |
14c6: 08 95 ret |
000014c8 <Menu>: |
unsigned char KanalVon[MAX_KANAL]; |
unsigned char KanalAn[MAX_KANAL]; |
void Menu(unsigned char key) |
{ |
14c8: 0f 93 push r16 |
14ca: 1f 93 push r17 |
14cc: cf 93 push r28 |
14ce: df 93 push r29 |
static unsigned int arr = 0; |
static unsigned char MaxMenue = 2,MenuePunkt=0; |
unsigned char kanal = 0; |
if(key & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LCD_Clear; } |
14d0: c8 2f mov r28, r24 |
14d2: dd 27 eor r29, r29 |
14d4: c0 ff sbrs r28, 0 |
14d6: 0f c0 rjmp .+30 ; 0x14f6 <Menu+0x2e> |
14d8: 80 91 b3 00 lds r24, 0x00B3 |
14dc: 88 23 and r24, r24 |
14de: 11 f0 breq .+4 ; 0x14e4 <Menu+0x1c> |
14e0: 81 50 subi r24, 0x01 ; 1 |
14e2: 02 c0 rjmp .+4 ; 0x14e8 <Menu+0x20> |
14e4: 80 91 7b 00 lds r24, 0x007B |
14e8: 80 93 b3 00 sts 0x00B3, r24 |
14ec: 81 e0 ldi r24, 0x01 ; 1 |
14ee: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
14f2: 0e 94 c9 05 call 0xb92 <_long_delay> |
if(key & KEY2) { MenuePunkt++; LCD_Clear; } |
14f6: 8e 01 movw r16, r28 |
14f8: 02 70 andi r16, 0x02 ; 2 |
14fa: 10 70 andi r17, 0x00 ; 0 |
14fc: c1 ff sbrs r28, 1 |
14fe: 0a c0 rjmp .+20 ; 0x1514 <Menu+0x4c> |
1500: 80 91 b3 00 lds r24, 0x00B3 |
1504: 8f 5f subi r24, 0xFF ; 255 |
1506: 80 93 b3 00 sts 0x00B3, r24 |
150a: 81 e0 ldi r24, 0x01 ; 1 |
150c: 0e 94 e1 05 call 0xbc2 <_lcd_write_command> |
1510: 0e 94 c9 05 call 0xb92 <_long_delay> |
if((key & KEY1) && (key & KEY2)) MenuePunkt = 0; |
1514: c0 ff sbrs r28, 0 |
1516: 04 c0 rjmp .+8 ; 0x1520 <Menu+0x58> |
1518: 01 2b or r16, r17 |
151a: 11 f0 breq .+4 ; 0x1520 <Menu+0x58> |
151c: 10 92 b3 00 sts 0x00B3, r1 |
// LCD_printfxy(13,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
1520: 20 91 b3 00 lds r18, 0x00B3 |
1524: 82 2f mov r24, r18 |
1526: 99 27 eor r25, r25 |
1528: 81 30 cpi r24, 0x01 ; 1 |
152a: 91 05 cpc r25, r1 |
152c: 09 f4 brne .+2 ; 0x1530 <Menu+0x68> |
152e: 41 c0 rjmp .+130 ; 0x15b2 <Menu+0xea> |
1530: 82 30 cpi r24, 0x02 ; 2 |
1532: 91 05 cpc r25, r1 |
1534: 1c f4 brge .+6 ; 0x153c <Menu+0x74> |
1536: 89 2b or r24, r25 |
1538: 49 f0 breq .+18 ; 0x154c <Menu+0x84> |
153a: bf c0 rjmp .+382 ; 0x16ba <Menu+0x1f2> |
153c: 82 30 cpi r24, 0x02 ; 2 |
153e: 91 05 cpc r25, r1 |
1540: 09 f4 brne .+2 ; 0x1544 <Menu+0x7c> |
1542: 6a c0 rjmp .+212 ; 0x1618 <Menu+0x150> |
1544: 03 97 sbiw r24, 0x03 ; 3 |
1546: 09 f4 brne .+2 ; 0x154a <Menu+0x82> |
1548: 8e c0 rjmp .+284 ; 0x1666 <Menu+0x19e> |
154a: b7 c0 rjmp .+366 ; 0x16ba <Menu+0x1f2> |
{ |
case 0: |
LCD_printfxy(0,0,"Verbinden mit"); |
154c: 60 e0 ldi r22, 0x00 ; 0 |
154e: 86 2f mov r24, r22 |
1550: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1554: 84 eb ldi r24, 0xB4 ; 180 |
1556: 90 e0 ldi r25, 0x00 ; 0 |
1558: 9f 93 push r25 |
155a: 8f 93 push r24 |
155c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"MicroSPS:%2i ",SlaveAdresse); |
1560: 61 e0 ldi r22, 0x01 ; 1 |
1562: 80 e0 ldi r24, 0x00 ; 0 |
1564: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1568: 0f 90 pop r0 |
156a: 0f 90 pop r0 |
156c: 80 91 64 00 lds r24, 0x0064 |
1570: 99 27 eor r25, r25 |
1572: 9f 93 push r25 |
1574: 8f 93 push r24 |
1576: 82 ec ldi r24, 0xC2 ; 194 |
1578: 90 e0 ldi r25, 0x00 ; 0 |
157a: 9f 93 push r25 |
157c: 8f 93 push r24 |
157e: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && SlaveAdresse > 1) SlaveAdresse--; |
1582: 0f 90 pop r0 |
1584: 0f 90 pop r0 |
1586: 0f 90 pop r0 |
1588: 0f 90 pop r0 |
158a: c2 ff sbrs r28, 2 |
158c: 07 c0 rjmp .+14 ; 0x159c <Menu+0xd4> |
158e: 80 91 64 00 lds r24, 0x0064 |
1592: 82 30 cpi r24, 0x02 ; 2 |
1594: 18 f0 brcs .+6 ; 0x159c <Menu+0xd4> |
1596: 81 50 subi r24, 0x01 ; 1 |
1598: 80 93 64 00 sts 0x0064, r24 |
if(key & KEY4 && SlaveAdresse < 26) SlaveAdresse++; |
159c: c3 ff sbrs r28, 3 |
159e: 92 c0 rjmp .+292 ; 0x16c4 <Menu+0x1fc> |
15a0: 80 91 64 00 lds r24, 0x0064 |
15a4: 8a 31 cpi r24, 0x1A ; 26 |
15a6: 08 f0 brcs .+2 ; 0x15aa <Menu+0xe2> |
15a8: 8d c0 rjmp .+282 ; 0x16c4 <Menu+0x1fc> |
15aa: 8f 5f subi r24, 0xFF ; 255 |
15ac: 80 93 64 00 sts 0x0064, r24 |
break; |
15b0: 89 c0 rjmp .+274 ; 0x16c4 <Menu+0x1fc> |
case 1: |
LCD_printfxy(0,0,"Max Adresse"); |
15b2: 60 e0 ldi r22, 0x00 ; 0 |
15b4: 86 2f mov r24, r22 |
15b6: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ba: 80 ed ldi r24, 0xD0 ; 208 |
15bc: 90 e0 ldi r25, 0x00 ; 0 |
15be: 9f 93 push r25 |
15c0: 8f 93 push r24 |
15c2: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"%2i ",AnzahlTeilnehmer); |
15c6: 61 e0 ldi r22, 0x01 ; 1 |
15c8: 80 e0 ldi r24, 0x00 ; 0 |
15ca: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
15ce: 0f 90 pop r0 |
15d0: 0f 90 pop r0 |
15d2: 80 91 6c 00 lds r24, 0x006C |
15d6: 99 27 eor r25, r25 |
15d8: 9f 93 push r25 |
15da: 8f 93 push r24 |
15dc: 8c ed ldi r24, 0xDC ; 220 |
15de: 90 e0 ldi r25, 0x00 ; 0 |
15e0: 9f 93 push r25 |
15e2: 8f 93 push r24 |
15e4: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3 && AnzahlTeilnehmer > 1) AnzahlTeilnehmer--; |
15e8: 0f 90 pop r0 |
15ea: 0f 90 pop r0 |
15ec: 0f 90 pop r0 |
15ee: 0f 90 pop r0 |
15f0: c2 ff sbrs r28, 2 |
15f2: 07 c0 rjmp .+14 ; 0x1602 <Menu+0x13a> |
15f4: 80 91 6c 00 lds r24, 0x006C |
15f8: 82 30 cpi r24, 0x02 ; 2 |
15fa: 18 f0 brcs .+6 ; 0x1602 <Menu+0x13a> |
15fc: 81 50 subi r24, 0x01 ; 1 |
15fe: 80 93 6c 00 sts 0x006C, r24 |
if(key & KEY4 && AnzahlTeilnehmer < 26) AnzahlTeilnehmer++; |
1602: c3 ff sbrs r28, 3 |
1604: 5f c0 rjmp .+190 ; 0x16c4 <Menu+0x1fc> |
1606: 80 91 6c 00 lds r24, 0x006C |
160a: 8a 31 cpi r24, 0x1A ; 26 |
160c: 08 f0 brcs .+2 ; 0x1610 <Menu+0x148> |
160e: 5a c0 rjmp .+180 ; 0x16c4 <Menu+0x1fc> |
1610: 8f 5f subi r24, 0xFF ; 255 |
1612: 80 93 6c 00 sts 0x006C, r24 |
break; |
1616: 56 c0 rjmp .+172 ; 0x16c4 <Menu+0x1fc> |
case 2: |
LCD_printfxy(0,0,"Checksum"); |
1618: 60 e0 ldi r22, 0x00 ; 0 |
161a: 86 2f mov r24, r22 |
161c: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1620: 81 ee ldi r24, 0xE1 ; 225 |
1622: 90 e0 ldi r25, 0x00 ; 0 |
1624: 9f 93 push r25 |
1626: 8f 93 push r24 |
1628: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Errors:%5i ",CntCrcError); |
162c: 61 e0 ldi r22, 0x01 ; 1 |
162e: 80 e0 ldi r24, 0x00 ; 0 |
1630: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1634: 0f 90 pop r0 |
1636: 0f 90 pop r0 |
1638: 80 91 99 00 lds r24, 0x0099 |
163c: 90 91 9a 00 lds r25, 0x009A |
1640: 9f 93 push r25 |
1642: 8f 93 push r24 |
1644: 8a ee ldi r24, 0xEA ; 234 |
1646: 90 e0 ldi r25, 0x00 ; 0 |
1648: 9f 93 push r25 |
164a: 8f 93 push r24 |
164c: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) CntCrcError = 0; |
1650: 0f 90 pop r0 |
1652: 0f 90 pop r0 |
1654: 0f 90 pop r0 |
1656: 0f 90 pop r0 |
1658: c2 ff sbrs r28, 2 |
165a: 34 c0 rjmp .+104 ; 0x16c4 <Menu+0x1fc> |
165c: 10 92 9a 00 sts 0x009A, r1 |
1660: 10 92 99 00 sts 0x0099, r1 |
break; |
1664: 2f c0 rjmp .+94 ; 0x16c4 <Menu+0x1fc> |
case 3: |
LCD_printfxy(0,0,"Display"); |
1666: 60 e0 ldi r22, 0x00 ; 0 |
1668: 86 2f mov r24, r22 |
166a: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
166e: 86 ef ldi r24, 0xF6 ; 246 |
1670: 90 e0 ldi r25, 0x00 ; 0 |
1672: 9f 93 push r25 |
1674: 8f 93 push r24 |
1676: 0e 94 e3 06 call 0xdc6 <_printf_P> |
LCD_printfxy(0,1,"Zeilen:%1i ",DisplayZeilen); |
167a: 61 e0 ldi r22, 0x01 ; 1 |
167c: 80 e0 ldi r24, 0x00 ; 0 |
167e: 0e 94 55 06 call 0xcaa <LCD_Gotoxy> |
1682: 0f 90 pop r0 |
1684: 0f 90 pop r0 |
1686: 80 91 65 00 lds r24, 0x0065 |
168a: 99 27 eor r25, r25 |
168c: 9f 93 push r25 |
168e: 8f 93 push r24 |
1690: 8e ef ldi r24, 0xFE ; 254 |
1692: 90 e0 ldi r25, 0x00 ; 0 |
1694: 9f 93 push r25 |
1696: 8f 93 push r24 |
1698: 0e 94 e3 06 call 0xdc6 <_printf_P> |
if(key & KEY3) DisplayZeilen = 4; |
169c: 0f 90 pop r0 |
169e: 0f 90 pop r0 |
16a0: 0f 90 pop r0 |
16a2: 0f 90 pop r0 |
16a4: c2 ff sbrs r28, 2 |
16a6: 03 c0 rjmp .+6 ; 0x16ae <Menu+0x1e6> |
16a8: 84 e0 ldi r24, 0x04 ; 4 |
16aa: 80 93 65 00 sts 0x0065, r24 |
if(key & KEY4) DisplayZeilen = 2; |
16ae: c3 ff sbrs r28, 3 |
16b0: 09 c0 rjmp .+18 ; 0x16c4 <Menu+0x1fc> |
16b2: 82 e0 ldi r24, 0x02 ; 2 |
16b4: 80 93 65 00 sts 0x0065, r24 |
break; |
16b8: 05 c0 rjmp .+10 ; 0x16c4 <Menu+0x1fc> |
/* case 1: |
case 2: |
case 3: |
case 4: |
kanal = MenuePunkt - 1; |
LCD_printfxy(0,0,"Datenkanal:%2i",kanal); |
LCD_printfxy(0,1,"Von:%2i an %2i ",KanalVon[kanal],KanalAn[kanal]); |
if(key & KEY3) KanalVon[kanal]++; |
if(key & KEY4) KanalAn[kanal]++; |
KanalVon[kanal] % MAX_KANAL; |
KanalAn[kanal] % MAX_KANAL; |
break; |
*/ |
/* |
case 1: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Display:%3ims ",IntervallDisplay); |
if(key & KEY3 && IntervallDisplay > 25) IntervallDisplay -= 5; |
if(key & KEY4 && IntervallDisplay < 990) IntervallDisplay += 5; |
break; |
case 2: |
LCD_printfxy(0,0,"Intervall"); |
LCD_printfxy(0,1,"Debug:%3ims ",IntervallDebug); |
if(key & KEY3 && IntervallDebug > 25) IntervallDebug -= 5; |
if(key & KEY4 && IntervallDebug < 990) IntervallDebug += 5; |
break; |
case 1: |
LCD_printfxy(0,0,"Time"); |
LCD_printfxy(0,1,"%3i:%02i",Minute,Sekunde); |
if(key & KEY3) if(Minute) Minute--; |
if(key & KEY4) Minute++; |
if(key & KEY5) Sekunde = 0; |
break; |
case 2: |
LCD_printfxy(0,0,"Testvariable"); |
LCD_printfxy(0,1,"TestInt:%5i",TestInt); |
if(key & KEY3) TestInt--; |
if(key & KEY4) TestInt++; |
break; |
case 3: |
LCD_printfxy(0,0,"Testarray"); |
LCD_printfxy(0,1,"Array[%i]=%3i",arr,Array[arr]); |
if(key & KEY5) if(++arr == ARRAYGROESSE) arr = 0; |
if(key & KEY3) Array[arr]--; |
if(key & KEY4) Array[arr]++; |
break; |
case 4: |
LCD_printfxy(0,0,"Infrarot RC5:"); |
LCD_printfxy(0,1,"Adr:%2i Cmd:%3i",(IR_Code >> 8), IR_Code & 0xff); |
break; |
*/ |
default: MaxMenue = MenuePunkt - 1; |
16ba: 21 50 subi r18, 0x01 ; 1 |
16bc: 20 93 7b 00 sts 0x007B, r18 |
MenuePunkt = 0; |
16c0: 10 92 b3 00 sts 0x00B3, r1 |
16c4: df 91 pop r29 |
16c6: cf 91 pop r28 |
16c8: 1f 91 pop r17 |
16ca: 0f 91 pop r16 |
16cc: 08 95 ret |
000016ce <InitIR>: |
// Init IR |
// ************************************************************************ |
void InitIR(void) |
{ |
INT0_ENABLE; // ext. Int0 enable |
16ce: 8b b7 in r24, 0x3b ; 59 |
16d0: 80 64 ori r24, 0x40 ; 64 |
16d2: 8b bf out 0x3b, r24 ; 59 |
CLR_INT0_FLAG; // war |= 0x40 |
16d4: 8a b7 in r24, 0x3a ; 58 |
16d6: 8f 7b andi r24, 0xBF ; 191 |
16d8: 8a bf out 0x3a, r24 ; 58 |
INIT_INT0_FLANKE; |
16da: 85 b7 in r24, 0x35 ; 53 |
16dc: 8c 7f andi r24, 0xFC ; 252 |
16de: 85 bf out 0x35, r24 ; 53 |
16e0: 85 b7 in r24, 0x35 ; 53 |
16e2: 82 60 ori r24, 0x02 ; 2 |
16e4: 85 bf out 0x35, r24 ; 53 |
TIMER0_PRESCALER = 0x04; // Timer0: Clk div 256 |
16e6: 84 e0 ldi r24, 0x04 ; 4 |
16e8: 83 bf out 0x33, r24 ; 51 |
Decodierung_Lauft = 0; |
16ea: 10 92 c9 01 sts 0x01C9, r1 |
New_IR_Code = 0; |
16ee: 10 92 c6 01 sts 0x01C6, r1 |
IR_Code = 0; |
16f2: 10 92 c8 01 sts 0x01C8, r1 |
16f6: 10 92 c7 01 sts 0x01C7, r1 |
16fa: 08 95 ret |
000016fc <__vector_1>: |
} |
// ************************************************************************** |
// * aufgerufen durch: externer Interrupt |
// ************************************************************************** |
// * Die Funktion wird durch einen externen Interrupt aufgerufen. |
// * Sie dient nur zum Starten der Abtastsequenz und zum Triggern auf die |
// * Signalflanken in der Mitte der Daten. |
// ************************************************************************** |
SIGNAL (SIG_INTERRUPT0) |
{ |
16fc: 1f 92 push r1 |
16fe: 0f 92 push r0 |
1700: 0f b6 in r0, 0x3f ; 63 |
1702: 0f 92 push r0 |
1704: 11 24 eor r1, r1 |
1706: 8f 93 push r24 |
// Zeitbasis fuer Timer einstellen |
// Entspricht 1,5 mal einer Bitlaenge |
// PORTB++; |
TCNT0 = -41; |
1708: 87 ed ldi r24, 0xD7 ; 215 |
170a: 82 bf out 0x32, r24 ; 50 |
TIM0_START; // Timer 0 starten, |
170c: 89 b7 in r24, 0x39 ; 57 |
170e: 81 60 ori r24, 0x01 ; 1 |
1710: 89 bf out 0x39, r24 ; 57 |
if(Decodierung_Lauft) INT0_DISABLE; // die erneute Int.-Auslsung soll |
1712: 80 91 c9 01 lds r24, 0x01C9 |
1716: 88 23 and r24, r24 |
1718: 19 f0 breq .+6 ; 0x1720 <__vector_1+0x24> |
171a: 8b b7 in r24, 0x3b ; 59 |
171c: 8f 7b andi r24, 0xBF ; 191 |
171e: 8b bf out 0x3b, r24 ; 59 |
1720: 8f 91 pop r24 |
1722: 0f 90 pop r0 |
1724: 0f be out 0x3f, r0 ; 63 |
1726: 0f 90 pop r0 |
1728: 1f 90 pop r1 |
172a: 18 95 reti |
0000172c <__vector_11>: |
// nur die Timer-Routine erlauben |
} |
// ************************************************************************** |
// * aufgerufen durch: Timerueberlauf Timer 0 |
// ************************************************************************** |
// * Die Funktion wird durch einen Timer0-Interrupt aufgerufen. |
// * Der Timer wird vom ext. Int0 gestartet. |
// * Das Infrarotsignal wird hier abgetastet und die Wertigkeiten der |
// * Bits entsprechend aufaddiert. Das empfangende Zeichen wird in der |
// * globalen Variablen IR_Code gespeichert. Nach Empfang wird das Bit |
// * Neues_Zeichen gesetzt. |
// ************************************************************************** |
SIGNAL (SIG_OVERFLOW0) |
{ |
172c: 1f 92 push r1 |
172e: 0f 92 push r0 |
1730: 0f b6 in r0, 0x3f ; 63 |
1732: 0f 92 push r0 |
1734: 11 24 eor r1, r1 |
1736: 2f 93 push r18 |
1738: 3f 93 push r19 |
173a: 4f 93 push r20 |
173c: 8f 93 push r24 |
173e: 9f 93 push r25 |
static unsigned int Shift,IR_Code_tmp; |
static unsigned char IR_Zaehler=0,IRSperrCounter=0; |
// Reinitialize Timer's 0 value |
TCNT1 = -41; |
1740: 87 ed ldi r24, 0xD7 ; 215 |
1742: 9f ef ldi r25, 0xFF ; 255 |
1744: 9d bd out 0x2d, r25 ; 45 |
1746: 8c bd out 0x2c, r24 ; 44 |
if (IRSperrCounter) |
1748: 80 91 b9 00 lds r24, 0x00B9 |
174c: 88 23 and r24, r24 |
174e: 69 f0 breq .+26 ; 0x176a <__vector_11+0x3e> |
{ IRSperrCounter--; |
1750: 81 50 subi r24, 0x01 ; 1 |
1752: 80 93 b9 00 sts 0x00B9, r24 |
if (!IRSperrCounter) |
1756: 88 23 and r24, r24 |
1758: 09 f0 breq .+2 ; 0x175c <__vector_11+0x30> |
175a: 8a c0 rjmp .+276 ; 0x1870 <__vector_11+0x144> |
{ |
TIM0_STOPP; // Timer0 sperre wird durch ExtInt0 gestartet |
175c: 89 b7 in r24, 0x39 ; 57 |
175e: 8e 7f andi r24, 0xFE ; 254 |
1760: 89 bf out 0x39, r24 ; 57 |
CLR_INT0_FLAG; // IntFlag Loeschen |
1762: 8a b7 in r24, 0x3a ; 58 |
1764: 8f 7b andi r24, 0xBF ; 191 |
1766: 8a bf out 0x3a, r24 ; 58 |
1768: 80 c0 rjmp .+256 ; 0x186a <__vector_11+0x13e> |
INT0_ENABLE; // externen Interrupt wieder freigenben |
} |
} |
else |
{ |
if(IR_Zaehler > 1) |
176a: 40 91 b8 00 lds r20, 0x00B8 |
176e: 42 30 cpi r20, 0x02 ; 2 |
1770: 88 f0 brcs .+34 ; 0x1794 <__vector_11+0x68> |
{ |
Decodierung_Lauft = 1; |
1772: 81 e0 ldi r24, 0x01 ; 1 |
1774: 80 93 c9 01 sts 0x01C9, r24 |
{ |
CLR_INT0_FLAG; // Interrupt Flag loeschen |
1778: 8a b7 in r24, 0x3a ; 58 |
177a: 8f 7b andi r24, 0xBF ; 191 |
177c: 8a bf out 0x3a, r24 ; 58 |
if(IR_PP) INT0_NEG_FLANKE; // naechste fallende Flanke soll Int0 ausloesen |
177e: 82 9b sbis 0x10, 2 ; 16 |
1780: 03 c0 rjmp .+6 ; 0x1788 <__vector_11+0x5c> |
1782: 85 b7 in r24, 0x35 ; 53 |
1784: 8e 7f andi r24, 0xFE ; 254 |
1786: 02 c0 rjmp .+4 ; 0x178c <__vector_11+0x60> |
else INT0_POS_FLANKE; // naechste steigende Flanke soll Int0 ausloesen |
1788: 85 b7 in r24, 0x35 ; 53 |
178a: 81 60 ori r24, 0x01 ; 1 |
178c: 85 bf out 0x35, r24 ; 53 |
INT0_ENABLE; // externen Int frei |
178e: 8b b7 in r24, 0x3b ; 59 |
1790: 80 64 ori r24, 0x40 ; 64 |
1792: 8b bf out 0x3b, r24 ; 59 |
} |
} |
if(!IR_Zaehler) // es beginnt eine neue Abtastung |
1794: 44 23 and r20, r20 |
1796: 59 f4 brne .+22 ; 0x17ae <__vector_11+0x82> |
{ // es handelt sich um das 1. Sync-Bit |
IR_Code_tmp=0; // Merker löschen |
1798: 10 92 b7 00 sts 0x00B7, r1 |
179c: 10 92 b6 00 sts 0x00B6, r1 |
Shift=0x8000; //;8192; // Maske auf MSB |
17a0: 80 e0 ldi r24, 0x00 ; 0 |
17a2: 90 e8 ldi r25, 0x80 ; 128 |
17a4: 90 93 b5 00 sts 0x00B5, r25 |
17a8: 80 93 b4 00 sts 0x00B4, r24 |
17ac: 14 c0 rjmp .+40 ; 0x17d6 <__vector_11+0xaa> |
} |
else |
if(IR_PP==1) // das empfangende Bit ist logisch High |
17ae: 82 9b sbis 0x10, 2 ; 16 |
17b0: 10 c0 rjmp .+32 ; 0x17d2 <__vector_11+0xa6> |
{ if(IR_Zaehler>2) // (IR_Zaehler ist gleich 1 beim 2. Sync-Bit) |
17b2: 43 30 cpi r20, 0x03 ; 3 |
17b4: 70 f0 brcs .+28 ; 0x17d2 <__vector_11+0xa6> |
{ // 2 --> Toggle-Bit (wird übersprungen) |
IR_Code_tmp |= Shift; // entsprechendse Bit setzen |
17b6: 80 91 b6 00 lds r24, 0x00B6 |
17ba: 90 91 b7 00 lds r25, 0x00B7 |
17be: 20 91 b4 00 lds r18, 0x00B4 |
17c2: 30 91 b5 00 lds r19, 0x00B5 |
17c6: 82 2b or r24, r18 |
17c8: 93 2b or r25, r19 |
17ca: 90 93 b7 00 sts 0x00B7, r25 |
17ce: 80 93 b6 00 sts 0x00B6, r24 |
} |
} |
if ((IR_Zaehler < 2) && !(IR_PP==1)) // startbits überprüfen |
17d2: 42 30 cpi r20, 0x02 ; 2 |
17d4: 20 f4 brcc .+8 ; 0x17de <__vector_11+0xb2> |
17d6: 82 99 sbic 0x10, 2 ; 16 |
17d8: 02 c0 rjmp .+4 ; 0x17de <__vector_11+0xb2> |
{ |
IR_Zaehler = 0; |
17da: 10 92 b8 00 sts 0x00B8, r1 |
} |
Shift >>=1; // Shiftregister um 1 nach rechts schieben |
17de: 80 91 b4 00 lds r24, 0x00B4 |
17e2: 90 91 b5 00 lds r25, 0x00B5 |
17e6: 96 95 lsr r25 |
17e8: 87 95 ror r24 |
17ea: 90 93 b5 00 sts 0x00B5, r25 |
17ee: 80 93 b4 00 sts 0x00B4, r24 |
// (für das nächste empf. Bit |
if (Shift == 128) Shift = 32; // Adresse ins HighByte, Kommando ins LowByte |
17f2: 80 38 cpi r24, 0x80 ; 128 |
17f4: 91 05 cpc r25, r1 |
17f6: 31 f4 brne .+12 ; 0x1804 <__vector_11+0xd8> |
17f8: 80 e2 ldi r24, 0x20 ; 32 |
17fa: 90 e0 ldi r25, 0x00 ; 0 |
17fc: 90 93 b5 00 sts 0x00B5, r25 |
1800: 80 93 b4 00 sts 0x00B4, r24 |
if(IR_Zaehler++==15) // Das IR-Wort wurde vollstaendig abgetastet |
1804: 80 91 b8 00 lds r24, 0x00B8 |
1808: 8f 5f subi r24, 0xFF ; 255 |
180a: 80 93 b8 00 sts 0x00B8, r24 |
180e: 80 31 cpi r24, 0x10 ; 16 |
1810: 79 f5 brne .+94 ; 0x1870 <__vector_11+0x144> |
{ |
CLR_INT0_FLAG; // IntFlag Loeschen |
1812: 8a b7 in r24, 0x3a ; 58 |
1814: 8f 7b andi r24, 0xBF ; 191 |
1816: 8a bf out 0x3a, r24 ; 58 |
INT0_NEG_FLANKE; // fallende Flanke |
1818: 85 b7 in r24, 0x35 ; 53 |
181a: 8e 7f andi r24, 0xFE ; 254 |
181c: 85 bf out 0x35, r24 ; 53 |
IR_Zaehler = 0; |
181e: 10 92 b8 00 sts 0x00B8, r1 |
Decodierung_Lauft=0; |
1822: 10 92 c9 01 sts 0x01C9, r1 |
/* if ((HIGH(IR_Code_tmp)==ALLOWED1)|| (HIGH(IR_Code_tmp)==ALLOWED2)|| |
(HIGH(IR_Code_tmp)==ALLOWED3)||(HIGH(IR_Code_tmp)==ALLOWED4)|| |
(HIGH(IR_Code_tmp)==ALLOWED5) ) |
if ((HIGH(IR_Code_tmp)< 10))*/ |
if ((HIGH(IR_Code_tmp)< 10 ) && (LOW(IR_Code_tmp)!=0x3F) ) |
1826: 80 91 b7 00 lds r24, 0x00B7 |
182a: 8a 30 cpi r24, 0x0A ; 10 |
182c: d8 f4 brcc .+54 ; 0x1864 <__vector_11+0x138> |
182e: 80 91 b6 00 lds r24, 0x00B6 |
1832: 8f 33 cpi r24, 0x3F ; 63 |
1834: b9 f0 breq .+46 ; 0x1864 <__vector_11+0x138> |
{ // nur erlaubt Adressen werden akzepetiert |
IR_Code=IR_Code_tmp; // IR-Wort in die globale Variable schreiben |
1836: 80 91 b6 00 lds r24, 0x00B6 |
183a: 90 91 b7 00 lds r25, 0x00B7 |
183e: 90 93 c8 01 sts 0x01C8, r25 |
1842: 80 93 c7 01 sts 0x01C7, r24 |
New_IR_Code = 1; // Es ist ein neues Zeichen eingetragen worden |
1846: 81 e0 ldi r24, 0x01 ; 1 |
1848: 80 93 c6 01 sts 0x01C6, r24 |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
184c: 84 e0 ldi r24, 0x04 ; 4 |
184e: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
1852: 8b b7 in r24, 0x3b ; 59 |
1854: 80 64 ori r24, 0x40 ; 64 |
1856: 8b bf out 0x3b, r24 ; 59 |
LoescheIrCodeTimer = 250; |
1858: 8a ef ldi r24, 0xFA ; 250 |
185a: 90 e0 ldi r25, 0x00 ; 0 |
185c: 90 93 7d 00 sts 0x007D, r25 |
1860: 80 93 7c 00 sts 0x007C, r24 |
} |
IRSperrCounter = 4; // weitere Kommandos für 200 * 1,3ms unterdrücken |
1864: 84 e0 ldi r24, 0x04 ; 4 |
1866: 80 93 b9 00 sts 0x00B9, r24 |
INT0_ENABLE; // externen Interrupt wieder freigenben |
186a: 8b b7 in r24, 0x3b ; 59 |
186c: 80 64 ori r24, 0x40 ; 64 |
186e: 8b bf out 0x3b, r24 ; 59 |
1870: 9f 91 pop r25 |
1872: 8f 91 pop r24 |
1874: 4f 91 pop r20 |
1876: 3f 91 pop r19 |
1878: 2f 91 pop r18 |
187a: 0f 90 pop r0 |
187c: 0f be out 0x3f, r0 ; 63 |
187e: 0f 90 pop r0 |
1880: 1f 90 pop r1 |
1882: 18 95 reti |
00001884 <ADC_Init>: |
// --------------------------------------------------------------------------------------- |
void ADC_Init(void) |
{ |
ADMUX = 0; |
1884: 17 b8 out 0x07, r1 ; 7 |
ADCSRA = 0x86; |
1886: 86 e8 ldi r24, 0x86 ; 134 |
1888: 86 b9 out 0x06, r24 ; 6 |
188a: 08 95 ret |
0000188c <ReadADC>: |
} |
// --------------------------------------------------------------------------------------- |
unsigned int ReadADC(unsigned char adc_input) |
{ |
ADMUX = adc_input; |
188c: 87 b9 out 0x07, r24 ; 7 |
ADCSRA |= 0x40; |
188e: 36 9a sbi 0x06, 6 ; 6 |
//Delay_ms(10); |
while ((ADCSRA & 0x10) == 0); |
1890: 34 9b sbis 0x06, 4 ; 6 |
1892: fe cf rjmp .-4 ; 0x1890 <ReadADC+0x4> |
ADCSRA |= 0x10; |
1894: 34 9a sbi 0x06, 4 ; 6 |
return ADCW; // read ad and calc. temp. |
1896: 84 b1 in r24, 0x04 ; 4 |
1898: 95 b1 in r25, 0x05 ; 5 |
189a: 08 95 ret |
0000189c <GetAnalogWerte>: |
} |
void GetAnalogWerte(void) |
{ |
AnalogWerte[0] = ReadADC(0); |
189c: 80 e0 ldi r24, 0x00 ; 0 |
189e: 0e 94 46 0c call 0x188c <ReadADC> |
18a2: 90 93 cb 01 sts 0x01CB, r25 |
18a6: 80 93 ca 01 sts 0x01CA, r24 |
AnalogWerte[1] = ReadADC(1); |
18aa: 81 e0 ldi r24, 0x01 ; 1 |
18ac: 0e 94 46 0c call 0x188c <ReadADC> |
18b0: 90 93 cd 01 sts 0x01CD, r25 |
18b4: 80 93 cc 01 sts 0x01CC, r24 |
AnalogWerte[2] = ReadADC(2); |
18b8: 82 e0 ldi r24, 0x02 ; 2 |
18ba: 0e 94 46 0c call 0x188c <ReadADC> |
18be: 90 93 cf 01 sts 0x01CF, r25 |
18c2: 80 93 ce 01 sts 0x01CE, r24 |
18c6: 08 95 ret |
000018c8 <memchr>: |
18c8: fc 01 movw r30, r24 |
18ca: 41 50 subi r20, 0x01 ; 1 |
18cc: 50 40 sbci r21, 0x00 ; 0 |
18ce: 30 f0 brcs .+12 ; 0x18dc <memchr+0x14> |
18d0: 01 90 ld r0, Z+ |
18d2: 06 16 cp r0, r22 |
18d4: d1 f7 brne .-12 ; 0x18ca <memchr+0x2> |
18d6: 31 97 sbiw r30, 0x01 ; 1 |
18d8: cf 01 movw r24, r30 |
18da: 08 95 ret |
18dc: 88 27 eor r24, r24 |
18de: 99 27 eor r25, r25 |
18e0: 08 95 ret |
000018e2 <fdevopen>: |
18e2: 0f 93 push r16 |
18e4: 1f 93 push r17 |
18e6: cf 93 push r28 |
18e8: df 93 push r29 |
18ea: 8c 01 movw r16, r24 |
18ec: eb 01 movw r28, r22 |
18ee: 00 97 sbiw r24, 0x00 ; 0 |
18f0: 11 f4 brne .+4 ; 0x18f6 <fdevopen+0x14> |
18f2: 67 2b or r22, r23 |
18f4: c1 f1 breq .+112 ; 0x1966 <fdevopen+0x84> |
18f6: 6e e0 ldi r22, 0x0E ; 14 |
18f8: 70 e0 ldi r23, 0x00 ; 0 |
18fa: 81 e0 ldi r24, 0x01 ; 1 |
18fc: 90 e0 ldi r25, 0x00 ; 0 |
18fe: 0e 94 b8 0c call 0x1970 <calloc> |
1902: fc 01 movw r30, r24 |
1904: 89 2b or r24, r25 |
1906: 71 f1 breq .+92 ; 0x1964 <fdevopen+0x82> |
1908: 80 e8 ldi r24, 0x80 ; 128 |
190a: 83 83 std Z+3, r24 ; 0x03 |
190c: 20 97 sbiw r28, 0x00 ; 0 |
190e: 71 f0 breq .+28 ; 0x192c <fdevopen+0x4a> |
1910: d3 87 std Z+11, r29 ; 0x0b |
1912: c2 87 std Z+10, r28 ; 0x0a |
1914: 81 e8 ldi r24, 0x81 ; 129 |
1916: 83 83 std Z+3, r24 ; 0x03 |
1918: 80 91 d0 01 lds r24, 0x01D0 |
191c: 90 91 d1 01 lds r25, 0x01D1 |
1920: 89 2b or r24, r25 |
1922: 21 f4 brne .+8 ; 0x192c <fdevopen+0x4a> |
1924: f0 93 d1 01 sts 0x01D1, r31 |
1928: e0 93 d0 01 sts 0x01D0, r30 |
192c: 01 15 cp r16, r1 |
192e: 11 05 cpc r17, r1 |
1930: c9 f0 breq .+50 ; 0x1964 <fdevopen+0x82> |
1932: 11 87 std Z+9, r17 ; 0x09 |
1934: 00 87 std Z+8, r16 ; 0x08 |
1936: 83 81 ldd r24, Z+3 ; 0x03 |
1938: 82 60 ori r24, 0x02 ; 2 |
193a: 83 83 std Z+3, r24 ; 0x03 |
193c: 80 91 d2 01 lds r24, 0x01D2 |
1940: 90 91 d3 01 lds r25, 0x01D3 |
1944: 89 2b or r24, r25 |
1946: 71 f4 brne .+28 ; 0x1964 <fdevopen+0x82> |
1948: f0 93 d3 01 sts 0x01D3, r31 |
194c: e0 93 d2 01 sts 0x01D2, r30 |
1950: 80 91 d4 01 lds r24, 0x01D4 |
1954: 90 91 d5 01 lds r25, 0x01D5 |
1958: 89 2b or r24, r25 |
195a: 21 f4 brne .+8 ; 0x1964 <fdevopen+0x82> |
195c: f0 93 d5 01 sts 0x01D5, r31 |
1960: e0 93 d4 01 sts 0x01D4, r30 |
1964: cf 01 movw r24, r30 |
1966: df 91 pop r29 |
1968: cf 91 pop r28 |
196a: 1f 91 pop r17 |
196c: 0f 91 pop r16 |
196e: 08 95 ret |
00001970 <calloc>: |
1970: 0f 93 push r16 |
1972: 1f 93 push r17 |
1974: cf 93 push r28 |
1976: df 93 push r29 |
1978: 86 9f mul r24, r22 |
197a: 80 01 movw r16, r0 |
197c: 87 9f mul r24, r23 |
197e: 10 0d add r17, r0 |
1980: 96 9f mul r25, r22 |
1982: 10 0d add r17, r0 |
1984: 11 24 eor r1, r1 |
1986: c8 01 movw r24, r16 |
1988: 0e 94 d4 0c call 0x19a8 <malloc> |
198c: ec 01 movw r28, r24 |
198e: 00 97 sbiw r24, 0x00 ; 0 |
1990: 29 f0 breq .+10 ; 0x199c <calloc+0x2c> |
1992: a8 01 movw r20, r16 |
1994: 60 e0 ldi r22, 0x00 ; 0 |
1996: 70 e0 ldi r23, 0x00 ; 0 |
1998: 0e 94 ca 0d call 0x1b94 <memset> |
199c: ce 01 movw r24, r28 |
199e: df 91 pop r29 |
19a0: cf 91 pop r28 |
19a2: 1f 91 pop r17 |
19a4: 0f 91 pop r16 |
19a6: 08 95 ret |
000019a8 <malloc>: |
19a8: cf 93 push r28 |
19aa: df 93 push r29 |
19ac: ac 01 movw r20, r24 |
19ae: 02 97 sbiw r24, 0x02 ; 2 |
19b0: 10 f4 brcc .+4 ; 0x19b6 <malloc+0xe> |
19b2: 42 e0 ldi r20, 0x02 ; 2 |
19b4: 50 e0 ldi r21, 0x00 ; 0 |
19b6: 20 e0 ldi r18, 0x00 ; 0 |
19b8: 30 e0 ldi r19, 0x00 ; 0 |
19ba: a0 91 d8 01 lds r26, 0x01D8 |
19be: b0 91 d9 01 lds r27, 0x01D9 |
19c2: bd 01 movw r22, r26 |
19c4: f9 01 movw r30, r18 |
19c6: 10 97 sbiw r26, 0x00 ; 0 |
19c8: 09 f4 brne .+2 ; 0x19cc <malloc+0x24> |
19ca: 4c c0 rjmp .+152 ; 0x1a64 <malloc+0xbc> |
19cc: 8d 91 ld r24, X+ |
19ce: 9c 91 ld r25, X |
19d0: 11 97 sbiw r26, 0x01 ; 1 |
19d2: 84 17 cp r24, r20 |
19d4: 95 07 cpc r25, r21 |
19d6: 31 f1 breq .+76 ; 0x1a24 <malloc+0x7c> |
19d8: 48 17 cp r20, r24 |
19da: 59 07 cpc r21, r25 |
19dc: 38 f4 brcc .+14 ; 0x19ec <malloc+0x44> |
19de: 21 15 cp r18, r1 |
19e0: 31 05 cpc r19, r1 |
19e2: 19 f0 breq .+6 ; 0x19ea <malloc+0x42> |
19e4: 82 17 cp r24, r18 |
19e6: 93 07 cpc r25, r19 |
19e8: 08 f4 brcc .+2 ; 0x19ec <malloc+0x44> |
19ea: 9c 01 movw r18, r24 |
19ec: fd 01 movw r30, r26 |
19ee: a2 81 ldd r26, Z+2 ; 0x02 |
19f0: b3 81 ldd r27, Z+3 ; 0x03 |
19f2: 10 97 sbiw r26, 0x00 ; 0 |
19f4: 59 f7 brne .-42 ; 0x19cc <malloc+0x24> |
19f6: 21 15 cp r18, r1 |
19f8: 31 05 cpc r19, r1 |
19fa: a1 f1 breq .+104 ; 0x1a64 <malloc+0xbc> |
19fc: c9 01 movw r24, r18 |
19fe: 84 1b sub r24, r20 |
1a00: 95 0b sbc r25, r21 |
1a02: 04 97 sbiw r24, 0x04 ; 4 |
1a04: 08 f4 brcc .+2 ; 0x1a08 <malloc+0x60> |
1a06: a9 01 movw r20, r18 |
1a08: db 01 movw r26, r22 |
1a0a: e0 e0 ldi r30, 0x00 ; 0 |
1a0c: f0 e0 ldi r31, 0x00 ; 0 |
1a0e: 10 97 sbiw r26, 0x00 ; 0 |
1a10: 49 f1 breq .+82 ; 0x1a64 <malloc+0xbc> |
1a12: 8d 91 ld r24, X+ |
1a14: 9c 91 ld r25, X |
1a16: 11 97 sbiw r26, 0x01 ; 1 |
1a18: 82 17 cp r24, r18 |
1a1a: 93 07 cpc r25, r19 |
1a1c: f9 f4 brne .+62 ; 0x1a5c <malloc+0xb4> |
1a1e: 42 17 cp r20, r18 |
1a20: 53 07 cpc r21, r19 |
1a22: 79 f4 brne .+30 ; 0x1a42 <malloc+0x9a> |
1a24: ed 01 movw r28, r26 |
1a26: 8a 81 ldd r24, Y+2 ; 0x02 |
1a28: 9b 81 ldd r25, Y+3 ; 0x03 |
1a2a: 30 97 sbiw r30, 0x00 ; 0 |
1a2c: 19 f0 breq .+6 ; 0x1a34 <malloc+0x8c> |
1a2e: 93 83 std Z+3, r25 ; 0x03 |
1a30: 82 83 std Z+2, r24 ; 0x02 |
1a32: 04 c0 rjmp .+8 ; 0x1a3c <malloc+0x94> |
1a34: 90 93 d9 01 sts 0x01D9, r25 |
1a38: 80 93 d8 01 sts 0x01D8, r24 |
1a3c: cd 01 movw r24, r26 |
1a3e: 02 96 adiw r24, 0x02 ; 2 |
1a40: 4a c0 rjmp .+148 ; 0x1ad6 <malloc+0x12e> |
1a42: 24 1b sub r18, r20 |
1a44: 35 0b sbc r19, r21 |
1a46: fd 01 movw r30, r26 |
1a48: e2 0f add r30, r18 |
1a4a: f3 1f adc r31, r19 |
1a4c: 41 93 st Z+, r20 |
1a4e: 51 93 st Z+, r21 |
1a50: 22 50 subi r18, 0x02 ; 2 |
1a52: 30 40 sbci r19, 0x00 ; 0 |
1a54: 2d 93 st X+, r18 |
1a56: 3c 93 st X, r19 |
1a58: cf 01 movw r24, r30 |
1a5a: 3d c0 rjmp .+122 ; 0x1ad6 <malloc+0x12e> |
1a5c: fd 01 movw r30, r26 |
1a5e: a2 81 ldd r26, Z+2 ; 0x02 |
1a60: b3 81 ldd r27, Z+3 ; 0x03 |
1a62: d5 cf rjmp .-86 ; 0x1a0e <malloc+0x66> |
1a64: 80 91 d6 01 lds r24, 0x01D6 |
1a68: 90 91 d7 01 lds r25, 0x01D7 |
1a6c: 89 2b or r24, r25 |
1a6e: 41 f4 brne .+16 ; 0x1a80 <malloc+0xd8> |
1a70: 80 91 80 00 lds r24, 0x0080 |
1a74: 90 91 81 00 lds r25, 0x0081 |
1a78: 90 93 d7 01 sts 0x01D7, r25 |
1a7c: 80 93 d6 01 sts 0x01D6, r24 |
1a80: e0 91 7e 00 lds r30, 0x007E |
1a84: f0 91 7f 00 lds r31, 0x007F |
1a88: 30 97 sbiw r30, 0x00 ; 0 |
1a8a: 41 f4 brne .+16 ; 0x1a9c <malloc+0xf4> |
1a8c: ed b7 in r30, 0x3d ; 61 |
1a8e: fe b7 in r31, 0x3e ; 62 |
1a90: 80 91 82 00 lds r24, 0x0082 |
1a94: 90 91 83 00 lds r25, 0x0083 |
1a98: e8 1b sub r30, r24 |
1a9a: f9 0b sbc r31, r25 |
1a9c: a0 91 d6 01 lds r26, 0x01D6 |
1aa0: b0 91 d7 01 lds r27, 0x01D7 |
1aa4: 9f 01 movw r18, r30 |
1aa6: 2a 1b sub r18, r26 |
1aa8: 3b 0b sbc r19, r27 |
1aaa: 24 17 cp r18, r20 |
1aac: 35 07 cpc r19, r21 |
1aae: 88 f0 brcs .+34 ; 0x1ad2 <malloc+0x12a> |
1ab0: ca 01 movw r24, r20 |
1ab2: 02 96 adiw r24, 0x02 ; 2 |
1ab4: 28 17 cp r18, r24 |
1ab6: 39 07 cpc r19, r25 |
1ab8: 60 f0 brcs .+24 ; 0x1ad2 <malloc+0x12a> |
1aba: cd 01 movw r24, r26 |
1abc: 84 0f add r24, r20 |
1abe: 95 1f adc r25, r21 |
1ac0: 02 96 adiw r24, 0x02 ; 2 |
1ac2: 90 93 d7 01 sts 0x01D7, r25 |
1ac6: 80 93 d6 01 sts 0x01D6, r24 |
1aca: 4d 93 st X+, r20 |
1acc: 5d 93 st X+, r21 |
1ace: cd 01 movw r24, r26 |
1ad0: 02 c0 rjmp .+4 ; 0x1ad6 <malloc+0x12e> |
1ad2: 80 e0 ldi r24, 0x00 ; 0 |
1ad4: 90 e0 ldi r25, 0x00 ; 0 |
1ad6: df 91 pop r29 |
1ad8: cf 91 pop r28 |
1ada: 08 95 ret |
00001adc <free>: |
1adc: cf 93 push r28 |
1ade: df 93 push r29 |
1ae0: 00 97 sbiw r24, 0x00 ; 0 |
1ae2: 09 f4 brne .+2 ; 0x1ae6 <free+0xa> |
1ae4: 54 c0 rjmp .+168 ; 0x1b8e <free+0xb2> |
1ae6: dc 01 movw r26, r24 |
1ae8: 12 97 sbiw r26, 0x02 ; 2 |
1aea: ed 01 movw r28, r26 |
1aec: 1b 82 std Y+3, r1 ; 0x03 |
1aee: 1a 82 std Y+2, r1 ; 0x02 |
1af0: 80 91 d8 01 lds r24, 0x01D8 |
1af4: 90 91 d9 01 lds r25, 0x01D9 |
1af8: 00 97 sbiw r24, 0x00 ; 0 |
1afa: 21 f1 breq .+72 ; 0x1b44 <free+0x68> |
1afc: fc 01 movw r30, r24 |
1afe: 40 e0 ldi r20, 0x00 ; 0 |
1b00: 50 e0 ldi r21, 0x00 ; 0 |
1b02: ea 17 cp r30, r26 |
1b04: fb 07 cpc r31, r27 |
1b06: 18 f1 brcs .+70 ; 0x1b4e <free+0x72> |
1b08: ed 01 movw r28, r26 |
1b0a: fb 83 std Y+3, r31 ; 0x03 |
1b0c: ea 83 std Y+2, r30 ; 0x02 |
1b0e: 2d 91 ld r18, X+ |
1b10: 3c 91 ld r19, X |
1b12: 11 97 sbiw r26, 0x01 ; 1 |
1b14: c2 0f add r28, r18 |
1b16: d3 1f adc r29, r19 |
1b18: ce 01 movw r24, r28 |
1b1a: 02 96 adiw r24, 0x02 ; 2 |
1b1c: 8e 17 cp r24, r30 |
1b1e: 9f 07 cpc r25, r31 |
1b20: 71 f4 brne .+28 ; 0x1b3e <free+0x62> |
1b22: 8a 81 ldd r24, Y+2 ; 0x02 |
1b24: 9b 81 ldd r25, Y+3 ; 0x03 |
1b26: 28 0f add r18, r24 |
1b28: 39 1f adc r19, r25 |
1b2a: 2e 5f subi r18, 0xFE ; 254 |
1b2c: 3f 4f sbci r19, 0xFF ; 255 |
1b2e: 11 96 adiw r26, 0x01 ; 1 |
1b30: 3c 93 st X, r19 |
1b32: 2e 93 st -X, r18 |
1b34: 82 81 ldd r24, Z+2 ; 0x02 |
1b36: 93 81 ldd r25, Z+3 ; 0x03 |
1b38: fd 01 movw r30, r26 |
1b3a: 93 83 std Z+3, r25 ; 0x03 |
1b3c: 82 83 std Z+2, r24 ; 0x02 |
1b3e: 41 15 cp r20, r1 |
1b40: 51 05 cpc r21, r1 |
1b42: 59 f4 brne .+22 ; 0x1b5a <free+0x7e> |
1b44: b0 93 d9 01 sts 0x01D9, r27 |
1b48: a0 93 d8 01 sts 0x01D8, r26 |
1b4c: 20 c0 rjmp .+64 ; 0x1b8e <free+0xb2> |
1b4e: af 01 movw r20, r30 |
1b50: 02 80 ldd r0, Z+2 ; 0x02 |
1b52: f3 81 ldd r31, Z+3 ; 0x03 |
1b54: e0 2d mov r30, r0 |
1b56: 30 97 sbiw r30, 0x00 ; 0 |
1b58: a1 f6 brne .-88 ; 0x1b02 <free+0x26> |
1b5a: ea 01 movw r28, r20 |
1b5c: bb 83 std Y+3, r27 ; 0x03 |
1b5e: aa 83 std Y+2, r26 ; 0x02 |
1b60: ca 01 movw r24, r20 |
1b62: 02 96 adiw r24, 0x02 ; 2 |
1b64: 28 81 ld r18, Y |
1b66: 39 81 ldd r19, Y+1 ; 0x01 |
1b68: 82 0f add r24, r18 |
1b6a: 93 1f adc r25, r19 |
1b6c: 8a 17 cp r24, r26 |
1b6e: 9b 07 cpc r25, r27 |
1b70: 71 f4 brne .+28 ; 0x1b8e <free+0xb2> |
1b72: 8d 91 ld r24, X+ |
1b74: 9c 91 ld r25, X |
1b76: 11 97 sbiw r26, 0x01 ; 1 |
1b78: 28 0f add r18, r24 |
1b7a: 39 1f adc r19, r25 |
1b7c: 2e 5f subi r18, 0xFE ; 254 |
1b7e: 3f 4f sbci r19, 0xFF ; 255 |
1b80: 39 83 std Y+1, r19 ; 0x01 |
1b82: 28 83 st Y, r18 |
1b84: fd 01 movw r30, r26 |
1b86: 82 81 ldd r24, Z+2 ; 0x02 |
1b88: 93 81 ldd r25, Z+3 ; 0x03 |
1b8a: 9b 83 std Y+3, r25 ; 0x03 |
1b8c: 8a 83 std Y+2, r24 ; 0x02 |
1b8e: df 91 pop r29 |
1b90: cf 91 pop r28 |
1b92: 08 95 ret |
00001b94 <memset>: |
1b94: dc 01 movw r26, r24 |
1b96: 40 ff sbrs r20, 0 |
1b98: 03 c0 rjmp .+6 ; 0x1ba0 <memset+0xc> |
1b9a: 01 c0 rjmp .+2 ; 0x1b9e <memset+0xa> |
1b9c: 6d 93 st X+, r22 |
1b9e: 6d 93 st X+, r22 |
1ba0: 42 50 subi r20, 0x02 ; 2 |
1ba2: 50 40 sbci r21, 0x00 ; 0 |
1ba4: d8 f7 brcc .-10 ; 0x1b9c <memset+0x8> |
1ba6: 08 95 ret |
00001ba8 <__udivmodsi4>: |
1ba8: a1 e2 ldi r26, 0x21 ; 33 |
1baa: 1a 2e mov r1, r26 |
1bac: aa 1b sub r26, r26 |
1bae: bb 1b sub r27, r27 |
1bb0: fd 01 movw r30, r26 |
1bb2: 0d c0 rjmp .+26 ; 0x1bce <__udivmodsi4_ep> |
00001bb4 <__udivmodsi4_loop>: |
1bb4: aa 1f adc r26, r26 |
1bb6: bb 1f adc r27, r27 |
1bb8: ee 1f adc r30, r30 |
1bba: ff 1f adc r31, r31 |
1bbc: a2 17 cp r26, r18 |
1bbe: b3 07 cpc r27, r19 |
1bc0: e4 07 cpc r30, r20 |
1bc2: f5 07 cpc r31, r21 |
1bc4: 20 f0 brcs .+8 ; 0x1bce <__udivmodsi4_ep> |
1bc6: a2 1b sub r26, r18 |
1bc8: b3 0b sbc r27, r19 |
1bca: e4 0b sbc r30, r20 |
1bcc: f5 0b sbc r31, r21 |
00001bce <__udivmodsi4_ep>: |
1bce: 66 1f adc r22, r22 |
1bd0: 77 1f adc r23, r23 |
1bd2: 88 1f adc r24, r24 |
1bd4: 99 1f adc r25, r25 |
1bd6: 1a 94 dec r1 |
1bd8: 69 f7 brne .-38 ; 0x1bb4 <__udivmodsi4_loop> |
1bda: 60 95 com r22 |
1bdc: 70 95 com r23 |
1bde: 80 95 com r24 |
1be0: 90 95 com r25 |
1be2: 9b 01 movw r18, r22 |
1be4: ac 01 movw r20, r24 |
1be6: bd 01 movw r22, r26 |
1be8: cf 01 movw r24, r30 |
1bea: 08 95 ret |
/tags/V0.42/main.map |
---|
0,0 → 1,764 |
Archive member included because of file (symbol) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o (__udivmodsi4) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
main.o (__do_copy_data) |
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
main.o (__do_clear_bss) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o (memchr) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o (fdevopen) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (__iob) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) (calloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (malloc) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) (memset) |
Allocating common symbols |
Common symbol size file |
SendeBuffer 0x64 uart.o |
Debug_Timer 0x2 main.o |
Debug_Display_Timer |
0x2 main.o |
__brkval 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
DebugIn 0xb main.o |
VersionInfo 0xa main.o |
New_IR_Code 0x1 ir.o |
RxdBuffer 0x64 uart.o |
AnalogWerte 0x6 analog.o |
IR_Code 0x2 ir.o |
KanalVon 0x8 menu.o |
Decodierung_Lauft 0x1 ir.o |
DebugOut 0x1a main.o |
KanalAn 0x8 menu.o |
__flp 0x2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
PollDisplay 0x1 main.o |
__iob 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
Memory Configuration |
Name Origin Length Attributes |
text 0x00000000 0x00020000 xr |
data 0x00800060 0x0000ffa0 rw !x |
eeprom 0x00810000 0x00010000 rw !x |
*default* 0x00000000 0xffffffff |
Linker script and memory map |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
LOAD main.o |
LOAD uart.o |
LOAD lcd.o |
LOAD printf_P.o |
LOAD timer0.o |
LOAD keyboard.o |
LOAD menu.o |
LOAD ir.o |
LOAD analog.o |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libm.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a |
LOAD C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a |
.hash |
*(.hash) |
.dynsym |
*(.dynsym) |
.dynstr |
*(.dynstr) |
.gnu.version |
*(.gnu.version) |
.gnu.version_d |
*(.gnu.version_d) |
.gnu.version_r |
*(.gnu.version_r) |
.rel.init |
*(.rel.init) |
.rela.init |
*(.rela.init) |
.rel.text |
*(.rel.text) |
*(.rel.text.*) |
*(.rel.gnu.linkonce.t*) |
.rela.text |
*(.rela.text) |
*(.rela.text.*) |
*(.rela.gnu.linkonce.t*) |
.rel.fini |
*(.rel.fini) |
.rela.fini |
*(.rela.fini) |
.rel.rodata |
*(.rel.rodata) |
*(.rel.rodata.*) |
*(.rel.gnu.linkonce.r*) |
.rela.rodata |
*(.rela.rodata) |
*(.rela.rodata.*) |
*(.rela.gnu.linkonce.r*) |
.rel.data |
*(.rel.data) |
*(.rel.data.*) |
*(.rel.gnu.linkonce.d*) |
.rela.data |
*(.rela.data) |
*(.rela.data.*) |
*(.rela.gnu.linkonce.d*) |
.rel.ctors |
*(.rel.ctors) |
.rela.ctors |
*(.rela.ctors) |
.rel.dtors |
*(.rel.dtors) |
.rela.dtors |
*(.rela.dtors) |
.rel.got |
*(.rel.got) |
.rela.got |
*(.rela.got) |
.rel.bss |
*(.rel.bss) |
.rela.bss |
*(.rela.bss) |
.rel.plt |
*(.rel.plt) |
.rela.plt |
*(.rela.plt) |
.text 0x00000000 0x1c18 |
*(.vectors) |
.vectors 0x00000000 0x54 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000000 __vectors |
0x00000000 __vector_default |
0x00000054 __ctors_start = . |
*(.ctors) |
0x00000054 __ctors_end = . |
0x00000054 __dtors_start = . |
*(.dtors) |
0x00000054 __dtors_end = . |
*(.progmem.gcc*) |
*(.progmem*) |
.progmem.data 0x00000054 0x54 main.o |
.progmem.data 0x000000a8 0xc uart.o |
.progmem.data 0x000000b4 0x56 menu.o |
0x0000010a . = ALIGN (0x2) |
*(.init0) |
*(.init1) |
*(.init2) |
.init2 0x0000010a 0xc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.init3) |
*(.init4) |
.init4 0x00000116 0x16 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
0x00000116 __do_copy_data |
.init4 0x0000012c 0x10 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
0x0000012c __do_clear_bss |
*(.init5) |
*(.init6) |
*(.init7) |
*(.init8) |
*(.init9) |
.init9 0x0000013c 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
*(.text) |
.text 0x00000140 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
0x00000140 __vector_12 |
0x00000140 __bad_interrupt |
0x00000140 __vector_6 |
0x00000140 __vector_3 |
0x00000140 __vector_17 |
0x00000140 __vector_19 |
0x00000140 __vector_7 |
0x00000140 __vector_5 |
0x00000140 __vector_4 |
0x00000140 __vector_2 |
0x00000140 __vector_8 |
0x00000140 __vector_14 |
0x00000140 __vector_10 |
0x00000140 __vector_16 |
0x00000140 __vector_18 |
0x00000140 __vector_20 |
.text 0x00000144 0x282 main.o |
0x000001b4 Init |
0x00000156 Sekundentakt |
0x000001ca main |
0x00000144 Sekundentakt_Init |
.text 0x000003c6 0x7e6 uart.o |
0x000009f8 WriteProgramData |
0x00000a16 SendeRemoteTasten |
0x000009fa UART_Init |
0x00000430 __vector_13 |
0x0000080a BearbeiteRxDaten |
0x00000abe ClearIntervalle |
0x00000a76 SendIntervalle |
0x000005de AddCRC |
0x00000b04 DatenUebertragung |
0x00000732 Decode64 |
0x000003c6 __vector_15 |
0x0000064a SendOutData |
0x000009dc uart_putchar |
.text 0x00000bac 0x1b2 lcd.o |
0x00000cc4 LCD_Gotoxy |
0x00000c4e my_pput |
0x00000c08 _lcd_write_4bit |
0x00000bcc _short_delay |
0x00000c26 lcd_write_byte |
0x00000bdc _lcd_write_command |
0x00000c58 LCD_Init |
0x00000d48 LCD_Putchar |
0x00000d12 LCD_Write |
0x00000bac _long_delay |
.text 0x00000d5e 0x58a printf_P.o |
0x00000de0 _printf_P |
0x00000dc8 PAD_0 |
0x00000d86 PRINTP |
0x00000d5e PRINT |
0x00000db0 PAD_SP |
.text 0x000012e8 0xd6 timer0.o |
0x0000137c SetDelay |
0x0000138e CheckDelay |
0x000013a4 Delay_ms |
0x000012e8 __vector_9 |
0x00001368 Timer1_Init |
.text 0x000013be 0x136 keyboard.o |
0x000014da GetKeyboard2 |
0x000013be Keyboard_Init |
0x000013d0 GetKeyboard |
.text 0x000014f4 0x206 menu.o |
0x000014f4 Menu |
.text 0x000016fa 0x1b6 ir.o |
0x00001728 __vector_1 |
0x00001758 __vector_11 |
0x000016fa InitIR |
.text 0x000018b0 0x44 analog.o |
0x000018c8 GetAnalogWerte |
0x000018b8 ReadADC |
0x000018b0 ADC_Init |
.text 0x000018f4 0x1a C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
0x000018f4 memchr |
.text 0x0000190e 0x8e C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
0x0000190e fdevopen |
.text 0x0000199c 0x38 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
0x0000199c calloc |
.text 0x000019d4 0x1ec C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x000019d4 malloc |
0x00001b08 free |
.text 0x00001bc0 0x14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
0x00001bc0 memset |
0x00001bd4 . = ALIGN (0x2) |
*(.text.*) |
.text.libgcc 0x00001bd4 0x44 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
0x00001bd4 __udivmodsi4 |
0x00001c18 . = ALIGN (0x2) |
*(.fini9) |
*(.fini8) |
*(.fini7) |
*(.fini6) |
*(.fini5) |
*(.fini4) |
*(.fini3) |
*(.fini2) |
*(.fini1) |
*(.fini0) |
0x00001c18 _etext = . |
.data 0x00800060 0x24 load address 0x00001c18 |
0x00800060 PROVIDE (__data_start, .) |
*(.data) |
.data 0x00800060 0xc main.o |
0x00800065 DisplayZeilen |
0x00800064 SlaveAdresse |
0x00800066 CntDatensaetzeProSekunde |
0x00800062 IntervallDebug |
0x00800060 IntervallDisplay |
.data 0x0080006c 0x5 uart.o |
0x0080006e UebertragungAbgeschlossen |
0x0080006c AnzahlTeilnehmer |
0x0080006d ErwarteAntwort |
.data 0x00800071 0xb menu.o |
0x00800071 Array |
.data 0x0080007c 0x2 ir.o |
0x0080007c LoescheIrCodeTimer |
.data 0x0080007e 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x00800080 __malloc_heap_start |
0x0080007e __malloc_heap_end |
0x00800082 __malloc_margin |
*(.gnu.linkonce.d*) |
0x00800084 . = ALIGN (0x2) |
0x00800084 _edata = . |
0x00800084 PROVIDE (__data_end, .) |
.bss 0x00800084 0x157 |
0x00800084 PROVIDE (__bss_start, .) |
*(.bss) |
.bss 0x00800084 0xe main.o |
0x00800087 DebugGetAnforderung |
0x00800088 Debug_Display_Intervall |
0x00800086 GetVersionAnforderung |
0x0080008d Sekunde |
0x00800085 SendeDummyDaten |
0x0080008e _TastTimer |
0x0080008c Minute |
0x0080008a Debug_Timer_Intervall |
0x00800084 UebertragungUnterbrochen |
0x00800090 _SekTimer |
.bss 0x00800092 0x14 uart.o |
0x0080009d SioTmp |
0x00800098 PC_DebugTimeout |
0x0080009c NeuerDatensatzEmpfangen |
0x0080009a CntCrcError |
0x00800097 TX_DigTransferKanalL |
0x00800094 DisplayBusy |
0x00800092 WaitTXD |
0x00800099 AnzahlEmpfangsBytes |
0x00800095 TX_DigTransferKanalDaten |
0x00800093 AntwortEingetroffen |
0x00800096 TX_DigTransferKanalH |
.bss 0x008000a6 0x3 timer0.o |
0x008000a6 CountMilliseconds |
.bss 0x008000a9 0x7 keyboard.o |
0x008000a9 KeyTimer |
.bss 0x008000b0 0x5 menu.o |
0x008000b0 TestInt |
.bss 0x008000b5 0x6 ir.o |
*(COMMON) |
COMMON 0x008000bb 0x34 main.o |
0x008000bb Debug_Timer |
0x008000bd Debug_Display_Timer |
0x008000bf DebugIn |
0x008000ca VersionInfo |
0x008000d4 DebugOut |
0x008000ee PollDisplay |
COMMON 0x008000ef 0xc8 uart.o |
0x008000ef SendeBuffer |
0x00800153 RxdBuffer |
COMMON 0x008001b7 0x10 menu.o |
0x008001b7 KanalVon |
0x008001bf KanalAn |
COMMON 0x008001c7 0x4 ir.o |
0x008001c7 New_IR_Code |
0x008001c8 IR_Code |
0x008001ca Decodierung_Lauft |
COMMON 0x008001cb 0x6 analog.o |
0x008001cb AnalogWerte |
COMMON 0x008001d1 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
0x008001d1 __iob |
COMMON 0x008001d7 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
0x008001d7 __brkval |
0x008001d9 __flp |
0x008001db PROVIDE (__bss_end, .) |
0x00001c18 __data_load_start = LOADADDR (.data) |
0x00001c3c __data_load_end = (__data_load_start + SIZEOF (.data)) |
.noinit 0x008001db 0x0 |
0x008001db PROVIDE (__noinit_start, .) |
*(.noinit*) |
0x008001db PROVIDE (__noinit_end, .) |
0x008001db _end = . |
0x008001db PROVIDE (__heap_start, .) |
.eeprom 0x00810000 0x0 |
*(.eeprom*) |
0x00810000 __eeprom_end = . |
.stab 0x00000000 0x36c |
*(.stab) |
.stab 0x00000000 0x36c C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stabstr 0x00000000 0x84 |
*(.stabstr) |
.stabstr 0x00000000 0x84 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
.stab.excl |
*(.stab.excl) |
.stab.exclstr |
*(.stab.exclstr) |
.stab.index |
*(.stab.index) |
.stab.indexstr |
*(.stab.indexstr) |
.comment |
*(.comment) |
.debug |
*(.debug) |
.line |
*(.line) |
.debug_srcinfo |
*(.debug_srcinfo) |
.debug_sfnames |
*(.debug_sfnames) |
.debug_aranges 0x00000000 0xb4 |
*(.debug_aranges) |
.debug_aranges |
0x00000000 0x14 main.o |
.debug_aranges |
0x00000014 0x14 uart.o |
.debug_aranges |
0x00000028 0x14 lcd.o |
.debug_aranges |
0x0000003c 0x14 printf_P.o |
.debug_aranges |
0x00000050 0x14 timer0.o |
.debug_aranges |
0x00000064 0x14 keyboard.o |
.debug_aranges |
0x00000078 0x14 menu.o |
.debug_aranges |
0x0000008c 0x14 ir.o |
.debug_aranges |
0x000000a0 0x14 analog.o |
.debug_pubnames |
0x00000000 0x701 |
*(.debug_pubnames) |
.debug_pubnames |
0x00000000 0x1e1 main.o |
.debug_pubnames |
0x000001e1 0x240 uart.o |
.debug_pubnames |
0x00000421 0xb7 lcd.o |
.debug_pubnames |
0x000004d8 0x4a printf_P.o |
.debug_pubnames |
0x00000522 0x70 timer0.o |
.debug_pubnames |
0x00000592 0x52 keyboard.o |
.debug_pubnames |
0x000005e4 0x4a menu.o |
.debug_pubnames |
0x0000062e 0x85 ir.o |
.debug_pubnames |
0x000006b3 0x4e analog.o |
.debug_info 0x00000000 0x1a6c |
*(.debug_info) |
.debug_info 0x00000000 0x469 main.o |
.debug_info 0x00000469 0x7ba uart.o |
.debug_info 0x00000c23 0x260 lcd.o |
.debug_info 0x00000e83 0x45d printf_P.o |
.debug_info 0x000012e0 0x1d7 timer0.o |
.debug_info 0x000014b7 0x177 keyboard.o |
.debug_info 0x0000162e 0x1a7 menu.o |
.debug_info 0x000017d5 0x171 ir.o |
.debug_info 0x00001946 0x126 analog.o |
*(.gnu.linkonce.wi.*) |
.debug_abbrev 0x00000000 0x774 |
*(.debug_abbrev) |
.debug_abbrev 0x00000000 0x10c main.o |
.debug_abbrev 0x0000010c 0x178 uart.o |
.debug_abbrev 0x00000284 0xbc lcd.o |
.debug_abbrev 0x00000340 0x132 printf_P.o |
.debug_abbrev 0x00000472 0xc5 timer0.o |
.debug_abbrev 0x00000537 0x87 keyboard.o |
.debug_abbrev 0x000005be 0xb6 menu.o |
.debug_abbrev 0x00000674 0x76 ir.o |
.debug_abbrev 0x000006ea 0x8a analog.o |
.debug_line 0x00000000 0x16a3 |
*(.debug_line) |
.debug_line 0x00000000 0x2aa main.o |
.debug_line 0x000002aa 0x4c4 uart.o |
.debug_line 0x0000076e 0x279 lcd.o |
.debug_line 0x000009e7 0x4e2 printf_P.o |
.debug_line 0x00000ec9 0x180 timer0.o |
.debug_line 0x00001049 0x170 keyboard.o |
.debug_line 0x000011b9 0x19a menu.o |
.debug_line 0x00001353 0x212 ir.o |
.debug_line 0x00001565 0x13e analog.o |
.debug_frame |
*(.debug_frame) |
.debug_str 0x00000000 0x889 |
*(.debug_str) |
.debug_str 0x00000000 0x2e2 main.o |
0x371 (size before relaxing) |
.debug_str 0x000002e2 0x26b uart.o |
0x423 (size before relaxing) |
.debug_str 0x0000054d 0x9a lcd.o |
0x17b (size before relaxing) |
.debug_str 0x000005e7 0xf9 printf_P.o |
0x1bd (size before relaxing) |
.debug_str 0x000006e0 0x6b timer0.o |
0x168 (size before relaxing) |
.debug_str 0x0000074b 0x5e keyboard.o |
0x13f (size before relaxing) |
.debug_str 0x000007a9 0x40 menu.o |
0x15e (size before relaxing) |
.debug_str 0x000007e9 0x6d ir.o |
0x169 (size before relaxing) |
.debug_str 0x00000856 0x33 analog.o |
0x120 (size before relaxing) |
.debug_loc |
*(.debug_loc) |
.debug_macinfo |
*(.debug_macinfo) |
OUTPUT(main.elf elf32-avr) |
Cross Reference Table |
Symbol File |
ADC_Init analog.o |
main.o |
AddCRC uart.o |
AnalogWerte analog.o |
uart.o |
AntwortEingetroffen uart.o |
AnzahlEmpfangsBytes uart.o |
AnzahlTeilnehmer uart.o |
menu.o |
Array menu.o |
BearbeiteRxDaten uart.o |
main.o |
CheckDelay timer0.o |
keyboard.o |
main.o |
ClearIntervalle uart.o |
main.o |
CntCrcError uart.o |
menu.o |
CntDatensaetzeProSekunde main.o |
uart.o |
CountMilliseconds timer0.o |
DatenUebertragung uart.o |
main.o |
DebugGetAnforderung main.o |
DebugIn uart.o |
main.o |
DebugOut uart.o |
main.o |
Debug_Display_Intervall main.o |
Debug_Display_Timer main.o |
Debug_Timer main.o |
Debug_Timer_Intervall main.o |
Decode64 uart.o |
Decodierung_Lauft ir.o |
Delay_ms timer0.o |
main.o |
DisplayBusy uart.o |
timer0.o |
DisplayZeilen main.o |
menu.o |
uart.o |
ErwarteAntwort uart.o |
GetAnalogWerte analog.o |
main.o |
GetKeyboard keyboard.o |
main.o |
GetKeyboard2 keyboard.o |
main.o |
GetVersionAnforderung main.o |
IR_Code ir.o |
timer0.o |
uart.o |
Init main.o |
InitIR ir.o |
main.o |
IntervallDebug main.o |
IntervallDisplay main.o |
KanalAn menu.o |
KanalVon menu.o |
KeyTimer keyboard.o |
Keyboard_Init keyboard.o |
main.o |
LCD_Gotoxy lcd.o |
menu.o |
uart.o |
main.o |
LCD_Init lcd.o |
main.o |
LCD_Putchar lcd.o |
printf_P.o |
LCD_Write lcd.o |
LoescheIrCodeTimer ir.o |
timer0.o |
Menu menu.o |
main.o |
Minute main.o |
NeuerDatensatzEmpfangen uart.o |
New_IR_Code ir.o |
PAD_0 printf_P.o |
PAD_SP printf_P.o |
PC_DebugTimeout uart.o |
PRINT printf_P.o |
PRINTP printf_P.o |
PollDisplay uart.o |
main.o |
ReadADC analog.o |
RxdBuffer uart.o |
Sekunde main.o |
Sekundentakt main.o |
Sekundentakt_Init main.o |
SendIntervalle uart.o |
SendOutData uart.o |
SendeBuffer uart.o |
SendeDummyDaten main.o |
SendeRemoteTasten uart.o |
SetDelay timer0.o |
keyboard.o |
main.o |
SioTmp uart.o |
SlaveAdresse main.o |
menu.o |
uart.o |
TX_DigTransferKanalDaten uart.o |
TX_DigTransferKanalH uart.o |
TX_DigTransferKanalL uart.o |
TestInt menu.o |
Timer1_Init timer0.o |
main.o |
UART_Init uart.o |
main.o |
UebertragungAbgeschlossen uart.o |
UebertragungUnterbrochen main.o |
VersionInfo main.o |
WaitTXD uart.o |
timer0.o |
WriteProgramData uart.o |
_SekTimer main.o |
_TastTimer main.o |
__bad_interrupt C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__brkval C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__bss_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__bss_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
__data_end C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_load_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__data_start C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
__do_clear_bss C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__do_copy_data C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
analog.o |
ir.o |
menu.o |
keyboard.o |
timer0.o |
printf_P.o |
lcd.o |
uart.o |
main.o |
__flp C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__init C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__iob C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(iob.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
__malloc_heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_heap_start C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__malloc_margin C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
__stack C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
main.o |
__udivmodsi4 C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o |
__vector_1 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_10 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_11 ir.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_12 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_13 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_14 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_15 uart.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_16 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_17 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_18 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_19 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_2 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_20 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_3 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_4 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_5 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_6 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_7 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_8 C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_9 timer0.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vector_default C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
__vectors C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
_lcd_write_4bit lcd.o |
_lcd_write_command lcd.o |
menu.o |
main.o |
_long_delay lcd.o |
menu.o |
main.o |
_printf_P printf_P.o |
menu.o |
uart.o |
main.o |
_short_delay lcd.o |
calloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
fdevopen C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fdevopen.o) |
uart.o |
free C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
lcd_write_byte lcd.o |
main main.o |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
malloc C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(malloc.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
memchr C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o |
memset C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(memset.o) |
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(calloc.o) |
my_pput lcd.o |
uart_putchar uart.o |
/tags/V0.42/main.sym |
---|
0,0 → 1,253 |
00000000 W __heap_end |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 W __vector_default |
00000000 T __vectors |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
00000054 t __c.0 |
00000054 T __ctors_end |
00000054 T __ctors_start |
00000054 T __dtors_end |
00000054 T __dtors_start |
00000069 t __c.1 |
0000007e t __c.2 |
00000093 t __c.3 |
000000a8 t __c.2 |
000000ab t __c.3 |
000000ae t __c.4 |
000000b1 t __c.5 |
000000b4 t __c.3 |
000000c2 t __c.4 |
000000d0 t __c.5 |
000000dc t __c.6 |
000000e1 t __c.7 |
000000ea t __c.8 |
000000f6 t __c.9 |
000000fe t __c.10 |
0000010a W __init |
00000116 T __do_copy_data |
00000122 t .do_copy_data_loop |
00000126 t .do_copy_data_start |
0000012c T __do_clear_bss |
00000134 t .do_clear_bss_loop |
00000136 t .do_clear_bss_start |
00000140 T __bad_interrupt |
00000140 W __vector_10 |
00000140 W __vector_12 |
00000140 W __vector_14 |
00000140 W __vector_16 |
00000140 W __vector_17 |
00000140 W __vector_18 |
00000140 W __vector_19 |
00000140 W __vector_2 |
00000140 W __vector_20 |
00000140 W __vector_3 |
00000140 W __vector_4 |
00000140 W __vector_5 |
00000140 W __vector_6 |
00000140 W __vector_7 |
00000140 W __vector_8 |
00000144 T Sekundentakt_Init |
00000156 T Sekundentakt |
000001b4 T Init |
000001ca T main |
000003c6 T __vector_15 |
00000430 T __vector_13 |
000005de T AddCRC |
0000063c T SendOutData |
00000724 T Decode64 |
000007fc T BearbeiteRxDaten |
0000085f W __stack |
0000097a T uart_putchar |
00000996 T WriteProgramData |
00000998 T UART_Init |
000009b4 T SendeRemoteTasten |
00000a14 T SendIntervalle |
00000a5c T ClearIntervalle |
00000aa2 T DatenUebertragung |
00000b92 T _long_delay |
00000bb2 T _short_delay |
00000bc2 T _lcd_write_command |
00000bee T _lcd_write_4bit |
00000c0c T lcd_write_byte |
00000c34 T my_pput |
00000c3e T LCD_Init |
00000caa T LCD_Gotoxy |
00000cf8 T LCD_Write |
00000d2e T LCD_Putchar |
00000d44 T PRINT |
00000d6c T PRINTP |
00000d96 T PAD_SP |
00000dae T PAD_0 |
00000dc6 T _printf_P |
000012ce T __vector_9 |
0000133c T Timer1_Init |
00001350 T SetDelay |
00001362 T CheckDelay |
00001378 T Delay_ms |
00001392 T Keyboard_Init |
000013a4 T GetKeyboard |
000014ae T GetKeyboard2 |
000014c8 T Menu |
000016ce T InitIR |
000016fc T __vector_1 |
0000172c T __vector_11 |
00001884 T ADC_Init |
0000188c T ReadADC |
0000189c T GetAnalogWerte |
000018c8 T memchr |
000018e2 T fdevopen |
00001970 T calloc |
000019a8 T malloc |
00001adc T free |
00001b94 T memset |
00001ba8 T __udivmodsi4 |
00001bb4 t __udivmodsi4_loop |
00001bce t __udivmodsi4_ep |
00001bec A __data_load_start |
00001bec T _etext |
00001c10 A __data_load_end |
00800060 D __data_start |
00800060 D IntervallDisplay |
00800062 D IntervallDebug |
00800064 D SlaveAdresse |
00800065 D DisplayZeilen |
00800066 D CntDatensaetzeProSekunde |
0080006c D AnzahlTeilnehmer |
0080006d D ErwarteAntwort |
0080006e D UebertragungAbgeschlossen |
0080006f d state.0 |
00800070 d KanalSlave.1 |
00800071 D Array |
0080007b d MaxMenue.1 |
0080007c D LoescheIrCodeTimer |
0080007e D __malloc_heap_end |
00800080 D __malloc_heap_start |
00800082 D __malloc_margin |
00800084 B __bss_start |
00800084 D __data_end |
00800084 D _edata |
00800084 B UebertragungUnterbrochen |
00800085 B SendeDummyDaten |
00800086 B GetVersionAnforderung |
00800087 B DebugGetAnforderung |
00800088 B Debug_Display_Intervall |
0080008a B Debug_Timer_Intervall |
0080008c B Minute |
0080008d B Sekunde |
0080008e B _TastTimer |
00800090 B _SekTimer |
00800092 B AntwortEingetroffen |
00800093 B DisplayBusy |
00800094 B TX_DigTransferKanalDaten |
00800095 B TX_DigTransferKanalH |
00800096 B TX_DigTransferKanalL |
00800097 B PC_DebugTimeout |
00800098 B AnzahlEmpfangsBytes |
00800099 B CntCrcError |
0080009b B NeuerDatensatzEmpfangen |
0080009c B SioTmp |
0080009d b ptr.11 |
0080009f b crc.6 |
008000a1 b crc1.7 |
008000a2 b crc2.8 |
008000a3 b buf_ptr.9 |
008000a4 b UartState.10 |
008000a5 B CountMilliseconds |
008000a7 b cnt_10ms.0 |
008000a8 B KeyTimer |
008000aa b taste1.0 |
008000ab b taste2.1 |
008000ac b taste3.2 |
008000ad b taste4.3 |
008000ae b taste5.4 |
008000af B TestInt |
008000b1 b arr.0 |
008000b3 b MenuePunkt.2 |
008000b4 b Shift.0 |
008000b6 b IR_Code_tmp.1 |
008000b8 b IR_Zaehler.2 |
008000b9 b IRSperrCounter.3 |
008000ba B Debug_Timer |
008000bc B Debug_Display_Timer |
008000be B DebugIn |
008000c9 B VersionInfo |
008000d3 B DebugOut |
008000ed B PollDisplay |
008000ee B SendeBuffer |
00800152 B RxdBuffer |
008001b6 B KanalVon |
008001be B KanalAn |
008001c6 B New_IR_Code |
008001c7 B IR_Code |
008001c9 B Decodierung_Lauft |
008001ca B AnalogWerte |
008001d0 B __iob |
008001d6 B __brkval |
008001d8 B __flp |
008001da B __bss_end |
008001da ? __heap_start |
008001da ? _end |
00810000 ? __eeprom_end |
/tags/V0.42/makefile |
---|
0,0 → 1,402 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega8 |
#------------------------------------------------------------------- |
# ACHTUNG: Immer "Make Clean" machen, wenn hier etwas geändert wird! |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 42 |
MotorAdresse = 4 |
FDD_IRLR = 1 |
#------------------------------------------------------------------- |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
ifeq ($(MotorAdresse), 0) |
ifeq ($(FDD_IRLR), 1) |
TARGET = BrushLess-Ctrlr_MEGA8_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_10A |
else |
TARGET = BrushLess-Ctrlr_MEGA8_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_6A |
endif |
else |
ifeq ($(FDD_IRLR), 1) |
TARGET = BrushLess-Ctrlr_MEGA8_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_10A_ADR_$(MotorAdresse)_for_BL-Ctrl_V1_0 |
else |
TARGET = BrushLess-Ctrlr_MEGA8_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_6A_ADR_$(MotorAdresse)_for_BL-Ctrl_V1_0 |
endif |
endif |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c timer0.c analog.c PPM_Decode.c twislave.c BLMC.c |
#printf_P.c |
########################################################################################################## |
# If there is more than one source file, append them above, or modify and |
# uncomment the following: |
#SRC += foo.c bar.c |
# You can also wrap lines by appending a backslash to the end of the line: |
#SRC += baz.c \ |
#xyzzy.c |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -g -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DMOTORADRESSE=$(MotorAdresse) -DFDD_IRLR=$(FDD_IRLR) |
ifeq ($(AVR_CTRL_PLATINE), 1) |
CFLAGS += -DAVR_CTRL_PLATINE=$(AVR_CTRL_PLATINE) |
endif |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
#AVRDUDE_FLAGS += -V -E noreset |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
# $(REMOVE) $(TARGET).eep |
# $(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/tags/V0.42/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/tags/V0.42/timer0.c |
---|
0,0 → 1,59 |
/***************************************************************************** |
*****************************************************************************/ |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile unsigned char Timer0Overflow; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL(SIG_OVERFLOW0) |
{ |
static unsigned char cnt; |
Timer0Overflow++; |
if(!cnt--) |
{ |
cnt = 3; |
CountMilliseconds += 1; |
if(I2C_Timeout) I2C_Timeout--; |
if(PPM_Timeout) PPM_Timeout--; else anz_ppm_werte = 0; |
if(SIO_Timeout) SIO_Timeout--; |
} |
} |
void Timer0_Init(void) |
{ |
TCCR0 = TIMER_TEILER; |
// TCNT0 = -TIMER_RELOAD_VALUE; // reload |
TIM0_START; |
TIMER2_INT_ENABLE; |
} |
unsigned int SetDelay(unsigned int t) |
{ |
return(CountMilliseconds + t - 1); |
} |
char CheckDelay (unsigned int t) |
{ |
return(((t - CountMilliseconds) & 0x8000) >> 8); |
} |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
/tags/V0.42/timer0.h |
---|
0,0 → 1,15 |
#if defined (__AVR_ATmega8__) |
#define TIMER_TEILER CK8 |
//#define TIMER_RELOAD_VALUE 125 |
#endif |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char Timer0Overflow; |
void Timer1_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
/tags/V0.42/twislave.c |
---|
0,0 → 1,77 |
/*############################################################################ |
Slaveadr = 0x52 = Vorne, 0x54 = Hinten, 0x56 = Rechts, 0x58 = Links |
############################################################################*/ |
#include <avr/io.h> |
#include <util/twi.h> |
#include "main.h" |
unsigned char I2C_RXBuffer; |
unsigned char Byte_Counter=0; |
//############################################################################ |
//I2C (TWI) Interface Init |
void InitIC2_Slave(uint8_t adr) |
//############################################################################ |
{ |
TWAR = adr + (2*MotorAdresse); // Eigene Adresse setzen |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
//############################################################################ |
//ISR, die bei einem Ereignis auf dem Bus ausgelöst wird. Im Register TWSR befindet |
//sich dann ein Statuscode, anhand dessen die Situation festgestellt werden kann. |
ISR (TWI_vect) |
//############################################################################ |
{ |
switch (TWSR & 0xF8) |
{ |
case SR_SLA_ACK: |
TWCR |= (1<<TWINT); |
Byte_Counter=0; |
return; |
// Daten Empfangen |
case SR_PREV_ACK: |
GRN_OFF; |
I2C_RXBuffer = TWDR; |
I2C_Timeout = 500; |
TWCR |= (1<<TWINT); |
GRN_ON; |
return; |
// Daten Senden |
case SW_SLA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Daten Senden |
case SW_DATA_ACK: |
if (Byte_Counter==0) |
{ |
TWDR = Mittelstrom; |
Byte_Counter++; |
} |
else |
{ |
TWDR = MaxPWM; |
} |
TWCR |= (1<<TWINT); |
return; |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_2: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
// Bus-Fehler zurücksetzen |
case TWI_BUS_ERR_1: |
TWCR |=(1<<TWSTO) | (1<<TWINT); |
} |
TWCR =(1<<TWEA) | (1<<TWINT) | (1<<TWEN) | (1<<TWIE); // TWI Reset |
} |
/tags/V0.42/twislave.h |
---|
0,0 → 1,32 |
#ifndef _TWI_SLAVE_H_ |
#define _TWI_SLAVE_H_ |
extern unsigned char I2C_RXBuffer; |
extern unsigned char Byte_Counter; |
extern void InitIC2_Slave (uint8_t adr); |
#define TWI_BUS_ERR_1 0x00 |
#define TWI_BUS_ERR_2 0xF8 |
// Status Slave RX Mode |
#define SR_SLA_ACK 0x60 |
#define SR_LOST_ACK 0x68 |
#define SR_GEN_CALL_ACK 0x70 |
#define GEN_LOST_ACK 0x78 |
#define SR_PREV_ACK 0x80 |
#define SR_PREV_NACK 0x88 |
#define GEN_PREV_ACK 0x90 |
#define GEN_PREV_NACK 0x98 |
#define STOP_CONDITION 0xA0 |
#define REPEATED_START 0xA0 |
// Status Slave TX mode |
#define SW_SLA_ACK 0xA8 |
#define SW_LOST_ACK 0xB0 |
#define SW_DATA_ACK 0xB8 |
#define SW_DATA_NACK 0xC0 |
#define SW_LAST_ACK 0xC8 |
#endif |
/tags/V0.42/uart.c |
---|
0,0 → 1,278 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + (c) 01.2007 Holger Buss |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Keine Garantie auf Fehlerfreiheit |
// + Kommerzielle Nutzung nur mit meiner Zustimmung |
// + Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
// + www.mikrocontroller.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
#define MAX_SENDE_BUFF 100 |
#define MAX_EMPFANGS_BUFF 100 |
unsigned volatile char SIO_Sollwert = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned char MeineSlaveAdresse; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
struct str_DebugOut DebugOut; |
int Debug_Timer; |
SIGNAL(INT_VEC_TX) |
{ |
} |
void SendUart(void) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!(UCSRA & 0x40)) return; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
USR |= (1<TXC); |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
#if X3D_SIO == 1 |
static unsigned char serPacketCounter = 100; |
SioTmp = UDR; |
if(SioTmp == 0xF5) // Startzeichen |
{ |
serPacketCounter = 0; |
} |
else |
{ |
if(++serPacketCounter == MotorAdresse) // (1-4) |
{ |
SIO_Sollwert = SioTmp; |
SIO_Timeout = 200; // werte für 200ms gültig |
} |
else |
{ |
if(serPacketCounter > 100) serPacketCounter = 100; |
} |
} |
#else |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; }; |
if(CrcOkay) // Datensatz schon verarbeitet |
{ |
//NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
uart_putchar(RxdBuffer[2]); |
if (RxdBuffer[2] == 't') // Motortest |
{ Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
SIO_Sollwert = MotorTest[MotorAdresse - 1]; |
SIO_Timeout = 500; // werte für 500ms gültig |
} |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
#endif |
}; |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); // serieller Empfangsinterrupt |
// TX-Interrupt Freigabe |
// UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR= (SYSCLK / (BAUD_RATE * 8L) -1 ); |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
Debug_Timer = SetDelay(200); |
// Version beim Start ausgeben (nicht schön, aber geht... ) |
uart_putchar ('\n');uart_putchar ('B');uart_putchar ('L');uart_putchar (':'); |
uart_putchar ('V');uart_putchar (0x30 + VERSION_HAUPTVERSION);uart_putchar ('.');uart_putchar (0x30 + VERSION_NEBENVERSION/10); uart_putchar (0x30 + VERSION_NEBENVERSION%10); |
uart_putchar ('\n');uart_putchar('H');uart_putchar('W');uart_putchar (':');uart_putchar('1');uart_putchar('.');uart_putchar ((0x30-10) + HwVersion); |
uart_putchar ('\n');uart_putchar ('A');uart_putchar ('D');uart_putchar ('R'); uart_putchar (':'); uart_putchar (0x30 + MotorAdresse); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen)) // im Singlestep-Betrieb in jedem Schtitt senden |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
Debug_Timer = SetDelay(50); // Sendeintervall |
} |
} |
/tags/V0.42/uart.h |
---|
0,0 → 1,79 |
#ifndef _UART_H |
#define _UART_H |
extern unsigned volatile char SIO_Sollwert; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned char MeineSlaveAdresse; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void SendUart(void); |
extern void DatenUebertragung(void); |
struct str_DebugOut |
{ |
unsigned char Digital[2]; |
unsigned int Analog[8]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
//Die Baud_Rate der Seriellen Schnittstelle |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
#if X3D_SIO == 1 |
#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#else |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
#endif |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega8__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/tags/V0.42 |
---|
Property changes: |
Added: tsvn:logminsize |
+8 |
\ No newline at end of property |
/trunk/BrushLess-Ctrl_V0_31.hex |
---|
File deleted |
/trunk/BrushLess-Ctrl_V0_31.eep |
---|
File deleted |
/trunk/Doku/_BL_Ctrl_History.txt |
---|
File deleted |
/trunk/Doku/_Files.txt |
---|
File deleted |
\ No newline at end of file |
/trunk/Doku/Fuses_Mega8_8MHZ_Intern.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/trunk/Doku/BrushLess-Ctrl_16kHz_ADR1_V0_31.hex |
---|
File deleted |
/trunk/Doku/Test_Manuell_BrushLess-Ctrl_V0_21.hex |
---|
File deleted |
/trunk/Doku/BrushLess-Ctrl_16kHz_ADR2_V0_31.hex |
---|
File deleted |
/trunk/Doku/BrushLess-Ctrl_16kHz_ADR3_V0_31.hex |
---|
File deleted |
/trunk/Doku/BrushLess-Ctrl_16kHz_ADR4_V0_31.hex |
---|
File deleted |
/trunk/Doku/BrushLess-Ctrll_32kHz_V0_31.hex |
---|
File deleted |
/trunk/Doku/BrushLess-Ctrll_16kHz_V0_31.hex |
---|
File deleted |
/trunk/Doku/Test_Sollwert_Fix_32KHz_BrushLess-Ctrl_V0_23.hex |
---|
File deleted |
/trunk/Doku/Test_Schub_BrushLess-Ctrl_V0_21.hex |
---|
File deleted |
/trunk/Doku/BrushLess-Ctr_32kHz_V0_23.hex |
---|
File deleted |
/trunk/BLMC.c |
---|
1,13 → 1,58 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
############################################################################*/ |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Copyright (c) 12.2007 Holger Buss |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile unsigned char Phase = 0,ShadowTCCR1A = 0; |
40,7 → 85,6 |
if(sense) |
{ |
STEUER_C_L; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_FALLING_INT; |
SENSE_B; |
57,7 → 101,6 |
if(!sense) |
{ |
STEUER_B_H; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_RISING_INT; |
75,7 → 118,6 |
if(sense) |
{ |
STEUER_A_L; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_FALLING_INT; |
93,7 → 135,6 |
if(!sense) |
{ |
STEUER_C_H; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_B; |
SENSE_RISING_INT; |
112,7 → 153,6 |
if(sense) |
{ |
STEUER_B_L; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_A; |
SENSE_FALLING_INT; |
130,7 → 170,6 |
if(!sense) |
{ |
STEUER_A_H; |
TCNT2 = 1; |
if(ZeitZumAdWandeln) AdConvert(); |
SENSE_C; |
SENSE_RISING_INT; |
/trunk/BLMC.h |
---|
11,6 → 11,34 |
void Blc(void); |
void Manuell(void); |
// anselm |
/* |
#define COM1A ((0 << COM1A0) | (1 << COM1A1)) // COM1A-> OC1A non inverting mode |
#define COM1B ((0 << COM1B0) | (1 << COM1B1)) // COM1B-> OC1B non inverting mode |
#define COM2 ((0 << COM20) | (1 << COM21)) // COM2-> OC2 non inverting mode |
#ifdef _32KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> fast PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (1 << WGM21) | (1 << CS20)) // WGM20:21-> fast PWM, no prescale |
#endif |
#ifdef _16KHZ |
#define WGM1 ((1 << WGM10) | (0 << WGM11)) // WGM10:13-> phase corr, PWM 8bit |
#define WGMCS2 ((1 << WGM20) | (0 << WGM21) | (1 << CS20)) // WGM20:21-> phase corr. PWM, no prescale |
#endif |
#define PWM_C_ON {TCCR1A = COM1A | WGM1 | COM1B; TCCR2 = WGMCS2; |
DDRB = 0x02;} // Steuer_C+ output |
#define PWM_B_ON {TCCR1A = COM1B | WGM1 | COM1A; TCCR2 = WGMCS2; \ |
DDRB = 0x04;} // Steuer_B+ output |
#define PWM_A_ON {TCCR1A = WGM1; TCCR2 = COM2 | WGMCS2; \ |
DDRB = 0x08;} // Steuer_A+ output |
#define PWM_OFF {TCCR1A = WGM1; \ |
TCCR2 = WGMCS2; \ |
PORTB &= ~0x0E; DDRB = 0x0E;} // OC1x & OC2 disconnected, Steuer_X+ output low |
// anselm |
*/ |
#ifdef _32KHZ |
#define PWM_C_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xAD; TCCR2 = 0x49;DDRB = 0x0C;} |
19,13 → 47,26 |
#endif |
#ifdef _16KHZ |
#define PWM_C_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0A;} |
#define PWM_B_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0C;} |
#define PWM_A_ON {TCCR1A = 0xA2; TCCR2 = 0x61; DDRB = 0x08;} |
#define PWM_OFF {TCCR1A = 0x02; TCCR2 = 0x41;PORTC &= ~0x0E;} |
// #define PWM_C_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0A;} |
// #define PWM_B_ON {TCCR1A = 0xA2; TCCR2 = 0x41; DDRB = 0x0C;} |
// #define PWM_A_ON {TCCR1A = 0xA2; TCCR2 = 0x61; DDRB = 0x08;} |
// #define PWM_C_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0A;} else { TCCR1A = 0x81; DDRB = 0x0E;}} |
// #define PWM_B_ON {TCCR2 = 0x41; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x0C;} else { TCCR1A = 0x21; DDRB = 0x0E;}} |
// #define PWM_A_ON {TCCR2 = 0x61; if(PPM_Betrieb) { TCCR1A = 0xA1;DDRB = 0x08;} else { TCCR1A = 0x01; DDRB = 0x0E;}} |
#define PWM_C_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x02;} |
#define PWM_B_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x04;} |
#define PWM_A_ON {TCCR1A = 0xA1; TCCR2 = 0x61; DDRB = 0x08;} |
// #define PWM_C_ON {TCCR1A = 0x82; TCCR2 = 0x41; PORTB &= ~0x04; DDRB = 0x0E;} |
// #define PWM_B_ON {TCCR1A = 0x22; TCCR2 = 0x41; PORTB &= ~0x02; DDRB = 0x0E;} |
// #define PWM_A_ON {TCCR1A = 0x02; TCCR2 = 0x61; PORTB &= ~0x06; DDRB = 0x0E;} |
#define PWM_OFF {OCR1A = 0; OCR1B = 0; OCR2 = 0; TCCR1A = 0x01; TCCR2 = 0x41; DDRB = 0x0E; PORTB &= ~0x0E;} |
#endif |
#define STEUER_A_H {PWM_A_ON} |
#define STEUER_B_H {PWM_B_ON} |
#define STEUER_C_H {PWM_C_ON} |
33,11 → 74,12 |
#define STEUER_A_L {PORTD &= ~0x30; PORTD |= 0x08;} |
#define STEUER_B_L {PORTD &= ~0x28; PORTD |= 0x10;} |
#define STEUER_C_L {PORTD &= ~0x18; PORTD |= 0x20;} |
#define STEUER_OFF {PORTD &= ~0x38; PWM_OFF;} |
#define STEUER_OFF {PORTD &= ~0x38; PWM_OFF; } |
#define FETS_OFF {PORTD &= ~0x38; PORTB &= ~0x0E; } |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define SENSE_A ADMUX = 0 | IntRef; |
#define SENSE_B ADMUX = 1 | IntRef; |
#define SENSE_C ADMUX = 2 | IntRef; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
/trunk/Hex-Files/BL-Ctrl_V1_0/BootLoader_MEGA8_8MHZ_V0_2.hex |
---|
0,0 → 1,53 |
:101C000011241FBECFE5D4E0DEBFCDBF10E0A0E6BB |
:101C1000B0E0E0E3FFE102C005900D92A036B1070D |
:101C2000D9F710E0A0E6B0E001C01D92A23AB107DA |
:101C3000E1F714C000C008955D9BFECF8CB90895F4 |
:101C40005F9BFECF8CB1992708958DE4F5DF8BE47F |
:101C5000F3DF82E4F1DF8CE4EFDF0895CFE5D4E039 |
:101C6000DEBFCDBFE0E0F0E004917F01992481B7B1 |
:101C7000885081BF90BC80E189B9599A88E18AB9BE |
:101C800086E880BDEF01192D5F9B0BC0113029F450 |
:101C90008CB18A3A49F110E004C08CB18B3109F45F |
:101CA00011E0CE01219684369105C8F00F3F41F036 |
:101CB000002331F0E0916000F091610009950FC0C0 |
:101CC0008AE0BADF8DE0B8DF86E5B6DF80E3B4DF17 |
:101CD0008EE2B2DF82E3B0DF8AE3AEDF05C080E2EE |
:101CE0009EE40197F1F7D0CFB0DFAADF813611F47F |
:101CF00089E51CC1813461F4A3DFE82EFF24FE2CAA |
:101D0000EE249EDF9927E82AF92AF694E794E1C0A9 |
:101D1000823631F489E590DF80E08EDF80E406C111 |
:101D2000823409F070C08CDF8BDFD82E89DF082F5A |
:101D3000B2E6AB2EB0E0BB2E10E0E5010894A11C8A |
:101D4000B11C1D1510F47CDF01C08FEF88831F5F6D |
:101D5000103498F336E7931609F0C9C0063409F039 |
:101D60003CC08FEFE8168BE1F80608F033C0CD2DAC |
:101D7000A70166277727440F551F661F771F6A0143 |
:101D80007B01A2E6B0E011E08D9199272D913327D8 |
:101D9000322F2227822B932B0C01FA01109357002C |
:101DA000E89511244E5F5F4F6F4F7F4FC25061F730 |
:101DB00085E0F60180935700E89507B600FCFDCF5B |
:101DC00081E180935700E8957695679557954795FB |
:101DD0007A017FC080E030DF7CC0053409F079C033 |
:101DE000F7012D2DA2E6B0E0EEBB8F2F99278FBB18 |
:101DF0008D918DBB3196E29AE19AE199FECF215007 |
:101E000099F77F0166C08736B9F51ADF19DFC82F49 |
:101E100017DF863409F5C701AA27BB276C017D01AE |
:101E2000CC0CDD1CEE1CFF1CF60105911491802FDB |
:101E300003DF812F992700DF82E090E0A0E0B0E08F |
:101E4000C80ED91EEA1EFB1EC25071F7F694E79425 |
:101E5000D794C794760149CF853409F046CFEEBABE |
:101E60008F2D99278FBBE09A0894E11CF11C8DB34C |
:101E7000E3DEC150A1F739CF853601F596E7991613 |
:101E800041F580E090E0A0E0B0E023E0FC01209389 |
:101E90005700E89507B600FCFDCF805C9F4FAF4F21 |
:101EA000BF4F8F3F3BE1930730E0A30730E0B3071C |
:101EB00068F381E180935700E8950BC0853459F4AD |
:101EC00088E190E02CE00FB6F894A89581BD0FBE94 |
:101ED00021BD8DE02BC08035E1F38C34D1F3803708 |
:101EE00011F483E523C0843721F486E7A5DE80E082 |
:101EF0001DC0843519F4A4DE982EEBCF8B3109F484 |
:101F0000F3CE8A3A09F4F0CE863521F480E394DEEC |
:101F100082E30CC0833731F487E08EDE83E98CDE08 |
:101F20008EE104C08B3109F4E0CE8FE385DEDDCE97 |
:0400000300001C00DD |
:00000001FF |
/trunk/Hex-Files/BL-Ctrl_V1_0/Fuses_Mega8_8MHZ_Intern_MIT_Bootloader.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Hex-Files/BL-Ctrl_V1_0/Fuses_Mega8_8MHZ_Intern_OHNE_Bootloader.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Hex-Files/BL-Ctrl_V1_0/SET_BrushLess-Ctrl_V0_41_Adr_1-12_10A.zip |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Hex-Files/BL-Ctrl_V1_0/SET_BrushLess-Ctrl_V0_42_Adr_1-12_6A.zip |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Hex-Files/BL-Ctrl_V1_0/Test_Manuell_BL-Ctrl_V0_32.hex |
---|
0,0 → 1,330 |
:1000000012C0B9C62AC029C022C721C626C025C031 |
:100010000DC650C522C079C320C0CDC21EC01DC0B0 |
:1000200020C7C0C61AC011241FBECFE5D4E0DEBF72 |
:10003000CDBF10E0A0E6B0E0E6E7F4E102C0059035 |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92AF39B107E1F736C1D2CF20918300AD |
:1000600080916200821710F4282FAB9A8091810052 |
:1000700090918200893C910560F01BBC1ABC19BCB0 |
:1000800018BC13BCAB9A01979093820080938100B7 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F9CE221 |
:1000E000A92E91E0B92EC12CD12C1092A3004398D7 |
:1000F00085E090E09093840080938300AFDFB6D7D3 |
:1001000088EC90E039D5C12FDD27D0938400C093CF |
:100110008300EE24FF248701EA14FB040C051D056F |
:1001200078F480916700882311F44FD201C0A8D4DD |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E072D9A21ABC |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D10428F489E1A82EBC |
:10017000B12CC12CD12C7AD78091A5008F5F8093B0 |
:10018000A5008091A50066E034D99093A50005D51F |
:10019000D0938400C093830061DF449BBACF82B3C5 |
:1001A00090E8892782BBB5CF80917B0090917C003D |
:1001B000892B09F04EC04091790050917A00411589 |
:1001C000510571F090918E008FEF989FC00111241E |
:1001D00068EC70E01AD9709386006093850041C086 |
:1001E00080919A00882341F120919C0030919D00DC |
:1001F00081E02D32380708F09A01293C310510F0D2 |
:1002000028EC30E02B30310528F4509386004093E1 |
:10021000850026C08CEF90E0289FA001299F500DFB |
:10022000389F500D1124CA01885D994064EB70E03D |
:10023000ECD8CB01039610C0809185009091860088 |
:10024000009729F001979093860080938500AB9AE0 |
:1002500008C080919403992790938600809385002D |
:10026000AB9880918500909186008F3F910539F081 |
:1002700030F08FEF90E0909386008093850080911E |
:100280008500992708958091810090918200909334 |
:1002900084038093830380917F0099279093860342 |
:1002A00080938503809170009091710090938803F2 |
:1002B0008093870380919C0090919D0090938A0386 |
:1002C000809389030895CFE5D4E0DEBFCDBF00E081 |
:1002D00088E084BB85BB8AEB81BB80E882BB8EE073 |
:1002E00087BB81E388BB88B3806C88BBB69B06C0A4 |
:1002F000B79B02C081E007C082E005C0B79B02C087 |
:1003000083E001C084E08093600087D318D47894A0 |
:10031000C0E0D0E0809160009927C817D90709F4A0 |
:10032000979A86E990E028D497988AEF90E024D4B1 |
:100330002196C530D10574F384EF91E01DD4B3DE6E |
:1003400080E528D566D485E690E002D486E690E084 |
:10035000FFD387E690E0FCD3EC018EEF90E0F8D37A |
:100360005C018DEE93E0F4D37C018EEE93E0F0D34C |
:100370006C01CE01F6D38823E1F3979A10928400A2 |
:10038000109283006BDE88E080BF11E017B98AE02D |
:1003900090E0DED3EC0181E090E0909386038093BF |
:1003A000850310929D0010929C00812F8DDEFCDE53 |
:1003B000992790938400809383008091A5008017F3 |
:1003C00051F0109263001092640082E390E0C0D379 |
:1003D000EC010091A5008091830090918400892B0D |
:1003E000C9F41092740010926400C401BAD3882337 |
:1003F000E1F01092A300439881E08093630082B300 |
:10040000877C82BB82E08FBD81E485BD85B3817F1F |
:1004100085BB0BC080916300882319F081E0809335 |
:1004200074008CED95E094D34C0180916300882397 |
:1004300021F0109284001092830010DE80916400FD |
:100440008F5F80936400813009F0B1CF80916300A9 |
:100450008111979AC50185D3882339F182E390E011 |
:1004600077D35C0180917F00482F55272091810030 |
:10047000309182004217530710F48F5F04C0241795 |
:10048000350718F4815080937F0080917F00909110 |
:100490006200893728F0915090936200AB9A05C0B2 |
:1004A0009F3F19F09F5F90936200C7015AD3882342 |
:1004B00019F18AE090E04CD37C01209172003091D8 |
:1004C0007300C901880F991F880F991F820F931F0E |
:1004D000820F931F66E070E098D77093710060936D |
:1004E0007000109273001092720080919A0088231D |
:1004F00019F481E080936100C60133D3882321F091 |
:100500008CED95E025D36C01CE012BD3882331F0FF |
:100510008091700090917100892B29F08091740076 |
:10052000882309F444CF11E0109363001092A300D4 |
:10053000439884E690E00CD3EC018091740088230A |
:1005400009F435CFAB98109274008AE0BDDD979A1C |
:10055000109263008091A50081508093A50081E0F6 |
:1005600090E0909384008093830078DD88B18C7F45 |
:1005700088B91093A30088B18A6088B984E690E0B6 |
:10058000E7D2EC01CE01EDD28823E1F38AE090E0DE |
:10059000909384008093830061DD88EC90E0D8D252 |
:1005A000EC01CE01DED28823E1F382E390E0D0D2E9 |
:1005B0007C0107E0FCCE1F920F920FB60F92112420 |
:1005C0000F900FBE0F901F9018955E9B24C08091D6 |
:1005D00067008823E1F480918F009091900001964C |
:1005E0009093900080938F00FC01E955FD4FE081CE |
:1005F000ED3019F08436910539F410929000109284 |
:100600008F0081E080936700589AECB908951092AA |
:10061000900010928F0008951F93CF93DF93EC0109 |
:1006200010E0662309F460C0A22FBB271297E42FC5 |
:10063000FF27E35FFC4F30813D534F5FE42FFF27DF |
:10064000E35FFC4F50815D534F5FE42FFF27E35F73 |
:10065000FC4F70817D534F5FE42FFF27E35FFC4F1A |
:10066000E081ED534F5F842F9927A817B907E4F174 |
:10067000832F9927880F991F880F991F352F32953F |
:100680003F70382B852F99278F70907054E0880F1A |
:10069000991F5A95E1F7572F56955695582B872F46 |
:1006A00099278370907026E0880F991F2A95E1F7AB |
:1006B0008E2B61506F3FC1F0FE01E10FF11D3083C1 |
:1006C0001F5F61506F3F81F0FE01E10FF11D50830C |
:1006D0001F5F61506F3F41F0FE01E10FF11D80830C |
:1006E0001F5F662309F0A3CFDF91CF911F9108957B |
:1006F000CF93C82F8A3011F48DE0FADF5D9BFECFD7 |
:10070000CCB980E090E0CF9108951F920F920FB680 |
:100710000F9211242F933F934F935F936F937F9387 |
:100720008F939F93AF93BF93CF93DF93EF93FF93F9 |
:100730008CB180938D0040919500443610F010925A |
:10074000960050918D005D3009F064C08091960054 |
:10075000823009F05FC010929600A42FBB27A35FE0 |
:10076000BC4FFD0132978081209191003091920021 |
:10077000281B3109ED0121978881281B3109C90106 |
:100780009F70909392008093910066E09695879574 |
:100790006A95E1F7982F935C909393002F733070D4 |
:1007A000235C209394008081981709F082C088818F |
:1007B000281709F07EC0409387005C9380910F0357 |
:1007C000823549F488E190E02CE00FB6F894A895C2 |
:1007D00081BD0FBE21BD80910F038ADF80910F0381 |
:1007E000843709F066C02091870043E064E088E820 |
:1007F00090E012DF80916000E82FFF27E957FF4F5C |
:10080000808180938E0084EF91E090937A008093B2 |
:1008100079004FC020919600822F99278130910551 |
:10082000F9F0823091051CF4892B21F040C0029729 |
:1008300011F13DC080918D00833239F480918C009C |
:10084000882319F481E08093960080918D00809335 |
:100850000D0381E08093950080918D00992722C03F |
:100860002F5F20939600E42FFF27E35FFC4F8091DA |
:100870008D00808309C0E42FFF27E35FFC4F809148 |
:100880008D008083443620F44F5F4093950002C072 |
:100890001092960020918D0080919100909192008D |
:1008A000820F911D909392008093910002C010924C |
:1008B0009600FF91EF91DF91CF91BF91AF919F9102 |
:1008C0008F917F916F915F914F913F912F910F90F9 |
:1008D0000FBE0F901F901895AC01A0E0B0E09D01F5 |
:1008E000A817B90748F4E7EAF2E08191280F311D13 |
:1008F0001196A417B507C8F33F70FD01E955FD4FE8 |
:10090000C90176E0969587957A95E1F7835C8083B7 |
:100910001196FD01E955FD4F2F733070822F835CD6 |
:100920008083A855BD4F8DE08C9310926700809115 |
:10093000A7028CB908951F93CF93DF93382FEA0154 |
:10094000722F10E083E28093A7026093A802309395 |
:10095000A902A3E0B0E0772309F458C0772311F48B |
:10096000972F07C0FE01E10FF11D1F5F90817150AD |
:1009700011F4472F0EC0FE01E10FF11D1F5F4081F2 |
:10098000715039F0FE01E10FF11D1F5F6081715060 |
:1009900001C0672FFD01E955FD4F892F869586958A |
:1009A000835C80831196FD01E955FD4F892F9927BE |
:1009B0008370907024E0880F991F2A95E1F75527DE |
:1009C0009A0194E0369527959A95E1F7822B835CFE |
:1009D00080831196FD01E955FD4F4F705070440F13 |
:1009E000551F440F551F862F992726E0969587950A |
:1009F0002A95E1F7842B835C80831196FD01E955EC |
:100A0000FD4F6F73635C60831196A5CFCD0164DFEA |
:100A1000DF91CF911F910895089588E18AB9599A7D |
:100A2000579A80E189B960E070E088E793E084D369 |
:100A300088EC90E08DD090930C0380930B038AE0B8 |
:100A400057DE82E455DE8CE453DE8AE351DE86E530 |
:100A50004FDE80E34DDE8EE24BDE83E349DE82E350 |
:100A600047DE8AE045DE81E443DE84E441DE82E560 |
:100A70003FDE8AE33DDE80916000805D39DE0895CF |
:100A800080910B0390910C036CD0882391F080919E |
:100A90006700882371F022E241E753E06091A602EB |
:100AA00084E449DF82E390E053D090930C03809379 |
:100AB0000B0308951F920F920FB60F9211248F937C |
:100AC0009F93809193038F5F80939303809199000C |
:100AD0008150809399008F3F59F583E0809399006E |
:100AE0008091970090919800019690939800809340 |
:100AF000970080917B0090917C00009729F00197EE |
:100B000090937C0080937B0080919A00882329F049 |
:100B100080919A00815080939A0080917900909101 |
:100B20007A00009729F0019790937A0080937900DA |
:100B30009F918F910F900FBE0F901F90189582E09C |
:100B400083BF89B7816089BF89B7806489BF0895F1 |
:100B50002091970030919800280F391FC901019703 |
:100B600008952091970030919800821B930B892F54 |
:100B70009927807899270895CF93DF93E9DFEC01D7 |
:100B8000CE01EFDF8823E1F3DF91CF91089586EA6C |
:100B900086B987E087B9369A089527B196E097B964 |
:100BA00010BE83ED86B9349A97B9369A349BFECF3E |
:100BB00027B944B155B1440F551F440F551F493C47 |
:100BC000510510F048EC50E02091810030918200F6 |
:100BD000C90163E0880F991F6A95E1F7821B930BA7 |
:100BE000840F951F23E0969587952A95E1F79093BA |
:100BF00082008093810020918000332728173907D5 |
:100C000020F4809181008093800016B888E080BF36 |
:100C100008958EB5806C8EBD8EB580648EBD89B70B |
:100C2000806289BF89B7846089BF08951F920F923F |
:100C30000FB60F9211248F9380919B008F5F80934A |
:100C40009B008F910F900FBE0F901F9018951F92D1 |
:100C50000F920FB60F9211242F933F938F939F9370 |
:100C60000EB406FE0FC010929B0086B597B5909308 |
:100C70009F0080939E008EB58F7B8EBD84E680930F |
:100C80009A0070C08EB580648EBD26B537B5809150 |
:100C90009E0090919F00281B390B80919B00992703 |
:100CA000982F8827990F280F391F689414F83695C4 |
:100CB00027951694E1F73093A1002093A0002851C6 |
:100CC000314030F488E191E09093A1008093A0003E |
:100CD0002091A0003091A100285131403093A10013 |
:100CE0002093A00080919C0090919D008217930713 |
:100CF00030F480919C0090919D0001960CC08091F1 |
:100D00009C0090919D002817390748F480919C0021 |
:100D100090919D00019790939D0080939C0020915D |
:100D20009C0030919D00C901880F991F880F991F61 |
:100D3000880F991F821B930B2091A0003091A10076 |
:100D4000820F931F23E0969587952A95E1F790935C |
:100D5000A1008093A00090939D0080939C0081E06F |
:100D6000809361009F918F913F912F910F900FBEC3 |
:100D70000F901F9018951F920F920FB60F9211248B |
:100D80008F938AB78F7B8ABF8F910F900FBE0F9082 |
:100D90001F90189590916000990F980F92B985EC6B |
:100DA00086BF08951F920F920FB60F9211248F9352 |
:100DB0009F9381B19927887F907080389105E9F0E1 |
:100DC0008138910534F40097B1F18036910579F0BE |
:100DD00035C0883B9105D9F0893B910524F4883AC8 |
:100DE0009105A9F02BC0883F910511F127C086B766 |
:100DF000806886BF1092A20023C083B180939403C1 |
:100E000084EF91E090937C0080937B000EC09091E2 |
:100E1000A200992339F480917F0083B99F5F90935A |
:100E2000A20003C08091620083B986B7806807C0C2 |
:100E300086B7806986BF86B7806986BF85EC86BF26 |
:100E40009F918F910F900FBE0F901F9018951F923A |
:100E50000F920FB60F9211240F900FBE0F901F909C |
:100E600018951F920F920FB60F9211241F932F9374 |
:100E70003F934F935F936F937F938F939F93AF9322 |
:100E8000BF93CF93EF93FF93459B02C011E001C046 |
:100E900010E08091A50099278230910509F450C097 |
:100EA000833091052CF4009779F0019739F1BFC098 |
:100EB0008430910509F478C0843091050CF45AC04F |
:100EC000059709F48BC0B3C082EA8FBD81E685BD6A |
:100ED00088E087BB112369F082B3877E82BB959A35 |
:100EE000C1E0C4BD80916100811157DE4098C7B94F |
:100EF0001BC082B3877D82BB949A99C082B3877EE0 |
:100F000082BB959A1123B1F482EA8FBD81E485BD3D |
:100F10008CE087BB81E084BD8091610081113DDE62 |
:100F200017B988B1836088B98091A5008F5F8093DD |
:100F3000A5006DC082EA8FBD81E685BD88E076C0E0 |
:100F400082EA8FBD81E485BD8CE087BB112369F007 |
:100F500082B38F7C82BB939A81E084BD80916100D3 |
:100F600081111BDE82E087B932C082B3877E82BBEB |
:100F7000959A5DC082B38F7C82BB939A112371F4E2 |
:100F800082EA8FBD81E485BD8AE087BBC1E0C4BD34 |
:100F900080916100811101DEC7B9C3CF82EA8FBDA4 |
:100FA00081E485BD8CE042C082EA8FBD81E485BDCD |
:100FB0008AE087BB112369F082B3877D82BB949A54 |
:100FC00081E084BD809161008111E7DD17B8409810 |
:100FD000ABCF82B38F7C82BB939A29C082B3877DCB |
:100FE00082BB949A1123E9F482EA8FBD81E685BD24 |
:100FF00088E087BB81E084BD809161008111CDDDF7 |
:1010000082E087B988B1836088B91093A500809188 |
:101010007200909173000196909373008093720018 |
:1010200006C082EA8FBD81E485BD8AE087BB459911 |
:1010300003C0112309F028CF459B03C0112309F4F5 |
:1010400023CF10926100FF91EF91CF91BF91AF91AB |
:101050009F918F917F916F915F914F913F912F91D0 |
:101060001F910F900FBE0F901F9018958091A500B3 |
:1010700099278230910551F1833091052CF4009726 |
:1010800069F00197B9F0089584309105E1F1843059 |
:1010900091055CF1059709F443C0089582EA8FBD7C |
:1010A00081E685BD88E087BB82B3877D82BB949A49 |
:1010B00082E034C082EA8FBD81E685BD88E087BBCF |
:1010C00082B3877E82BB959A81E01AC082EA8FBD87 |
:1010D00081E485BD8CE087BB82B3877E82BB959A15 |
:1010E00017B888B1836088B9089582EA8FBD81E41A |
:1010F00085BD8CE087BB82B38F7C82BB939A82E0F4 |
:1011000087B94098089582EA8FBD81E485BD8AE061 |
:1011100087BB82B38F7C82BB939A81E087B9E1CF92 |
:1011200082EA8FBD81E485BD8AE087BB82B3877D7B |
:1011300082BB949A17B8E5CF0F931F93CF93DF9399 |
:101140008C01EB01009711F4672BB9F16EE070E0B0 |
:1011500081E090E037D0FC01892B71F180E8838336 |
:10116000209771F0D387C28781E8838380919503AC |
:1011700090919603892B21F4F0939603E0939503C5 |
:1011800001151105C9F0118700878381826083836F |
:101190008091970390919803892B71F4F0939803B1 |
:1011A000E09397038091990390919A03892B21F4FE |
:1011B000F0939A03E0939903CF01DF91CF911F91B0 |
:1011C0000F9108950F931F93CF93DF93869F800114 |
:1011D000879F100D969F100D1124C8010DD0EC01B2 |
:1011E000009721F0A80160E070E0FCD0CE01DF9113 |
:1011F000CF911F910F910895CF93DF93AC01029788 |
:1012000010F442E050E020E030E0A0919D03B09166 |
:101210009E03BD01F901109709F44CC08D919C917A |
:1012200011978417950731F14817590738F421159C |
:10123000310519F08217930708F49C01FD01A28182 |
:10124000B381109759F721153105A1F1C901841B0C |
:10125000950B049708F4A901DB01E0E0F0E010979A |
:1012600049F18D919C91119782179307F9F44217D8 |
:10127000530779F4ED018A819B81309719F09383AC |
:10128000828304C090939E0380939D03CD010296B8 |
:101290004AC0241B350BFD01E20FF31F419351930C |
:1012A000225030402D933C93CF013DC0FD01A281DF |
:1012B000B381D5CF80919B0390919C03892B41F4FE |
:1012C00080916B0090916C0090939C0380939B03A2 |
:1012D000E0916900F0916A00309741F4EDB7FEB7F4 |
:1012E00080916D0090916E00E81BF90BA0919B031B |
:1012F000B0919C039F012A1B3B0B2417350788F0F4 |
:10130000CA0102962817390760F0CD01840F951F96 |
:10131000029690939C0380939B034D935D93CD0124 |
:1013200002C080E090E0DF91CF910895CF93DF93EA |
:10133000009709F454C0DC011297ED011B821A8258 |
:1013400080919D0390919E03009721F1FC0140E064 |
:1013500050E0EA17FB0718F1ED01FB83EA832D91BA |
:101360003C911197C20FD31FCE0102968E179F0793 |
:1013700071F48A819B81280F391F2E5F3F4F119690 |
:101380003C932E9382819381FD0193838283411547 |
:10139000510559F4B0939E03A0939D0320C0AF0163 |
:1013A0000280F381E02D3097A1F6EA01BB83AA8386 |
:1013B000CA01029628813981820F931F8A179B07E1 |
:1013C00071F48D919C911197280F391F2E5F3F4F1B |
:1013D00039832883FD01828193819B838A83DF91F6 |
:1013E000CF910895DC0101C06D9341505040E0F76A |
:1013F0000895991B79E004C0991F961708F0961B71 |
:10140000881F7A95C9F780950895AA1BBB1B51E1E7 |
:1014100007C0AA1FBB1FA617B70710F0A61BB70B64 |
:10142000881F991F5A95A9F780959095BC01CD0109 |
:101430000895A1E21A2EAA1BBB1BFD010DC0AA1F15 |
:10144000BB1FEE1FFF1FA217B307E407F50720F02D |
:10145000A21BB30BE40BF50B661F771F881F991FA8 |
:101460001A9469F760957095809590959B01AC01F1 |
:06147000BD01CF0108954B |
:101476000101FF01010A00016400009F0320000032 |
:00000001FF |
/trunk/Hex-Files/BL-Ctrl_V1_0/Test_Schub_BrushLess-Ctrl_V0_32.hex |
---|
0,0 → 1,333 |
:1000000012C0D3C62AC029C03CC73BC626C025C0E3 |
:1000100027C66AC522C093C320C0E7C21EC01DC048 |
:100020003AC7DAC61AC011241FBECFE5D4E0DEBF3E |
:10003000CDBF10E0A0E6B0E0EAEAF4E102C005902E |
:100040000D92A037B107D9F713E0A0E7B0E001C0E7 |
:100050001D92AF39B107E1F731C1D2CF20918300B2 |
:1000600080916200821710F4282FAB9A8091810052 |
:1000700090918200893C910560F01BBC1ABC19BCB0 |
:1000800018BC13BCAB9A01979093820080938100B7 |
:100090000895822F9927880F991F9BBD8ABD99BD0E |
:1000A00088BD23BD089582E08FBD81E485BD85B301 |
:1000B000817F85BB89E08EBD089592B7980F82B786 |
:1000C000891B87FDFCCF0895AF92BF92CF92DF923C |
:1000D000EF92FF920F931F93CF93DF93182F8CE231 |
:1000E000A82E81E0B82EC12CD12C1092A3004398E9 |
:1000F00085E090E09093840080938300AFDFD0D7B9 |
:1001000088EC90E053D5C12FDD27D0938400C093B5 |
:100110008300EE24FF248701EA14FB040C051D056F |
:1001200078F480916700882311F469D201C0C2D4A9 |
:1001300084E6C3DF0894E11CF11C011D111DECCF06 |
:10014000C601B5012FE030E040E050E08CD9A21AA2 |
:10015000B30AC40AD50A0894A108B108C108D10895 |
:1001600089E1A816B104C104D104C8F099D78091DF |
:10017000A5008F5F8093A5008091A50066E053D90C |
:100180009093A50024D5D0938400C093830066DFAC |
:10019000449BBFCF82B390E8892782BBBACFDF915F |
:1001A000CF911F910F91FF90EF90DF90CF90BF9074 |
:1001B000AF90089580917B0090917C00892B09F08D |
:1001C00043C04091790050917A004115510571F07A |
:1001D00090918E008FEF989FC001112468EC70E021 |
:1001E0002ED9709386006093850036C080919A0066 |
:1001F000882341F120919C0030919D0081E02D32B7 |
:10020000380708F09A01293C310510F028EC30E05D |
:100210002B30310528F450938600409385001BC095 |
:100220008CEF90E0289FA001299F500D389F500D22 |
:100230001124CA01885D994064EB70E000D9CB01BC |
:10024000039605C0AB9A08C08091940399279093B8 |
:10025000860080938500AB98809185009091860000 |
:100260008F3F910539F030F08FEF90E0909386004A |
:100270008093850080918500992708958091810061 |
:1002800090918200909384038093830380917F00F8 |
:1002900099279093860380938503809170009091B5 |
:1002A0007100909388038093870380919C009091C4 |
:1002B0009D0090938A03809389030895CFE5D4E04D |
:1002C000DEBFCDBFCC2488E084BB85BB8AEB81BB7D |
:1002D00080E882BB8EE087BB81E388BB88B3806CFB |
:1002E00088BBB69B06C0B79B02C081E007C082E016 |
:1002F00005C0B79B02C083E001C084E0809360002A |
:10030000A6D337D47894C0E0D0E0809160009927DC |
:10031000C817D90709F4979A86E990E047D49798C7 |
:100320008AEF90E043D42196C530D10574F3C5E03F |
:10033000D0E084EF91E03AD4B6DE80E545D583D4B1 |
:1003400085E690E01FD486E690E01CD487E690E036 |
:1003500019D48C018EEF90E015D44C018DEE93E012 |
:1003600011D47C018EEE93E00DD45C01C80113D44E |
:100370008823E1F3979A10928400109283006EDE36 |
:1003800088E080BF81E087B98AE090E0FBD38C01F0 |
:1003900081E090E0909386038093850310929D0006 |
:1003A00010929C008091A5008C1551F01092630072 |
:1003B0001092640082E390E0E5D38C01C090A50028 |
:1003C0008091830090918400892BC9F4109274006D |
:1003D00010926400C301DFD38823E1F01092A300E0 |
:1003E000439881E08093630082B3877C82BB82E084 |
:1003F0008FBD81E485BD85B3817F85BB0BC08091B6 |
:100400006300882319F081E0809374008CED95E0FF |
:10041000B9D33C0123DE809164008F5F8093640038 |
:10042000813009F0BFCF809163008111979AC40198 |
:10043000B2D3882339F182E390E0A4D34C018091B8 |
:100440007F00482F5527209181003091820042176C |
:10045000530710F48F5F04C02417350718F4815038 |
:1004600080937F0080917F0090916200893728F00F |
:10047000915090936200AB9A05C09F3F19F09F5F27 |
:1004800090936200C70187D3882319F18AE090E036 |
:1004900079D37C012091720030917300C901880FDB |
:1004A000991F880F991F820F931F820F931F66E079 |
:1004B00070E0C5D770937100609370001092730064 |
:1004C0001092720080919A00882319F481E0809341 |
:1004D0006100C50160D3882379F18CED95E052D39A |
:1004E0005C01C230D105A9F0C330D10534F42097A6 |
:1004F00051F0C130D10551F01DC0C330D10561F0BC |
:10050000249791F017C082E390E008C082E890E061 |
:1005100005C08CE390E002C08CE890E090938400EA |
:1005200080938300219608C086E990E09093840030 |
:1005300080938300C0E0D0E0C8012DD3882331F040 |
:100540008091700090917100892B29F08091740046 |
:10055000882309F427CF21E0D22ED0926300109295 |
:10056000A300439884E690E00DD38C018091740041 |
:10057000882309F417CFAB98109274008AE0A4DDA9 |
:10058000979A109263008091A50081508093A500F6 |
:1005900081E090E090938400809383005FDD88B1D8 |
:1005A0008C7F88B9D092A30088B18A6088B984E62C |
:1005B00090E0E8D28C01C801EED28823E1F38AE012 |
:1005C00090E0909384008093830048DD88EC90E075 |
:1005D000D9D28C01C801DFD28823E1F382E390E015 |
:1005E000D1D27C0197E0C92EDDCE1F920F920FB6BB |
:1005F0000F9211240F900FBE0F901F9018955E9BC5 |
:1006000024C0809167008823E1F480918F0090914D |
:10061000900001969093900080938F00FC01E95523 |
:10062000FD4FE081ED3019F08436910539F41092D8 |
:10063000900010928F0081E080936700589AECB987 |
:1006400008951092900010928F0008951F93CF93F9 |
:10065000DF93EC0110E0662309F460C0A22FBB27F2 |
:100660001297E42FFF27E35FFC4F30813D534F5F2C |
:10067000E42FFF27E35FFC4F50815D534F5FE42F72 |
:10068000FF27E35FFC4F70817D534F5FE42FFF270F |
:10069000E35FFC4FE081ED534F5F842F9927A8174C |
:1006A000B907E4F1832F9927880F991F880F991FA5 |
:1006B000352F32953F70382B852F99278F7090708A |
:1006C00054E0880F991F5A95E1F7572F5695569584 |
:1006D000582B872F99278370907026E0880F991FD9 |
:1006E0002A95E1F78E2B61506F3FC1F0FE01E10FBB |
:1006F000F11D30831F5F61506F3F81F0FE01E10FFC |
:10070000F11D50831F5F61506F3F41F0FE01E10F0B |
:10071000F11D80831F5F662309F0A3CFDF91CF9186 |
:100720001F910895CF93C82F8A3011F48DE0FADF1E |
:100730005D9BFECFCCB980E090E0CF9108951F92F1 |
:100740000F920FB60F9211242F933F934F935F9305 |
:100750006F937F938F939F93AF93BF93CF93DF93C9 |
:10076000EF93FF938CB180938D00409195004436B8 |
:1007700010F01092960050918D005D3009F064C029 |
:1007800080919600823009F05FC010929600A42FED |
:10079000BB27A35FBC4FFD01329780812091910060 |
:1007A00030919200281B3109ED0121978881281B87 |
:1007B0003109C9019F70909392008093910066E087 |
:1007C000969587956A95E1F7982F935C909393009F |
:1007D0002F733070235C209394008081981709F068 |
:1007E00082C08881281709F07EC0409387005C93FF |
:1007F00080910F03823549F488E190E02CE00FB638 |
:10080000F894A89581BD0FBE21BD80910F038ADFAA |
:1008100080910F03843709F066C02091870043E080 |
:1008200064E088E890E012DF80916000E82FFF2705 |
:10083000E957FF4F808180938E0084EF91E0909381 |
:100840007A00809379004FC020919600822F9927DB |
:1008500081309105F9F0823091051CF4892B21F04B |
:1008600040C0029711F13DC080918D00833239F470 |
:1008700080918C00882319F481E080939600809108 |
:100880008D0080930D0381E08093950080918D0011 |
:10089000992722C02F5F20939600E42FFF27E35F64 |
:1008A000FC4F80918D00808309C0E42FFF27E35F18 |
:1008B000FC4F80918D008083443620F44F5F40933D |
:1008C000950002C01092960020918D0080919100B9 |
:1008D00090919200820F911D9093920080939100CD |
:1008E00002C010929600FF91EF91DF91CF91BF91DE |
:1008F000AF919F918F917F916F915F914F913F91B8 |
:100900002F910F900FBE0F901F901895AC01A0E093 |
:10091000B0E09D01A817B90748F4E7EAF2E0819139 |
:10092000280F311D1196A417B507C8F33F70FD01BC |
:10093000E955FD4FC90176E0969587957A95E1F7DF |
:10094000835C80831196FD01E955FD4F2F73307054 |
:10095000822F835C8083A855BD4F8DE08C931092CD |
:1009600067008091A7028CB908951F93CF93DF93FE |
:10097000382FEA01722F10E083E28093A702609380 |
:10098000A8023093A902A3E0B0E0772309F458C08D |
:10099000772311F4972F07C0FE01E10FF11D1F5FB0 |
:1009A0009081715011F4472F0EC0FE01E10FF11D2F |
:1009B0001F5F4081715039F0FE01E10FF11D1F5F93 |
:1009C0006081715001C0672FFD01E955FD4F892FEE |
:1009D00086958695835C80831196FD01E955FD4FD0 |
:1009E000892F99278370907024E0880F991F2A958A |
:1009F000E1F755279A0194E0369527959A95E1F706 |
:100A0000822B835C80831196FD01E955FD4F4F7069 |
:100A10005070440F551F440F551F862F992726E00D |
:100A2000969587952A95E1F7842B835C80831196B0 |
:100A3000FD01E955FD4F6F73635C60831196A5CF8F |
:100A4000CD0164DFDF91CF911F910895089588E172 |
:100A50008AB9599A579A80E189B960E070E082E9D1 |
:100A600093E084D388EC90E08DD090930C03809336 |
:100A70000B038AE057DE82E455DE8CE453DE8AE322 |
:100A800051DE86E54FDE80E34DDE8EE24BDE83E312 |
:100A900049DE82E347DE8AE045DE81E443DE84E42A |
:100AA00041DE82E53FDE8AE33DDE80916000805DCD |
:100AB00039DE089580910B0390910C036CD088234C |
:100AC00091F080916700882371F022E241E753E0C2 |
:100AD0006091A60284E449DF82E390E053D09093D2 |
:100AE0000C0380930B0308951F920F920FB60F9281 |
:100AF00011248F939F93809193038F5F809393032F |
:100B0000809199008150809399008F3F59F583E03F |
:100B1000809399008091970090919800019690930E |
:100B200098008093970080917B0090917C000097C3 |
:100B300029F0019790937C0080937B0080919A002C |
:100B4000882329F080919A00815080939A008091A7 |
:100B5000790090917A00009729F0019790937A009C |
:100B6000809379009F918F910F900FBE0F901F90EF |
:100B7000189582E083BF89B7816089BF89B7806497 |
:100B800089BF08952091970030919800280F391F50 |
:100B9000C901019708952091970030919800821B18 |
:100BA000930B892F9927807899270895CF93DF9306 |
:100BB000E9DFEC01CE01EFDF8823E1F3DF91CF9194 |
:100BC000089586EA86B987E087B9369A089527B1ED |
:100BD00096E097B910BE83ED86B9349A97B9369AE4 |
:100BE000349BFECF27B944B155B1440F551F440F74 |
:100BF000551F493C510510F048EC50E02091810010 |
:100C000030918200C90163E0880F991F6A95E1F76E |
:100C1000821B930B840F951F23E0969587952A9549 |
:100C2000E1F7909382008093810020918000332728 |
:100C30002817390720F4809181008093800016B82E |
:100C400088E080BF08958EB5806C8EBD8EB58064BF |
:100C50008EBD89B7806289BF89B7846089BF0895D6 |
:100C60001F920F920FB60F9211248F9380919B00C9 |
:100C70008F5F80939B008F910F900FBE0F901F90FE |
:100C800018951F920F920FB60F9211242F933F9336 |
:100C90008F939F930EB406FE0FC010929B0086B5F3 |
:100CA00097B590939F0080939E008EB58F7B8EBDED |
:100CB00084E680939A0070C08EB580648EBD26B5A0 |
:100CC00037B580919E0090919F00281B390B809131 |
:100CD0009B009927982F8827990F280F391F689410 |
:100CE00014F8369527951694E1F73093A1002093D8 |
:100CF000A0002851314030F488E191E09093A100A8 |
:100D00008093A0002091A0003091A1002851314093 |
:100D10003093A1002093A00080919C0090919D00B1 |
:100D20008217930730F480919C0090919D0001966A |
:100D30000CC080919C0090919D002817390748F4C1 |
:100D400080919C0090919D00019790939D008093CD |
:100D50009C0020919C0030919D00C901880F991F33 |
:100D6000880F991F880F991F821B930B2091A00059 |
:100D70003091A100820F931F23E0969587952A95C5 |
:100D8000E1F79093A1008093A00090939D00809341 |
:100D90009C0081E0809361009F918F913F912F9102 |
:100DA0000F900FBE0F901F9018951F920F920FB6C5 |
:100DB0000F9211248F938AB78F7B8ABF8F910F90E8 |
:100DC0000FBE0F901F90189590916000990F980F8B |
:100DD00092B985EC86BF08951F920F920FB60F92BD |
:100DE00011248F939F9381B19927887F90708038C9 |
:100DF0009105E9F08138910534F40097B1F180361E |
:100E0000910579F035C0883B9105D9F0893B910572 |
:100E100024F4883A9105A9F02BC0883F910511F17F |
:100E200027C086B7806886BF1092A20023C083B116 |
:100E30008093940384EF91E090937C0080937B00F7 |
:100E40000EC09091A200992339F480917F0083B95C |
:100E50009F5F9093A20003C08091620083B986B720 |
:100E6000806807C086B7806986BF86B7806986BFFD |
:100E700085EC86BF9F918F910F900FBE0F901F90B2 |
:100E800018951F920F920FB60F9211240F900FBE5C |
:100E90000F901F9018951F920F920FB60F9211246A |
:100EA0001F932F933F934F935F936F937F938F93F2 |
:100EB0009F93AF93BF93CF93EF93FF93459B02C054 |
:100EC00011E001C010E08091A500992782309105C2 |
:100ED00009F450C0833091052CF4009779F0019704 |
:100EE00039F1BFC08430910509F478C08430910590 |
:100EF0000CF45AC0059709F48BC0B3C082EA8FBDC9 |
:100F000081E685BD88E087BB112369F082B3877EC7 |
:100F100082BB959AC1E0C4BD80916100811157DE0A |
:100F20004098C7B91BC082B3877D82BB949A99C091 |
:100F300082B3877E82BB959A1123B1F482EA8FBD7A |
:100F400081E485BD8CE087BB81E084BD8091610038 |
:100F500081113DDE17B988B1836088B98091A50001 |
:100F60008F5F8093A5006DC082EA8FBD81E685BD4D |
:100F700088E076C082EA8FBD81E485BD8CE087BBC6 |
:100F8000112369F082B38F7C82BB939A81E084BD88 |
:100F90008091610081111BDE82E087B932C082B38B |
:100FA000877E82BB959A5DC082B38F7C82BB939A09 |
:100FB000112371F482EA8FBD81E485BD8AE087BB8D |
:100FC000C1E0C4BD80916100811101DEC7B9C3CF0A |
:100FD00082EA8FBD81E485BD8CE042C082EA8FBD8C |
:100FE00081E485BD8AE087BB112369F082B3877DE8 |
:100FF00082BB949A81E084BD809161008111E7DD1C |
:1010000017B84098ABCF82B38F7C82BB939A29C02C |
:1010100082B3877D82BB949A1123E9F482EA8FBD63 |
:1010200081E685BD88E087BB81E084BD8091610059 |
:101030008111CDDD82E087B988B1836088B91093D2 |
:10104000A5008091720090917300019690937300B7 |
:101050008093720006C082EA8FBD81E485BD8AE07C |
:1010600087BB459903C0112309F028CF459B03C0D6 |
:10107000112309F423CF10926100FF91EF91CF91DA |
:10108000BF91AF919F918F917F916F915F914F91A0 |
:101090003F912F911F910F900FBE0F901F901895A9 |
:1010A0008091A50099278230910551F183309105F7 |
:1010B0002CF4009769F00197B9F0089584309105F8 |
:1010C000E1F1843091055CF1059709F443C008957E |
:1010D00082EA8FBD81E685BD88E087BB82B3877DCC |
:1010E00082BB949A82E034C082EA8FBD81E685BDDE |
:1010F00088E087BB82B3877E82BB959A81E01AC065 |
:1011000082EA8FBD81E485BD8CE087BB82B3877E98 |
:1011100082BB959A17B888B1836088B9089582EA2E |
:101120008FBD81E485BD8CE087BB82B38F7C82BBA1 |
:10113000939A82E087B94098089582EA8FBD81E44E |
:1011400085BD8AE087BB82B38F7C82BB939A81E0A6 |
:1011500087B9E1CF82EA8FBD81E485BD8AE087BB94 |
:1011600082B3877D82BB949A17B8E5CF0F931F9304 |
:10117000CF93DF938C01EB01009711F4672BB9F14A |
:101180006EE070E081E090E037D0FC01892B71F1D6 |
:1011900080E88383209771F0D387C28781E88383B7 |
:1011A0008091950390919603892B21F4F0939603F7 |
:1011B000E093950301151105C9F01187008783811C |
:1011C000826083838091970390919803892B71F4B7 |
:1011D000F0939803E09397038091990390919A0379 |
:1011E000892B21F4F0939A03E0939903CF01DF91C7 |
:1011F000CF911F910F9108950F931F93CF93DF937A |
:10120000869F8001879F100D969F100D1124C801A5 |
:101210000DD0EC01009721F0A80160E070E0FCD057 |
:10122000CE01DF91CF911F910F910895CF93DF935E |
:10123000AC01029710F442E050E020E030E0A091D1 |
:101240009D03B0919E03BD01F901109709F44CC0B4 |
:101250008D919C9111978417950731F14817590783 |
:1012600038F42115310519F08217930708F49C0111 |
:10127000FD01A281B381109759F721153105A1F124 |
:10128000C901841B950B049708F4A901DB01E0E078 |
:10129000F0E0109749F18D919C9111978217930777 |
:1012A000F9F44217530779F4ED018A819B81309755 |
:1012B00019F09383828304C090939E0380939D03CF |
:1012C000CD0102964AC0241B350BFD01E20FF31F2E |
:1012D00041935193225030402D933C93CF013DC018 |
:1012E000FD01A281B381D5CF80919B0390919C0396 |
:1012F000892B41F480916B0090916C0090939C033A |
:1013000080939B03E0916900F0916A00309741F46B |
:10131000EDB7FEB780916D0090916E00E81BF90B60 |
:10132000A0919B03B0919C039F012A1B3B0B2417A8 |
:10133000350788F0CA0102962817390760F0CD01F9 |
:10134000840F951F029690939C0380939B034D936B |
:101350005D93CD0102C080E090E0DF91CF910895D0 |
:10136000CF93DF93009709F454C0DC011297ED018D |
:101370001B821A8280919D0390919E03009721F118 |
:10138000FC0140E050E0EA17FB0718F1ED01FB8398 |
:10139000EA832D913C911197C20FD31FCE01029683 |
:1013A0008E179F0771F48A819B81280F391F2E5F4A |
:1013B0003F4F11963C932E9382819381FD0193833D |
:1013C00082834115510559F4B0939E03A0939D0368 |
:1013D00020C0AF010280F381E02D3097A1F6EA0131 |
:1013E000BB83AA83CA01029628813981820F931F89 |
:1013F0008A179B0771F48D919C911197280F391FC3 |
:101400002E5F3F4F39832883FD01828193819B8327 |
:101410008A83DF91CF910895DC0101C06D93415023 |
:101420005040E0F70895991B79E004C0991F961782 |
:1014300008F0961B881F7A95C9F780950895AA1B16 |
:10144000BB1B51E107C0AA1FBB1FA617B70710F0AF |
:10145000A61BB70B881F991F5A95A9F780959095E1 |
:10146000BC01CD010895A1E21A2EAA1BBB1BFD01F0 |
:101470000DC0AA1FBB1FEE1FFF1FA217B307E40773 |
:10148000F50720F0A21BB30BE40BF50B661F771FCB |
:10149000881F991F1A9469F76095709580959095AB |
:0A14A0009B01AC01BD01CF010895CE |
:1014AA000101FF01010A00016400009F03200000FE |
:00000001FF |
/trunk/Hex-Files/BL-Ctrl_V1_1_and_V1_2/BootLoader_MEGA8_8MHZ_V0_2.hex |
---|
0,0 → 1,53 |
:101C000011241FBECFE5D4E0DEBFCDBF10E0A0E6BB |
:101C1000B0E0E0E3FFE102C005900D92A036B1070D |
:101C2000D9F710E0A0E6B0E001C01D92A23AB107DA |
:101C3000E1F714C000C008955D9BFECF8CB90895F4 |
:101C40005F9BFECF8CB1992708958DE4F5DF8BE47F |
:101C5000F3DF82E4F1DF8CE4EFDF0895CFE5D4E039 |
:101C6000DEBFCDBFE0E0F0E004917F01992481B7B1 |
:101C7000885081BF90BC80E189B9599A88E18AB9BE |
:101C800086E880BDEF01192D5F9B0BC0113029F450 |
:101C90008CB18A3A49F110E004C08CB18B3109F45F |
:101CA00011E0CE01219684369105C8F00F3F41F036 |
:101CB000002331F0E0916000F091610009950FC0C0 |
:101CC0008AE0BADF8DE0B8DF86E5B6DF80E3B4DF17 |
:101CD0008EE2B2DF82E3B0DF8AE3AEDF05C080E2EE |
:101CE0009EE40197F1F7D0CFB0DFAADF813611F47F |
:101CF00089E51CC1813461F4A3DFE82EFF24FE2CAA |
:101D0000EE249EDF9927E82AF92AF694E794E1C0A9 |
:101D1000823631F489E590DF80E08EDF80E406C111 |
:101D2000823409F070C08CDF8BDFD82E89DF082F5A |
:101D3000B2E6AB2EB0E0BB2E10E0E5010894A11C8A |
:101D4000B11C1D1510F47CDF01C08FEF88831F5F6D |
:101D5000103498F336E7931609F0C9C0063409F039 |
:101D60003CC08FEFE8168BE1F80608F033C0CD2DAC |
:101D7000A70166277727440F551F661F771F6A0143 |
:101D80007B01A2E6B0E011E08D9199272D913327D8 |
:101D9000322F2227822B932B0C01FA01109357002C |
:101DA000E89511244E5F5F4F6F4F7F4FC25061F730 |
:101DB00085E0F60180935700E89507B600FCFDCF5B |
:101DC00081E180935700E8957695679557954795FB |
:101DD0007A017FC080E030DF7CC0053409F079C033 |
:101DE000F7012D2DA2E6B0E0EEBB8F2F99278FBB18 |
:101DF0008D918DBB3196E29AE19AE199FECF215007 |
:101E000099F77F0166C08736B9F51ADF19DFC82F49 |
:101E100017DF863409F5C701AA27BB276C017D01AE |
:101E2000CC0CDD1CEE1CFF1CF60105911491802FDB |
:101E300003DF812F992700DF82E090E0A0E0B0E08F |
:101E4000C80ED91EEA1EFB1EC25071F7F694E79425 |
:101E5000D794C794760149CF853409F046CFEEBABE |
:101E60008F2D99278FBBE09A0894E11CF11C8DB34C |
:101E7000E3DEC150A1F739CF853601F596E7991613 |
:101E800041F580E090E0A0E0B0E023E0FC01209389 |
:101E90005700E89507B600FCFDCF805C9F4FAF4F21 |
:101EA000BF4F8F3F3BE1930730E0A30730E0B3071C |
:101EB00068F381E180935700E8950BC0853459F4AD |
:101EC00088E190E02CE00FB6F894A89581BD0FBE94 |
:101ED00021BD8DE02BC08035E1F38C34D1F3803708 |
:101EE00011F483E523C0843721F486E7A5DE80E082 |
:101EF0001DC0843519F4A4DE982EEBCF8B3109F484 |
:101F0000F3CE8A3A09F4F0CE863521F480E394DEEC |
:101F100082E30CC0833731F487E08EDE83E98CDE08 |
:101F20008EE104C08B3109F4E0CE8FE385DEDDCE97 |
:0400000300001C00DD |
:00000001FF |
/trunk/Hex-Files/BL-Ctrl_V1_1_and_V1_2/BrushLess-Ctrlr_MEGA8_V0_42_10A_ADDR1-4.hex |
---|
0,0 → 1,446 |
:1000000012C030CA2BC02AC0ABCA8FC927C026C0B5 |
:100010007BC98AC823C09CC621C0F0C51FC01EC0B2 |
:10002000A9CA37CA1BC011241FBECFE5D4E0DEBF6A |
:10003000CDBF10E0A0E6B0E0E2EAFBE102C005902F |
:100040000D92AE37B107D9F713E0AEE7B0E001C0CB |
:100050001D92A43AB107E1F70FD4A2CDD1CF4091C0 |
:10006000920080916300841710F4482FAB9A20917E |
:10007000900030919100293C3105C8F01BBC1ABC9E |
:1000800019BC18BC13BC82B3877C82BBAB9A80912D |
:100090009403909195030196909395038093940314 |
:1000A0002150304030939100209390000895842F88 |
:1000B00099279BBD8ABD99BD88BD43BD089508950C |
:1000C0001BBC1ABC19BC18BC13BC91E09FBD81E4D9 |
:1000D00085BD8EE087BB88B3817F88BB9EBD0895B8 |
:1000E00092B7980F82B7891B87FDFCCF0895CF93F5 |
:1000F000C82F7894C150CF3F49F0AB9A8CE291E081 |
:1001000078D8AB988CE291E074D8F4CF88EE93E085 |
:1001100070D8CF910895AF92BF92CF92DF92EF92B5 |
:10012000FF920F931F93CF93DF93C82F8CE2A82EDB |
:1001300081E0B82EC12CD12C1092B300439885E0F9 |
:1001400090E0909393008093920089DF16DB8CE21D |
:1001500091E03BD89093B8028093B70211C0A9D820 |
:1001600080919000909191008937910548F082B379 |
:10017000877C82BB1BBC1ABC19BC18BC13BD33C026 |
:100180008091B7029091B80229D8182F882339F3AB |
:10019000DD27D0939300C0939200EE24FF248701C3 |
:1001A000EA14FB040C051D0578F480917500882382 |
:1001B00011F42ED501C09ED784E692DF0894E11C8D |
:1001C000F11C011D111DECCF74D88091900090910D |
:1001D0009100CD97B0F082B3877C82BB1BBC1ABC68 |
:1001E00019BC18BC13BC81E08FBD81E485BD8EE0D5 |
:1001F00087BB88B3817F88BB8AE079DF80E090E0AD |
:1002000032C0C601B5012FE030E040E050E0A6DC8E |
:10021000A21AB30AC40AD50A0894A108B108C108F1 |
:10022000D10889E1A816B104C104D10418F481E011 |
:1002300090E019C0A2DA8091B5008F5F8093B5007D |
:100240008091B50066E06ADC9093B500E5D7D09365 |
:100250009300C093920003DF449B9FCF82B390E84A |
:10026000892782BB9ACFDF91CF911F910F91FF9089 |
:10027000EF90DF90CF90BF90AF900895CF93DF9332 |
:10028000EC0121978FEFCF3FD807B9F012D88091BA |
:10029000B9029091BA0288589F4F209190003091F6 |
:1002A00091008217930768F782B3877C82BB88B37B |
:1002B000817F88BB81E090E002C080E090E0DF9128 |
:1002C000CF91089501972FEF8F3F9207D9F780E0E4 |
:1002D00090E008959F92AF92BF92CF92DF92EF92FB |
:1002E000FF920F931F93CF93DF93CDB7DEB72D9778 |
:1002F0000FB6F894DEBF0FBECDBF5E010894A11CFF |
:10030000B11C8DE0E8E6F0E0D50101900D928A95F0 |
:10031000E1F7CC24DC2C02E3902EAB9880916100B5 |
:10032000F501E80FF11D8081282F33278CE291E041 |
:10033000289FF001299FF00D389FF00D1124CF0167 |
:1003400058D7C092B3004398F8948AE0F4D482B3AB |
:10035000877C82BB1BBC1ABC19BC18BC13BC81E0D7 |
:100360008FBD81E485BD8EE087BB88B3817F88BB6C |
:1003700010928F0082E390E081DF80918F009927B7 |
:100380009093BA028093B90210929100109290005B |
:100390008CB1803249F51FEFE12EF12EB8E29B2E91 |
:1003A0008FE5C9D425C0A4E0CA2E84E3C4D482B3A7 |
:1003B000877C82BB88B3817F88BB4EC0F5E0CF2E9F |
:1003C00085E3B9D482B3877C82BB88B3817F88BB45 |
:1003D0007AC0E6E0CE2E86E3AED482B3877C82BBC1 |
:1003E00088B3817F88BBA8C078EEE72E73E0F72E34 |
:1003F000109291001092900000E010E00E151F0581 |
:1004000058F5939A81E090E039DF82B3877C82BB14 |
:1004100088B3817F88BB85E090E054DFC39A81E098 |
:1004200090E02CDF82B3877C82BB88B3817F88BB5E |
:100430008091B9029091BA02890D911D209190008E |
:10044000309191008217930708F4ADCF85E090E0DA |
:1004500039DF0F5F1F4FD2CF80E197E233DF109279 |
:1004600091001092900000E010E00E151F0558F565 |
:10047000949A81E090E002DF82B3877C82BB88B3EC |
:10048000817F88BB85E090E01DDFC29A81E090E02B |
:10049000F5DE82B3877C82BB88B3817F88BB809185 |
:1004A000B9029091BA02890D911D2091900030916E |
:1004B00091008217930708F481CF85E090E002DF76 |
:1004C0000F5F1F4FD2CF109291001092900080E1E9 |
:1004D00097E2F8DE00E010E00E151F0558F5959A3A |
:1004E00081E090E0CBDE82B3877C82BB88B3817FE2 |
:1004F00088BB85E090E0E6DEC19A81E090E0BEDE58 |
:1005000082B3877C82BB88B3817F88BB8091B9022C |
:100510009091BA02890D911D209190003091910027 |
:100520008217930708F455CF85E090E0CBDE0F5F8C |
:100530001F4FD2CFCC2019F08C2DD9DDFDCF80916B |
:100540007E0087B982B3877C82BB88B3817F88BBFA |
:10055000949A959A109291001092900008E710E0FA |
:10056000C39A81E090E0AEDE80E08FD6C39718F0AA |
:10057000F1E0DF2A02C04EEFD42218BA8CE291E0FB |
:10058000A1DE0150104017FFEBCF82B3877C82BB06 |
:1005900088B3817F88BB939A959A04E810E0C29A49 |
:1005A00081E090E08FDE81E070D6C39718F052E0D2 |
:1005B000D52A02C08DEFD82218BA8CE291E082DEF3 |
:1005C0000150104017FFEBCF82B3877C82BB88B30A |
:1005D000817F88BB939A949A0EE610E0C19A81E0DD |
:1005E00090E070DE82E051D6C39718F0A4E0DA2ADA |
:1005F00002C0BBEFDB2218BA8AE491E063DE01504F |
:10060000104017FFEBCF82B3877C82BB88B3817F1A |
:1006100088BB939A08E710E0C29A81E090E052DE2E |
:1006200080E033D68138910518F0E7EFDE2202C072 |
:10063000F8E0DF2A18BA8AE491E044DE0150104065 |
:1006400017FFEACF959A04E810E0C29A81E090E0A3 |
:1006500039DE82E01AD68138910518F04FEDD422A8 |
:1006600002C050E2D52A18BA88E691E02BDE01508C |
:10067000104017FFEACF82B3877C82BB88B3817FAB |
:1006800088BB82B3877C82BB88B3817F88BB949A06 |
:100690000EE610E0C19A81E090E014DE81E0F5D52D |
:1006A0008138910518F08FEED82202C0A0E1DA2A35 |
:1006B00018BA88E691E006DE0150104017FFEACF35 |
:1006C00082B3877C82BB88B3817F88BB789480911A |
:1006D0006100A80EB11CF501208184E090E0821B2E |
:1006E00091092CE231E0829FA001839F500D929FDF |
:1006F000500D1124CA017DD58D2D992780FD04C090 |
:1007000061E0C62E81E41DC081FD04C052E0C52E0B |
:1007100082E417C082FD04C043E0C42E83E411C00C |
:1007200083FD04C034E0C32E81E60BC084FD04C009 |
:1007300025E0C22E82E605C085FD07C096E0C92EE1 |
:1007400083E68CB98C2DD3DCFDCF8C2DD0DC8EE2F2 |
:10075000F2D22D960FB6F894DEBF0FBECDBFDF915B |
:10076000CF911F910F91FF90EF90DF90CF90BF90AE |
:10077000AF909F90089580918A0090918B00892B73 |
:1007800009F05BC0409188005091890041155105E6 |
:1007900099F090919D008FEF989FC001112468EC13 |
:1007A00070E0C8D970939500609394001092600037 |
:1007B00089B78F7D89BF32C08091A900853180F1D2 |
:1007C00081E0809360002091AC003091AD0081E029 |
:1007D0002D32380708F09A01293C310510F028EC39 |
:1007E00030E02B30310528F450939500409394006D |
:1007F00015C08CEF90E0289FA001299F500D389FD5 |
:10080000500D1124CA01885D994064EB70E092D9C3 |
:10081000CB0103969093950080939400AB981AC0F7 |
:100820008091940090919500009729F00197909302 |
:10083000950080939400AB9A0DC0809199039927FD |
:10084000909395008093940010926000AB9889B7C4 |
:100850008F7D89BF80919400909195008F3F910585 |
:1008600039F030F08FEF90E09093950080939400F2 |
:100870008091940099270895CFE5D4E0DEBFCDBFE5 |
:10088000DD2488E084BB85BB8AE381BBD2BA8EE0DD |
:1008900087BB81E388BB88B3806C88BB83EF91E022 |
:1008A000C29797FFFDCFB69B06C0B79B02C081E001 |
:1008B00007C082E005C0B79B02C083E001C084E0AE |
:1008C000809361008BE08093B600879B06C08CE02C |
:1008D0008093B60080EC80937E008AEB81BBBFD30F |
:1008E0006BD47894EDDB80E5CCD501D585E690E03E |
:1008F0006CD486E690E069D487E690E066D4909365 |
:10090000B8028093B7028EEF90E05FD47C018DEE49 |
:1009100093E05BD48C018EEE93E057D403C02BDFC1 |
:10092000882339F48091B7029091B80257D4882374 |
:10093000B1F38091B6008C3010F4979A01C097986B |
:1009400010929300109292008ADB88E080BF81E0D1 |
:1009500087B98AE090E039D49093B8028093B702C7 |
:1009600081E090E090938B0380938A031092AD0016 |
:100970001092AC0000DF882309F4ACDC81E388BB73 |
:10098000FADE992790939300809392008091B500AE |
:100990008D1569F010926400109265008AEF90E066 |
:1009A00014D49093B8028093B702D090B500C09150 |
:1009B0009200D09193002097F9F410928300109246 |
:1009C0006500C5010BD4882311F11092B300439840 |
:1009D00091E09093640082B3877C82BBDBBDCABD8B |
:1009E000D9BDC8BD13BC9FBD81E485BD8EE087BB6A |
:1009F00088B3817F88BB0BC080916400882319F085 |
:100A000081E0809383008CED95E0DFD35C018091E1 |
:100A10006400882321F010929300109292001FDB53 |
:100A2000809165008F5F80936500813009F0A8CFC9 |
:100A30008091640081113DD4C701D0D38823A9F1EE |
:100A400082E390E0C2D37C0180918E00482F55272D |
:100A500020919000309191004217530710F48F5F5E |
:100A600004C02417350718F4815080938E00293C68 |
:100A7000310548F080916300982F92959695977074 |
:100A8000891B8093630080918E0090916300893769 |
:100A900038F0992319F0915090936300AB9A05C0F8 |
:100AA0009F3F19F09F5F90936300C80197D38823FD |
:100AB00099F08AE090E089D38C0180918100909137 |
:100AC00082009093800080937F00109282001092A9 |
:100AD000810081E0809362008091B7029091B8021A |
:100AE0007DD3882331F080917F0090918000892B05 |
:100AF00029F080918300882309F442CFC1E0C0939C |
:100B000064001092B300439884E690E05ED3909323 |
:100B1000B8028093B70280918300882309F430CF14 |
:100B2000AB9810928F00109283008AE0F4DA882349 |
:100B300009F45DC0109264008091B50081508093EB |
:100B4000B50081E090E0909393008093920087DA63 |
:100B500088B18C7F88B9C093B30088B18A6088B9A6 |
:100B600084E190E032D39093B8028093B7028091F1 |
:100B7000B7029091B80232D38823C9F38FE090E096 |
:100B800090939300809392006ADA8CE291E01DD3F7 |
:100B90009093B8028093B7021BC08091900090910F |
:100BA0009100CD97A8F082B3877C82BB1BBC1ABC96 |
:100BB00019BC18BC23BD11E01FBD81E485BD8EE0CA |
:100BC00087BB88B3817F88BB8AE091DA109383006A |
:100BD0008091B7029091B80201D3282F8823E9F2BF |
:100BE00082E390E0F2D28C0187E0D82EC9CEC3DD3B |
:100BF000882309F4C5CEC0938300C2CE1F920F9202 |
:100C00000FB60F9211240F900FBE0F901F901895E2 |
:100C10005E9B24C0809175008823E1F480919E0042 |
:100C200090919F00019690939F0080939E00FC01FD |
:100C3000E454FD4FE081ED3019F08436910539F42C |
:100C400010929F0010929E0081E080937500589A48 |
:100C5000ECB9089510929F0010929E0008951F9382 |
:100C6000CF93DF93EC0110E0662309F460C0A22F5C |
:100C7000BB271297E42FFF27EE5DFC4F30813D53D9 |
:100C80004F5FE42FFF27EE5DFC4F50815D534F5FB8 |
:100C9000E42FFF27EE5DFC4F70817D534F5FE42F03 |
:100CA000FF27EE5DFC4FE081ED534F5F842F9927C6 |
:100CB000A817B907E4F1832F9927880F991F880F88 |
:100CC000991F352F32953F70382B852F99278F70BC |
:100CD000907054E0880F991F5A95E1F7572F569559 |
:100CE0005695582B872F99278370907026E0880F90 |
:100CF000991F2A95E1F78E2B61506F3FC1F0FE01DD |
:100D0000E10FF11D30831F5F61506F3F81F0FE01E5 |
:100D1000E10FF11D50831F5F61506F3F41F0FE01F5 |
:100D2000E10FF11D80831F5F662309F0A3CFDF91E0 |
:100D3000CF911F910895CF93C82F8A3011F48DE081 |
:100D4000FADF5D9BFECFCCB980E090E0CF910895B3 |
:100D50001F920F920FB60F9211242F933F934F9330 |
:100D60005F936F937F938F939F93AF93BF93CF9333 |
:100D7000DF93EF93FF938CB180939C004091A4008C |
:100D8000443610F01092A50050919C005D3009F09F |
:100D900064C08091A500823009F05FC01092A50068 |
:100DA000A42FBB27AE5DBC4FFD01329780812091FF |
:100DB000A0003091A100281B3109ED012197888105 |
:100DC000281B3109C9019F709093A1008093A00056 |
:100DD00066E0969587956A95E1F7982F935C9093D6 |
:100DE000A2002F733070235C2093A300808198179A |
:100DF00009F082C08881281709F07EC040939600D0 |
:100E00005C9380912403823549F488E190E02CE0E2 |
:100E10000FB6F894A89581BD0FBE21BD8091240323 |
:100E20008ADF80912403843709F066C02091960000 |
:100E300043E064E087E990E012DF80916100E82FF1 |
:100E4000FF27EA56FF4F808180939D0084EF91E059 |
:100E500090938900809388004FC02091A500822F35 |
:100E6000992781309105F9F0823091051CF4892B86 |
:100E700021F040C0029711F13DC080919C00833267 |
:100E800039F480919B00882319F481E08093A500B8 |
:100E900080919C008093220381E08093A400809144 |
:100EA0009C00992722C02F5F2093A500E42FFF27E5 |
:100EB000EE5DFC4F80919C00808309C0E42FFF27EA |
:100EC000EE5DFC4F80919C008083443620F44F5FA0 |
:100ED0004093A40002C01092A50020919C00809134 |
:100EE000A0009091A100820F911D9093A10080938A |
:100EF000A00002C01092A500FF91EF91DF91CF9169 |
:100F0000BF91AF919F918F917F916F915F914F9121 |
:100F10003F912F910F900FBE0F901F901895AC012D |
:100F2000A0E0B0E09D01A817B90748F4ECEBF2E0AF |
:100F30008191280F311D1196A417B507C8F33F7092 |
:100F4000FD01E454FD4FC90176E0969587957A95A9 |
:100F5000E1F7835C80831196FD01E454FD4F2F730C |
:100F60003070822F835C8083A354BD4F8DE08C93BF |
:100F7000109275008091BC028CB908951F93CF9395 |
:100F8000DF93382FEA01722F10E083E28093BC02D6 |
:100F90006093BD023093BE02A3E0B0E0772309F472 |
:100FA00058C0772311F4972F07C0FE01E10FF11D00 |
:100FB0001F5F9081715011F4472F0EC0FE01E10FA9 |
:100FC000F11D1F5F4081715039F0FE01E10FF11DED |
:100FD0001F5F6081715001C0672FFD01E454FD4F18 |
:100FE000892F86958695835C80831196FD01E45454 |
:100FF000FD4F892F99278370907024E0880F991FE7 |
:101000002A95E1F755279A0194E0369527959A9508 |
:10101000E1F7822B835C80831196FD01E454FD4F40 |
:101020004F705070440F551F440F551F862F99273E |
:1010300026E0969587952A95E1F7842B835C80833B |
:101040001196FD01E454FD4F6F73635C608311964C |
:10105000A5CFCD0164DFDF91CF911F9108951F933C |
:1010600088E18AB9599A579A80E189B960E070E0BD |
:101070008BE996E0F3D388EC90E0A7D0909321031E |
:10108000809320038AE057DE82E455DE8CE453DE51 |
:101090008AE351DE86E54FDE80E34DDE8EE24BDEF5 |
:1010A00084E349DE82E347DE8AE045DE88E443DE0E |
:1010B00087E541DE8AE33FDE81E33DDE8EE23BDE13 |
:1010C0008091B6008A5D37DE8AE035DE81E433DE6A |
:1010D0008AE331DE1AE080916100612F1FD5805DC7 |
:1010E0002ADE80916100612F19D5892F805D23DE72 |
:1010F0001F91089580912003909121036FD0882340 |
:1011000091F080917500882371F022E146E853E068 |
:101110006091BB0284E432DF82E390E056D090938A |
:1011200021038093200308951F920F920FB60F9210 |
:1011300011248F939F93809198038F5F80939803DE |
:101140008091A80081508093A8008F3F71F583E0C3 |
:101150008093A8008091A6009091A700019690939B |
:10116000A7008093A60080918A0090918B00009741 |
:1011700029F0019790938B0080938A008091AA00B8 |
:10118000882331F08091AA0081508093AA0002C088 |
:101190008093A9008091880090918900009729F0A0 |
:1011A000019790938900809388009F918F910F9071 |
:1011B0000FBE0F901F90189582E083BF89B78160A2 |
:1011C00089BF89B7806489BF08952091A6003091B6 |
:1011D000A700280F391FC901019708952091A60083 |
:1011E0003091A700821B930B892F9927807899272C |
:1011F0000895CF93DF93E9DFEC01CE01EFDF882381 |
:10120000E1F3DF91CF91089586EA86B980917E005F |
:10121000876087B9369A089527B190917E009660CD |
:1012200097B910BE83ED86B9349A97B9369A349B34 |
:10123000FECF27B924B135B1220F331F220F331F40 |
:101240004091900050919100CA0163E0880F991F6E |
:101250006A95E1F7841B950B280F391F83E03695BB |
:1012600027958A95E1F73093910020939000809123 |
:101270008F0099278217930720F480919000809324 |
:101280008F0016B888E080BF089527B190917E0046 |
:10129000982B97B910BE83ED86B9349A97B9369AD0 |
:1012A000349BFECF27B916B888E080BF84B195B1D2 |
:1012B000089586E0EADF9C01220F331F220F331FBF |
:1012C000293C310510F028EC30E030939100209358 |
:1012D000900080918F0099278217930720F48091C6 |
:1012E000900080938F0016B888E080BF08958EB577 |
:1012F000806C8EBD8EB580648EBD89B7806289BFDB |
:1013000089B7846089BF08951F920F920FB60F921C |
:1013100011248F938091AB008F5F8093AB008F91EE |
:101320000F900FBE0F901F9018951F920F920FB63F |
:101330000F9211242F933F938F939F930EB406FE29 |
:101340000FC01092AB0086B597B59093AF00809315 |
:10135000AE008EB58F7B8EBD84E68093AA0079C0E7 |
:101360008EB580648EBD26B537B58091AE00909164 |
:10137000AF00281B390B8091AB009927982F882745 |
:10138000990F280F391F689414F8369527951694ED |
:10139000E1F73093B1002093B0002851314030F490 |
:1013A00088E191E09093B1008093B0002091B0006B |
:1013B0003091B100285131403093B1002093B000FA |
:1013C0008091AC009091AD008217930730F480912A |
:1013D000AC009091AD0001960CC08091AC00909152 |
:1013E000AD002817390748F48091AC009091AD000A |
:1013F00001979093AD008093AC002091AC003091A8 |
:10140000AD00C901880F991F880F991F880F991F78 |
:10141000821B930B2091B0003091B100820F931F7B |
:1014200023E0969587952A95E1F79093B1008093F4 |
:10143000B0009093AD008093AC008091A9008F3FE5 |
:1014400029F08091A9008F5F8093A90081E08093AB |
:1014500062009F918F913F912F910F900FBE0F903F |
:101460001F9018951F920F920FB60F9211248F9311 |
:101470008AB78F7B8ABF8F910F900FBE0F901F90FE |
:10148000189590916100990F980F92B985EC86BFDD |
:1014900008951F920F920FB60F9211242F938F93DE |
:1014A0009F9381B19927887F907080389105F1F0E2 |
:1014B000813891053CF4009709F445C080369105C8 |
:1014C00079F044C0883B910551F1893B910524F4A2 |
:1014D000883A910521F13AC0883F910589F136C0DB |
:1014E00086B7806886BF1092B20032C02091B600E5 |
:1014F0002C3010F0979A01C0979883B1809399038C |
:1015000084EF91E090938B0080938A0086B7806887 |
:1015100086BF2C3010F4979A1BC0979819C09091F1 |
:10152000B200992339F480918E0083B99F5F909324 |
:10153000B20003C08091630083B986B7806807C09A |
:1015400086B7806986BF86B7806986BF85EC86BF0F |
:101550009F918F912F910F900FBE0F901F90189514 |
:101560001F920F920FB60F9211240F900FBE0F9083 |
:101570001F9018951F920F920FB60F9211242F9360 |
:101580003F934F935F936F937F938F939F93AF930B |
:10159000BF93CF93EF93FF93459B02C0C1E001C07F |
:1015A000C0E08091B50099278230910509F451C0BF |
:1015B000833091052CF4009779F0019741F1BFC079 |
:1015C0008430910509F478C0843091050CF45AC038 |
:1015D000059709F48BC0B3C081EA8FBD81E685BD54 |
:1015E00088E087BBCC2371F082B3877E82BB959A5B |
:1015F00080916200811110DE409880917E008160B0 |
:1016000087B91BC082B3877D82BB949A98C082B38E |
:10161000877E82BB959ACC23B1F481EA8FBD81E6A7 |
:1016200085BD84E087BB809162008111F5DD8091EA |
:101630007E0087B988B1836088B98091B5008F5FDB |
:101640008093B5006CC081EA8FBD81E685BD88E0DE |
:1016500075C081EA8FBD81E685BD84E087BBCC2360 |
:1016600061F082B38F7C82BB939A8091620081117A |
:10167000D3DD80917E00826031C082B3877E82BBE1 |
:10168000959A5DC082B38F7C82BB939ACC2371F410 |
:1016900081EA8FBD81E685BD82E087BB80916200D3 |
:1016A0008111BADD80917E008160C3CF81EA8FBD58 |
:1016B00081E685BD84E042C081EA8FBD81E685BDBB |
:1016C00082E087BBCC2369F082B3877D82BB949A8A |
:1016D000809162008111A0DD80917E0087B94098E1 |
:1016E000ACCF82B38F7C82BB939A29C082B3877DB3 |
:1016F00082BB949ACC23E9F481EA8FBD81E685BD53 |
:1017000088E087BB80916200811186DD80917E0038 |
:10171000826087B988B1836088B9C093B500809131 |
:1017200081009091820001969093820080938100C5 |
:1017300006C081EA8FBD81E685BD82E087BB459901 |
:1017400003C0CC2309F028CF459B03C0CC2309F468 |
:1017500023CF10926200FF91EF91CF91BF91AF9193 |
:101760009F918F917F916F915F914F913F912F91B9 |
:101770000F900FBE0F901F9018958091B50099277C |
:101780008230910579F1833091052CF4009771F046 |
:101790000197D1F008958430910509F444C0843054 |
:1017A00091058CF1059709F44CC0089581EA8FBD2D |
:1017B00081E685BD88E087BB82B3877D82BB949A32 |
:1017C00080917E0082601AC081EA8FBD81E685BD6E |
:1017D00088E087BB82B3877E82BB959A80917E002A |
:1017E00081601EC081EA8FBD81E685BD84E087BB34 |
:1017F00082B3877E82BB959A80917E0087B988B13B |
:10180000836088B9089581EA8FBD81E685BD84E053 |
:1018100087BB82B38F7C82BB939A80917E0082606B |
:1018200087B94098089581EA8FBD81E685BD82E041 |
:1018300087BB82B38F7C82BB939A80917E0081604C |
:10184000DDCF81EA8FBD81E685BD82E087BB82B3B3 |
:10185000877D82BB949A80917E00E2CF0F931F9385 |
:10186000CF93DF938C01EB01009711F4672BB9F153 |
:101870006EE070E081E090E037D0FC01892B71F1DF |
:1018800080E88383209771F0D387C28781E88383C0 |
:1018900080919A0390919B03892B21F4F0939B03F1 |
:1018A000E0939A0301151105C9F011870087838120 |
:1018B0008260838380919C0390919D03892B71F4B6 |
:1018C000F0939D03E0939C0380919E0390919F036E |
:1018D000892B21F4F0939F03E0939E03CF01DF91C6 |
:1018E000CF911F910F9108950F931F93CF93DF9383 |
:1018F000869F8001879F100D969F100D1124C801AF |
:101900000DD0EC01009721F0A80160E070E0FFD05D |
:10191000CE01DF91CF911F910F910895CF93DF9367 |
:10192000AC01029710F442E050E020E030E0A091DA |
:10193000A203B091A303BD01F901109709F44CC0B3 |
:101940008D919C9111978417950731F1481759078C |
:1019500038F42115310519F08217930708F49C011A |
:10196000FD01A281B381109759F721153105A1F12D |
:10197000C901841B950B049708F4A901DB01E0E081 |
:10198000F0E0109749F18D919C9111978217930780 |
:10199000F9F44217530779F4ED018A819B8130975E |
:1019A00019F09383828304C09093A3038093A203CE |
:1019B000CD0102964DC0241B350BFD01E20FF31F34 |
:1019C00041935193225030402D933C93CF0140C01E |
:1019D000FD01A281B381D5CF8091A0039091A10395 |
:1019E000892B41F48091790090917A009093A10322 |
:1019F0008093A003E0917700F0917800309741F454 |
:101A0000EDB7FEB780917B0090917C00E81BF90B4D |
:101A1000A091A003B091A103AE17BF07B8F49F0136 |
:101A20002A1B3B0B2417350788F0CA01029628179A |
:101A3000390760F0CD01840F951F02969093A103A2 |
:101A40008093A0034D935D93CD0102C080E090E0B0 |
:101A5000DF91CF910895CF93DF93009709F454C09D |
:101A6000DC011297ED011B821A828091A2039091F2 |
:101A7000A303009721F1FC0140E050E0EA17FB07C7 |
:101A800018F1ED01FB83EA832D913C911197C20F70 |
:101A9000D31FCE0102968E179F0771F48A819B8116 |
:101AA000280F391F2E5F3F4F11963C932E93828152 |
:101AB0009381FD01938382834115510559F4B093BD |
:101AC000A303A093A20320C0AF010280F381E02D05 |
:101AD0003097A1F6EA01BB83AA83CA010296288146 |
:101AE0003981820F931F8A179B0771F48D919C9106 |
:101AF0001197280F391F2E5F3F4F39832883FD012F |
:101B0000828193819B838A83DF91CF910895DC0149 |
:101B100001C06D9341505040E0F70895991B79E062 |
:101B200004C0991F961708F0961B881F7A95C9F76D |
:101B300080950895AA1BBB1B51E107C0AA1FBB1FBC |
:101B4000A617B70710F0A61BB70B881F991F5A9549 |
:101B5000A9F780959095BC01CD010895A1E21A2EB8 |
:101B6000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F41 |
:101B7000A217B307E407F50720F0A21BB30BE40B91 |
:101B8000F50B661F771F881F991F1A9469F76095D8 |
:101B90007095809590959B01AC01BD01CF01089592 |
:021BA000FFCF75 |
:101BA200010101FF01010A00000002010304050610 |
:0E1BB2000708090A0B01640000A403200000CC |
:00000001FF |
/trunk/Hex-Files/BL-Ctrl_V1_1_and_V1_2/BrushLess-Ctrlr_MEGA8_V0_42_10A_ADDR5-8.hex |
---|
0,0 → 1,446 |
:1000000012C030CA2BC02AC0ABCA8FC927C026C0B5 |
:100010007BC98AC823C09CC621C0F0C51FC01EC0B2 |
:10002000A9CA37CA1BC011241FBECFE5D4E0DEBF6A |
:10003000CDBF10E0A0E6B0E0E2EAFBE102C005902F |
:100040000D92AE37B107D9F713E0AEE7B0E001C0CB |
:100050001D92A43AB107E1F70FD4A2CDD1CF4091C0 |
:10006000920080916300841710F4482FAB9A20917E |
:10007000900030919100293C3105C8F01BBC1ABC9E |
:1000800019BC18BC13BC82B3877C82BBAB9A80912D |
:100090009403909195030196909395038093940314 |
:1000A0002150304030939100209390000895842F88 |
:1000B00099279BBD8ABD99BD88BD43BD089508950C |
:1000C0001BBC1ABC19BC18BC13BC91E09FBD81E4D9 |
:1000D00085BD8EE087BB88B3817F88BB9EBD0895B8 |
:1000E00092B7980F82B7891B87FDFCCF0895CF93F5 |
:1000F000C82F7894C150CF3F49F0AB9A8CE291E081 |
:1001000078D8AB988CE291E074D8F4CF88EE93E085 |
:1001100070D8CF910895AF92BF92CF92DF92EF92B5 |
:10012000FF920F931F93CF93DF93C82F8CE2A82EDB |
:1001300081E0B82EC12CD12C1092B300439885E0F9 |
:1001400090E0909393008093920089DF16DB8CE21D |
:1001500091E03BD89093B8028093B70211C0A9D820 |
:1001600080919000909191008937910548F082B379 |
:10017000877C82BB1BBC1ABC19BC18BC13BD33C026 |
:100180008091B7029091B80229D8182F882339F3AB |
:10019000DD27D0939300C0939200EE24FF248701C3 |
:1001A000EA14FB040C051D0578F480917500882382 |
:1001B00011F42ED501C09ED784E692DF0894E11C8D |
:1001C000F11C011D111DECCF74D88091900090910D |
:1001D0009100CD97B0F082B3877C82BB1BBC1ABC68 |
:1001E00019BC18BC13BC81E08FBD81E485BD8EE0D5 |
:1001F00087BB88B3817F88BB8AE079DF80E090E0AD |
:1002000032C0C601B5012FE030E040E050E0A6DC8E |
:10021000A21AB30AC40AD50A0894A108B108C108F1 |
:10022000D10889E1A816B104C104D10418F481E011 |
:1002300090E019C0A2DA8091B5008F5F8093B5007D |
:100240008091B50066E06ADC9093B500E5D7D09365 |
:100250009300C093920003DF449B9FCF82B390E84A |
:10026000892782BB9ACFDF91CF911F910F91FF9089 |
:10027000EF90DF90CF90BF90AF900895CF93DF9332 |
:10028000EC0121978FEFCF3FD807B9F012D88091BA |
:10029000B9029091BA0288589F4F209190003091F6 |
:1002A00091008217930768F782B3877C82BB88B37B |
:1002B000817F88BB81E090E002C080E090E0DF9128 |
:1002C000CF91089501972FEF8F3F9207D9F780E0E4 |
:1002D00090E008959F92AF92BF92CF92DF92EF92FB |
:1002E000FF920F931F93CF93DF93CDB7DEB72D9778 |
:1002F0000FB6F894DEBF0FBECDBF5E010894A11CFF |
:10030000B11C8DE0E8E6F0E0D50101900D928A95F0 |
:10031000E1F7CC24DC2C02E3902EAB9880916100B5 |
:10032000F501E80FF11D8081282F33278CE291E041 |
:10033000289FF001299FF00D389FF00D1124CF0167 |
:1003400058D7C092B3004398F8948AE0F4D482B3AB |
:10035000877C82BB1BBC1ABC19BC18BC13BC81E0D7 |
:100360008FBD81E485BD8EE087BB88B3817F88BB6C |
:1003700010928F0082E390E081DF80918F009927B7 |
:100380009093BA028093B90210929100109290005B |
:100390008CB1803249F51FEFE12EF12EB8E29B2E91 |
:1003A0008FE5C9D425C0A4E0CA2E84E3C4D482B3A7 |
:1003B000877C82BB88B3817F88BB4EC0F5E0CF2E9F |
:1003C00085E3B9D482B3877C82BB88B3817F88BB45 |
:1003D0007AC0E6E0CE2E86E3AED482B3877C82BBC1 |
:1003E00088B3817F88BBA8C078EEE72E73E0F72E34 |
:1003F000109291001092900000E010E00E151F0581 |
:1004000058F5939A81E090E039DF82B3877C82BB14 |
:1004100088B3817F88BB85E090E054DFC39A81E098 |
:1004200090E02CDF82B3877C82BB88B3817F88BB5E |
:100430008091B9029091BA02890D911D209190008E |
:10044000309191008217930708F4ADCF85E090E0DA |
:1004500039DF0F5F1F4FD2CF80E197E233DF109279 |
:1004600091001092900000E010E00E151F0558F565 |
:10047000949A81E090E002DF82B3877C82BB88B3EC |
:10048000817F88BB85E090E01DDFC29A81E090E02B |
:10049000F5DE82B3877C82BB88B3817F88BB809185 |
:1004A000B9029091BA02890D911D2091900030916E |
:1004B00091008217930708F481CF85E090E002DF76 |
:1004C0000F5F1F4FD2CF109291001092900080E1E9 |
:1004D00097E2F8DE00E010E00E151F0558F5959A3A |
:1004E00081E090E0CBDE82B3877C82BB88B3817FE2 |
:1004F00088BB85E090E0E6DEC19A81E090E0BEDE58 |
:1005000082B3877C82BB88B3817F88BB8091B9022C |
:100510009091BA02890D911D209190003091910027 |
:100520008217930708F455CF85E090E0CBDE0F5F8C |
:100530001F4FD2CFCC2019F08C2DD9DDFDCF80916B |
:100540007E0087B982B3877C82BB88B3817F88BBFA |
:10055000949A959A109291001092900008E710E0FA |
:10056000C39A81E090E0AEDE80E08FD6C39718F0AA |
:10057000F1E0DF2A02C04EEFD42218BA8CE291E0FB |
:10058000A1DE0150104017FFEBCF82B3877C82BB06 |
:1005900088B3817F88BB939A959A04E810E0C29A49 |
:1005A00081E090E08FDE81E070D6C39718F052E0D2 |
:1005B000D52A02C08DEFD82218BA8CE291E082DEF3 |
:1005C0000150104017FFEBCF82B3877C82BB88B30A |
:1005D000817F88BB939A949A0EE610E0C19A81E0DD |
:1005E00090E070DE82E051D6C39718F0A4E0DA2ADA |
:1005F00002C0BBEFDB2218BA8AE491E063DE01504F |
:10060000104017FFEBCF82B3877C82BB88B3817F1A |
:1006100088BB939A08E710E0C29A81E090E052DE2E |
:1006200080E033D68138910518F0E7EFDE2202C072 |
:10063000F8E0DF2A18BA8AE491E044DE0150104065 |
:1006400017FFEACF959A04E810E0C29A81E090E0A3 |
:1006500039DE82E01AD68138910518F04FEDD422A8 |
:1006600002C050E2D52A18BA88E691E02BDE01508C |
:10067000104017FFEACF82B3877C82BB88B3817FAB |
:1006800088BB82B3877C82BB88B3817F88BB949A06 |
:100690000EE610E0C19A81E090E014DE81E0F5D52D |
:1006A0008138910518F08FEED82202C0A0E1DA2A35 |
:1006B00018BA88E691E006DE0150104017FFEACF35 |
:1006C00082B3877C82BB88B3817F88BB789480911A |
:1006D0006100A80EB11CF501208184E090E0821B2E |
:1006E00091092CE231E0829FA001839F500D929FDF |
:1006F000500D1124CA017DD58D2D992780FD04C090 |
:1007000061E0C62E81E41DC081FD04C052E0C52E0B |
:1007100082E417C082FD04C043E0C42E83E411C00C |
:1007200083FD04C034E0C32E81E60BC084FD04C009 |
:1007300025E0C22E82E605C085FD07C096E0C92EE1 |
:1007400083E68CB98C2DD3DCFDCF8C2DD0DC8EE2F2 |
:10075000F2D22D960FB6F894DEBF0FBECDBFDF915B |
:10076000CF911F910F91FF90EF90DF90CF90BF90AE |
:10077000AF909F90089580918A0090918B00892B73 |
:1007800009F05BC0409188005091890041155105E6 |
:1007900099F090919D008FEF989FC001112468EC13 |
:1007A00070E0C8D970939500609394001092600037 |
:1007B00089B78F7D89BF32C08091A900853180F1D2 |
:1007C00081E0809360002091AC003091AD0081E029 |
:1007D0002D32380708F09A01293C310510F028EC39 |
:1007E00030E02B30310528F450939500409394006D |
:1007F00015C08CEF90E0289FA001299F500D389FD5 |
:10080000500D1124CA01885D994064EB70E092D9C3 |
:10081000CB0103969093950080939400AB981AC0F7 |
:100820008091940090919500009729F00197909302 |
:10083000950080939400AB9A0DC0809199039927FD |
:10084000909395008093940010926000AB9889B7C4 |
:100850008F7D89BF80919400909195008F3F910585 |
:1008600039F030F08FEF90E09093950080939400F2 |
:100870008091940099270895CFE5D4E0DEBFCDBFE5 |
:10088000DD2488E084BB85BB8AE381BBD2BA8EE0DD |
:1008900087BB81E388BB88B3806C88BB83EF91E022 |
:1008A000C29797FFFDCFB69B06C0B79B02C085E0FD |
:1008B00007C086E005C0B79B02C087E001C088E0A2 |
:1008C000809361008BE08093B600879B06C08CE02C |
:1008D0008093B60080EC80937E008AEB81BBBFD30F |
:1008E0006BD47894EDDB80E5CCD501D585E690E03E |
:1008F0006CD486E690E069D487E690E066D4909365 |
:10090000B8028093B7028EEF90E05FD47C018DEE49 |
:1009100093E05BD48C018EEE93E057D403C02BDFC1 |
:10092000882339F48091B7029091B80257D4882374 |
:10093000B1F38091B6008C3010F4979A01C097986B |
:1009400010929300109292008ADB88E080BF81E0D1 |
:1009500087B98AE090E039D49093B8028093B702C7 |
:1009600081E090E090938B0380938A031092AD0016 |
:100970001092AC0000DF882309F4ACDC81E388BB73 |
:10098000FADE992790939300809392008091B500AE |
:100990008D1569F010926400109265008AEF90E066 |
:1009A00014D49093B8028093B702D090B500C09150 |
:1009B0009200D09193002097F9F410928300109246 |
:1009C0006500C5010BD4882311F11092B300439840 |
:1009D00091E09093640082B3877C82BBDBBDCABD8B |
:1009E000D9BDC8BD13BC9FBD81E485BD8EE087BB6A |
:1009F00088B3817F88BB0BC080916400882319F085 |
:100A000081E0809383008CED95E0DFD35C018091E1 |
:100A10006400882321F010929300109292001FDB53 |
:100A2000809165008F5F80936500813009F0A8CFC9 |
:100A30008091640081113DD4C701D0D38823A9F1EE |
:100A400082E390E0C2D37C0180918E00482F55272D |
:100A500020919000309191004217530710F48F5F5E |
:100A600004C02417350718F4815080938E00293C68 |
:100A7000310548F080916300982F92959695977074 |
:100A8000891B8093630080918E0090916300893769 |
:100A900038F0992319F0915090936300AB9A05C0F8 |
:100AA0009F3F19F09F5F90936300C80197D38823FD |
:100AB00099F08AE090E089D38C0180918100909137 |
:100AC00082009093800080937F00109282001092A9 |
:100AD000810081E0809362008091B7029091B8021A |
:100AE0007DD3882331F080917F0090918000892B05 |
:100AF00029F080918300882309F442CFC1E0C0939C |
:100B000064001092B300439884E690E05ED3909323 |
:100B1000B8028093B70280918300882309F430CF14 |
:100B2000AB9810928F00109283008AE0F4DA882349 |
:100B300009F45DC0109264008091B50081508093EB |
:100B4000B50081E090E0909393008093920087DA63 |
:100B500088B18C7F88B9C093B30088B18A6088B9A6 |
:100B600084E190E032D39093B8028093B7028091F1 |
:100B7000B7029091B80232D38823C9F38FE090E096 |
:100B800090939300809392006ADA8CE291E01DD3F7 |
:100B90009093B8028093B7021BC08091900090910F |
:100BA0009100CD97A8F082B3877C82BB1BBC1ABC96 |
:100BB00019BC18BC23BD11E01FBD81E485BD8EE0CA |
:100BC00087BB88B3817F88BB8AE091DA109383006A |
:100BD0008091B7029091B80201D3282F8823E9F2BF |
:100BE00082E390E0F2D28C0187E0D82EC9CEC3DD3B |
:100BF000882309F4C5CEC0938300C2CE1F920F9202 |
:100C00000FB60F9211240F900FBE0F901F901895E2 |
:100C10005E9B24C0809175008823E1F480919E0042 |
:100C200090919F00019690939F0080939E00FC01FD |
:100C3000E454FD4FE081ED3019F08436910539F42C |
:100C400010929F0010929E0081E080937500589A48 |
:100C5000ECB9089510929F0010929E0008951F9382 |
:100C6000CF93DF93EC0110E0662309F460C0A22F5C |
:100C7000BB271297E42FFF27EE5DFC4F30813D53D9 |
:100C80004F5FE42FFF27EE5DFC4F50815D534F5FB8 |
:100C9000E42FFF27EE5DFC4F70817D534F5FE42F03 |
:100CA000FF27EE5DFC4FE081ED534F5F842F9927C6 |
:100CB000A817B907E4F1832F9927880F991F880F88 |
:100CC000991F352F32953F70382B852F99278F70BC |
:100CD000907054E0880F991F5A95E1F7572F569559 |
:100CE0005695582B872F99278370907026E0880F90 |
:100CF000991F2A95E1F78E2B61506F3FC1F0FE01DD |
:100D0000E10FF11D30831F5F61506F3F81F0FE01E5 |
:100D1000E10FF11D50831F5F61506F3F41F0FE01F5 |
:100D2000E10FF11D80831F5F662309F0A3CFDF91E0 |
:100D3000CF911F910895CF93C82F8A3011F48DE081 |
:100D4000FADF5D9BFECFCCB980E090E0CF910895B3 |
:100D50001F920F920FB60F9211242F933F934F9330 |
:100D60005F936F937F938F939F93AF93BF93CF9333 |
:100D7000DF93EF93FF938CB180939C004091A4008C |
:100D8000443610F01092A50050919C005D3009F09F |
:100D900064C08091A500823009F05FC01092A50068 |
:100DA000A42FBB27AE5DBC4FFD01329780812091FF |
:100DB000A0003091A100281B3109ED012197888105 |
:100DC000281B3109C9019F709093A1008093A00056 |
:100DD00066E0969587956A95E1F7982F935C9093D6 |
:100DE000A2002F733070235C2093A300808198179A |
:100DF00009F082C08881281709F07EC040939600D0 |
:100E00005C9380912403823549F488E190E02CE0E2 |
:100E10000FB6F894A89581BD0FBE21BD8091240323 |
:100E20008ADF80912403843709F066C02091960000 |
:100E300043E064E087E990E012DF80916100E82FF1 |
:100E4000FF27EA56FF4F808180939D0084EF91E059 |
:100E500090938900809388004FC02091A500822F35 |
:100E6000992781309105F9F0823091051CF4892B86 |
:100E700021F040C0029711F13DC080919C00833267 |
:100E800039F480919B00882319F481E08093A500B8 |
:100E900080919C008093220381E08093A400809144 |
:100EA0009C00992722C02F5F2093A500E42FFF27E5 |
:100EB000EE5DFC4F80919C00808309C0E42FFF27EA |
:100EC000EE5DFC4F80919C008083443620F44F5FA0 |
:100ED0004093A40002C01092A50020919C00809134 |
:100EE000A0009091A100820F911D9093A10080938A |
:100EF000A00002C01092A500FF91EF91DF91CF9169 |
:100F0000BF91AF919F918F917F916F915F914F9121 |
:100F10003F912F910F900FBE0F901F901895AC012D |
:100F2000A0E0B0E09D01A817B90748F4ECEBF2E0AF |
:100F30008191280F311D1196A417B507C8F33F7092 |
:100F4000FD01E454FD4FC90176E0969587957A95A9 |
:100F5000E1F7835C80831196FD01E454FD4F2F730C |
:100F60003070822F835C8083A354BD4F8DE08C93BF |
:100F7000109275008091BC028CB908951F93CF9395 |
:100F8000DF93382FEA01722F10E083E28093BC02D6 |
:100F90006093BD023093BE02A3E0B0E0772309F472 |
:100FA00058C0772311F4972F07C0FE01E10FF11D00 |
:100FB0001F5F9081715011F4472F0EC0FE01E10FA9 |
:100FC000F11D1F5F4081715039F0FE01E10FF11DED |
:100FD0001F5F6081715001C0672FFD01E454FD4F18 |
:100FE000892F86958695835C80831196FD01E45454 |
:100FF000FD4F892F99278370907024E0880F991FE7 |
:101000002A95E1F755279A0194E0369527959A9508 |
:10101000E1F7822B835C80831196FD01E454FD4F40 |
:101020004F705070440F551F440F551F862F99273E |
:1010300026E0969587952A95E1F7842B835C80833B |
:101040001196FD01E454FD4F6F73635C608311964C |
:10105000A5CFCD0164DFDF91CF911F9108951F933C |
:1010600088E18AB9599A579A80E189B960E070E0BD |
:101070008BE996E0F3D388EC90E0A7D0909321031E |
:10108000809320038AE057DE82E455DE8CE453DE51 |
:101090008AE351DE86E54FDE80E34DDE8EE24BDEF5 |
:1010A00084E349DE82E347DE8AE045DE88E443DE0E |
:1010B00087E541DE8AE33FDE81E33DDE8EE23BDE13 |
:1010C0008091B6008A5D37DE8AE035DE81E433DE6A |
:1010D0008AE331DE1AE080916100612F1FD5805DC7 |
:1010E0002ADE80916100612F19D5892F805D23DE72 |
:1010F0001F91089580912003909121036FD0882340 |
:1011000091F080917500882371F022E146E853E068 |
:101110006091BB0284E432DF82E390E056D090938A |
:1011200021038093200308951F920F920FB60F9210 |
:1011300011248F939F93809198038F5F80939803DE |
:101140008091A80081508093A8008F3F71F583E0C3 |
:101150008093A8008091A6009091A700019690939B |
:10116000A7008093A60080918A0090918B00009741 |
:1011700029F0019790938B0080938A008091AA00B8 |
:10118000882331F08091AA0081508093AA0002C088 |
:101190008093A9008091880090918900009729F0A0 |
:1011A000019790938900809388009F918F910F9071 |
:1011B0000FBE0F901F90189582E083BF89B78160A2 |
:1011C00089BF89B7806489BF08952091A6003091B6 |
:1011D000A700280F391FC901019708952091A60083 |
:1011E0003091A700821B930B892F9927807899272C |
:1011F0000895CF93DF93E9DFEC01CE01EFDF882381 |
:10120000E1F3DF91CF91089586EA86B980917E005F |
:10121000876087B9369A089527B190917E009660CD |
:1012200097B910BE83ED86B9349A97B9369A349B34 |
:10123000FECF27B924B135B1220F331F220F331F40 |
:101240004091900050919100CA0163E0880F991F6E |
:101250006A95E1F7841B950B280F391F83E03695BB |
:1012600027958A95E1F73093910020939000809123 |
:101270008F0099278217930720F480919000809324 |
:101280008F0016B888E080BF089527B190917E0046 |
:10129000982B97B910BE83ED86B9349A97B9369AD0 |
:1012A000349BFECF27B916B888E080BF84B195B1D2 |
:1012B000089586E0EADF9C01220F331F220F331FBF |
:1012C000293C310510F028EC30E030939100209358 |
:1012D000900080918F0099278217930720F48091C6 |
:1012E000900080938F0016B888E080BF08958EB577 |
:1012F000806C8EBD8EB580648EBD89B7806289BFDB |
:1013000089B7846089BF08951F920F920FB60F921C |
:1013100011248F938091AB008F5F8093AB008F91EE |
:101320000F900FBE0F901F9018951F920F920FB63F |
:101330000F9211242F933F938F939F930EB406FE29 |
:101340000FC01092AB0086B597B59093AF00809315 |
:10135000AE008EB58F7B8EBD84E68093AA0079C0E7 |
:101360008EB580648EBD26B537B58091AE00909164 |
:10137000AF00281B390B8091AB009927982F882745 |
:10138000990F280F391F689414F8369527951694ED |
:10139000E1F73093B1002093B0002851314030F490 |
:1013A00088E191E09093B1008093B0002091B0006B |
:1013B0003091B100285131403093B1002093B000FA |
:1013C0008091AC009091AD008217930730F480912A |
:1013D000AC009091AD0001960CC08091AC00909152 |
:1013E000AD002817390748F48091AC009091AD000A |
:1013F00001979093AD008093AC002091AC003091A8 |
:10140000AD00C901880F991F880F991F880F991F78 |
:10141000821B930B2091B0003091B100820F931F7B |
:1014200023E0969587952A95E1F79093B1008093F4 |
:10143000B0009093AD008093AC008091A9008F3FE5 |
:1014400029F08091A9008F5F8093A90081E08093AB |
:1014500062009F918F913F912F910F900FBE0F903F |
:101460001F9018951F920F920FB60F9211248F9311 |
:101470008AB78F7B8ABF8F910F900FBE0F901F90FE |
:10148000189590916100990F980F92B985EC86BFDD |
:1014900008951F920F920FB60F9211242F938F93DE |
:1014A0009F9381B19927887F907080389105F1F0E2 |
:1014B000813891053CF4009709F445C080369105C8 |
:1014C00079F044C0883B910551F1893B910524F4A2 |
:1014D000883A910521F13AC0883F910589F136C0DB |
:1014E00086B7806886BF1092B20032C02091B600E5 |
:1014F0002C3010F0979A01C0979883B1809399038C |
:1015000084EF91E090938B0080938A0086B7806887 |
:1015100086BF2C3010F4979A1BC0979819C09091F1 |
:10152000B200992339F480918E0083B99F5F909324 |
:10153000B20003C08091630083B986B7806807C09A |
:1015400086B7806986BF86B7806986BF85EC86BF0F |
:101550009F918F912F910F900FBE0F901F90189514 |
:101560001F920F920FB60F9211240F900FBE0F9083 |
:101570001F9018951F920F920FB60F9211242F9360 |
:101580003F934F935F936F937F938F939F93AF930B |
:10159000BF93CF93EF93FF93459B02C0C1E001C07F |
:1015A000C0E08091B50099278230910509F451C0BF |
:1015B000833091052CF4009779F0019741F1BFC079 |
:1015C0008430910509F478C0843091050CF45AC038 |
:1015D000059709F48BC0B3C081EA8FBD81E685BD54 |
:1015E00088E087BBCC2371F082B3877E82BB959A5B |
:1015F00080916200811110DE409880917E008160B0 |
:1016000087B91BC082B3877D82BB949A98C082B38E |
:10161000877E82BB959ACC23B1F481EA8FBD81E6A7 |
:1016200085BD84E087BB809162008111F5DD8091EA |
:101630007E0087B988B1836088B98091B5008F5FDB |
:101640008093B5006CC081EA8FBD81E685BD88E0DE |
:1016500075C081EA8FBD81E685BD84E087BBCC2360 |
:1016600061F082B38F7C82BB939A8091620081117A |
:10167000D3DD80917E00826031C082B3877E82BBE1 |
:10168000959A5DC082B38F7C82BB939ACC2371F410 |
:1016900081EA8FBD81E685BD82E087BB80916200D3 |
:1016A0008111BADD80917E008160C3CF81EA8FBD58 |
:1016B00081E685BD84E042C081EA8FBD81E685BDBB |
:1016C00082E087BBCC2369F082B3877D82BB949A8A |
:1016D000809162008111A0DD80917E0087B94098E1 |
:1016E000ACCF82B38F7C82BB939A29C082B3877DB3 |
:1016F00082BB949ACC23E9F481EA8FBD81E685BD53 |
:1017000088E087BB80916200811186DD80917E0038 |
:10171000826087B988B1836088B9C093B500809131 |
:1017200081009091820001969093820080938100C5 |
:1017300006C081EA8FBD81E685BD82E087BB459901 |
:1017400003C0CC2309F028CF459B03C0CC2309F468 |
:1017500023CF10926200FF91EF91CF91BF91AF9193 |
:101760009F918F917F916F915F914F913F912F91B9 |
:101770000F900FBE0F901F9018958091B50099277C |
:101780008230910579F1833091052CF4009771F046 |
:101790000197D1F008958430910509F444C0843054 |
:1017A00091058CF1059709F44CC0089581EA8FBD2D |
:1017B00081E685BD88E087BB82B3877D82BB949A32 |
:1017C00080917E0082601AC081EA8FBD81E685BD6E |
:1017D00088E087BB82B3877E82BB959A80917E002A |
:1017E00081601EC081EA8FBD81E685BD84E087BB34 |
:1017F00082B3877E82BB959A80917E0087B988B13B |
:10180000836088B9089581EA8FBD81E685BD84E053 |
:1018100087BB82B38F7C82BB939A80917E0082606B |
:1018200087B94098089581EA8FBD81E685BD82E041 |
:1018300087BB82B38F7C82BB939A80917E0081604C |
:10184000DDCF81EA8FBD81E685BD82E087BB82B3B3 |
:10185000877D82BB949A80917E00E2CF0F931F9385 |
:10186000CF93DF938C01EB01009711F4672BB9F153 |
:101870006EE070E081E090E037D0FC01892B71F1DF |
:1018800080E88383209771F0D387C28781E88383C0 |
:1018900080919A0390919B03892B21F4F0939B03F1 |
:1018A000E0939A0301151105C9F011870087838120 |
:1018B0008260838380919C0390919D03892B71F4B6 |
:1018C000F0939D03E0939C0380919E0390919F036E |
:1018D000892B21F4F0939F03E0939E03CF01DF91C6 |
:1018E000CF911F910F9108950F931F93CF93DF9383 |
:1018F000869F8001879F100D969F100D1124C801AF |
:101900000DD0EC01009721F0A80160E070E0FFD05D |
:10191000CE01DF91CF911F910F910895CF93DF9367 |
:10192000AC01029710F442E050E020E030E0A091DA |
:10193000A203B091A303BD01F901109709F44CC0B3 |
:101940008D919C9111978417950731F1481759078C |
:1019500038F42115310519F08217930708F49C011A |
:10196000FD01A281B381109759F721153105A1F12D |
:10197000C901841B950B049708F4A901DB01E0E081 |
:10198000F0E0109749F18D919C9111978217930780 |
:10199000F9F44217530779F4ED018A819B8130975E |
:1019A00019F09383828304C09093A3038093A203CE |
:1019B000CD0102964DC0241B350BFD01E20FF31F34 |
:1019C00041935193225030402D933C93CF0140C01E |
:1019D000FD01A281B381D5CF8091A0039091A10395 |
:1019E000892B41F48091790090917A009093A10322 |
:1019F0008093A003E0917700F0917800309741F454 |
:101A0000EDB7FEB780917B0090917C00E81BF90B4D |
:101A1000A091A003B091A103AE17BF07B8F49F0136 |
:101A20002A1B3B0B2417350788F0CA01029628179A |
:101A3000390760F0CD01840F951F02969093A103A2 |
:101A40008093A0034D935D93CD0102C080E090E0B0 |
:101A5000DF91CF910895CF93DF93009709F454C09D |
:101A6000DC011297ED011B821A828091A2039091F2 |
:101A7000A303009721F1FC0140E050E0EA17FB07C7 |
:101A800018F1ED01FB83EA832D913C911197C20F70 |
:101A9000D31FCE0102968E179F0771F48A819B8116 |
:101AA000280F391F2E5F3F4F11963C932E93828152 |
:101AB0009381FD01938382834115510559F4B093BD |
:101AC000A303A093A20320C0AF010280F381E02D05 |
:101AD0003097A1F6EA01BB83AA83CA010296288146 |
:101AE0003981820F931F8A179B0771F48D919C9106 |
:101AF0001197280F391F2E5F3F4F39832883FD012F |
:101B0000828193819B838A83DF91CF910895DC0149 |
:101B100001C06D9341505040E0F70895991B79E062 |
:101B200004C0991F961708F0961B881F7A95C9F76D |
:101B300080950895AA1BBB1B51E107C0AA1FBB1FBC |
:101B4000A617B70710F0A61BB70B881F991F5A9549 |
:101B5000A9F780959095BC01CD010895A1E21A2EB8 |
:101B6000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F41 |
:101B7000A217B307E407F50720F0A21BB30BE40B91 |
:101B8000F50B661F771F881F991F1A9469F76095D8 |
:101B90007095809590959B01AC01BD01CF01089592 |
:021BA000FFCF75 |
:101BA200010101FF01010A00000002010304050610 |
:0E1BB2000708090A0B01640000A403200000CC |
:00000001FF |
/trunk/Hex-Files/BL-Ctrl_V1_1_and_V1_2/BrushLess-Ctrlr_MEGA8_V0_42_10A_ADDR9-12.hex |
---|
0,0 → 1,446 |
:1000000012C030CA2BC02AC0ABCA8FC927C026C0B5 |
:100010007BC98AC823C09CC621C0F0C51FC01EC0B2 |
:10002000A9CA37CA1BC011241FBECFE5D4E0DEBF6A |
:10003000CDBF10E0A0E6B0E0E2EAFBE102C005902F |
:100040000D92AE37B107D9F713E0AEE7B0E001C0CB |
:100050001D92A43AB107E1F70FD4A2CDD1CF4091C0 |
:10006000920080916300841710F4482FAB9A20917E |
:10007000900030919100293C3105C8F01BBC1ABC9E |
:1000800019BC18BC13BC82B3877C82BBAB9A80912D |
:100090009403909195030196909395038093940314 |
:1000A0002150304030939100209390000895842F88 |
:1000B00099279BBD8ABD99BD88BD43BD089508950C |
:1000C0001BBC1ABC19BC18BC13BC91E09FBD81E4D9 |
:1000D00085BD8EE087BB88B3817F88BB9EBD0895B8 |
:1000E00092B7980F82B7891B87FDFCCF0895CF93F5 |
:1000F000C82F7894C150CF3F49F0AB9A8CE291E081 |
:1001000078D8AB988CE291E074D8F4CF88EE93E085 |
:1001100070D8CF910895AF92BF92CF92DF92EF92B5 |
:10012000FF920F931F93CF93DF93C82F8CE2A82EDB |
:1001300081E0B82EC12CD12C1092B300439885E0F9 |
:1001400090E0909393008093920089DF16DB8CE21D |
:1001500091E03BD89093B8028093B70211C0A9D820 |
:1001600080919000909191008937910548F082B379 |
:10017000877C82BB1BBC1ABC19BC18BC13BD33C026 |
:100180008091B7029091B80229D8182F882339F3AB |
:10019000DD27D0939300C0939200EE24FF248701C3 |
:1001A000EA14FB040C051D0578F480917500882382 |
:1001B00011F42ED501C09ED784E692DF0894E11C8D |
:1001C000F11C011D111DECCF74D88091900090910D |
:1001D0009100CD97B0F082B3877C82BB1BBC1ABC68 |
:1001E00019BC18BC13BC81E08FBD81E485BD8EE0D5 |
:1001F00087BB88B3817F88BB8AE079DF80E090E0AD |
:1002000032C0C601B5012FE030E040E050E0A6DC8E |
:10021000A21AB30AC40AD50A0894A108B108C108F1 |
:10022000D10889E1A816B104C104D10418F481E011 |
:1002300090E019C0A2DA8091B5008F5F8093B5007D |
:100240008091B50066E06ADC9093B500E5D7D09365 |
:100250009300C093920003DF449B9FCF82B390E84A |
:10026000892782BB9ACFDF91CF911F910F91FF9089 |
:10027000EF90DF90CF90BF90AF900895CF93DF9332 |
:10028000EC0121978FEFCF3FD807B9F012D88091BA |
:10029000B9029091BA0288589F4F209190003091F6 |
:1002A00091008217930768F782B3877C82BB88B37B |
:1002B000817F88BB81E090E002C080E090E0DF9128 |
:1002C000CF91089501972FEF8F3F9207D9F780E0E4 |
:1002D00090E008959F92AF92BF92CF92DF92EF92FB |
:1002E000FF920F931F93CF93DF93CDB7DEB72D9778 |
:1002F0000FB6F894DEBF0FBECDBF5E010894A11CFF |
:10030000B11C8DE0E8E6F0E0D50101900D928A95F0 |
:10031000E1F7CC24DC2C02E3902EAB9880916100B5 |
:10032000F501E80FF11D8081282F33278CE291E041 |
:10033000289FF001299FF00D389FF00D1124CF0167 |
:1003400058D7C092B3004398F8948AE0F4D482B3AB |
:10035000877C82BB1BBC1ABC19BC18BC13BC81E0D7 |
:100360008FBD81E485BD8EE087BB88B3817F88BB6C |
:1003700010928F0082E390E081DF80918F009927B7 |
:100380009093BA028093B90210929100109290005B |
:100390008CB1803249F51FEFE12EF12EB8E29B2E91 |
:1003A0008FE5C9D425C0A4E0CA2E84E3C4D482B3A7 |
:1003B000877C82BB88B3817F88BB4EC0F5E0CF2E9F |
:1003C00085E3B9D482B3877C82BB88B3817F88BB45 |
:1003D0007AC0E6E0CE2E86E3AED482B3877C82BBC1 |
:1003E00088B3817F88BBA8C078EEE72E73E0F72E34 |
:1003F000109291001092900000E010E00E151F0581 |
:1004000058F5939A81E090E039DF82B3877C82BB14 |
:1004100088B3817F88BB85E090E054DFC39A81E098 |
:1004200090E02CDF82B3877C82BB88B3817F88BB5E |
:100430008091B9029091BA02890D911D209190008E |
:10044000309191008217930708F4ADCF85E090E0DA |
:1004500039DF0F5F1F4FD2CF80E197E233DF109279 |
:1004600091001092900000E010E00E151F0558F565 |
:10047000949A81E090E002DF82B3877C82BB88B3EC |
:10048000817F88BB85E090E01DDFC29A81E090E02B |
:10049000F5DE82B3877C82BB88B3817F88BB809185 |
:1004A000B9029091BA02890D911D2091900030916E |
:1004B00091008217930708F481CF85E090E002DF76 |
:1004C0000F5F1F4FD2CF109291001092900080E1E9 |
:1004D00097E2F8DE00E010E00E151F0558F5959A3A |
:1004E00081E090E0CBDE82B3877C82BB88B3817FE2 |
:1004F00088BB85E090E0E6DEC19A81E090E0BEDE58 |
:1005000082B3877C82BB88B3817F88BB8091B9022C |
:100510009091BA02890D911D209190003091910027 |
:100520008217930708F455CF85E090E0CBDE0F5F8C |
:100530001F4FD2CFCC2019F08C2DD9DDFDCF80916B |
:100540007E0087B982B3877C82BB88B3817F88BBFA |
:10055000949A959A109291001092900008E710E0FA |
:10056000C39A81E090E0AEDE80E08FD6C39718F0AA |
:10057000F1E0DF2A02C04EEFD42218BA8CE291E0FB |
:10058000A1DE0150104017FFEBCF82B3877C82BB06 |
:1005900088B3817F88BB939A959A04E810E0C29A49 |
:1005A00081E090E08FDE81E070D6C39718F052E0D2 |
:1005B000D52A02C08DEFD82218BA8CE291E082DEF3 |
:1005C0000150104017FFEBCF82B3877C82BB88B30A |
:1005D000817F88BB939A949A0EE610E0C19A81E0DD |
:1005E00090E070DE82E051D6C39718F0A4E0DA2ADA |
:1005F00002C0BBEFDB2218BA8AE491E063DE01504F |
:10060000104017FFEBCF82B3877C82BB88B3817F1A |
:1006100088BB939A08E710E0C29A81E090E052DE2E |
:1006200080E033D68138910518F0E7EFDE2202C072 |
:10063000F8E0DF2A18BA8AE491E044DE0150104065 |
:1006400017FFEACF959A04E810E0C29A81E090E0A3 |
:1006500039DE82E01AD68138910518F04FEDD422A8 |
:1006600002C050E2D52A18BA88E691E02BDE01508C |
:10067000104017FFEACF82B3877C82BB88B3817FAB |
:1006800088BB82B3877C82BB88B3817F88BB949A06 |
:100690000EE610E0C19A81E090E014DE81E0F5D52D |
:1006A0008138910518F08FEED82202C0A0E1DA2A35 |
:1006B00018BA88E691E006DE0150104017FFEACF35 |
:1006C00082B3877C82BB88B3817F88BB789480911A |
:1006D0006100A80EB11CF501208184E090E0821B2E |
:1006E00091092CE231E0829FA001839F500D929FDF |
:1006F000500D1124CA017DD58D2D992780FD04C090 |
:1007000061E0C62E81E41DC081FD04C052E0C52E0B |
:1007100082E417C082FD04C043E0C42E83E411C00C |
:1007200083FD04C034E0C32E81E60BC084FD04C009 |
:1007300025E0C22E82E605C085FD07C096E0C92EE1 |
:1007400083E68CB98C2DD3DCFDCF8C2DD0DC8EE2F2 |
:10075000F2D22D960FB6F894DEBF0FBECDBFDF915B |
:10076000CF911F910F91FF90EF90DF90CF90BF90AE |
:10077000AF909F90089580918A0090918B00892B73 |
:1007800009F05BC0409188005091890041155105E6 |
:1007900099F090919D008FEF989FC001112468EC13 |
:1007A00070E0C8D970939500609394001092600037 |
:1007B00089B78F7D89BF32C08091A900853180F1D2 |
:1007C00081E0809360002091AC003091AD0081E029 |
:1007D0002D32380708F09A01293C310510F028EC39 |
:1007E00030E02B30310528F450939500409394006D |
:1007F00015C08CEF90E0289FA001299F500D389FD5 |
:10080000500D1124CA01885D994064EB70E092D9C3 |
:10081000CB0103969093950080939400AB981AC0F7 |
:100820008091940090919500009729F00197909302 |
:10083000950080939400AB9A0DC0809199039927FD |
:10084000909395008093940010926000AB9889B7C4 |
:100850008F7D89BF80919400909195008F3F910585 |
:1008600039F030F08FEF90E09093950080939400F2 |
:100870008091940099270895CFE5D4E0DEBFCDBFE5 |
:10088000DD2488E084BB85BB8AE381BBD2BA8EE0DD |
:1008900087BB81E388BB88B3806C88BB83EF91E022 |
:1008A000C29797FFFDCFB69B06C0B79B02C089E0F9 |
:1008B00007C08AE005C0B79B02C08BE001C08CE096 |
:1008C000809361008BE08093B600879B06C08CE02C |
:1008D0008093B60080EC80937E008AEB81BBBFD30F |
:1008E0006BD47894EDDB80E5CCD501D585E690E03E |
:1008F0006CD486E690E069D487E690E066D4909365 |
:10090000B8028093B7028EEF90E05FD47C018DEE49 |
:1009100093E05BD48C018EEE93E057D403C02BDFC1 |
:10092000882339F48091B7029091B80257D4882374 |
:10093000B1F38091B6008C3010F4979A01C097986B |
:1009400010929300109292008ADB88E080BF81E0D1 |
:1009500087B98AE090E039D49093B8028093B702C7 |
:1009600081E090E090938B0380938A031092AD0016 |
:100970001092AC0000DF882309F4ACDC81E388BB73 |
:10098000FADE992790939300809392008091B500AE |
:100990008D1569F010926400109265008AEF90E066 |
:1009A00014D49093B8028093B702D090B500C09150 |
:1009B0009200D09193002097F9F410928300109246 |
:1009C0006500C5010BD4882311F11092B300439840 |
:1009D00091E09093640082B3877C82BBDBBDCABD8B |
:1009E000D9BDC8BD13BC9FBD81E485BD8EE087BB6A |
:1009F00088B3817F88BB0BC080916400882319F085 |
:100A000081E0809383008CED95E0DFD35C018091E1 |
:100A10006400882321F010929300109292001FDB53 |
:100A2000809165008F5F80936500813009F0A8CFC9 |
:100A30008091640081113DD4C701D0D38823A9F1EE |
:100A400082E390E0C2D37C0180918E00482F55272D |
:100A500020919000309191004217530710F48F5F5E |
:100A600004C02417350718F4815080938E00293C68 |
:100A7000310548F080916300982F92959695977074 |
:100A8000891B8093630080918E0090916300893769 |
:100A900038F0992319F0915090936300AB9A05C0F8 |
:100AA0009F3F19F09F5F90936300C80197D38823FD |
:100AB00099F08AE090E089D38C0180918100909137 |
:100AC00082009093800080937F00109282001092A9 |
:100AD000810081E0809362008091B7029091B8021A |
:100AE0007DD3882331F080917F0090918000892B05 |
:100AF00029F080918300882309F442CFC1E0C0939C |
:100B000064001092B300439884E690E05ED3909323 |
:100B1000B8028093B70280918300882309F430CF14 |
:100B2000AB9810928F00109283008AE0F4DA882349 |
:100B300009F45DC0109264008091B50081508093EB |
:100B4000B50081E090E0909393008093920087DA63 |
:100B500088B18C7F88B9C093B30088B18A6088B9A6 |
:100B600084E190E032D39093B8028093B7028091F1 |
:100B7000B7029091B80232D38823C9F38FE090E096 |
:100B800090939300809392006ADA8CE291E01DD3F7 |
:100B90009093B8028093B7021BC08091900090910F |
:100BA0009100CD97A8F082B3877C82BB1BBC1ABC96 |
:100BB00019BC18BC23BD11E01FBD81E485BD8EE0CA |
:100BC00087BB88B3817F88BB8AE091DA109383006A |
:100BD0008091B7029091B80201D3282F8823E9F2BF |
:100BE00082E390E0F2D28C0187E0D82EC9CEC3DD3B |
:100BF000882309F4C5CEC0938300C2CE1F920F9202 |
:100C00000FB60F9211240F900FBE0F901F901895E2 |
:100C10005E9B24C0809175008823E1F480919E0042 |
:100C200090919F00019690939F0080939E00FC01FD |
:100C3000E454FD4FE081ED3019F08436910539F42C |
:100C400010929F0010929E0081E080937500589A48 |
:100C5000ECB9089510929F0010929E0008951F9382 |
:100C6000CF93DF93EC0110E0662309F460C0A22F5C |
:100C7000BB271297E42FFF27EE5DFC4F30813D53D9 |
:100C80004F5FE42FFF27EE5DFC4F50815D534F5FB8 |
:100C9000E42FFF27EE5DFC4F70817D534F5FE42F03 |
:100CA000FF27EE5DFC4FE081ED534F5F842F9927C6 |
:100CB000A817B907E4F1832F9927880F991F880F88 |
:100CC000991F352F32953F70382B852F99278F70BC |
:100CD000907054E0880F991F5A95E1F7572F569559 |
:100CE0005695582B872F99278370907026E0880F90 |
:100CF000991F2A95E1F78E2B61506F3FC1F0FE01DD |
:100D0000E10FF11D30831F5F61506F3F81F0FE01E5 |
:100D1000E10FF11D50831F5F61506F3F41F0FE01F5 |
:100D2000E10FF11D80831F5F662309F0A3CFDF91E0 |
:100D3000CF911F910895CF93C82F8A3011F48DE081 |
:100D4000FADF5D9BFECFCCB980E090E0CF910895B3 |
:100D50001F920F920FB60F9211242F933F934F9330 |
:100D60005F936F937F938F939F93AF93BF93CF9333 |
:100D7000DF93EF93FF938CB180939C004091A4008C |
:100D8000443610F01092A50050919C005D3009F09F |
:100D900064C08091A500823009F05FC01092A50068 |
:100DA000A42FBB27AE5DBC4FFD01329780812091FF |
:100DB000A0003091A100281B3109ED012197888105 |
:100DC000281B3109C9019F709093A1008093A00056 |
:100DD00066E0969587956A95E1F7982F935C9093D6 |
:100DE000A2002F733070235C2093A300808198179A |
:100DF00009F082C08881281709F07EC040939600D0 |
:100E00005C9380912403823549F488E190E02CE0E2 |
:100E10000FB6F894A89581BD0FBE21BD8091240323 |
:100E20008ADF80912403843709F066C02091960000 |
:100E300043E064E087E990E012DF80916100E82FF1 |
:100E4000FF27EA56FF4F808180939D0084EF91E059 |
:100E500090938900809388004FC02091A500822F35 |
:100E6000992781309105F9F0823091051CF4892B86 |
:100E700021F040C0029711F13DC080919C00833267 |
:100E800039F480919B00882319F481E08093A500B8 |
:100E900080919C008093220381E08093A400809144 |
:100EA0009C00992722C02F5F2093A500E42FFF27E5 |
:100EB000EE5DFC4F80919C00808309C0E42FFF27EA |
:100EC000EE5DFC4F80919C008083443620F44F5FA0 |
:100ED0004093A40002C01092A50020919C00809134 |
:100EE000A0009091A100820F911D9093A10080938A |
:100EF000A00002C01092A500FF91EF91DF91CF9169 |
:100F0000BF91AF919F918F917F916F915F914F9121 |
:100F10003F912F910F900FBE0F901F901895AC012D |
:100F2000A0E0B0E09D01A817B90748F4ECEBF2E0AF |
:100F30008191280F311D1196A417B507C8F33F7092 |
:100F4000FD01E454FD4FC90176E0969587957A95A9 |
:100F5000E1F7835C80831196FD01E454FD4F2F730C |
:100F60003070822F835C8083A354BD4F8DE08C93BF |
:100F7000109275008091BC028CB908951F93CF9395 |
:100F8000DF93382FEA01722F10E083E28093BC02D6 |
:100F90006093BD023093BE02A3E0B0E0772309F472 |
:100FA00058C0772311F4972F07C0FE01E10FF11D00 |
:100FB0001F5F9081715011F4472F0EC0FE01E10FA9 |
:100FC000F11D1F5F4081715039F0FE01E10FF11DED |
:100FD0001F5F6081715001C0672FFD01E454FD4F18 |
:100FE000892F86958695835C80831196FD01E45454 |
:100FF000FD4F892F99278370907024E0880F991FE7 |
:101000002A95E1F755279A0194E0369527959A9508 |
:10101000E1F7822B835C80831196FD01E454FD4F40 |
:101020004F705070440F551F440F551F862F99273E |
:1010300026E0969587952A95E1F7842B835C80833B |
:101040001196FD01E454FD4F6F73635C608311964C |
:10105000A5CFCD0164DFDF91CF911F9108951F933C |
:1010600088E18AB9599A579A80E189B960E070E0BD |
:101070008BE996E0F3D388EC90E0A7D0909321031E |
:10108000809320038AE057DE82E455DE8CE453DE51 |
:101090008AE351DE86E54FDE80E34DDE8EE24BDEF5 |
:1010A00084E349DE82E347DE8AE045DE88E443DE0E |
:1010B00087E541DE8AE33FDE81E33DDE8EE23BDE13 |
:1010C0008091B6008A5D37DE8AE035DE81E433DE6A |
:1010D0008AE331DE1AE080916100612F1FD5805DC7 |
:1010E0002ADE80916100612F19D5892F805D23DE72 |
:1010F0001F91089580912003909121036FD0882340 |
:1011000091F080917500882371F022E146E853E068 |
:101110006091BB0284E432DF82E390E056D090938A |
:1011200021038093200308951F920F920FB60F9210 |
:1011300011248F939F93809198038F5F80939803DE |
:101140008091A80081508093A8008F3F71F583E0C3 |
:101150008093A8008091A6009091A700019690939B |
:10116000A7008093A60080918A0090918B00009741 |
:1011700029F0019790938B0080938A008091AA00B8 |
:10118000882331F08091AA0081508093AA0002C088 |
:101190008093A9008091880090918900009729F0A0 |
:1011A000019790938900809388009F918F910F9071 |
:1011B0000FBE0F901F90189582E083BF89B78160A2 |
:1011C00089BF89B7806489BF08952091A6003091B6 |
:1011D000A700280F391FC901019708952091A60083 |
:1011E0003091A700821B930B892F9927807899272C |
:1011F0000895CF93DF93E9DFEC01CE01EFDF882381 |
:10120000E1F3DF91CF91089586EA86B980917E005F |
:10121000876087B9369A089527B190917E009660CD |
:1012200097B910BE83ED86B9349A97B9369A349B34 |
:10123000FECF27B924B135B1220F331F220F331F40 |
:101240004091900050919100CA0163E0880F991F6E |
:101250006A95E1F7841B950B280F391F83E03695BB |
:1012600027958A95E1F73093910020939000809123 |
:101270008F0099278217930720F480919000809324 |
:101280008F0016B888E080BF089527B190917E0046 |
:10129000982B97B910BE83ED86B9349A97B9369AD0 |
:1012A000349BFECF27B916B888E080BF84B195B1D2 |
:1012B000089586E0EADF9C01220F331F220F331FBF |
:1012C000293C310510F028EC30E030939100209358 |
:1012D000900080918F0099278217930720F48091C6 |
:1012E000900080938F0016B888E080BF08958EB577 |
:1012F000806C8EBD8EB580648EBD89B7806289BFDB |
:1013000089B7846089BF08951F920F920FB60F921C |
:1013100011248F938091AB008F5F8093AB008F91EE |
:101320000F900FBE0F901F9018951F920F920FB63F |
:101330000F9211242F933F938F939F930EB406FE29 |
:101340000FC01092AB0086B597B59093AF00809315 |
:10135000AE008EB58F7B8EBD84E68093AA0079C0E7 |
:101360008EB580648EBD26B537B58091AE00909164 |
:10137000AF00281B390B8091AB009927982F882745 |
:10138000990F280F391F689414F8369527951694ED |
:10139000E1F73093B1002093B0002851314030F490 |
:1013A00088E191E09093B1008093B0002091B0006B |
:1013B0003091B100285131403093B1002093B000FA |
:1013C0008091AC009091AD008217930730F480912A |
:1013D000AC009091AD0001960CC08091AC00909152 |
:1013E000AD002817390748F48091AC009091AD000A |
:1013F00001979093AD008093AC002091AC003091A8 |
:10140000AD00C901880F991F880F991F880F991F78 |
:10141000821B930B2091B0003091B100820F931F7B |
:1014200023E0969587952A95E1F79093B1008093F4 |
:10143000B0009093AD008093AC008091A9008F3FE5 |
:1014400029F08091A9008F5F8093A90081E08093AB |
:1014500062009F918F913F912F910F900FBE0F903F |
:101460001F9018951F920F920FB60F9211248F9311 |
:101470008AB78F7B8ABF8F910F900FBE0F901F90FE |
:10148000189590916100990F980F92B985EC86BFDD |
:1014900008951F920F920FB60F9211242F938F93DE |
:1014A0009F9381B19927887F907080389105F1F0E2 |
:1014B000813891053CF4009709F445C080369105C8 |
:1014C00079F044C0883B910551F1893B910524F4A2 |
:1014D000883A910521F13AC0883F910589F136C0DB |
:1014E00086B7806886BF1092B20032C02091B600E5 |
:1014F0002C3010F0979A01C0979883B1809399038C |
:1015000084EF91E090938B0080938A0086B7806887 |
:1015100086BF2C3010F4979A1BC0979819C09091F1 |
:10152000B200992339F480918E0083B99F5F909324 |
:10153000B20003C08091630083B986B7806807C09A |
:1015400086B7806986BF86B7806986BF85EC86BF0F |
:101550009F918F912F910F900FBE0F901F90189514 |
:101560001F920F920FB60F9211240F900FBE0F9083 |
:101570001F9018951F920F920FB60F9211242F9360 |
:101580003F934F935F936F937F938F939F93AF930B |
:10159000BF93CF93EF93FF93459B02C0C1E001C07F |
:1015A000C0E08091B50099278230910509F451C0BF |
:1015B000833091052CF4009779F0019741F1BFC079 |
:1015C0008430910509F478C0843091050CF45AC038 |
:1015D000059709F48BC0B3C081EA8FBD81E685BD54 |
:1015E00088E087BBCC2371F082B3877E82BB959A5B |
:1015F00080916200811110DE409880917E008160B0 |
:1016000087B91BC082B3877D82BB949A98C082B38E |
:10161000877E82BB959ACC23B1F481EA8FBD81E6A7 |
:1016200085BD84E087BB809162008111F5DD8091EA |
:101630007E0087B988B1836088B98091B5008F5FDB |
:101640008093B5006CC081EA8FBD81E685BD88E0DE |
:1016500075C081EA8FBD81E685BD84E087BBCC2360 |
:1016600061F082B38F7C82BB939A8091620081117A |
:10167000D3DD80917E00826031C082B3877E82BBE1 |
:10168000959A5DC082B38F7C82BB939ACC2371F410 |
:1016900081EA8FBD81E685BD82E087BB80916200D3 |
:1016A0008111BADD80917E008160C3CF81EA8FBD58 |
:1016B00081E685BD84E042C081EA8FBD81E685BDBB |
:1016C00082E087BBCC2369F082B3877D82BB949A8A |
:1016D000809162008111A0DD80917E0087B94098E1 |
:1016E000ACCF82B38F7C82BB939A29C082B3877DB3 |
:1016F00082BB949ACC23E9F481EA8FBD81E685BD53 |
:1017000088E087BB80916200811186DD80917E0038 |
:10171000826087B988B1836088B9C093B500809131 |
:1017200081009091820001969093820080938100C5 |
:1017300006C081EA8FBD81E685BD82E087BB459901 |
:1017400003C0CC2309F028CF459B03C0CC2309F468 |
:1017500023CF10926200FF91EF91CF91BF91AF9193 |
:101760009F918F917F916F915F914F913F912F91B9 |
:101770000F900FBE0F901F9018958091B50099277C |
:101780008230910579F1833091052CF4009771F046 |
:101790000197D1F008958430910509F444C0843054 |
:1017A00091058CF1059709F44CC0089581EA8FBD2D |
:1017B00081E685BD88E087BB82B3877D82BB949A32 |
:1017C00080917E0082601AC081EA8FBD81E685BD6E |
:1017D00088E087BB82B3877E82BB959A80917E002A |
:1017E00081601EC081EA8FBD81E685BD84E087BB34 |
:1017F00082B3877E82BB959A80917E0087B988B13B |
:10180000836088B9089581EA8FBD81E685BD84E053 |
:1018100087BB82B38F7C82BB939A80917E0082606B |
:1018200087B94098089581EA8FBD81E685BD82E041 |
:1018300087BB82B38F7C82BB939A80917E0081604C |
:10184000DDCF81EA8FBD81E685BD82E087BB82B3B3 |
:10185000877D82BB949A80917E00E2CF0F931F9385 |
:10186000CF93DF938C01EB01009711F4672BB9F153 |
:101870006EE070E081E090E037D0FC01892B71F1DF |
:1018800080E88383209771F0D387C28781E88383C0 |
:1018900080919A0390919B03892B21F4F0939B03F1 |
:1018A000E0939A0301151105C9F011870087838120 |
:1018B0008260838380919C0390919D03892B71F4B6 |
:1018C000F0939D03E0939C0380919E0390919F036E |
:1018D000892B21F4F0939F03E0939E03CF01DF91C6 |
:1018E000CF911F910F9108950F931F93CF93DF9383 |
:1018F000869F8001879F100D969F100D1124C801AF |
:101900000DD0EC01009721F0A80160E070E0FFD05D |
:10191000CE01DF91CF911F910F910895CF93DF9367 |
:10192000AC01029710F442E050E020E030E0A091DA |
:10193000A203B091A303BD01F901109709F44CC0B3 |
:101940008D919C9111978417950731F1481759078C |
:1019500038F42115310519F08217930708F49C011A |
:10196000FD01A281B381109759F721153105A1F12D |
:10197000C901841B950B049708F4A901DB01E0E081 |
:10198000F0E0109749F18D919C9111978217930780 |
:10199000F9F44217530779F4ED018A819B8130975E |
:1019A00019F09383828304C09093A3038093A203CE |
:1019B000CD0102964DC0241B350BFD01E20FF31F34 |
:1019C00041935193225030402D933C93CF0140C01E |
:1019D000FD01A281B381D5CF8091A0039091A10395 |
:1019E000892B41F48091790090917A009093A10322 |
:1019F0008093A003E0917700F0917800309741F454 |
:101A0000EDB7FEB780917B0090917C00E81BF90B4D |
:101A1000A091A003B091A103AE17BF07B8F49F0136 |
:101A20002A1B3B0B2417350788F0CA01029628179A |
:101A3000390760F0CD01840F951F02969093A103A2 |
:101A40008093A0034D935D93CD0102C080E090E0B0 |
:101A5000DF91CF910895CF93DF93009709F454C09D |
:101A6000DC011297ED011B821A828091A2039091F2 |
:101A7000A303009721F1FC0140E050E0EA17FB07C7 |
:101A800018F1ED01FB83EA832D913C911197C20F70 |
:101A9000D31FCE0102968E179F0771F48A819B8116 |
:101AA000280F391F2E5F3F4F11963C932E93828152 |
:101AB0009381FD01938382834115510559F4B093BD |
:101AC000A303A093A20320C0AF010280F381E02D05 |
:101AD0003097A1F6EA01BB83AA83CA010296288146 |
:101AE0003981820F931F8A179B0771F48D919C9106 |
:101AF0001197280F391F2E5F3F4F39832883FD012F |
:101B0000828193819B838A83DF91CF910895DC0149 |
:101B100001C06D9341505040E0F70895991B79E062 |
:101B200004C0991F961708F0961B881F7A95C9F76D |
:101B300080950895AA1BBB1B51E107C0AA1FBB1FBC |
:101B4000A617B70710F0A61BB70B881F991F5A9549 |
:101B5000A9F780959095BC01CD010895A1E21A2EB8 |
:101B6000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F41 |
:101B7000A217B307E407F50720F0A21BB30BE40B91 |
:101B8000F50B661F771F881F991F1A9469F76095D8 |
:101B90007095809590959B01AC01BD01CF01089592 |
:021BA000FFCF75 |
:101BA200010101FF01010A00000002010304050610 |
:0E1BB2000708090A0B01640000A403200000CC |
:00000001FF |
/trunk/Hex-Files/_BL_Ctrl_History.txt |
---|
0,0 → 1,86 |
+++++++++++++++++++++++++++++++++++ |
Brushless-Control |
Holger Buss |
buss@Mikrocontroller.com |
+++++++++++++++++++++++++++++++++++ |
V0.21 13.01.2007 |
- Erste offizielle Version |
- Unterstützt I2C und PPM |
V0.23 |
- Bei niedrigen PWM-Werten, kam es am Motor zu einem "Knackgeräusch" (besonders in der 16kHz-Variante). |
- Manchmal reagierte der Regler nicht gleich auf das PPM-Einschalt-Signal, wenn der Regler länger auf 0% war |
- Die Kommutierungserkennung läuft jetzt im Interrupt |
- Komponenten zur Drehzahlregelung wieder entfernt, weil sie den Code unleserlich machten |
Kommt in einer späteren Version wahrscheinlich wieder rein |
V0.25 |
- Es wurden zu viele Kommutierungs-Interrupts ausgelöst |
V0.27 02.02.2007 |
- X3D-Protokoll implementiert (für eine Sonderversion des X3D mit serieller Ausgabe) |
V0.31 22.2.2007 |
- Das I2C-Bus Protokoll wurde geändert: |
Jeder Motor wird jetzt mit einem eigenen Datensatz angesprochen |
Aus den Motorreglern kann jetzt Strom und MaxPWM ausgelesen werden |
- Es hatte sich ein Fehler in der Umrechnung des seriellen Wertes (X-3D) eingeschlichen; das ist hier behoben |
Mittels eines PC-Programms (SimTxData.exe) kann das X-3D-Protokoll simuliert und so die Motoren angefahren werden |
V0.32 22.8.2007 - IB |
- Serielle Empfangsroutine eingefügt |
es wird das Resetkommando für ein Bootloader-Update ausgeführt |
- Timerabfragen korrigiert (Wiederanlauf) |
- Versionsausgabe beim Start |
- Screenshot für PonyProg aktualisert (jetzt mit 2,7V Brownout) |
- Adress-Jumper auf BL-Ctrl-Platine V1.1 wird ausgewertet (#define MOTORADRESSE dann auf 0) ! |
- Ausgabe der aktuellen Adresse (seriell) |
V0.33 18.9.2007 - HB |
- Zeitverzögerung bei Lesen der Adresse (für BL-Ctrl V1.1) |
V0.34 27.09.2007 - HB |
- Endstufentest mit Tonfolge implementiert |
Nach dem Start kommt eine Tonfolge, bei der der Regler seine Endstufe testet. |
Im Falle eines Fehlers, werden Buchstaben ausgegeben, die einen Hinweis auf den Fehlerhaften MosFet geben. |
Falls mehrere Buchstaben auftreten, ist der erste ausschlaggebend. |
Falls das Piepen ausbleibt, handelt es sich um einen Überstrom durch Kurzschluss oder dauerhaft eingeschalteten FET. |
Falls der Motor nach der Testprozedur öfter piept und dabei die rote LED blinkt, schaltet der entsprechende Mosfet nicht durch. |
Dann kann man am Blinken (und Buchstaben) den Fehler erkennen. |
Dabei ist: A=A+ (1) B=B+ (2) C=C+ (3) a=A- (4) b=B- (5) c=C- (6) (in Klammern der Blinkcode) |
V0.35 30.09.2007 - HB |
Endstufentest erweitert. |
Die Fehlercodes sind: |
1: Kurzschluss Phase A (gegen B) |
2: Kurzschluss Phase B (gegen A) |
3: Kurzschluss Phase C (gegen B) |
4: Mosfet NA- schaltet nicht ab |
5: Mosfet NB- schaltet nicht ab |
6: Mosfet NC- schaltet nicht ab |
7: Kurzschluss Phase C (gegen A) |
A: NA+ schaltet nicht ein |
B: NB+ schaltet nicht ein |
C: NC+ schaltet nicht ein |
a: NA- schaltet nicht ein |
b: NB- schaltet nicht ein |
c: NC- schaltet nicht ein |
V0.36 09.12.2007 - HB |
Überstrombegrenzung für die 20A-Software verbessert, um den Shunt zu schonen |
Schwellwert der Kurzschlusserkennung erhöht, wegen Motoren mit geringerer Impendanz |
V0.37 21.01.2008 - HB |
Die Genauigkeit der PWM war Drehzahlabhängig |
V0.38 05.03.2008 - HB |
Selbsttest-Routine etwas entschärft. Test auf Phasenkurzschluss entfernt |
V0.41 22.03.2008 - HB |
Version auch für Platinen V1.2 |
Überstromerkennung beim Anwerfen des Motors -> Blinkt 10 mal bei Überstrom in der Startphase |
Das Makefile erzeugt jetzt die richtigen HexFile-Namen |
V0.42 05.04.2009 - HB |
BL-Adressen 5-8 und 9-12 eingefügt |
/trunk/Hex-Files/_Files.txt |
---|
0,0 → 1,19 |
Dateien: |
-------- |
BrushLess-Ctrl_V0_xx_10A.hex --> Hexfile für BL-Ctrl V1.1 und 1.2 |
BootLoader_MEGA8_8MHZ_Vx_y.hex --> Bootloader für BL-Ctrl (Fusebits beachten !) |
BrushLess-Ctrl_ADR_Vx_xx.hex --> Software für ADR=Motorposition(1 bis 4) |
BrushLess-Ctrl_ADR_Vx_xx_10A.hex --> Software für ADR=Motorposition(1 bis 4) 10A-Stromgrenze |
Testprogramme (Achtung: Motor läuft an!) |
----------------------------------------- |
Test_Manuell_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft ungeregelt mit fester Frequenz |
Test_Schub_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft mit unterschiedlichen Leistungen |
Test_Sollwert_Fix_BrushLess-Ctrl_Vx_xx.hex --> Regler läuft fix mit 7,8% PWM |
Sonstiges: |
---------- |
Fuses_Mega8_8MHZ_*.gif --> Fusebits von Ponyprog (mit und ohne Bootloader) |
/trunk/PPM_Decode.c |
---|
2,7 → 2,7 |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch |
+ Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
11,7 → 11,7 |
#include "main.h" |
volatile unsigned int PPM_Signal = 0; |
volatile unsigned char Timer1Overflow = 0; |
volatile unsigned char PPM_Timeout = 0; // Ungültig, wenn Null |
volatile unsigned char PPM_Timeout = 0, anz_ppm_werte = 0; // Ungültig, wenn Null |
//############################################################################ |
// |
61,7 → 61,7 |
else if(PPM_Signal > ppm) PPM_Signal--; |
if(FILTER_PPM) ppm = (PPM_Signal * FILTER_PPM + ppm) / (FILTER_PPM + 1); // Filtern |
PPM_Signal = ppm; |
if(anz_ppm_werte < 255) anz_ppm_werte++; |
ZeitZumAdWandeln = 1; |
} |
} |
/trunk/PPM_Decode.h |
---|
2,7 → 2,7 |
############################################################################*/ |
extern volatile unsigned int PPM_Signal; |
extern volatile unsigned char PPM_Timeout; |
extern volatile unsigned char PPM_Timeout, anz_ppm_werte; |
void InitPPM(void); |
/trunk/analog.c |
---|
10,7 → 10,7 |
//############################################################################ |
{ |
ADCSRA = 0xA6; // Free Run & 1MHZ |
ADMUX = 7; // Kanal 7 |
ADMUX = 7 | IntRef; // Kanal 7 |
ADCSRA |= 0x40; // Start |
} |
22,16 → 22,16 |
unsigned int i=0; |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
ADMUX = 0x06; // Kanal 6 |
ADMUX = 0x06 | IntRef; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = 0x06; // Kanal 6 |
ADMUX = 0x06 | IntRef; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
i = ADCW * 4; |
if(i > 200) i = 200; |
// if(i > 300) i = 300; |
Strom = (i + Strom * 7) / 8; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
38,3 → 38,40 |
SFIOR = 0x08; // Analog Comperator ein |
} |
//############################################################################ |
//Strom Analogwerte lesen |
unsigned int MessAD(unsigned char channel) |
//############################################################################ |
{ |
unsigned char sense; |
sense = ADMUX; // Sense-Kanal merken |
channel |= IntRef; |
ADMUX = channel; // Kanal 6 |
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
ADCSRA |= 0x10; // Ready löschen |
ADMUX = channel; // Kanal 6 |
ADCSRA |= 0x40; // Start |
while (((ADCSRA & 0x10) == 0)); |
ADMUX = sense; // zurück auf den Sense-Kanal |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
return(ADCW); |
} |
//############################################################################ |
//Strom Analogwerte lesen |
void FastADConvert(void) |
//############################################################################ |
{ |
unsigned int i=0; |
i = MessAD(6) * 4; |
// i = ADCW * 4; |
if(i > 200) i = 200; |
Strom = i;//(i + Strom * 1) / 2; |
if (Strom_max < Strom) Strom_max = Strom; |
ADCSRA = 0x00; |
SFIOR = 0x08; // Analog Comperator ein |
} |
/trunk/analog.h |
---|
2,4 → 2,6 |
extern void ADC_Init(void); |
extern void GetAnalogWerte(void); |
extern void AdConvert(void); |
extern void FastADConvert(void); |
extern unsigned int MessAD(unsigned char channel); |
/trunk/avr_ctrl.psp |
---|
1,10 → 1,8 |
;Codewright Project Space File (do not remove or modify this line) |
[State] |
StateWindowFrame=10,18,939,1018,0x43097fca |
_StateHistory=PROJECTS,'..\Flight-Ctrl_V0_05\AVR.pjt','.\avr.pjt' |
_RestoreProject='.\avr.pjt' |
ProjSpaceFlags=0x00000000, 1 |
ProjViewSetShow=Abcccccbcccccc |
ProjViewSetShow=Abb |
[Project] |
ConfigSetUserWorkspace='' |
/trunk/main.c |
---|
1,24 → 1,69 |
/*############################################################################ |
+ Regler für Brushless-Motoren |
+ ATMEGA8 mit 8MHz |
+ (c) 01.2007 Holger Buss |
+ Nur für den privaten Gebrauch |
+ Keine Garantie auf Fehlerfreiheit |
+ Kommerzielle Nutzung nur mit meiner Zustimmung |
+ Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
+ www.mikrocontroller.com |
/############################################################################*/ |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Copyright (c) 12.2007 Holger Buss |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung oder Nutzung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, our webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int PWM = 0; |
unsigned int Strom = 0; //ca. in 0,1A |
unsigned int PWM = 0; |
unsigned int Strom = 0,RuheStrom; //ca. in 0,1A |
unsigned char Strom_max = 0; |
unsigned char Mittelstrom = 0; |
unsigned char Mittelstrom = 0; |
unsigned int Drehzahl = 0; // in 100UPM 60 = 6000 |
unsigned int KommutierDelay = 10; |
unsigned int I2C_Timeout = 0; |
unsigned char SIO_Timeout = 0; |
unsigned int SIO_Timeout = 0; |
unsigned int SollDrehzahl = 0; |
unsigned int IstDrehzahl = 0; |
unsigned int DrehZahlTabelle[256];//vorberechnete Werte zur Drehzahlerfassung |
29,8 → 74,11 |
unsigned int CntKommutierungen = 0; |
unsigned int SIO_Drehzahl = 0; |
unsigned char ZeitZumAdWandeln = 1; |
unsigned char MotorAdresse = 1; |
unsigned char PPM_Betrieb = 1; |
unsigned char HwVersion; |
unsigned char IntRef = 0; |
unsigned int MinUpmPulse; |
//############################################################################ |
// |
void SetPWM(void) |
45,8 → 93,10 |
} |
if(Strom > MAX_STROM) // Strombegrenzung |
{ |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
OCR1A = 0; OCR1B = 0; OCR2 = 0; |
PORTD &= ~0x38; |
PORTC |= ROT; |
DebugOut.Analog[6]++; |
Strom--; |
} |
else |
56,11 → 106,23 |
#endif |
#ifdef _16KHZ |
OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
//OCR1A = 2 * (int)tmp_pwm; OCR1B = 2 * (int)tmp_pwm; OCR2 = tmp_pwm; |
OCR1A = tmp_pwm; OCR1B = tmp_pwm; OCR2 = tmp_pwm; |
#endif |
} |
//GRN_ON; |
} |
void DebugAusgaben(void) |
{ |
/* DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
DebugOut.Analog[4] = OCR2;*/ |
// DebugOut.Analog[5] = PWM; |
} |
//############################################################################ |
// |
void PWM_Init(void) |
67,8 → 129,11 |
//############################################################################ |
{ |
PWM_OFF; |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (0 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
/* TCCR1B = (1 << CS10) | (0 << CS11) | (0 << CS12) | (1 << WGM12) | |
(0 << WGM13) | (0<< ICES1) | (0 << ICNC1); |
*/ |
} |
//############################################################################ |
80,9 → 145,22 |
while((TCNT0 - dauer) & 0x80); |
} |
void RotBlink(unsigned char anz) |
{ |
sei(); // Interrupts ein |
while(anz--) |
{ |
PORTC |= ROT; |
Delay_ms(300); |
PORTC &= ~ROT; |
Delay_ms(300); |
} |
Delay_ms(1000); |
} |
//############################################################################ |
// |
void Anwerfen(unsigned char pwm) |
char Anwerfen(unsigned char pwm) |
//############################################################################ |
{ |
unsigned long timer = 300,i; |
90,7 → 168,18 |
PWM = 5; |
SetPWM(); |
Manuell(); |
Delay_ms(200); |
// Delay_ms(200); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) |
{ |
FastADConvert(); |
if(Strom > 120) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
} |
PWM = pwm; |
while(1) |
{ |
100,9 → 189,17 |
else DatenUebertragung(); |
Wait(100); // warten |
} |
DebugAusgaben(); |
FastADConvert(); |
if(Strom > 60) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
return(0); |
} |
timer-= timer/15+1; |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return; } |
if(timer < 25) { if(TEST_MANUELL) timer = 25; else return(1); } |
Manuell(); |
Phase++; |
Phase %= 6; |
116,7 → 213,286 |
} |
} |
/* |
#define SENSE_A ADMUX = 0; |
#define SENSE_B ADMUX = 1; |
#define SENSE_C ADMUX = 2; |
#define ClrSENSE ACSR |= 0x10 |
#define SENSE ((ACSR & 0x10)) |
#define SENSE_L (!(ACSR & 0x20)) |
#define SENSE_H ((ACSR & 0x20)) |
*/ |
#define TEST_STROMGRENZE 120 |
unsigned char DelayM(unsigned int timer) |
{ |
while(timer--) |
{ |
FastADConvert(); |
if(Strom > (TEST_STROMGRENZE + RuheStrom)) |
{ |
FETS_OFF; |
return(1); |
} |
} |
return(0); |
} |
unsigned char Delay(unsigned int timer) |
{ |
while(timer--) |
{ |
// if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
return(0); |
} |
/* |
void ShowSense(void) |
{ |
if(SENSE_H) { PORTC |= ROT; } else { PORTC &= ~ROT;} |
} |
*/ |
#define HIGH_A_EIN PORTB |= 0x08 |
#define HIGH_B_EIN PORTB |= 0x04 |
#define HIGH_C_EIN PORTB |= 0x02 |
#define LOW_A_EIN PORTD |= 0x08 |
#define LOW_B_EIN PORTD |= 0x10 |
#define LOW_C_EIN PORTD |= 0x20 |
void MotorTon(void) |
//############################################################################ |
{ |
unsigned char ADR_TAB[13] = {0,0,2,1,3,4,5,6,7,8,9,10,11}; |
unsigned int /*timer = 300,*/ i; |
unsigned int t = 0; |
unsigned char anz = 0,MosfetOkay = 0, grenze = 50; |
PORTC &= ~ROT; |
Delay_ms(300 * ADR_TAB[MotorAdresse]); |
DISABLE_SENSE_INT; |
cli();//Globale Interrupts Ausschalten |
uart_putchar('\n'); |
STEUER_OFF; |
Strom_max = 0; |
DelayM(50); |
RuheStrom = Strom_max; |
// uart_putchar(RuheStrom + 'A'); |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Strom = 0; |
/* |
LOW_B_EIN; |
HIGH_A_EIN; |
if(DelayM(3)) |
{ |
anz = 1; |
uart_putchar('1'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_A_EIN; |
HIGH_B_EIN; |
if(DelayM(3)) |
{ |
anz = 2; |
uart_putchar('2'); |
} |
FETS_OFF; |
Delay(1000); |
Strom = 0; |
LOW_B_EIN; // Low C ein |
HIGH_C_EIN; // High B ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('3'); |
} |
FETS_OFF; |
Delay(1000); |
LOW_A_EIN; // Low A ein; und A gegen C |
HIGH_C_EIN; // High C ein |
if(DelayM(3)) |
{ |
anz = 3; |
uart_putchar('7'); |
} |
FETS_OFF; |
DelayM(10000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
*/ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ LOW-Mosfets auf Schalten und Kurzschluss testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UDR == ' ') {t = 65535; grenze = 40; uart_putchar('_');} else t = 1000; // Ausführlicher Test |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_A_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_A_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 4; uart_putchar('4'); FETS_OFF; break;} |
Delay(5); |
} |
Delay(10000); |
Strom = 0; |
for(i=0;i<t;i++) |
{ |
LOW_B_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_B_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 5; uart_putchar('5'); FETS_OFF;break;} |
Delay(5); |
} |
Strom = 0; |
Delay(10000); |
for(i=0;i<t;i++) |
{ |
LOW_C_EIN; |
DelayM(1); |
FETS_OFF; |
Delay(5); |
HIGH_C_EIN; |
DelayM(1); |
FETS_OFF; |
if(Strom > grenze + RuheStrom) {anz = 6; uart_putchar('6'); FETS_OFF; break;} |
Delay(5); |
} |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ High-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SENSE_A; |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
LOW_C_EIN; // Low C ein |
Strom = 0; |
#define TONDAUER 40000 |
#define SOUND_E 1 // 1 |
#define SOUND1_A 300 |
#define SOUND2_A 330 |
#define SOUND3_A 360 |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_A_EIN; // Test A |
Delay(SOUND_E); |
if(MessAD(0) > 50) { MosfetOkay |= 0x01; } else { MosfetOkay &= ~0x01;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(1) > 50) { MosfetOkay |= 0x02; } else { MosfetOkay &= ~0x02;}; |
PORTB = 0; |
Delay(SOUND1_A); |
} |
FETS_OFF; |
LOW_A_EIN; // Low A ein |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(2) > 50) { MosfetOkay |= 0x04; } else { MosfetOkay &= ~0x04;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
FETS_OFF; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Low-Mosfets auf Schalten testen |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// SENSE_B; |
LOW_A_EIN; // Low A ein |
for(i=0; i< (TONDAUER / SOUND2_A) ; i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(0) > 128) { MosfetOkay &= ~0x08;} else { MosfetOkay |= 0x08;}; |
PORTB = 0; |
Delay(SOUND2_A); |
} |
//++++++++++++++++++++++++++++++++++++ |
LOW_C_EIN; // Low C ein |
for(i=0; i<(TONDAUER / SOUND1_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
if(MessAD(2) > 128) { MosfetOkay &= ~0x20;} else { MosfetOkay |= 0x20;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
FETS_OFF; |
LOW_B_EIN; // Low B ein |
for(i=0; i<(TONDAUER / SOUND3_A); i++) |
{ |
HIGH_C_EIN; // Test C |
Delay(SOUND_E); |
if(MessAD(1) > 128) { MosfetOkay &= ~0x10;} else { MosfetOkay |= 0x10;}; |
PORTB = 0; |
Delay(SOUND3_A); |
} |
FETS_OFF; |
//++++++++++++++++++++++++++++++++++++ |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
sei();//Globale Interrupts Einschalten |
// Delay_ms(250 * MotorAdresse); |
/* |
LOW_A_EIN; // Low B ein |
#define SOUND8_A 650 |
for(i=0; i<(TONDAUER / SOUND8_A); i++) |
{ |
HIGH_B_EIN; // Test B |
Delay(SOUND_E); |
PORTB = 0; |
Delay(SOUND8_A); |
} |
*/ |
Delay_ms(300 * (4-ADR_TAB[MotorAdresse])); |
if(!(MosfetOkay & 0x01)) { anz = 1; UDR='A'; } else |
if(!(MosfetOkay & 0x02)) { anz = 2; UDR='B'; } else |
if(!(MosfetOkay & 0x04)) { anz = 3; UDR='C'; } else |
if(!(MosfetOkay & 0x08)) { anz = 4; UDR='a'; } else |
if(!(MosfetOkay & 0x10)) { anz = 5; UDR='b'; } else |
if(!(MosfetOkay & 0x20)) { anz = 6; UDR='c'; } |
// if(anz) Delay_ms(1000); |
if(anz) while(1) RotBlink(anz); // bei Kurzschluss nicht starten |
RotBlink(anz); |
uart_putchar('.'); |
} |
//############################################################################ |
// |
unsigned char SollwertErmittlung(void) |
//############################################################################ |
127,11 → 503,15 |
{ |
if(SIO_Timeout) // es gibt gültige SIO-Daten |
{ |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
sollwert = (MAX_PWM * (unsigned int) SIO_Sollwert) / 200; // skalieren auf 0-200 = 0-255 |
PPM_Betrieb = 0; |
ICP_INT_DISABLE; |
PORTC &= ~ROT; |
} |
else |
if(PPM_Timeout) // es gibt gültige PPM-Daten |
if(anz_ppm_werte > 20) // es gibt gültige PPM-Daten |
{ |
PPM_Betrieb = 1; |
ppm = PPM_Signal; |
if(ppm > 300) ppm = 0; // ungültiges Signal |
if(ppm > 200) ppm = 200; |
144,26 → 524,21 |
} |
else // Kein gültiger Sollwert |
{ |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
PORTC |= ROT; |
if(!TEST_SCHUB) { if(sollwert) sollwert--; } |
PORTC |= ROT; |
} |
} |
else // I2C-Daten sind gültig |
{ |
sollwert = I2C_RXBuffer; |
PPM_Betrieb = 0; |
PORTC &= ~ROT; |
ICP_INT_DISABLE; |
} |
if(sollwert > MAX_PWM) sollwert = MAX_PWM; |
return(sollwert); |
} |
void DebugAusgaben(void) |
{ |
DebugOut.Analog[0] = Strom; |
DebugOut.Analog[1] = Mittelstrom; |
DebugOut.Analog[2] = SIO_Drehzahl; |
DebugOut.Analog[3] = PPM_Signal; |
} |
//############################################################################ |
172,25 → 547,48 |
//############################################################################ |
{ |
char altPhase = 0; |
int test = 0; |
unsigned int MinUpmPulse,Blink,TestschubTimer; |
int test; |
unsigned int Blink,TestschubTimer; |
unsigned int Blink2,MittelstromTimer,DrehzahlMessTimer,MotorGestopptTimer; |
DDRC = 0x08; |
PORTC = 0x08; |
DDRD = 0xBA; |
PORTD = 0x80; |
DDRD = 0x3A; |
PORTD = 0x00; |
DDRB = 0x0E; |
PORTB = 0x31; |
#if (MOTORADRESSE == 0) |
PORTB |= (ADR1 + ADR2); // Pullups für Adresswahl |
for(test=0;test<500;test++); |
if(PINB & ADR1) |
{ |
if (PINB & ADR2) MotorAdresse = 1 + ADRESSOFFSET; |
else MotorAdresse = 2 + ADRESSOFFSET; |
} |
else |
{ |
if (PINB & ADR2) MotorAdresse = 3 + ADRESSOFFSET; |
else MotorAdresse = 4 + ADRESSOFFSET; |
} |
HwVersion = 11; |
#else |
MotorAdresse = MOTORADRESSE; |
HwVersion = 10; |
#endif |
if(PIND & 0x80) {HwVersion = 12; IntRef = 0xc0;} |
DDRD = 0xBA; |
UART_Init(); |
Timer0_Init(); |
sei ();//Globale Interrupts Einschalten |
sei();//Globale Interrupts Einschalten |
// Am Blinken erkennt man die richtige Motoradresse |
/* |
for(test=0;test<5;test++) |
{ |
if(test == MOTORADRESSE) PORTD |= GRUEN; |
if(test == MotorAdresse) PORTD |= GRUEN; |
Delay_ms(150); |
PORTD &= ~GRUEN; |
Delay_ms(250); |
197,8 → 595,8 |
} |
Delay_ms(500); |
UART_Init(); |
*/ |
// UART_Init(); // war doppelt |
PWM_Init(); |
InitIC2_Slave(0x50); |
210,8 → 608,14 |
MittelstromTimer = SetDelay(254); |
DrehzahlMessTimer = SetDelay(1005); |
TestschubTimer = SetDelay(1006); |
while(!CheckDelay(MinUpmPulse)); |
PORTD |= GRUEN; |
MotorGestopptTimer = 0; |
while(!CheckDelay(MinUpmPulse)) |
{ |
if(SollwertErmittlung()) break; |
} |
GRN_ON; |
PWM = 0; |
SetPWM(); |
223,11 → 627,17 |
DebugOut.Analog[1] = 1; |
PPM_Signal = 0; |
if(!SollwertErmittlung()) MotorTon(); |
//MotorTon(); |
PORTB = 0x31; // Pullups wieder einschalten |
// zum Test der Hardware; Motor dreht mit konstanter Drehzahl ohne Regelung |
if(TEST_MANUELL) Anwerfen(TEST_MANUELL); // kommt von dort nicht wieder |
while (1) |
{ |
//ShowSense(); |
if(!TEST_SCHUB) PWM = SollwertErmittlung(); |
//I2C_TXBuffer = PWM; // Antwort über I2C-Bus |
if(MANUELL_PWM) PWM = MANUELL_PWM; |
237,7 → 647,7 |
{ |
MotorGestoppt = 0; |
ZeitFuerBerechnungen = 0; // direkt nach einer Kommutierung ist Zeit |
MinUpmPulse = SetDelay(50); // Timeout, falls ein Motor stehen bleibt |
MinUpmPulse = SetDelay(250); // Timeout, falls ein Motor stehen bleibt |
altPhase = Phase; |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
246,7 → 656,7 |
MotorAnwerfen = 0; // kein Startversuch |
ZeitFuerBerechnungen = 0; |
// nach 1,5 Sekunden den Motor als gestoppt betrachten |
if(CheckDelay(DrehzahlMessTimer)) |
if(CheckDelay(MotorGestopptTimer)) |
{ |
DISABLE_SENSE_INT; |
MotorGestoppt = 1; |
264,7 → 674,11 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!ZeitFuerBerechnungen++) |
{ |
if(MotorGestoppt) PORTD |= GRUEN; //else PORTD &= ~GRUEN; |
if(MotorGestoppt) |
{ |
// GRN_ON; |
FastADConvert(); |
} |
if(SIO_DEBUG) |
{ |
DebugAusgaben(); // welche Werte sollen angezeigt werden? |
277,10 → 691,10 |
MittelstromTimer = SetDelay(50); // alle 50ms |
if(Mittelstrom < Strom) Mittelstrom++;// Mittelwert des Stroms bilden |
else if(Mittelstrom > Strom) Mittelstrom--; |
if(Mittelstrom > LIMIT_STROM)// Strom am Limit? |
if(Strom > MAX_STROM) MaxPWM -= MaxPWM / 32; |
if((Mittelstrom > LIMIT_STROM))// Strom am Limit? |
{ |
MaxPWM--;// dann die Maximale PWM herunterfahren |
if(MaxPWM) MaxPWM--;// dann die Maximale PWM herunterfahren |
PORTC |= ROT; |
} |
else |
292,18 → 706,17 |
if(CheckDelay(DrehzahlMessTimer)) // Ist-Drehzahl bestimmen |
{ |
DrehzahlMessTimer = SetDelay(10); |
SIO_Drehzahl = (6 * CntKommutierungen) / (POLANZAHL / 2); |
SIO_Drehzahl = CntKommutierungen;//(6 * CntKommutierungen) / (POLANZAHL / 2); |
CntKommutierungen = 0; |
if(PPM_Timeout == 0) // keine PPM-Signale |
// if(PPM_Timeout == 0) // keine PPM-Signale |
ZeitZumAdWandeln = 1; |
} |
#if TEST_SCHUB == 1 |
{ |
if(CheckDelay(TestschubTimer)) |
{ |
TestschubTimer = SetDelay(1500); |
if(TEST_SCHUB) |
{ |
switch(test) |
{ |
case 0: PWM = 50; test++; break; |
313,9 → 726,10 |
case 4: PWM = 150; test = 0; break; |
default: test = 0; |
} |
} |
} |
// Motor Stehen geblieben |
} |
#endif |
// Motor Stehen geblieben |
if((CheckDelay(MinUpmPulse) && SIO_Drehzahl == 0) || MotorAnwerfen) |
{ |
MotorGestoppt = 1; |
322,11 → 736,13 |
DISABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
if(MotorAnwerfen) |
{ |
PORTC &= ~ROT; |
MotorAnwerfen = 0; |
Anwerfen(10); |
PORTD |= GRUEN; |
{ |
PORTC &= ~ROT; |
Strom_max = 0; |
MotorAnwerfen = 0; |
if(Anwerfen(10)) |
{ |
// GRN_ON; |
MotorGestoppt = 0; |
Phase--; |
PWM = 1; |
333,15 → 749,26 |
SetPWM(); |
SENSE_TOGGLE_INT; |
ENABLE_SENSE_INT; |
MinUpmPulse = SetDelay(100); |
MinUpmPulse = SetDelay(20); |
while(!CheckDelay(MinUpmPulse)); // kurz Synchronisieren |
PWM = 10; |
PWM = 15; |
SetPWM(); |
MinUpmPulse = SetDelay(200); |
while(!CheckDelay(MinUpmPulse)); // kurz Durchstarten |
MinUpmPulse = SetDelay(1000); |
MinUpmPulse = SetDelay(300); |
while(!CheckDelay(MinUpmPulse)) // kurz Durchstarten |
{ |
if(Strom > LIMIT_STROM/2) |
{ |
STEUER_OFF; // Abschalten wegen Kurzschluss |
RotBlink(10); |
MotorAnwerfen = 1; |
} |
} |
// Drehzahlmessung wieder aufsetzen |
DrehzahlMessTimer = SetDelay(50); |
altPhase = 7; |
} |
} |
else if(SollwertErmittlung()) MotorAnwerfen = 1; |
} |
} |
} // ZeitFuerBerechnungen |
} // while(1) - Hauptschleife |
/trunk/main.h |
---|
1,7 → 1,8 |
#ifndef _MAIN_H |
#define _MAIN_H |
#define MOTORADRESSE 4 // Adresse (1-4) |
//#define MOTORADRESSE 0 // Adresse (1-4) 0 = Motoradresse über Lötjumper auf BL-Ctrl V1.1 |
#define MANUELL_PWM 0 // zur manuellen Vorgabe der PWM Werte: 0-255 |
#define TEST_MANUELL 0 // zum Testen der Hardware ohne Kommutierungsdetektion Werte: 0-255 (PWM) |
#define TEST_SCHUB 0 // Erzeugt ein Schubmuster Werte: 0 = normal 1 = Test |
12,17 → 13,23 |
#define FILTER_PPM 7 // wie stark soll das PPM-Signal gefiltert werden (Werte: 0-30)? |
#define SIO_DEBUG 0 // Testwertausgaben auf der seriellen Schnittstelle |
#define X3D_SIO 1 // serielles Protokoll des X3D (38400Bd) Achtung: dann muss SIO_DEBUG = 0 sein |
#define X3D_SIO 0 // serielles Protokoll des X3D (38400Bd) Achtung: dann muss SIO_DEBUG = 0 sein |
#define _16KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define _32KHZ // Schaltfrequenz -- die gewünschte einkommentieren |
//#define FDD6637_IRLR7843 1 // bessere MosFet bestückt? bewirkt höhere Stromgrenzen |
#ifdef _16KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 65 // ab ca. 6,5A PWM begrenzen |
#if FDD_IRLR == 1 // bessere Fets = mehr Strom zulassen |
#define MAX_STROM 200 // ab ca. 20A PWM ausschalten |
#define LIMIT_STROM 120 // ab ca. 12A PWM begrenzen |
#else |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
#define LIMIT_STROM 65 // ab ca. 6,5A PWM begrenzen |
#endif |
#endif |
#ifdef _32KHZ |
#define MAX_STROM 130 // ab ca. 13A PWM ausschalten |
31,7 → 38,12 |
#define SYSCLK 8000000L //Quarz Frequenz in Hz |
#define GRN_ON {if(HwVersion < 12) PORTD |= GRUEN; else PORTD &= ~GRUEN;} |
#define GRN_OFF {if(HwVersion > 11) PORTD |= GRUEN; else PORTD &= ~GRUEN;} |
#define NOINIT __attribute__ ((section (".noinit"))) |
//Robbe Roxxy 2824-34 mit Todd 10x4,5 bei 16kHz |
//PWM Strom Schub |
//10 0,18A 21g |
95,7 → 107,7 |
#include "PPM_Decode.h" |
extern unsigned int I2C_Timeout; |
extern unsigned char SIO_Timeout; |
extern unsigned int SIO_Timeout; |
extern unsigned int PWM; |
extern unsigned int Strom; //ca. in 0,1A |
extern unsigned char Strom_max; |
105,10 → 117,16 |
extern unsigned char MotorGestoppt; |
extern unsigned char ZeitZumAdWandeln; |
extern unsigned char MaxPWM; |
extern unsigned char MotorAdresse; |
extern unsigned char PPM_Betrieb; |
extern unsigned char HwVersion; |
extern unsigned char IntRef; |
#define ROT 0x08 |
#define GRUEN 0x80 |
#define ADR1 0x40 // für Motoradresswahl |
#define ADR2 0x80 // |
#if defined(__AVR_ATmega8__) |
# define OC1 PB1 |
# define DDROC DDRB |
/trunk/makefile |
---|
2,8 → 2,16 |
# MCU name |
MCU = atmega8 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 31 |
# ACHTUNG: Immer "Make Clean" machen, wenn hier etwas geändert wird! |
# ACHTUNG: keine Leerzeichen noch Zahlen ! |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 42 |
# direkte Adresse oder 0 für Jumperauswahl |
MotorAdresse = 0 |
# 0 für Adr. 1-4, 4 für Adr. 5-8, 8 für Adr. 9-12 |
AdressOffset = 0 |
FDD_IRLR = 1 |
#------------------------------------------------------------------- |
# Output format. (can be srec, ihex, binary) |
10,8 → 18,31 |
FORMAT = ihex |
# Target file name (without extension). |
TARGET = BrushLess-Ctrl_V$(HAUPT_VERSION)_$(NEBEN_VERSION) |
ifeq ($(MotorAdresse), 0) |
ifeq ($(AdressOffset), 0) |
TARGET = BrushLess-Ctrlr_MEGA8_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_10A_ADDR1-4 |
endif |
ifeq ($(AdressOffset), 4) |
TARGET = BrushLess-Ctrlr_MEGA8_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_10A_ADDR5-8 |
endif |
ifeq ($(AdressOffset), 8) |
TARGET = BrushLess-Ctrlr_MEGA8_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_10A_ADDR9-12 |
endif |
else |
ifeq ($(FDD_IRLR), 1) |
TARGET = BrushLess-Ctrlr_MEGA8_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_10A_ADR_$(MotorAdresse)_for_BL-Ctrl_V1_0 |
else |
TARGET = BrushLess-Ctrlr_MEGA8_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_6A_ADR_$(MotorAdresse)_for_BL-Ctrl_V1_0 |
endif |
endif |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
69,7 → 100,7 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DMOTORADRESSE=$(MotorAdresse) -DFDD_IRLR=$(FDD_IRLR) -DADRESSOFFSET=$(AdressOffset) |
ifeq ($(AVR_CTRL_PLATINE), 1) |
CFLAGS += -DAVR_CTRL_PLATINE=$(AVR_CTRL_PLATINE) |
177,9 → 208,9 |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
LIMITS = $(SIZE) --mcu=$(MCU) -C $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
215,8 → 246,8 |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
all: begin gccversion $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).sym sizeafter finished end |
# Eye candy. |
236,13 → 267,12 |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); $(HEXSIZE); $(LIMITS); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); $(HEXSIZE); $(LIMITS); echo "## Warning: MAX. 7168 bytes !!! "; echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
278,8 → 308,6 |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
/trunk/timer0.c |
---|
26,7 → 26,7 |
cnt = 3; |
CountMilliseconds += 1; |
if(I2C_Timeout) I2C_Timeout--; |
if(PPM_Timeout) PPM_Timeout--; |
if(PPM_Timeout) PPM_Timeout--; else anz_ppm_werte = 0; |
if(SIO_Timeout) SIO_Timeout--; |
} |
} |
/trunk/timer0.h |
---|
9,6 → 9,7 |
void Timer1_Init(void); |
void Timer0_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
/trunk/twislave.c |
---|
14,7 → 14,7 |
void InitIC2_Slave(uint8_t adr) |
//############################################################################ |
{ |
TWAR = adr + (2*MOTORADRESSE); // Eigene Adresse setzen |
TWAR = adr + (2*MotorAdresse); // Eigene Adresse setzen |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
32,9 → 32,11 |
return; |
// Daten Empfangen |
case SR_PREV_ACK: |
GRN_OFF; |
I2C_RXBuffer = TWDR; |
I2C_Timeout = 500; |
TWCR |= (1<<TWINT); |
GRN_ON; |
return; |
// Daten Senden |
case SW_SLA_ACK: |
/trunk/uart.c |
---|
2,7 → 2,7 |
// + Regler für Brushless-Motoren |
// + ATMEGA8 mit 8MHz |
// + (c) 01.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + Keine Garantie auf Fehlerfreiheit |
// + Kommerzielle Nutzung nur mit meiner Zustimmung |
// + Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden |
21,9 → 21,11 |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned char MeineSlaveAdresse; |
unsigned char MeineSlaveAdresse ; |
unsigned char MotorTest[12] = {0,0,0,0, 0,0,0,0, 0,0,0,0}; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
struct str_DebugOut DebugOut; |
struct str_DebugOut DebugOut ; |
int Debug_Timer; |
53,15 → 55,41 |
else ptr = 0; |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
#if X3D_SIO == 1 |
static unsigned char serPacketCounter = 100; |
SioTmp = UDR; |
#if X3D_SIO == 1 |
SioTmp = UDR; |
if(SioTmp == 0xF5) // Startzeichen |
{ |
serPacketCounter = 0; |
68,7 → 96,7 |
} |
else |
{ |
if(++serPacketCounter == MOTORADRESSE) // (1-4) |
if(++serPacketCounter == MotorAdresse) // (1-4) |
{ |
SIO_Sollwert = SioTmp; |
SIO_Timeout = 200; // werte für 200ms gültig |
78,6 → 106,66 |
if(serPacketCounter > 100) serPacketCounter = 100; |
} |
} |
#else |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; }; |
if(CrcOkay) // Datensatz schon verarbeitet |
{ |
//NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
uart_putchar(RxdBuffer[2]); |
if (RxdBuffer[2] == 't') // Motortest |
{ Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
SIO_Sollwert = MotorTest[MotorAdresse - 1]; |
SIO_Timeout = 500; // werte für 500ms gültig |
} |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
#endif |
}; |
142,9 → 230,9 |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
/*void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
} |
}*/ |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
157,9 → 245,9 |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
#if X3D_SIO == 1 |
UCSRB |= (1<<RXCIE); // serieller Empfangsinterrupt |
#endif |
// TX-Interrupt Freigabe |
// UCSRB |= (1<<TXCIE); |
166,9 → 254,15 |
//Teiler wird gesetzt |
UBRR= (SYSCLK / (BAUD_RATE * 8L) -1 ); |
//öffnet einen Kanal für printf (STDOUT) |
fdevopen (uart_putchar, NULL); |
Debug_Timer = SetDelay(200); |
UDR = '*'; |
//fdevopen (uart_putchar, NULL); |
Debug_Timer = SetDelay(200); |
// Version beim Start ausgeben (nicht schön, aber geht... ) |
uart_putchar ('\n');uart_putchar ('B');uart_putchar ('L');uart_putchar (':'); |
uart_putchar ('V');uart_putchar (0x30 + VERSION_HAUPTVERSION);uart_putchar ('.');uart_putchar (0x30 + VERSION_NEBENVERSION/10); uart_putchar (0x30 + VERSION_NEBENVERSION%10); |
uart_putchar ('\n');uart_putchar('H');uart_putchar('W');uart_putchar (':');uart_putchar('1');uart_putchar('.');uart_putchar ((0x30-10) + HwVersion); |
uart_putchar ('\n');uart_putchar ('A'); uart_putchar (':'); |
uart_putchar (0x30 + MotorAdresse/10); uart_putchar (0x30 + MotorAdresse%10); |
} |
/trunk/uart.h |
---|
1,4 → 1,4 |
#ifndef _UART_H |
#ifndef _UART_H |
#define _UART_H |
extern unsigned volatile char SIO_Sollwert; |
10,13 → 10,11 |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void SendUart(void); |
extern void DatenUebertragung(void); |
struct str_DebugOut |
{ |
unsigned char Digital[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned char Digital[2]; |
unsigned int Analog[8]; // Debugwerte |
}; |
/trunk |
---|
Property changes: |
Added: tsvn:logminsize |
+8 |
\ No newline at end of property |